Copyright (c) 1993 Association of Mizar Users
environ vocabulary FINSEQ_2, BOOLE, UNIALG_1, FUNCT_2, PARTFUN1, RELAT_1, FINSEQ_1, FUNCOP_1, CQC_SIM1, FUNCT_1, FINSEQ_4, TARSKI, ZF_REFLE, SETFAM_1, SUBSET_1, LATTICES, BINOP_1, UNIALG_2; notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, NAT_1, STRUCT_0, RELAT_1, FUNCT_1, FINSEQ_1, SETFAM_1, FUNCOP_1, PARTFUN1, FINSEQ_2, LATTICES, BINOP_1, UNIALG_1; constructors FINSEQ_2, DOMAIN_1, FUNCOP_1, LATTICES, BINOP_1, UNIALG_1, MEMBERED, XBOOLE_0; clusters SUBSET_1, LATTICES, UNIALG_1, RELSET_1, STRUCT_0, FINSEQ_2, RLSUB_2, PARTFUN1, ARYTM_3, MEMBERED, ZFMISC_1, XBOOLE_0; requirements NUMERALS, BOOLE, SUBSET; definitions TARSKI, UNIALG_1, XBOOLE_0; theorems TARSKI, FUNCT_1, PARTFUN1, FINSEQ_1, FINSEQ_2, UNIALG_1, SUBSET_1, ZFMISC_1, SETFAM_1, FUNCOP_1, BINOP_1, LATTICES, FINSEQ_3, RELAT_1, RELSET_1, XBOOLE_0, XBOOLE_1; schemes MATRIX_2, BINOP_1, XBOOLE_0; begin theorem Th1: for n be Nat, D be non empty set, D1 be non empty Subset of D holds n-tuples_on D /\ n-tuples_on D1 = n-tuples_on D1 proof let n be Nat,D be non empty set, D1 be non empty Subset of D; n-tuples_on D1 c= n-tuples_on D proof let z be set; assume z in n-tuples_on D1; then z is Element of n-tuples_on D by FINSEQ_2:129; hence z in n-tuples_on D; end; hence thesis by XBOOLE_1:28; end; theorem Th2: for D being non empty set for h being homogeneous quasi_total non empty PartFunc of D*,D holds dom h = (arity(h))-tuples_on D proof let D be non empty set; let f be homogeneous quasi_total non empty PartFunc of D*,D; A1: dom f c= D* by RELSET_1:12; thus dom f c= (arity(f))-tuples_on D proof let x be set; assume A2: x in dom f; then reconsider x' = x as FinSequence of D by A1,FINSEQ_1:def 11; len x' = arity f by A2,UNIALG_1:def 10; then x' is Element of (arity(f))-tuples_on D by FINSEQ_2:110; hence thesis; end; let x be set;assume x in (arity(f))-tuples_on D; then x in {s where s is Element of D* : len s = arity(f)} by FINSEQ_2:def 4; then consider s being Element of D* such that A3: x = s & len s = arity(f); A4: dom f <> {} by UNIALG_1:1; consider y be Element of dom f; y in D* by A1,A4,TARSKI:def 3; then reconsider y as FinSequence of D by FINSEQ_1:def 11; len y = arity f by A4,UNIALG_1:def 10; hence thesis by A3,A4,UNIALG_1:def 2; end; reserve U0,U1,U2,U3 for Universal_Algebra, n,i for Nat, x,y for set; definition let D be non empty set; mode PFuncsDomHQN of D -> non empty set means :Def1: for x be Element of it holds x is homogeneous quasi_total non empty PartFunc of D*,D; existence proof consider a be Element of D; reconsider A = {{<*>D} -->a} as non empty set; take A; let x be Element of A; x={<*>D} -->a by TARSKI:def 1; hence x is homogeneous quasi_total non empty PartFunc of D*,D by UNIALG_1:2; end; end; definition let D be non empty set, P be PFuncsDomHQN of D; redefine mode Element of P -> homogeneous quasi_total non empty PartFunc of D*,D; coherence by Def1; end; definition let U1; mode PFuncsDomHQN of U1 is PFuncsDomHQN of (the carrier of U1); end; definition let U1 be UAStr; mode PartFunc of U1 is PartFunc of (the carrier of U1)*,the carrier of U1; end; definition let U1,U2; pred U1,U2 are_similar means :Def2: signature (U1) = signature (U2); symmetry; reflexivity; end; theorem U1,U2 are_similar implies len the charact of(U1) = len the charact of(U2) proof assume A1: U1,U2 are_similar; len signature (U1) = len the charact of(U1) & len signature (U2) = len the charact of(U2) by UNIALG_1:def 11; hence thesis by A1,Def2; end; theorem U1,U2 are_similar & U2,U3 are_similar implies U1,U3 are_similar proof assume U1,U2 are_similar & U2,U3 are_similar; then signature (U1) = signature (U2) & signature (U2) = signature (U3) by Def2; hence thesis by Def2; end; theorem Th5: rng the charact of(U0) is non empty Subset of PFuncs((the carrier of U0)*,the carrier of U0) proof thus thesis by FINSEQ_1:27,def 4; end; definition let U0; func Operations(U0) -> PFuncsDomHQN of U0 equals :Def3: rng the charact of(U0); coherence proof reconsider A=rng the charact of(U0) as non empty set by Th5; now let x be Element of A; consider i such that A1: i in dom(the charact of(U0)) & (the charact of(U0)).i = x by FINSEQ_2:11; reconsider p = (the charact of U0).i as PartFunc of U0 by A1,UNIALG_1:5; p is homogeneous quasi_total non empty by A1,UNIALG_1:def 4,def 5,def 6; hence x is homogeneous quasi_total non empty PartFunc of U0 by A1; end; hence thesis by Def1; end; end; definition let U1; mode operation of U1 is Element of Operations(U1); end; reserve A for non empty Subset of U0, o for operation of U0, x1,y1 for FinSequence of A; theorem Th6: for n being set st n in dom the charact of U0 holds (the charact of U0).n is operation of U0 proof let n be set; assume n in dom the charact of U0; then (the charact of U0).n in rng the charact of U0 by FUNCT_1:def 5; hence thesis by Def3; end; definition let U0 be Universal_Algebra, A be Subset of U0, o be operation of U0; pred A is_closed_on o means :Def4: for s being FinSequence of A st len s = arity o holds o.s in A; end; definition let U0 be Universal_Algebra, A be Subset of U0; attr A is opers_closed means :Def5: for o be operation of U0 holds A is_closed_on o; end; definition let U0,A,o; assume A1: A is_closed_on o; func o/.A ->homogeneous quasi_total non empty PartFunc of A*,A equals :Def6: o|((arity o)-tuples_on A); coherence proof A2: (arity o)-tuples_on A c= (arity o)-tuples_on the carrier of U0 proof let x; assume x in (arity o)-tuples_on A; then x in { s where s is Element of A* : len s =arity o} by FINSEQ_2:def 4; then consider s be Element of A* such that A3: x = s & len s = arity o; rng s c= A by FINSEQ_1:def 4; then rng s c= the carrier of U0 by XBOOLE_1:1; then reconsider s as FinSequence of the carrier of U0 by FINSEQ_1:def 4; reconsider s as Element of (the carrier of U0)* by FINSEQ_1:def 11; x=s & len s =arity o by A3; then x in { s1 where s1 is Element of(the carrier of U0)*: len s1 =arity o}; hence thesis by FINSEQ_2:def 4; end; A4: dom ( o|((arity o)-tuples_on A))= (dom o) /\ ((arity o)-tuples_on A) by RELAT_1:90 .=((arity o)-tuples_on the carrier of U0) /\ ((arity o)-tuples_on A) by Th2 .=(arity o)-tuples_on A by A2,XBOOLE_1:28; o|((arity o)-tuples_on A) is PartFunc of A*,A proof (arity o)-tuples_on A in {i-tuples_on A : not contradiction}; then (arity o)-tuples_on A c= union {i-tuples_on A : not contradiction} by ZFMISC_1:92; then A5: dom ( o|((arity o)-tuples_on A)) c= A* by A4,FINSEQ_2:128; rng (o|((arity o)-tuples_on A)) c= A proof let x; assume x in rng( o|((arity o)-tuples_on A)); then consider y such that A6: y in dom ( o|((arity o)-tuples_on A)) & x = (o|((arity o)-tuples_on A)).y by FUNCT_1:def 5; y in { s where s is Element of A* : len s =arity o} by A4,A6,FINSEQ_2:def 4; then consider s be Element of A* such that A7: y = s & len s = arity o; (o|((arity o)-tuples_on A)).s = o.s by A6,A7,FUNCT_1:68; hence thesis by A1,A6,A7,Def4; end; hence thesis by A5,RELSET_1:11; end; then reconsider oa = o|((arity o)-tuples_on A) as PartFunc of A*,A; A8: oa is homogeneous proof let x1,y1 be FinSequence of A; assume A9: x1 in dom oa & y1 in dom oa; then x1 in { s where s is Element of A* : len s =arity o} by A4,FINSEQ_2: def 4; then consider s be Element of A* such that A10: x1 = s & len s = arity o; y1 in { s1 where s1 is Element of A* : len s1=arity o} by A4,A9,FINSEQ_2:def 4; then consider s1 be Element of A* such that A11: y1=s1 & len s1 = arity o; thus len x1=len y1 by A10,A11; end; oa is quasi_total proof let x1,y1; assume A12: len x1 = len y1 & x1 in dom oa; then x1 in { s where s is Element of A* : len s =arity o} by A4,FINSEQ_2: def 4; then consider s be Element of A* such that A13: x1 = s & len s = arity o; y1 is Element of (arity o)-tuples_on A by A12,A13,FINSEQ_2:110; hence thesis by A4; end; hence thesis by A4,A8,UNIALG_1:1; end; end; definition let U0,A; func Opers(U0,A) -> PFuncFinSequence of A means :Def7: dom it = dom the charact of(U0) & for n being set,o st n in dom it & o =(the charact of(U0)).n holds it.n = o/.A; existence proof defpred P[Nat,set] means for o st o =(the charact of(U0)).$1 holds $2 = o/.A; A1: for n st n in Seg len the charact of(U0) ex x being Element of PFuncs(A*,A) st P[n,x] proof let n; assume n in Seg len the charact of(U0); then n in dom the charact of(U0) by FINSEQ_1:def 3; then reconsider o1 =(the charact of(U0)).n as operation of U0 by Th6; reconsider x = o1/.A as Element of PFuncs(A*,A) by PARTFUN1:119; take x; let o; assume o = (the charact of(U0)).n; hence x = o/.A; end; consider p being FinSequence of PFuncs(A*,A) such that A2: dom p = Seg len the charact of(U0) and A3: for n st n in Seg len the charact of(U0) holds P[n,p.n] from SeqDEx(A1); reconsider p as PFuncFinSequence of A; take p; thus dom p =dom the charact of(U0) by A2,FINSEQ_1:def 3; let n be set,o; assume n in dom p & o =(the charact of(U0)).n; hence thesis by A2,A3; end; uniqueness proof let p1,p2 be PFuncFinSequence of A; assume A4: dom p1 = dom the charact of(U0) & (for n being set,o st n in dom p1 & o = (the charact of(U0)).n holds p1.n = o/.A) & dom p2 = dom the charact of(U0) & for n being set,o st n in dom p2 & o = (the charact of(U0)).n holds p2.n = o/.A; for n st n in dom the charact of(U0) holds p1.n = p2.n proof let n;assume A5: n in dom the charact of(U0); then reconsider k =(the charact of(U0)).n as operation of U0 by Th6; p1.n =k/.A & p2.n =k/.A by A4,A5; hence thesis; end; hence p1=p2 by A4,FINSEQ_1:17; end; end; theorem Th7: for B being non empty Subset of U0 st B=the carrier of U0 holds B is opers_closed & (for o holds o/.B = o) proof let B be non empty Subset of U0; assume A1: B=the carrier of U0; A2: for o holds B is_closed_on o proof let o; let s be FinSequence of B; assume A3: len s = arity o; A4: rng o c= B by A1,RELSET_1:12; A5: dom o = (arity o)-tuples_on B by A1,Th2; s is Element of (len s)-tuples_on B by FINSEQ_2:110; then o.s in rng o by A3,A5,FUNCT_1:def 5; hence thesis by A4; end; for o holds o/.B = o proof let o; A6:dom o = (arity(o))-tuples_on B by A1,Th2; B is_closed_on o by A2; then o/.B =o|((arity(o))-tuples_on B) by Def6; hence thesis by A6,RELAT_1:97; end; hence thesis by A2,Def5; end; theorem for U1 be Universal_Algebra, A be non empty Subset of U1, o be operation of U1 st A is_closed_on o holds arity (o/.A) = arity o proof let U1 be Universal_Algebra, A be non empty Subset of U1, o be operation of U1; assume A is_closed_on o; then o/.A =o|((arity o)-tuples_on A) by Def6; then dom (o/.A) = dom o /\ ((arity o)-tuples_on A) by RELAT_1:90; then A1:dom (o/.A) = ((arity o)-tuples_on the carrier of U1) /\ ((arity o)-tuples_on A) by Th2 .= (arity o)-tuples_on A by Th1; dom (o/.A)=((arity (o/.A))-tuples_on A) by Th2; hence thesis by A1,FINSEQ_2:130; end; definition let U0; mode SubAlgebra of U0 -> Universal_Algebra means :Def8: the carrier of it is Subset of U0 & for B be non empty Subset of U0 st B=the carrier of it holds the charact of(it) = Opers(U0,B) & B is opers_closed; existence proof A1: for B be non empty Subset of U0 st B=the carrier of U0 holds the charact of(U0) = Opers(U0,B) & B is opers_closed proof let B be non empty Subset of U0; assume A2: B =the carrier of U0; A3: dom the charact of(U0) = dom Opers(U0,B) by Def7; for n st n in dom the charact of(U0) holds (the charact of(U0)).n = (Opers(U0,B)).n proof let n; assume A4: n in dom the charact of(U0); then reconsider o =(the charact of(U0)).n as operation of U0 by Th6; (Opers(U0,B)).n = o/.B by A3,A4,Def7; hence (Opers(U0,B)).n = (the charact of(U0)).n by A2,Th7; end; hence thesis by A2,A3,Th7,FINSEQ_1:17; end; take U1=U0; the carrier of U1 c= the carrier of U1; hence thesis by A1; end; end; definition let U0 be Universal_Algebra; cluster strict SubAlgebra of U0; existence proof reconsider S = UAStr(#the carrier of U0,the charact of U0#) as strict Universal_Algebra by UNIALG_1:def 7,def 8,def 9; A1: the carrier of S c= the carrier of U0; for B be non empty Subset of U0 st B=the carrier of S holds the charact of(S) = Opers(U0,B) & B is opers_closed proof let B be non empty Subset of U0; assume A2: B=the carrier of S; A3: dom the charact of(U0)= dom Opers(U0,B) by Def7; now let n; assume A4: n in dom the charact of (U0); then A5: n in dom Opers(U0,B) by Def7; reconsider o = (the charact of(U0)).n as operation of U0 by A4,Th6; thus Opers (U0,B).n = o/.B by A5,Def7 .= (the charact of(U0)).n by A2,Th7; end; hence thesis by A2,A3,Th7,FINSEQ_1:17; end; then reconsider S as SubAlgebra of U0 by A1,Def8; take S; thus thesis; end; end; theorem Th9: for U0,U1 be Universal_Algebra, o0 be operation of U0, o1 be operation of U1, n be Nat st U0 is SubAlgebra of U1 & n in dom the charact of(U0) & o0 = (the charact of(U0)).n & o1 = (the charact of(U1)).n holds arity o0 = arity o1 proof let U0,U1 be Universal_Algebra, o0 be operation of U0, o1 be operation of U1,n; assume A1: U0 is SubAlgebra of U1 & n in dom the charact of(U0) & o0 = (the charact of(U0)).n & o1 = (the charact of(U1)).n; then reconsider A =the carrier of U0 as non empty Subset of U1 by Def8; A is opers_closed by A1,Def8; then A2: A is_closed_on o1 by Def5; A3: n in dom Opers(U1,A) by A1,Def8; o0 = Opers(U1,A).n by A1,Def8; then o0 = o1/.A by A1,A3,Def7; then o0 = o1|((arity o1)-tuples_on A) by A2,Def6; then dom o0 = dom o1 /\ ((arity o1)-tuples_on A) by RELAT_1:90; then A4:dom o0 = ((arity o1)-tuples_on the carrier of U1) /\ ((arity o1)-tuples_on A) by Th2 .= (arity o1)-tuples_on A by Th1; dom o0 =(arity o0)-tuples_on A by Th2; hence arity o0 =arity o1 by A4,FINSEQ_2:130; end; theorem Th10: U0 is SubAlgebra of U1 implies dom the charact of(U0)=dom the charact of(U1) proof assume A1:U0 is SubAlgebra of U1; then reconsider A =the carrier of U0 as non empty Subset of U1 by Def8; the charact of(U0) = Opers(U1,A) & A is opers_closed by A1,Def8; hence thesis by Def7; end; theorem U0 is SubAlgebra of U0 proof A1: the carrier of U0 c= the carrier of U0; for B be non empty Subset of U0 st B=the carrier of U0 holds the charact of(U0) = Opers(U0,B) & B is opers_closed proof let B be non empty Subset of U0; assume A2: B =the carrier of U0; A3: dom the charact of(U0) = dom Opers(U0,B) by Def7; for n st n in dom the charact of(U0) holds (the charact of(U0)).n = (Opers(U0,B)).n proof let n; assume A4: n in dom the charact of(U0); then reconsider o =(the charact of(U0)).n as operation of U0 by Th6; (Opers(U0,B)).n = o/.B by A3,A4,Def7; hence (Opers(U0,B)).n = (the charact of(U0)).n by A2,Th7; end; hence thesis by A2,A3,Th7,FINSEQ_1:17; end; hence thesis by A1,Def8; end; theorem U0 is SubAlgebra of U1 & U1 is SubAlgebra of U2 implies U0 is SubAlgebra of U2 proof assume A1: U0 is SubAlgebra of U1 & U1 is SubAlgebra of U2; then A2: the carrier of U0 is Subset of U1 by Def8; the carrier of U1 is Subset of U2 by A1,Def8; hence the carrier of U0 is Subset of U2 by A2,XBOOLE_1:1; reconsider B1 = the carrier of U0 as non empty Subset of U1 by A1,Def8; reconsider B2 = the carrier of U1 as non empty Subset of U2 by A1,Def8; let B be non empty Subset of U2; assume A3: B = the carrier of U0; then A4: B = B1; A5: the charact of(U0) = Opers(U1,B1) & B1 is opers_closed by A1,Def8; A6: the charact of(U1) = Opers(U2,B2) & B2 is opers_closed by A1,Def8; A7: now let o2 be operation of U2; A8: B2 is_closed_on o2 by A6,Def5; A9: rng the charact of(U0) = Operations(U0) & rng the charact of(U1) = Operations(U1) & rng the charact of U2 = Operations(U2) by Def3; then consider n such that A10: n in dom the charact of(U2) & (the charact of(U2)).n = o2 by FINSEQ_2:11; A11: dom the charact of(U2) = dom Opers(U2,B2) by Def7; then reconsider o21 = (the charact of(U1)).n as operation of U1 by A6,A9,A10,FUNCT_1:def 5; A12: B1 is_closed_on o21 by A5,Def5; A13: o21 = o2/.B2 by A6,A10,A11,Def7; A14:dom the charact of(U1) = dom Opers(U1,B1) by Def7; then reconsider o20 = (the charact of(U0)).n as operation of U0 by A5,A6,A9,A10,A11,FUNCT_1:def 5; A15: o20 = o21 /. B1 by A5,A6,A10,A11,A14,Def7; A16: dom o20 = (arity o20)-tuples_on (the carrier of U0) & dom o21 = (arity o21)-tuples_on (the carrier of U1) & dom o2 = (arity o2)-tuples_on (the carrier of U2) by Th2; A17: o20 = o21 | ((arity o21)-tuples_on B1) & o21 = o2 | ((arity o2)-tuples_on B2) by A8,A12,A13,A15,Def6; then (arity o20)-tuples_on B1 = (arity o21)-tuples_on (the carrier of U1) /\ (arity o21)-tuples_on B1 by A16,FUNCT_1:68; then (arity o20)-tuples_on B1 = (arity o21)-tuples_on B1 by Th1; then A18: arity o20 = arity o21 by FINSEQ_2:130; dom(o2 | ((arity o2)-tuples_on B2)) = dom o2 /\ ((arity o2)-tuples_on B2) by FUNCT_1:68; then (arity o21)-tuples_on B2 = (arity o2)-tuples_on B2 by A16,A17,Th1; then A19: arity o2 = arity o21 by FINSEQ_2:130; now let s be FinSequence of B; reconsider s0 = s as Element of (the carrier of U0)* by A3,FINSEQ_1:def 11; reconsider s1 = s as Element of B1* by A3,FINSEQ_1:def 11; rng s c= B & B c= B2 by A2,A3,FINSEQ_1:def 4; then rng s c= B2 by XBOOLE_1:1; then s is FinSequence of B2 by FINSEQ_1:def 4; then reconsider s2 = s as Element of B2* by FINSEQ_1:def 11; assume A20: len s = arity o2; then s1 in {w where w is Element of B1*: len w = arity o21} by A19; then A21: s1 in (arity o21)-tuples_on B1 by FINSEQ_2:def 4; s2 in {w where w is Element of B2*: len w = arity o2} by A20; then A22: s2 in (arity o2)-tuples_on B2 by FINSEQ_2:def 4; A23: o20.s0 = (o21 | (arity o21)-tuples_on B1).s1 by A12,A15,Def6 .= o21.s1 by A21,FUNCT_1:72 .= (o2 | (arity o2)-tuples_on B2).s2 by A8,A13,Def6 .= o2.s by A22,FUNCT_1:72; s0 in {w where w is Element of (the carrier of U0)*: len w = arity o20} by A18,A19,A20; then s0 in (arity o20)-tuples_on (the carrier of U0) by FINSEQ_2:def 4; then o20.s0 in rng o20 & rng o20 c= B by A3,A16,FUNCT_1:def 5,RELSET_1:12 ; hence o2.s in B by A23; end; hence B is_closed_on o2 by Def4; end; A24: dom the charact of(U0) = dom Opers(U1,B1) by A1,Def8 .= dom the charact of(U1) by Def7; A25: dom the charact of(U1)= dom Opers(U2,B2) by A1,Def8 .= dom the charact of(U2) by Def7; A26: dom the charact of(U2)= dom Opers(U2,B) by Def7; now let n; assume A27: n in dom Opers(U2,B); then reconsider o2 = (the charact of(U2)).n as operation of U2 by A26,Th6; reconsider o21 = (the charact of(U1)).n as operation of U1 by A25,A26,A27, Th6; A28: B is_closed_on o2 by A7; A29: B2 is_closed_on o2 by A6,Def5; A30: B1 is_closed_on o21 by A5,Def5; thus Opers(U2,B).n = o2/.B by A27,Def7 .=o2|((arity o2)-tuples_on B) by A28,Def6 .=o2|((arity o2)-tuples_on B2 /\ (arity o2)-tuples_on B) by A4,Th1 .=(o2|((arity o2)-tuples_on B2))|((arity o2)-tuples_on B)by RELAT_1:100 .=(o2/.B2)|((arity o2)-tuples_on B) by A29,Def6 .=o21|((arity o2)-tuples_on B) by A6,A25,A26,A27,Def7 .=o21|((arity o21)-tuples_on B1) by A1,A3,A25,A26,A27,Th9 .=o21/.B1 by A30,Def6 .= (the charact of(U0)).n by A5,A24,A25,A26,A27,Def7; end; hence the charact of(U0) = Opers(U2,B) by A24,A25,A26,FINSEQ_1:17; thus thesis by A7,Def5; end; theorem Th13: U1 is strict SubAlgebra of U2 & U2 is strict SubAlgebra of U1 implies U1 = U2 proof assume A1: U1 is strict SubAlgebra of U2 & U2 is strict SubAlgebra of U1; then A2: the carrier of U2 is Subset of U1 by Def8; reconsider B = the carrier of U1 as non empty Subset of U2 by A1,Def8; the carrier of U2 c= the carrier of U2; then reconsider B1 = the carrier of U2 as non empty Subset of U2; A3: B1 = B by A2,XBOOLE_0:def 10; then A4: the charact of(U1) = Opers(U2,B1) & B1 is opers_closed by A1,Def8; A5: dom Opers(U2,B1) = dom the charact of (U2) by Def7; for n st n in dom the charact of(U2) holds (the charact of(U2)).n = (Opers(U2,B1)).n proof let n; assume A6: n in dom the charact of(U2); then reconsider o =(the charact of(U2)).n as operation of U2 by Th6; (Opers(U2,B1)).n = o/.B1 by A5,A6,Def7 .= o by Th7; hence (Opers(U2,B1)).n = (the charact of(U2)).n; end; hence U1=U2 by A1,A3,A4,A5,FINSEQ_1:17; end; theorem Th14: for U1,U2 be SubAlgebra of U0 st the carrier of U1 c= the carrier of U2 holds U1 is SubAlgebra of U2 proof let U1,U2 be SubAlgebra of U0; assume A1: the carrier of U1 c= the carrier of U2; hence the carrier of U1 is Subset of U2; reconsider B1 = the carrier of U1 as non empty Subset of U0 by Def8; reconsider B2 = the carrier of U2 as non empty Subset of U0 by Def8; A2: the charact of(U1) = Opers(U0,B1) & B1 is opers_closed & the charact of(U2) = Opers(U0,B2) & B2 is opers_closed by Def8; let B be non empty Subset of U2; assume A3: B = the carrier of U1; A4: dom the charact of(U1) = dom the charact of(U0) & dom the charact of(U2)= dom the charact of(U0) & dom Opers(U0,B1) = dom the charact of(U0) & dom Opers(U0,B2) = dom the charact of(U0) & dom Opers(U2,B) = dom the charact of(U2) by Def7,Th10; A5: B is opers_closed proof let o2 be operation of U2; let s be FinSequence of B; assume A6: arity o2 = len s; B c= B2 & rng s c= B by FINSEQ_1:def 4; then A7: rng s c= B2 & B2 c= the carrier of U0 by XBOOLE_1:1; then s is FinSequence of B2 by FINSEQ_1:def 4; then reconsider s2 = s as Element of B2* by FINSEQ_1:def 11; reconsider s1 = s as Element of B1* by A3,FINSEQ_1:def 11; rng s c= the carrier of U0 by A7,XBOOLE_1:1; then s is FinSequence of (the carrier of U0) by FINSEQ_1:def 4; then reconsider s0 = s as Element of (the carrier of U0)* by FINSEQ_1:def 11; Operations(U2) = rng the charact of(U2) by Def3; then consider n such that A8: n in dom the charact of(U2) & (the charact of(U2)).n = o2 by FINSEQ_2:11; reconsider o0 = (the charact of(U0)).n as operation of U0 by A4,A8,Th6; set tb2 = (arity o0)-tuples_on B2, tb0 = (arity o0)-tuples_on the carrier of U0; A9: tb2 = {w where w is Element of B2*: len w = arity o0} & (arity o0)-tuples_on B1 = {v where v is Element of B1*: len v = arity o0} & tb0 = {x where x is Element of (the carrier of U0)*: len x = arity o0} by FINSEQ_2:def 4; A10: B2 is_closed_on o0 & B1 is_closed_on o0 by A2,Def5; A11: arity o2 = arity o0 by A8,Th9; A12: o2 = o0/.B2 by A2,A8,Def7 .= o0 | tb2 by A10,Def6; s0 in tb0 & s2 in tb2 & s2 = s0 by A6,A9,A11; then o2.s = o0.s1 by A12,FUNCT_1:72; hence thesis by A3,A6,A10,A11,Def4; end; now let n; assume A13: n in dom the charact of(U0); then reconsider o0 = (the charact of(U0)).n as operation of U0 by Th6; reconsider o1 = (the charact of(U1)).n as operation of U1 by A4,A13,Th6; reconsider o2 = (the charact of(U2)).n as operation of U2 by A4,A13,Th6; A14: o1 = o0/.B1 & o2 = o0/.B2 by A2,A4,A13,Def7; A15: B1 is_closed_on o0 & B2 is_closed_on o0 & B is_closed_on o2 by A2,A5,Def5; A16: arity o2 = arity o0 by A4,A13,Th9; thus (the charact of(U1)).n = o0/.B1 by A2,A4,A13,Def7 .= o0 | (arity o0)-tuples_on B1 by A15,Def6 .= o0 | (((arity o0)-tuples_on B2) /\ ((arity o0)-tuples_on B1)) by A1,Th1 .= (o0 | (arity o0)-tuples_on B2) | ((arity o0)-tuples_on B) by A3,RELAT_1:100 .= (o0 /. B2) | ((arity o0)-tuples_on B) by A15,Def6 .= o2 /. B by A14,A15,A16,Def6 .= Opers(U2,B).n by A4,A13,Def7; end; hence the charact of(U1) = Opers(U2,B) by A4,FINSEQ_1:17; thus thesis by A5; end; theorem Th15: for U1,U2 be strict SubAlgebra of U0 st the carrier of U1 = the carrier of U2 holds U1 = U2 proof let U1,U2 be strict SubAlgebra of U0; assume the carrier of U1 = the carrier of U2; then U1 is strict SubAlgebra of U2 & U2 is strict SubAlgebra of U1 by Th14 ; hence thesis by Th13; end; theorem U1 is SubAlgebra of U2 implies U1,U2 are_similar proof assume A1: U1 is SubAlgebra of U2; set s1 = signature(U1), s2 = signature(U2); reconsider A = the carrier of U1 as non empty Subset of U2 by A1,Def8; A2: A is opers_closed & the charact of(U1)=Opers(U2,A) by A1,Def8; len s1 = len the charact of(U1) by UNIALG_1:def 11; then A3: dom s1 = dom the charact of(U1) by FINSEQ_3:31; len s2 = len the charact of(U2) by UNIALG_1:def 11; then A4: dom s2 = dom the charact of(U2) by FINSEQ_3:31; A5: dom the charact of (U1)= dom Opers(U2,A) by A1,Def8; A6: dom s1 c= dom s2 by A2,A3,A4,Def7; A7: dom s1 = dom s2 by A3,A4,A5,Def7; set X = dom s1; for n st n in X holds s1.n = s2.n proof let n; assume A8: n in X; then reconsider o1=(the charact of(U1)).n as operation of U1 by A3,Th6; A9: s1.n = arity(o1) by A8,UNIALG_1:def 11; reconsider o2=(the charact of U2).n as operation of U2 by A4,A7,A8,Th6; s2.n = arity(o2) by A6,A8,UNIALG_1:def 11; hence thesis by A1,A3,A8,A9,Th9; end; then s1 = s2 by A7,FINSEQ_1:17; hence thesis by Def2; end; theorem Th17: for A be non empty Subset of U0 holds UAStr (#A,Opers(U0,A)#) is strict Universal_Algebra proof let A be non empty Subset of U0; set C = UAStr(#A,Opers(U0,A)#); A1: dom the charact of(C) = dom the charact of(U0) by Def7; for n be Nat ,h be PartFunc of (the carrier of C)*,the carrier of C st n in dom the charact of(C) & h = (the charact of C).n holds h is homogeneous proof let n; let h be PartFunc of (the carrier of C)*,the carrier of C; assume A2: n in dom the charact of(C) & h = (the charact of C).n; then reconsider o = (the charact of U0).n as operation of U0 by A1,Th6; h =o/.A by A2,Def7; hence thesis; end; then A3: the charact of (C) is homogeneous by UNIALG_1:def 4; for n be Nat ,h be PartFunc of C st n in dom the charact of(C) & h = (the charact of C).n holds h is quasi_total proof let n; let h be PartFunc of (the carrier of C)*,the carrier of C; assume A4: n in dom the charact of(C) & h = (the charact of C).n; then reconsider o = (the charact of U0).n as operation of U0 by A1,Th6; h =o/.A by A4,Def7; hence thesis; end; then A5: the charact of C is quasi_total by UNIALG_1:def 5; dom the charact of C <> {} by A1,FINSEQ_1:26; then A6: the charact of C <> {} by FINSEQ_1:26; for n be set st n in dom the charact of(C) holds (the charact of C).n is non empty proof let n be set; assume A7: n in dom the charact of(C); then reconsider o = (the charact of U0).n as operation of U0 by A1,Th6; (the charact of C).n =o/.A by A7,Def7; hence thesis; end; then the charact of(C) is non-empty by UNIALG_1:def 6; hence thesis by A3,A5,A6,UNIALG_1:def 7,def 8,def 9; end; definition let U0 be Universal_Algebra, A be non empty Subset of U0; assume A1: A is opers_closed; func UniAlgSetClosed(A) -> strict SubAlgebra of U0 equals :Def9: UAStr (# A, Opers(U0,A) #); coherence proof reconsider C = UAStr(# A,Opers(U0,A) #) as strict Universal_Algebra by Th17; for B be non empty Subset of U0 st B =the carrier of C holds the charact of(C) = Opers(U0,B) & B is opers_closed by A1; hence thesis by Def8; end; end; definition let U0; let U1,U2 be SubAlgebra of U0; assume A1: the carrier of U1 meets the carrier of U2; func U1 /\ U2 -> strict SubAlgebra of U0 means :Def10: the carrier of it = (the carrier of U1) /\ (the carrier of U2) & for B be non empty Subset of U0 st B=the carrier of it holds the charact of(it) = Opers(U0,B) & B is opers_closed; existence proof A2: the carrier of U1 is Subset of U0 & the carrier of U2 is Subset of U0 by Def8; A3: (the carrier of U1) /\ (the carrier of U2)c= the carrier of U1 & (the carrier of U1) /\ (the carrier of U2)c= the carrier of U2 by XBOOLE_1:17; then reconsider C =(the carrier of U1) /\ (the carrier of U2) as non empty Subset of U0 by A1,A2,XBOOLE_0:def 7,XBOOLE_1: 1; A4: now let o be operation of U0; now let s be FinSequence of C; assume A5: len s =arity o; set B1 =the carrier of U1, B2 =the carrier of U2; reconsider s1=s as FinSequence of B1 by A3,FINSEQ_2:27; reconsider B1 as non empty Subset of U0 by Def8; B1 is opers_closed by Def8; then B1 is_closed_on o by Def5; then A6: o.s1 in B1 by A5,Def4; reconsider s2=s as FinSequence of B2 by A3,FINSEQ_2:27; reconsider B2 as non empty Subset of U0 by Def8; B2 is opers_closed by Def8; then B2 is_closed_on o by Def5; then o.s2 in B2 by A5,Def4; hence o.s in C by A6,XBOOLE_0:def 3; end; hence C is_closed_on o by Def4; end; set S =UAStr(#C,Opers(U0,C)#); A7: for B be non empty Subset of U0 st B=the carrier of S holds the charact of(S) = Opers(U0,B) & B is opers_closed by A4,Def5; reconsider S as Universal_Algebra by Th17; reconsider S as strict SubAlgebra of U0 by A7,Def8; take S; thus thesis by A4,Def5; end; uniqueness proof let W1,W2 be strict SubAlgebra of U0; assume A8: the carrier of W1 = (the carrier of U1) /\ (the carrier of U2) & (for B1 be non empty Subset of U0 st B1=the carrier of W1 holds the charact of(W1) = Opers(U0,B1) & B1 is opers_closed) & the carrier of W2= (the carrier of U1) /\ (the carrier of U2) & for B2 be non empty Subset of U0 st B2=the carrier of W2 holds the charact of(W2) = Opers(U0,B2) & B2 is opers_closed; A9: the carrier of U1 is Subset of U0 & the carrier of U2 is Subset of U0 by Def8; (the carrier of U1) /\ (the carrier of U2)c=(the carrier of U1) & (the carrier of U1) /\ (the carrier of U2)c=(the carrier of U2) by XBOOLE_1:17; then reconsider C =(the carrier of U1) /\ (the carrier of U2) as non empty Subset of U0 by A1,A9,XBOOLE_0:def 7,XBOOLE_1:1; the charact of W2 = Opers(U0,C) by A8; hence thesis by A8; end; end; definition let U0; func Constants(U0) -> Subset of U0 equals :Def11: { a where a is Element of U0: ex o be operation of U0 st arity o=0 & a in rng o}; coherence proof set E = {a where a is Element of U0 : ex o be operation of U0 st arity o=0 & a in rng o}; E c= the carrier of U0 proof let x; assume x in E; then consider w be Element of U0 such that A1:w=x & ex o be operation of U0 st arity o=0 & w in rng o; thus thesis by A1; end; hence E is Subset of U0; end; end; definition let IT be Universal_Algebra; attr IT is with_const_op means :Def12: ex o being operation of IT st arity o=0; end; definition cluster with_const_op strict Universal_Algebra; existence proof consider A be non empty set; consider a be Element of A; reconsider w = {<*>A} --> a as Element of PFuncs(A*,A) by UNIALG_1:3; set U0 = UAStr (# A, <*w*> #); A1: the charact of U0 is quasi_total & the charact of U0 is homogeneous & the charact of U0 is non-empty by UNIALG_1:4; the charact of U0 <> {} proof assume A2: the charact of U0 = {}; len(the charact of(U0)) = 1 by FINSEQ_1:56; hence contradiction by A2,FINSEQ_1:25; end; then reconsider U0 as Universal_Algebra by A1,UNIALG_1:def 7,def 8,def 9; take U0; dom <*w*> ={1} & 1 in {1} by FINSEQ_1:4,55,TARSKI:def 1; then reconsider o= (the charact of U0).1 as operation of U0 by Th6; o=w by FINSEQ_1:57; then A3: dom o = {<*>A} by FUNCOP_1:19; now let x be FinSequence of A; assume x in dom o; then x = <*>A by A3,TARSKI:def 1; hence len x = 0 by FINSEQ_1:32; end; then arity o = 0 by UNIALG_1:def 10; hence thesis by Def12; end; end; definition let U0 be with_const_op Universal_Algebra; cluster Constants(U0) -> non empty; coherence proof consider o being operation of U0 such that A1: arity o=0 by Def12; dom o = 0-tuples_on the carrier of U0 by A1,Th2 .={<*>the carrier of U0} by FINSEQ_2:112; then <*>the carrier of U0 in dom o by TARSKI:def 1; then A2: o.(<*>the carrier of U0) in rng o & rng o c= the carrier of U0 by FUNCT_1:def 5,RELSET_1:12; then reconsider u = o.(<*>the carrier of U0) as Element of U0; u in { a where a is Element of U0: ex o be operation of U0 st arity o=0 & a in rng o} by A1,A2; hence thesis by Def11; end; end; theorem Th18: for U0 be Universal_Algebra, U1 be SubAlgebra of U0 holds Constants(U0) is Subset of U1 proof let U0 be Universal_Algebra, U1 be SubAlgebra of U0; set u1 = the carrier of U1; Constants(U0) c= u1 proof let x be set; assume x in Constants(U0); then x in { a where a is Element of U0: ex o be operation of U0 st arity o=0 & a in rng o} by Def11; then consider a be Element of U0 such that A1: a=x & ex o be operation of U0 st arity o=0 & a in rng o; consider o0 be operation of U0 such that A2: arity o0 = 0 & a in rng o0 by A1; Operations(U0) = rng the charact of(U0) by Def3; then consider n such that A3: n in dom (the charact of U0) & (the charact of U0).n=o0 by FINSEQ_2:11; reconsider B =u1 as non empty Subset of U0 by Def8; A4: the charact of(U1) =Opers(U0,B) & B is opers_closed by Def8; A5: n in dom the charact of(U1) by A3,Th10; then reconsider o1= (the charact of U1).n as operation of U1 by Th6; A6: o1=o0/.B by A3,A4,A5,Def7; consider y be set such that A7: y in dom o0 & a = o0.y by A2,FUNCT_1:def 5; A8: B is_closed_on o0 by A4,Def5; dom o0 = 0-tuples_on the carrier of U0 by A2,Th2 .= {<*>the carrier of U0} by FINSEQ_2:112; then y in {<*>B} by A7; then y in 0-tuples_on B by FINSEQ_2:112; then y in dom o0 /\ (arity o0)-tuples_on B by A2,A7,XBOOLE_0:def 3; then A9: y in dom (o0 | (arity o0)-tuples_on B) by FUNCT_1:68; then A10: y in dom (o0/.B) by A8,Def6; A11: o1.y = (o0 | (arity o0)-tuples_on B).y by A6,A8,Def6 .= a by A7,A9,FUNCT_1:68; o1.y in rng o1 & rng o1 c= the carrier of U1 by A6,A10,FUNCT_1:def 5,RELSET_1:12; hence thesis by A1,A11; end; hence thesis; end; theorem for U0 be with_const_op Universal_Algebra, U1 be SubAlgebra of U0 holds Constants(U0) is non empty Subset of U1 by Th18; theorem Th20: for U0 be with_const_op Universal_Algebra,U1,U2 be SubAlgebra of U0 holds the carrier of U1 meets the carrier of U2 proof let U0 be with_const_op Universal_Algebra, U1,U2 be SubAlgebra of U0; consider a be Element of Constants(U0); Constants(U0) is non empty Subset of U1 & Constants(U0) is non empty Subset of U2 by Th18; then A1: Constants(U0) c= (the carrier of U1) /\ (the carrier of U2) by XBOOLE_1:19; a in Constants(U0); hence thesis by A1,XBOOLE_0:4; end; definition let U0 be Universal_Algebra, A be Subset of U0; assume A1: Constants(U0) <> {} or A <> {}; func GenUnivAlg(A) -> strict SubAlgebra of U0 means :Def13: A c= the carrier of it & for U1 be SubAlgebra of U0 st A c= the carrier of U1 holds it is SubAlgebra of U1; existence proof set C = bool(the carrier of U0); defpred P[set] means A c= $1 & Constants(U0) c= $1 & for B be non empty Subset of U0 st B =$1 holds B is opers_closed; consider X be set such that A2:for x holds x in X iff x in C & P[x] from Separation; set P = meet X; A3: the carrier of U0 in C by ZFMISC_1:def 1; for B be non empty Subset of U0 st B = the carrier of U0 holds B is opers_closed by Th7; then A4: the carrier of U0 in X by A2,A3; A5: P c= the carrier of U0 proof let t be set; assume t in P; hence thesis by A4,SETFAM_1:def 1; end; now let x be set; assume x in X; then A c= x & Constants(U0) c= x by A2; hence A \/ Constants(U0) c= x by XBOOLE_1:8; end; then A6: A \/ Constants(U0) c= P by A4,SETFAM_1:6; A7:A \/ Constants(U0) <> {} by A1,XBOOLE_1:15; then reconsider P as non empty Subset of U0 by A5,A6,XBOOLE_1 :3; A8: P is opers_closed proof let o be operation of U0; let s be FinSequence of P; assume A9: len s = arity o; now let a be set; assume A10: a in X; then reconsider a0 = a as Subset of U0 by A2; A c= a0 & Constants(U0) c= a0 by A2,A10; then A \/ Constants(U0) c= a0 by XBOOLE_1:8; then reconsider a0 as non empty Subset of U0 by A7, XBOOLE_1:3; a0 is opers_closed by A2,A10; then A11: a0 is_closed_on o by Def5; P c= a0 & rng s c= P by A10,FINSEQ_1:def 4,SETFAM_1:4; then rng s c= a0 by XBOOLE_1:1; then reconsider s0 = s as FinSequence of a0 by FINSEQ_1:def 4; o.s0 in a0 by A9,A11,Def4; hence o.s in a; end; hence o.s in P by A4,SETFAM_1:def 1; end; take E = UniAlgSetClosed(P); A12: E = UAStr (# P, Opers(U0,P) #) by A8,Def9; A c= A \/ Constants(U0) by XBOOLE_1:7; hence A c= the carrier of E by A6,A12,XBOOLE_1:1; let U1 be SubAlgebra of U0; assume A13: A c= the carrier of U1; set u1 = the carrier of U1; A14:Constants(U0) c= u1 proof let x be set; assume x in Constants(U0); then x in { a where a is Element of U0: ex o be operation of U0 st arity o=0 & a in rng o} by Def11; then consider a be Element of U0 such that A15:a=x & ex o be operation of U0 st arity o=0 & a in rng o; consider o0 be operation of U0 such that A16: arity o0 = 0 & a in rng o0 by A15; Operations(U0) = rng the charact of(U0) by Def3; then consider n such that A17:n in dom (the charact of(U0)) & (the charact of U0).n=o0 by FINSEQ_2:11; reconsider B =u1 as non empty Subset of U0 by Def8; A18:the charact of(U1) =Opers(U0,B) & B is opers_closed by Def8; A19:n in dom the charact of(U1) by A17,Th10; then reconsider o1= (the charact of U1).n as operation of U1 by Th6; A20: o1=o0/.B by A17,A18,A19,Def7; consider y be set such that A21: y in dom o0 & a = o0.y by A16,FUNCT_1:def 5; A22: B is_closed_on o0 by A18,Def5; dom o0 = 0-tuples_on the carrier of U0 by A16,Th2 .= {<*>the carrier of U0} by FINSEQ_2:112; then y in {<*>B} by A21; then y in 0-tuples_on B by FINSEQ_2:112; then y in dom o0 /\ (arity o0)-tuples_on B by A16,A21,XBOOLE_0:def 3; then A23: y in dom (o0 | (arity o0)-tuples_on B) by FUNCT_1:68; then A24: y in dom (o0/.B) by A22,Def6; A25: o1.y = (o0 | (arity o0)-tuples_on B).y by A20,A22,Def6 .= a by A21,A23,FUNCT_1:68; o1.y in rng o1 & rng o1 c= the carrier of U1 by A20,A24,FUNCT_1:def 5,RELSET_1:12; hence thesis by A15,A25; end; u1 is Subset of U0 & for B be non empty Subset of U0 st B = u1 holds the charact of(U1) = Opers(U0,B) & B is opers_closed by Def8; then u1 in C & for B be non empty Subset of U0 st B = u1 holds B is opers_closed; then A26: u1 in X by A2,A13,A14; then A27: P c= u1 by SETFAM_1:4; thus the carrier of E is Subset of U1 by A12,A26,SETFAM_1:4; let B be non empty Subset of U1; assume A28: B = the carrier of E; reconsider u11 = u1 as non empty Subset of U0 by Def8; A29: the charact of(U1) = Opers(U0,u11) & u11 is opers_closed by Def8; A30: dom the charact of(U0) = dom Opers(U0,P) & dom the charact of(U0) = dom Opers(U0,u11) by Def7; A31: now let o1 be operation of U1; Operations (U1) = rng the charact of(U1) by Def3; then consider n such that A32: n in dom the charact of(U1) & o1 = (the charact of U1).n by FINSEQ_2:11; reconsider o0 = (the charact of U0).n as operation of U0 by A29,A30,A32, Th6; A33: arity o0 =arity o1 by A32,Th9; A34: u11 is_closed_on o0 by A29,Def5; now let s be FinSequence of B; assume A35: len s = arity o1; reconsider sE=s as Element of P* by A12,A28,FINSEQ_1:def 11; s is FinSequence of u11 by FINSEQ_2:27; then reconsider s1 =s as Element of u11* by FINSEQ_1:def 11; A36: dom(o0|(arity o0)-tuples_on u11) = (dom o0) /\ (arity o0)-tuples_on u11 by FUNCT_1:68 .= (arity o0)-tuples_on (the carrier of U0) /\ (arity o0)-tuples_on u11 by Th2 .= (arity o0)-tuples_on u11 by Th1; s1 in{q where q is Element of u11*: len q = arity o0} by A33,A35; then A37: s1 in dom(o0|(arity o0)-tuples_on u11) by A36,FINSEQ_2:def 4; A38: P is_closed_on o0 by A8,Def5; o1.s = (o0/.u11).s1 by A29,A32,Def7 .= (o0|(arity o0)-tuples_on u11).s1 by A34,Def6 .= o0.sE by A37,FUNCT_1:68; hence o1.s in B by A12,A28,A33,A35,A38,Def4; end; hence B is_closed_on o1 by Def4; end; A39: dom Opers(U1,B) = dom the charact of(U1) by Def7; now let n; assume A40: n in dom the charact of(U0); then reconsider o0 = (the charact of U0).n as operation of U0 by Th6; reconsider o1 = (the charact of U1).n as operation of U1 by A29,A30,A40,Th6; A41: u11 is_closed_on o0 by A29,Def5; A42: B is_closed_on o1 by A31; A43: P is_closed_on o0 by A8,Def5; thus (the charact of E).n = o0/.P by A12,A30,A40,Def7 .= o0|((arity o0)-tuples_on P) by A43,Def6 .= o0|((arity o0)-tuples_on u11 /\(arity o0)-tuples_on P)by A27,Th1 .= (o0|((arity o0)-tuples_on u11))|((arity o0)-tuples_on P) by RELAT_1:100 .= (o0/.u11)|((arity o0)-tuples_on P) by A41,Def6 .= o1|((arity o0)-tuples_on P) by A29,A30,A40,Def7 .= o1|((arity o1)-tuples_on B) by A12,A28,A29,A30,A40,Th9 .= o1/.B by A42,Def6 .= Opers(U1,B).n by A29,A30,A39,A40,Def7; end; hence thesis by A12,A29,A30,A31,A39,Def5,FINSEQ_1:17; end; uniqueness proof let W1,W2 be strict SubAlgebra of U0; assume A c= the carrier of W1 & (for U1 be SubAlgebra of U0 st A c= the carrier of U1 holds W1 is SubAlgebra of U1) & A c= the carrier of W2 & (for U2 be SubAlgebra of U0 st A c= the carrier of U2 holds W2 is SubAlgebra of U2); then W1 is strict SubAlgebra of W2 & W2 is strict SubAlgebra of W1; hence thesis by Th13; end; end; theorem for U0 be strict Universal_Algebra holds GenUnivAlg([#] (the carrier of U0)) = U0 proof let U0 be strict Universal_Algebra; A1:[#](the carrier of U0)=the carrier of U0 by SUBSET_1:def 4; set W = GenUnivAlg([#](the carrier of U0)); A2: (the carrier of W) is Subset of U0 by Def8; the carrier of U0 c= the carrier of W by A1,Def13; then A3:the carrier of U0 = the carrier of W by A2,XBOOLE_0:def 10; reconsider B = the carrier of W as non empty Subset of U0 by Def8; A4:B is opers_closed & the charact of(W) = Opers(U0,B) by Def8; A5:dom the charact of(U0) = dom Opers(U0,B) by Def7; for n st n in dom the charact of(U0) holds (the charact of(U0)).n = (Opers(U0,B)).n proof let n; assume A6: n in dom the charact of(U0); then reconsider o =(the charact of(U0)).n as operation of U0 by Th6; (Opers(U0,B)).n = o/.B by A5,A6,Def7; hence (Opers(U0,B)).n = (the charact of(U0)).n by A3,Th7; end; hence thesis by A3,A4,A5,FINSEQ_1:17; end; theorem Th22: for U0 be Universal_Algebra, U1 be strict SubAlgebra of U0, B be non empty Subset of U0 st B = the carrier of U1 holds GenUnivAlg(B) = U1 proof let U0 be Universal_Algebra,U1 be strict SubAlgebra of U0, B be non empty Subset of U0; assume A1: B = the carrier of U1; set W = GenUnivAlg(B); GenUnivAlg(B) is SubAlgebra of U1 by A1,Def13; then A2: the carrier of W is non empty Subset of U1 by Def8; the carrier of U1 c= the carrier of W by A1,Def13; then the carrier of U1 = the carrier of W by A2,XBOOLE_0:def 10; hence thesis by Th15; end; definition let U0 be Universal_Algebra, U1,U2 be SubAlgebra of U0; func U1 "\/" U2 -> strict SubAlgebra of U0 means :Def14: for A be non empty Subset of U0 st A = (the carrier of U1) \/ (the carrier of U2) holds it = GenUnivAlg(A); existence proof reconsider B =(the carrier of U1) \/ (the carrier of U2) as non empty set; the carrier of U1 is Subset of U0 & the carrier of U2 is Subset of U0 by Def8; then reconsider B as non empty Subset of U0 by XBOOLE_1:8; take GenUnivAlg(B); thus thesis; end; uniqueness proof let W1,W2 be strict SubAlgebra of U0; assume A1:(for A be non empty Subset of U0 st A = (the carrier of U1) \/ (the carrier of U2) holds W1 = GenUnivAlg(A)) & ( for A be non empty Subset of U0 st A = (the carrier of U1) \/ (the carrier of U2) holds W2 = GenUnivAlg(A)); reconsider B =(the carrier of U1) \/ (the carrier of U2) as non empty set; the carrier of U1 is Subset of U0 & the carrier of U2 is Subset of U0 by Def8; then reconsider B as non empty Subset of U0 by XBOOLE_1:8; W1 = GenUnivAlg(B) & W2 = GenUnivAlg(B) by A1; hence thesis; end; end; theorem Th23: for U0 be Universal_Algebra, U1 be SubAlgebra of U0, A,B be Subset of U0 st (A <> {} or Constants(U0) <> {}) & B = A \/ the carrier of U1 holds GenUnivAlg(A) "\/" U1 = GenUnivAlg(B) proof let U0 be Universal_Algebra, U1 be SubAlgebra of U0, A,B be Subset of U0; assume A1: (A <> {} or Constants(U0) <> {}) & B = A \/ the carrier of U1; then A2: B <> {} or Constants(U0) <> {}; A3:A c= the carrier of GenUnivAlg(A) by A1,Def13; reconsider u1 = the carrier of U1, a = the carrier of GenUnivAlg(A) as non empty Subset of U0 by Def8; reconsider b=a \/ u1 as non empty Subset of U0; A4: (GenUnivAlg(A) "\/" U1) = GenUnivAlg(b) by Def14; then A5:a \/ u1 c= the carrier of (GenUnivAlg(A)"\/"U1) by Def13; A \/ u1 c= a \/ u1 by A3,XBOOLE_1:13; then B c=the carrier of (GenUnivAlg(A)"\/"U1) by A1,A5,XBOOLE_1:1; then A6:GenUnivAlg(B) is strict SubAlgebra of (GenUnivAlg(A)"\/"U1) by A2, Def13; B c= the carrier of GenUnivAlg(B) & u1 c= B & A c=B by A1,Def13,XBOOLE_1:7; then A7: u1 c= the carrier of GenUnivAlg(B) & A c= the carrier of GenUnivAlg( B) by XBOOLE_1:1; then A8: A c= (the carrier of GenUnivAlg(A)) /\ (the carrier of GenUnivAlg(B) ) by A3,XBOOLE_1:19; now per cases by A1; case A <> {}; hence (the carrier of GenUnivAlg(A)) /\ (the carrier of GenUnivAlg(B)) <> {} by A8,XBOOLE_1:3; case A9: Constants(U0) <> {}; Constants(U0) is Subset of GenUnivAlg(A) & Constants(U0) is Subset of GenUnivAlg(B) by Th18; then Constants(U0) c= (the carrier of GenUnivAlg(A)) /\ (the carrier of GenUnivAlg(B)) by XBOOLE_1:19; hence (the carrier of GenUnivAlg(A)) /\ (the carrier of GenUnivAlg(B)) <> {} by A9,XBOOLE_1:3; end; then (the carrier of GenUnivAlg(A)) meets (the carrier of GenUnivAlg(B)) by XBOOLE_0:def 7; then A10:the carrier of (GenUnivAlg(A) /\ GenUnivAlg(B)) = (the carrier of GenUnivAlg(A)) /\ (the carrier of GenUnivAlg(B)) by Def10; then GenUnivAlg(A) is SubAlgebra of (GenUnivAlg(A) /\ GenUnivAlg(B)) by A1,A8,Def13; then A11: a is non empty Subset of (GenUnivAlg(A) /\ GenUnivAlg(B)) by Def8; (the carrier of GenUnivAlg(A)) /\ (the carrier of GenUnivAlg(B)) c= a by XBOOLE_1:17; then a= (the carrier of GenUnivAlg(A)) /\ (the carrier of GenUnivAlg(B)) by A10,A11,XBOOLE_0:def 10 ; then a c= the carrier of GenUnivAlg(B) by XBOOLE_1:17; then b c= the carrier of GenUnivAlg(B) by A7,XBOOLE_1:8; then GenUnivAlg(b) is strict SubAlgebra of GenUnivAlg(B) by Def13; hence thesis by A4,A6,Th13; end; theorem Th24: for U0 be Universal_Algebra, U1,U2 be SubAlgebra of U0 holds U1 "\/" U2 = U2 "\/" U1 proof let U0 be Universal_Algebra ,U1,U2 be SubAlgebra of U0; reconsider u1=the carrier of U1 ,u2=the carrier of U2 as non empty Subset of U0 by Def8; reconsider A = u1 \/ u2 as non empty Subset of U0; U1 "\/" U2 = GenUnivAlg(A) by Def14; hence thesis by Def14; end; theorem Th25: for U0 be with_const_op Universal_Algebra,U1,U2 be strict SubAlgebra of U0 holds U1 /\ (U1"\/"U2) = U1 proof let U0 be with_const_op Universal_Algebra, U1,U2 be strict SubAlgebra of U0; A1:(the carrier of U1) meets (the carrier of (U1"\/"U2)) by Th20; then A2:the carrier of (U1 /\(U1"\/"U2))=(the carrier of U1)/\ (the carrier of(U1 "\/" U2)) by Def10; reconsider u1= the carrier of U1 ,u2 =the carrier of U2 as non empty Subset of U0 by Def8; reconsider A= u1 \/ u2 as non empty Subset of U0; U1"\/"U2 = GenUnivAlg(A) by Def14; then A3:A c= the carrier of (U1 "\/" U2) by Def13; the carrier of U1 c= A by XBOOLE_1:7; then the carrier of U1 c= the carrier of (U1"\/"U2) by A3,XBOOLE_1:1; then A4:the carrier of U1 c=the carrier of (U1 /\(U1"\/"U2)) by A2,XBOOLE_1: 19; A5: the carrier of (U1 /\(U1"\/"U2)) c= the carrier of U1 by A2,XBOOLE_1:17; reconsider u112=the carrier of(U1 /\ (U1"\/"U2)) as non empty Subset of U0 by Def8; A6:the charact of (U1/\(U1"\/"U2)) = Opers(U0,u112) & u112 is opers_closed by A1,Def10; A7:the charact of (U1)= Opers(U0,u1) & u1 is opers_closed by Def8; A8:dom Opers(U0,u112) = dom the charact of(U0) & dom Opers(U0,u1) = dom the charact of(U0) by Def7; for n st n in dom the charact of (U0) holds (the charact of U1/\(U1"\/"U2)).n= (the charact of U1).n proof let n; assume A9:n in dom the charact of (U0); then reconsider o0 = (the charact of U0).n as operation of U0 by Th6; thus (the charact of U1 /\ ( U1 "\/" U2)).n = Opers(U0,u112).n by A1,Def10 .= o0/.u112 by A8,A9,Def7 .=o0/.u1 by A4,A5,XBOOLE_0:def 10 .=Opers(U0,u1).n by A8,A9,Def7 .= (the charact of U1).n by Def8; end; then the charact of (U1/\(U1"\/"U2))= the charact of (U1) by A6,A7,A8,FINSEQ_1:17; hence thesis by A4,A5,XBOOLE_0:def 10; end; theorem Th26: for U0 be with_const_op Universal_Algebra,U1,U2 be strict SubAlgebra of U0 holds (U1 /\ U2)"\/"U2 = U2 proof let U0 be with_const_op Universal_Algebra, U1,U2 be strict SubAlgebra of U0; reconsider u12= the carrier of (U1 /\ U2), u2 = the carrier of U2 as non empty Subset of U0 by Def8; reconsider A=u12 \/ u2 as non empty Subset of U0; A1:(U1 /\ U2)"\/"U2=GenUnivAlg(A) by Def14; (the carrier of U1) meets (the carrier of U2) by Th20; then u12 = (the carrier of U1) /\ (the carrier of U2) by Def10; then u12 c= u2 by XBOOLE_1:17; then A = u2 by XBOOLE_1:12; hence thesis by A1,Th22; end; definition let U0 be Universal_Algebra; func Sub(U0) -> set means :Def15: for x holds x in it iff x is strict SubAlgebra of U0; existence proof reconsider X = { GenUnivAlg(A) where A is Subset of U0: A is non empty} as set; take X; let x; thus x in X implies x is strict SubAlgebra of U0 proof assume x in X; then consider A be Subset of U0 such that A1: x = GenUnivAlg(A) & A is non empty; thus thesis by A1; end; assume x is strict SubAlgebra of U0; then reconsider a = x as strict SubAlgebra of U0; reconsider A = the carrier of a as non empty Subset of U0 by Def8; a = GenUnivAlg(A) by Th22; hence x in X; end; uniqueness proof let A,B be set; assume A2: (for x holds x in A iff x is strict SubAlgebra of U0) & (for y holds y in B iff y is strict SubAlgebra of U0); now let x; assume x in A; then x is strict SubAlgebra of U0 by A2; hence x in B by A2; end; hence A c= B by TARSKI:def 3; let y; assume y in B; then y is strict SubAlgebra of U0 by A2; hence y in A by A2; end; end; definition let U0 be Universal_Algebra; cluster Sub(U0) -> non empty; coherence proof consider x being strict SubAlgebra of U0; x in Sub U0 by Def15; hence thesis; end; end; definition let U0 be Universal_Algebra; func UniAlg_join(U0) -> BinOp of Sub(U0) means :Def16: for x,y be Element of Sub(U0) holds for U1,U2 be strict SubAlgebra of U0 st x = U1 & y = U2 holds it.(x,y) = U1 "\/" U2; existence proof defpred P[(Element of Sub(U0)),(Element of Sub(U0)),Element of Sub(U0)] means for U1,U2 be strict SubAlgebra of U0 st $1=U1 & $2=U2 holds $3=U1 "\/" U2; A1: for x,y being Element of Sub(U0) ex z being Element of Sub(U0) st P[x,y,z] proof let x,y be Element of Sub(U0); reconsider U1=x, U2=y as strict SubAlgebra of U0 by Def15; reconsider z =U1"\/"U2 as Element of Sub(U0) by Def15; take z; thus thesis; end; consider o be BinOp of Sub(U0) such that A2:for a,b be Element of Sub(U0) holds P[a,b,o.(a,b)] from BinOpEx(A1); take o; thus thesis by A2; end; uniqueness proof let o1,o2 be BinOp of (Sub(U0)); assume A3:(for x,y be Element of Sub(U0) holds for U1,U2 be strict SubAlgebra of U0 st x=U1 & y=U2 holds o1.(x,y)=U1 "\/" U2) & (for x,y be Element of Sub(U0) holds for U1,U2 be strict SubAlgebra of U0 st x=U1 & y=U2 holds o2.(x,y) = U1 "\/" U2); for x be Element of Sub(U0) for y be Element of Sub(U0) holds o1.(x,y) = o2.(x,y) proof let x,y be Element of Sub(U0); reconsider U1=x,U2=y as strict SubAlgebra of U0 by Def15; o1.(x,y) = U1"\/" U2 & o2.(x,y) = U1"\/" U2 by A3; hence thesis; end; hence thesis by BINOP_1:2; end; end; definition let U0 be Universal_Algebra; func UniAlg_meet(U0) -> BinOp of Sub(U0) means :Def17: for x,y be Element of Sub(U0) holds for U1,U2 be strict SubAlgebra of U0 st x = U1 & y = U2 holds it.(x,y) = U1 /\ U2; existence proof defpred P[(Element of Sub(U0)),(Element of Sub(U0)),Element of Sub(U0)] means for U1,U2 be strict SubAlgebra of U0 st $1=U1 & $2=U2 holds $3=U1 /\ U2; A1: for x,y being Element of Sub(U0) ex z being Element of Sub(U0) st P[x,y,z] proof let x,y be Element of Sub(U0); reconsider U1=x, U2=y as strict SubAlgebra of U0 by Def15; reconsider z =U1 /\ U2 as Element of Sub(U0) by Def15; take z; thus thesis; end; consider o be BinOp of Sub(U0) such that A2:for a,b be Element of Sub(U0) holds P[a,b,o.(a,b)] from BinOpEx(A1); take o; thus thesis by A2; end; uniqueness proof let o1,o2 be BinOp of (Sub(U0)); assume A3:(for x,y be Element of Sub(U0) holds for U1,U2 be strict SubAlgebra of U0 st x=U1 & y=U2 holds o1.(x,y)=U1 /\ U2) & (for x,y be Element of Sub(U0) holds for U1,U2 be strict SubAlgebra of U0 st x=U1 & y=U2 holds o2.(x,y) = U1 /\ U2); for x be Element of Sub(U0) for y be Element of Sub(U0) holds o1.(x,y) = o2.(x,y) proof let x,y be Element of Sub(U0); reconsider U1=x,U2=y as strict SubAlgebra of U0 by Def15; o1.(x,y) = U1 /\ U2 & o2.(x,y) = U1 /\ U2 by A3; hence thesis; end; hence thesis by BINOP_1:2; end; end; theorem Th27: UniAlg_join(U0) is commutative proof set o = UniAlg_join(U0); for x,y be Element of Sub(U0) holds o.(x,y)=o.(y,x) proof let x,y be Element of Sub(U0); reconsider U1=x,U2=y as strict SubAlgebra of U0 by Def15; A1:o.(x,y) = U1 "\/" U2 & o.(y,x) = U2 "\/" U1 by Def16; reconsider B=(the carrier of U1) \/ (the carrier of U2) as non empty set; the carrier of U1 is Subset of U0 & the carrier of U2 is Subset of U0 by Def8; then reconsider B as non empty Subset of U0 by XBOOLE_1:8; U1"\/" U2 = GenUnivAlg(B) & U2"\/"U1 = GenUnivAlg(B) by Def14; hence thesis by A1; end; hence thesis by BINOP_1:def 2; end; theorem Th28: UniAlg_join(U0) is associative proof set o = UniAlg_join(U0); for x,y,z be Element of Sub(U0) holds o.(x,o.(y,z))=o.(o.(x,y),z) proof let x,y,z be Element of Sub(U0); reconsider U1=x,U2=y,U3=z as strict SubAlgebra of U0 by Def15; o.(y,z)=U2"\/"U3 & o.(x,y)=U1"\/"U2 by Def16; then A1:o.(x,o.(y,z)) = U1 "\/" (U2"\/"U3) & o.(o.(x,y),z) = (U1"\/"U2)"\/" U3 by Def16; reconsider B=(the carrier of U1) \/ ((the carrier of U2) \/ (the carrier of U3)) as non empty set; A2: the carrier of U1 is Subset of U0 & the carrier of U2 is Subset of U0 & the carrier of U3 is Subset of U0 by Def8; then A3:(the carrier of U2) \/ (the carrier of U3) c= the carrier of U0 by XBOOLE_1:8; reconsider C = (the carrier of U2) \/ (the carrier of U3) as non empty Subset of U0 by A2,XBOOLE_1:8; reconsider D=(the carrier of U1) \/ (the carrier of U2) as non empty Subset of U0 by A2,XBOOLE_1:8; reconsider B as non empty Subset of U0 by A2,A3,XBOOLE_1:8; A4:U1"\/" (U2"\/"U3) = U1 "\/"(GenUnivAlg(C)) by Def14 .=(GenUnivAlg(C)) "\/" U1 by Th24 .= GenUnivAlg(B) by Th23; A5:B= D \/ (the carrier of U3) by XBOOLE_1:4; (U1"\/"U2)"\/"U3 = GenUnivAlg(D)"\/" U3 by Def14 .= GenUnivAlg(B) by A5,Th23; hence thesis by A1,A4; end; hence thesis by BINOP_1:def 3; end; theorem Th29: for U0 be with_const_op Universal_Algebra holds UniAlg_meet(U0) is commutative proof let U0 be with_const_op Universal_Algebra; set o = UniAlg_meet(U0); for x,y be Element of Sub(U0) holds o.(x,y)=o.(y,x) proof let x,y be Element of Sub(U0); reconsider U1=x,U2=y as strict SubAlgebra of U0 by Def15; A1:o.(x,y) = U1 /\ U2 & o.(y,x) = U2 /\ U1 by Def17; A2:(the carrier of U1) meets (the carrier of U2) & (the carrier of U2) meets (the carrier of U1) by Th20; then the carrier of(U2 /\ U1) = (the carrier of U2) /\ (the carrier of U1) & for B2 be non empty Subset of U0 st B2=the carrier of (U2/\U1) holds the charact of (U2/\U1) = Opers(U0,B2) & B2 is opers_closed by Def10; hence thesis by A1,A2,Def10; end; hence thesis by BINOP_1:def 2; end; theorem Th30: for U0 be with_const_op Universal_Algebra holds UniAlg_meet(U0) is associative proof let U0 be with_const_op Universal_Algebra; set o = UniAlg_meet(U0); for x,y,z be Element of Sub(U0) holds o.(x,o.(y,z))=o.(o.(x,y),z) proof let x,y,z be Element of Sub(U0); reconsider U1=x,U2=y,U3=z as strict SubAlgebra of U0 by Def15; reconsider u23 = U2 /\ U3,u12 =U1 /\ U2 as Element of Sub(U0) by Def15; A1:o.(x,o.(y,z)) =o.(x,u23) by Def17 .= U1/\(U2 /\ U3) by Def17; A2:o.(o.(x,y),z) = o.(u12,z) by Def17 .=(U1 /\ U2) /\ U3 by Def17; A3:(the carrier of U1) meets (the carrier of U2) & (the carrier of U2) meets (the carrier of U3) by Th20; then A4:the carrier of (U1 /\ U2) = (the carrier of U1) /\ (the carrier of U2) by Def10; then A5: ((the carrier of U1) /\ (the carrier of U2)) meets (the carrier of U3) by Th20; A6:the carrier of(U2 /\ U3) = (the carrier of U2) /\ (the carrier of U3) by A3,Def10; then (the carrier of U1) meets ((the carrier of U2)/\(the carrier of U3)) by Th20; then A7:the carrier of (U1 /\ (U2 /\ U3)) =(the carrier of U1) /\ ((the carrier of U2)/\(the carrier of U3)) & (for B be non empty Subset of U0 st B=the carrier of (U1/\(U2/\U3)) holds the charact of (U1/\(U2/\U3)) = Opers(U0,B) & B is opers_closed) by A6,Def10; then reconsider C =(the carrier of U1) /\ ((the carrier of U2)/\ (the carrier of U3)) as non empty Subset of U0 by Def8; C =((the carrier of U1)/\(the carrier of U2)) /\ (the carrier of U3) by XBOOLE_1:16; hence thesis by A1,A2,A4,A5,A7,Def10; end; hence thesis by BINOP_1:def 3; end; definition let U0 be with_const_op Universal_Algebra; func UnSubAlLattice(U0) -> strict Lattice equals LattStr (# Sub(U0), UniAlg_join(U0), UniAlg_meet(U0) #); coherence proof set L = LattStr (# Sub(U0), UniAlg_join(U0), UniAlg_meet(U0) #); A1:for a,b being Element of L holds a"\/"b = b"\/"a proof let a,b be Element of L; reconsider x=a,y=b as Element of Sub(U0); A2:UniAlg_join(U0) is commutative by Th27; thus a"\/"b = (UniAlg_join(U0)).(x,y) by LATTICES:def 1 .=(the L_join of L).(b,a) by A2,BINOP_1:def 2 .=b"\/"a by LATTICES:def 1; end; A3:for a,b,c being Element of L holds a"\/"(b"\/"c) = (a"\/"b)"\/"c proof let a,b,c be Element of L; reconsider x=a,y=b,z=c as Element of Sub(U0); A4:UniAlg_join(U0) is associative by Th28; thus a"\/"(b"\/"c) = (the L_join of L).(a,(b"\/"c)) by LATTICES:def 1 .= (UniAlg_join(U0)).(x,(UniAlg_join(U0)).(y,z)) by LATTICES:def 1 .=(the L_join of L).((the L_join of L).(a,b),c) by A4,BINOP_1:def 3 .=((the L_join of L).(a,b))"\/"c by LATTICES:def 1 .=(a"\/"b)"\/"c by LATTICES:def 1; end; A5:for a,b being Element of L holds (a"/\"b)"\/"b = b proof let a,b be Element of L; reconsider x=a,y=b as Element of Sub(U0); A6:(UniAlg_join(U0)).((UniAlg_meet(U0)).(x,y),y)= y proof reconsider U1= x,U2=y as strict SubAlgebra of U0 by Def15; (UniAlg_meet(U0)).(x,y) = U1 /\ U2 by Def17; hence (UniAlg_join(U0)).((UniAlg_meet(U0)).(x,y),y) = ((U1 /\ U2)"\/"U2) by Def16 .=y by Th26; end; thus (a"/\"b)"\/"b = (the L_join of L).((a"/\"b),b) by LATTICES:def 1 .=b by A6,LATTICES:def 2; end; A7:for a,b being Element of L holds a"/\"b = b"/\"a proof let a,b be Element of L; reconsider x=a,y=b as Element of Sub(U0); A8:UniAlg_meet(U0) is commutative by Th29; thus a"/\"b = (UniAlg_meet(U0)).(x,y) by LATTICES:def 2 .=(the L_meet of L).(b,a) by A8,BINOP_1:def 2 .=b"/\"a by LATTICES:def 2; end; A9:for a,b,c being Element of L holds a"/\"(b"/\"c) = (a"/\"b)"/\"c proof let a,b,c be Element of L; reconsider x=a,y=b,z=c as Element of Sub(U0); A10:UniAlg_meet(U0) is associative by Th30; thus a"/\"(b"/\"c) = (the L_meet of L).(a,(b"/\"c)) by LATTICES:def 2 .= (UniAlg_meet(U0)).(x,(UniAlg_meet(U0)).(y,z)) by LATTICES:def 2 .=(the L_meet of L).((the L_meet of L).(a,b),c) by A10,BINOP_1: def 3 .=((the L_meet of L).(a,b))"/\"c by LATTICES:def 2 .=(a"/\"b)"/\"c by LATTICES:def 2; end; for a,b being Element of L holds a"/\"(a"\/"b)=a proof let a,b be Element of L; reconsider x=a,y=b as Element of Sub(U0); A11:(UniAlg_meet(U0)).(x,(UniAlg_join(U0)).(x,y))= x proof reconsider U1= x,U2=y as strict SubAlgebra of U0 by Def15; (UniAlg_join(U0)).(x,y) = U1"\/"U2 by Def16; hence (UniAlg_meet(U0)).(x,(UniAlg_join(U0)).(x,y)) = (U1 /\( U1"\/"U2)) by Def17 .=x by Th25; end; thus a"/\"(a"\/"b) = (the L_meet of L).(a,(a"\/"b)) by LATTICES:def 2 .=a by A11,LATTICES:def 1; end; then L is join-commutative join-associative meet-absorbing meet-commutative meet-associative join-absorbing by A1,A3,A5,A7,A9,LATTICES:def 4,def 5,def 6,def 7,def 8,def 9; hence L is strict Lattice by LATTICES:def 10; end; end;