[PowerLoom Forum] reversing rules with 'or'
Joshua N Pritikin <[email protected]>
| Newsgroups | gmane.comp.ai.powerloom |
|---|---|
| Message-ID | <[email protected]> |
How do I write the reverse implication "<=" for this rule? (defrelation situation-intention-p-vs-p? ((?s Situation)) :axioms ((forall ((?s Situation)) (=> (or (and (= (actor-intention (situation-actor1 ?s)) Personal) (= (actor-intention (situation-actor2 ?s)) Purity)) (and (= (actor-intention (situation-actor2 ?s)) Personal) (= (actor-intention (situation-actor1 ?s)) Purity))) (situation-intention-p-vs-p? ?s))))) Here is an example of what I want to work: 1 Load the two attached files: aleader.ploom and then nausicaa.ploom 2 (retrieve ?i (situation-intention nausicaa0 ?i)) #1: ?I=ADMIRES 3 (unassert (actor-intention Nausicaa0-actor1 personal)) (assert (situation-intention nausicaa0 admires)) 4 (retrieve ?i (= (actor-intention Nausicaa0-actor1) ?i)) I understand that the 'or' is problematic. What is the best way to handle this? Can 'fork' help here? -- A new cognitive theory of emotion, http://savannah.nongnu.org/projects/aleader
aleader.ploom
(text/plain, 8.2 KB)
;--------------------------------------------- ; TODO ;--------------------------------------------- ; insure fully bi-directional ; ; phase should be calculated from timestamps ; ; connect topics to some sort of real object ; which topics are common between situations? ; ; personal intention & intensity need a goal-fulfillment model ; ; integrate phase & topic ; ; how is tension related to intensity? ; ; namespace timebomb? ; ; (load "/home/joshua/al/src/kr/aleader.ploom") ;--------------------------------------------- (defmodule "/PL-KERNEL/PL-USER/Aleader") (in-module "/PL-KERNEL/PL-USER/Aleader") (in-dialect :KIF) #| ;; BUG: can't postpone dependency resolution? (deffunction start-time-of ((?range Time-Range)) :-> (?t float)) (deffunction end-time-of ((?range Time-Range)) :-> (?t float)) (deffunction duration-of ((?range Time-Range)) :-> (?t float)) (defconcept Time-Range (?range) :constraints (= (+ (start-time-of ?range) (duration-of ?range)) (end-time-of ?range))) (defrelation Before ((?r1 Time-Range) (?r2 Time-Range)) :<=> (< (end-time-of ?r1) (start-time-of ?r2))) (defrelation After ((?r1 Time-Range) (?r2 Time-Range)) :<=> (< (end-time-of ?r2) (start-time-of ?r1))) (defrelation Overlaps ((?r1 Time-Range) (?r2 Time-Range)) :<=> (and (< (start-time-of ?r1) (start-time-of ?r2)) (< (start-time-of ?r2) (end-time-of ?r1)) (< (end-time-of ?r1) (end-time-of ?r2)))) (deffunction time-of ((?a Thing)) :-> (?t float)) |# ;; -------------------------- time ; definstance =? defobject (defconcept Identity (?p) :documentation "A person or anthropomorphic construct.") (defconcept Intention (?i) :documentation "A superclass for different types of intention.") (defconcept IndividualIntention (?i Intention)) (assert (and (IndividualIntention Purity) (IndividualIntention Personal) (IndividualIntention Suffer))) (defconcept SituationalIntention (?i Intention)) (assert (and (SituationalIntention Protest) (SituationalIntention Steals) (SituationalIntention Uneasy) (SituationalIntention Exposes) (SituationalIntention Impasse) (SituationalIntention Admires) (SituationalIntention Observes) (SituationalIntention Accepts) (SituationalIntention Ready))) (defconcept Phase (?ph)) (assert (and (Phase Before) (Phase During) (Phase After))) (defconcept Intensity (?i)) (assert (and (Intensity Gentle) (Intensity Forceful) (Intensity Extreme))) (defconcept Fluent (?f) :documentation "Fluents are context specific.") (defconcept ActorTopicClassification (?atc)) (assert (and (ActorTopicClassification Topic-Trade) (ActorTopicClassification Topic-Beauty) (ActorTopicClassification Topic-Law) (ActorTopicClassification Topic-Own))) ; "overrule"? (defconcept Topic (?t)) (defconcept Actor (?a Fluent)) (deffunction actor-identity ((?a Actor)) :-> (?i Identity)) (deffunction actor-intention ((?a Actor)) :-> (?i IndividualIntention)) (deffunction actor-topic-classification ((?a Actor) (?t Topic)) :-> (? ActorTopicClassification)) (defconcept Situation (?a Fluent)) (deffunction situation-actor1 ((?s Situation)) :-> (?a Actor)) (deffunction situation-actor2 ((?s Situation)) :-> (?a Actor)) (deffunction actor1-situation ((?s Actor)) :-> (?a Situation) :axioms (inverse situation-actor1 actor1-situation)) (deffunction actor2-situation ((?s Actor)) :-> (?a Situation) :axioms (inverse situation-actor2 actor2-situation)) (deffunction situation-pov ((?s Situation)) :-> (?a Actor)) (deffunction situation-contra ((?s Situation)) :-> (?a Actor) :axioms ((forall ((?s Situation) (?a Actor)) (=> (= (situation-pov ?s) (situation-actor1 ?s)) (= (situation-contra ?s) (situation-actor2 ?s)))) (forall ((?s Situation) (?a Actor)) (=> (= (situation-pov ?s) (situation-actor2 ?s)) (= (situation-contra ?s) (situation-actor1 ?s)))))) (deffunction situation-intention ((?s Situation)) :-> (?i SituationalIntention)) (deffunction situation-topic ((?s Situation)) :-> (?t Topic)) (deffunction situation-phase ((?s Situation)) :-> (?p Phase)) ; ready, impasse, protest (assert (and (forall ((?s)) (<=> (and (= (actor-intention (situation-actor1 ?s)) Purity) (= (actor-intention (situation-actor2 ?s)) Purity)) (= (situation-intention ?s) Ready))) (forall ((?s)) (<=> (and (= (actor-intention (situation-actor1 ?s)) Personal) (= (actor-intention (situation-actor2 ?s)) Personal)) (= (situation-intention ?s) Impasse))) (forall ((?s)) (<=> (and (= (actor-intention (situation-actor1 ?s)) Suffer) (= (actor-intention (situation-actor2 ?s)) Suffer)) (= (situation-intention ?s) Protest))))) ; observes, uneasy (assert (and (forall ((?s)) (<=> (and (= (actor-intention (situation-pov ?s)) Purity) (= (actor-intention (situation-contra ?s)) Suffer)) (= (situation-intention ?s) Observes))) (forall ((?s)) (<=> (and (= (actor-intention (situation-pov ?s)) Suffer) (= (actor-intention (situation-contra ?s)) Purity)) (= (situation-intention ?s) Uneasy))) (forall ((?s)) (=> (or (= (situation-intention ?s) Observes) (= (situation-intention ?s) Uneasy)) (= (situation-pov ?s) (situation-actor1 ?s)))))) ; admires, accepts (defrelation situation-intention-p-vs-p? ((?s Situation)) :axioms ((forall ((?s Situation)) (=> (or (and (= (actor-intention (situation-actor1 ?s)) Personal) (= (actor-intention (situation-actor2 ?s)) Purity)) (and (= (actor-intention (situation-actor2 ?s)) Personal) (= (actor-intention (situation-actor1 ?s)) Purity))) (situation-intention-p-vs-p? ?s))))) #| ; There must be a way to state this succinctly .. ? (forall ((?s Situation)) (=> (and (situation-intention-p-vs-p? ?s) (actor-intention (situation-actor1 ?s) Personal)) (= (actor-intention (situation-actor2 ?s)) Purity))) (forall ((?s Situation)) (=> (and (situation-intention-p-vs-p? ?s) (actor-intention (situation-actor1 ?s) Purity)) (= (actor-intention (situation-actor2 ?s)) Personal))) (forall ((?s Situation)) (=> (and (situation-intention-p-vs-p? ?s) (actor-intention (situation-actor2 ?s) Personal)) (= (actor-intention (situation-actor1 ?s)) Purity))) (forall ((?s Situation)) (=> (and (situation-intention-p-vs-p? ?s) (actor-intention (situation-actor2 ?s) Purity)) (= (actor-intention (situation-actor1 ?s)) Personal)))) |# (assert (and (forall ((?s)) (<=> (and (situation-intention-p-vs-p? ?s) (= (actor-topic-classification (situation-pov ?s) (situation-topic ?s)) Topic-Beauty)) (= (situation-intention ?s) Admires))) (forall ((?s)) (<=> (and (situation-intention-p-vs-p? ?s) (= (actor-topic-classification (situation-pov ?s) (situation-topic ?s)) Topic-Trade)) (= (situation-intention ?s) Accepts))))) ; exposes, steals (defrelation situation-intention-p-vs-s? ((?s Situation)) :axioms ((forall ((?s Situation)) (=> (or (and (= (actor-intention (situation-actor1 ?s)) Personal) (= (actor-intention (situation-actor2 ?s)) Suffer)) (and (= (actor-intention (situation-actor2 ?s)) Personal) (= (actor-intention (situation-actor1 ?s)) Suffer))) (situation-intention-p-vs-s? ?s))))) (assert (and (forall ((?s)) (<=> (and (situation-intention-p-vs-s? ?s) (= (actor-topic-classification (situation-pov ?s) (situation-topic ?s)) Topic-Law)) (= (situation-intention ?s) Exposes))) (forall ((?s)) (<=> (and (situation-intention-p-vs-s? ?s) (= (actor-topic-classification (situation-pov ?s) (situation-topic ?s)) Topic-Own)) (= (situation-intention ?s) Steals))))) ;; -------------------------- example queries (deffunction situation-intention-predicted ((?s Situation)) :-> (?i SituationalIntention)) #| (defrule aleader-check2 (forall (?s ?a) (<= (situation-error ?s error-pov) (not (and (situation-pov ?s ?a) (situation-actor ?s ?a)))))) |# ;(retrieve ?e (situation-error StarWars64 ?e)) ;(retrieve ?i (situation-intention StarWars64 ?i)) ;(retrieve ?a (situation-pov StarWars64 ?a)) ;(retrieve all ?s (situation ?s))
nausicaa.ploom
(text/plain, 6.9 KB)
; (load "/home/joshua/al/src/kr/nausicaa.ploom") (in-module "/PL-KERNEL/PL-USER/Aleader") (defobject Animal) (assert (Identity Animal)) (defobject Child) (assert (Identity Child)) (defobject Goll) (assert (Identity Goll)) (defobject Grandmother) (assert (Identity Grandmother)) (defobject Insect) (assert (Identity Insect)) (defobject Jhil) (assert (Identity Jhil)) (defobject Mito) (assert (Identity Mito)) (defobject Nausicaa) (assert (Identity Nausicaa)) (defobject Ohmu) (assert (Identity Ohmu)) (defobject Old-Uncle) (assert (Identity Old-Uncle)) (defobject Old-Woman) (assert (Identity Old-Woman)) (defobject Someone :documentation "This name is a wildcard. It represents any single person or group of people. It may also represent a vehicle, such as a car or ship. Use this name when no more-specific name is available.") (assert (Identity Someone)) (defobject Teto :documentation "Nausicaa's pet fox squirrel.") (assert (Identity Teto)) (defobject The-Valley) (assert (Identity The-Valley)) (defobject Toeto) (assert (Identity Toeto)) (defobject Yupa) (assert (Identity Yupa)) (assert (and (Situation Nausicaa0) (Actor Nausicaa0-actor1) (actor-identity Nausicaa0-actor1 Nausicaa) (actor-intention Nausicaa0-actor1 personal) (Actor Nausicaa0-actor2) (actor-identity Nausicaa0-actor2 Ohmu) (actor-intention Nausicaa0-actor2 purity) (situation-actor1 Nausicaa0 Nausicaa0-actor1) (situation-actor2 Nausicaa0 Nausicaa0-actor2) (situation-pov Nausicaa0 Nausicaa0-actor1) (Topic Insect0) (situation-topic Nausicaa0 Insect0) (= (actor-topic-classification Nausicaa0-actor1 Insect0) Topic-Beauty) (situation-intention-predicted Nausicaa0 admires))) (assert (and (Situation Nausicaa1) (Actor Nausicaa1-actor1) (actor-identity Nausicaa1-actor1 Nausicaa) (actor-intention Nausicaa1-actor1 personal) (Actor Nausicaa1-actor2) (actor-identity Nausicaa1-actor2 Insect) (actor-intention Nausicaa1-actor2 purity) (situation-actor1 Nausicaa1 Nausicaa1-actor1) (situation-actor2 Nausicaa1 Nausicaa1-actor2) (situation-pov Nausicaa1 Nausicaa1-actor1) (Topic Insect1) (situation-topic Nausicaa1 Insect1) (= (actor-topic-classification Nausicaa1-actor1 Insect1) Topic-Beauty) (situation-intention-predicted Nausicaa1 admires))) (assert (and (Situation Nausicaa2) (Actor Nausicaa2-actor1) (actor-identity Nausicaa2-actor1 Nausicaa) (actor-intention Nausicaa2-actor1 suffer) (Actor Nausicaa2-actor2) (actor-identity Nausicaa2-actor2 Someone) (actor-intention Nausicaa2-actor2 purity) (situation-actor1 Nausicaa2 Nausicaa2-actor1) (situation-actor2 Nausicaa2 Nausicaa2-actor2) (situation-pov Nausicaa2 Nausicaa2-actor1) (situation-intention-predicted Nausicaa2 uneasy))) (assert (and (Situation Nausicaa3) (Actor Nausicaa3-actor1) (actor-identity Nausicaa3-actor1 Nausicaa) (actor-intention Nausicaa3-actor1 purity) (Actor Nausicaa3-actor2) (actor-identity Nausicaa3-actor2 Someone) (actor-intention Nausicaa3-actor2 purity) (situation-actor1 Nausicaa3 Nausicaa3-actor1) (situation-actor2 Nausicaa3 Nausicaa3-actor2) (situation-pov Nausicaa3 Nausicaa3-actor1) (situation-intention-predicted Nausicaa3 ready))) (assert (and (Situation Nausicaa4) (Actor Nausicaa4-actor1) (actor-identity Nausicaa4-actor1 Nausicaa) (actor-intention Nausicaa4-actor1 purity) (Actor Nausicaa4-actor2) (actor-identity Nausicaa4-actor2 Someone) (actor-intention Nausicaa4-actor2 suffer) (situation-actor1 Nausicaa4 Nausicaa4-actor1) (situation-actor2 Nausicaa4 Nausicaa4-actor2) (situation-pov Nausicaa4 Nausicaa4-actor1) (situation-intention-predicted Nausicaa4 observes))) (assert (and (Situation Nausicaa5) (Actor Nausicaa5-actor1) (actor-identity Nausicaa5-actor1 Insect) (actor-intention Nausicaa5-actor1 purity) (Actor Nausicaa5-actor2) (actor-identity Nausicaa5-actor2 Nausicaa) (actor-intention Nausicaa5-actor2 personal) (situation-actor1 Nausicaa5 Nausicaa5-actor1) (situation-actor2 Nausicaa5 Nausicaa5-actor2) (situation-intention-predicted Nausicaa5 accepts))) (assert (and (Situation Nausicaa6) (Actor Nausicaa6-actor1) (actor-identity Nausicaa6-actor1 Insect) (actor-intention Nausicaa6-actor1 purity) (Actor Nausicaa6-actor2) (actor-identity Nausicaa6-actor2 Nausicaa) (actor-intention Nausicaa6-actor2 suffer) (situation-actor1 Nausicaa6 Nausicaa6-actor1) (situation-actor2 Nausicaa6 Nausicaa6-actor2) (situation-pov Nausicaa6 Nausicaa6-actor1) (situation-intention-predicted Nausicaa6 observes))) (assert (and (Situation Nausicaa7) (Actor Nausicaa7-actor1) (actor-identity Nausicaa7-actor1 Insect) (actor-intention Nausicaa7-actor1 purity) (Actor Nausicaa7-actor2) (actor-identity Nausicaa7-actor2 Nausicaa) (actor-intention Nausicaa7-actor2 personal) (situation-actor1 Nausicaa7 Nausicaa7-actor1) (situation-actor2 Nausicaa7 Nausicaa7-actor2) (situation-intention-predicted Nausicaa7 accepts))) (assert (and (Situation Nausicaa8) (Actor Nausicaa8-actor1) (actor-identity Nausicaa8-actor1 Nausicaa) (actor-intention Nausicaa8-actor1 purity) (Actor Nausicaa8-actor2) (actor-identity Nausicaa8-actor2 Ohmu) (actor-intention Nausicaa8-actor2 suffer) (situation-actor1 Nausicaa8 Nausicaa8-actor1) (situation-actor2 Nausicaa8 Nausicaa8-actor2) (situation-pov Nausicaa8 Nausicaa8-actor1) (situation-intention-predicted Nausicaa8 observes))) (assert (and (Situation Nausicaa9) (Actor Nausicaa9-actor1) (actor-identity Nausicaa9-actor1 Nausicaa) (actor-intention Nausicaa9-actor1 purity) (Actor Nausicaa9-actor2) (actor-identity Nausicaa9-actor2 Someone) (actor-intention Nausicaa9-actor2 personal) (situation-actor1 Nausicaa9 Nausicaa9-actor1) (situation-actor2 Nausicaa9 Nausicaa9-actor2) (situation-pov Nausicaa9 Nausicaa9-actor1) (Topic Help9) (situation-topic Nausicaa9 Help9) (= (actor-topic-classification Nausicaa9-actor1 Help9) Topic-Trade) (situation-intention-predicted Nausicaa9 accepts))) (assert (and (Situation Nausicaa10) (Actor Nausicaa10-actor1) (actor-identity Nausicaa10-actor1 Nausicaa) (actor-intention Nausicaa10-actor1 purity) (Actor Nausicaa10-actor2) (actor-identity Nausicaa10-actor2 Someone) (actor-intention Nausicaa10-actor2 personal) (situation-actor1 Nausicaa10 Nausicaa10-actor1) (situation-actor2 Nausicaa10 Nausicaa10-actor2) (situation-intention-predicted Nausicaa10 accepts))) (assert (and (Situation Nausicaa11) (Actor Nausicaa11-actor1) (actor-identity Nausicaa11-actor1 Nausicaa) (actor-intention Nausicaa11-actor1 purity) (Actor Nausicaa11-actor2) (actor-identity Nausicaa11-actor2 Someone) (actor-intention Nausicaa11-actor2 personal) (situation-actor1 Nausicaa11 Nausicaa11-actor1) (situation-actor2 Nausicaa11 Nausicaa11-actor2) (situation-pov Nausicaa11 Nausicaa11-actor1) (Topic Help11) (situation-topic Nausicaa11 Help11) (= (actor-topic-classification Nausicaa11-actor1 Help11) Topic-Trade) (situation-intention-predicted Nausicaa11 accepts)))