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") ] .