begin
theorem Th1:
:: deftheorem defines c= HEYTING1:def 1 :
for A being non empty set
for B, C being Element of Fin A holds
( B c= C iff for a being Element of A st a in B holds
a in C );
:: deftheorem Def2 defines [ HEYTING1:def 2 :
for A being set st not A is empty holds
[A] = A;
theorem
canceled;
theorem
:: deftheorem defines @ HEYTING1:def 3 :
for A being set
for u being Element of (NormForm A) holds @ u = u;
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem Th7:
theorem Th8:
theorem
canceled;
theorem Th10:
:: deftheorem Def4 defines Atom HEYTING1:def 4 :
for A being set
for b2 being Function of (DISJOINT_PAIRS A), the carrier of (NormForm A) holds
( b2 = Atom A iff for a being Element of DISJOINT_PAIRS A holds b2 . a = {a} );
theorem Th11:
theorem Th12:
theorem
theorem Th14:
theorem Th15:
Lm2:
for A being set
for u, v being Element of (NormForm A) st u [= v holds
for x being Element of [:(Fin A),(Fin A):] st x in u holds
ex b being Element of DISJOINT_PAIRS A st
( b in v & b c= x )
Lm3:
for A being set
for u, v being Element of (NormForm A) st ( for a being Element of DISJOINT_PAIRS A st a in u holds
ex b being Element of DISJOINT_PAIRS A st
( b in v & b c= a ) ) holds
u [= v
definition
let A be
set ;
func pair_diff A -> BinOp of
[:(Fin A),(Fin A):] means :
Def5:
for
a,
b being
Element of
[:(Fin A),(Fin A):] holds
it . (
a,
b)
= a \ b;
existence
ex b1 being BinOp of [:(Fin A),(Fin A):] st
for a, b being Element of [:(Fin A),(Fin A):] holds b1 . (a,b) = a \ b
correctness
uniqueness
for b1, b2 being BinOp of [:(Fin A),(Fin A):] st ( for a, b being Element of [:(Fin A),(Fin A):] holds b1 . (a,b) = a \ b ) & ( for a, b being Element of [:(Fin A),(Fin A):] holds b2 . (a,b) = a \ b ) holds
b1 = b2;
end;
:: deftheorem Def5 defines pair_diff HEYTING1:def 5 :
for A being set
for b2 being BinOp of [:(Fin A),(Fin A):] holds
( b2 = pair_diff A iff for a, b being Element of [:(Fin A),(Fin A):] holds b2 . (a,b) = a \ b );
definition
let A be
set ;
let B be
Element of
Fin (DISJOINT_PAIRS A);
func - B -> Element of
Fin (DISJOINT_PAIRS A) equals
(DISJOINT_PAIRS A) /\ { [ { (g . t1) where t1 is Element of DISJOINT_PAIRS A : ( g . t1 in t1 `2 & t1 in B ) } , { (g . t2) where t2 is Element of DISJOINT_PAIRS A : ( g . t2 in t2 `1 & t2 in B ) } ] where g is Element of Funcs ((DISJOINT_PAIRS A),[A]) : for s being Element of DISJOINT_PAIRS A st s in B holds
g . s in (s `1) \/ (s `2) } ;
coherence
(DISJOINT_PAIRS A) /\ { [ { (g . t1) where t1 is Element of DISJOINT_PAIRS A : ( g . t1 in t1 `2 & t1 in B ) } , { (g . t2) where t2 is Element of DISJOINT_PAIRS A : ( g . t2 in t2 `1 & t2 in B ) } ] where g is Element of Funcs ((DISJOINT_PAIRS A),[A]) : for s being Element of DISJOINT_PAIRS A st s in B holds
g . s in (s `1) \/ (s `2) } is Element of Fin (DISJOINT_PAIRS A)
correctness
;
let C be
Element of
Fin (DISJOINT_PAIRS A);
func B =>> C -> Element of
Fin (DISJOINT_PAIRS A) equals
(DISJOINT_PAIRS A) /\ { (FinPairUnion (B,((pair_diff A) .: (f,(incl (DISJOINT_PAIRS A)))))) where f is Element of Funcs ((DISJOINT_PAIRS A),[:(Fin A),(Fin A):]) : f .: B c= C } ;
coherence
(DISJOINT_PAIRS A) /\ { (FinPairUnion (B,((pair_diff A) .: (f,(incl (DISJOINT_PAIRS A)))))) where f is Element of Funcs ((DISJOINT_PAIRS A),[:(Fin A),(Fin A):]) : f .: B c= C } is Element of Fin (DISJOINT_PAIRS A)
correctness
;
end;
:: deftheorem defines - HEYTING1:def 6 :
for A being set
for B being Element of Fin (DISJOINT_PAIRS A) holds - B = (DISJOINT_PAIRS A) /\ { [ { (g . t1) where t1 is Element of DISJOINT_PAIRS A : ( g . t1 in t1 `2 & t1 in B ) } , { (g . t2) where t2 is Element of DISJOINT_PAIRS A : ( g . t2 in t2 `1 & t2 in B ) } ] where g is Element of Funcs ((DISJOINT_PAIRS A),[A]) : for s being Element of DISJOINT_PAIRS A st s in B holds
g . s in (s `1) \/ (s `2) } ;
:: deftheorem defines =>> HEYTING1:def 7 :
for A being set
for B, C being Element of Fin (DISJOINT_PAIRS A) holds B =>> C = (DISJOINT_PAIRS A) /\ { (FinPairUnion (B,((pair_diff A) .: (f,(incl (DISJOINT_PAIRS A)))))) where f is Element of Funcs ((DISJOINT_PAIRS A),[:(Fin A),(Fin A):]) : f .: B c= C } ;
theorem Th16:
theorem Th17:
theorem Th18:
theorem Th19:
theorem Th20:
theorem Th21:
Lm4:
Fin (DISJOINT_PAIRS {}) = {{},{[{},{}]}}
theorem Th22:
theorem Th23:
theorem Th24:
Lm5:
now
let A be
set ;
for K being Element of Normal_forms_on A
for b being Element of DISJOINT_PAIRS A
for f being Element of Funcs ((DISJOINT_PAIRS A),[:(Fin A),(Fin A):]) holds ((pair_diff A) .: (f,(incl (DISJOINT_PAIRS A)))) . b = (f . b) \ blet K be
Element of
Normal_forms_on A;
for b being Element of DISJOINT_PAIRS A
for f being Element of Funcs ((DISJOINT_PAIRS A),[:(Fin A),(Fin A):]) holds ((pair_diff A) .: (f,(incl (DISJOINT_PAIRS A)))) . b = (f . b) \ blet b be
Element of
DISJOINT_PAIRS A;
for f being Element of Funcs ((DISJOINT_PAIRS A),[:(Fin A),(Fin A):]) holds ((pair_diff A) .: (f,(incl (DISJOINT_PAIRS A)))) . b = (f . b) \ blet f be
Element of
Funcs (
(DISJOINT_PAIRS A),
[:(Fin A),(Fin A):]);
((pair_diff A) .: (f,(incl (DISJOINT_PAIRS A)))) . b = (f . b) \ bthus ((pair_diff A) .: (f,(incl (DISJOINT_PAIRS A)))) . b =
(pair_diff A) . (
(f . b),
((incl (DISJOINT_PAIRS A)) . b))
by FUNCOP_1:48
.=
(pair_diff A) . (
(f . b),
b)
by FUNCT_1:35
.=
(f . b) \ b
by Def5
;
verum
end;
theorem Th25:
Lm6:
for A being set
for a being Element of DISJOINT_PAIRS A
for u being Element of (NormForm A)
for K being Element of Normal_forms_on A st a in K ^ (K =>> (@ u)) holds
ex b being Element of DISJOINT_PAIRS A st
( b in u & b c= a )
theorem Th26:
definition
let A be
set ;
func pseudo_compl A -> UnOp of the
carrier of
(NormForm A) means :
Def8:
for
u being
Element of
(NormForm A) holds
it . u = mi (- (@ u));
existence
ex b1 being UnOp of the carrier of (NormForm A) st
for u being Element of (NormForm A) holds b1 . u = mi (- (@ u))
correctness
uniqueness
for b1, b2 being UnOp of the carrier of (NormForm A) st ( for u being Element of (NormForm A) holds b1 . u = mi (- (@ u)) ) & ( for u being Element of (NormForm A) holds b2 . u = mi (- (@ u)) ) holds
b1 = b2;
func StrongImpl A -> BinOp of the
carrier of
(NormForm A) means :
Def9:
for
u,
v being
Element of
(NormForm A) holds
it . (
u,
v)
= mi ((@ u) =>> (@ v));
existence
ex b1 being BinOp of the carrier of (NormForm A) st
for u, v being Element of (NormForm A) holds b1 . (u,v) = mi ((@ u) =>> (@ v))
correctness
uniqueness
for b1, b2 being BinOp of the carrier of (NormForm A) st ( for u, v being Element of (NormForm A) holds b1 . (u,v) = mi ((@ u) =>> (@ v)) ) & ( for u, v being Element of (NormForm A) holds b2 . (u,v) = mi ((@ u) =>> (@ v)) ) holds
b1 = b2;
let u be
Element of
(NormForm A);
func SUB u -> Element of
Fin the
carrier of
(NormForm A) equals
bool u;
coherence
bool u is Element of Fin the carrier of (NormForm A)
correctness
;
func diff u -> UnOp of the
carrier of
(NormForm A) means :
Def11:
for
v being
Element of
(NormForm A) holds
it . v = u \ v;
existence
ex b1 being UnOp of the carrier of (NormForm A) st
for v being Element of (NormForm A) holds b1 . v = u \ v
correctness
uniqueness
for b1, b2 being UnOp of the carrier of (NormForm A) st ( for v being Element of (NormForm A) holds b1 . v = u \ v ) & ( for v being Element of (NormForm A) holds b2 . v = u \ v ) holds
b1 = b2;
end;
:: deftheorem Def8 defines pseudo_compl HEYTING1:def 8 :
for A being set
for b2 being UnOp of the carrier of (NormForm A) holds
( b2 = pseudo_compl A iff for u being Element of (NormForm A) holds b2 . u = mi (- (@ u)) );
:: deftheorem Def9 defines StrongImpl HEYTING1:def 9 :
for A being set
for b2 being BinOp of the carrier of (NormForm A) holds
( b2 = StrongImpl A iff for u, v being Element of (NormForm A) holds b2 . (u,v) = mi ((@ u) =>> (@ v)) );
:: deftheorem defines SUB HEYTING1:def 10 :
for A being set
for u being Element of (NormForm A) holds SUB u = bool u;
:: deftheorem Def11 defines diff HEYTING1:def 11 :
for A being set
for u being Element of (NormForm A)
for b3 being UnOp of the carrier of (NormForm A) holds
( b3 = diff u iff for v being Element of (NormForm A) holds b3 . v = u \ v );
deffunc H1( set ) -> Element of bool [:[: the carrier of (NormForm $1), the carrier of (NormForm $1):], the carrier of (NormForm $1):] = the L_join of (NormForm $1);
deffunc H2( set ) -> Element of bool [:[: the carrier of (NormForm $1), the carrier of (NormForm $1):], the carrier of (NormForm $1):] = the L_meet of (NormForm $1);
Lm7:
for A being set
for u, v being Element of (NormForm A) st v in SUB u holds
v "\/" ((diff u) . v) = u
theorem Th27:
Lm8:
for A being set
for a being Element of DISJOINT_PAIRS A
for u being Element of (NormForm A) ex v being Element of (NormForm A) st
( v in SUB u & (@ v) ^ {a} = {} & ( for b being Element of DISJOINT_PAIRS A st b in (diff u) . v holds
b \/ a in DISJOINT_PAIRS A ) )
theorem Th28:
theorem Th29:
theorem Th30:
theorem Th31:
Lm9:
now
let A be
set ;
for u, v being Element of (NormForm A) holds
( u "/\" H3(u,v) [= v & ( for w being Element of (NormForm A) st u "/\" v [= w holds
v [= H3(u,w) ) )let u,
v be
Element of
(NormForm A);
( u "/\" H3(u,v) [= v & ( for w being Element of (NormForm A) st u "/\" v [= w holds
v [= H3(u,w) ) )deffunc H3(
Element of
(NormForm A),
Element of
(NormForm A))
-> Element of the
carrier of
(NormForm A) =
FinJoin (
(SUB $1),
(H2(A) .: ((pseudo_compl A),((StrongImpl A) [:] ((diff $1),$2)))));
set Psi =
H2(
A)
.: (
(pseudo_compl A),
((StrongImpl A) [:] ((diff u),v)));
A1:
now
let w be
Element of
(NormForm A);
( w in SUB u implies (H2(A) [;] (u,(H2(A) .: ((pseudo_compl A),((StrongImpl A) [:] ((diff u),v)))))) . w [= v )set u2 =
(diff u) . w;
set pc =
(pseudo_compl A) . w;
set si =
(StrongImpl A) . (
((diff u) . w),
v);
A2:
w "/\" (((pseudo_compl A) . w) "/\" ((StrongImpl A) . (((diff u) . w),v))) =
(w "/\" ((pseudo_compl A) . w)) "/\" ((StrongImpl A) . (((diff u) . w),v))
by LATTICES:def 7
.=
(Bottom (NormForm A)) "/\" ((StrongImpl A) . (((diff u) . w),v))
by Th28
.=
Bottom (NormForm A)
by LATTICES:40
;
assume
w in SUB u
;
(H2(A) [;] (u,(H2(A) .: ((pseudo_compl A),((StrongImpl A) [:] ((diff u),v)))))) . w [= vthen A3:
w "\/" ((diff u) . w) = u
by Lm7;
(H2(A) [;] (u,(H2(A) .: ((pseudo_compl A),((StrongImpl A) [:] ((diff u),v)))))) . w =
H2(
A)
. (
u,
((H2(A) .: ((pseudo_compl A),((StrongImpl A) [:] ((diff u),v)))) . w))
by FUNCOP_1:66
.=
u "/\" ((H2(A) .: ((pseudo_compl A),((StrongImpl A) [:] ((diff u),v)))) . w)
by LATTICES:def 2
.=
u "/\" (H2(A) . (((pseudo_compl A) . w),(((StrongImpl A) [:] ((diff u),v)) . w)))
by FUNCOP_1:48
.=
u "/\" (((pseudo_compl A) . w) "/\" (((StrongImpl A) [:] ((diff u),v)) . w))
by LATTICES:def 2
.=
u "/\" (((pseudo_compl A) . w) "/\" ((StrongImpl A) . (((diff u) . w),v)))
by FUNCOP_1:60
.=
(w "/\" (((pseudo_compl A) . w) "/\" ((StrongImpl A) . (((diff u) . w),v)))) "\/" (((diff u) . w) "/\" (((pseudo_compl A) . w) "/\" ((StrongImpl A) . (((diff u) . w),v))))
by A3, LATTICES:def 11
.=
((diff u) . w) "/\" (((StrongImpl A) . (((diff u) . w),v)) "/\" ((pseudo_compl A) . w))
by A2, LATTICES:39
.=
(((diff u) . w) "/\" ((StrongImpl A) . (((diff u) . w),v))) "/\" ((pseudo_compl A) . w)
by LATTICES:def 7
;
then A4:
(H2(A) [;] (u,(H2(A) .: ((pseudo_compl A),((StrongImpl A) [:] ((diff u),v)))))) . w [= ((diff u) . w) "/\" ((StrongImpl A) . (((diff u) . w),v))
by LATTICES:23;
((diff u) . w) "/\" ((StrongImpl A) . (((diff u) . w),v)) [= v
by Th29;
hence
(H2(A) [;] (u,(H2(A) .: ((pseudo_compl A),((StrongImpl A) [:] ((diff u),v)))))) . w [= v
by A4, LATTICES:25;
verum
end;
u "/\" H3(
u,
v)
= FinJoin (
(SUB u),
(H2(A) [;] (u,(H2(A) .: ((pseudo_compl A),((StrongImpl A) [:] ((diff u),v)))))))
by LATTICE2:83;
hence
u "/\" H3(
u,
v)
[= v
by A1, LATTICE2:70;
for w being Element of (NormForm A) st u "/\" v [= w holds
v [= H3(u,w)let w be
Element of
(NormForm A);
( u "/\" v [= w implies v [= H3(u,w) )assume A5:
u "/\" v [= w
;
v [= H3(u,w)A6:
v = FinJoin (
(@ v),
(Atom A))
by Th15;
then A7:
u "/\" v = FinJoin (
(@ v),
(H2(A) [;] (u,(Atom A))))
by LATTICE2:83;
now
set pf =
pseudo_compl A;
set sf =
(StrongImpl A) [:] (
(diff u),
w);
let a be
Element of
DISJOINT_PAIRS A;
( a in @ v implies (Atom A) . a [= H3(u,w) )assume
a in @ v
;
(Atom A) . a [= H3(u,w)then
(H2(A) [;] (u,(Atom A))) . a [= w
by A7, A5, LATTICE2:46;
then
H2(
A)
. (
u,
((Atom A) . a))
[= w
by FUNCOP_1:66;
then A8:
u "/\" ((Atom A) . a) [= w
by LATTICES:def 2;
consider v being
Element of
(NormForm A) such that A9:
v in SUB u
and A10:
(@ v) ^ {a} = {}
and A11:
for
b being
Element of
DISJOINT_PAIRS A st
b in (diff u) . v holds
b \/ a in DISJOINT_PAIRS A
by Lm8;
((diff u) . v) "/\" ((Atom A) . a) [= u "/\" ((Atom A) . a)
by Th27, LATTICES:27;
then
((diff u) . v) "/\" ((Atom A) . a) [= w
by A8, LATTICES:25;
then
(Atom A) . a [= (StrongImpl A) . (
((diff u) . v),
w)
by A11, Th31;
then A12:
(Atom A) . a [= ((StrongImpl A) [:] ((diff u),w)) . v
by FUNCOP_1:60;
A13:
((pseudo_compl A) . v) "/\" (((StrongImpl A) [:] ((diff u),w)) . v) =
H2(
A)
. (
((pseudo_compl A) . v),
(((StrongImpl A) [:] ((diff u),w)) . v))
by LATTICES:def 2
.=
(H2(A) .: ((pseudo_compl A),((StrongImpl A) [:] ((diff u),w)))) . v
by FUNCOP_1:48
;
(Atom A) . a [= (pseudo_compl A) . v
by A10, Th30;
then
(Atom A) . a [= (H2(A) .: ((pseudo_compl A),((StrongImpl A) [:] ((diff u),w)))) . v
by A12, A13, FILTER_0:7;
hence
(Atom A) . a [= H3(
u,
w)
by A9, LATTICE2:44;
verum
end;
hence
v [= H3(
u,
w)
by A6, LATTICE2:70;
verum
end;
Lm10:
for A being set holds NormForm A is implicative
theorem
canceled;
theorem Th33:
theorem