tff(garfield,logic,
$modal == [
$constants == $rigid,
$quantification == $constant,
$modalities == $modal_system_S5 ] ).
tff(dog_decl,type, dog: $tType ). tff(human_decl,type, human: $tType ).
tff(odie_decl,type, odie: dog ). tff(jon_decl,type, jon: human ).
tff(owner_of_decl,type, owner_of: dog > human ).
tff(bit_decl,type, bit: (dog * human * $int) > $o ).
tff(hates_decl,type, hates: (human * human) > $o ).
tff(feeds_decl,type, feeds: (human * dog) > $o ).
tff(chases_decl,type, chases: (human * dog) > $o ).
tff(says_decl,type, says: (human * $o) > $o ).
tff(jon_owns_odie,axiom, tff(odie_bit_jon_twice,axiom,
jon = owner_of(odie) ). bit(odie,jon,2) ).
tff(hate_the_multi_biter_dog,axiom, tff(feed_the_non_biter_dog,axiom,
! [D: dog,H: human,N: $int] : ! [D: dog,H: human] :
( ( H != owner_of(D) $ite(
& bit(D,H,N) ? [N: $int] :
& $greater(N,1) ) ( bit(D,H,N)
=> {$necessary(#arlene)} @ & $greater(N,0) ),
hates(H,owner_of(D)) ) ). chases(H,D),
feeds(H,D)) ).
tff(jon_says_a_dog_bit_him_twice,axiom, tff(jon_says_truth,axiom,
? [D: dog] : ! [S: $o] :
( D != odie ( says(jon,S)
& jon != owner_of(D) => S ) ).
& says(jon,bit(D,jon,2)) ) ).
tff(jon_chases_and_hates,conjecture,
? [D: dog,H: human] :
( {$possible(#garfield)} @ chases(jon,D)
& H != jon
& hates(jon,H) ) ).