:: NORMFORM semantic presentation

definition
let c1, c2 be non empty preBoolean set ;
let c3, c4 be Element of [:c1,c2:];
pred c3 c= c4 means :: NORMFORM:def 1
( a3 `1 c= a4 `1 & a3 `2 c= a4 `2 );
reflexivity
for b1 being Element of [:c1,c2:] holds
( b1 `1 c= b1 `1 & b1 `2 c= b1 `2 )
;
func c3 \/ c4 -> Element of [:a1,a2:] equals :: NORMFORM:def 2
[((a3 `1 ) \/ (a4 `1 )),((a3 `2 ) \/ (a4 `2 ))];
correctness
coherence
[((c3 `1 ) \/ (c4 `1 )),((c3 `2 ) \/ (c4 `2 ))] is Element of [:c1,c2:]
;
;
commutativity
for b1, b2, b3 being Element of [:c1,c2:] st b1 = [((b2 `1 ) \/ (b3 `1 )),((b2 `2 ) \/ (b3 `2 ))] holds
b1 = [((b3 `1 ) \/ (b2 `1 )),((b3 `2 ) \/ (b2 `2 ))]
;
idempotence
for b1 being Element of [:c1,c2:] holds b1 = [((b1 `1 ) \/ (b1 `1 )),((b1 `2 ) \/ (b1 `2 ))]
by MCART_1:23;
func c3 /\ c4 -> Element of [:a1,a2:] equals :: NORMFORM:def 3
[((a3 `1 ) /\ (a4 `1 )),((a3 `2 ) /\ (a4 `2 ))];
correctness
coherence
[((c3 `1 ) /\ (c4 `1 )),((c3 `2 ) /\ (c4 `2 ))] is Element of [:c1,c2:]
;
;
commutativity
for b1, b2, b3 being Element of [:c1,c2:] st b1 = [((b2 `1 ) /\ (b3 `1 )),((b2 `2 ) /\ (b3 `2 ))] holds
b1 = [((b3 `1 ) /\ (b2 `1 )),((b3 `2 ) /\ (b2 `2 ))]
;
idempotence
for b1 being Element of [:c1,c2:] holds b1 = [((b1 `1 ) /\ (b1 `1 )),((b1 `2 ) /\ (b1 `2 ))]
by MCART_1:23;
func c3 \ c4 -> Element of [:a1,a2:] equals :: NORMFORM:def 4
[((a3 `1 ) \ (a4 `1 )),((a3 `2 ) \ (a4 `2 ))];
correctness
coherence
[((c3 `1 ) \ (c4 `1 )),((c3 `2 ) \ (c4 `2 ))] is Element of [:c1,c2:]
;
;
func c3 \+\ c4 -> Element of [:a1,a2:] equals :: NORMFORM:def 5
[((a3 `1 ) \+\ (a4 `1 )),((a3 `2 ) \+\ (a4 `2 ))];
correctness
coherence
[((c3 `1 ) \+\ (c4 `1 )),((c3 `2 ) \+\ (c4 `2 ))] is Element of [:c1,c2:]
;
;
commutativity
for b1, b2, b3 being Element of [:c1,c2:] st b1 = [((b2 `1 ) \+\ (b3 `1 )),((b2 `2 ) \+\ (b3 `2 ))] holds
b1 = [((b3 `1 ) \+\ (b2 `1 )),((b3 `2 ) \+\ (b2 `2 ))]
;
end;

:: deftheorem Def1 defines c= NORMFORM:def 1 :
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] holds
( b3 c= b4 iff ( b3 `1 c= b4 `1 & b3 `2 c= b4 `2 ) );

:: deftheorem Def2 defines \/ NORMFORM:def 2 :
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] holds b3 \/ b4 = [((b3 `1 ) \/ (b4 `1 )),((b3 `2 ) \/ (b4 `2 ))];

:: deftheorem Def3 defines /\ NORMFORM:def 3 :
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] holds b3 /\ b4 = [((b3 `1 ) /\ (b4 `1 )),((b3 `2 ) /\ (b4 `2 ))];

:: deftheorem Def4 defines \ NORMFORM:def 4 :
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] holds b3 \ b4 = [((b3 `1 ) \ (b4 `1 )),((b3 `2 ) \ (b4 `2 ))];

:: deftheorem Def5 defines \+\ NORMFORM:def 5 :
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] holds b3 \+\ b4 = [((b3 `1 ) \+\ (b4 `1 )),((b3 `2 ) \+\ (b4 `2 ))];

theorem Th1: :: NORMFORM:1
canceled;

theorem Th2: :: NORMFORM:2
canceled;

theorem Th3: :: NORMFORM:3
canceled;

theorem Th4: :: NORMFORM:4
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] st b3 c= b4 & b4 c= b3 holds
b3 = b4
proof end;

theorem Th5: :: NORMFORM:5
for b1, b2 being non empty preBoolean set
for b3, b4, b5 being Element of [:b1,b2:] st b3 c= b4 & b4 c= b5 holds
b3 c= b5
proof end;

theorem Th6: :: NORMFORM:6
canceled;

theorem Th7: :: NORMFORM:7
canceled;

theorem Th8: :: NORMFORM:8
canceled;

theorem Th9: :: NORMFORM:9
canceled;

theorem Th10: :: NORMFORM:10
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] holds
( (b3 \/ b4) `1 = (b3 `1 ) \/ (b4 `1 ) & (b3 \/ b4) `2 = (b3 `2 ) \/ (b4 `2 ) ) by MCART_1:7;

theorem Th11: :: NORMFORM:11
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] holds
( (b3 /\ b4) `1 = (b3 `1 ) /\ (b4 `1 ) & (b3 /\ b4) `2 = (b3 `2 ) /\ (b4 `2 ) ) by MCART_1:7;

theorem Th12: :: NORMFORM:12
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] holds
( (b3 \ b4) `1 = (b3 `1 ) \ (b4 `1 ) & (b3 \ b4) `2 = (b3 `2 ) \ (b4 `2 ) ) by MCART_1:7;

theorem Th13: :: NORMFORM:13
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] holds
( (b3 \+\ b4) `1 = (b3 `1 ) \+\ (b4 `1 ) & (b3 \+\ b4) `2 = (b3 `2 ) \+\ (b4 `2 ) ) by MCART_1:7;

theorem Th14: :: NORMFORM:14
canceled;

theorem Th15: :: NORMFORM:15
canceled;

theorem Th16: :: NORMFORM:16
for b1, b2 being non empty preBoolean set
for b3, b4, b5 being Element of [:b1,b2:] holds (b3 \/ b4) \/ b5 = b3 \/ (b4 \/ b5)
proof end;

theorem Th17: :: NORMFORM:17
canceled;

theorem Th18: :: NORMFORM:18
canceled;

theorem Th19: :: NORMFORM:19
for b1, b2 being non empty preBoolean set
for b3, b4, b5 being Element of [:b1,b2:] holds (b3 /\ b4) /\ b5 = b3 /\ (b4 /\ b5)
proof end;

theorem Th20: :: NORMFORM:20
for b1, b2 being non empty preBoolean set
for b3, b4, b5 being Element of [:b1,b2:] holds b3 /\ (b4 \/ b5) = (b3 /\ b4) \/ (b3 /\ b5)
proof end;

theorem Th21: :: NORMFORM:21
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] holds b3 \/ (b4 /\ b3) = b3
proof end;

theorem Th22: :: NORMFORM:22
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] holds b3 /\ (b4 \/ b3) = b3
proof end;

theorem Th23: :: NORMFORM:23
canceled;

theorem Th24: :: NORMFORM:24
for b1, b2 being non empty preBoolean set
for b3, b4, b5 being Element of [:b1,b2:] holds b3 \/ (b4 /\ b5) = (b3 \/ b4) /\ (b3 \/ b5)
proof end;

theorem Th25: :: NORMFORM:25
for b1, b2 being non empty preBoolean set
for b3, b4, b5 being Element of [:b1,b2:] st b3 c= b4 & b5 c= b4 holds
b3 \/ b5 c= b4
proof end;

theorem Th26: :: NORMFORM:26
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] holds
( b3 c= b3 \/ b4 & b4 c= b3 \/ b4 )
proof end;

theorem Th27: :: NORMFORM:27
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] st b3 = b3 \/ b4 holds
b4 c= b3 by Th26;

theorem Th28: :: NORMFORM:28
for b1, b2 being non empty preBoolean set
for b3, b4, b5 being Element of [:b1,b2:] st b3 c= b4 holds
( b5 \/ b3 c= b5 \/ b4 & b3 \/ b5 c= b4 \/ b5 )
proof end;

theorem Th29: :: NORMFORM:29
for b1, b2 being non empty preBoolean set
for b3, b4 being Element of [:b1,b2:] holds (b3 \ b4) \/ b4 = b3 \/ b4
proof end;

theorem Th30: :: NORMFORM:30
for b1, b2 being non empty preBoolean set
for b3, b4, b5 being Element of [:b1,b2:] st b3 \ b4 c= b5 holds
b3 c= b4 \/ b5
proof end;

theorem Th31: :: NORMFORM:31
for b1, b2 being non empty preBoolean set
for b3, b4, b5 being Element of [:b1,b2:] st b3 c= b4 \/ b5 holds
b3 \ b5 c= b4
proof end;

definition
let c1 be set ;
func FinPairUnion c1 -> BinOp of [:(Fin a1),(Fin a1):] means :Def6: :: NORMFORM:def 6
for b1, b2 being Element of [:(Fin a1),(Fin a1):] holds a2 . b1,b2 = b1 \/ b2;
existence
ex b1 being BinOp of [:(Fin c1),(Fin c1):] st
for b2, b3 being Element of [:(Fin c1),(Fin c1):] holds b1 . b2,b3 = b2 \/ b3
proof end;
uniqueness
for b1, b2 being BinOp of [:(Fin c1),(Fin c1):] st ( for b3, b4 being Element of [:(Fin c1),(Fin c1):] holds b1 . b3,b4 = b3 \/ b4 ) & ( for b3, b4 being Element of [:(Fin c1),(Fin c1):] holds b2 . b3,b4 = b3 \/ b4 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def6 defines FinPairUnion NORMFORM:def 6 :
for b1 being set
for b2 being BinOp of [:(Fin b1),(Fin b1):] holds
( b2 = FinPairUnion b1 iff for b3, b4 being Element of [:(Fin b1),(Fin b1):] holds b2 . b3,b4 = b3 \/ b4 );

definition
let c1 be non empty set ;
let c2 be set ;
let c3 be Element of Fin c1;
let c4 be Function of c1,[:(Fin c2),(Fin c2):];
func FinPairUnion c3,c4 -> Element of [:(Fin a2),(Fin a2):] equals :: NORMFORM:def 7
(FinPairUnion a2) $$ a3,a4;
correctness
coherence
(FinPairUnion c2) $$ c3,c4 is Element of [:(Fin c2),(Fin c2):]
;
;
end;

:: deftheorem Def7 defines FinPairUnion NORMFORM:def 7 :
for b1 being non empty set
for b2 being set
for b3 being Element of Fin b1
for b4 being Function of b1,[:(Fin b2),(Fin b2):] holds FinPairUnion b3,b4 = (FinPairUnion b2) $$ b3,b4;

Lemma14: for b1 being set holds FinPairUnion b1 is idempotent
proof end;

Lemma15: for b1 being set holds FinPairUnion b1 is commutative
proof end;

Lemma16: for b1 being set holds FinPairUnion b1 is associative
proof end;

registration
let c1 be set ;
cluster FinPairUnion a1 -> commutative associative idempotent ;
coherence
( FinPairUnion c1 is commutative & FinPairUnion c1 is idempotent & FinPairUnion c1 is associative )
by Lemma14, Lemma15, Lemma16;
end;

theorem Th32: :: NORMFORM:32
canceled;

theorem Th33: :: NORMFORM:33
canceled;

theorem Th34: :: NORMFORM:34
canceled;

theorem Th35: :: NORMFORM:35
for b1 being set
for b2 being non empty set
for b3 being Function of b2,[:(Fin b1),(Fin b1):]
for b4 being Element of Fin b2
for b5 being Element of b2 st b5 in b4 holds
b3 . b5 c= FinPairUnion b4,b3
proof end;

theorem Th36: :: NORMFORM:36
for b1 being set holds [({}. b1),({}. b1)] is_a_unity_wrt FinPairUnion b1
proof end;

theorem Th37: :: NORMFORM:37
for b1 being set holds FinPairUnion b1 has_a_unity
proof end;

theorem Th38: :: NORMFORM:38
for b1 being set holds the_unity_wrt (FinPairUnion b1) = [({}. b1),({}. b1)]
proof end;

theorem Th39: :: NORMFORM:39
for b1 being set
for b2 being Element of [:(Fin b1),(Fin b1):] holds the_unity_wrt (FinPairUnion b1) c= b2
proof end;

theorem Th40: :: NORMFORM:40
for b1 being set
for b2 being non empty set
for b3 being Function of b2,[:(Fin b1),(Fin b1):]
for b4 being Element of Fin b2
for b5 being Element of [:(Fin b1),(Fin b1):] st ( for b6 being Element of b2 st b6 in b4 holds
b3 . b6 c= b5 ) holds
FinPairUnion b4,b3 c= b5
proof end;

theorem Th41: :: NORMFORM:41
for b1 being set
for b2 being non empty set
for b3 being Element of Fin b2
for b4, b5 being Function of b2,[:(Fin b1),(Fin b1):] st b4 | b3 = b5 | b3 holds
FinPairUnion b3,b4 = FinPairUnion b3,b5
proof end;

definition
let c1 be set ;
func DISJOINT_PAIRS c1 -> Subset of [:(Fin a1),(Fin a1):] equals :: NORMFORM:def 8
{ b1 where B is Element of [:(Fin a1),(Fin a1):] : b1 `1 misses b1 `2 } ;
coherence
{ b1 where B is Element of [:(Fin c1),(Fin c1):] : b1 `1 misses b1 `2 } is Subset of [:(Fin c1),(Fin c1):]
proof end;
end;

:: deftheorem Def8 defines DISJOINT_PAIRS NORMFORM:def 8 :
for b1 being set holds DISJOINT_PAIRS b1 = { b2 where B is Element of [:(Fin b1),(Fin b1):] : b2 `1 misses b2 `2 } ;

registration
let c1 be set ;
cluster DISJOINT_PAIRS a1 -> non empty ;
coherence
not DISJOINT_PAIRS c1 is empty
proof end;
end;

theorem Th42: :: NORMFORM:42
for b1 being set
for b2 being Element of [:(Fin b1),(Fin b1):] holds
( b2 in DISJOINT_PAIRS b1 iff b2 `1 misses b2 `2 )
proof end;

theorem Th43: :: NORMFORM:43
for b1 being set
for b2, b3 being Element of [:(Fin b1),(Fin b1):] st b2 in DISJOINT_PAIRS b1 & b3 in DISJOINT_PAIRS b1 holds
( b2 \/ b3 in DISJOINT_PAIRS b1 iff ((b2 `1 ) /\ (b3 `2 )) \/ ((b3 `1 ) /\ (b2 `2 )) = {} )
proof end;

theorem Th44: :: NORMFORM:44
for b1 being set
for b2 being Element of DISJOINT_PAIRS b1 holds b2 `1 misses b2 `2 by Th42;

theorem Th45: :: NORMFORM:45
for b1 being set
for b2 being Element of [:(Fin b1),(Fin b1):]
for b3 being Element of DISJOINT_PAIRS b1 st b2 c= b3 holds
b2 is Element of DISJOINT_PAIRS b1
proof end;

theorem Th46: :: NORMFORM:46
for b1 being set
for b2 being Element of DISJOINT_PAIRS b1
for b3 being set holds
( not b3 in b2 `1 or not b3 in b2 `2 )
proof end;

theorem Th47: :: NORMFORM:47
for b1 being set
for b2, b3 being Element of DISJOINT_PAIRS b1 st not b2 \/ b3 in DISJOINT_PAIRS b1 holds
ex b4 being Element of b1 st
( ( b4 in b2 `1 & b4 in b3 `2 ) or ( b4 in b3 `1 & b4 in b2 `2 ) )
proof end;

theorem Th48: :: NORMFORM:48
canceled;

theorem Th49: :: NORMFORM:49
for b1 being set
for b2 being Element of [:(Fin b1),(Fin b1):] st b2 `1 misses b2 `2 holds
b2 is Element of DISJOINT_PAIRS b1 by Th42;

theorem Th50: :: NORMFORM:50
for b1 being set
for b2 being Element of DISJOINT_PAIRS b1
for b3, b4 being set st b3 c= b2 `1 & b4 c= b2 `2 holds
[b3,b4] is Element of DISJOINT_PAIRS b1
proof end;

Lemma24: for b1 being set holds {} in { b2 where B is Element of Fin (DISJOINT_PAIRS b1) : for b1, b2 being Element of DISJOINT_PAIRS b1 st b3 in b2 & b4 in b2 & b3 c= b4 holds
b3 = b4
}

proof end;

definition
let c1 be set ;
func Normal_forms_on c1 -> Subset of (Fin (DISJOINT_PAIRS a1)) equals :: NORMFORM:def 9
{ b1 where B is Element of Fin (DISJOINT_PAIRS a1) : for b1, b2 being Element of DISJOINT_PAIRS a1 st b2 in b1 & b3 in b1 & b2 c= b3 holds
b2 = b3
}
;
coherence
{ b1 where B is Element of Fin (DISJOINT_PAIRS c1) : for b1, b2 being Element of DISJOINT_PAIRS c1 st b2 in b1 & b3 in b1 & b2 c= b3 holds
b2 = b3
}
is Subset of (Fin (DISJOINT_PAIRS c1))
proof end;
end;

:: deftheorem Def9 defines Normal_forms_on NORMFORM:def 9 :
for b1 being set holds Normal_forms_on b1 = { b2 where B is Element of Fin (DISJOINT_PAIRS b1) : for b1, b2 being Element of DISJOINT_PAIRS b1 st b3 in b2 & b4 in b2 & b3 c= b4 holds
b3 = b4
}
;

registration
let c1 be set ;
cluster Normal_forms_on a1 -> non empty ;
coherence
not Normal_forms_on c1 is empty
by Lemma24;
end;

theorem Th51: :: NORMFORM:51
for b1 being set holds {} in Normal_forms_on b1 by Lemma24;

theorem Th52: :: NORMFORM:52
for b1 being set
for b2, b3 being Element of DISJOINT_PAIRS b1
for b4 being Element of Fin (DISJOINT_PAIRS b1) st b4 in Normal_forms_on b1 & b2 in b4 & b3 in b4 & b2 c= b3 holds
b2 = b3
proof end;

theorem Th53: :: NORMFORM:53
for b1 being set
for b2 being Element of Fin (DISJOINT_PAIRS b1) st ( for b3, b4 being Element of DISJOINT_PAIRS b1 st b3 in b2 & b4 in b2 & b3 c= b4 holds
b3 = b4 ) holds
b2 in Normal_forms_on b1 ;

definition
let c1 be set ;
let c2 be Element of Fin (DISJOINT_PAIRS c1);
func mi c2 -> Element of Normal_forms_on a1 equals :: NORMFORM:def 10
{ b1 where B is Element of DISJOINT_PAIRS a1 : for b1 being Element of DISJOINT_PAIRS a1 holds
( ( b2 in a2 & b2 c= b1 ) iff b2 = b1 )
}
;
coherence
{ b1 where B is Element of DISJOINT_PAIRS c1 : for b1 being Element of DISJOINT_PAIRS c1 holds
( ( b2 in c2 & b2 c= b1 ) iff b2 = b1 )
}
is Element of Normal_forms_on c1
proof end;
correctness
;
let c3 be Element of Fin (DISJOINT_PAIRS c1);
func c2 ^ c3 -> Element of Fin (DISJOINT_PAIRS a1) equals :: NORMFORM:def 11
(DISJOINT_PAIRS a1) /\ { (b1 \/ b2) where B is Element of DISJOINT_PAIRS a1, B is Element of DISJOINT_PAIRS a1 : ( b1 in a2 & b2 in a3 ) } ;
coherence
(DISJOINT_PAIRS c1) /\ { (b1 \/ b2) where B is Element of DISJOINT_PAIRS c1, B is Element of DISJOINT_PAIRS c1 : ( b1 in c2 & b2 in c3 ) } is Element of Fin (DISJOINT_PAIRS c1)
proof end;
correctness
;
end;

:: deftheorem Def10 defines mi NORMFORM:def 10 :
for b1 being set
for b2 being Element of Fin (DISJOINT_PAIRS b1) holds mi b2 = { b3 where B is Element of DISJOINT_PAIRS b1 : for b1 being Element of DISJOINT_PAIRS b1 holds
( ( b4 in b2 & b4 c= b3 ) iff b4 = b3 )
}
;

:: deftheorem Def11 defines ^ NORMFORM:def 11 :
for b1 being set
for b2, b3 being Element of Fin (DISJOINT_PAIRS b1) holds b2 ^ b3 = (DISJOINT_PAIRS b1) /\ { (b4 \/ b5) where B is Element of DISJOINT_PAIRS b1, B is Element of DISJOINT_PAIRS b1 : ( b4 in b2 & b5 in b3 ) } ;

theorem Th54: :: NORMFORM:54
canceled;

theorem Th55: :: NORMFORM:55
for b1 being set
for b2 being Element of [:(Fin b1),(Fin b1):]
for b3, b4 being Element of Fin (DISJOINT_PAIRS b1) st b2 in b3 ^ b4 holds
ex b5, b6 being Element of DISJOINT_PAIRS b1 st
( b5 in b3 & b6 in b4 & b2 = b5 \/ b6 )
proof end;

theorem Th56: :: NORMFORM:56
for b1 being set
for b2, b3 being Element of DISJOINT_PAIRS b1
for b4, b5 being Element of Fin (DISJOINT_PAIRS b1) st b2 in b4 & b3 in b5 & b2 \/ b3 in DISJOINT_PAIRS b1 holds
b2 \/ b3 in b4 ^ b5
proof end;

theorem Th57: :: NORMFORM:57
canceled;

theorem Th58: :: NORMFORM:58
for b1 being set
for b2, b3 being Element of DISJOINT_PAIRS b1
for b4 being Element of Fin (DISJOINT_PAIRS b1) st b2 in mi b4 holds
( b2 in b4 & ( b3 in b4 & b3 c= b2 implies b3 = b2 ) )
proof end;

theorem Th59: :: NORMFORM:59
for b1 being set
for b2 being Element of DISJOINT_PAIRS b1
for b3 being Element of Fin (DISJOINT_PAIRS b1) st b2 in mi b3 holds
b2 in b3 by Th58;

theorem Th60: :: NORMFORM:60
for b1 being set
for b2, b3 being Element of DISJOINT_PAIRS b1
for b4 being Element of Fin (DISJOINT_PAIRS b1) st b2 in mi b4 & b3 in b4 & b3 c= b2 holds
b3 = b2 by Th58;

theorem Th61: :: NORMFORM:61
for b1 being set
for b2 being Element of DISJOINT_PAIRS b1
for b3 being Element of Fin (DISJOINT_PAIRS b1) st b2 in b3 & ( for b4 being Element of DISJOINT_PAIRS b1 st b4 in b3 & b4 c= b2 holds
b4 = b2 ) holds
b2 in mi b3
proof end;

definition
let c1 be non empty set ;
let c2 be non empty Subset of c1;
let c3 be BinOp of c2;
let c4, c5 be Element of c2;
redefine func . as c3 . c4,c5 -> Element of a2;
coherence
c3 . c4,c5 is Element of c2
proof end;
end;

Lemma32: for b1 being set
for b2, b3 being Element of Fin (DISJOINT_PAIRS b1) st ( for b4 being Element of DISJOINT_PAIRS b1 st b4 in b2 holds
b4 in b3 ) holds
b2 c= b3
proof end;

theorem Th62: :: NORMFORM:62
canceled;

theorem Th63: :: NORMFORM:63
canceled;

theorem Th64: :: NORMFORM:64
for b1 being set
for b2 being Element of Fin (DISJOINT_PAIRS b1) holds mi b2 c= b2
proof end;

theorem Th65: :: NORMFORM:65
for b1 being set
for b2 being Element of DISJOINT_PAIRS b1
for b3 being Element of Fin (DISJOINT_PAIRS b1) st b2 in b3 holds
ex b4 being Element of DISJOINT_PAIRS b1 st
( b4 c= b2 & b4 in mi b3 )
proof end;

theorem Th66: :: NORMFORM:66
for b1 being set
for b2 being Element of Normal_forms_on b1 holds mi b2 = b2
proof end;

theorem Th67: :: NORMFORM:67
for b1 being set
for b2, b3 being Element of Fin (DISJOINT_PAIRS b1) holds mi (b2 \/ b3) c= (mi b2) \/ b3
proof end;

theorem Th68: :: NORMFORM:68
for b1 being set
for b2, b3 being Element of Fin (DISJOINT_PAIRS b1) holds mi ((mi b2) \/ b3) = mi (b2 \/ b3)
proof end;

theorem Th69: :: NORMFORM:69
for b1 being set
for b2, b3 being Element of Fin (DISJOINT_PAIRS b1) holds mi (b2 \/ (mi b3)) = mi (b2 \/ b3) by Th68;

theorem Th70: :: NORMFORM:70
for b1 being set
for b2, b3, b4 being Element of Fin (DISJOINT_PAIRS b1) st b2 c= b3 holds
b2 ^ b4 c= b3 ^ b4
proof end;

Lemma39: for b1 being set
for b2 being Element of DISJOINT_PAIRS b1
for b3, b4 being Element of Fin (DISJOINT_PAIRS b1) st b2 in b3 ^ b4 holds
ex b5 being Element of DISJOINT_PAIRS b1 st
( b5 c= b2 & b5 in (mi b3) ^ b4 )
proof end;

theorem Th71: :: NORMFORM:71
for b1 being set
for b2, b3 being Element of Fin (DISJOINT_PAIRS b1) holds mi (b2 ^ b3) c= (mi b2) ^ b3
proof end;

theorem Th72: :: NORMFORM:72
for b1 being set
for b2, b3 being Element of Fin (DISJOINT_PAIRS b1) holds b2 ^ b3 = b3 ^ b2
proof end;

theorem Th73: :: NORMFORM:73
for b1 being set
for b2, b3, b4 being Element of Fin (DISJOINT_PAIRS b1) st b2 c= b3 holds
b4 ^ b2 c= b4 ^ b3
proof end;

theorem Th74: :: NORMFORM:74
for b1 being set
for b2, b3 being Element of Fin (DISJOINT_PAIRS b1) holds mi ((mi b2) ^ b3) = mi (b2 ^ b3)
proof end;

theorem Th75: :: NORMFORM:75
for b1 being set
for b2, b3 being Element of Fin (DISJOINT_PAIRS b1) holds mi (b2 ^ (mi b3)) = mi (b2 ^ b3)
proof end;

theorem Th76: :: NORMFORM:76
for b1 being set
for b2, b3, b4 being Element of Normal_forms_on b1 holds b2 ^ (b3 ^ b4) = (b2 ^ b3) ^ b4
proof end;

theorem Th77: :: NORMFORM:77
for b1 being set
for b2, b3, b4 being Element of Normal_forms_on b1 holds b2 ^ (b3 \/ b4) = (b2 ^ b3) \/ (b2 ^ b4)
proof end;

Lemma47: for b1 being set
for b2 being Element of DISJOINT_PAIRS b1
for b3, b4 being Element of Fin (DISJOINT_PAIRS b1) st b2 in b3 ^ b4 holds
ex b5 being Element of DISJOINT_PAIRS b1 st
( b5 in b4 & b5 c= b2 )
proof end;

Lemma48: for b1 being set
for b2, b3 being Element of Normal_forms_on b1 holds mi ((b2 ^ b3) \/ b3) = mi b3
proof end;

theorem Th78: :: NORMFORM:78
for b1 being set
for b2 being Element of Fin (DISJOINT_PAIRS b1) holds b2 c= b2 ^ b2
proof end;

theorem Th79: :: NORMFORM:79
for b1 being set
for b2 being Element of Normal_forms_on b1 holds mi (b2 ^ b2) = mi b2
proof end;

definition
let c1 be set ;
canceled;
canceled;
func NormForm c1 -> strict LattStr means :Def14: :: NORMFORM:def 14
( the carrier of a2 = Normal_forms_on a1 & ( for b1, b2 being Element of Normal_forms_on a1 holds
( the L_join of a2 . b1,b2 = mi (b1 \/ b2) & the L_meet of a2 . b1,b2 = mi (b1 ^ b2) ) ) );
existence
ex b1 being strict LattStr st
( the carrier of b1 = Normal_forms_on c1 & ( for b2, b3 being Element of Normal_forms_on c1 holds
( the L_join of b1 . b2,b3 = mi (b2 \/ b3) & the L_meet of b1 . b2,b3 = mi (b2 ^ b3) ) ) )
proof end;
uniqueness
for b1, b2 being strict LattStr st the carrier of b1 = Normal_forms_on c1 & ( for b3, b4 being Element of Normal_forms_on c1 holds
( the L_join of b1 . b3,b4 = mi (b3 \/ b4) & the L_meet of b1 . b3,b4 = mi (b3 ^ b4) ) ) & the carrier of b2 = Normal_forms_on c1 & ( for b3, b4 being Element of Normal_forms_on c1 holds
( the L_join of b2 . b3,b4 = mi (b3 \/ b4) & the L_meet of b2 . b3,b4 = mi (b3 ^ b4) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def12 NORMFORM:def 12 :
canceled;

:: deftheorem Def13 NORMFORM:def 13 :
canceled;

:: deftheorem Def14 defines NormForm NORMFORM:def 14 :
for b1 being set
for b2 being strict LattStr holds
( b2 = NormForm b1 iff ( the carrier of b2 = Normal_forms_on b1 & ( for b3, b4 being Element of Normal_forms_on b1 holds
( the L_join of b2 . b3,b4 = mi (b3 \/ b4) & the L_meet of b2 . b3,b4 = mi (b3 ^ b4) ) ) ) );

registration
let c1 be set ;
cluster NormForm a1 -> non empty strict ;
coherence
not NormForm c1 is empty
proof end;
end;

Lemma52: for b1 being set
for b2, b3 being Element of (NormForm b1) holds b2 "\/" b3 = b3 "\/" b2
proof end;

Lemma53: for b1 being set
for b2, b3, b4 being Element of (NormForm b1) holds b2 "\/" (b3 "\/" b4) = (b2 "\/" b3) "\/" b4
proof end;

Lemma54: for b1 being set
for b2, b3 being Element of Normal_forms_on b1 holds the L_join of (NormForm b1) . (the L_meet of (NormForm b1) . b2,b3),b3 = b3
proof end;

Lemma55: for b1 being set
for b2, b3 being Element of (NormForm b1) holds (b2 "/\" b3) "\/" b3 = b3
proof end;

Lemma56: for b1 being set
for b2, b3 being Element of (NormForm b1) holds b2 "/\" b3 = b3 "/\" b2
proof end;

Lemma57: for b1 being set
for b2, b3, b4 being Element of (NormForm b1) holds b2 "/\" (b3 "/\" b4) = (b2 "/\" b3) "/\" b4
proof end;

Lemma58: for b1 being set
for b2, b3, b4 being Element of Normal_forms_on b1 holds the L_meet of (NormForm b1) . b2,(the L_join of (NormForm b1) . b3,b4) = the L_join of (NormForm b1) . (the L_meet of (NormForm b1) . b2,b3),(the L_meet of (NormForm b1) . b2,b4)
proof end;

Lemma59: for b1 being set
for b2, b3 being Element of (NormForm b1) holds b2 "/\" (b2 "\/" b3) = b2
proof end;

registration
let c1 be set ;
cluster NormForm a1 -> non empty strict Lattice-like ;
coherence
NormForm c1 is Lattice-like
proof end;
end;

registration
let c1 be set ;
cluster NormForm a1 -> non empty strict Lattice-like distributive lower-bounded ;
coherence
( NormForm c1 is distributive & NormForm c1 is lower-bounded )
proof end;
end;

theorem Th80: :: NORMFORM:80
canceled;

theorem Th81: :: NORMFORM:81
canceled;

theorem Th82: :: NORMFORM:82
canceled;

theorem Th83: :: NORMFORM:83
canceled;

theorem Th84: :: NORMFORM:84
canceled;

theorem Th85: :: NORMFORM:85
for b1 being set holds {} is Element of (NormForm b1)
proof end;

theorem Th86: :: NORMFORM:86
for b1 being set holds Bottom (NormForm b1) = {}
proof end;