:: NORMFORM semantic presentation

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

:: deftheorem Def1 defines c= NORMFORM:def 1 :
for A, B being non empty preBoolean set
for x, y being Element of [:A,B:] holds
( x c= y iff ( x `1 c= y `1 & x `2 c= y `2 ) );

:: deftheorem Def2 defines \/ NORMFORM:def 2 :
for A, B being non empty preBoolean set
for x, y being Element of [:A,B:] holds x \/ y = [((x `1 ) \/ (y `1 )),((x `2 ) \/ (y `2 ))];

:: deftheorem Def3 defines /\ NORMFORM:def 3 :
for A, B being non empty preBoolean set
for x, y being Element of [:A,B:] holds x /\ y = [((x `1 ) /\ (y `1 )),((x `2 ) /\ (y `2 ))];

:: deftheorem Def4 defines \ NORMFORM:def 4 :
for A, B being non empty preBoolean set
for x, y being Element of [:A,B:] holds x \ y = [((x `1 ) \ (y `1 )),((x `2 ) \ (y `2 ))];

:: deftheorem Def5 defines \+\ NORMFORM:def 5 :
for A, B being non empty preBoolean set
for x, y being Element of [:A,B:] holds x \+\ y = [((x `1 ) \+\ (y `1 )),((x `2 ) \+\ (y `2 ))];

theorem Th1: :: NORMFORM:1
canceled;

theorem Th2: :: NORMFORM:2
canceled;

theorem Th3: :: NORMFORM:3
canceled;

theorem Th4: :: NORMFORM:4
for A, B being non empty preBoolean set
for a, b being Element of [:A,B:] st a c= b & b c= a holds
a = b
proof end;

theorem Th5: :: NORMFORM:5
for A, B being non empty preBoolean set
for a, b, c being Element of [:A,B:] st a c= b & b c= c holds
a c= c
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 A, B being non empty preBoolean set
for a, b being Element of [:A,B:] holds
( (a \/ b) `1 = (a `1 ) \/ (b `1 ) & (a \/ b) `2 = (a `2 ) \/ (b `2 ) ) by MCART_1:7;

theorem Th11: :: NORMFORM:11
for A, B being non empty preBoolean set
for a, b being Element of [:A,B:] holds
( (a /\ b) `1 = (a `1 ) /\ (b `1 ) & (a /\ b) `2 = (a `2 ) /\ (b `2 ) ) by MCART_1:7;

theorem Th12: :: NORMFORM:12
for A, B being non empty preBoolean set
for a, b being Element of [:A,B:] holds
( (a \ b) `1 = (a `1 ) \ (b `1 ) & (a \ b) `2 = (a `2 ) \ (b `2 ) ) by MCART_1:7;

theorem Th13: :: NORMFORM:13
for A, B being non empty preBoolean set
for a, b being Element of [:A,B:] holds
( (a \+\ b) `1 = (a `1 ) \+\ (b `1 ) & (a \+\ b) `2 = (a `2 ) \+\ (b `2 ) ) by MCART_1:7;

theorem Th14: :: NORMFORM:14
canceled;

theorem Th15: :: NORMFORM:15
canceled;

theorem Th16: :: NORMFORM:16
for A, B being non empty preBoolean set
for a, b, c being Element of [:A,B:] holds (a \/ b) \/ c = a \/ (b \/ c)
proof end;

theorem Th17: :: NORMFORM:17
canceled;

theorem Th18: :: NORMFORM:18
canceled;

theorem Th19: :: NORMFORM:19
for A, B being non empty preBoolean set
for a, b, c being Element of [:A,B:] holds (a /\ b) /\ c = a /\ (b /\ c)
proof end;

theorem Th20: :: NORMFORM:20
for A, B being non empty preBoolean set
for a, b, c being Element of [:A,B:] holds a /\ (b \/ c) = (a /\ b) \/ (a /\ c)
proof end;

theorem Th21: :: NORMFORM:21
for A, B being non empty preBoolean set
for a, b being Element of [:A,B:] holds a \/ (b /\ a) = a
proof end;

theorem Th22: :: NORMFORM:22
for A, B being non empty preBoolean set
for a, b being Element of [:A,B:] holds a /\ (b \/ a) = a
proof end;

theorem Th23: :: NORMFORM:23
canceled;

theorem Th24: :: NORMFORM:24
for A, B being non empty preBoolean set
for a, b, c being Element of [:A,B:] holds a \/ (b /\ c) = (a \/ b) /\ (a \/ c)
proof end;

theorem Th25: :: NORMFORM:25
for A, B being non empty preBoolean set
for a, c, b being Element of [:A,B:] st a c= c & b c= c holds
a \/ b c= c
proof end;

theorem Th26: :: NORMFORM:26
for A, B being non empty preBoolean set
for a, b being Element of [:A,B:] holds
( a c= a \/ b & b c= a \/ b )
proof end;

theorem Th27: :: NORMFORM:27
for A, B being non empty preBoolean set
for a, b being Element of [:A,B:] st a = a \/ b holds
b c= a by ;

theorem Th28: :: NORMFORM:28
for A, B being non empty preBoolean set
for a, b, c being Element of [:A,B:] st a c= b holds
( c \/ a c= c \/ b & a \/ c c= b \/ c )
proof end;

theorem Th29: :: NORMFORM:29
for A, B being non empty preBoolean set
for a, b being Element of [:A,B:] holds (a \ b) \/ b = a \/ b
proof end;

theorem Th30: :: NORMFORM:30
for A, B being non empty preBoolean set
for a, b, c being Element of [:A,B:] st a \ b c= c holds
a c= b \/ c
proof end;

theorem Th31: :: NORMFORM:31
for A, B being non empty preBoolean set
for a, b, c being Element of [:A,B:] st a c= b \/ c holds
a \ c c= b
proof end;

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

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

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

:: deftheorem Def7 defines FinPairUnion NORMFORM:def 7 :
for X being non empty set
for A being set
for B being Element of Fin X
for f being Function of X,[:(Fin A),(Fin A):] holds FinPairUnion B,f = (FinPairUnion A) $$ B,f;

Lemma36: for A being set holds FinPairUnion A is idempotent
proof end;

Lemma37: for A being set holds FinPairUnion A is commutative
proof end;

Lemma38: for A being set holds FinPairUnion A is associative
proof end;

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

theorem Th32: :: NORMFORM:32
canceled;

theorem Th33: :: NORMFORM:33
canceled;

theorem Th34: :: NORMFORM:34
canceled;

theorem Th35: :: NORMFORM:35
for A being set
for X being non empty set
for f being Function of X,[:(Fin A),(Fin A):]
for B being Element of Fin X
for x being Element of X st x in B holds
f . x c= FinPairUnion B,f
proof end;

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

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

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

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

theorem Th40: :: NORMFORM:40
for A being set
for X being non empty set
for f being Function of X,[:(Fin A),(Fin A):]
for B being Element of Fin X
for c being Element of [:(Fin A),(Fin A):] st ( for x being Element of X st x in B holds
f . x c= c ) holds
FinPairUnion B,f c= c
proof end;

theorem Th41: :: NORMFORM:41
for A being set
for X being non empty set
for B being Element of Fin X
for f, g being Function of X,[:(Fin A),(Fin A):] st f | B = g | B holds
FinPairUnion B,f = FinPairUnion B,g
proof end;

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

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

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

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

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

theorem Th44: :: NORMFORM:44
for X being set
for a being Element of DISJOINT_PAIRS X holds a `1 misses a `2 by Th12;

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

theorem Th46: :: NORMFORM:46
for X being set
for a being Element of DISJOINT_PAIRS X
for x being set holds
( not x in a `1 or not x in a `2 )
proof end;

theorem Th47: :: NORMFORM:47
for X being set
for a, b being Element of DISJOINT_PAIRS X st not a \/ b in DISJOINT_PAIRS X holds
ex p being Element of X st
( ( p in a `1 & p in b `2 ) or ( p in b `1 & p in a `2 ) )
proof end;

theorem Th48: :: NORMFORM:48
canceled;

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

theorem Th50: :: NORMFORM:50
for X being set
for a being Element of DISJOINT_PAIRS X
for V, W being set st V c= a `1 & W c= a `2 holds
[V,W] is Element of DISJOINT_PAIRS X
proof end;

Lemma63: for A being set holds {} in { B where B is Element of Fin (DISJOINT_PAIRS A) : for a, b being Element of DISJOINT_PAIRS A st a in B & b in B & a c= b holds
a = b
}

proof end;

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

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

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

theorem Th51: :: NORMFORM:51
for A being set holds {} in Normal_forms_on A by Th21;

theorem Th52: :: NORMFORM:52
for A being set
for a, b being Element of DISJOINT_PAIRS A
for B being Element of Fin (DISJOINT_PAIRS A) st B in Normal_forms_on A & a in B & b in B & a c= b holds
a = b
proof end;

theorem Th53: :: NORMFORM:53
for A being set
for B being Element of Fin (DISJOINT_PAIRS A) st ( for a, b being Element of DISJOINT_PAIRS A st a in B & b in B & a c= b holds
a = b ) holds
B in Normal_forms_on A ;

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

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

:: deftheorem Def11 defines ^ NORMFORM:def 11 :
for A being set
for B, C being Element of Fin (DISJOINT_PAIRS A) holds B ^ C = (DISJOINT_PAIRS A) /\ { (s \/ t) where s is Element of DISJOINT_PAIRS A, t is Element of DISJOINT_PAIRS A : ( s in B & t in C ) } ;

theorem Th54: :: NORMFORM:54
canceled;

theorem Th55: :: NORMFORM:55
for A being set
for x being Element of [:(Fin A),(Fin A):]
for B, C being Element of Fin (DISJOINT_PAIRS A) st x in B ^ C holds
ex b, c being Element of DISJOINT_PAIRS A st
( b in B & c in C & x = b \/ c )
proof end;

theorem Th56: :: NORMFORM:56
for A being set
for b, c being Element of DISJOINT_PAIRS A
for B, C being Element of Fin (DISJOINT_PAIRS A) st b in B & c in C & b \/ c in DISJOINT_PAIRS A holds
b \/ c in B ^ C
proof end;

theorem Th57: :: NORMFORM:57
canceled;

theorem Th58: :: NORMFORM:58
for A being set
for a, b being Element of DISJOINT_PAIRS A
for B being Element of Fin (DISJOINT_PAIRS A) st a in mi B holds
( a in B & ( b in B & b c= a implies b = a ) )
proof end;

theorem Th59: :: NORMFORM:59
for A being set
for a being Element of DISJOINT_PAIRS A
for B being Element of Fin (DISJOINT_PAIRS A) st a in mi B holds
a in B by ;

theorem Th60: :: NORMFORM:60
for A being set
for a, b being Element of DISJOINT_PAIRS A
for B being Element of Fin (DISJOINT_PAIRS A) st a in mi B & b in B & b c= a holds
b = a by ;

theorem Th61: :: NORMFORM:61
for A being set
for a being Element of DISJOINT_PAIRS A
for B being Element of Fin (DISJOINT_PAIRS A) st a in B & ( for b being Element of DISJOINT_PAIRS A st b in B & b c= a holds
b = a ) holds
a in mi B
proof end;

definition
let A be non empty set ;
let B be non empty Subset of A;
let O be BinOp of B;
let a be Element of B, b be Element of B;
redefine func . as c3 . c4,c5 -> Element of a2;
coherence
O . a,b is Element of B
proof end;
end;

Lemma76: for A being set
for B, C being Element of Fin (DISJOINT_PAIRS A) st ( for a being Element of DISJOINT_PAIRS A st a in B holds
a in C ) holds
B c= C
proof end;

theorem Th62: :: NORMFORM:62
canceled;

theorem Th63: :: NORMFORM:63
canceled;

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

theorem Th65: :: NORMFORM:65
for A being set
for b being Element of DISJOINT_PAIRS A
for B being Element of Fin (DISJOINT_PAIRS A) st b in B holds
ex c being Element of DISJOINT_PAIRS A st
( c c= b & c in mi B )
proof end;

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

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

theorem Th68: :: NORMFORM:68
for A being set
for B, C being Element of Fin (DISJOINT_PAIRS A) holds mi ((mi B) \/ C) = mi (B \/ C)
proof end;

theorem Th69: :: NORMFORM:69
for A being set
for B, C being Element of Fin (DISJOINT_PAIRS A) holds mi (B \/ (mi C)) = mi (B \/ C) by Lemma37;

theorem Th70: :: NORMFORM:70
for A being set
for B, C, D being Element of Fin (DISJOINT_PAIRS A) st B c= C holds
B ^ D c= C ^ D
proof end;

Lemma88: for A being set
for a being Element of DISJOINT_PAIRS A
for B, C being Element of Fin (DISJOINT_PAIRS A) st a in B ^ C holds
ex b being Element of DISJOINT_PAIRS A st
( b c= a & b in (mi B) ^ C )
proof end;

theorem Th71: :: NORMFORM:71
for A being set
for B, C being Element of Fin (DISJOINT_PAIRS A) holds mi (B ^ C) c= (mi B) ^ C
proof end;

theorem Th72: :: NORMFORM:72
for A being set
for B, C being Element of Fin (DISJOINT_PAIRS A) holds B ^ C = C ^ B
proof end;

theorem Th73: :: NORMFORM:73
for A being set
for B, C, D being Element of Fin (DISJOINT_PAIRS A) st B c= C holds
D ^ B c= D ^ C
proof end;

theorem Th74: :: NORMFORM:74
for A being set
for B, C being Element of Fin (DISJOINT_PAIRS A) holds mi ((mi B) ^ C) = mi (B ^ C)
proof end;

theorem Th75: :: NORMFORM:75
for A being set
for B, C being Element of Fin (DISJOINT_PAIRS A) holds mi (B ^ (mi C)) = mi (B ^ C)
proof end;

theorem Th76: :: NORMFORM:76
for A being set
for K, L, M being Element of Normal_forms_on A holds K ^ (L ^ M) = (K ^ L) ^ M
proof end;

theorem Th77: :: NORMFORM:77
for A being set
for K, L, M being Element of Normal_forms_on A holds K ^ (L \/ M) = (K ^ L) \/ (K ^ M)
proof end;

Lemma100: for A being set
for a being Element of DISJOINT_PAIRS A
for B, C being Element of Fin (DISJOINT_PAIRS A) st a in B ^ C holds
ex c being Element of DISJOINT_PAIRS A st
( c in C & c c= a )
proof end;

Lemma101: for A being set
for K, L being Element of Normal_forms_on A holds mi ((K ^ L) \/ L) = mi L
proof end;

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

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

definition
let A be set ;
canceled;
canceled;
func NormForm c1 -> strict LattStr means :Def14: :: NORMFORM:def 14
( the carrier of it = Normal_forms_on A & ( for B, C being Element of Normal_forms_on A holds
( the L_join of it . B,C = mi (B \/ C) & the L_meet of it . B,C = mi (B ^ C) ) ) );
existence
ex b1 being strict LattStr st
( the carrier of b1 = Normal_forms_on A & ( for B, C being Element of Normal_forms_on A holds
( the L_join of b1 . B,C = mi (B \/ C) & the L_meet of b1 . B,C = mi (B ^ C) ) ) )
proof end;
uniqueness
for b1, b2 being strict LattStr st the carrier of b1 = Normal_forms_on A & ( for B, C being Element of Normal_forms_on A holds
( the L_join of b1 . B,C = mi (B \/ C) & the L_meet of b1 . B,C = mi (B ^ C) ) ) & the carrier of b2 = Normal_forms_on A & ( for B, C being Element of Normal_forms_on A holds
( the L_join of b2 . B,C = mi (B \/ C) & the L_meet of b2 . B,C = mi (B ^ C) ) ) 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 A being set
for b2 being strict LattStr holds
( b2 = NormForm A iff ( the carrier of b2 = Normal_forms_on A & ( for B, C being Element of Normal_forms_on A holds
( the L_join of b2 . B,C = mi (B \/ C) & the L_meet of b2 . B,C = mi (B ^ C) ) ) ) );

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

Lemma114: for A being set
for a, b being Element of (NormForm A) holds a "\/" b = b "\/" a
proof end;

Lemma118: for A being set
for a, b, c being Element of (NormForm A) holds a "\/" (b "\/" c) = (a "\/" b) "\/" c
proof end;

Lemma120: for A being set
for K, L being Element of Normal_forms_on A holds the L_join of (NormForm A) . (the L_meet of (NormForm A) . K,L),L = L
proof end;

Lemma121: for A being set
for a, b being Element of (NormForm A) holds (a "/\" b) "\/" b = b
proof end;

Lemma122: for A being set
for a, b being Element of (NormForm A) holds a "/\" b = b "/\" a
proof end;

Lemma123: for A being set
for a, b, c being Element of (NormForm A) holds a "/\" (b "/\" c) = (a "/\" b) "/\" c
proof end;

Lemma124: for A being set
for K, L, M being Element of Normal_forms_on A holds the L_meet of (NormForm A) . K,(the L_join of (NormForm A) . L,M) = the L_join of (NormForm A) . (the L_meet of (NormForm A) . K,L),(the L_meet of (NormForm A) . K,M)
proof end;

Lemma128: for A being set
for a, b being Element of (NormForm A) holds a "/\" (a "\/" b) = a
proof end;

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

registration
let A be set ;
cluster NormForm a1 -> non empty strict Lattice-like distributive lower-bounded ;
coherence
( NormForm A is distributive & NormForm A 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 A being set holds {} is Element of (NormForm A)
proof end;

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