:: MSAFREE1 semantic presentation
begin
theorem Th1: :: MSAFREE1:1
for f, g being Function st g in product f holds
rng g c= Union f
proof
let f, g be Function; ::_thesis: ( g in product f implies rng g c= Union f )
assume A1: g in product f ; ::_thesis: rng g c= Union f
let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in rng g or y in Union f )
assume y in rng g ; ::_thesis: y in Union f
then consider x being set such that
A2: x in dom g and
A3: y = g . x by FUNCT_1:def_3;
A4: dom g = dom f by A1, CARD_3:9;
then y in f . x by A1, A2, A3, CARD_3:9;
hence y in Union f by A4, A2, CARD_5:2; ::_thesis: verum
end;
scheme :: MSAFREE1:sch 1
DTConstrUniq{ F1() -> non empty DTConstrStr , F2() -> non empty set , F3( set ) -> Element of F2(), F4( set , set , set ) -> Element of F2(), F5() -> Function of (TS F1()),F2(), F6() -> Function of (TS F1()),F2() } :
F5() = F6()
provided
A1: for t being Symbol of F1() st t in Terminals F1() holds
F5() . (root-tree t) = F3(t) and
A2: for nt being Symbol of F1()
for ts being Element of (TS F1()) * st nt ==> roots ts holds
for x being Element of F2() * st x = F5() * ts holds
F5() . (nt -tree ts) = F4(nt,ts,x) and
A3: for t being Symbol of F1() st t in Terminals F1() holds
F6() . (root-tree t) = F3(t) and
A4: for nt being Symbol of F1()
for ts being Element of (TS F1()) * st nt ==> roots ts holds
for x being Element of F2() * st x = F6() * ts holds
F6() . (nt -tree ts) = F4(nt,ts,x)
proof
defpred S1[ set ] means F5() . $1 = F6() . $1;
A5: for nt being Symbol of F1()
for ts being FinSequence of TS F1() st nt ==> roots ts & ( for t being DecoratedTree of the carrier of F1() st t in rng ts holds
S1[t] ) holds
S1[nt -tree ts]
proof
let nt be Symbol of F1(); ::_thesis: for ts being FinSequence of TS F1() st nt ==> roots ts & ( for t being DecoratedTree of the carrier of F1() st t in rng ts holds
S1[t] ) holds
S1[nt -tree ts]
let ts be FinSequence of TS F1(); ::_thesis: ( nt ==> roots ts & ( for t being DecoratedTree of the carrier of F1() st t in rng ts holds
S1[t] ) implies S1[nt -tree ts] )
assume that
A6: nt ==> roots ts and
A7: for t being DecoratedTree of the carrier of F1() st t in rng ts holds
F5() . t = F6() . t ; ::_thesis: S1[nt -tree ts]
A8: rng ts c= TS F1() by FINSEQ_1:def_4;
then A9: rng ts c= dom F5() by FUNCT_2:def_1;
then A10: dom (F5() * ts) = dom ts by RELAT_1:27;
rng ts c= dom F6() by A8, FUNCT_2:def_1;
then A11: dom (F6() * ts) = dom ts by RELAT_1:27;
A12: now__::_thesis:_for_x_being_set_st_x_in_dom_ts_holds_
(F5()_*_ts)_._x_=_(F6()_*_ts)_._x
let x be set ; ::_thesis: ( x in dom ts implies (F5() * ts) . x = (F6() * ts) . x )
assume A13: x in dom ts ; ::_thesis: (F5() * ts) . x = (F6() * ts) . x
then reconsider t = ts . x as Element of FinTrees the carrier of F1() by DTCONSTR:2;
t in rng ts by A13, FUNCT_1:def_3;
then A14: F5() . t = F6() . t by A7;
thus (F5() * ts) . x = F5() . t by A10, A13, FUNCT_1:12
.= (F6() * ts) . x by A11, A13, A14, FUNCT_1:12 ; ::_thesis: verum
end;
dom (F5() * ts) = dom ts by A9, RELAT_1:27
.= Seg (len ts) by FINSEQ_1:def_3 ;
then reconsider ntv1 = F5() * ts as FinSequence by FINSEQ_1:def_2;
rng ntv1 c= F2() by RELAT_1:def_19;
then ntv1 is FinSequence of F2() by FINSEQ_1:def_4;
then reconsider ntv1 = ntv1 as Element of F2() * by FINSEQ_1:def_11;
reconsider tss = ts as Element of (TS F1()) * by FINSEQ_1:def_11;
thus F5() . (nt -tree ts) = F4(nt,tss,ntv1) by A2, A6
.= F6() . (nt -tree ts) by A4, A6, A10, A11, A12, FUNCT_1:2 ; ::_thesis: verum
end;
A15: for s being Symbol of F1() st s in Terminals F1() holds
S1[ root-tree s]
proof
let s be Symbol of F1(); ::_thesis: ( s in Terminals F1() implies S1[ root-tree s] )
assume A16: s in Terminals F1() ; ::_thesis: S1[ root-tree s]
hence F5() . (root-tree s) = F3(s) by A1
.= F6() . (root-tree s) by A3, A16 ;
::_thesis: verum
end;
for t being DecoratedTree of the carrier of F1() st t in TS F1() holds
S1[t] from DTCONSTR:sch_7(A15, A5);
then for x being set st x in TS F1() holds
F5() . x = F6() . x ;
hence F5() = F6() by FUNCT_2:12; ::_thesis: verum
end;
theorem Th2: :: MSAFREE1:2
for S being non empty non void ManySortedSign
for X being ManySortedSet of the carrier of S
for o, b being set st [o,b] in REL X holds
( o in [: the carrier' of S,{ the carrier of S}:] & b in ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X))) * )
proof
let S be non empty non void ManySortedSign ; ::_thesis: for X being ManySortedSet of the carrier of S
for o, b being set st [o,b] in REL X holds
( o in [: the carrier' of S,{ the carrier of S}:] & b in ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X))) * )
let X be ManySortedSet of the carrier of S; ::_thesis: for o, b being set st [o,b] in REL X holds
( o in [: the carrier' of S,{ the carrier of S}:] & b in ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X))) * )
let o, b be set ; ::_thesis: ( [o,b] in REL X implies ( o in [: the carrier' of S,{ the carrier of S}:] & b in ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X))) * ) )
assume A1: [o,b] in REL X ; ::_thesis: ( o in [: the carrier' of S,{ the carrier of S}:] & b in ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X))) * )
then reconsider o9 = o as Element of [: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X)) by ZFMISC_1:87;
reconsider b9 = b as Element of ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X))) * by A1, ZFMISC_1:87;
A2: [o9,b9] in REL X by A1;
hence o in [: the carrier' of S,{ the carrier of S}:] by MSAFREE:def_7; ::_thesis: b in ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X))) *
thus b in ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X))) * by A2; ::_thesis: verum
end;
theorem :: MSAFREE1:3
for S being non empty non void ManySortedSign
for X being ManySortedSet of the carrier of S
for o being OperSymbol of S
for b being FinSequence st [[o, the carrier of S],b] in REL X holds
( len b = len (the_arity_of o) & ( for x being set st x in dom b holds
( ( b . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = b . x holds
the_result_sort_of o1 = (the_arity_of o) . x ) & ( b . x in Union (coprod X) implies b . x in coprod (((the_arity_of o) . x),X) ) ) ) )
proof
let S be non empty non void ManySortedSign ; ::_thesis: for X being ManySortedSet of the carrier of S
for o being OperSymbol of S
for b being FinSequence st [[o, the carrier of S],b] in REL X holds
( len b = len (the_arity_of o) & ( for x being set st x in dom b holds
( ( b . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = b . x holds
the_result_sort_of o1 = (the_arity_of o) . x ) & ( b . x in Union (coprod X) implies b . x in coprod (((the_arity_of o) . x),X) ) ) ) )
let X be ManySortedSet of the carrier of S; ::_thesis: for o being OperSymbol of S
for b being FinSequence st [[o, the carrier of S],b] in REL X holds
( len b = len (the_arity_of o) & ( for x being set st x in dom b holds
( ( b . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = b . x holds
the_result_sort_of o1 = (the_arity_of o) . x ) & ( b . x in Union (coprod X) implies b . x in coprod (((the_arity_of o) . x),X) ) ) ) )
let o be OperSymbol of S; ::_thesis: for b being FinSequence st [[o, the carrier of S],b] in REL X holds
( len b = len (the_arity_of o) & ( for x being set st x in dom b holds
( ( b . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = b . x holds
the_result_sort_of o1 = (the_arity_of o) . x ) & ( b . x in Union (coprod X) implies b . x in coprod (((the_arity_of o) . x),X) ) ) ) )
let b be FinSequence; ::_thesis: ( [[o, the carrier of S],b] in REL X implies ( len b = len (the_arity_of o) & ( for x being set st x in dom b holds
( ( b . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = b . x holds
the_result_sort_of o1 = (the_arity_of o) . x ) & ( b . x in Union (coprod X) implies b . x in coprod (((the_arity_of o) . x),X) ) ) ) ) )
assume A1: [[o, the carrier of S],b] in REL X ; ::_thesis: ( len b = len (the_arity_of o) & ( for x being set st x in dom b holds
( ( b . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = b . x holds
the_result_sort_of o1 = (the_arity_of o) . x ) & ( b . x in Union (coprod X) implies b . x in coprod (((the_arity_of o) . x),X) ) ) ) )
then reconsider b9 = b as Element of ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X))) * by Th2;
len b9 = len (the_arity_of o) by A1, MSAFREE:5;
hence len b = len (the_arity_of o) ; ::_thesis: for x being set st x in dom b holds
( ( b . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = b . x holds
the_result_sort_of o1 = (the_arity_of o) . x ) & ( b . x in Union (coprod X) implies b . x in coprod (((the_arity_of o) . x),X) ) )
for x being set st x in dom b9 holds
( ( b9 . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = b9 . x holds
the_result_sort_of o1 = (the_arity_of o) . x ) & ( b9 . x in Union (coprod X) implies b9 . x in coprod (((the_arity_of o) . x),X) ) ) by A1, MSAFREE:5;
hence for x being set st x in dom b holds
( ( b . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = b . x holds
the_result_sort_of o1 = (the_arity_of o) . x ) & ( b . x in Union (coprod X) implies b . x in coprod (((the_arity_of o) . x),X) ) ) ; ::_thesis: verum
end;
registration
let I be non empty set ;
let M be ManySortedSet of I;
cluster rng M -> non empty ;
coherence
not rng M is empty ;
end;
registration
let I be set ;
cluster Relation-like V3() I -defined Function-like total -> disjoint_valued for set ;
coherence
for b1 being ManySortedSet of I st b1 is V3() holds
b1 is disjoint_valued
proof
let M be ManySortedSet of I; ::_thesis: ( M is V3() implies M is disjoint_valued )
assume A1: M is V3() ; ::_thesis: M is disjoint_valued
let x, y be set ; :: according to PROB_2:def_2 ::_thesis: ( x = y or M . x misses M . y )
assume x <> y ; ::_thesis: M . x misses M . y
percases ( ( x in dom M & y in dom M ) or not x in dom M or not y in dom M ) ;
suppose ( x in dom M & y in dom M ) ; ::_thesis: M . x misses M . y
M . x is empty by A1;
hence M . x misses M . y by XBOOLE_1:65; ::_thesis: verum
end;
suppose ( not x in dom M or not y in dom M ) ; ::_thesis: M . x misses M . y
then ( M . x = {} or M . y = {} ) by FUNCT_1:def_2;
hence M . x misses M . y by XBOOLE_1:65; ::_thesis: verum
end;
end;
end;
end;
registration
let I be set ;
cluster Relation-like I -defined Function-like total disjoint_valued for set ;
existence
ex b1 being ManySortedSet of I st b1 is disjoint_valued
proof
set M = the V3() ManySortedSet of I;
take the V3() ManySortedSet of I ; ::_thesis: the V3() ManySortedSet of I is disjoint_valued
thus the V3() ManySortedSet of I is disjoint_valued ; ::_thesis: verum
end;
end;
definition
let I be non empty set ;
let X be disjoint_valued ManySortedSet of I;
let D be V2() ManySortedSet of I;
let F be ManySortedFunction of X,D;
func Flatten F -> Function of (Union X),(Union D) means :Def1: :: MSAFREE1:def 1
for i being Element of I
for x being set st x in X . i holds
it . x = (F . i) . x;
existence
ex b1 being Function of (Union X),(Union D) st
for i being Element of I
for x being set st x in X . i holds
b1 . x = (F . i) . x
proof
defpred S1[ set , set ] means for i being Element of I st $1 in X . i holds
$2 = (F . i) . $1;
A1: for x being set st x in Union X holds
ex y being set st
( y in Union D & S1[x,y] )
proof
let e be set ; ::_thesis: ( e in Union X implies ex y being set st
( y in Union D & S1[e,y] ) )
assume e in Union X ; ::_thesis: ex y being set st
( y in Union D & S1[e,y] )
then consider i being set such that
A2: i in dom X and
A3: e in X . i by CARD_5:2;
reconsider i = i as Element of I by A2, PARTFUN1:def_2;
take u = (F . i) . e; ::_thesis: ( u in Union D & S1[e,u] )
i in I ;
then A4: i in dom D by PARTFUN1:def_2;
(F . i) . e in D . i by A3, FUNCT_2:5;
hence u in Union D by A4, CARD_5:2; ::_thesis: S1[e,u]
let i9 be Element of I; ::_thesis: ( e in X . i9 implies u = (F . i9) . e )
assume e in X . i9 ; ::_thesis: u = (F . i9) . e
then X . i9 meets X . i by A3, XBOOLE_0:3;
hence u = (F . i9) . e by PROB_2:def_2; ::_thesis: verum
end;
consider f being Function of (Union X),(Union D) such that
A5: for e being set st e in Union X holds
S1[e,f . e] from FUNCT_2:sch_1(A1);
take f ; ::_thesis: for i being Element of I
for x being set st x in X . i holds
f . x = (F . i) . x
let i be Element of I; ::_thesis: for x being set st x in X . i holds
f . x = (F . i) . x
let x be set ; ::_thesis: ( x in X . i implies f . x = (F . i) . x )
assume A6: x in X . i ; ::_thesis: f . x = (F . i) . x
i in I ;
then i in dom X by PARTFUN1:def_2;
then x in Union X by A6, CARD_5:2;
hence f . x = (F . i) . x by A5, A6; ::_thesis: verum
end;
correctness
uniqueness
for b1, b2 being Function of (Union X),(Union D) st ( for i being Element of I
for x being set st x in X . i holds
b1 . x = (F . i) . x ) & ( for i being Element of I
for x being set st x in X . i holds
b2 . x = (F . i) . x ) holds
b1 = b2;
proof
let F1, F2 be Function of (Union X),(Union D); ::_thesis: ( ( for i being Element of I
for x being set st x in X . i holds
F1 . x = (F . i) . x ) & ( for i being Element of I
for x being set st x in X . i holds
F2 . x = (F . i) . x ) implies F1 = F2 )
assume that
A7: for i being Element of I
for x being set st x in X . i holds
F1 . x = (F . i) . x and
A8: for i being Element of I
for x being set st x in X . i holds
F2 . x = (F . i) . x ; ::_thesis: F1 = F2
now__::_thesis:_for_x_being_set_st_x_in_Union_X_holds_
F1_._x_=_F2_._x
let x be set ; ::_thesis: ( x in Union X implies F1 . x = F2 . x )
assume x in Union X ; ::_thesis: F1 . x = F2 . x
then consider i being set such that
A9: i in dom X and
A10: x in X . i by CARD_5:2;
reconsider i = i as Element of I by A9, PARTFUN1:def_2;
thus F1 . x = (F . i) . x by A7, A10
.= F2 . x by A8, A10 ; ::_thesis: verum
end;
hence F1 = F2 by FUNCT_2:12; ::_thesis: verum
end;
end;
:: deftheorem Def1 defines Flatten MSAFREE1:def_1_:_
for I being non empty set
for X being disjoint_valued ManySortedSet of I
for D being V2() ManySortedSet of I
for F being ManySortedFunction of X,D
for b5 being Function of (Union X),(Union D) holds
( b5 = Flatten F iff for i being Element of I
for x being set st x in X . i holds
b5 . x = (F . i) . x );
theorem Th4: :: MSAFREE1:4
for I being non empty set
for X being disjoint_valued ManySortedSet of I
for D being V2() ManySortedSet of I
for F1, F2 being ManySortedFunction of X,D st Flatten F1 = Flatten F2 holds
F1 = F2
proof
let I be non empty set ; ::_thesis: for X being disjoint_valued ManySortedSet of I
for D being V2() ManySortedSet of I
for F1, F2 being ManySortedFunction of X,D st Flatten F1 = Flatten F2 holds
F1 = F2
let X be disjoint_valued ManySortedSet of I; ::_thesis: for D being V2() ManySortedSet of I
for F1, F2 being ManySortedFunction of X,D st Flatten F1 = Flatten F2 holds
F1 = F2
let D be V2() ManySortedSet of I; ::_thesis: for F1, F2 being ManySortedFunction of X,D st Flatten F1 = Flatten F2 holds
F1 = F2
let F1, F2 be ManySortedFunction of X,D; ::_thesis: ( Flatten F1 = Flatten F2 implies F1 = F2 )
assume A1: Flatten F1 = Flatten F2 ; ::_thesis: F1 = F2
now__::_thesis:_for_i_being_set_st_i_in_I_holds_
F1_._i_=_F2_._i
let i be set ; ::_thesis: ( i in I implies F1 . i = F2 . i )
assume A2: i in I ; ::_thesis: F1 . i = F2 . i
then reconsider Di = D . i as non empty set ;
reconsider f1 = F1 . i, f2 = F2 . i as Function of (X . i),Di by A2, PBOOLE:def_15;
now__::_thesis:_for_x_being_set_st_x_in_X_._i_holds_
f1_._x_=_f2_._x
let x be set ; ::_thesis: ( x in X . i implies f1 . x = f2 . x )
assume A3: x in X . i ; ::_thesis: f1 . x = f2 . x
hence f1 . x = (Flatten F1) . x by A2, Def1
.= f2 . x by A1, A2, A3, Def1 ;
::_thesis: verum
end;
hence F1 . i = F2 . i by FUNCT_2:12; ::_thesis: verum
end;
hence F1 = F2 by PBOOLE:3; ::_thesis: verum
end;
definition
let S be non empty ManySortedSign ;
let A be MSAlgebra over S;
attrA is disjoint_valued means :Def2: :: MSAFREE1:def 2
the Sorts of A is disjoint_valued ;
end;
:: deftheorem Def2 defines disjoint_valued MSAFREE1:def_2_:_
for S being non empty ManySortedSign
for A being MSAlgebra over S holds
( A is disjoint_valued iff the Sorts of A is disjoint_valued );
definition
let S be non empty ManySortedSign ;
func SingleAlg S -> strict MSAlgebra over S means :Def3: :: MSAFREE1:def 3
for i being set st i in the carrier of S holds
the Sorts of it . i = {i};
existence
ex b1 being strict MSAlgebra over S st
for i being set st i in the carrier of S holds
the Sorts of b1 . i = {i}
proof
deffunc H1( set ) -> set = {$1};
consider f being ManySortedSet of the carrier of S such that
A1: for i being set st i in the carrier of S holds
f . i = H1(i) from PBOOLE:sch_4();
set Ch = the ManySortedFunction of (f #) * the Arity of S,f * the ResultSort of S;
take MSAlgebra(# f, the ManySortedFunction of (f #) * the Arity of S,f * the ResultSort of S #) ; ::_thesis: for i being set st i in the carrier of S holds
the Sorts of MSAlgebra(# f, the ManySortedFunction of (f #) * the Arity of S,f * the ResultSort of S #) . i = {i}
thus for i being set st i in the carrier of S holds
the Sorts of MSAlgebra(# f, the ManySortedFunction of (f #) * the Arity of S,f * the ResultSort of S #) . i = {i} by A1; ::_thesis: verum
end;
uniqueness
for b1, b2 being strict MSAlgebra over S st ( for i being set st i in the carrier of S holds
the Sorts of b1 . i = {i} ) & ( for i being set st i in the carrier of S holds
the Sorts of b2 . i = {i} ) holds
b1 = b2
proof
let A1, A2 be strict MSAlgebra over S; ::_thesis: ( ( for i being set st i in the carrier of S holds
the Sorts of A1 . i = {i} ) & ( for i being set st i in the carrier of S holds
the Sorts of A2 . i = {i} ) implies A1 = A2 )
assume that
A2: for i being set st i in the carrier of S holds
the Sorts of A1 . i = {i} and
A3: for i being set st i in the carrier of S holds
the Sorts of A2 . i = {i} ; ::_thesis: A1 = A2
set B = the Sorts of A1;
now__::_thesis:_for_i_being_set_st_i_in_the_carrier_of_S_holds_
the_Sorts_of_A1_._i_=_the_Sorts_of_A2_._i
let i be set ; ::_thesis: ( i in the carrier of S implies the Sorts of A1 . i = the Sorts of A2 . i )
assume A4: i in the carrier of S ; ::_thesis: the Sorts of A1 . i = the Sorts of A2 . i
hence the Sorts of A1 . i = {i} by A2
.= the Sorts of A2 . i by A3, A4 ;
::_thesis: verum
end;
then A5: the Sorts of A1 = the Sorts of A2 by PBOOLE:3;
A6: dom the ResultSort of S = the carrier' of S by FUNCT_2:def_1;
now__::_thesis:_for_i_being_set_st_i_in_the_carrier'_of_S_holds_
the_Charact_of_A1_._i_=_the_Charact_of_A2_._i
let i be set ; ::_thesis: ( i in the carrier' of S implies the Charact of A1 . i = the Charact of A2 . i )
set A = ( the Sorts of A1 * the ResultSort of S) . i;
assume A7: i in the carrier' of S ; ::_thesis: the Charact of A1 . i = the Charact of A2 . i
then A8: ( the Sorts of A1 * the ResultSort of S) . i = the Sorts of A1 . ( the ResultSort of S . i) by A6, FUNCT_1:13
.= {( the ResultSort of S . i)} by A2, A7, FUNCT_2:5 ;
then reconsider A = ( the Sorts of A1 * the ResultSort of S) . i as non empty set ;
reconsider f1 = the Charact of A1 . i, f2 = the Charact of A2 . i as Function of ((( the Sorts of A1 #) * the Arity of S) . i),A by A5, A7, PBOOLE:def_15;
now__::_thesis:_for_x_being_set_st_x_in_((_the_Sorts_of_A1_#)_*_the_Arity_of_S)_._i_holds_
f1_._x_=_f2_._x
let x be set ; ::_thesis: ( x in (( the Sorts of A1 #) * the Arity of S) . i implies f1 . x = f2 . x )
assume A9: x in (( the Sorts of A1 #) * the Arity of S) . i ; ::_thesis: f1 . x = f2 . x
then f1 . x in A by FUNCT_2:5;
then A10: f1 . x = the ResultSort of S . i by A8, TARSKI:def_1;
f2 . x in A by A9, FUNCT_2:5;
hence f1 . x = f2 . x by A8, A10, TARSKI:def_1; ::_thesis: verum
end;
hence the Charact of A1 . i = the Charact of A2 . i by FUNCT_2:12; ::_thesis: verum
end;
hence A1 = A2 by A5, PBOOLE:3; ::_thesis: verum
end;
end;
:: deftheorem Def3 defines SingleAlg MSAFREE1:def_3_:_
for S being non empty ManySortedSign
for b2 being strict MSAlgebra over S holds
( b2 = SingleAlg S iff for i being set st i in the carrier of S holds
the Sorts of b2 . i = {i} );
Lm1: for S being non empty ManySortedSign holds
( SingleAlg S is non-empty & SingleAlg S is disjoint_valued )
proof
let S be non empty ManySortedSign ; ::_thesis: ( SingleAlg S is non-empty & SingleAlg S is disjoint_valued )
set F = the Sorts of (SingleAlg S);
hereby :: according to MSUALG_1:def_3,PBOOLE:def_13 ::_thesis: SingleAlg S is disjoint_valued
let x be set ; ::_thesis: ( x in the carrier of S implies not the Sorts of (SingleAlg S) . x is empty )
assume x in the carrier of S ; ::_thesis: not the Sorts of (SingleAlg S) . x is empty
then the Sorts of (SingleAlg S) . x = {x} by Def3;
hence not the Sorts of (SingleAlg S) . x is empty ; ::_thesis: verum
end;
let x, y be set ; :: according to PROB_2:def_2,MSAFREE1:def_2 ::_thesis: ( x = y or the Sorts of (SingleAlg S) . x misses the Sorts of (SingleAlg S) . y )
assume A1: x <> y ; ::_thesis: the Sorts of (SingleAlg S) . x misses the Sorts of (SingleAlg S) . y
percases ( ( x in dom the Sorts of (SingleAlg S) & y in dom the Sorts of (SingleAlg S) ) or not x in dom the Sorts of (SingleAlg S) or not y in dom the Sorts of (SingleAlg S) ) ;
supposeA2: ( x in dom the Sorts of (SingleAlg S) & y in dom the Sorts of (SingleAlg S) ) ; ::_thesis: the Sorts of (SingleAlg S) . x misses the Sorts of (SingleAlg S) . y
dom the Sorts of (SingleAlg S) = the carrier of S by PARTFUN1:def_2;
then A3: ( the Sorts of (SingleAlg S) . x = {x} & the Sorts of (SingleAlg S) . y = {y} ) by A2, Def3;
assume the Sorts of (SingleAlg S) . x meets the Sorts of (SingleAlg S) . y ; ::_thesis: contradiction
hence contradiction by A1, A3, ZFMISC_1:11; ::_thesis: verum
end;
suppose ( not x in dom the Sorts of (SingleAlg S) or not y in dom the Sorts of (SingleAlg S) ) ; ::_thesis: the Sorts of (SingleAlg S) . x misses the Sorts of (SingleAlg S) . y
then ( the Sorts of (SingleAlg S) . x = {} or the Sorts of (SingleAlg S) . y = {} ) by FUNCT_1:def_2;
hence the Sorts of (SingleAlg S) . x misses the Sorts of (SingleAlg S) . y by XBOOLE_1:65; ::_thesis: verum
end;
end;
end;
registration
let S be non empty ManySortedSign ;
cluster non-empty disjoint_valued for MSAlgebra over S;
existence
ex b1 being MSAlgebra over S st
( b1 is non-empty & b1 is disjoint_valued )
proof
( SingleAlg S is non-empty & SingleAlg S is disjoint_valued ) by Lm1;
hence ex b1 being MSAlgebra over S st
( b1 is non-empty & b1 is disjoint_valued ) ; ::_thesis: verum
end;
end;
registration
let S be non empty ManySortedSign ;
cluster SingleAlg S -> strict non-empty disjoint_valued ;
coherence
( SingleAlg S is non-empty & SingleAlg S is disjoint_valued ) by Lm1;
end;
registration
let S be non empty ManySortedSign ;
let A be disjoint_valued MSAlgebra over S;
cluster the Sorts of A -> disjoint_valued ;
coherence
the Sorts of A is disjoint_valued by Def2;
end;
theorem Th5: :: MSAFREE1:5
for S being non empty non void ManySortedSign
for o being OperSymbol of S
for A1 being non-empty disjoint_valued MSAlgebra over S
for A2 being non-empty MSAlgebra over S
for f being ManySortedFunction of A1,A2
for a being Element of Args (o,A1) holds (Flatten f) * a = f # a
proof
let S be non empty non void ManySortedSign ; ::_thesis: for o being OperSymbol of S
for A1 being non-empty disjoint_valued MSAlgebra over S
for A2 being non-empty MSAlgebra over S
for f being ManySortedFunction of A1,A2
for a being Element of Args (o,A1) holds (Flatten f) * a = f # a
let o be OperSymbol of S; ::_thesis: for A1 being non-empty disjoint_valued MSAlgebra over S
for A2 being non-empty MSAlgebra over S
for f being ManySortedFunction of A1,A2
for a being Element of Args (o,A1) holds (Flatten f) * a = f # a
let A1 be non-empty disjoint_valued MSAlgebra over S; ::_thesis: for A2 being non-empty MSAlgebra over S
for f being ManySortedFunction of A1,A2
for a being Element of Args (o,A1) holds (Flatten f) * a = f # a
let A2 be non-empty MSAlgebra over S; ::_thesis: for f being ManySortedFunction of A1,A2
for a being Element of Args (o,A1) holds (Flatten f) * a = f # a
let f be ManySortedFunction of A1,A2; ::_thesis: for a being Element of Args (o,A1) holds (Flatten f) * a = f # a
let a be Element of Args (o,A1); ::_thesis: (Flatten f) * a = f # a
A1: dom the Arity of S = the carrier' of S by FUNCT_2:def_1;
set s = the_arity_of o;
a in (( the Sorts of A1 #) * the Arity of S) . o ;
then a in ( the Sorts of A1 #) . ( the Arity of S . o) by A1, FUNCT_1:13;
then A2: a in product ( the Sorts of A1 * (the_arity_of o)) by FINSEQ_2:def_5;
then rng a c= Union ( the Sorts of A1 * (the_arity_of o)) by Th1;
then ( union (rng ( the Sorts of A1 * (the_arity_of o))) c= union (rng the Sorts of A1) & rng a c= union (rng ( the Sorts of A1 * (the_arity_of o))) ) by CARD_3:def_4, RELAT_1:26, ZFMISC_1:77;
then rng a c= union (rng the Sorts of A1) by XBOOLE_1:1;
then rng a c= Union the Sorts of A1 by CARD_3:def_4;
then rng a c= dom (Flatten f) by FUNCT_2:def_1;
then A3: dom ((Flatten f) * a) = dom a by RELAT_1:27;
A4: rng (the_arity_of o) c= the carrier of S by FINSEQ_1:def_4;
dom the Sorts of A1 = the carrier of S by PARTFUN1:def_2;
then A5: dom ( the Sorts of A1 * (the_arity_of o)) = dom (the_arity_of o) by A4, RELAT_1:27;
A6: dom a = dom ( the Sorts of A1 * (the_arity_of o)) by A2, CARD_3:9;
A7: now__::_thesis:_for_x_being_set_st_x_in_dom_(_the_Sorts_of_A2_*_(the_arity_of_o))_holds_
((Flatten_f)_*_a)_._x_in_(_the_Sorts_of_A2_*_(the_arity_of_o))_._x
let x be set ; ::_thesis: ( x in dom ( the Sorts of A2 * (the_arity_of o)) implies ((Flatten f) * a) . x in ( the Sorts of A2 * (the_arity_of o)) . x )
assume A8: x in dom ( the Sorts of A2 * (the_arity_of o)) ; ::_thesis: ((Flatten f) * a) . x in ( the Sorts of A2 * (the_arity_of o)) . x
A9: dom ( the Sorts of A2 * (the_arity_of o)) c= dom (the_arity_of o) by RELAT_1:25;
then A10: the Sorts of A2 . ((the_arity_of o) . x) = ( the Sorts of A2 * (the_arity_of o)) . x by A8, FUNCT_1:13;
(the_arity_of o) . x in rng (the_arity_of o) by A9, A8, FUNCT_1:def_3;
then reconsider z = (the_arity_of o) . x as SortSymbol of S by A4;
the Sorts of A1 . ((the_arity_of o) . x) = ( the Sorts of A1 * (the_arity_of o)) . x by A9, A8, FUNCT_1:13;
then A11: a . x in the Sorts of A1 . z by A2, A5, A9, A8, CARD_3:9;
((Flatten f) * a) . x = (Flatten f) . (a . x) by A6, A5, A9, A8, FUNCT_1:13
.= (f . z) . (a . x) by A11, Def1 ;
hence ((Flatten f) * a) . x in ( the Sorts of A2 * (the_arity_of o)) . x by A10, A11, FUNCT_2:5; ::_thesis: verum
end;
dom the Sorts of A2 = the carrier of S by PARTFUN1:def_2;
then dom (the_arity_of o) = dom ( the Sorts of A2 * (the_arity_of o)) by A4, RELAT_1:27;
then (Flatten f) * a in product ( the Sorts of A2 * (the_arity_of o)) by A3, A6, A5, A7, CARD_3:9;
then (Flatten f) * a in ( the Sorts of A2 #) . ( the Arity of S . o) by FINSEQ_2:def_5;
then reconsider x = (Flatten f) * a as Element of Args (o,A2) by A1, FUNCT_1:13;
now__::_thesis:_for_n_being_Nat_st_n_in_dom_a_holds_
x_._n_=_(f_._((the_arity_of_o)_/._n))_._(a_._n)
let n be Nat; ::_thesis: ( n in dom a implies x . n = (f . ((the_arity_of o) /. n)) . (a . n) )
assume A12: n in dom a ; ::_thesis: x . n = (f . ((the_arity_of o) /. n)) . (a . n)
then ( (the_arity_of o) /. n = (the_arity_of o) . n & a . n in ( the Sorts of A1 * (the_arity_of o)) . n ) by A2, A6, A5, CARD_3:9, PARTFUN1:def_6;
then A13: a . n in the Sorts of A1 . ((the_arity_of o) /. n) by A6, A5, A12, FUNCT_1:13;
thus x . n = (Flatten f) . (a . n) by A12, FUNCT_1:13
.= (f . ((the_arity_of o) /. n)) . (a . n) by A13, Def1 ; ::_thesis: verum
end;
hence (Flatten f) * a = f # a by MSUALG_3:def_6; ::_thesis: verum
end;
registration
let S be non empty non void ManySortedSign ;
let X be V2() ManySortedSet of the carrier of S;
cluster FreeSort X -> disjoint_valued ;
coherence
FreeSort X is disjoint_valued
proof
let x, y be set ; :: according to PROB_2:def_2 ::_thesis: ( x = y or (FreeSort X) . x misses (FreeSort X) . y )
set F = FreeSort X;
percases ( ( x in dom (FreeSort X) & y in dom (FreeSort X) ) or not x in dom (FreeSort X) or not y in dom (FreeSort X) ) ;
suppose ( x in dom (FreeSort X) & y in dom (FreeSort X) ) ; ::_thesis: ( x = y or (FreeSort X) . x misses (FreeSort X) . y )
then reconsider s1 = x, s2 = y as SortSymbol of S by PARTFUN1:def_2;
assume x <> y ; ::_thesis: (FreeSort X) . x misses (FreeSort X) . y
then (FreeSort X) . s1 misses (FreeSort X) . s2 by MSAFREE:12;
hence (FreeSort X) . x misses (FreeSort X) . y ; ::_thesis: verum
end;
supposeA1: ( not x in dom (FreeSort X) or not y in dom (FreeSort X) ) ; ::_thesis: ( x = y or (FreeSort X) . x misses (FreeSort X) . y )
assume x <> y ; ::_thesis: (FreeSort X) . x misses (FreeSort X) . y
( (FreeSort X) . x = {} or (FreeSort X) . y = {} ) by A1, FUNCT_1:def_2;
hence (FreeSort X) . x misses (FreeSort X) . y by XBOOLE_1:65; ::_thesis: verum
end;
end;
end;
end;
scheme :: MSAFREE1:sch 2
FreeSortUniq{ F1() -> non empty non void ManySortedSign , F2() -> V2() ManySortedSet of the carrier of F1(), F3() -> V2() ManySortedSet of the carrier of F1(), F4( set ) -> Element of Union F3(), F5( set , set , set ) -> Element of Union F3(), F6() -> ManySortedFunction of FreeSort F2(),F3(), F7() -> ManySortedFunction of FreeSort F2(),F3() } :
F6() = F7()
provided
A1: for o being OperSymbol of F1()
for ts being Element of Args (o,(FreeMSA F2()))
for x being Element of (Union F3()) * st x = (Flatten F6()) * ts holds
(F6() . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = F5(o,ts,x) and
A2: for s being SortSymbol of F1()
for y being set st y in FreeGen (s,F2()) holds
(F6() . s) . y = F4(y) and
A3: for o being OperSymbol of F1()
for ts being Element of Args (o,(FreeMSA F2()))
for x being Element of (Union F3()) * st x = (Flatten F7()) * ts holds
(F7() . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = F5(o,ts,x) and
A4: for s being SortSymbol of F1()
for y being set st y in FreeGen (s,F2()) holds
(F7() . s) . y = F4(y)
proof
reconsider D = Union F3() as non empty set ;
TS (DTConMSA F2()) = union (rng (FreeSort F2())) by MSAFREE:11
.= Union (FreeSort F2()) by CARD_3:def_4 ;
then reconsider f1 = Flatten F6(), f2 = Flatten F7() as Function of (TS (DTConMSA F2())),D ;
deffunc H1( Element of (DTConMSA F2()), Element of (TS (DTConMSA F2())) * , Element of (Union F3()) * ) -> Element of Union F3() = F5(($1 `1),$2,$3);
consider H being Function of [: the carrier of (DTConMSA F2()),((TS (DTConMSA F2())) *),((Union F3()) *):],(Union F3()) such that
A5: for nt being Element of (DTConMSA F2())
for ts being Element of (TS (DTConMSA F2())) *
for x being Element of (Union F3()) * holds H . (nt,ts,x) = H1(nt,ts,x) from MULTOP_1:sch_4();
reconsider H = H as Function of [: the carrier of (DTConMSA F2()),((TS (DTConMSA F2())) *),(D *):],D ;
deffunc H2( Element of (DTConMSA F2()), Element of (TS (DTConMSA F2())) * , Element of D * ) -> Element of D = H . ($1,$2,$3);
A6: DTConMSA F2() = DTConstrStr(# ([: the carrier' of F1(),{ the carrier of F1()}:] \/ (Union (coprod F2()))),(REL F2()) #) by MSAFREE:def_8;
A7: now__::_thesis:_for_f_being_ManySortedFunction_of_FreeSort_F2(),F3()_st_(_for_o_being_OperSymbol_of_F1()
for_ts_being_Element_of_Args_(o,(FreeMSA_F2()))
for_x_being_Element_of_D_*_st_x_=_(Flatten_f)_*_ts_holds_
(f_._(the_result_sort_of_o))_._((Den_(o,(FreeMSA_F2())))_._ts)_=_F5(o,ts,x)_)_holds_
for_nt_being_Element_of_(DTConMSA_F2())
for_ts_being_Element_of_(TS_(DTConMSA_F2()))_*_st_nt_==>_roots_ts_holds_
for_x_being_Element_of_D_*_st_x_=_(Flatten_f)_*_ts_holds_
(Flatten_f)_._(nt_-tree_ts)_=_H_._(nt,ts,x)
let f be ManySortedFunction of FreeSort F2(),F3(); ::_thesis: ( ( for o being OperSymbol of F1()
for ts being Element of Args (o,(FreeMSA F2()))
for x being Element of D * st x = (Flatten f) * ts holds
(f . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = F5(o,ts,x) ) implies for nt being Element of (DTConMSA F2())
for ts being Element of (TS (DTConMSA F2())) * st nt ==> roots ts holds
for x being Element of D * st x = (Flatten f) * ts holds
(Flatten f) . (nt -tree ts) = H . (nt,ts,x) )
assume A8: for o being OperSymbol of F1()
for ts being Element of Args (o,(FreeMSA F2()))
for x being Element of D * st x = (Flatten f) * ts holds
(f . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = F5(o,ts,x) ; ::_thesis: for nt being Element of (DTConMSA F2())
for ts being Element of (TS (DTConMSA F2())) * st nt ==> roots ts holds
for x being Element of D * st x = (Flatten f) * ts holds
(Flatten f) . (nt -tree ts) = H . (nt,ts,x)
let nt be Element of (DTConMSA F2()); ::_thesis: for ts being Element of (TS (DTConMSA F2())) * st nt ==> roots ts holds
for x being Element of D * st x = (Flatten f) * ts holds
(Flatten f) . (nt -tree ts) = H . (nt,ts,x)
let ts be Element of (TS (DTConMSA F2())) * ; ::_thesis: ( nt ==> roots ts implies for x being Element of D * st x = (Flatten f) * ts holds
(Flatten f) . (nt -tree ts) = H . (nt,ts,x) )
assume A9: nt ==> roots ts ; ::_thesis: for x being Element of D * st x = (Flatten f) * ts holds
(Flatten f) . (nt -tree ts) = H . (nt,ts,x)
then [nt,(roots ts)] in REL F2() by A6, LANG1:def_1;
then consider o being OperSymbol of F1(), x2 being Element of { the carrier of F1()} such that
A10: nt = [o,x2] by Th2, DOMAIN_1:1;
let x be Element of D * ; ::_thesis: ( x = (Flatten f) * ts implies (Flatten f) . (nt -tree ts) = H . (nt,ts,x) )
assume A11: x = (Flatten f) * ts ; ::_thesis: (Flatten f) . (nt -tree ts) = H . (nt,ts,x)
A12: FreeMSA F2() = MSAlgebra(# (FreeSort F2()),(FreeOper F2()) #) by MSAFREE:def_14;
reconsider tss = ts as FinSequence of TS (DTConMSA F2()) by FINSEQ_1:def_11;
reconsider xx = x as Element of (Union F3()) * ;
A13: x2 = the carrier of F1() by TARSKI:def_1;
then A14: nt = Sym (o,F2()) by A10, MSAFREE:def_9;
then A15: tss in (((FreeSort F2()) #) * the Arity of F1()) . o by A9, MSAFREE:10;
((FreeSort F2()) * the ResultSort of F1()) . o = (FreeSort F2()) . (the_result_sort_of o) by FUNCT_2:15;
then A16: (DenOp (o,F2())) . ts in (FreeSort F2()) . (the_result_sort_of o) by A15, FUNCT_2:5;
(Flatten f) . ([o, the carrier of F1()] -tree ts) = (Flatten f) . ((DenOp (o,F2())) . tss) by A9, A10, A13, A14, MSAFREE:def_12
.= (f . (the_result_sort_of o)) . ((DenOp (o,F2())) . ts) by A16, Def1
.= (f . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) by A12, MSAFREE:def_13
.= F5(o,ts,x) by A8, A12, A15, A11
.= F5((nt `1),ts,x) by A10, MCART_1:7 ;
hence (Flatten f) . (nt -tree ts) = H1(nt,ts,xx) by A10, A13
.= H . (nt,ts,x) by A5 ;
::_thesis: verum
end;
then A17: for nt being Symbol of (DTConMSA F2())
for ts being Element of (TS (DTConMSA F2())) * st nt ==> roots ts holds
for x being Element of D * st x = f1 * ts holds
f1 . (nt -tree ts) = H2(nt,ts,x) by A1;
deffunc H3( Element of (DTConMSA F2())) -> Element of Union F3() = F4((root-tree $1));
A18: Terminals (DTConMSA F2()) = Union (coprod F2()) by MSAFREE:6;
consider G being Function of the carrier of (DTConMSA F2()),(Union F3()) such that
A19: for t being Element of (DTConMSA F2()) holds G . t = H3(t) from FUNCT_2:sch_4();
reconsider G = G as Function of the carrier of (DTConMSA F2()),D ;
deffunc H4( Element of (DTConMSA F2())) -> Element of D = G . $1;
A20: dom F2() = the carrier of F1() by PARTFUN1:def_2;
A21: now__::_thesis:_for_f_being_ManySortedFunction_of_FreeSort_F2(),F3()_st_(_for_s_being_SortSymbol_of_F1()
for_y_being_set_st_y_in_FreeGen_(s,F2())_holds_
(f_._s)_._y_=_F4(y)_)_holds_
for_t_being_Element_of_(DTConMSA_F2())_st_t_in_Terminals_(DTConMSA_F2())_holds_
(Flatten_f)_._(root-tree_t)_=_G_._t
let f be ManySortedFunction of FreeSort F2(),F3(); ::_thesis: ( ( for s being SortSymbol of F1()
for y being set st y in FreeGen (s,F2()) holds
(f . s) . y = F4(y) ) implies for t being Element of (DTConMSA F2()) st t in Terminals (DTConMSA F2()) holds
(Flatten f) . (root-tree t) = G . t )
assume A22: for s being SortSymbol of F1()
for y being set st y in FreeGen (s,F2()) holds
(f . s) . y = F4(y) ; ::_thesis: for t being Element of (DTConMSA F2()) st t in Terminals (DTConMSA F2()) holds
(Flatten f) . (root-tree t) = G . t
let t be Element of (DTConMSA F2()); ::_thesis: ( t in Terminals (DTConMSA F2()) implies (Flatten f) . (root-tree t) = G . t )
assume A23: t in Terminals (DTConMSA F2()) ; ::_thesis: (Flatten f) . (root-tree t) = G . t
then reconsider s = t `2 as SortSymbol of F1() by A18, A20, CARD_3:22;
t `1 in F2() . (t `2) by A18, A23, CARD_3:22;
then A24: root-tree [(t `1),s] in FreeGen (s,F2()) by MSAFREE:def_15;
A25: t = [(t `1),(t `2)] by A18, A23, CARD_3:22;
hence (Flatten f) . (root-tree t) = (f . s) . (root-tree [(t `1),s]) by A24, Def1
.= F4((root-tree t)) by A22, A25, A24
.= G . t by A19 ;
::_thesis: verum
end;
then A26: for t being Symbol of (DTConMSA F2()) st t in Terminals (DTConMSA F2()) holds
f2 . (root-tree t) = H4(t) by A4;
A27: for nt being Symbol of (DTConMSA F2())
for ts being Element of (TS (DTConMSA F2())) * st nt ==> roots ts holds
for x being Element of D * st x = f2 * ts holds
f2 . (nt -tree ts) = H2(nt,ts,x) by A3, A7;
A28: for t being Element of (DTConMSA F2()) st t in Terminals (DTConMSA F2()) holds
f1 . (root-tree t) = H4(t) by A2, A21;
f1 = f2 from MSAFREE1:sch_1(A28, A17, A26, A27);
hence F6() = F7() by Th4; ::_thesis: verum
end;
registration
let S be non empty non void ManySortedSign ;
let X be V2() ManySortedSet of the carrier of S;
cluster FreeMSA X -> non-empty ;
coherence
FreeMSA X is non-empty ;
end;
registration
let S be non empty non void ManySortedSign ;
let o be OperSymbol of S;
let A be non-empty MSAlgebra over S;
cluster Args (o,A) -> non empty ;
coherence
not Args (o,A) is empty ;
cluster Result (o,A) -> non empty ;
coherence
not Result (o,A) is empty ;
end;
registration
let S be non empty non void ManySortedSign ;
let X be V2() ManySortedSet of the carrier of S;
cluster the Sorts of (FreeMSA X) -> disjoint_valued ;
coherence
the Sorts of (FreeMSA X) is disjoint_valued
proof
FreeMSA X = MSAlgebra(# (FreeSort X),(FreeOper X) #) by MSAFREE:def_14;
hence the Sorts of (FreeMSA X) is disjoint_valued ; ::_thesis: verum
end;
end;
registration
let S be non empty non void ManySortedSign ;
let X be V2() ManySortedSet of the carrier of S;
cluster FreeMSA X -> disjoint_valued ;
coherence
FreeMSA X is disjoint_valued
proof
thus the Sorts of (FreeMSA X) is disjoint_valued ; :: according to MSAFREE1:def_2 ::_thesis: verum
end;
end;
scheme :: MSAFREE1:sch 3
ExtFreeGen{ F1() -> non empty non void ManySortedSign , F2() -> V2() ManySortedSet of the carrier of F1(), F3() -> non-empty MSAlgebra over F1(), P1[ set , set , set ], F4() -> ManySortedFunction of (FreeMSA F2()),F3(), F5() -> ManySortedFunction of (FreeMSA F2()),F3() } :
F4() = F5()
provided
A1: F4() is_homomorphism FreeMSA F2(),F3() and
A2: for s being SortSymbol of F1()
for x, y being set st y in FreeGen (s,F2()) holds
( (F4() . s) . y = x iff P1[s,x,y] ) and
A3: F5() is_homomorphism FreeMSA F2(),F3() and
A4: for s being SortSymbol of F1()
for x, y being set st y in FreeGen (s,F2()) holds
( (F5() . s) . y = x iff P1[s,x,y] )
proof
defpred S1[ set , set ] means for s being SortSymbol of F1() st $1 in FreeGen (s,F2()) holds
P1[s,$2,$1];
A5: FreeMSA F2() = MSAlgebra(# (FreeSort F2()),(FreeOper F2()) #) by MSAFREE:def_14;
then reconsider f1 = F4(), f2 = F5() as ManySortedFunction of FreeSort F2(), the Sorts of F3() ;
A6: for x being set st x in Union (FreeGen F2()) holds
ex y being set st
( y in Union the Sorts of F3() & S1[x,y] )
proof
let e be set ; ::_thesis: ( e in Union (FreeGen F2()) implies ex y being set st
( y in Union the Sorts of F3() & S1[e,y] ) )
A7: dom the Sorts of F3() = the carrier of F1() by PARTFUN1:def_2;
assume e in Union (FreeGen F2()) ; ::_thesis: ex y being set st
( y in Union the Sorts of F3() & S1[e,y] )
then consider s being set such that
A8: s in dom (FreeGen F2()) and
A9: e in (FreeGen F2()) . s by CARD_5:2;
reconsider s = s as SortSymbol of F1() by A8, PARTFUN1:def_2;
A10: e in FreeGen (s,F2()) by A9, MSAFREE:def_16;
take u = (F4() . s) . e; ::_thesis: ( u in Union the Sorts of F3() & S1[e,u] )
f1 . s is Function of ((FreeSort F2()) . s),( the Sorts of F3() . s) ;
then u in the Sorts of F3() . s by A10, FUNCT_2:5;
hence u in Union the Sorts of F3() by A7, CARD_5:2; ::_thesis: S1[e,u]
let s9 be SortSymbol of F1(); ::_thesis: ( e in FreeGen (s9,F2()) implies P1[s9,u,e] )
assume A11: e in FreeGen (s9,F2()) ; ::_thesis: P1[s9,u,e]
then ((FreeSort F2()) . s9) /\ ((FreeSort F2()) . s) <> {} by A10, XBOOLE_0:def_4;
then (FreeSort F2()) . s9 meets (FreeSort F2()) . s by XBOOLE_0:def_7;
then s = s9 by MSAFREE:12;
hence P1[s9,u,e] by A2, A11; ::_thesis: verum
end;
consider G being Function of (Union (FreeGen F2())),(Union the Sorts of F3()) such that
A12: for e being set st e in Union (FreeGen F2()) holds
S1[e,G . e] from FUNCT_2:sch_1(A6);
deffunc H1( set ) -> Element of Union the Sorts of F3() = G /. $1;
defpred S2[ set , set ] means for o being OperSymbol of F1()
for a being Element of Args (o,F3()) st $1 = [o,a] holds
$2 = (Den (o,F3())) . a;
consider R being set such that
A13: R = { [o,a] where o is Element of the carrier' of F1(), a is Element of Args (o,F3()) : verum } ;
A14: for s being SortSymbol of F1()
for y being set st y in FreeGen (s,F2()) holds
(f1 . s) . y = H1(y)
proof
let s be SortSymbol of F1(); ::_thesis: for y being set st y in FreeGen (s,F2()) holds
(f1 . s) . y = H1(y)
let y be set ; ::_thesis: ( y in FreeGen (s,F2()) implies (f1 . s) . y = H1(y) )
A15: dom (FreeGen F2()) = the carrier of F1() by PARTFUN1:def_2;
assume A16: y in FreeGen (s,F2()) ; ::_thesis: (f1 . s) . y = H1(y)
then y in (FreeGen F2()) . s by MSAFREE:def_16;
then A17: y in Union (FreeGen F2()) by A15, CARD_5:2;
then P1[s,G . y,y] by A12, A16;
hence (f1 . s) . y = G . y by A2, A16
.= G /. y by A17, FUNCT_2:def_13 ;
::_thesis: verum
end;
A18: for x being set st x in R holds
ex y being set st
( y in Union the Sorts of F3() & S2[x,y] )
proof
let e be set ; ::_thesis: ( e in R implies ex y being set st
( y in Union the Sorts of F3() & S2[e,y] ) )
assume e in R ; ::_thesis: ex y being set st
( y in Union the Sorts of F3() & S2[e,y] )
then consider o being OperSymbol of F1(), a being Element of Args (o,F3()) such that
A19: e = [o,a] by A13;
reconsider u = (Den (o,F3())) . a as set ;
take u ; ::_thesis: ( u in Union the Sorts of F3() & S2[e,u] )
u in union (rng the Sorts of F3()) by TARSKI:def_4;
hence u in Union the Sorts of F3() by CARD_3:def_4; ::_thesis: S2[e,u]
let o9 be OperSymbol of F1(); ::_thesis: for a being Element of Args (o9,F3()) st e = [o9,a] holds
u = (Den (o9,F3())) . a
let x9 be Element of Args (o9,F3()); ::_thesis: ( e = [o9,x9] implies u = (Den (o9,F3())) . x9 )
assume A20: e = [o9,x9] ; ::_thesis: u = (Den (o9,F3())) . x9
then o = o9 by A19, XTUPLE_0:1;
hence u = (Den (o9,F3())) . x9 by A19, A20, XTUPLE_0:1; ::_thesis: verum
end;
consider H being Function of R,(Union the Sorts of F3()) such that
A21: for e being set st e in R holds
S2[e,H . e] from FUNCT_2:sch_1(A18);
A22: for s being SortSymbol of F1()
for y being set st y in FreeGen (s,F2()) holds
(f2 . s) . y = H1(y)
proof
let s be SortSymbol of F1(); ::_thesis: for y being set st y in FreeGen (s,F2()) holds
(f2 . s) . y = H1(y)
let y be set ; ::_thesis: ( y in FreeGen (s,F2()) implies (f2 . s) . y = H1(y) )
A23: dom (FreeGen F2()) = the carrier of F1() by PARTFUN1:def_2;
assume A24: y in FreeGen (s,F2()) ; ::_thesis: (f2 . s) . y = H1(y)
then y in (FreeGen F2()) . s by MSAFREE:def_16;
then A25: y in Union (FreeGen F2()) by A23, CARD_5:2;
then P1[s,G . y,y] by A12, A24;
hence (f2 . s) . y = G . y by A4, A24
.= G /. y by A25, FUNCT_2:def_13 ;
::_thesis: verum
end;
deffunc H2( set , set , set ) -> Element of Union the Sorts of F3() = H /. [$1,$3];
A26: for o being OperSymbol of F1()
for ts being Element of Args (o,(FreeMSA F2()))
for x being Element of (Union the Sorts of F3()) * st x = (Flatten f2) * ts holds
(f2 . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = H2(o,ts,x)
proof
let o be OperSymbol of F1(); ::_thesis: for ts being Element of Args (o,(FreeMSA F2()))
for x being Element of (Union the Sorts of F3()) * st x = (Flatten f2) * ts holds
(f2 . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = H2(o,ts,x)
let ts be Element of Args (o,(FreeMSA F2())); ::_thesis: for x being Element of (Union the Sorts of F3()) * st x = (Flatten f2) * ts holds
(f2 . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = H2(o,ts,x)
let x be Element of (Union the Sorts of F3()) * ; ::_thesis: ( x = (Flatten f2) * ts implies (f2 . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = H2(o,ts,x) )
assume A27: x = (Flatten f2) * ts ; ::_thesis: (f2 . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = H2(o,ts,x)
A28: (Flatten f2) * ts = F5() # ts by A5, Th5;
then reconsider a = x as Element of Args (o,F3()) by A27;
A29: [o,a] in R by A13;
thus (f2 . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = (Den (o,F3())) . a by A3, A28, A27, MSUALG_3:def_7
.= H . [o,x] by A21, A29
.= H /. [o,x] by A29, FUNCT_2:def_13 ; ::_thesis: verum
end;
A30: for o being OperSymbol of F1()
for ts being Element of Args (o,(FreeMSA F2()))
for x being Element of (Union the Sorts of F3()) * st x = (Flatten f1) * ts holds
(f1 . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = H2(o,ts,x)
proof
let o be OperSymbol of F1(); ::_thesis: for ts being Element of Args (o,(FreeMSA F2()))
for x being Element of (Union the Sorts of F3()) * st x = (Flatten f1) * ts holds
(f1 . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = H2(o,ts,x)
let ts be Element of Args (o,(FreeMSA F2())); ::_thesis: for x being Element of (Union the Sorts of F3()) * st x = (Flatten f1) * ts holds
(f1 . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = H2(o,ts,x)
let x be Element of (Union the Sorts of F3()) * ; ::_thesis: ( x = (Flatten f1) * ts implies (f1 . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = H2(o,ts,x) )
assume A31: x = (Flatten f1) * ts ; ::_thesis: (f1 . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = H2(o,ts,x)
A32: (Flatten f1) * ts = F4() # ts by A5, Th5;
then reconsider a = x as Element of Args (o,F3()) by A31;
A33: [o,a] in R by A13;
thus (f1 . (the_result_sort_of o)) . ((Den (o,(FreeMSA F2()))) . ts) = (Den (o,F3())) . a by A1, A32, A31, MSUALG_3:def_7
.= H . [o,x] by A21, A33
.= H /. [o,x] by A33, FUNCT_2:def_13 ; ::_thesis: verum
end;
f1 = f2 from MSAFREE1:sch_2(A30, A14, A26, A22);
hence F4() = F5() ; ::_thesis: verum
end;