:: BVFUNC_1 semantic presentation

definition
let c1, c2 be boolean set ;
func c1 'imp' c2 -> set equals :: BVFUNC_1:def 1
('not' a1) 'or' a2;
correctness
coherence
('not' c1) 'or' c2 is set
;
;
func c1 'eqv' c2 -> set equals :: BVFUNC_1:def 2
'not' (a1 'xor' a2);
correctness
coherence
'not' (c1 'xor' c2) is set
;
;
commutativity
for b1 being set
for b2, b3 being boolean set st b1 = 'not' (b2 'xor' b3) holds
b1 = 'not' (b3 'xor' b2)
;
end;

:: deftheorem Def1 defines 'imp' BVFUNC_1:def 1 :
for b1, b2 being boolean set holds b1 'imp' b2 = ('not' b1) 'or' b2;

:: deftheorem Def2 defines 'eqv' BVFUNC_1:def 2 :
for b1, b2 being boolean set holds b1 'eqv' b2 = 'not' (b1 'xor' b2);

registration
let c1, c2 be boolean set ;
cluster a1 'imp' a2 -> boolean ;
correctness
coherence
c1 'imp' c2 is boolean
;
;
cluster a1 'eqv' a2 -> boolean ;
correctness
coherence
c1 'eqv' c2 is boolean
;
;
end;

registration
cluster boolean -> natural set ;
coherence
for b1 being set st b1 is boolean holds
b1 is natural
proof end;
end;

notation
let c1, c2 be boolean set ;
synonym c1 '<' c2 for c1 <= c2;
end;

definition
let c1, c2 be boolean set ;
redefine pred c1 <= c2 means :Def3: :: BVFUNC_1:def 3
a1 'imp' a2 = TRUE ;
compatibility
( c1 '<' c2 iff c1 'imp' c2 = TRUE )
proof end;
end;

:: deftheorem Def3 defines '<' BVFUNC_1:def 3 :
for b1, b2 being boolean set holds
( b1 '<' b2 iff b1 'imp' b2 = TRUE );

definition
let c1 be set ;
func BVF c1 -> set equals :: BVFUNC_1:def 4
Funcs a1,BOOLEAN ;
correctness
coherence
Funcs c1,BOOLEAN is set
;
;
end;

:: deftheorem Def4 defines BVF BVFUNC_1:def 4 :
for b1 being set holds BVF b1 = Funcs b1,BOOLEAN ;

registration
let c1 be set ;
cluster BVF a1 -> non empty functional ;
coherence
( BVF c1 is functional & not BVF c1 is empty )
;
end;

registration
let c1 be set ;
cluster -> boolean-valued Element of BVF a1;
coherence
for b1 being Element of BVF c1 holds b1 is boolean-valued
proof end;
end;

notation
let c1 be boolean-valued Function;
let c2 be set ;
synonym Pj c1,c2 for c1 . c2;
end;

scheme :: BVFUNC_1:sch 1
s1{ F1() -> non empty set , F2() -> Element of Funcs F1(),BOOLEAN , F3() -> Element of Funcs F1(),BOOLEAN , F4( set , Element of Funcs F1(),BOOLEAN , Element of Funcs F1(),BOOLEAN ) -> set } :
for b1, b2 being Element of Funcs F1(),BOOLEAN st ( for b3 being Element of F1() holds Pj b1,b3 = F4(b3,F2(),F3()) ) & ( for b3 being Element of F1() holds Pj b2,b3 = F4(b3,F2(),F3()) ) holds
b1 = b2
proof end;

scheme :: BVFUNC_1:sch 2
s2{ F1() -> non empty set , F2( set ) -> set } :
for b1, b2 being Element of Funcs F1(),BOOLEAN st ( for b3 being Element of F1() holds Pj b1,b3 = F2(b3) ) & ( for b3 being Element of F1() holds Pj b2,b3 = F2(b3) ) holds
b1 = b2
proof end;

definition
let c1 be non empty set ;
let c2 be Element of BVF c1;
redefine func 'not' as 'not' c2 -> Element of BVF a1;
coherence
'not' c2 is Element of BVF c1
proof end;
let c3 be Element of BVF c1;
redefine func '&' as c2 '&' c3 -> Element of BVF a1;
coherence
c2 '&' c3 is Element of BVF c1
proof end;
end;

definition
let c1, c2 be boolean-valued Function;
func c1 'or' c2 -> Function means :Def5: :: BVFUNC_1:def 5
( dom a3 = (dom a1) /\ (dom a2) & ( for b1 being set st b1 in dom a3 holds
a3 . b1 = (a1 . b1) 'or' (a2 . b1) ) );
existence
ex b1 being Function st
( dom b1 = (dom c1) /\ (dom c2) & ( for b2 being set st b2 in dom b1 holds
b1 . b2 = (c1 . b2) 'or' (c2 . b2) ) )
proof end;
uniqueness
for b1, b2 being Function st dom b1 = (dom c1) /\ (dom c2) & ( for b3 being set st b3 in dom b1 holds
b1 . b3 = (c1 . b3) 'or' (c2 . b3) ) & dom b2 = (dom c1) /\ (dom c2) & ( for b3 being set st b3 in dom b2 holds
b2 . b3 = (c1 . b3) 'or' (c2 . b3) ) holds
b1 = b2
proof end;
commutativity
for b1 being Function
for b2, b3 being boolean-valued Function st dom b1 = (dom b2) /\ (dom b3) & ( for b4 being set st b4 in dom b1 holds
b1 . b4 = (b2 . b4) 'or' (b3 . b4) ) holds
( dom b1 = (dom b3) /\ (dom b2) & ( for b4 being set st b4 in dom b1 holds
b1 . b4 = (b3 . b4) 'or' (b2 . b4) ) )
;
func c1 'xor' c2 -> Function means :Def6: :: BVFUNC_1:def 6
( dom a3 = (dom a1) /\ (dom a2) & ( for b1 being set st b1 in dom a3 holds
a3 . b1 = (a1 . b1) 'xor' (a2 . b1) ) );
existence
ex b1 being Function st
( dom b1 = (dom c1) /\ (dom c2) & ( for b2 being set st b2 in dom b1 holds
b1 . b2 = (c1 . b2) 'xor' (c2 . b2) ) )
proof end;
uniqueness
for b1, b2 being Function st dom b1 = (dom c1) /\ (dom c2) & ( for b3 being set st b3 in dom b1 holds
b1 . b3 = (c1 . b3) 'xor' (c2 . b3) ) & dom b2 = (dom c1) /\ (dom c2) & ( for b3 being set st b3 in dom b2 holds
b2 . b3 = (c1 . b3) 'xor' (c2 . b3) ) holds
b1 = b2
proof end;
commutativity
for b1 being Function
for b2, b3 being boolean-valued Function st dom b1 = (dom b2) /\ (dom b3) & ( for b4 being set st b4 in dom b1 holds
b1 . b4 = (b2 . b4) 'xor' (b3 . b4) ) holds
( dom b1 = (dom b3) /\ (dom b2) & ( for b4 being set st b4 in dom b1 holds
b1 . b4 = (b3 . b4) 'xor' (b2 . b4) ) )
;
end;

:: deftheorem Def5 defines 'or' BVFUNC_1:def 5 :
for b1, b2 being boolean-valued Function
for b3 being Function holds
( b3 = b1 'or' b2 iff ( dom b3 = (dom b1) /\ (dom b2) & ( for b4 being set st b4 in dom b3 holds
b3 . b4 = (b1 . b4) 'or' (b2 . b4) ) ) );

:: deftheorem Def6 defines 'xor' BVFUNC_1:def 6 :
for b1, b2 being boolean-valued Function
for b3 being Function holds
( b3 = b1 'xor' b2 iff ( dom b3 = (dom b1) /\ (dom b2) & ( for b4 being set st b4 in dom b3 holds
b3 . b4 = (b1 . b4) 'xor' (b2 . b4) ) ) );

registration
let c1, c2 be boolean-valued Function;
cluster a1 'or' a2 -> boolean-valued ;
coherence
c1 'or' c2 is boolean-valued
proof end;
cluster a1 'xor' a2 -> boolean-valued ;
coherence
c1 'xor' c2 is boolean-valued
proof end;
end;

definition
let c1 be non empty set ;
let c2, c3 be Element of Funcs c1,BOOLEAN ;
redefine func 'or' as c2 'or' c3 -> Element of Funcs a1,BOOLEAN means :Def7: :: BVFUNC_1:def 7
for b1 being Element of a1 holds a4 . b1 = (a2 . b1) 'or' (a3 . b1);
coherence
c2 'or' c3 is Element of Funcs c1,BOOLEAN
proof end;
compatibility
for b1 being Element of Funcs c1,BOOLEAN holds
( b1 = c2 'or' c3 iff for b2 being Element of c1 holds b1 . b2 = (c2 . b2) 'or' (c3 . b2) )
proof end;
redefine func 'xor' as c2 'xor' c3 -> Element of Funcs a1,BOOLEAN means :: BVFUNC_1:def 8
for b1 being Element of a1 holds a4 . b1 = (a2 . b1) 'xor' (a3 . b1);
coherence
c2 'xor' c3 is Element of Funcs c1,BOOLEAN
proof end;
compatibility
for b1 being Element of Funcs c1,BOOLEAN holds
( b1 = c2 'xor' c3 iff for b2 being Element of c1 holds b1 . b2 = (c2 . b2) 'xor' (c3 . b2) )
proof end;
end;

:: deftheorem Def7 defines 'or' BVFUNC_1:def 7 :
for b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,BOOLEAN holds
( b4 = b2 'or' b3 iff for b5 being Element of b1 holds b4 . b5 = (b2 . b5) 'or' (b3 . b5) );

:: deftheorem Def8 defines 'xor' BVFUNC_1:def 8 :
for b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,BOOLEAN holds
( b4 = b2 'xor' b3 iff for b5 being Element of b1 holds b4 . b5 = (b2 . b5) 'xor' (b3 . b5) );

definition
let c1 be non empty set ;
let c2, c3 be Element of BVF c1;
redefine func 'or' as c2 'or' c3 -> Element of BVF a1;
coherence
c2 'or' c3 is Element of BVF c1
proof end;
redefine func 'xor' as c2 'xor' c3 -> Element of BVF a1;
coherence
c2 'xor' c3 is Element of BVF c1
proof end;
end;

definition
let c1, c2 be boolean-valued Function;
func c1 'imp' c2 -> Function means :Def9: :: BVFUNC_1:def 9
( dom a3 = (dom a1) /\ (dom a2) & ( for b1 being set st b1 in dom a3 holds
a3 . b1 = (a1 . b1) 'imp' (a2 . b1) ) );
existence
ex b1 being Function st
( dom b1 = (dom c1) /\ (dom c2) & ( for b2 being set st b2 in dom b1 holds
b1 . b2 = (c1 . b2) 'imp' (c2 . b2) ) )
proof end;
uniqueness
for b1, b2 being Function st dom b1 = (dom c1) /\ (dom c2) & ( for b3 being set st b3 in dom b1 holds
b1 . b3 = (c1 . b3) 'imp' (c2 . b3) ) & dom b2 = (dom c1) /\ (dom c2) & ( for b3 being set st b3 in dom b2 holds
b2 . b3 = (c1 . b3) 'imp' (c2 . b3) ) holds
b1 = b2
proof end;
func c1 'eqv' c2 -> Function means :Def10: :: BVFUNC_1:def 10
( dom a3 = (dom a1) /\ (dom a2) & ( for b1 being set st b1 in dom a3 holds
a3 . b1 = (a1 . b1) 'eqv' (a2 . b1) ) );
existence
ex b1 being Function st
( dom b1 = (dom c1) /\ (dom c2) & ( for b2 being set st b2 in dom b1 holds
b1 . b2 = (c1 . b2) 'eqv' (c2 . b2) ) )
proof end;
uniqueness
for b1, b2 being Function st dom b1 = (dom c1) /\ (dom c2) & ( for b3 being set st b3 in dom b1 holds
b1 . b3 = (c1 . b3) 'eqv' (c2 . b3) ) & dom b2 = (dom c1) /\ (dom c2) & ( for b3 being set st b3 in dom b2 holds
b2 . b3 = (c1 . b3) 'eqv' (c2 . b3) ) holds
b1 = b2
proof end;
commutativity
for b1 being Function
for b2, b3 being boolean-valued Function st dom b1 = (dom b2) /\ (dom b3) & ( for b4 being set st b4 in dom b1 holds
b1 . b4 = (b2 . b4) 'eqv' (b3 . b4) ) holds
( dom b1 = (dom b3) /\ (dom b2) & ( for b4 being set st b4 in dom b1 holds
b1 . b4 = (b3 . b4) 'eqv' (b2 . b4) ) )
;
end;

:: deftheorem Def9 defines 'imp' BVFUNC_1:def 9 :
for b1, b2 being boolean-valued Function
for b3 being Function holds
( b3 = b1 'imp' b2 iff ( dom b3 = (dom b1) /\ (dom b2) & ( for b4 being set st b4 in dom b3 holds
b3 . b4 = (b1 . b4) 'imp' (b2 . b4) ) ) );

:: deftheorem Def10 defines 'eqv' BVFUNC_1:def 10 :
for b1, b2 being boolean-valued Function
for b3 being Function holds
( b3 = b1 'eqv' b2 iff ( dom b3 = (dom b1) /\ (dom b2) & ( for b4 being set st b4 in dom b3 holds
b3 . b4 = (b1 . b4) 'eqv' (b2 . b4) ) ) );

registration
let c1, c2 be boolean-valued Function;
cluster a1 'imp' a2 -> boolean-valued ;
coherence
c1 'imp' c2 is boolean-valued
proof end;
cluster a1 'eqv' a2 -> boolean-valued ;
coherence
c1 'eqv' c2 is boolean-valued
proof end;
end;

definition
let c1 be non empty set ;
let c2, c3 be Element of Funcs c1,BOOLEAN ;
redefine func 'imp' as c2 'imp' c3 -> Element of Funcs a1,BOOLEAN means :Def11: :: BVFUNC_1:def 11
for b1 being Element of a1 holds a4 . b1 = ('not' (Pj a2,b1)) 'or' (Pj a3,b1);
coherence
c2 'imp' c3 is Element of Funcs c1,BOOLEAN
proof end;
compatibility
for b1 being Element of Funcs c1,BOOLEAN holds
( b1 = c2 'imp' c3 iff for b2 being Element of c1 holds b1 . b2 = ('not' (Pj c2,b2)) 'or' (Pj c3,b2) )
proof end;
redefine func 'eqv' as c2 'eqv' c3 -> Element of Funcs a1,BOOLEAN means :Def12: :: BVFUNC_1:def 12
for b1 being Element of a1 holds a4 . b1 = 'not' ((Pj a2,b1) 'xor' (Pj a3,b1));
coherence
c2 'eqv' c3 is Element of Funcs c1,BOOLEAN
proof end;
compatibility
for b1 being Element of Funcs c1,BOOLEAN holds
( b1 = c2 'eqv' c3 iff for b2 being Element of c1 holds b1 . b2 = 'not' ((Pj c2,b2) 'xor' (Pj c3,b2)) )
proof end;
end;

:: deftheorem Def11 defines 'imp' BVFUNC_1:def 11 :
for b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,BOOLEAN holds
( b4 = b2 'imp' b3 iff for b5 being Element of b1 holds b4 . b5 = ('not' (Pj b2,b5)) 'or' (Pj b3,b5) );

:: deftheorem Def12 defines 'eqv' BVFUNC_1:def 12 :
for b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,BOOLEAN holds
( b4 = b2 'eqv' b3 iff for b5 being Element of b1 holds b4 . b5 = 'not' ((Pj b2,b5) 'xor' (Pj b3,b5)) );

definition
let c1 be non empty set ;
let c2, c3 be Element of BVF c1;
redefine func 'imp' as c2 'imp' c3 -> Element of BVF a1;
coherence
c2 'imp' c3 is Element of BVF c1
proof end;
redefine func 'eqv' as c2 'eqv' c3 -> Element of BVF a1;
coherence
c2 'eqv' c3 is Element of BVF c1
proof end;
end;

definition
let c1 be non empty set ;
func O_el c1 -> Element of Funcs a1,BOOLEAN means :Def13: :: BVFUNC_1:def 13
for b1 being Element of a1 holds Pj a2,b1 = FALSE ;
existence
ex b1 being Element of Funcs c1,BOOLEAN st
for b2 being Element of c1 holds Pj b1,b2 = FALSE
proof end;
uniqueness
for b1, b2 being Element of Funcs c1,BOOLEAN st ( for b3 being Element of c1 holds Pj b1,b3 = FALSE ) & ( for b3 being Element of c1 holds Pj b2,b3 = FALSE ) holds
b1 = b2
proof end;
end;

:: deftheorem Def13 defines O_el BVFUNC_1:def 13 :
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds
( b2 = O_el b1 iff for b3 being Element of b1 holds Pj b2,b3 = FALSE );

definition
let c1 be non empty set ;
func I_el c1 -> Element of Funcs a1,BOOLEAN means :Def14: :: BVFUNC_1:def 14
for b1 being Element of a1 holds Pj a2,b1 = TRUE ;
existence
ex b1 being Element of Funcs c1,BOOLEAN st
for b2 being Element of c1 holds Pj b1,b2 = TRUE
proof end;
uniqueness
for b1, b2 being Element of Funcs c1,BOOLEAN st ( for b3 being Element of c1 holds Pj b1,b3 = TRUE ) & ( for b3 being Element of c1 holds Pj b2,b3 = TRUE ) holds
b1 = b2
proof end;
end;

:: deftheorem Def14 defines I_el BVFUNC_1:def 14 :
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds
( b2 = I_el b1 iff for b3 being Element of b1 holds Pj b2,b3 = TRUE );

theorem Th1: :: BVFUNC_1:1
canceled;

theorem Th2: :: BVFUNC_1:2
canceled;

theorem Th3: :: BVFUNC_1:3
canceled;

theorem Th4: :: BVFUNC_1:4
for b1 being boolean-valued Function holds 'not' ('not' b1) = b1
proof end;

theorem Th5: :: BVFUNC_1:5
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds
( 'not' (I_el b1) = O_el b1 & 'not' (O_el b1) = I_el b1 )
proof end;

theorem Th6: :: BVFUNC_1:6
for b1 being non empty set
for b2, b3 being Element of Funcs b1,BOOLEAN holds b2 '&' b2 = b2
proof end;

theorem Th7: :: BVFUNC_1:7
for b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,BOOLEAN holds (b2 '&' b3) '&' b4 = b2 '&' (b3 '&' b4)
proof end;

theorem Th8: :: BVFUNC_1:8
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds b2 '&' (O_el b1) = O_el b1
proof end;

theorem Th9: :: BVFUNC_1:9
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds b2 '&' (I_el b1) = b2
proof end;

theorem Th10: :: BVFUNC_1:10
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds b2 'or' b2 = b2
proof end;

theorem Th11: :: BVFUNC_1:11
for b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,BOOLEAN holds (b2 'or' b3) 'or' b4 = b2 'or' (b3 'or' b4)
proof end;

theorem Th12: :: BVFUNC_1:12
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds b2 'or' (O_el b1) = b2
proof end;

theorem Th13: :: BVFUNC_1:13
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds b2 'or' (I_el b1) = I_el b1
proof end;

theorem Th14: :: BVFUNC_1:14
for b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,BOOLEAN holds (b2 '&' b3) 'or' b4 = (b2 'or' b4) '&' (b3 'or' b4)
proof end;

theorem Th15: :: BVFUNC_1:15
for b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,BOOLEAN holds (b2 'or' b3) '&' b4 = (b2 '&' b4) 'or' (b3 '&' b4)
proof end;

theorem Th16: :: BVFUNC_1:16
for b1 being non empty set
for b2, b3 being Element of Funcs b1,BOOLEAN holds 'not' (b2 'or' b3) = ('not' b2) '&' ('not' b3)
proof end;

theorem Th17: :: BVFUNC_1:17
for b1 being non empty set
for b2, b3 being Element of Funcs b1,BOOLEAN holds 'not' (b2 '&' b3) = ('not' b2) 'or' ('not' b3)
proof end;

definition
let c1 be non empty set ;
let c2, c3 be Element of Funcs c1,BOOLEAN ;
pred c2 '<' c3 means :Def15: :: BVFUNC_1:def 15
for b1 being Element of a1 st Pj a2,b1 = TRUE holds
Pj a3,b1 = TRUE ;
reflexivity
for b1 being Element of Funcs c1,BOOLEAN
for b2 being Element of c1 st Pj b1,b2 = TRUE holds
Pj b1,b2 = TRUE
;
end;

:: deftheorem Def15 defines '<' BVFUNC_1:def 15 :
for b1 being non empty set
for b2, b3 being Element of Funcs b1,BOOLEAN holds
( b2 '<' b3 iff for b4 being Element of b1 st Pj b2,b4 = TRUE holds
Pj b3,b4 = TRUE );

theorem Th18: :: BVFUNC_1:18
for b1 being non empty set
for b2, b3, b4 being Element of Funcs b1,BOOLEAN holds
( ( b2 '<' b3 & b3 '<' b2 implies b2 = b3 ) & ( b2 '<' b3 & b3 '<' b4 implies b2 '<' b4 ) )
proof end;

theorem Th19: :: BVFUNC_1:19
for b1 being non empty set
for b2, b3 being Element of Funcs b1,BOOLEAN holds
( b2 'imp' b3 = I_el b1 iff b2 '<' b3 )
proof end;

theorem Th20: :: BVFUNC_1:20
for b1 being non empty set
for b2, b3 being Element of Funcs b1,BOOLEAN holds
( b2 'eqv' b3 = I_el b1 iff b2 = b3 )
proof end;

theorem Th21: :: BVFUNC_1:21
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds
( O_el b1 '<' b2 & b2 '<' I_el b1 )
proof end;

definition
let c1 be non empty set ;
let c2 be Element of Funcs c1,BOOLEAN ;
func B_INF c2 -> Element of Funcs a1,BOOLEAN means :Def16: :: BVFUNC_1:def 16
a3 = I_el a1 if for b1 being Element of a1 holds Pj a2,b1 = TRUE
otherwise a3 = O_el a1;
correctness
consistency
for b1 being Element of Funcs c1,BOOLEAN holds verum
;
existence
( ( for b1 being Element of Funcs c1,BOOLEAN holds verum ) & ( ( for b1 being Element of c1 holds Pj c2,b1 = TRUE ) implies ex b1 being Element of Funcs c1,BOOLEAN st b1 = I_el c1 ) & ( not for b1 being Element of c1 holds Pj c2,b1 = TRUE implies ex b1 being Element of Funcs c1,BOOLEAN st b1 = O_el c1 ) )
;
uniqueness
for b1, b2 being Element of Funcs c1,BOOLEAN holds
( ( ( for b3 being Element of c1 holds Pj c2,b3 = TRUE ) & b1 = I_el c1 & b2 = I_el c1 implies b1 = b2 ) & ( not for b3 being Element of c1 holds Pj c2,b3 = TRUE & b1 = O_el c1 & b2 = O_el c1 implies b1 = b2 ) )
;
;
func B_SUP c2 -> Element of Funcs a1,BOOLEAN means :Def17: :: BVFUNC_1:def 17
a3 = O_el a1 if for b1 being Element of a1 holds Pj a2,b1 = FALSE
otherwise a3 = I_el a1;
correctness
consistency
for b1 being Element of Funcs c1,BOOLEAN holds verum
;
existence
( ( for b1 being Element of Funcs c1,BOOLEAN holds verum ) & ( ( for b1 being Element of c1 holds Pj c2,b1 = FALSE ) implies ex b1 being Element of Funcs c1,BOOLEAN st b1 = O_el c1 ) & ( not for b1 being Element of c1 holds Pj c2,b1 = FALSE implies ex b1 being Element of Funcs c1,BOOLEAN st b1 = I_el c1 ) )
;
uniqueness
for b1, b2 being Element of Funcs c1,BOOLEAN holds
( ( ( for b3 being Element of c1 holds Pj c2,b3 = FALSE ) & b1 = O_el c1 & b2 = O_el c1 implies b1 = b2 ) & ( not for b3 being Element of c1 holds Pj c2,b3 = FALSE & b1 = I_el c1 & b2 = I_el c1 implies b1 = b2 ) )
;
;
end;

:: deftheorem Def16 defines B_INF BVFUNC_1:def 16 :
for b1 being non empty set
for b2, b3 being Element of Funcs b1,BOOLEAN holds
( ( ( for b4 being Element of b1 holds Pj b2,b4 = TRUE ) implies ( b3 = B_INF b2 iff b3 = I_el b1 ) ) & ( not for b4 being Element of b1 holds Pj b2,b4 = TRUE implies ( b3 = B_INF b2 iff b3 = O_el b1 ) ) );

:: deftheorem Def17 defines B_SUP BVFUNC_1:def 17 :
for b1 being non empty set
for b2, b3 being Element of Funcs b1,BOOLEAN holds
( ( ( for b4 being Element of b1 holds Pj b2,b4 = FALSE ) implies ( b3 = B_SUP b2 iff b3 = O_el b1 ) ) & ( not for b4 being Element of b1 holds Pj b2,b4 = FALSE implies ( b3 = B_SUP b2 iff b3 = I_el b1 ) ) );

theorem Th22: :: BVFUNC_1:22
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds
( 'not' (B_INF b2) = B_SUP ('not' b2) & 'not' (B_SUP b2) = B_INF ('not' b2) )
proof end;

theorem Th23: :: BVFUNC_1:23
for b1 being non empty set holds
( B_INF (O_el b1) = O_el b1 & B_INF (I_el b1) = I_el b1 & B_SUP (O_el b1) = O_el b1 & B_SUP (I_el b1) = I_el b1 )
proof end;

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

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

registration
let c1 be non empty set ;
cluster constant Element of Funcs a1,BOOLEAN ;
existence
ex b1 being Element of Funcs c1,BOOLEAN st b1 is constant
proof end;
end;

theorem Th24: :: BVFUNC_1:24
for b1 being non empty set
for b2 being constant Element of Funcs b1,BOOLEAN holds
( b2 = O_el b1 or b2 = I_el b1 )
proof end;

theorem Th25: :: BVFUNC_1:25
for b1 being non empty set
for b2 being constant Element of Funcs b1,BOOLEAN holds
( B_INF b2 = b2 & B_SUP b2 = b2 )
proof end;

theorem Th26: :: BVFUNC_1:26
for b1 being non empty set
for b2, b3 being Element of Funcs b1,BOOLEAN holds
( B_INF (b2 '&' b3) = (B_INF b2) '&' (B_INF b3) & B_SUP (b2 'or' b3) = (B_SUP b2) 'or' (B_SUP b3) )
proof end;

theorem Th27: :: BVFUNC_1:27
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN
for b3 being constant Element of Funcs b1,BOOLEAN holds
( B_INF (b3 'imp' b2) = b3 'imp' (B_INF b2) & B_INF (b2 'imp' b3) = (B_SUP b2) 'imp' b3 )
proof end;

theorem Th28: :: BVFUNC_1:28
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN
for b3 being constant Element of Funcs b1,BOOLEAN holds
( B_INF (b3 'or' b2) = b3 'or' (B_INF b2) & B_SUP (b3 '&' b2) = b3 '&' (B_SUP b2) & B_SUP (b2 '&' b3) = (B_SUP b2) '&' b3 )
proof end;

theorem Th29: :: BVFUNC_1:29
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN
for b3 being Element of b1 holds Pj (B_INF b2),b3 '<' Pj b2,b3
proof end;

theorem Th30: :: BVFUNC_1:30
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN
for b3 being Element of b1 holds Pj b2,b3 '<' Pj (B_SUP b2),b3
proof end;

definition
let c1 be non empty set ;
let c2 be Element of Funcs c1,BOOLEAN ;
let c3 be a_partition of c1;
pred c2 is_dependent_of c3 means :Def18: :: BVFUNC_1:def 18
for b1 being set st b1 in a3 holds
for b2, b3 being set st b2 in b1 & b3 in b1 holds
a2 . b2 = a2 . b3;
end;

:: deftheorem Def18 defines is_dependent_of BVFUNC_1:def 18 :
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN
for b3 being a_partition of b1 holds
( b2 is_dependent_of b3 iff for b4 being set st b4 in b3 holds
for b5, b6 being set st b5 in b4 & b6 in b4 holds
b2 . b5 = b2 . b6 );

theorem Th31: :: BVFUNC_1:31
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds b2 is_dependent_of %I b1
proof end;

theorem Th32: :: BVFUNC_1:32
for b1 being non empty set
for b2 being constant Element of Funcs b1,BOOLEAN holds b2 is_dependent_of %O b1
proof end;

definition
let c1 be non empty set ;
let c2 be a_partition of c1;
redefine mode Element as Element of c2 -> Subset of a1;
coherence
for b1 being Element of c2 holds b1 is Subset of c1
proof end;
end;

definition
let c1 be non empty set ;
let c2 be Element of c1;
let c3 be a_partition of c1;
redefine func EqClass as EqClass c2,c3 -> Element of a3;
coherence
EqClass c2,c3 is Element of c3
by T_1TOPSP:def 1;
end;

definition
let c1 be non empty set ;
let c2 be Element of Funcs c1,BOOLEAN ;
let c3 be a_partition of c1;
func B_INF c2,c3 -> Element of Funcs a1,BOOLEAN means :Def19: :: BVFUNC_1:def 19
for b1 being Element of a1 holds
( ( ( for b2 being Element of a1 st b2 in EqClass b1,a3 holds
Pj a2,b2 = TRUE ) implies Pj a4,b1 = TRUE ) & ( ex b2 being Element of a1 st
( b2 in EqClass b1,a3 & not Pj a2,b2 = TRUE ) implies Pj a4,b1 = FALSE ) );
existence
ex b1 being Element of Funcs c1,BOOLEAN st
for b2 being Element of c1 holds
( ( ( for b3 being Element of c1 st b3 in EqClass b2,c3 holds
Pj c2,b3 = TRUE ) implies Pj b1,b2 = TRUE ) & ( ex b3 being Element of c1 st
( b3 in EqClass b2,c3 & not Pj c2,b3 = TRUE ) implies Pj b1,b2 = FALSE ) )
proof end;
uniqueness
for b1, b2 being Element of Funcs c1,BOOLEAN st ( for b3 being Element of c1 holds
( ( ( for b4 being Element of c1 st b4 in EqClass b3,c3 holds
Pj c2,b4 = TRUE ) implies Pj b1,b3 = TRUE ) & ( ex b4 being Element of c1 st
( b4 in EqClass b3,c3 & not Pj c2,b4 = TRUE ) implies Pj b1,b3 = FALSE ) ) ) & ( for b3 being Element of c1 holds
( ( ( for b4 being Element of c1 st b4 in EqClass b3,c3 holds
Pj c2,b4 = TRUE ) implies Pj b2,b3 = TRUE ) & ( ex b4 being Element of c1 st
( b4 in EqClass b3,c3 & not Pj c2,b4 = TRUE ) implies Pj b2,b3 = FALSE ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def19 defines B_INF BVFUNC_1:def 19 :
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN
for b3 being a_partition of b1
for b4 being Element of Funcs b1,BOOLEAN holds
( b4 = B_INF b2,b3 iff for b5 being Element of b1 holds
( ( ( for b6 being Element of b1 st b6 in EqClass b5,b3 holds
Pj b2,b6 = TRUE ) implies Pj b4,b5 = TRUE ) & ( ex b6 being Element of b1 st
( b6 in EqClass b5,b3 & not Pj b2,b6 = TRUE ) implies Pj b4,b5 = FALSE ) ) );

definition
let c1 be non empty set ;
let c2 be Element of Funcs c1,BOOLEAN ;
let c3 be a_partition of c1;
func B_SUP c2,c3 -> Element of Funcs a1,BOOLEAN means :Def20: :: BVFUNC_1:def 20
for b1 being Element of a1 holds
( ( ex b2 being Element of a1 st
( b2 in EqClass b1,a3 & Pj a2,b2 = TRUE ) implies Pj a4,b1 = TRUE ) & ( ( for b2 being Element of a1 holds
( not b2 in EqClass b1,a3 or not Pj a2,b2 = TRUE ) ) implies Pj a4,b1 = FALSE ) );
existence
ex b1 being Element of Funcs c1,BOOLEAN st
for b2 being Element of c1 holds
( ( ex b3 being Element of c1 st
( b3 in EqClass b2,c3 & Pj c2,b3 = TRUE ) implies Pj b1,b2 = TRUE ) & ( ( for b3 being Element of c1 holds
( not b3 in EqClass b2,c3 or not Pj c2,b3 = TRUE ) ) implies Pj b1,b2 = FALSE ) )
proof end;
uniqueness
for b1, b2 being Element of Funcs c1,BOOLEAN st ( for b3 being Element of c1 holds
( ( ex b4 being Element of c1 st
( b4 in EqClass b3,c3 & Pj c2,b4 = TRUE ) implies Pj b1,b3 = TRUE ) & ( ( for b4 being Element of c1 holds
( not b4 in EqClass b3,c3 or not Pj c2,b4 = TRUE ) ) implies Pj b1,b3 = FALSE ) ) ) & ( for b3 being Element of c1 holds
( ( ex b4 being Element of c1 st
( b4 in EqClass b3,c3 & Pj c2,b4 = TRUE ) implies Pj b2,b3 = TRUE ) & ( ( for b4 being Element of c1 holds
( not b4 in EqClass b3,c3 or not Pj c2,b4 = TRUE ) ) implies Pj b2,b3 = FALSE ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def20 defines B_SUP BVFUNC_1:def 20 :
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN
for b3 being a_partition of b1
for b4 being Element of Funcs b1,BOOLEAN holds
( b4 = B_SUP b2,b3 iff for b5 being Element of b1 holds
( ( ex b6 being Element of b1 st
( b6 in EqClass b5,b3 & Pj b2,b6 = TRUE ) implies Pj b4,b5 = TRUE ) & ( ( for b6 being Element of b1 holds
( not b6 in EqClass b5,b3 or not Pj b2,b6 = TRUE ) ) implies Pj b4,b5 = FALSE ) ) );

theorem Th33: :: BVFUNC_1:33
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN
for b3 being a_partition of b1 holds B_INF b2,b3 is_dependent_of b3
proof end;

theorem Th34: :: BVFUNC_1:34
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN
for b3 being a_partition of b1 holds B_SUP b2,b3 is_dependent_of b3
proof end;

theorem Th35: :: BVFUNC_1:35
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN
for b3 being a_partition of b1 holds B_INF b2,b3 '<' b2
proof end;

theorem Th36: :: BVFUNC_1:36
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN
for b3 being a_partition of b1 holds b2 '<' B_SUP b2,b3
proof end;

theorem Th37: :: BVFUNC_1:37
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN
for b3 being a_partition of b1 holds 'not' (B_INF b2,b3) = B_SUP ('not' b2),b3
proof end;

theorem Th38: :: BVFUNC_1:38
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds B_INF b2,(%O b1) = B_INF b2
proof end;

theorem Th39: :: BVFUNC_1:39
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds B_SUP b2,(%O b1) = B_SUP b2
proof end;

theorem Th40: :: BVFUNC_1:40
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds B_INF b2,(%I b1) = b2
proof end;

theorem Th41: :: BVFUNC_1:41
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds B_SUP b2,(%I b1) = b2
proof end;

theorem Th42: :: BVFUNC_1:42
for b1 being non empty set
for b2, b3 being Element of Funcs b1,BOOLEAN
for b4 being a_partition of b1 holds B_INF (b2 '&' b3),b4 = (B_INF b2,b4) '&' (B_INF b3,b4)
proof end;

theorem Th43: :: BVFUNC_1:43
for b1 being non empty set
for b2, b3 being Element of Funcs b1,BOOLEAN
for b4 being a_partition of b1 holds B_SUP (b2 'or' b3),b4 = (B_SUP b2,b4) 'or' (B_SUP b3,b4)
proof end;

definition
let c1 be non empty set ;
let c2 be Element of Funcs c1,BOOLEAN ;
func GPart c2 -> a_partition of a1 equals :: BVFUNC_1:def 21
{{ b1 where B is Element of a1 : a2 . b1 = TRUE } ,{ b1 where B is Element of a1 : a2 . b1 = FALSE } } \ {{} };
correctness
coherence
{{ b1 where B is Element of c1 : c2 . b1 = TRUE } ,{ b1 where B is Element of c1 : c2 . b1 = FALSE } } \ {{} } is a_partition of c1
;
proof end;
end;

:: deftheorem Def21 defines GPart BVFUNC_1:def 21 :
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds GPart b2 = {{ b3 where B is Element of b1 : b2 . b3 = TRUE } ,{ b3 where B is Element of b1 : b2 . b3 = FALSE } } \ {{} };

theorem Th44: :: BVFUNC_1:44
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN holds b2 is_dependent_of GPart b2
proof end;

theorem Th45: :: BVFUNC_1:45
for b1 being non empty set
for b2 being Element of Funcs b1,BOOLEAN
for b3 being a_partition of b1 st b2 is_dependent_of b3 holds
b3 is_finer_than GPart b2
proof end;