tff(dog_type,type, dog: $tType ). tff(human_type,type, human: $tType ).
tff(biter_type,type, biter: $tType > $tType ).
tff(odie_decl,type, odie: biter(dog) ). tff(jon_decl,type, jon: human ).
tff(owner_of_decl,type, owner_of:
!>[BiterType: $tType]: (biter(BiterType) > human ) ).
tff(bit_decl,type, bit:
!>[BiterType: $tType]: ( (biter(BiterType) * human * $int) > $o ) ).
tff(hates_decl,type, hates: (human * human) > $o ).
tff(jon_owns_odie,axiom, tff(odie_bit_jon_twice,axiom,
jon = owner_of(dog,odie) ). bit(dog,odie,jon,2) ).
tff(another_dog_bit_jon_twice,axiom, tff(hate_the_multi_biter_any,axiom,
? [D: biter(dog)] : ! [T: $tType,B: biter(T),
( D != odie H: human,N: $int] :
& jon != owner_of(dog,D) ( ( H != owner_of(T,B)
& bit(dog,D,jon,2) ) ). & bit(T,B,H,N)
& $greater(N,1) )
tff(jon_hates_another_human,conjecture, => hates(H,owner_of(T,B)) ) ).
? [H: human] :
( H != jon
& hates(jon,H) ) ).