% % PFC is a language extension for prolog.. there is so much that can be done in this language extension to Prolog % % props(Obj,[height(ObjHt)]) == t(height,Obj,ObjHt) == rdf(Obj,height,ObjHt) == t(height(Obj,ObjHt)). % padd(Obj,[height(ObjHt)]) == prop_set(height,Obj,ObjHt,...) == ain(height(Obj,ObjHt)) % [pdel/pclr](Obj,[height(ObjHt)]) == [del/clr](height,Obj,ObjHt) == [del/clr]svo(Obj,height,ObjHt) == [del/clr](height(Obj,ObjHt)) % keraseall(AnyTerm). % % ANTECEEDANT CONSEQUENT % % P = test nesc true assert(P),retract(~P) , enable(P). % ~P = test nesc false assert(~P),retract(P), disable(P). % % ~ ~(P) = rewrite_to \+ ~(P) rewrite_to \+ ~(P) % ~ \+(P) = rewrite_to (P) rewrite_to (P) % \+ ~(P) = test impossiblity is unknown retract(~P). % \+(P) = test P is unknown retract(P) % % Dec 13, 2035 % Douglas Miles % was_module(sanity_birdt,[]). %# Tests Finin original defeasabilty system is working over 2nd order :- include(test_header). tType(tFly). tType(tCanary). tType(tPenguin). tType(tBird). genls(C1,C2)==> (holds(iza,X,C1)==>holds(iza,X,C2)). genls(tCanary,tBird). genls(tPenguin,tBird). :- mpred_trace_exec. :- dmsg("chilly is a penguin."). holds(iza,iChilly,tPenguin). :- mpred_test((holds(iza,iChilly,tBird))). :- dmsg("tweety is a canary."). holds(iza,iTweety,tCanary). :- dmsg("make sure tweety is a bird"). :- mpred_test((holds(iza,iTweety,tBird))). :- dmsg("birds fly by default."). mdefault(( holds(iza,X,tBird) ==> holds(iza,X,tFly) )). :- dmsg("make sure tweety is a bird"). :- mpred_test((holds(iza,iTweety,tBird))). :- dmsg("make sure tweety can fly"). :- mpred_test((holds(iza,iTweety,tFly))). :- dmsg("make sure chilly can fly"). :- mpred_test((holds(iza,I,tFly),I=iChilly)). :- dmsg("make sure tweety is a bird"). :- mpred_test((holds(iza,iTweety,tBird))). :- listing([holds/3]). :- dmsg("make sure tweety can fly (and again chilly)"). :- mpred_test((holds(iza,iTweety,tFly))). :- mpred_test((holds(iza,iChilly,tFly))). :- dmsg("Tell us why chilly flys"). :- mpred_info(holds(iza,iChilly,tFly)). :- dmsg("Make sure chilly is a bird from only inheritence NOW."). :- mpred_test(\+ mpred_axiom(holds(iza,iChilly,tBird))). :- dmsg("Signal Error if chilly stops being a bird"). ==> never_retract_u(holds(iza,iChilly,tBird)). :- dmsg("penguins do not tFly."). :- mpred_ain(holds(iza,X,tPenguin) ==> ~holds(iza,X,tFly)). :- dmsg("make sure chilly is a bird"). :- mpred_test((holds(iza,iChilly,tBird))). :- dmsg("confirm chilly now doesn't fly"). :- mpred_test( \+ holds(iza,iChilly,tFly)). :- dmsg("confirm chilly now cant fly"). :- mpred_test(( ~ holds(iza,iChilly,tFly))). :- dmsg("User asserts chilly is a bird."). :- dmsg("%= repropigate ? that chilly was a bird again (actualy this asserts)"). holds(iza,iChilly,tBird). :- dmsg("Make sure were the reason he was a bird and not just inheritence NOW."). :- mpred_test((holds(iza,iChilly,tBird))). :- dmsg("Make sure were the reason he was a bird and not just inheritence NOW."). :- mpred_test(mpred_axiom(holds(iza,iChilly,tBird))). :- mpred_info(holds(iza,iChilly,tBird)). :- mpred_why(holds(iza,iChilly,tBird)). %:- break. :- dmsg("confirm chilly still does not fly"). :- mpred_test(( \+ holds(iza,iChilly,tFly))). %= the dmsg explains the difference between \+ and ~ :- dmsg("confirm chilly still cant fly"). :- mpred_test(( ~ holds(iza,iChilly,tFly))). :- mpred_why(holds(iza,iChilly,tBird)). :- dmsg("chilly is no longer a penguin (hopefly the assertion above about him being a bird wont be removed)"). \+ holds(iza,iChilly,tPenguin). ~ holds(iza,iChilly,tPenguin). :- dmsg("Test that chilly is not a penguin"). :- mpred_test(( \+ holds(iza,iChilly,tPenguin))). :- dmsg("Test that chilly no longer forced into flightlessness"). :- mpred_test(( \+ ~holds(iza,iChilly,tFly))). :- dmsg("chilly is still a bird"). :- mpred_test((holds(iza,iChilly,tBird))). :- dmsg("confirm chilly is flying bird"). :- mpred_test(( holds(iza,iChilly,tFly))). /* % This wounld be a good TMS test it should throw.. but right now it passes wrongly holds(iza,iChilly,tFly). :- dmsg("confirm chilly is flying penguin"). :- mpred_test(( holds(iza,iChilly,tFly))). :- mpred_test(( holds(iza,iChilly,tPenguin))). :- mpred_test((\+ ~holds(iza,iChilly,tFly))). \+ holds(iza,iChilly,tFly). :- dmsg("confirm chilly is a normal penguin who cant fly"). :- mpred_test((\+ holds(iza,iChilly,tFly))). % fails rightly :- mpred_test(( holds(iza,iChilly,tPenguin))). :- repropagate(holds(iza,iChilly,tBird)). :- dmsg("confirm chilly is flying bird"). :- mpred_test(( holds(iza,iChilly,tFly))). */