tff(human_decl,type,human: $tType). tff(grade_decl,type,grade: $tType). tff(john_decl,type,john: human). tff(a_decl,type,a: grade). tff(f_decl,type,f: grade). tff(grade_of_decl,type,grade_of: human > grade). tff(created_equal_decl,type,created_equal: (human * human) > $o). tff(all_created_equal,axiom, ! [H1:human,H2:human] : created_equal(H1,H2) ). tff(john_got_an_f,axiom, grade_of(john) = f ). tff(someone_got_an_a,axiom, ? [H:human] : grade_of(H) = a ). tff(a_is_not_f,axiom, a != f ). tff(there_is_someone_else,conjecture, ? [H:human] : ( H != john & created_equal(H,john) ) ).
tff(human_type,type, human: $tType ). tff(cat_type,type, cat: $tType ). tff(jon_decl,type, jon: human ). tff(garfield_decl,type, garfield: cat ). tff(arlene_decl,type, arlene: cat ). tff(nermal_decl,type, nermal: cat ). tff(loves_decl,type, loves: cat > cat ). tff(owns_decl,type, owns: ( human * cat ) > $o ). tff(only_jon,axiom, ! [H: human] : H = jon ). tff(only_garfield_and_arlene_and_nermal,axiom, ! [C: cat] : ( C = garfield | C = arlene | C = nermal ) ). tff(distinct_cats,axiom, ( garfield != arlene & arlene != nermal & nermal != garfield ) ). tff(jon_owns_garfield_not_arlene,axiom, ( owns(jon,garfield) & ~ owns(jon,arlene) ) ). tff(all_cats_love_garfield,axiom, ! [C: cat] : ( loves(C) = garfield ) ). tff(jon_owns_garfields_lovers,conjecture, ! [C: cat] : ( ( loves(C) = garfield & C != arlene ) => owns(jon,C) ) ).