:: COHSP_1 semantic presentation

Lemma1: for b1, b2 being non empty set
for b3 being Function of b1,b2
for b4 being Element of b1
for b5 being set st b5 in b3 . b4 holds
b5 in union b2
by TARSKI:def 4;

definition
let c1 be set ;
redefine attr a1 is binary_complete means :Def1: :: COHSP_1:def 1
for b1 being set st ( for b2, b3 being set st b2 in b1 & b3 in b1 holds
b2 \/ b3 in a1 ) holds
union b1 in a1;
compatibility
( c1 is binary_complete iff for b1 being set st ( for b2, b3 being set st b2 in b1 & b3 in b1 holds
b2 \/ b3 in c1 ) holds
union b1 in c1 )
proof end;
end;

:: deftheorem Def1 defines binary_complete COHSP_1:def 1 :
for b1 being set holds
( b1 is binary_complete iff for b2 being set st ( for b3, b4 being set st b3 in b2 & b4 in b2 holds
b3 \/ b4 in b1 ) holds
union b2 in b1 );

registration
cluster finite set ;
existence
ex b1 being Coherence_Space st b1 is finite
by COH_SP:3;
end;

definition
let c1 be set ;
func FlatCoh c1 -> set equals :: COHSP_1:def 2
CohSp (id a1);
correctness
coherence
CohSp (id c1) is set
;
;
func Sub_of_Fin c1 -> Subset of a1 means :Def3: :: COHSP_1:def 3
for b1 being set holds
( b1 in a2 iff ( b1 in a1 & b1 is finite ) );
existence
ex b1 being Subset of c1 st
for b2 being set holds
( b2 in b1 iff ( b2 in c1 & b2 is finite ) )
proof end;
correctness
uniqueness
for b1, b2 being Subset of c1 st ( for b3 being set holds
( b3 in b1 iff ( b3 in c1 & b3 is finite ) ) ) & ( for b3 being set holds
( b3 in b2 iff ( b3 in c1 & b3 is finite ) ) ) holds
b1 = b2
;
proof end;
end;

:: deftheorem Def2 defines FlatCoh COHSP_1:def 2 :
for b1 being set holds FlatCoh b1 = CohSp (id b1);

:: deftheorem Def3 defines Sub_of_Fin COHSP_1:def 3 :
for b1 being set
for b2 being Subset of b1 holds
( b2 = Sub_of_Fin b1 iff for b3 being set holds
( b3 in b2 iff ( b3 in b1 & b3 is finite ) ) );

theorem Th1: :: COHSP_1:1
for b1, b2 being set holds
( b2 in FlatCoh b1 iff ( b2 = {} or ex b3 being set st
( b2 = {b3} & b3 in b1 ) ) )
proof end;

theorem Th2: :: COHSP_1:2
for b1 being set holds union (FlatCoh b1) = b1
proof end;

theorem Th3: :: COHSP_1:3
for b1 being subset-closed finite set holds Sub_of_Fin b1 = b1
proof end;

registration
cluster {{} } -> subset-closed binary_complete ;
coherence
( {{} } is subset-closed & {{} } is binary_complete )
by COH_SP:3;
let c1 be set ;
cluster bool a1 -> subset-closed binary_complete ;
coherence
( bool c1 is subset-closed & bool c1 is binary_complete )
by COH_SP:2;
cluster FlatCoh a1 -> non empty subset-closed binary_complete ;
coherence
( not FlatCoh c1 is empty & FlatCoh c1 is subset-closed & FlatCoh c1 is binary_complete )
;
end;

registration
let c1 be non empty subset-closed set ;
cluster Sub_of_Fin a1 -> non empty subset-closed ;
coherence
( not Sub_of_Fin c1 is empty & Sub_of_Fin c1 is subset-closed )
proof end;
end;

theorem Th4: :: COHSP_1:4
Web {{} } = {}
proof end;

scheme :: COHSP_1:sch 1
s1{ F1() -> set , F2() -> set , P1[ set ] } :
ex b1 being set st
( b1 in F2() & P1[b1] & ( for b2 being set st b2 in F2() & P1[b2] & b2 c= b1 holds
b2 = b1 ) )
provided
E6: F1() in F2() and
E7: P1[F1()] and
E8: F1() is finite
proof end;

registration
let c1 be Coherence_Space;
cluster finite Element of a1;
existence
ex b1 being Element of c1 st b1 is finite
proof end;
end;

definition
let c1 be set ;
attr a1 is c=directed means :: COHSP_1:def 4
for b1 being finite Subset of a1 ex b2 being set st
( union b1 c= b2 & b2 in a1 );
attr a1 is c=filtered means :: COHSP_1:def 5
for b1 being finite Subset of a1 ex b2 being set st
( ( for b3 being set st b3 in b1 holds
b2 c= b3 ) & b2 in a1 );
end;

:: deftheorem Def4 defines c=directed COHSP_1:def 4 :
for b1 being set holds
( b1 is c=directed iff for b2 being finite Subset of b1 ex b3 being set st
( union b2 c= b3 & b3 in b1 ) );

:: deftheorem Def5 defines c=filtered COHSP_1:def 5 :
for b1 being set holds
( b1 is c=filtered iff for b2 being finite Subset of b1 ex b3 being set st
( ( for b4 being set st b4 in b2 holds
b3 c= b4 ) & b3 in b1 ) );

registration
cluster c=directed -> non empty set ;
coherence
for b1 being set st b1 is c=directed holds
not b1 is empty
proof end;
cluster c=filtered -> non empty set ;
coherence
for b1 being set st b1 is c=filtered holds
not b1 is empty
proof end;
end;

theorem Th5: :: COHSP_1:5
for b1 being set st b1 is c=directed holds
for b2, b3 being set st b2 in b1 & b3 in b1 holds
ex b4 being set st
( b2 \/ b3 c= b4 & b4 in b1 )
proof end;

theorem Th6: :: COHSP_1:6
for b1 being non empty set st ( for b2, b3 being set st b2 in b1 & b3 in b1 holds
ex b4 being set st
( b2 \/ b3 c= b4 & b4 in b1 ) ) holds
b1 is c=directed
proof end;

theorem Th7: :: COHSP_1:7
for b1 being set st b1 is c=filtered holds
for b2, b3 being set st b2 in b1 & b3 in b1 holds
ex b4 being set st
( b4 c= b2 /\ b3 & b4 in b1 )
proof end;

theorem Th8: :: COHSP_1:8
for b1 being non empty set st ( for b2, b3 being set st b2 in b1 & b3 in b1 holds
ex b4 being set st
( b4 c= b2 /\ b3 & b4 in b1 ) ) holds
b1 is c=filtered
proof end;

theorem Th9: :: COHSP_1:9
for b1 being set holds
( {b1} is c=directed & {b1} is c=filtered )
proof end;

E10: now
let c1, c2 be set ;
thus union {c1,c2,(c1 \/ c2)} = union ({c1,c2} \/ {(c1 \/ c2)}) by ENUMSET1:43
.= (union {c1,c2}) \/ (union {(c1 \/ c2)}) by ZFMISC_1:96
.= (c1 \/ c2) \/ (union {(c1 \/ c2)}) by ZFMISC_1:93
.= (c1 \/ c2) \/ (c1 \/ c2) by ZFMISC_1:31
.= c1 \/ c2 ;
end;

theorem Th10: :: COHSP_1:10
for b1, b2 being set holds {b1,b2,(b1 \/ b2)} is c=directed
proof end;

theorem Th11: :: COHSP_1:11
for b1, b2 being set holds {b1,b2,(b1 /\ b2)} is c=filtered
proof end;

registration
cluster non empty finite c=directed c=filtered set ;
existence
ex b1 being set st
( b1 is c=directed & b1 is c=filtered & b1 is finite )
proof end;
end;

registration
let c1 be non empty set ;
cluster non empty finite c=directed c=filtered Element of bool a1;
existence
ex b1 being Subset of c1 st
( b1 is c=directed & b1 is c=filtered & b1 is finite )
proof end;
end;

theorem Th12: :: COHSP_1:12
for b1 being set holds
( Fin b1 is c=directed & Fin b1 is c=filtered )
proof end;

registration
let c1 be set ;
cluster Fin a1 -> c=directed c=filtered ;
coherence
( Fin c1 is c=directed & Fin c1 is c=filtered )
by Th12;
end;

E12: now
let c1 be non empty subset-closed set ;
let c2 be Element of c1;
thus Fin c2 c= c1
proof
let c3 be set ; :: according to TARSKI:def 3
assume c3 in Fin c2 ;
then c3 c= c2 by FINSUB_1:def 5;
hence c3 in c1 by CLASSES1:def 1;
end;
end;

registration
let c1 be non empty subset-closed set ;
cluster non empty preBoolean Element of bool a1;
existence
ex b1 being Subset of c1 st
( b1 is preBoolean & not b1 is empty )
proof end;
end;

definition
let c1 be non empty subset-closed set ;
let c2 be Element of c1;
redefine func Fin as Fin c2 -> non empty preBoolean Subset of a1;
coherence
Fin c2 is non empty preBoolean Subset of c1
proof end;
end;

theorem Th13: :: COHSP_1:13
for b1 being non empty set
for b2 being set st b1 is c=directed & b2 c= union b1 & b2 is finite holds
ex b3 being set st
( b3 in b1 & b2 c= b3 )
proof end;

notation
let c1 be set ;
synonym multiplicative c1 for cap-closed c1;
end;

definition
let c1 be set ;
canceled;
attr a1 is d.union-closed means :Def7: :: COHSP_1:def 7
for b1 being Subset of a1 st b1 is c=directed holds
union b1 in a1;
end;

:: deftheorem Def6 COHSP_1:def 6 :
canceled;

:: deftheorem Def7 defines d.union-closed COHSP_1:def 7 :
for b1 being set holds
( b1 is d.union-closed iff for b2 being Subset of b1 st b2 is c=directed holds
union b2 in b1 );

registration
cluster subset-closed -> multiplicative set ;
coherence
for b1 being set st b1 is subset-closed holds
b1 is multiplicative
proof end;
end;

theorem Th14: :: COHSP_1:14
canceled;

theorem Th15: :: COHSP_1:15
for b1 being Coherence_Space
for b2 being c=directed Subset of b1 holds union b2 in b1
proof end;

registration
cluster -> multiplicative d.union-closed set ;
coherence
for b1 being Coherence_Space holds b1 is d.union-closed
proof end;
end;

registration
cluster multiplicative d.union-closed set ;
existence
ex b1 being Coherence_Space st
( b1 is multiplicative & b1 is d.union-closed )
proof end;
end;

definition
let c1 be non empty d.union-closed set ;
let c2 be c=directed Subset of c1;
redefine func union as union c2 -> Element of a1;
coherence
union c2 is Element of c1
by Def7;
end;

definition
let c1, c2 be set ;
pred c1 includes_lattice_of c2 means :: COHSP_1:def 8
for b1, b2 being set st b1 in a2 & b2 in a2 holds
( b1 /\ b2 in a1 & b1 \/ b2 in a1 );
end;

:: deftheorem Def8 defines includes_lattice_of COHSP_1:def 8 :
for b1, b2 being set holds
( b1 includes_lattice_of b2 iff for b3, b4 being set st b3 in b2 & b4 in b2 holds
( b3 /\ b4 in b1 & b3 \/ b4 in b1 ) );

theorem Th16: :: COHSP_1:16
for b1 being non empty set st b1 includes_lattice_of b1 holds
( b1 is c=directed & b1 is c=filtered )
proof end;

definition
let c1, c2, c3 be set ;
pred c1 includes_lattice_of c2,c3 means :: COHSP_1:def 9
a1 includes_lattice_of {a2,a3};
end;

:: deftheorem Def9 defines includes_lattice_of COHSP_1:def 9 :
for b1, b2, b3 being set holds
( b1 includes_lattice_of b2,b3 iff b1 includes_lattice_of {b2,b3} );

theorem Th17: :: COHSP_1:17
for b1, b2, b3 being set holds
( b1 includes_lattice_of b2,b3 iff ( b2 in b1 & b3 in b1 & b2 /\ b3 in b1 & b2 \/ b3 in b1 ) )
proof end;

definition
let c1 be Function;
attr a1 is union-distributive means :Def10: :: COHSP_1:def 10
for b1 being Subset of (dom a1) st union b1 in dom a1 holds
a1 . (union b1) = union (a1 .: b1);
attr a1 is d.union-distributive means :Def11: :: COHSP_1:def 11
for b1 being Subset of (dom a1) st b1 is c=directed & union b1 in dom a1 holds
a1 . (union b1) = union (a1 .: b1);
end;

:: deftheorem Def10 defines union-distributive COHSP_1:def 10 :
for b1 being Function holds
( b1 is union-distributive iff for b2 being Subset of (dom b1) st union b2 in dom b1 holds
b1 . (union b2) = union (b1 .: b2) );

:: deftheorem Def11 defines d.union-distributive COHSP_1:def 11 :
for b1 being Function holds
( b1 is d.union-distributive iff for b2 being Subset of (dom b1) st b2 is c=directed & union b2 in dom b1 holds
b1 . (union b2) = union (b1 .: b2) );

definition
let c1 be Function;
attr a1 is c=-monotone means :Def12: :: COHSP_1:def 12
for b1, b2 being set st b1 in dom a1 & b2 in dom a1 & b1 c= b2 holds
a1 . b1 c= a1 . b2;
attr a1 is cap-distributive means :Def13: :: COHSP_1:def 13
for b1, b2 being set st dom a1 includes_lattice_of b1,b2 holds
a1 . (b1 /\ b2) = (a1 . b1) /\ (a1 . b2);
end;

:: deftheorem Def12 defines c=-monotone COHSP_1:def 12 :
for b1 being Function holds
( b1 is c=-monotone iff for b2, b3 being set st b2 in dom b1 & b3 in dom b1 & b2 c= b3 holds
b1 . b2 c= b1 . b3 );

:: deftheorem Def13 defines cap-distributive COHSP_1:def 13 :
for b1 being Function holds
( b1 is cap-distributive iff for b2, b3 being set st dom b1 includes_lattice_of b2,b3 holds
b1 . (b2 /\ b3) = (b1 . b2) /\ (b1 . b3) );

registration
cluster d.union-distributive -> c=-monotone set ;
coherence
for b1 being Function st b1 is d.union-distributive holds
b1 is c=-monotone
proof end;
cluster union-distributive -> d.union-distributive set ;
coherence
for b1 being Function st b1 is union-distributive holds
b1 is d.union-distributive
proof end;
end;

theorem Th18: :: COHSP_1:18
for b1 being Function st b1 is union-distributive holds
for b2, b3 being set st b2 in dom b1 & b3 in dom b1 & b2 \/ b3 in dom b1 holds
b1 . (b2 \/ b3) = (b1 . b2) \/ (b1 . b3)
proof end;

theorem Th19: :: COHSP_1:19
for b1 being Function st b1 is union-distributive holds
b1 . {} = {}
proof end;

registration
let c1, c2 be Coherence_Space;
cluster union-distributive d.union-distributive c=-monotone cap-distributive M5(a1,a2);
existence
ex b1 being Function of c1,c2 st
( b1 is union-distributive & b1 is cap-distributive )
proof end;
end;

registration
let c1 be Coherence_Space;
cluster union-distributive d.union-distributive c=-monotone cap-distributive ManySortedSet of a1;
existence
ex b1 being ManySortedSet of c1 st
( b1 is union-distributive & b1 is cap-distributive )
proof end;
end;

definition
let c1 be Function;
attr a1 is U-continuous means :Def14: :: COHSP_1:def 14
( dom a1 is d.union-closed & a1 is d.union-distributive );
end;

:: deftheorem Def14 defines U-continuous COHSP_1:def 14 :
for b1 being Function holds
( b1 is U-continuous iff ( dom b1 is d.union-closed & b1 is d.union-distributive ) );

definition
let c1 be Function;
attr a1 is U-stable means :Def15: :: COHSP_1:def 15
( dom a1 is multiplicative & a1 is U-continuous & a1 is cap-distributive );
end;

:: deftheorem Def15 defines U-stable COHSP_1:def 15 :
for b1 being Function holds
( b1 is U-stable iff ( dom b1 is multiplicative & b1 is U-continuous & b1 is cap-distributive ) );

definition
let c1 be Function;
attr a1 is U-linear means :Def16: :: COHSP_1:def 16
( a1 is U-stable & a1 is union-distributive );
end;

:: deftheorem Def16 defines U-linear COHSP_1:def 16 :
for b1 being Function holds
( b1 is U-linear iff ( b1 is U-stable & b1 is union-distributive ) );

registration
cluster U-continuous -> d.union-distributive c=-monotone set ;
coherence
for b1 being Function st b1 is U-continuous holds
b1 is d.union-distributive
by Def14;
cluster U-stable -> cap-distributive U-continuous set ;
coherence
for b1 being Function st b1 is U-stable holds
( b1 is cap-distributive & b1 is U-continuous )
by Def15;
cluster U-linear -> union-distributive d.union-distributive c=-monotone U-stable set ;
coherence
for b1 being Function st b1 is U-linear holds
( b1 is union-distributive & b1 is U-stable )
by Def16;
end;

registration
let c1 be d.union-closed set ;
cluster d.union-distributive -> U-continuous ManySortedSet of a1;
coherence
for b1 being ManySortedSet of c1 st b1 is d.union-distributive holds
b1 is U-continuous
proof end;
end;

registration
let c1 be multiplicative set ;
cluster cap-distributive U-continuous -> U-stable ManySortedSet of a1;
coherence
for b1 being ManySortedSet of c1 st b1 is U-continuous & b1 is cap-distributive holds
b1 is U-stable
proof end;
end;

registration
cluster union-distributive U-stable -> union-distributive d.union-distributive c=-monotone cap-distributive U-continuous U-stable U-linear set ;
coherence
for b1 being Function st b1 is U-stable & b1 is union-distributive holds
b1 is U-linear
by Def16;
end;

registration
cluster union-distributive d.union-distributive c=-monotone cap-distributive U-continuous U-stable U-linear set ;
existence
ex b1 being Function st b1 is U-linear
proof end;
let c1 be Coherence_Space;
cluster union-distributive d.union-distributive c=-monotone cap-distributive U-continuous U-stable U-linear ManySortedSet of a1;
existence
ex b1 being ManySortedSet of c1 st b1 is U-linear
proof end;
let c2 be Coherence_Space;
cluster union-distributive d.union-distributive c=-monotone cap-distributive U-continuous U-stable U-linear M5(a2,a1);
existence
ex b1 being Function of c2,c1 st b1 is U-linear
proof end;
end;

registration
let c1 be U-continuous Function;
cluster dom a1 -> d.union-closed ;
coherence
dom c1 is d.union-closed
by Def14;
end;

registration
let c1 be U-stable Function;
cluster dom a1 -> multiplicative d.union-closed ;
coherence
dom c1 is multiplicative
by Def15;
end;

theorem Th20: :: COHSP_1:20
for b1 being set holds union (Fin b1) = b1
proof end;

theorem Th21: :: COHSP_1:21
for b1 being U-continuous Function st dom b1 is subset-closed holds
for b2 being set st b2 in dom b1 holds
b1 . b2 = union (b1 .: (Fin b2))
proof end;

theorem Th22: :: COHSP_1:22
for b1 being Function st dom b1 is subset-closed holds
( b1 is U-continuous iff ( dom b1 is d.union-closed & b1 is c=-monotone & ( for b2, b3 being set st b2 in dom b1 & b3 in b1 . b2 holds
ex b4 being set st
( b4 is finite & b4 c= b2 & b3 in b1 . b4 ) ) ) )
proof end;

theorem Th23: :: COHSP_1:23
for b1 being Function st dom b1 is subset-closed & dom b1 is d.union-closed holds
( b1 is U-stable iff ( b1 is c=-monotone & ( for b2, b3 being set st b2 in dom b1 & b3 in b1 . b2 holds
ex b4 being set st
( b4 is finite & b4 c= b2 & b3 in b1 . b4 & ( for b5 being set st b5 c= b2 & b3 in b1 . b5 holds
b4 c= b5 ) ) ) ) )
proof end;

theorem Th24: :: COHSP_1:24
for b1 being Function st dom b1 is subset-closed & dom b1 is d.union-closed holds
( b1 is U-linear iff ( b1 is c=-monotone & ( for b2, b3 being set st b2 in dom b1 & b3 in b1 . b2 holds
ex b4 being set st
( b4 in b2 & b3 in b1 . {b4} & ( for b5 being set st b5 c= b2 & b3 in b1 . b5 holds
b4 in b5 ) ) ) ) )
proof end;

definition
let c1 be Function;
func graph c1 -> set means :Def17: :: COHSP_1:def 17
for b1 being set holds
( b1 in a2 iff ex b2 being finite set ex b3 being set st
( b1 = [b2,b3] & b2 in dom a1 & b3 in a1 . b2 ) );
existence
ex b1 being set st
for b2 being set holds
( b2 in b1 iff ex b3 being finite set ex b4 being set st
( b2 = [b3,b4] & b3 in dom c1 & b4 in c1 . b3 ) )
proof end;
uniqueness
for b1, b2 being set st ( for b3 being set holds
( b3 in b1 iff ex b4 being finite set ex b5 being set st
( b3 = [b4,b5] & b4 in dom c1 & b5 in c1 . b4 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being finite set ex b5 being set st
( b3 = [b4,b5] & b4 in dom c1 & b5 in c1 . b4 ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def17 defines graph COHSP_1:def 17 :
for b1 being Function
for b2 being set holds
( b2 = graph b1 iff for b3 being set holds
( b3 in b2 iff ex b4 being finite set ex b5 being set st
( b3 = [b4,b5] & b4 in dom b1 & b5 in b1 . b4 ) ) );

definition
let c1, c2 be non empty set ;
let c3 be Function of c1,c2;
redefine func graph as graph c3 -> Subset of [:a1,(union a2):];
coherence
graph c3 is Subset of [:c1,(union c2):]
proof end;
end;

registration
let c1 be Function;
cluster graph a1 -> Relation-like ;
coherence
graph c1 is Relation-like
proof end;
end;

theorem Th25: :: COHSP_1:25
for b1 being Function
for b2, b3 being set holds
( [b2,b3] in graph b1 iff ( b2 is finite & b2 in dom b1 & b3 in b1 . b2 ) )
proof end;

theorem Th26: :: COHSP_1:26
for b1 being c=-monotone Function
for b2, b3 being set st b3 in dom b1 & b2 c= b3 & b3 is finite holds
for b4 being set st [b2,b4] in graph b1 holds
[b3,b4] in graph b1
proof end;

theorem Th27: :: COHSP_1:27
for b1, b2 being Coherence_Space
for b3 being Function of b1,b2
for b4 being Element of b1
for b5, b6 being set st [b4,b5] in graph b3 & [b4,b6] in graph b3 holds
{b5,b6} in b2
proof end;

theorem Th28: :: COHSP_1:28
for b1, b2 being Coherence_Space
for b3 being c=-monotone Function of b1,b2
for b4, b5 being Element of b1 st b4 \/ b5 in b1 holds
for b6, b7 being set st [b4,b6] in graph b3 & [b5,b7] in graph b3 holds
{b6,b7} in b2
proof end;

theorem Th29: :: COHSP_1:29
for b1, b2 being Coherence_Space
for b3, b4 being U-continuous Function of b1,b2 st graph b3 = graph b4 holds
b3 = b4
proof end;

Lemma35: for b1, b2 being Coherence_Space
for b3 being Subset of [:b1,(union b2):] st ( for b4 being set st b4 in b3 holds
b4 `1 is finite ) & ( for b4, b5 being finite Element of b1 st b4 c= b5 holds
for b6 being set st [b4,b6] in b3 holds
[b5,b6] in b3 ) & ( for b4 being finite Element of b1
for b5, b6 being set st [b4,b5] in b3 & [b4,b6] in b3 holds
{b5,b6} in b2 ) holds
ex b4 being U-continuous Function of b1,b2 st
( b3 = graph b4 & ( for b5 being Element of b1 holds b4 . b5 = b3 .: (Fin b5) ) )
proof end;

theorem Th30: :: COHSP_1:30
for b1, b2 being Coherence_Space
for b3 being Subset of [:b1,(union b2):] st ( for b4 being set st b4 in b3 holds
b4 `1 is finite ) & ( for b4, b5 being finite Element of b1 st b4 c= b5 holds
for b6 being set st [b4,b6] in b3 holds
[b5,b6] in b3 ) & ( for b4 being finite Element of b1
for b5, b6 being set st [b4,b5] in b3 & [b4,b6] in b3 holds
{b5,b6} in b2 ) holds
ex b4 being U-continuous Function of b1,b2 st b3 = graph b4
proof end;

theorem Th31: :: COHSP_1:31
for b1, b2 being Coherence_Space
for b3 being U-continuous Function of b1,b2
for b4 being Element of b1 holds b3 . b4 = (graph b3) .: (Fin b4)
proof end;

definition
let c1 be Function;
func Trace c1 -> set means :Def18: :: COHSP_1:def 18
for b1 being set holds
( b1 in a2 iff ex b2, b3 being set st
( b1 = [b2,b3] & b2 in dom a1 & b3 in a1 . b2 & ( for b4 being set st b4 in dom a1 & b4 c= b2 & b3 in a1 . b4 holds
b2 = b4 ) ) );
existence
ex b1 being set st
for b2 being set holds
( b2 in b1 iff ex b3, b4 being set st
( b2 = [b3,b4] & b3 in dom c1 & b4 in c1 . b3 & ( for b5 being set st b5 in dom c1 & b5 c= b3 & b4 in c1 . b5 holds
b3 = b5 ) ) )
proof end;
uniqueness
for b1, b2 being set st ( for b3 being set holds
( b3 in b1 iff ex b4, b5 being set st
( b3 = [b4,b5] & b4 in dom c1 & b5 in c1 . b4 & ( for b6 being set st b6 in dom c1 & b6 c= b4 & b5 in c1 . b6 holds
b4 = b6 ) ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4, b5 being set st
( b3 = [b4,b5] & b4 in dom c1 & b5 in c1 . b4 & ( for b6 being set st b6 in dom c1 & b6 c= b4 & b5 in c1 . b6 holds
b4 = b6 ) ) ) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def18 defines Trace COHSP_1:def 18 :
for b1 being Function
for b2 being set holds
( b2 = Trace b1 iff for b3 being set holds
( b3 in b2 iff ex b4, b5 being set st
( b3 = [b4,b5] & b4 in dom b1 & b5 in b1 . b4 & ( for b6 being set st b6 in dom b1 & b6 c= b4 & b5 in b1 . b6 holds
b4 = b6 ) ) ) );

theorem Th32: :: COHSP_1:32
for b1 being Function
for b2, b3 being set holds
( [b2,b3] in Trace b1 iff ( b2 in dom b1 & b3 in b1 . b2 & ( for b4 being set st b4 in dom b1 & b4 c= b2 & b3 in b1 . b4 holds
b2 = b4 ) ) )
proof end;

definition
let c1, c2 be non empty set ;
let c3 be Function of c1,c2;
redefine func Trace as Trace c3 -> Subset of [:a1,(union a2):];
coherence
Trace c3 is Subset of [:c1,(union c2):]
proof end;
end;

registration
let c1 be Function;
cluster Trace a1 -> Relation-like ;
coherence
Trace c1 is Relation-like
proof end;
end;

theorem Th33: :: COHSP_1:33
for b1 being U-continuous Function st dom b1 is subset-closed holds
Trace b1 c= graph b1
proof end;

theorem Th34: :: COHSP_1:34
for b1 being U-continuous Function st dom b1 is subset-closed holds
for b2, b3 being set st [b2,b3] in Trace b1 holds
b2 is finite
proof end;

theorem Th35: :: COHSP_1:35
for b1, b2 being Coherence_Space
for b3 being c=-monotone Function of b1,b2
for b4, b5 being set st b4 \/ b5 in b1 holds
for b6, b7 being set st [b4,b6] in Trace b3 & [b5,b7] in Trace b3 holds
{b6,b7} in b2
proof end;

theorem Th36: :: COHSP_1:36
for b1, b2 being Coherence_Space
for b3 being cap-distributive Function of b1,b2
for b4, b5 being set st b4 \/ b5 in b1 holds
for b6 being set st [b4,b6] in Trace b3 & [b5,b6] in Trace b3 holds
b4 = b5
proof end;

theorem Th37: :: COHSP_1:37
for b1, b2 being Coherence_Space
for b3, b4 being U-stable Function of b1,b2 st Trace b3 c= Trace b4 holds
for b5 being Element of b1 holds b3 . b5 c= b4 . b5
proof end;

theorem Th38: :: COHSP_1:38
for b1, b2 being Coherence_Space
for b3, b4 being U-stable Function of b1,b2 st Trace b3 = Trace b4 holds
b3 = b4
proof end;

Lemma43: for b1, b2 being Coherence_Space
for b3 being Subset of [:b1,(union b2):] st ( for b4 being set st b4 in b3 holds
b4 `1 is finite ) & ( for b4, b5 being Element of b1 st b4 \/ b5 in b1 holds
for b6, b7 being set st [b4,b6] in b3 & [b5,b7] in b3 holds
{b6,b7} in b2 ) & ( for b4, b5 being Element of b1 st b4 \/ b5 in b1 holds
for b6 being set st [b4,b6] in b3 & [b5,b6] in b3 holds
b4 = b5 ) holds
ex b4 being U-stable Function of b1,b2 st
( b3 = Trace b4 & ( for b5 being Element of b1 holds b4 . b5 = b3 .: (Fin b5) ) )
proof end;

theorem Th39: :: COHSP_1:39
for b1, b2 being Coherence_Space
for b3 being Subset of [:b1,(union b2):] st ( for b4 being set st b4 in b3 holds
b4 `1 is finite ) & ( for b4, b5 being Element of b1 st b4 \/ b5 in b1 holds
for b6, b7 being set st [b4,b6] in b3 & [b5,b7] in b3 holds
{b6,b7} in b2 ) & ( for b4, b5 being Element of b1 st b4 \/ b5 in b1 holds
for b6 being set st [b4,b6] in b3 & [b5,b6] in b3 holds
b4 = b5 ) holds
ex b4 being U-stable Function of b1,b2 st b3 = Trace b4
proof end;

theorem Th40: :: COHSP_1:40
for b1, b2 being Coherence_Space
for b3 being U-stable Function of b1,b2
for b4 being Element of b1 holds b3 . b4 = (Trace b3) .: (Fin b4)
proof end;

theorem Th41: :: COHSP_1:41
for b1, b2 being Coherence_Space
for b3 being U-stable Function of b1,b2
for b4 being Element of b1
for b5 being set holds
( b5 in b3 . b4 iff ex b6 being Element of b1 st
( [b6,b5] in Trace b3 & b6 c= b4 ) )
proof end;

theorem Th42: :: COHSP_1:42
for b1, b2 being Coherence_Space ex b3 being U-stable Function of b1,b2 st Trace b3 = {}
proof end;

theorem Th43: :: COHSP_1:43
for b1, b2 being Coherence_Space
for b3 being finite Element of b1
for b4 being set st b4 in union b2 holds
ex b5 being U-stable Function of b1,b2 st Trace b5 = {[b3,b4]}
proof end;

theorem Th44: :: COHSP_1:44
for b1, b2 being Coherence_Space
for b3 being Element of b1
for b4 being set
for b5 being U-stable Function of b1,b2 st Trace b5 = {[b3,b4]} holds
for b6 being Element of b1 holds
( ( b3 c= b6 implies b5 . b6 = {b4} ) & ( not b3 c= b6 implies b5 . b6 = {} ) )
proof end;

theorem Th45: :: COHSP_1:45
for b1, b2 being Coherence_Space
for b3 being U-stable Function of b1,b2
for b4 being Subset of (Trace b3) ex b5 being U-stable Function of b1,b2 st Trace b5 = b4
proof end;

theorem Th46: :: COHSP_1:46
for b1, b2 being Coherence_Space
for b3 being set st ( for b4, b5 being set st b4 in b3 & b5 in b3 holds
ex b6 being U-stable Function of b1,b2 st b4 \/ b5 = Trace b6 ) holds
ex b4 being U-stable Function of b1,b2 st union b3 = Trace b4
proof end;

definition
let c1, c2 be Coherence_Space;
func StabCoh c1,c2 -> set means :Def19: :: COHSP_1:def 19
for b1 being set holds
( b1 in a3 iff ex b2 being U-stable Function of a1,a2 st b1 = Trace b2 );
uniqueness
for b1, b2 being set st ( for b3 being set holds
( b3 in b1 iff ex b4 being U-stable Function of c1,c2 st b3 = Trace b4 ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being U-stable Function of c1,c2 st b3 = Trace b4 ) ) holds
b1 = b2
proof end;
existence
ex b1 being set st
for b2 being set holds
( b2 in b1 iff ex b3 being U-stable Function of c1,c2 st b2 = Trace b3 )
proof end;
end;

:: deftheorem Def19 defines StabCoh COHSP_1:def 19 :
for b1, b2 being Coherence_Space
for b3 being set holds
( b3 = StabCoh b1,b2 iff for b4 being set holds
( b4 in b3 iff ex b5 being U-stable Function of b1,b2 st b4 = Trace b5 ) );

registration
let c1, c2 be Coherence_Space;
cluster StabCoh a1,a2 -> non empty multiplicative subset-closed binary_complete d.union-closed ;
coherence
( not StabCoh c1,c2 is empty & StabCoh c1,c2 is subset-closed & StabCoh c1,c2 is binary_complete )
proof end;
end;

theorem Th47: :: COHSP_1:47
for b1, b2 being Coherence_Space
for b3 being U-stable Function of b1,b2 holds Trace b3 c= [:(Sub_of_Fin b1),(union b2):]
proof end;

theorem Th48: :: COHSP_1:48
for b1, b2 being Coherence_Space holds union (StabCoh b1,b2) = [:(Sub_of_Fin b1),(union b2):]
proof end;

theorem Th49: :: COHSP_1:49
for b1, b2 being Coherence_Space
for b3, b4 being finite Element of b1
for b5, b6 being set holds
( [[b3,b5],[b4,b6]] in Web (StabCoh b1,b2) iff ( ( not b3 \/ b4 in b1 & b5 in union b2 & b6 in union b2 ) or ( [b5,b6] in Web b2 & ( b5 = b6 implies b3 = b4 ) ) ) )
proof end;

theorem Th50: :: COHSP_1:50
for b1, b2 being Coherence_Space
for b3 being U-stable Function of b1,b2 holds
( b3 is U-linear iff for b4, b5 being set st [b4,b5] in Trace b3 holds
ex b6 being set st b4 = {b6} )
proof end;

definition
let c1 be Function;
func LinTrace c1 -> set means :Def20: :: COHSP_1:def 20
for b1 being set holds
( b1 in a2 iff ex b2, b3 being set st
( b1 = [b2,b3] & [{b2},b3] in Trace a1 ) );
uniqueness
for b1, b2 being set st ( for b3 being set holds
( b3 in b1 iff ex b4, b5 being set st
( b3 = [b4,b5] & [{b4},b5] in Trace c1 ) ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4, b5 being set st
( b3 = [b4,b5] & [{b4},b5] in Trace c1 ) ) ) holds
b1 = b2
proof end;
existence
ex b1 being set st
for b2 being set holds
( b2 in b1 iff ex b3, b4 being set st
( b2 = [b3,b4] & [{b3},b4] in Trace c1 ) )
proof end;
end;

:: deftheorem Def20 defines LinTrace COHSP_1:def 20 :
for b1 being Function
for b2 being set holds
( b2 = LinTrace b1 iff for b3 being set holds
( b3 in b2 iff ex b4, b5 being set st
( b3 = [b4,b5] & [{b4},b5] in Trace b1 ) ) );

theorem Th51: :: COHSP_1:51
for b1 being Function
for b2, b3 being set holds
( [b2,b3] in LinTrace b1 iff [{b2},b3] in Trace b1 )
proof end;

theorem Th52: :: COHSP_1:52
for b1 being Function st b1 . {} = {} holds
for b2, b3 being set st {b2} in dom b1 & b3 in b1 . {b2} holds
[b2,b3] in LinTrace b1
proof end;

theorem Th53: :: COHSP_1:53
for b1 being Function
for b2, b3 being set st [b2,b3] in LinTrace b1 holds
( {b2} in dom b1 & b3 in b1 . {b2} )
proof end;

definition
let c1, c2 be non empty set ;
let c3 be Function of c1,c2;
redefine func LinTrace as LinTrace c3 -> Subset of [:(union a1),(union a2):];
coherence
LinTrace c3 is Subset of [:(union c1),(union c2):]
proof end;
end;

registration
let c1 be Function;
cluster LinTrace a1 -> Relation-like ;
coherence
LinTrace c1 is Relation-like
proof end;
end;

definition
let c1, c2 be Coherence_Space;
func LinCoh c1,c2 -> set means :Def21: :: COHSP_1:def 21
for b1 being set holds
( b1 in a3 iff ex b2 being U-linear Function of a1,a2 st b1 = LinTrace b2 );
uniqueness
for b1, b2 being set st ( for b3 being set holds
( b3 in b1 iff ex b4 being U-linear Function of c1,c2 st b3 = LinTrace b4 ) ) & ( for b3 being set holds
( b3 in b2 iff ex b4 being U-linear Function of c1,c2 st b3 = LinTrace b4 ) ) holds
b1 = b2
proof end;
existence
ex b1 being set st
for b2 being set holds
( b2 in b1 iff ex b3 being U-linear Function of c1,c2 st b2 = LinTrace b3 )
proof end;
end;

:: deftheorem Def21 defines LinCoh COHSP_1:def 21 :
for b1, b2 being Coherence_Space
for b3 being set holds
( b3 = LinCoh b1,b2 iff for b4 being set holds
( b4 in b3 iff ex b5 being U-linear Function of b1,b2 st b4 = LinTrace b5 ) );

theorem Th54: :: COHSP_1:54
for b1, b2 being Coherence_Space
for b3 being c=-monotone Function of b1,b2
for b4, b5 being set st {b4,b5} in b1 holds
for b6, b7 being set st [b4,b6] in LinTrace b3 & [b5,b7] in LinTrace b3 holds
{b6,b7} in b2
proof end;

theorem Th55: :: COHSP_1:55
for b1, b2 being Coherence_Space
for b3 being cap-distributive Function of b1,b2
for b4, b5 being set st {b4,b5} in b1 holds
for b6 being set st [b4,b6] in LinTrace b3 & [b5,b6] in LinTrace b3 holds
b4 = b5
proof end;

theorem Th56: :: COHSP_1:56
for b1, b2 being Coherence_Space
for b3, b4 being U-linear Function of b1,b2 st LinTrace b3 = LinTrace b4 holds
b3 = b4
proof end;

Lemma61: for b1, b2 being Coherence_Space
for b3 being Subset of [:(union b1),(union b2):] st ( for b4, b5 being set st {b4,b5} in b1 holds
for b6, b7 being set st [b4,b6] in b3 & [b5,b7] in b3 holds
{b6,b7} in b2 ) & ( for b4, b5 being set st {b4,b5} in b1 holds
for b6 being set st [b4,b6] in b3 & [b5,b6] in b3 holds
b4 = b5 ) holds
ex b4 being U-linear Function of b1,b2 st
( b3 = LinTrace b4 & ( for b5 being Element of b1 holds b4 . b5 = b3 .: b5 ) )
proof end;

theorem Th57: :: COHSP_1:57
for b1, b2 being Coherence_Space
for b3 being Subset of [:(union b1),(union b2):] st ( for b4, b5 being set st {b4,b5} in b1 holds
for b6, b7 being set st [b4,b6] in b3 & [b5,b7] in b3 holds
{b6,b7} in b2 ) & ( for b4, b5 being set st {b4,b5} in b1 holds
for b6 being set st [b4,b6] in b3 & [b5,b6] in b3 holds
b4 = b5 ) holds
ex b4 being U-linear Function of b1,b2 st b3 = LinTrace b4
proof end;

theorem Th58: :: COHSP_1:58
for b1, b2 being Coherence_Space
for b3 being U-linear Function of b1,b2
for b4 being Element of b1 holds b3 . b4 = (LinTrace b3) .: b4
proof end;

theorem Th59: :: COHSP_1:59
for b1, b2 being Coherence_Space ex b3 being U-linear Function of b1,b2 st LinTrace b3 = {}
proof end;

theorem Th60: :: COHSP_1:60
for b1, b2 being Coherence_Space
for b3, b4 being set st b3 in union b1 & b4 in union b2 holds
ex b5 being U-linear Function of b1,b2 st LinTrace b5 = {[b3,b4]}
proof end;

theorem Th61: :: COHSP_1:61
for b1, b2 being Coherence_Space
for b3, b4 being set st b3 in union b1 & b4 in union b2 holds
for b5 being U-linear Function of b1,b2 st LinTrace b5 = {[b3,b4]} holds
for b6 being Element of b1 holds
( ( b3 in b6 implies b5 . b6 = {b4} ) & ( not b3 in b6 implies b5 . b6 = {} ) )
proof end;

theorem Th62: :: COHSP_1:62
for b1, b2 being Coherence_Space
for b3 being U-linear Function of b1,b2
for b4 being Subset of (LinTrace b3) ex b5 being U-linear Function of b1,b2 st LinTrace b5 = b4
proof end;

theorem Th63: :: COHSP_1:63
for b1, b2 being Coherence_Space
for b3 being set st ( for b4, b5 being set st b4 in b3 & b5 in b3 holds
ex b6 being U-linear Function of b1,b2 st b4 \/ b5 = LinTrace b6 ) holds
ex b4 being U-linear Function of b1,b2 st union b3 = LinTrace b4
proof end;

registration
let c1, c2 be Coherence_Space;
cluster LinCoh a1,a2 -> non empty multiplicative subset-closed binary_complete d.union-closed ;
coherence
( not LinCoh c1,c2 is empty & LinCoh c1,c2 is subset-closed & LinCoh c1,c2 is binary_complete )
proof end;
end;

theorem Th64: :: COHSP_1:64
for b1, b2 being Coherence_Space holds union (LinCoh b1,b2) = [:(union b1),(union b2):]
proof end;

theorem Th65: :: COHSP_1:65
for b1, b2 being Coherence_Space
for b3, b4, b5, b6 being set holds
( [[b3,b5],[b4,b6]] in Web (LinCoh b1,b2) iff ( b3 in union b1 & b4 in union b1 & ( ( not [b3,b4] in Web b1 & b5 in union b2 & b6 in union b2 ) or ( [b5,b6] in Web b2 & ( b5 = b6 implies b3 = b4 ) ) ) ) )
proof end;

definition
let c1 be Coherence_Space;
func 'not' c1 -> set equals :: COHSP_1:def 22
{ b1 where B is Subset of (union a1) : for b1 being Element of a1 ex b2 being set st b1 /\ b2 c= {b3} } ;
correctness
coherence
{ b1 where B is Subset of (union c1) : for b1 being Element of c1 ex b2 being set st b1 /\ b2 c= {b3} } is set
;
;
end;

:: deftheorem Def22 defines 'not' COHSP_1:def 22 :
for b1 being Coherence_Space holds 'not' b1 = { b2 where B is Subset of (union b1) : for b1 being Element of b1 ex b2 being set st b2 /\ b3 c= {b4} } ;

theorem Th66: :: COHSP_1:66
for b1 being Coherence_Space
for b2 being set holds
( b2 in 'not' b1 iff ( b2 c= union b1 & ( for b3 being Element of b1 ex b4 being set st b2 /\ b3 c= {b4} ) ) )
proof end;

registration
let c1 be Coherence_Space;
cluster 'not' a1 -> non empty multiplicative subset-closed binary_complete d.union-closed ;
coherence
( not 'not' c1 is empty & 'not' c1 is subset-closed & 'not' c1 is binary_complete )
proof end;
end;

theorem Th67: :: COHSP_1:67
for b1 being Coherence_Space holds union ('not' b1) = union b1
proof end;

theorem Th68: :: COHSP_1:68
for b1 being Coherence_Space
for b2, b3 being set st b2 <> b3 & {b2,b3} in b1 holds
not {b2,b3} in 'not' b1
proof end;

theorem Th69: :: COHSP_1:69
for b1 being Coherence_Space
for b2, b3 being set st {b2,b3} c= union b1 & not {b2,b3} in b1 holds
{b2,b3} in 'not' b1
proof end;

theorem Th70: :: COHSP_1:70
for b1 being Coherence_Space
for b2, b3 being set holds
( [b2,b3] in Web ('not' b1) iff ( b2 in union b1 & b3 in union b1 & ( b2 = b3 or not [b2,b3] in Web b1 ) ) )
proof end;

Lemma70: for b1 being Coherence_Space holds 'not' ('not' b1) c= b1
proof end;

theorem Th71: :: COHSP_1:71
for b1 being Coherence_Space holds 'not' ('not' b1) = b1
proof end;

theorem Th72: :: COHSP_1:72
'not' {{} } = {{} }
proof end;

theorem Th73: :: COHSP_1:73
for b1 being set holds
( 'not' (FlatCoh b1) = bool b1 & 'not' (bool b1) = FlatCoh b1 )
proof end;

definition
let c1, c2 be set ;
func c1 U+ c2 -> set equals :: COHSP_1:def 23
Union (disjoin <*a1,a2*>);
correctness
coherence
Union (disjoin <*c1,c2*>) is set
;
;
end;

:: deftheorem Def23 defines U+ COHSP_1:def 23 :
for b1, b2 being set holds b1 U+ b2 = Union (disjoin <*b1,b2*>);

theorem Th74: :: COHSP_1:74
for b1, b2 being set holds b1 U+ b2 = [:b1,{1}:] \/ [:b2,{2}:]
proof end;

theorem Th75: :: COHSP_1:75
for b1 being set holds
( b1 U+ {} = [:b1,{1}:] & {} U+ b1 = [:b1,{2}:] )
proof end;

theorem Th76: :: COHSP_1:76
for b1, b2, b3 being set st b3 in b1 U+ b2 holds
( b3 = [(b3 `1 ),(b3 `2 )] & ( ( b3 `2 = 1 & b3 `1 in b1 ) or ( b3 `2 = 2 & b3 `1 in b2 ) ) )
proof end;

theorem Th77: :: COHSP_1:77
for b1, b2, b3 being set holds
( [b3,1] in b1 U+ b2 iff b3 in b1 )
proof end;

theorem Th78: :: COHSP_1:78
for b1, b2, b3 being set holds
( [b3,2] in b1 U+ b2 iff b3 in b2 )
proof end;

theorem Th79: :: COHSP_1:79
for b1, b2, b3, b4 being set holds
( b1 U+ b2 c= b3 U+ b4 iff ( b1 c= b3 & b2 c= b4 ) )
proof end;

theorem Th80: :: COHSP_1:80
for b1, b2, b3 being set st b3 c= b1 U+ b2 holds
ex b4, b5 being set st
( b3 = b4 U+ b5 & b4 c= b1 & b5 c= b2 )
proof end;

theorem Th81: :: COHSP_1:81
for b1, b2, b3, b4 being set holds
( b1 U+ b2 = b3 U+ b4 iff ( b1 = b3 & b2 = b4 ) )
proof end;

theorem Th82: :: COHSP_1:82
for b1, b2, b3, b4 being set holds (b1 U+ b2) \/ (b3 U+ b4) = (b1 \/ b3) U+ (b2 \/ b4)
proof end;

theorem Th83: :: COHSP_1:83
for b1, b2, b3, b4 being set holds (b1 U+ b2) /\ (b3 U+ b4) = (b1 /\ b3) U+ (b2 /\ b4)
proof end;

definition
let c1, c2 be Coherence_Space;
func c1 "/\" c2 -> set equals :: COHSP_1:def 24
{ (b1 U+ b2) where B is Element of a1, B is Element of a2 : verum } ;
correctness
coherence
{ (b1 U+ b2) where B is Element of c1, B is Element of c2 : verum } is set
;
;
func c1 "\/" c2 -> set equals :: COHSP_1:def 25
{ (b1 U+ {} ) where B is Element of a1 : verum } \/ { ({} U+ b1) where B is Element of a2 : verum } ;
correctness
coherence
{ (b1 U+ {} ) where B is Element of c1 : verum } \/ { ({} U+ b1) where B is Element of c2 : verum } is set
;
;
end;

:: deftheorem Def24 defines "/\" COHSP_1:def 24 :
for b1, b2 being Coherence_Space holds b1 "/\" b2 = { (b3 U+ b4) where B is Element of b1, B is Element of b2 : verum } ;

:: deftheorem Def25 defines "\/" COHSP_1:def 25 :
for b1, b2 being Coherence_Space holds b1 "\/" b2 = { (b3 U+ {} ) where B is Element of b1 : verum } \/ { ({} U+ b3) where B is Element of b2 : verum } ;

theorem Th84: :: COHSP_1:84
for b1, b2 being Coherence_Space
for b3 being set holds
( b3 in b1 "/\" b2 iff ex b4 being Element of b1ex b5 being Element of b2 st b3 = b4 U+ b5 ) ;

theorem Th85: :: COHSP_1:85
for b1, b2 being Coherence_Space
for b3, b4 being set holds
( b3 U+ b4 in b1 "/\" b2 iff ( b3 in b1 & b4 in b2 ) )
proof end;

theorem Th86: :: COHSP_1:86
for b1, b2 being Coherence_Space holds union (b1 "/\" b2) = (union b1) U+ (union b2)
proof end;

theorem Th87: :: COHSP_1:87
for b1, b2 being Coherence_Space
for b3, b4 being set holds
( b3 U+ b4 in b1 "\/" b2 iff ( ( b3 in b1 & b4 = {} ) or ( b3 = {} & b4 in b2 ) ) )
proof end;

theorem Th88: :: COHSP_1:88
for b1, b2 being Coherence_Space
for b3 being set st b3 in b1 "\/" b2 holds
ex b4 being Element of b1ex b5 being Element of b2 st
( b3 = b4 U+ b5 & ( b4 = {} or b5 = {} ) )
proof end;

theorem Th89: :: COHSP_1:89
for b1, b2 being Coherence_Space holds union (b1 "\/" b2) = (union b1) U+ (union b2)
proof end;

registration
let c1, c2 be Coherence_Space;
cluster a1 "/\" a2 -> non empty multiplicative subset-closed binary_complete d.union-closed ;
coherence
( not c1 "/\" c2 is empty & c1 "/\" c2 is subset-closed & c1 "/\" c2 is binary_complete )
proof end;
cluster a1 "\/" a2 -> non empty multiplicative subset-closed binary_complete d.union-closed ;
coherence
( not c1 "\/" c2 is empty & c1 "\/" c2 is subset-closed & c1 "\/" c2 is binary_complete )
proof end;
end;

theorem Th90: :: COHSP_1:90
for b1, b2 being Coherence_Space
for b3, b4 being set holds
( [[b3,1],[b4,1]] in Web (b1 "/\" b2) iff [b3,b4] in Web b1 )
proof end;

theorem Th91: :: COHSP_1:91
for b1, b2 being Coherence_Space
for b3, b4 being set holds
( [[b3,2],[b4,2]] in Web (b1 "/\" b2) iff [b3,b4] in Web b2 )
proof end;

theorem Th92: :: COHSP_1:92
for b1, b2 being Coherence_Space
for b3, b4 being set st b3 in union b1 & b4 in union b2 holds
( [[b3,1],[b4,2]] in Web (b1 "/\" b2) & [[b4,2],[b3,1]] in Web (b1 "/\" b2) )
proof end;

theorem Th93: :: COHSP_1:93
for b1, b2 being Coherence_Space
for b3, b4 being set holds
( [[b3,1],[b4,1]] in Web (b1 "\/" b2) iff [b3,b4] in Web b1 )
proof end;

theorem Th94: :: COHSP_1:94
for b1, b2 being Coherence_Space
for b3, b4 being set holds
( [[b3,2],[b4,2]] in Web (b1 "\/" b2) iff [b3,b4] in Web b2 )
proof end;

theorem Th95: :: COHSP_1:95
for b1, b2 being Coherence_Space
for b3, b4 being set holds
( not [[b3,1],[b4,2]] in Web (b1 "\/" b2) & not [[b4,2],[b3,1]] in Web (b1 "\/" b2) )
proof end;

theorem Th96: :: COHSP_1:96
for b1, b2 being Coherence_Space holds 'not' (b1 "/\" b2) = ('not' b1) "\/" ('not' b2)
proof end;

definition
let c1, c2 be Coherence_Space;
func c1 [*] c2 -> set equals :: COHSP_1:def 26
union { (bool [:b1,b2:]) where B is Element of a1, B is Element of a2 : verum } ;
correctness
coherence
union { (bool [:b1,b2:]) where B is Element of c1, B is Element of c2 : verum } is set
;
;
end;

:: deftheorem Def26 defines [*] COHSP_1:def 26 :
for b1, b2 being Coherence_Space holds b1 [*] b2 = union { (bool [:b3,b4:]) where B is Element of b1, B is Element of b2 : verum } ;

theorem Th97: :: COHSP_1:97
for b1, b2 being Coherence_Space
for b3 being set holds
( b3 in b1 [*] b2 iff ex b4 being Element of b1ex b5 being Element of b2 st b3 c= [:b4,b5:] )
proof end;

registration
let c1, c2 be Coherence_Space;
cluster a1 [*] a2 -> non empty ;
coherence
not c1 [*] c2 is empty
proof end;
end;

theorem Th98: :: COHSP_1:98
for b1, b2 being Coherence_Space
for b3 being Element of b1 [*] b2 holds
( proj1 b3 in b1 & proj2 b3 in b2 & b3 c= [:(proj1 b3),(proj2 b3):] )
proof end;

registration
let c1, c2 be Coherence_Space;
cluster a1 [*] a2 -> non empty multiplicative subset-closed binary_complete d.union-closed ;
coherence
( c1 [*] c2 is subset-closed & c1 [*] c2 is binary_complete )
proof end;
end;

theorem Th99: :: COHSP_1:99
for b1, b2 being Coherence_Space holds union (b1 [*] b2) = [:(union b1),(union b2):]
proof end;

theorem Th100: :: COHSP_1:100
for b1, b2 being Coherence_Space
for b3, b4, b5, b6 being set holds
( [[b3,b5],[b4,b6]] in Web (b1 [*] b2) iff ( [b3,b4] in Web b1 & [b5,b6] in Web b2 ) )
proof end;