:: HEYTING3 semantic presentation

scheme :: HEYTING3:sch 1
s1{ F1() -> RelStr , P1[ set ] } :
for b1, b2 being Subset of F1() st ( for b3 being set holds
( b3 in b1 iff P1[b3] ) ) & ( for b3 being set holds
( b3 in b2 iff P1[b3] ) ) holds
b1 = b2
proof end;

Lemma1: for b1, b2 being set holds [:b1,{b2}:] is Function
proof end;

registration
let c1, c2 be set ;
cluster [:a1,{a2}:] -> Function-like ;
coherence
[:c1,{c2}:] is Function-like
by Lemma1;
end;

Lemma2: ( 0 = 2 * 0 & 2 = 2 * 1 )
;

then Lemma3: ( 0 is even & 2 is even )
by ABIAN:def 2;

1 = 0 + 1
;

then Lemma4: not 1 is even
by Lemma2, SCMFSA9A:1;

theorem Th1: :: HEYTING3:1
for b1 being odd Nat holds 1 <= b1
proof end;

theorem Th2: :: HEYTING3:2
canceled;

theorem Th3: :: HEYTING3:3
for b1 being non empty finite Subset of NAT ex b2 being Nat st b1 c= (Seg b2) \/ {0}
proof end;

theorem Th4: :: HEYTING3:4
for b1 being finite Subset of NAT holds
not for b2 being odd Nat holds b2 in b1
proof end;

theorem Th5: :: HEYTING3:5
for b1 being Nat
for b2 being non empty finite Subset of [:NAT ,{b1}:] ex b3 being non empty Nat st b2 c= [:((Seg b3) \/ {0}),{b1}:]
proof end;

theorem Th6: :: HEYTING3:6
for b1 being Nat
for b2 being non empty finite Subset of [:NAT ,{b1}:] holds
not for b3 being non empty Nat holds [((2 * b3) + 1),b1] in b2
proof end;

theorem Th7: :: HEYTING3:7
for b1 being Nat
for b2 being finite Subset of [:NAT ,{b1}:] ex b3 being Nat st
for b4 being Nat st b4 >= b3 holds
not [b4,b1] in b2
proof end;

theorem Th8: :: HEYTING3:8
for b1 being upper-bounded Lattice holds Top b1 = Top (LattPOSet b1)
proof end;

theorem Th9: :: HEYTING3:9
for b1 being lower-bounded Lattice holds Bottom b1 = Bottom (LattPOSet b1)
proof end;

theorem Th10: :: HEYTING3:10
canceled;

theorem Th11: :: HEYTING3:11
for b1 being set
for b2 being finite set
for b3, b4 being Element of Fin (PFuncs b1,b2) st b3 = {} & b4 <> {} holds
b4 =>> b3 = {}
proof end;

theorem Th12: :: HEYTING3:12
for b1, b2, b3, b4 being set st b1 c= b2 & b3 c= b4 holds
SubstitutionSet b1,b3 c= SubstitutionSet b2,b4
proof end;

theorem Th13: :: HEYTING3:13
for b1, b2, b3, b4 being set
for b5 being Element of Fin (PFuncs b1,b3)
for b6 being Element of Fin (PFuncs b2,b4) st b1 c= b2 & b3 c= b4 & b5 = b6 holds
mi b5 = mi b6
proof end;

theorem Th14: :: HEYTING3:14
for b1, b2, b3, b4 being set st b1 c= b2 & b3 c= b4 holds
the L_join of (SubstLatt b1,b3) = the L_join of (SubstLatt b2,b4) || the carrier of (SubstLatt b1,b3)
proof end;

definition
let c1, c2 be set ;
func SubstPoset c1,c2 -> RelStr equals :: HEYTING3:def 1
LattPOSet (SubstLatt a1,a2);
coherence
LattPOSet (SubstLatt c1,c2) is RelStr
;
end;

:: deftheorem Def1 defines SubstPoset HEYTING3:def 1 :
for b1, b2 being set holds SubstPoset b1,b2 = LattPOSet (SubstLatt b1,b2);

registration
let c1, c2 be set ;
cluster SubstPoset a1,a2 -> with_suprema with_infima ;
coherence
( SubstPoset c1,c2 is with_suprema & SubstPoset c1,c2 is with_infima )
;
end;

registration
let c1, c2 be set ;
cluster SubstPoset a1,a2 -> reflexive transitive antisymmetric with_suprema with_infima ;
coherence
( SubstPoset c1,c2 is reflexive & SubstPoset c1,c2 is antisymmetric & SubstPoset c1,c2 is transitive )
;
end;

Lemma11: for b1, b2 being set holds SubstitutionSet b1,b2 = the carrier of (SubstPoset b1,b2)
by SUBSTLAT:def 4;

theorem Th15: :: HEYTING3:15
for b1, b2 being set
for b3, b4 being Element of (SubstPoset b1,b2) holds
( b3 <= b4 iff for b5 being set st b5 in b3 holds
ex b6 being set st
( b6 in b4 & b6 c= b5 ) )
proof end;

theorem Th16: :: HEYTING3:16
for b1, b2, b3, b4 being set st b1 c= b2 & b3 c= b4 holds
SubstPoset b1,b3 is full SubRelStr of SubstPoset b2,b4
proof end;

definition
let c1, c2 be Nat;
func PFArt c1,c2 -> Element of PFuncs NAT ,{a2} means :Def2: :: HEYTING3:def 2
for b1 being set holds
( b1 in a3 iff ( ex b2 being odd Nat st
( b2 <= 2 * a1 & [b2,a2] = b1 ) or [(2 * a1),a2] = b1 ) );
existence
ex b1 being Element of PFuncs NAT ,{c2} st
for b2 being set holds
( b2 in b1 iff ( ex b3 being odd Nat st
( b3 <= 2 * c1 & [b3,c2] = b2 ) or [(2 * c1),c2] = b2 ) )
proof end;
uniqueness
for b1, b2 being Element of PFuncs NAT ,{c2} st ( for b3 being set holds
( b3 in b1 iff ( ex b4 being odd Nat st
( b4 <= 2 * c1 & [b4,c2] = b3 ) or [(2 * c1),c2] = b3 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ( ex b4 being odd Nat st
( b4 <= 2 * c1 & [b4,c2] = b3 ) or [(2 * c1),c2] = b3 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def2 defines PFArt HEYTING3:def 2 :
for b1, b2 being Nat
for b3 being Element of PFuncs NAT ,{b2} holds
( b3 = PFArt b1,b2 iff for b4 being set holds
( b4 in b3 iff ( ex b5 being odd Nat st
( b5 <= 2 * b1 & [b5,b2] = b4 ) or [(2 * b1),b2] = b4 ) ) );

registration
let c1, c2 be Nat;
cluster PFArt a1,a2 -> finite ;
coherence
PFArt c1,c2 is finite
proof end;
end;

definition
let c1, c2 be Nat;
func PFCrt c1,c2 -> Element of PFuncs NAT ,{a2} means :Def3: :: HEYTING3:def 3
for b1 being set holds
( b1 in a3 iff ex b2 being odd Nat st
( b2 <= (2 * a1) + 1 & [b2,a2] = b1 ) );
existence
ex b1 being Element of PFuncs NAT ,{c2} st
for b2 being set holds
( b2 in b1 iff ex b3 being odd Nat st
( b3 <= (2 * c1) + 1 & [b3,c2] = b2 ) )
proof end;
uniqueness
for b1, b2 being Element of PFuncs NAT ,{c2} st ( for b3 being set holds
( b3 in b1 iff ex b4 being odd Nat st
( b4 <= (2 * c1) + 1 & [b4,c2] = b3 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being odd Nat st
( b4 <= (2 * c1) + 1 & [b4,c2] = b3 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def3 defines PFCrt HEYTING3:def 3 :
for b1, b2 being Nat
for b3 being Element of PFuncs NAT ,{b2} holds
( b3 = PFCrt b1,b2 iff for b4 being set holds
( b4 in b3 iff ex b5 being odd Nat st
( b5 <= (2 * b1) + 1 & [b5,b2] = b4 ) ) );

registration
let c1, c2 be Nat;
cluster PFCrt a1,a2 -> finite ;
coherence
PFCrt c1,c2 is finite
proof end;
end;

theorem Th17: :: HEYTING3:17
for b1, b2 being Nat holds [((2 * b1) + 1),b2] in PFCrt b1,b2
proof end;

theorem Th18: :: HEYTING3:18
for b1, b2 being Nat holds PFCrt b1,b2 misses {[((2 * b1) + 3),b2]}
proof end;

Lemma17: for b1 being Nat holds (2 * b1) + 1 <= (2 * (b1 + 1)) + 1
proof end;

theorem Th19: :: HEYTING3:19
for b1, b2 being Nat holds PFCrt (b1 + 1),b2 = (PFCrt b1,b2) \/ {[((2 * b1) + 3),b2]}
proof end;

Lemma19: for b1, b2 being Nat holds not PFCrt (b1 + 1),b2 c= PFCrt b1,b2
proof end;

theorem Th20: :: HEYTING3:20
for b1, b2 being Nat holds PFCrt b1,b2 c< PFCrt (b1 + 1),b2
proof end;

registration
let c1, c2 be Nat;
cluster PFArt a1,a2 -> non empty finite ;
coherence
not PFArt c1,c2 is empty
proof end;
end;

theorem Th21: :: HEYTING3:21
for b1, b2, b3 being Nat holds not PFArt b1,b2 c= PFCrt b3,b2
proof end;

Lemma22: for b1, b2 being Nat holds PFCrt b1,b2 c= PFCrt (b1 + 1),b2
proof end;

theorem Th22: :: HEYTING3:22
for b1, b2, b3 being Nat st b1 <= b3 holds
PFCrt b1,b2 c= PFCrt b3,b2
proof end;

Lemma23: for b1, b2, b3 being Nat st b1 < b3 holds
PFCrt b1,b2 c= PFArt b3,b2
proof end;

theorem Th23: :: HEYTING3:23
for b1 being Nat holds PFArt 1,b1 = {[1,b1],[2,b1]}
proof end;

definition
let c1, c2 be Nat;
func PFBrt c1,c2 -> Element of Fin (PFuncs NAT ,{a2}) means :Def4: :: HEYTING3:def 4
for b1 being set holds
( b1 in a3 iff ( ex b2 being non empty Nat st
( b2 <= a1 & b1 = PFArt b2,a2 ) or b1 = PFCrt a1,a2 ) );
existence
ex b1 being Element of Fin (PFuncs NAT ,{c2}) st
for b2 being set holds
( b2 in b1 iff ( ex b3 being non empty Nat st
( b3 <= c1 & b2 = PFArt b3,c2 ) or b2 = PFCrt c1,c2 ) )
proof end;
uniqueness
for b1, b2 being Element of Fin (PFuncs NAT ,{c2}) st ( for b3 being set holds
( b3 in b1 iff ( ex b4 being non empty Nat st
( b4 <= c1 & b3 = PFArt b4,c2 ) or b3 = PFCrt c1,c2 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ( ex b4 being non empty Nat st
( b4 <= c1 & b3 = PFArt b4,c2 ) or b3 = PFCrt c1,c2 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def4 defines PFBrt HEYTING3:def 4 :
for b1, b2 being Nat
for b3 being Element of Fin (PFuncs NAT ,{b2}) holds
( b3 = PFBrt b1,b2 iff for b4 being set holds
( b4 in b3 iff ( ex b5 being non empty Nat st
( b5 <= b1 & b4 = PFArt b5,b2 ) or b4 = PFCrt b1,b2 ) ) );

theorem Th24: :: HEYTING3:24
for b1, b2 being Nat
for b3 being set st b3 in PFBrt (b1 + 1),b2 holds
ex b4 being set st
( b4 in PFBrt b1,b2 & b4 c= b3 )
proof end;

theorem Th25: :: HEYTING3:25
for b1, b2 being Nat holds not PFCrt b1,b2 in PFBrt (b1 + 1),b2
proof end;

Lemma25: for b1, b2 being Nat
for b3 being set st b3 in PFBrt b1,b2 holds
b3 is finite
proof end;

theorem Th26: :: HEYTING3:26
for b1, b2, b3 being Nat st PFArt b1,b2 c= PFArt b3,b2 holds
b1 = b3
proof end;

theorem Th27: :: HEYTING3:27
for b1, b2, b3 being Nat holds
( PFCrt b1,b2 c= PFArt b3,b2 iff b1 < b3 )
proof end;

theorem Th28: :: HEYTING3:28
for b1, b2 being Nat holds PFBrt b1,b2 is Element of (SubstPoset NAT ,{b2})
proof end;

definition
let c1 be Nat;
func PFDrt c1 -> Subset of (SubstPoset NAT ,{a1}) means :Def5: :: HEYTING3:def 5
for b1 being set holds
( b1 in a2 iff ex b2 being non empty Nat st b1 = PFBrt b2,a1 );
existence
ex b1 being Subset of (SubstPoset NAT ,{c1}) st
for b2 being set holds
( b2 in b1 iff ex b3 being non empty Nat st b2 = PFBrt b3,c1 )
proof end;
uniqueness
for b1, b2 being Subset of (SubstPoset NAT ,{c1}) st ( for b3 being set holds
( b3 in b1 iff ex b4 being non empty Nat st b3 = PFBrt b4,c1 ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being non empty Nat st b3 = PFBrt b4,c1 ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def5 defines PFDrt HEYTING3:def 5 :
for b1 being Nat
for b2 being Subset of (SubstPoset NAT ,{b1}) holds
( b2 = PFDrt b1 iff for b3 being set holds
( b3 in b2 iff ex b4 being non empty Nat st b3 = PFBrt b4,b1 ) );

theorem Th29: :: HEYTING3:29
for b1 being Nat holds PFBrt 1,b1 = {(PFArt 1,b1),(PFCrt 1,b1)}
proof end;

theorem Th30: :: HEYTING3:30
for b1 being Nat holds PFBrt 1,b1 <> {{} }
proof end;

registration
let c1 be Nat;
cluster PFBrt 1,a1 -> non empty ;
coherence
not PFBrt 1,c1 is empty
proof end;
end;

theorem Th31: :: HEYTING3:31
for b1, b2 being Nat holds {(PFArt b1,b2)} is Element of (SubstPoset NAT ,{b2})
proof end;

theorem Th32: :: HEYTING3:32
for b1 being Nat
for b2, b3 being set
for b4 being Element of (SubstPoset b2,{b1}) st b3 in b4 holds
b3 is finite Subset of [:b2,{b1}:]
proof end;

theorem Th33: :: HEYTING3:33
for b1 being Nat
for b2 being Element of (SubstPoset NAT ,{b1}) st PFDrt b1 is_>=_than b2 holds
for b3 being non empty set st b3 in b2 holds
ex b4 being Nat st
( [b4,b1] in b3 & b4 is even )
proof end;

theorem Th34: :: HEYTING3:34
for b1 being Nat
for b2, b3 being Element of (SubstPoset NAT ,{b1})
for b4 being Subset of (SubstPoset NAT ,{b1}) st b2 is_<=_than b4 & b3 is_<=_than b4 holds
b2 "\/" b3 is_<=_than b4
proof end;

registration
let c1 be Nat;
cluster non empty Element of the carrier of (SubstPoset NAT ,{a1});
existence
not for b1 being Element of (SubstPoset NAT ,{c1}) holds b1 is empty
proof end;
end;

Lemma35: for b1 being non empty set st b1 <> {{} } & {} in b1 holds
ex b2 being set st
( b2 in b1 & b2 <> {} )
proof end;

theorem Th35: :: HEYTING3:35
for b1 being Nat
for b2 being Element of (SubstPoset NAT ,{b1}) st {} in b2 holds
b2 = {{} }
proof end;

theorem Th36: :: HEYTING3:36
for b1 being Nat
for b2 being non empty Element of (SubstPoset NAT ,{b1}) st b2 <> {{} } holds
ex b3 being finite Function st
( b3 in b2 & b3 <> {} )
proof end;

theorem Th37: :: HEYTING3:37
for b1 being Nat
for b2 being non empty Element of (SubstPoset NAT ,{b1})
for b3 being Element of Fin (PFuncs NAT ,{b1}) st b2 <> {{} } & b2 = b3 holds
Involved b3 is non empty finite Subset of NAT
proof end;

theorem Th38: :: HEYTING3:38
for b1 being Nat
for b2 being Element of (SubstPoset NAT ,{b1})
for b3 being Element of Fin (PFuncs NAT ,{b1})
for b4 being non empty finite Subset of NAT st b4 = Involved b3 & b3 = b2 holds
for b5 being set st b5 in b2 holds
for b6 being Nat st b6 > (max b4) + 1 holds
not [b6,b1] in b5
proof end;

theorem Th39: :: HEYTING3:39
for b1 being Nat holds Top (SubstPoset NAT ,{b1}) = {{} }
proof end;

theorem Th40: :: HEYTING3:40
for b1 being Nat holds Bottom (SubstPoset NAT ,{b1}) = {}
proof end;

theorem Th41: :: HEYTING3:41
for b1 being Nat
for b2, b3 being Element of (SubstPoset NAT ,{b1}) st b2 <= b3 & b2 = {{} } holds
b3 = {{} }
proof end;

theorem Th42: :: HEYTING3:42
for b1 being Nat
for b2, b3 being Element of (SubstPoset NAT ,{b1}) st b2 <= b3 & b3 = {} holds
b2 = {}
proof end;

theorem Th43: :: HEYTING3:43
for b1 being Nat
for b2 being Element of (SubstPoset NAT ,{b1}) st PFDrt b1 is_>=_than b2 holds
b2 <> {{} }
proof end;

Lemma45: for b1 being Nat holds not SubstPoset NAT ,{b1} is complete
proof end;

registration
let c1 be Nat;
cluster SubstPoset NAT ,{a1} -> reflexive transitive antisymmetric with_suprema with_infima non complete ;
coherence
not SubstPoset NAT ,{c1} is complete
by Lemma45;
end;

registration
let c1 be Nat;
cluster SubstLatt NAT ,{a1} -> non complete ;
coherence
not SubstLatt NAT ,{c1} is complete
proof end;
end;