tff(semantics,logic, $alethic_modal == [ $domains == $constant, $designation == $rigid, $terms == $local, $modalities == $modal_system_M ] ).
tff(person_decl,type, person: $tType). tff(product_decl,type, product: $tType). tff(alex_decl,type, alex: person). tff(chris_decl,type, chris: person). tff(leo_decl,type, leo: product). tff(work_hard_type,type, work_hard: (person * product) > $o). tff(gets_rich_type,type, gets_rich: person > $o).
tff(d_alex_decl,type, d_alex: person). tff(d_chris_decl,type, d_chris: person). tff(d_leo_decl,type, d_leo: product).
tff(w1_decl,type,w1: $world). tff(w2_decl,type,w2: $world).
tff(leo_workers,interpretation,
( ! [W: $world] : ( W = w1 | W = w2 ) & $distinct(w1,w2) & $local_world = w1 & $accessible_world(w1,w1) %----Logic is M & $accessible_world(w2,w2) & $accessible_world(w1,w2) & $accessible_world(w2,w1) )
( $in_world(w1,
( ! [DP: person] : ( DP = d_alex | DP = d_chris ) & $distinct(d_alex,d_chris) & ? [DP: person] : DP = d_alex & ? [DP: person] : DP = d_chris & ! [DP: d_product] : DP = d_leo & ? [DP: d_product] : DP = d_leo )
( alex = d_alex & chris = d_chris & leo = d_leo )
( work_hard(d_alex,d_leo) & work_hard(d_chris,d_leo) & ~ gets_rich(d_alex) & gets_rich(d_chris) )
$in_world(w2, ( ( ! [DP: person] : ( DP = d_alex | DP = d_chris ) & $distinct(d_alex,d_chris) & ? [DP: person] : DP = d_alex & ? [DP: person] : DP = d_chris & ! [DP: product] : DP = d_leo & ? [DP: product] : DP = d_leo ) & ( alex = d_alex & chris = d_chris & leo = d_leo ) & ( work_hard(d_alex,d_leo) & work_hard(d_chris,d_leo) & gets_rich(d_alex) & gets_rich(d_chris) ) ) )
tff(semantics,logic, $alethic_modal == [ $domains == $constant, $designation == $rigid, $terms == $local, $modalities == $modal_system_M ] ). tff(person_decl,type, person: $tType). tff(product_decl,type, product: $tType). tff(alex_decl,type, alex: person). tff(chris_decl,type, chris: person). tff(leo_decl,type, leo: product). tff(work_hard_decl,type, work_hard: (person * product) > $o). tff(gets_rich_decl,type, gets_rich: person > $o). tff(d_alex_decl,type, d_alex: person). tff(d_chris_decl,type, d_chris: person). tff(d_leo_decl,type, d_leo: product). tff(w1_decl,type,w1: $world). tff(w2_decl,type,w2: $world). tff(leo_workers,interpretation, ( ( ! [W: $world] : ( W = w1 | W = w2 ) & $distinct(w1,w2) & $local_world = w1 & $accessible_world(w1,w1) %----Logic is M & $accessible_world(w2,w2) & $accessible_world(w1,w2) ) & ! [W: $world] : ( ( ! [DP: person] : ( DP = d_alex | DP = d_chris ) & $distinct(d_alex,d_chris) & ? [DP: person] : DP = d_alex & ? [DP: person] : DP = d_chris & ! [DP: product] : DP = d_leo & ? [DP: product] : DP = d_leo ) & ( alex = d_alex & chris = d_chris & leo = d_leo ) & ( work_hard(d_alex,d_leo) & work_hard(d_chris,d_leo) ) ) & $in_world(w1, ( ~ gets_rich(d_alex) & gets_rich(d_chris) ) ) & $in_world(w2, ( gets_rich(d_alex) & ~ gets_rich(d_chris) ) ) ) ).
Alex and Chris Work Hard | Finite-Finite Countermodel |
---|---|
%------------------------------------------------------------------------------ tff(semantics,logic, $alethic_modal == [ $domains == $constant, $designation == $rigid, $terms == $local, $modalities == $modal_system_M ] ). tff(person_decl,type,person: $tType). tff(product_decl,type,product: $tType). tff(alex_decl,type,alex: person). tff(chris_decl,type,chris: person). tff(leo_decl,type,leo: product). tff(work_hard_decl,type,work_hard: (person * product) > $o). tff(gets_rich_decl,type,gets_rich: person > $o). %----If there is a product that a person works hard on, then %----it's possible that the person will get rich. tff(work_hard_to_get_rich,axiom, ! [P: person] : ( ? [R: product] : work_hard(P,R) => ( {$possible} @ (gets_rich(P)) ) ) ). %----Nobody necessarily gets rich. tff(not_all_get_rich,axiom, ~ ? [P: person] : ({$necessary} @ (gets_rich(P)) ) ). %----Alex and Chris work hard on Leo-III. tff(alex_works_on_leo,axiom, work_hard(alex,leo) ). tff(chris_works_on_leo,axiom, work_hard(chris,leo) ). %----Chris is not Alex tff(chris_not_alex,axiom, chris != alex ). %----It's possible that Alex gets rich but Chris does not. tff(only_alex_gets_rich,conjecture, ( {$possible} @ (gets_rich(alex) & ~ gets_rich(chris)) ) ). %------------------------------------------------------------------------------ |
%------------------------------------------------------------------------------ tff(semantics,logic, $alethic_modal == [ $domains == $constant, $designation == $rigid, $terms == $local, $modalities == $modal_system_M ] ). %----Declarations to fool Vampire when processing this file directly % tff('$world_type',type,$world: $tType). % tff('$local_world_decl',type,$local_world: $world). % tff('$accessible_world_decl',type,$accessible_world: ($world * $world) > $o). % tff('$in_world_decl',type,$in_world: ($world * $o) > $o). tff(person_decl,type, person: $tType). tff(product_decl,type, product: $tType). tff(alex_decl,type, alex: person). tff(chris_decl,type, chris: person). tff(leo_decl,type, leo: product). tff(work_hard_decl,type, work_hard: (person * product) > $o). tff(gets_rich_decl,type, gets_rich: person > $o). tff(d_alex_decl,type, d_alex: person). tff(d_chris_decl,type, d_chris: person). tff(d_leo_decl,type, d_leo: product). tff(w1_decl,type,w1: $world). tff(w2_decl,type,w2: $world). tff(leo_workers,interpretation, ( ( ! [W: $world] : ( W = w1 | W = w2 ) & $distinct(w1,w2) & $local_world = w2 & $accessible_world(w1,w1) %----Logic is M & $accessible_world(w2,w2) & $accessible_world(w1,w2) & $accessible_world(w2,w1) ) & $in_world(w1, ( ( ! [DP: person] : ( DP = d_alex | DP = d_chris ) & $distinct(d_alex,d_chris) & ? [DP: person] : DP = d_alex & ? [DP: person] : DP = d_chris & ! [DP: product] : DP = d_leo & ? [DP: product] : DP = d_leo ) & ( alex = d_alex & chris = d_chris & leo = d_leo ) & ( work_hard(d_alex,d_leo) & work_hard(d_chris,d_leo) & gets_rich(d_alex) & gets_rich(d_chris) ) ) ) & $in_world(w2, ( ( ! [DP: person] : ( DP = d_alex | DP = d_chris ) & $distinct(d_alex,d_chris) & ? [DP: person] : DP = d_alex & ? [DP: person] : DP = d_chris & ! [DP: product] : DP = d_leo & ? [DP: product] : DP = d_leo ) & ( alex = d_alex & chris = d_chris & leo = d_leo ) & ( work_hard(d_alex,d_leo) & work_hard(d_chris,d_leo) & gets_rich(d_alex) & gets_rich(d_chris) ) ) ) ) ). %------------------------------------------------------------------------------ |
Rotten Fruit | Finite-Finite Countermodel |
---|---|
%------------------------------------------------------------------------------ tff(semantics,logic, $alethic_modal == [ $domains == $constant, $designation == $rigid, $terms == $local, $modalities == $modal_system_M ] ). tff(fruit_type,type, fruit: $tType). tff(apple_decl,type, apple: fruit). tff(banana_decl,type, banana: fruit). tff(healthy_decl,type, healthy: fruit > $o). tff(rotten_decl,type, rotten: fruit > $o). tff(apple_not_banana,axiom, apple != banana ). tff(necessary_healthy_fruit_everywhere,axiom, ! [F: fruit] : ( {$necessary} @ (healthy(F)) ) ). tff(fruit_possibly_not_rotten,axiom, ! [F: fruit] : ( {$possible} @ (~ rotten(F)) ) ). tff(rotten_banana_here,axiom-local, rotten(banana) ). tff(not_true,conjecture, ( {$necessary} @ (( healthy(apple) & ~ rotten(banana) )) ) ). %------------------------------------------------------------------------------ |
%------------------------------------------------------------------------------ tff(semantics,logic, $alethic_modal == [ $domains == $constant, $designation == $rigid, $terms == $local, $modalities == $modal_system_M ] ). %----Declarations to fool Vampire when processing this file directly % tff('$world_type',type,$world: $tType). % tff('$local_world_decl',type,$local_world: $world). % tff('$accessible_world_decl',type,$accessible_world: ($world * $world) > $o). % tff('$in_world_decl',type,$in_world: ($world * $o) > $o). tff(fruit_type,type,fruit: $tType). tff(apple_decl,type,apple: fruit). tff(banana_decl,type,banana: fruit). tff(healthy_decl,type,healthy: fruit > $o). tff(rotten_decl,type,rotten: fruit > $o). tff(d_apple_decl,type,d_apple: fruit). tff(d_banana_decl,type,d_banana: fruit). tff(w1_decl,type,w1: $world). tff(w2_decl,type,w2: $world). tff(fruity_worlds,interpretation, ( ( ! [W: $world] : ( W = w1 | W = w2 ) & $local_world = w1 & $accessible_world(w1,w1) %----Logic is M & $accessible_world(w2,w2) & $accessible_world(w1,w2) ) & $in_world(w1, ( ( ! [DF: fruit] : ( DF = d_apple | DF = d_banana ) & $distinct(d_apple,d_banana) & ? [DP: fruit] : ( DP = d_apple ) & ? [DP: fruit] : ( DP = d_banana ) ) & ( apple = d_apple & banana = d_banana ) & ( healthy(d_apple) & healthy(d_banana) & ~ rotten(d_apple) & rotten(d_banana) ) ) ) & $in_world(w2, ( ( ! [DF: fruit] : ( DF = d_apple | DF = d_banana ) & $distinct(d_apple,d_banana) & ? [DP: fruit] : ( DP = d_apple ) & ? [DP: fruit] : ( DP = d_banana ) ) & ( apple = d_apple & banana = d_banana ) & ( healthy(d_apple) & healthy(d_banana) & ~ rotten(d_apple) & ~ rotten(d_banana) ) ) ) ) ). %------------------------------------------------------------------------------ |
Tossing Heads | Finite-Infinite Countermodel |
---|---|
%------------------------------------------------------------------------------ tff(simple_spec,logic, $alethic_modal == [ $constants == $rigid, $quantification == $constant, $modalities == $modal_system_S4 ] ). tff(sequence_type,type, sequence: $tType ). tff(null_decl,type, null: sequence ). tff(toss_decl,type, toss: sequence > sequence ). tff(all_heads_decl,type, all_heads: sequence > $o ). tff(different_sequences,axiom, ! [S: sequence] : ( ( toss(S) != null ) & ( toss(S) != S ) ) ). tff(injection,axiom, ! [S1: sequence,S2: sequence] : ( ( toss(S1) = toss(S2) ) => ( S1 = S2 ) ) ). tff(all_heads_possible,axiom, ! [S: sequence] : ( all_heads(S) => ( {$possible} @ (all_heads(toss(S)) ) ) ) ). tff(no_heads,axiom, all_heads(null) ). tff(two_heads_necessary,conjecture, ( {$necessary} @ (? [S: sequence] : ( all_heads(S) & all_heads(toss(S)) ) ) ). %------------------------------------------------------------------------------ |
%------------------------------------------------------------------------------ tff(simple_spec,logic, $alethic_modal == [ $constants == $rigid, $quantification == $constant, $modalities == $modal_system_S4 ] ). %----Declarations to fool Vampire when processing this file directly % tff('$world_type',type,$world: $tType). % tff('$local_world_decl',type,$local_world: $world). % tff('$accessible_world_decl',type,$accessible_world: ($world * $world) > $o). % tff('$in_world_decl',type,$in_world: ($world * $o) > $o). tff(sequence_type,type, sequence: $tType ). tff(null_decl,type, null: sequence ). tff(toss_decl,type, toss: sequence > sequence ). tff(all_heads_decl,type, all_heads: sequence > $o ). tff(int2sequence_decl,type,int2sequence: $int > sequence). tff(w1_decl,type,w1: $world). tff(w2_decl,type,w2: $world). tff(tossed_worlds,interpretation, ( ( ! [W: $world] : ( ( W = w1 ) | ( W = w2 ) ) & $local_world = w1 & $accessible_world(w1,w1) & $accessible_world(w2,w2) & $accessible_world(w1,w2) ) & $in_world(w1, %----The domain for type sequence is the integers ( ( ! [S: sequence] : ? [I: $int] : S = int2sequence(I) %----The type promoter is a bijection & ! [X: $int,Y: $int] : ( int2sequence(X) = int2sequence(Y) => X = Y ) ) & ( null = int2sequence(1) %----In world w1 the first toss is a head. This is redundant. & toss(int2sequence(1)) = int2sequence(2) & ! [I: $int] : toss(int2sequence(I)) = int2sequence($product(I,2)) ) & ( all_heads(int2sequence(1)) & ! [I: $int] : ( all_heads(int2sequence(I)) <=> ( $greatereq(I,2) & ( $remainder_e(I,2) = 0 ) & all_heads(int2sequence($quotient_e(I,2))) ) ) ) ) ) & $in_world(w2, ( ( ! [S: sequence] : ? [I: $int] : S = int2sequence(I) & ! [X: $int,Y: $int] : ( int2sequence(X) = int2sequence(Y) => X = Y ) ) & ( null = int2sequence(1) %----In world w2 the first toss is a tail & toss(int2sequence(1)) = int2sequence(3) & ! [I: $int] : ( I != 1 => toss(int2sequence(I)) = int2sequence($product(I,2)) ) ) & ( all_heads(int2sequence(1)) & ! [I: $int] : ( all_heads(int2sequence(I)) <=> ( $greatereq(I,2) & ( $remainder_e(I,2) = 0 ) & all_heads(int2sequence($quotient_e(I,2))) ) ) ) ) ) ) ). %------------------------------------------------------------------------------ |
Staying Alive | Infinite-Finite Model |
---|---|
%------------------------------------------------------------------------------ tff(simple_spec,logic, $alethic_modal == [ $constants == $rigid, $quantification == $constant, $modalities == $modal_system_M ] ). tff(person_type,type, person: $tType). tff(geoff_decl,type, geoff: person). tff(alive_decl,type, alive: (person * $int) > $o). tff(age_decl,type, age: (person * $int) > $int). tff(born_by_1961,axiom, ? [BirthYear: $int] : ( $lesseq(BirthYear,1961) & ! [PreBirthYear: $int] : ( $less(PreBirthYear,BirthYear) => ( ~ alive(geoff,PreBirthYear) & ( age(geoff,PreBirthYear) = -1 ) ) ) & ! [FromBirthYear: $int] : ( $greatereq(FromBirthYear,BirthYear) => ( alive(geoff,FromBirthYear) & ( age(geoff,FromBirthYear) = $difference(FromBirthYear,BirthYear)) ) ) ) ). tff(necessarily_alive_between,axiom, ! [StartYear: $int,EndYear: $int] : ( ( $less(StartYear,EndYear) & alive(geoff,StartYear) & alive(geoff,EndYear) ) => ( {$necessary} @ (! [BetweenYear: $int] : ( ( $greatereq(BetweenYear,StartYear) & $lesseq(BetweenYear,EndYear) ) => alive(geoff,BetweenYear) )) ) ) ). tff(necessarily_dead_after,axiom, ! [DeathYear: $int] : ( ( alive(geoff,DeathYear) & ~ alive(geoff,$sum(DeathYear,1)) ) => ( {$necessary} @ (! [Year: $int] : ( $greater(Year,DeathYear) => ~ alive(geoff,Year) ) ) ) ) ). tff(might_live_another_year,axiom, ! [Year: $int] : ( alive(geoff,Year) => ( {$possible} @ (alive(geoff,$sum(Year,1))) ) ) ). %----Adding this should make the axioms contradictory % tff(must_die,axiom, % {$necessary} @ % ( ? [Year: $int] : % ( $greater(Year,1961) % & ~ alive(geoff,Year ) ) ). %----This should be provable % tff(might_live_long,conjecture, % {$possible} @ % ( ? [Year: $int] : % ( age(geoff,Year) = 120 % & alive(geoff,Year) ) ) ). %------------------------------------------------------------------------------ |
%------------------------------------------------------------------------------ tff(simple_spec,logic, $alethic_modal == [ $constants == $rigid, $quantification == $constant, $modalities == $modal_system_M ] ). %----Declarations to fool Vampire when processing this file directly % tff('$world_type',type,$world: $tType). % tff('$local_world_decl',type,$local_world: $world). % tff('$accessible_world_decl',type,$accessible_world: ($world * $world) > $o). % tff('$in_world_decl',type,$in_world: ($world * $o) > $o). tff(person_type,type, person: $tType). tff(geoff_decl,type,geoff: person). tff(alive_decl,type,alive: (person * $int) > $o). tff(age_decl,type,age: (person * $int) > $int). tff(d_person_type,type,d_person: $tType). tff(d_geoff_decl,type,d_geoff: d_person). tff(d2person_decl,type,d2person: d_person > person). tff(int2world_decl,type,int2world: $int > $world ). tff(long_live_geoff,interpretation, %----An infinite number of worlds, numbered by naturals ( ( ! [I: $int] : ? [W: $world] : int2world(I) = W %----The type promoter is a bijection (injective and surjective) & ! [I1: $int,I2: $int] : ( int2world(I1) = int2world(I2) => I1 = I2 ) & ! [W: $world] : ? [I: $int] : int2world(I) = W %----Worlds can access themselves and greater indexed worlds (worlds in the future) & ! [P: $int,F: $int] : ( $greatereq(F,P) => $accessible_world(int2world(P),int2world(F)) ) ) %----Worlds before 1961 all think geoff was born that year & ! [IW: $int] : ( $less(IW,1961) => $in_world(int2world(IW), %----Only one domain element for person ( ! [P: person] : ? [DP: d_person] : P = d2person(DP) & ! [DP: d_person] : DP = d_geoff & ? [DP: d_person] : DP = d_geoff %----The type promoter is a bijection (injective and surjective) & ! [X: d_person,Y: d_person] : ( d2person(X) = d2person(Y) => X = Y ) & geoff = d2person(d_geoff) %----Alive and age interpretation & ! [Y: $int] : ( $less(Y,IW) => ( ~ alive(d2person(d_geoff),Y) & age(d2person(d_geoff),Y) = -1 ) ) & alive(d2person(d_geoff),IW) & age(d2person(d_geoff),IW) = 0 & ! [Y: $int] : ( $greater(Y,IW) => ( alive(d2person(d_geoff),Y) & age(d2person(d_geoff),Y) = $difference(Y,IW) ) ) ) ) %----Worlds from 1961 know geoff was born in 1961. geoff lives forever! & ! [IW: $int] : ( $greatereq(IW,1961) => $in_world(int2world(IW), ( ! [P: person] : ? [DP: d_person] : P = d2person(DP) & ! [DP: d_person] : DP = d_geoff & ? [DP: d_person] : DP = d_geoff & ! [X: d_person,Y: d_person] : ( d2person(X) = d2person(Y) => X = Y ) & geoff = d2person(d_geoff) & ! [Y: $int] : ( ( $less(Y,1961) => ( ~ alive(d2person(d_geoff),Y) & age(d2person(d_geoff),Y) = -1 ) ) & ( ( $greatereq(Y,1961) & $less(Y,IW) ) => ( alive(d2person(d_geoff),Y) & age(d2person(d_geoff),Y) = $difference(Y,1961) ) ) ) & alive(d2person(d_geoff),IW) & age(d2person(d_geoff),IW) = $difference(IW,1961) & ! [Y: $int] : ( $greater(Y,IW) => ( alive(d2person(d_geoff),Y) & age(d2person(d_geoff),Y) = $difference(Y,1961) ) ) ) ) ) ) ) ). %------------------------------------------------------------------------------ |
People Like People | Infinite-Infinite Model |
---|---|
%------------------------------------------------------------------------------ tff(simple_spec,logic, $alethic_modal == [ $constants == $flexible, $quantification == $varying, $modalities == $modal_system_M ] ). tff(person_type,type, person: $tType). tff(geoff_decl,type, geoff: person). tff(like_decl,type, like: person > $o). tff(id_of_decl,type, id_of: person > $int). tff(like_exactly_one_person,axiom, ? [P: person] : ( like(P) & ! [OP: person] : ( like(OP) => ( OP = P ) ) ) ). %----Infinite people here. The RHS of the conjunction limits it to an integer %----number of people. tff(infinite_people,axiom-local, ! [I: $int] : ( $greatereq(I,0) => ( ? [P: person] : id_of(P) = I & ! [P1: person,P2: person] : ( ( id_of(P1) = id_of(P2) ) => ( P1 = P2 ) ) ) ) ). tff(like_geoff_here,axiom-local, like(geoff) ). tff(like_all,axiom-local, ! [X: person] : ( {$possible} @ (like(X)) ) ). %------------------------------------------------------------------------------ |
%------------------------------------------------------------------------------ tff(simple_spec,logic, $alethic_modal == [ $constants == $flexible, $quantification == $varying, $modalities == $modal_system_M ] ). %----Declarations to fool Vampire when processing this file directly % tff('$world_type',type,$world: $tType). % tff('$local_world_decl',type,$local_world: $world). % tff('$accessible_world_decl',type,$accessible_world: ($world * $world) > $o). % tff('$in_world_decl',type,$in_world: ($world * $o) > $o). tff(person_type,type,person: $tType). tff(geoff_decl,type,geoff: person). tff(like_decl,type,like: person > $o). tff(id_of_decl,type,id_of: person > $int). tff(int2person_decl,type, int2person: $int > person ). tff(int2world_decl,type,int2world: $int > $world ). tff(like_geoff,interpretation, %----An infinite number of worlds, numbered by naturals ( ( ! [I: $int] : ( $greatereq(I,0) => ? [W: $world] : int2world(I) = W ) & $local_world = int2world(0) %----The type promoter is a bijection (injective and surjective) & ! [I1: $int,I2: $int] : ( ( int2world(I1) = int2world(I2) ) => ( I1 = I2 ) ) & ! [W: $world] : ? [I: $int] : int2world(I) = W %----World 0 can access itself (system T) & $accessible_world(int2world(0),int2world(0)) %----World 0 can access all other worlds & ! [I: $int] : ( $greater(I,0) => $accessible_world(int2world(0),int2world(I)) ) ) %----Now interpret each world %----In world 0 & $in_world(int2world(0), %----The domain for type person is the integers ( ( ! [P: person] : ? [I: $int] : P = int2person(I) %----The type promoter is a bijection (injective and surjective) & ! [I1: $int,I2: $int] : ( int2person(I1) = int2person(I2) => I1 = I2 ) ) %----geoff is interpreted as 0 & ( geoff = int2person(0) %----id_of coincides with the domain elements & ! [I: $int] : id_of(int2person(I)) = I ) %----like is true for 0 (and only 0 by next part for all worlds) & like(int2person(0) ) ) ) %----In all worlds & ! [IW: $int] : ( $greatereq(IW,0) => $in_world(int2world(IW), %----The type promoter is a bijection (injective and surjective) ( ( ! [P: person] : ? [I: $int] : P = int2person(I) & ! [I1: $int,I2: $int] : ( int2person(I1) = int2person(I2) => I1 = I2 ) ) %----geoff is interpreted as the world number & ( geoff = int2person(IW) %----id_of coincides with the world & id_of(int2person(IW)) = IW ) %----Like the person who is interpreted as this world number (geoff) & ( like(int2person(IW)) %----Like only this one person & ! [ID: $int] : ( like(int2person(ID)) <=> ID = IW ) ) ) ) ) ) ). %------------------------------------------------------------------------------ |