:: HILBERT3 semantic presentation

theorem Th1: :: HILBERT3:1
for b1 being Integer holds
( b1 is even iff not b1 - 1 is even )
proof end;

theorem Th2: :: HILBERT3:2
for b1 being Integer holds
( not b1 is even iff b1 - 1 is even )
proof end;

theorem Th3: :: HILBERT3:3
for b1 being trivial set
for b2 being set st b2 in b1 holds
for b3 being Function of b1,b1 holds b2 is_a_fixpoint_of b3
proof end;

registration
let c1, c2, c3 be set ;
cluster -> Function-yielding M5(a1, Funcs a2,a3);
coherence
for b1 being Function of c1, Funcs c2,c3 holds b1 is Function-yielding
proof end;
end;

theorem Th4: :: HILBERT3:4
for b1 being Function-yielding Function holds SubFuncs (rng b1) = rng b1
proof end;

theorem Th5: :: HILBERT3:5
for b1, b2, b3 being set
for b4 being Function st b3 in b1 & b4 in Funcs b1,b2 holds
b4 . b3 in b2
proof end;

theorem Th6: :: HILBERT3:6
for b1, b2, b3 being set st ( not b3 = {} or b2 = {} or b1 = {} ) holds
for b4 being Function of b1, Funcs b2,b3 holds doms b4 = b1 --> b2
proof end;

registration
cluster {} -> Function-yielding ;
coherence
{} is Function-yielding
proof end;
end;

theorem Th7: :: HILBERT3:7
for b1 being set holds {} . b1 = {}
proof end;

registration
let c1 be set ;
let c2 be functional set ;
cluster -> Function-yielding M5(a1,a2);
coherence
for b1 being Function of c1,c2 holds b1 is Function-yielding
proof end;
end;

theorem Th8: :: HILBERT3:8
for b1 being set
for b2 being Subset of b1 holds (0,1 --> 1,0) * (chi b2,b1) = chi (b2 ` ),b1
proof end;

theorem Th9: :: HILBERT3:9
for b1 being set
for b2 being Subset of b1 holds (0,1 --> 1,0) * (chi (b2 ` ),b1) = chi b2,b1
proof end;

theorem Th10: :: HILBERT3:10
for b1, b2, b3, b4, b5, b6 being set st b1 <> b2 & b1,b2 --> b3,b4 = b1,b2 --> b5,b6 holds
( b3 = b5 & b4 = b6 )
proof end;

theorem Th11: :: HILBERT3:11
for b1, b2, b3, b4, b5, b6 being set st b1 <> b2 & b3 in b5 & b4 in b6 holds
b1,b2 --> b3,b4 in product (b1,b2 --> b5,b6)
proof end;

theorem Th12: :: HILBERT3:12
for b1 being non empty set
for b2 being Function of 2,b1 ex b3, b4 being Element of b1 st b2 = 0,1 --> b3,b4
proof end;

theorem Th13: :: HILBERT3:13
for b1, b2, b3, b4 being set st b1 <> b2 holds
(b1,b2 --> b3,b4) * (b1,b2 --> b2,b1) = b1,b2 --> b4,b3
proof end;

theorem Th14: :: HILBERT3:14
for b1, b2, b3, b4 being set
for b5 being Function st b1 <> b2 & b3 in dom b5 & b4 in dom b5 holds
b5 * (b1,b2 --> b3,b4) = b1,b2 --> (b5 . b3),(b5 . b4)
proof end;

registration
let c1, c2 be one-to-one Function;
cluster [:a1,a2:] -> one-to-one ;
coherence
[:c1,c2:] is one-to-one
proof end;
end;

theorem Th15: :: HILBERT3:15
for b1, b2 being non empty set
for b3, b4 being set
for b5 being Function of b3,b1
for b6 being Function of b4,b2 holds (pr1 b1,b2) * [:b5,b6:] = b5 * (pr1 b3,b4)
proof end;

theorem Th16: :: HILBERT3:16
for b1, b2 being non empty set
for b3, b4 being set
for b5 being Function of b3,b1
for b6 being Function of b4,b2 holds (pr2 b1,b2) * [:b5,b6:] = b6 * (pr2 b3,b4)
proof end;

theorem Th17: :: HILBERT3:17
for b1 being Function holds {} .. b1 = {}
proof end;

theorem Th18: :: HILBERT3:18
for b1 being Function-yielding Function
for b2, b3 being Function holds (b1 .. b2) * b3 = (b1 * b3) .. (b2 * b3)
proof end;

theorem Th19: :: HILBERT3:19
for b1 being set
for b2 being non empty set
for b3 being Function of b2, Funcs {} ,b1
for b4 being Function of b2, {} holds rng (b3 .. b4) = {{} }
proof end;

theorem Th20: :: HILBERT3:20
for b1, b2, b3 being set st ( b2 = {} implies b1 = {} ) holds
for b4 being Function of b1, Funcs b2,b3
for b5 being Function of b1,b2 holds rng (b4 .. b5) c= b3
proof end;

theorem Th21: :: HILBERT3:21
for b1, b2, b3 being set st ( not b3 = {} or b2 = {} or b1 = {} ) holds
for b4 being Function of b1, Funcs b2,b3 holds dom (Frege b4) = Funcs b1,b2
proof end;

theorem Th22: :: HILBERT3:22
canceled;

theorem Th23: :: HILBERT3:23
for b1, b2, b3 being set st ( not b3 = {} or b2 = {} or b1 = {} ) holds
for b4 being Function of b1, Funcs b2,b3 holds rng (Frege b4) c= Funcs b1,b3
proof end;

theorem Th24: :: HILBERT3:24
for b1, b2, b3 being set st ( not b3 = {} or b2 = {} or b1 = {} ) holds
for b4 being Function of b1, Funcs b2,b3 holds Frege b4 is Function of Funcs b1,b2, Funcs b1,b3
proof end;

theorem Th25: :: HILBERT3:25
for b1, b2 being set
for b3 being Permutation of b1
for b4 being Permutation of b2 holds [:b3,b4:] is bijective
proof end;

definition
let c1, c2 be non empty set ;
let c3 be Permutation of c1;
let c4 be Function of c2,c2;
func c3 => c4 -> Function of Funcs a1,a2, Funcs a1,a2 means :Def1: :: HILBERT3:def 1
for b1 being Function of a1,a2 holds a5 . b1 = (a4 * b1) * (a3 " );
existence
ex b1 being Function of Funcs c1,c2, Funcs c1,c2 st
for b2 being Function of c1,c2 holds b1 . b2 = (c4 * b2) * (c3 " )
proof end;
uniqueness
for b1, b2 being Function of Funcs c1,c2, Funcs c1,c2 st ( for b3 being Function of c1,c2 holds b1 . b3 = (c4 * b3) * (c3 " ) ) & ( for b3 being Function of c1,c2 holds b2 . b3 = (c4 * b3) * (c3 " ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def1 defines => HILBERT3:def 1 :
for b1, b2 being non empty set
for b3 being Permutation of b1
for b4 being Function of b2,b2
for b5 being Function of Funcs b1,b2, Funcs b1,b2 holds
( b5 = b3 => b4 iff for b6 being Function of b1,b2 holds b5 . b6 = (b4 * b6) * (b3 " ) );

registration
let c1, c2 be non empty set ;
let c3 be Permutation of c1;
let c4 be Permutation of c2;
cluster a3 => a4 -> bijective Function-yielding ;
coherence
c3 => c4 is bijective
proof end;
end;

theorem Th26: :: HILBERT3:26
for b1, b2 being non empty set
for b3 being Permutation of b1
for b4 being Permutation of b2
for b5 being Function of b1,b2 holds ((b3 => b4) " ) . b5 = ((b4 " ) * b5) * b3
proof end;

theorem Th27: :: HILBERT3:27
for b1, b2 being non empty set
for b3 being Permutation of b1
for b4 being Permutation of b2 holds (b3 => b4) " = (b3 " ) => (b4 " )
proof end;

theorem Th28: :: HILBERT3:28
for b1, b2, b3 being non empty set
for b4 being Function of b1, Funcs b2,b3
for b5 being Function of b1,b2
for b6 being Permutation of b2
for b7 being Permutation of b3 holds ((b6 => b7) * b4) .. (b6 * b5) = b7 * (b4 .. b5)
proof end;

definition
mode SetValuation is V3 ManySortedSet of NAT ;
end;

definition
let c1 be SetValuation;
func SetVal c1 -> ManySortedSet of HP-WFF means :Def2: :: HILBERT3:def 2
( a2 . VERUM = 1 & ( for b1 being Nat holds a2 . (prop b1) = a1 . b1 ) & ( for b1, b2 being Element of HP-WFF holds
( a2 . (b1 '&' b2) = [:(a2 . b1),(a2 . b2):] & a2 . (b1 => b2) = Funcs (a2 . b1),(a2 . b2) ) ) );
existence
ex b1 being ManySortedSet of HP-WFF st
( b1 . VERUM = 1 & ( for b2 being Nat holds b1 . (prop b2) = c1 . b2 ) & ( for b2, b3 being Element of HP-WFF holds
( b1 . (b2 '&' b3) = [:(b1 . b2),(b1 . b3):] & b1 . (b2 => b3) = Funcs (b1 . b2),(b1 . b3) ) ) )
proof end;
uniqueness
for b1, b2 being ManySortedSet of HP-WFF st b1 . VERUM = 1 & ( for b3 being Nat holds b1 . (prop b3) = c1 . b3 ) & ( for b3, b4 being Element of HP-WFF holds
( b1 . (b3 '&' b4) = [:(b1 . b3),(b1 . b4):] & b1 . (b3 => b4) = Funcs (b1 . b3),(b1 . b4) ) ) & b2 . VERUM = 1 & ( for b3 being Nat holds b2 . (prop b3) = c1 . b3 ) & ( for b3, b4 being Element of HP-WFF holds
( b2 . (b3 '&' b4) = [:(b2 . b3),(b2 . b4):] & b2 . (b3 => b4) = Funcs (b2 . b3),(b2 . b4) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def2 defines SetVal HILBERT3:def 2 :
for b1 being SetValuation
for b2 being ManySortedSet of HP-WFF holds
( b2 = SetVal b1 iff ( b2 . VERUM = 1 & ( for b3 being Nat holds b2 . (prop b3) = b1 . b3 ) & ( for b3, b4 being Element of HP-WFF holds
( b2 . (b3 '&' b4) = [:(b2 . b3),(b2 . b4):] & b2 . (b3 => b4) = Funcs (b2 . b3),(b2 . b4) ) ) ) );

definition
let c1 be SetValuation;
let c2 be Element of HP-WFF ;
func SetVal c1,c2 -> set equals :: HILBERT3:def 3
(SetVal a1) . a2;
correctness
coherence
(SetVal c1) . c2 is set
;
;
end;

:: deftheorem Def3 defines SetVal HILBERT3:def 3 :
for b1 being SetValuation
for b2 being Element of HP-WFF holds SetVal b1,b2 = (SetVal b1) . b2;

registration
let c1 be SetValuation;
let c2 be Element of HP-WFF ;
cluster SetVal a1,a2 -> non empty ;
coherence
not SetVal c1,c2 is empty
proof end;
end;

theorem Th29: :: HILBERT3:29
for b1 being SetValuation holds SetVal b1,VERUM = 1 by Def2;

theorem Th30: :: HILBERT3:30
for b1 being Nat
for b2 being SetValuation holds SetVal b2,(prop b1) = b2 . b1 by Def2;

theorem Th31: :: HILBERT3:31
for b1, b2 being Element of HP-WFF
for b3 being SetValuation holds SetVal b3,(b1 '&' b2) = [:(SetVal b3,b1),(SetVal b3,b2):] by Def2;

theorem Th32: :: HILBERT3:32
for b1, b2 being Element of HP-WFF
for b3 being SetValuation holds SetVal b3,(b1 => b2) = Funcs (SetVal b3,b1),(SetVal b3,b2) by Def2;

registration
let c1 be SetValuation;
let c2, c3 be Element of HP-WFF ;
cluster SetVal a1,(a2 => a3) -> non empty functional ;
coherence
SetVal c1,(c2 => c3) is functional
proof end;
end;

registration
let c1 be SetValuation;
let c2, c3, c4 be Element of HP-WFF ;
cluster -> Function-yielding Element of SetVal a1,(a2 => (a3 => a4));
coherence
for b1 being Element of SetVal c1,(c2 => (c3 => c4)) holds b1 is Function-yielding
proof end;
end;

registration
let c1 be SetValuation;
let c2, c3, c4 be Element of HP-WFF ;
cluster Function-yielding M5( SetVal a1,(a2 => a3), SetVal a1,(a2 => a4));
existence
ex b1 being Function of SetVal c1,(c2 => c3), SetVal c1,(c2 => c4) st b1 is Function-yielding
proof end;
cluster Function-yielding Element of SetVal a1,(a2 => (a3 => a4));
existence
ex b1 being Element of SetVal c1,(c2 => (c3 => c4)) st b1 is Function-yielding
proof end;
end;

definition
let c1 be SetValuation;
mode Permutation of c1 -> Function means :Def4: :: HILBERT3:def 4
( dom a2 = NAT & ( for b1 being Nat holds a2 . b1 is Permutation of a1 . b1 ) );
existence
ex b1 being Function st
( dom b1 = NAT & ( for b2 being Nat holds b1 . b2 is Permutation of c1 . b2 ) )
proof end;
end;

:: deftheorem Def4 defines Permutation HILBERT3:def 4 :
for b1 being SetValuation
for b2 being Function holds
( b2 is Permutation of b1 iff ( dom b2 = NAT & ( for b3 being Nat holds b2 . b3 is Permutation of b1 . b3 ) ) );

definition
let c1 be SetValuation;
let c2 be Permutation of c1;
func Perm c2 -> ManySortedFunction of SetVal a1, SetVal a1 means :Def5: :: HILBERT3:def 5
( a3 . VERUM = id 1 & ( for b1 being Nat holds a3 . (prop b1) = a2 . b1 ) & ( for b1, b2 being Element of HP-WFF ex b3 being Permutation of SetVal a1,b1ex b4 being Permutation of SetVal a1,b2 st
( b3 = a3 . b1 & b4 = a3 . b2 & a3 . (b1 '&' b2) = [:b3,b4:] & a3 . (b1 => b2) = b3 => b4 ) ) );
existence
ex b1 being ManySortedFunction of SetVal c1, SetVal c1 st
( b1 . VERUM = id 1 & ( for b2 being Nat holds b1 . (prop b2) = c2 . b2 ) & ( for b2, b3 being Element of HP-WFF ex b4 being Permutation of SetVal c1,b2ex b5 being Permutation of SetVal c1,b3 st
( b4 = b1 . b2 & b5 = b1 . b3 & b1 . (b2 '&' b3) = [:b4,b5:] & b1 . (b2 => b3) = b4 => b5 ) ) )
proof end;
uniqueness
for b1, b2 being ManySortedFunction of SetVal c1, SetVal c1 st b1 . VERUM = id 1 & ( for b3 being Nat holds b1 . (prop b3) = c2 . b3 ) & ( for b3, b4 being Element of HP-WFF ex b5 being Permutation of SetVal c1,b3ex b6 being Permutation of SetVal c1,b4 st
( b5 = b1 . b3 & b6 = b1 . b4 & b1 . (b3 '&' b4) = [:b5,b6:] & b1 . (b3 => b4) = b5 => b6 ) ) & b2 . VERUM = id 1 & ( for b3 being Nat holds b2 . (prop b3) = c2 . b3 ) & ( for b3, b4 being Element of HP-WFF ex b5 being Permutation of SetVal c1,b3ex b6 being Permutation of SetVal c1,b4 st
( b5 = b2 . b3 & b6 = b2 . b4 & b2 . (b3 '&' b4) = [:b5,b6:] & b2 . (b3 => b4) = b5 => b6 ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def5 defines Perm HILBERT3:def 5 :
for b1 being SetValuation
for b2 being Permutation of b1
for b3 being ManySortedFunction of SetVal b1, SetVal b1 holds
( b3 = Perm b2 iff ( b3 . VERUM = id 1 & ( for b4 being Nat holds b3 . (prop b4) = b2 . b4 ) & ( for b4, b5 being Element of HP-WFF ex b6 being Permutation of SetVal b1,b4ex b7 being Permutation of SetVal b1,b5 st
( b6 = b3 . b4 & b7 = b3 . b5 & b3 . (b4 '&' b5) = [:b6,b7:] & b3 . (b4 => b5) = b6 => b7 ) ) ) );

definition
let c1 be SetValuation;
let c2 be Permutation of c1;
let c3 be Element of HP-WFF ;
func Perm c2,c3 -> Function of SetVal a1,a3, SetVal a1,a3 equals :: HILBERT3:def 6
(Perm a2) . a3;
correctness
coherence
(Perm c2) . c3 is Function of SetVal c1,c3, SetVal c1,c3
;
;
end;

:: deftheorem Def6 defines Perm HILBERT3:def 6 :
for b1 being SetValuation
for b2 being Permutation of b1
for b3 being Element of HP-WFF holds Perm b2,b3 = (Perm b2) . b3;

theorem Th33: :: HILBERT3:33
for b1 being SetValuation
for b2 being Permutation of b1 holds Perm b2,VERUM = id (SetVal b1,VERUM )
proof end;

theorem Th34: :: HILBERT3:34
for b1 being Nat
for b2 being SetValuation
for b3 being Permutation of b2 holds Perm b3,(prop b1) = b3 . b1 by Def5;

theorem Th35: :: HILBERT3:35
for b1, b2 being Element of HP-WFF
for b3 being SetValuation
for b4 being Permutation of b3 holds Perm b4,(b1 '&' b2) = [:(Perm b4,b1),(Perm b4,b2):]
proof end;

theorem Th36: :: HILBERT3:36
for b1, b2 being Element of HP-WFF
for b3 being SetValuation
for b4 being Permutation of b3
for b5 being Permutation of SetVal b3,b1
for b6 being Permutation of SetVal b3,b2 st b5 = Perm b4,b1 & b6 = Perm b4,b2 holds
Perm b4,(b1 => b2) = b5 => b6
proof end;

registration
let c1 be SetValuation;
let c2 be Permutation of c1;
let c3 be Element of HP-WFF ;
cluster Perm a2,a3 -> bijective ;
coherence
Perm c2,c3 is bijective
proof end;
end;

theorem Th37: :: HILBERT3:37
for b1, b2 being Element of HP-WFF
for b3 being SetValuation
for b4 being Permutation of b3
for b5 being Function of SetVal b3,b1, SetVal b3,b2 holds (Perm b4,(b1 => b2)) . b5 = ((Perm b4,b2) * b5) * ((Perm b4,b1) " )
proof end;

theorem Th38: :: HILBERT3:38
for b1, b2 being Element of HP-WFF
for b3 being SetValuation
for b4 being Permutation of b3
for b5 being Function of SetVal b3,b1, SetVal b3,b2 holds ((Perm b4,(b1 => b2)) " ) . b5 = (((Perm b4,b2) " ) * b5) * (Perm b4,b1)
proof end;

theorem Th39: :: HILBERT3:39
for b1, b2 being Element of HP-WFF
for b3 being SetValuation
for b4 being Permutation of b3
for b5, b6 being Function of SetVal b3,b1, SetVal b3,b2 st b5 = (Perm b4,(b1 => b2)) . b6 holds
(Perm b4,b2) * b6 = b5 * (Perm b4,b1)
proof end;

theorem Th40: :: HILBERT3:40
for b1, b2 being Element of HP-WFF
for b3 being SetValuation
for b4 being Permutation of b3
for b5 being set st b5 is_a_fixpoint_of Perm b4,b1 holds
for b6 being Function st b6 is_a_fixpoint_of Perm b4,(b1 => b2) holds
b6 . b5 is_a_fixpoint_of Perm b4,b2
proof end;

definition
let c1 be Element of HP-WFF ;
attr a1 is canonical means :Def7: :: HILBERT3:def 7
for b1 being SetValuation ex b2 being set st
for b3 being Permutation of b1 holds b2 is_a_fixpoint_of Perm b3,a1;
end;

:: deftheorem Def7 defines canonical HILBERT3:def 7 :
for b1 being Element of HP-WFF holds
( b1 is canonical iff for b2 being SetValuation ex b3 being set st
for b4 being Permutation of b2 holds b3 is_a_fixpoint_of Perm b4,b1 );

registration
cluster VERUM -> canonical ;
coherence
VERUM is canonical
proof end;
end;

theorem Th41: :: HILBERT3:41
for b1, b2 being Element of HP-WFF holds b1 => (b2 => b1) is canonical
proof end;

theorem Th42: :: HILBERT3:42
for b1, b2, b3 being Element of HP-WFF holds (b1 => (b2 => b3)) => ((b1 => b2) => (b1 => b3)) is canonical
proof end;

theorem Th43: :: HILBERT3:43
for b1, b2 being Element of HP-WFF holds (b1 '&' b2) => b1 is canonical
proof end;

theorem Th44: :: HILBERT3:44
for b1, b2 being Element of HP-WFF holds (b1 '&' b2) => b2 is canonical
proof end;

theorem Th45: :: HILBERT3:45
for b1, b2 being Element of HP-WFF holds b1 => (b2 => (b1 '&' b2)) is canonical
proof end;

theorem Th46: :: HILBERT3:46
for b1, b2 being Element of HP-WFF st b1 is canonical & b1 => b2 is canonical holds
b2 is canonical
proof end;

theorem Th47: :: HILBERT3:47
for b1 being Element of HP-WFF st b1 in HP_TAUT holds
b1 is canonical
proof end;

registration
cluster canonical Element of HP-WFF ;
existence
ex b1 being Element of HP-WFF st b1 is canonical
proof end;
end;

definition
let c1 be Element of HP-WFF ;
attr a1 is pseudo-canonical means :Def8: :: HILBERT3:def 8
for b1 being SetValuation
for b2 being Permutation of b1 ex b3 being set st b3 is_a_fixpoint_of Perm b2,a1;
end;

:: deftheorem Def8 defines pseudo-canonical HILBERT3:def 8 :
for b1 being Element of HP-WFF holds
( b1 is pseudo-canonical iff for b2 being SetValuation
for b3 being Permutation of b2 ex b4 being set st b4 is_a_fixpoint_of Perm b3,b1 );

registration
cluster canonical -> pseudo-canonical Element of HP-WFF ;
coherence
for b1 being Element of HP-WFF st b1 is canonical holds
b1 is pseudo-canonical
proof end;
end;

theorem Th48: :: HILBERT3:48
for b1, b2 being Element of HP-WFF holds b1 => (b2 => b1) is pseudo-canonical
proof end;

theorem Th49: :: HILBERT3:49
for b1, b2, b3 being Element of HP-WFF holds (b1 => (b2 => b3)) => ((b1 => b2) => (b1 => b3)) is pseudo-canonical
proof end;

theorem Th50: :: HILBERT3:50
for b1, b2 being Element of HP-WFF holds (b1 '&' b2) => b1 is pseudo-canonical
proof end;

theorem Th51: :: HILBERT3:51
for b1, b2 being Element of HP-WFF holds (b1 '&' b2) => b2 is pseudo-canonical
proof end;

theorem Th52: :: HILBERT3:52
for b1, b2 being Element of HP-WFF holds b1 => (b2 => (b1 '&' b2)) is pseudo-canonical
proof end;

theorem Th53: :: HILBERT3:53
for b1, b2 being Element of HP-WFF st b1 is pseudo-canonical & b1 => b2 is pseudo-canonical holds
b2 is pseudo-canonical
proof end;

theorem Th54: :: HILBERT3:54
for b1, b2 being Element of HP-WFF
for b3 being SetValuation
for b4 being Permutation of b3 st ex b5 being set st b5 is_a_fixpoint_of Perm b4,b1 & ( for b5 being set holds not b5 is_a_fixpoint_of Perm b4,b2 ) holds
not b1 => b2 is pseudo-canonical
proof end;

theorem Th55: :: HILBERT3:55
not (((prop 0) => (prop 1)) => (prop 0)) => (prop 0) is pseudo-canonical
proof end;