23 October 2009
"The angles of a triangle
sum to more than 180 degrees"
-> "Given a point and line,
no parallel line exists"
-> Riemann
"The angles of a triangle
sum to less than 180 degrees"
-> "Given a point and line,
infinite parallel lines exist"
-> Lobachevsky
Johnny asks: "What do the angles
of a triangle sum to?"
air:Policy) consists of one or
more rules (air:rule)policy ::= { rule }air:if) that the reasoner will attempt
to match. Based on whether the pattern matches or not, the
reasoner will choose an appropriate action
(air:then when matching, air:else
if not) rule ::= pattern, { action }air:assert),
which is a set of facts that are added to the knowledge
base, or a nested rule action := assertion | rule:Policy1 a air:Policy;
air:rule [
air:if { ... };
air:then [ air:assert [ air:statement { ... } ] ];
air:else [ air:rule [ ... ] ]
].
:CaptainMcCluskey a p:PoliceOfficer .
:VitoCorleoneRapSheet a p:CriminalRecord .
:VirgilSollozoPersonalRequest a p:PersonalRequest .
:request1972 a p:RecordRequest ;
p:record :VitoCorleoneRapSheet ;
p:requester :CaptainMcCluskey ;
p:purpose :VirgilSollozzoPersonalRequest .
:DickTracy a p:PoliceOfficer .
:AlphonseCapriceRapSheet a p:CriminalRecord .
:DickTracyAttemptedMurderInvestigation a p:ActiveCriminalInvestigation .
:request1931 a p:RecordRequest ;
p:record :AlphonseCapriceRapSheet ;
p:requester :DickTracy ;
p:purpose :DickTracyAttemptedMurderInvestigation .
@forAll :A, :P, :R.
:Policy a air:Policy;
air:rule :Policy_1 .
:Policy_1 a air:Belief-rule ;
air:if { :A a p:RecordRequest ;
p:record :R ;
p:requester :P .
:R a p:CriminalRecord . } ;
air:then [ air:rule :Policy_1a ] .
:Policy_1a a air:Belief-rule ;
air:if { :P a p:PoliceOfficer . } ;
air:then [
air:assert [ air:statement { :A air:compliant-with :Policy . } ];
air:description (:P " is a police officer requesting criminal record " :R) ];
air:else [
air:assert [ air:statement { :A air:non-compliant-with :Policy . } ];
air:description (:P " is requesting criminal record " :R " but is not a police officer") ] .
@forAll :A, :P, :R, :I.
:Policy a air:Policy;
air:rule :Policy_1 .
:Policy_1 a air:Belief-rule ;
air:if { :A a p:RecordRequest ;
p:record :R ;
p:requester :P ;
p:purpose :I ;
:R a p:CriminalRecord . } ;
air:then [ air:rule :Policy_1a ] .
:Policy_1a a air:Belief-rule ;
air:if { :P a p:PoliceOfficer .
:I a p:ActiveCriminalInvestigation . } ;
air:then [
air:assert [ air:statement { :A air:compliant-with :Policy . } ];
air:description (:P " is a police officer requesting criminal record " :R
" pertaining to an active criminal investigation " :I) ];
air:else [
air:assert [ air:statement { :A air:non-compliant-with :Policy . } ];
air:description (:P " is either not a police officer or is a police officer "
"requesting criminal record " :R " not in relation to an "
"active criminal investigation") ] .