tff(person_type,type, person: $tType ).
tff(dog_type,type, dog: $tType ).
tff(jon_decl,type, jon: person ).
tff(hercules_decl,type, hercules: dog ).
tff(owner_of_decl,type, owner_of: dog > person ).
tff(bit_decl,type, bit: ( dog * person * $int ) > $o ).
tff(hates_decl,type, hates: ( person * person ) > $o ).
tff(chases_decl,type, chases: ( person * dog ) > $o ).
tff(jon_not_owner_of_hercules,axiom,
owner_of(hercules) != jon ).
tff(hercules_bit_jon_twice,axiom,
bit(hercules,jon,2) ).
tff(biters_not_owned,axiom,
! [D: dog,P: person,N: $int] :
( ( bit(D,P,N)
& $greater(N,1)
& ( owner_of(D) != P ) )
=> hates(P,owner_of(D)) ) ).
tff(bites_then_chases,axiom,
! [D: dog,P: person,N: $int] :
( ( bit(D,P,N)
& $greater(N,0) )
=> chases(P,D) ) ).
tff(jon_chases_hates,conjecture,
? [D: dog,P: person] :
( chases(jon,D)
& P != jon
& hates(jon,P) ) ).