:: ABCMIZ_1 semantic presentation begin theorem Th1: :: ABCMIZ_1:1 for x being set for f being Function holds f . x c= Union f proof let x be set ; ::_thesis: for f being Function holds f . x c= Union f let f be Function; ::_thesis: f . x c= Union f ( x in dom f or not x in dom f ) ; then ( f . x in rng f or f . x = {} ) by FUNCT_1:3, FUNCT_1:def_2; hence f . x c= Union f by XBOOLE_1:2, ZFMISC_1:74; ::_thesis: verum end; theorem :: ABCMIZ_1:2 for x being set for f being Function st Union f = {} holds f . x = {} by Th1, XBOOLE_1:3; theorem Th3: :: ABCMIZ_1:3 for f being Function for x, y being set st f = [x,y] holds x = y proof let f be Function; ::_thesis: for x, y being set st f = [x,y] holds x = y let x, y be set ; ::_thesis: ( f = [x,y] implies x = y ) assume A1: f = [x,y] ; ::_thesis: x = y then A2: {x} in f by TARSKI:def_2; A3: {x,y} in f by A1, TARSKI:def_2; consider a, b being set such that A4: {x} = [a,b] by A2, RELAT_1:def_1; A5: {a} = {a,b} by A4, ZFMISC_1:5; A6: x = {a} by A4, ZFMISC_1:4; consider c, d being set such that A7: {x,y} = [c,d] by A3, RELAT_1:def_1; A8: ( ( x = {c} & y = {c,d} ) or ( x = {c,d} & y = {c} ) ) by A7, ZFMISC_1:6; then c = a by A5, A6, ZFMISC_1:4; hence x = y by A2, A3, A4, A5, A7, A8, FUNCT_1:def_1; ::_thesis: verum end; theorem Th4: :: ABCMIZ_1:4 for X, Y being set holds (id X) .: Y c= Y proof let X, Y be set ; ::_thesis: (id X) .: Y c= Y let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in (id X) .: Y or x in Y ) assume x in (id X) .: Y ; ::_thesis: x in Y then ex y being set st ( [y,x] in id X & y in Y ) by RELAT_1:def_13; hence x in Y by RELAT_1:def_10; ::_thesis: verum end; theorem Th5: :: ABCMIZ_1:5 for S being non void Signature for X being V8() ManySortedSet of the carrier of S for t being Term of S,X holds not t is pair proof let S be non void Signature; ::_thesis: for X being V8() ManySortedSet of the carrier of S for t being Term of S,X holds not t is pair let X be V8() ManySortedSet of the carrier of S; ::_thesis: for t being Term of S,X holds not t is pair let t be Term of S,X; ::_thesis: not t is pair given x, y being set such that A1: t = [x,y] ; :: according to XTUPLE_0:def_1 ::_thesis: contradiction ( ex s being SortSymbol of S ex v being Element of X . s st t . {} = [v,s] or t . {} in [: the carrier' of S,{ the carrier of S}:] ) by MSATERM:2; then ( ex s being SortSymbol of S ex v being Element of X . s st t . {} = [v,s] or ex a, b being set st ( a in the carrier' of S & b in { the carrier of S} & t . {} = [a,b] ) ) by ZFMISC_1:def_2; then {{}} <> {{},(t . {})} by ZFMISC_1:5; then A2: [{},(t . {})] <> {x} by ZFMISC_1:5; {} in dom t by TREES_1:22; then [{},(t . {})] in t by FUNCT_1:def_2; then A3: [{},(t . {})] = {x,y} by A1, A2, TARSKI:def_2; x = y by A1, Th3; hence contradiction by A2, A3, ENUMSET1:29; ::_thesis: verum end; registration let S be non void Signature; let X be V9() ManySortedSet of the carrier of S; cluster -> non pair for Element of Union the Sorts of (Free (S,X)); coherence for b1 being Element of (Free (S,X)) holds not b1 is pair proof let e be Element of (Free (S,X)); ::_thesis: not e is pair e is Term of S,(X \/ ( the carrier of S --> {0})) by MSAFREE3:8; hence not e is pair by Th5; ::_thesis: verum end; end; theorem Th6: :: ABCMIZ_1:6 for x, y, z being set st x in {z} * & y in {z} * & card x = card y holds x = y proof let x, y, z be set ; ::_thesis: ( x in {z} * & y in {z} * & card x = card y implies x = y ) assume that A1: x in {z} * and A2: y in {z} * and A3: card x = card y ; ::_thesis: x = y reconsider x = x, y = y as FinSequence of {z} by A1, A2, FINSEQ_1:def_11; A4: dom x = Seg (len x) by FINSEQ_1:def_3 .= dom y by A3, FINSEQ_1:def_3 ; now__::_thesis:_for_i_being_Nat_st_i_in_dom_x_holds_ x_._i_=_y_._i let i be Nat; ::_thesis: ( i in dom x implies x . i = y . i ) assume A5: i in dom x ; ::_thesis: x . i = y . i then A6: x . i in rng x by FUNCT_1:def_3; A7: y . i in rng y by A4, A5, FUNCT_1:def_3; thus x . i = z by A6, TARSKI:def_1 .= y . i by A7, TARSKI:def_1 ; ::_thesis: verum end; hence x = y by A4, FINSEQ_1:13; ::_thesis: verum end; definition let S be non void Signature; let A be MSAlgebra over S; mode Subset of A is Subset of (Union the Sorts of A); mode FinSequence of A is FinSequence of Union the Sorts of A; end; registration let S be non void Signature; let X be V9() ManySortedSet of S; cluster -> DTree-yielding for FinSequence of Union the Sorts of (Free (S,X)); coherence for b1 being FinSequence of (Free (S,X)) holds b1 is DTree-yielding proof let p be FinSequence of (Free (S,X)); ::_thesis: p is DTree-yielding let x be set ; :: according to TREES_3:def_5,TREES_3:def_11 ::_thesis: ( not x in proj2 p or x is set ) assume x in rng p ; ::_thesis: x is set hence x is set ; ::_thesis: verum end; end; theorem Th7: :: ABCMIZ_1:7 for S being non void Signature for X being V9() ManySortedSet of the carrier of S for t being Element of (Free (S,X)) holds ( ex s being SortSymbol of S ex v being set st ( t = root-tree [v,s] & v in X . s ) or ex o being OperSymbol of S ex p being FinSequence of (Free (S,X)) st ( t = [o, the carrier of S] -tree p & len p = len (the_arity_of o) & p is DTree-yielding & p is ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) ) ) proof let S be non void Signature; ::_thesis: for X being V9() ManySortedSet of the carrier of S for t being Element of (Free (S,X)) holds ( ex s being SortSymbol of S ex v being set st ( t = root-tree [v,s] & v in X . s ) or ex o being OperSymbol of S ex p being FinSequence of (Free (S,X)) st ( t = [o, the carrier of S] -tree p & len p = len (the_arity_of o) & p is DTree-yielding & p is ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) ) ) let X be V9() ManySortedSet of the carrier of S; ::_thesis: for t being Element of (Free (S,X)) holds ( ex s being SortSymbol of S ex v being set st ( t = root-tree [v,s] & v in X . s ) or ex o being OperSymbol of S ex p being FinSequence of (Free (S,X)) st ( t = [o, the carrier of S] -tree p & len p = len (the_arity_of o) & p is DTree-yielding & p is ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) ) ) let t be Element of (Free (S,X)); ::_thesis: ( ex s being SortSymbol of S ex v being set st ( t = root-tree [v,s] & v in X . s ) or ex o being OperSymbol of S ex p being FinSequence of (Free (S,X)) st ( t = [o, the carrier of S] -tree p & len p = len (the_arity_of o) & p is DTree-yielding & p is ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) ) ) set V = X \/ ( the carrier of S --> {0}); reconsider t9 = t as Term of S,(X \/ ( the carrier of S --> {0})) by MSAFREE3:8; defpred S1[ set ] means ( not $1 is Element of (Free (S,X)) or ex s being SortSymbol of S ex v being set st ( $1 = root-tree [v,s] & v in X . s ) or ex o being OperSymbol of S ex p being FinSequence of (Free (S,X)) st ( $1 = [o, the carrier of S] -tree p & len p = len (the_arity_of o) & p is DTree-yielding & p is ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) ) ); A1: for s being SortSymbol of S for v being Element of (X \/ ( the carrier of S --> {0})) . s holds S1[ root-tree [v,s]] proof let s be SortSymbol of S; ::_thesis: for v being Element of (X \/ ( the carrier of S --> {0})) . s holds S1[ root-tree [v,s]] let v be Element of (X \/ ( the carrier of S --> {0})) . s; ::_thesis: S1[ root-tree [v,s]] set t = root-tree [v,s]; assume A2: root-tree [v,s] is Element of (Free (S,X)) ; ::_thesis: ( ex s being SortSymbol of S ex v being set st ( root-tree [v,s] = root-tree [v,s] & v in X . s ) or ex o being OperSymbol of S ex p being FinSequence of (Free (S,X)) st ( root-tree [v,s] = [o, the carrier of S] -tree p & len p = len (the_arity_of o) & p is DTree-yielding & p is ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) ) ) {} in dom (root-tree [v,s]) by TREES_1:22; then (root-tree [v,s]) . {} in rng (root-tree [v,s]) by FUNCT_1:3; then [v,s] in rng (root-tree [v,s]) by TREES_4:3; then v in X . s by A2, MSAFREE3:35; hence ( ex s being SortSymbol of S ex v being set st ( root-tree [v,s] = root-tree [v,s] & v in X . s ) or ex o being OperSymbol of S ex p being FinSequence of (Free (S,X)) st ( root-tree [v,s] = [o, the carrier of S] -tree p & len p = len (the_arity_of o) & p is DTree-yielding & p is ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) ) ) ; ::_thesis: verum end; A3: for o being OperSymbol of S for p being ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) st ( for t being Term of S,(X \/ ( the carrier of S --> {0})) st t in rng p holds S1[t] ) holds S1[[o, the carrier of S] -tree p] proof let o be OperSymbol of S; ::_thesis: for p being ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) st ( for t being Term of S,(X \/ ( the carrier of S --> {0})) st t in rng p holds S1[t] ) holds S1[[o, the carrier of S] -tree p] let p be ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))); ::_thesis: ( ( for t being Term of S,(X \/ ( the carrier of S --> {0})) st t in rng p holds S1[t] ) implies S1[[o, the carrier of S] -tree p] ) assume for t being Term of S,(X \/ ( the carrier of S --> {0})) st t in rng p holds S1[t] ; ::_thesis: S1[[o, the carrier of S] -tree p] set t = [o, the carrier of S] -tree p; assume [o, the carrier of S] -tree p is Element of (Free (S,X)) ; ::_thesis: ( ex s being SortSymbol of S ex v being set st ( [o, the carrier of S] -tree p = root-tree [v,s] & v in X . s ) or ex o being OperSymbol of S ex p being FinSequence of (Free (S,X)) st ( [o, the carrier of S] -tree p = [o, the carrier of S] -tree p & len p = len (the_arity_of o) & p is DTree-yielding & p is ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) ) ) then consider s being set such that A4: s in dom the Sorts of (Free (S,X)) and A5: [o, the carrier of S] -tree p in the Sorts of (Free (S,X)) . s by CARD_5:2; reconsider s = s as Element of S by A4; A6: the Sorts of (Free (S,X)) = S -Terms (X,(X \/ ( the carrier of S --> {0}))) by MSAFREE3:24; the_sort_of ((Sym (o,(X \/ ( the carrier of S --> {0})))) -tree p) = the_result_sort_of o by MSATERM:20; then s = the_result_sort_of o by A5, A6, MSAFREE3:17; then rng p c= Union (S -Terms (X,(X \/ ( the carrier of S --> {0})))) by A5, A6, MSAFREE3:19; then A7: p is FinSequence of (Free (S,X)) by A6, FINSEQ_1:def_4; len (the_arity_of o) = len p by MSATERM:22; hence ( ex s being SortSymbol of S ex v being set st ( [o, the carrier of S] -tree p = root-tree [v,s] & v in X . s ) or ex o being OperSymbol of S ex p being FinSequence of (Free (S,X)) st ( [o, the carrier of S] -tree p = [o, the carrier of S] -tree p & len p = len (the_arity_of o) & p is DTree-yielding & p is ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) ) ) by A7; ::_thesis: verum end; for t being Term of S,(X \/ ( the carrier of S --> {0})) holds S1[t] from MSATERM:sch_1(A1, A3); then S1[t9] ; hence ( ex s being SortSymbol of S ex v being set st ( t = root-tree [v,s] & v in X . s ) or ex o being OperSymbol of S ex p being FinSequence of (Free (S,X)) st ( t = [o, the carrier of S] -tree p & len p = len (the_arity_of o) & p is DTree-yielding & p is ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) ) ) ; ::_thesis: verum end; definition let A be set ; func varcl A -> set means :Def1: :: ABCMIZ_1:def 1 ( A c= it & ( for x, y being set st [x,y] in it holds x c= it ) & ( for B being set st A c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds it c= B ) ); uniqueness for b1, b2 being set st A c= b1 & ( for x, y being set st [x,y] in b1 holds x c= b1 ) & ( for B being set st A c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds b1 c= B ) & A c= b2 & ( for x, y being set st [x,y] in b2 holds x c= b2 ) & ( for B being set st A c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds b2 c= B ) holds b1 = b2 proof let B1, B2 be set ; ::_thesis: ( A c= B1 & ( for x, y being set st [x,y] in B1 holds x c= B1 ) & ( for B being set st A c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds B1 c= B ) & A c= B2 & ( for x, y being set st [x,y] in B2 holds x c= B2 ) & ( for B being set st A c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds B2 c= B ) implies B1 = B2 ) assume A1: ( A c= B1 & ( for x, y being set st [x,y] in B1 holds x c= B1 ) & ( for B being set st A c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds B1 c= B ) & A c= B2 & ( for x, y being set st [x,y] in B2 holds x c= B2 ) & ( for B being set st A c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds B2 c= B ) & not B1 = B2 ) ; ::_thesis: contradiction then A2: B1 c= B2 ; B2 c= B1 by A1; hence contradiction by A1, A2, XBOOLE_0:def_10; ::_thesis: verum end; existence ex b1 being set st ( A c= b1 & ( for x, y being set st [x,y] in b1 holds x c= b1 ) & ( for B being set st A c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds b1 c= B ) ) proof set F = { C where C is Subset of (Rank (the_rank_of A)) : ( A c= C & ( for x, y being set st [x,y] in C holds x c= C ) ) } ; take D = meet { C where C is Subset of (Rank (the_rank_of A)) : ( A c= C & ( for x, y being set st [x,y] in C holds x c= C ) ) } ; ::_thesis: ( A c= D & ( for x, y being set st [x,y] in D holds x c= D ) & ( for B being set st A c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds D c= B ) ) A3: A c= Rank (the_rank_of A) by CLASSES1:def_8; A4: now__::_thesis:_for_x,_y_being_set_st_[x,y]_in_Rank_(the_rank_of_A)_holds_ x_c=_Rank_(the_rank_of_A) let x, y be set ; ::_thesis: ( [x,y] in Rank (the_rank_of A) implies x c= Rank (the_rank_of A) ) assume A5: [x,y] in Rank (the_rank_of A) ; ::_thesis: x c= Rank (the_rank_of A) A6: {x} in {{x,y},{x}} by TARSKI:def_2; A7: {{x,y},{x}} c= Rank (the_rank_of A) by A5, ORDINAL1:def_2; A8: x in {x} by TARSKI:def_1; {x} c= Rank (the_rank_of A) by A6, A7, ORDINAL1:def_2; hence x c= Rank (the_rank_of A) by A8, ORDINAL1:def_2; ::_thesis: verum end; Rank (the_rank_of A) c= Rank (the_rank_of A) ; then A9: Rank (the_rank_of A) in { C where C is Subset of (Rank (the_rank_of A)) : ( A c= C & ( for x, y being set st [x,y] in C holds x c= C ) ) } by A3, A4; hereby :: according to TARSKI:def_3 ::_thesis: ( ( for x, y being set st [x,y] in D holds x c= D ) & ( for B being set st A c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds D c= B ) ) let x be set ; ::_thesis: ( x in A implies x in D ) assume A10: x in A ; ::_thesis: x in D now__::_thesis:_for_C_being_set_st_C_in__{__C_where_C_is_Subset_of_(Rank_(the_rank_of_A))_:_(_A_c=_C_&_(_for_x,_y_being_set_st_[x,y]_in_C_holds_ x_c=_C_)_)__}__holds_ x_in_C let C be set ; ::_thesis: ( C in { C where C is Subset of (Rank (the_rank_of A)) : ( A c= C & ( for x, y being set st [x,y] in C holds x c= C ) ) } implies x in C ) assume C in { C where C is Subset of (Rank (the_rank_of A)) : ( A c= C & ( for x, y being set st [x,y] in C holds x c= C ) ) } ; ::_thesis: x in C then ex B being Subset of (Rank (the_rank_of A)) st ( C = B & A c= B & ( for x, y being set st [x,y] in B holds x c= B ) ) ; hence x in C by A10; ::_thesis: verum end; hence x in D by A9, SETFAM_1:def_1; ::_thesis: verum end; hereby ::_thesis: for B being set st A c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds D c= B let x, y be set ; ::_thesis: ( [x,y] in D implies x c= D ) assume A11: [x,y] in D ; ::_thesis: x c= D thus x c= D ::_thesis: verum proof let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in x or z in D ) assume A12: z in x ; ::_thesis: z in D now__::_thesis:_for_X_being_set_st_X_in__{__C_where_C_is_Subset_of_(Rank_(the_rank_of_A))_:_(_A_c=_C_&_(_for_x,_y_being_set_st_[x,y]_in_C_holds_ x_c=_C_)_)__}__holds_ z_in_X let X be set ; ::_thesis: ( X in { C where C is Subset of (Rank (the_rank_of A)) : ( A c= C & ( for x, y being set st [x,y] in C holds x c= C ) ) } implies z in X ) assume A13: X in { C where C is Subset of (Rank (the_rank_of A)) : ( A c= C & ( for x, y being set st [x,y] in C holds x c= C ) ) } ; ::_thesis: z in X then A14: [x,y] in X by A11, SETFAM_1:def_1; ex B being Subset of (Rank (the_rank_of A)) st ( X = B & A c= B & ( for x, y being set st [x,y] in B holds x c= B ) ) by A13; then x c= X by A14; hence z in X by A12; ::_thesis: verum end; hence z in D by A9, SETFAM_1:def_1; ::_thesis: verum end; end; let B be set ; ::_thesis: ( A c= B & ( for x, y being set st [x,y] in B holds x c= B ) implies D c= B ) assume that A15: A c= B and A16: for x, y being set st [x,y] in B holds x c= B ; ::_thesis: D c= B set C = B /\ (Rank (the_rank_of A)); reconsider C = B /\ (Rank (the_rank_of A)) as Subset of (Rank (the_rank_of A)) by XBOOLE_1:17; A17: A c= C by A3, A15, XBOOLE_1:19; now__::_thesis:_for_x,_y_being_set_st_[x,y]_in_C_holds_ x_c=_C let x, y be set ; ::_thesis: ( [x,y] in C implies x c= C ) assume A18: [x,y] in C ; ::_thesis: x c= C then [x,y] in B by XBOOLE_0:def_4; then A19: x c= B by A16; x c= Rank (the_rank_of A) by A4, A18; hence x c= C by A19, XBOOLE_1:19; ::_thesis: verum end; then C in { C where C is Subset of (Rank (the_rank_of A)) : ( A c= C & ( for x, y being set st [x,y] in C holds x c= C ) ) } by A17; then A20: D c= C by SETFAM_1:3; C c= B by XBOOLE_1:17; hence D c= B by A20, XBOOLE_1:1; ::_thesis: verum end; projectivity for b1 being set for b2 being set st b2 c= b1 & ( for x, y being set st [x,y] in b1 holds x c= b1 ) & ( for B being set st b2 c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds b1 c= B ) holds ( b1 c= b1 & ( for x, y being set st [x,y] in b1 holds x c= b1 ) & ( for B being set st b1 c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds b1 c= B ) ) ; end; :: deftheorem Def1 defines varcl ABCMIZ_1:def_1_:_ for A being set for b2 being set holds ( b2 = varcl A iff ( A c= b2 & ( for x, y being set st [x,y] in b2 holds x c= b2 ) & ( for B being set st A c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds b2 c= B ) ) ); theorem Th8: :: ABCMIZ_1:8 varcl {} = {} proof A1: for x, y being set st [x,y] in {} holds x c= {} ; for B being set st {} c= B & ( for x, y being set st [x,y] in B holds x c= B ) holds {} c= B ; hence varcl {} = {} by A1, Def1; ::_thesis: verum end; theorem Th9: :: ABCMIZ_1:9 for A, B being set st A c= B holds varcl A c= varcl B proof let A, B be set ; ::_thesis: ( A c= B implies varcl A c= varcl B ) assume A1: A c= B ; ::_thesis: varcl A c= varcl B B c= varcl B by Def1; then A2: A c= varcl B by A1, XBOOLE_1:1; for x, y being set st [x,y] in varcl B holds x c= varcl B by Def1; hence varcl A c= varcl B by A2, Def1; ::_thesis: verum end; theorem Th10: :: ABCMIZ_1:10 for A being set holds varcl (union A) = union { (varcl a) where a is Element of A : verum } proof let A be set ; ::_thesis: varcl (union A) = union { (varcl a) where a is Element of A : verum } set X = { (varcl a) where a is Element of A : verum } ; A1: union A c= union { (varcl a) where a is Element of A : verum } proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in union A or x in union { (varcl a) where a is Element of A : verum } ) assume x in union A ; ::_thesis: x in union { (varcl a) where a is Element of A : verum } then consider Y being set such that A2: x in Y and A3: Y in A by TARSKI:def_4; reconsider Y = Y as Element of A by A3; A4: Y c= varcl Y by Def1; varcl Y in { (varcl a) where a is Element of A : verum } ; hence x in union { (varcl a) where a is Element of A : verum } by A2, A4, TARSKI:def_4; ::_thesis: verum end; now__::_thesis:_for_x,_y_being_set_st_[x,y]_in_union__{__(varcl_a)_where_a_is_Element_of_A_:_verum__}__holds_ x_c=_union__{__(varcl_a)_where_a_is_Element_of_A_:_verum__}_ let x, y be set ; ::_thesis: ( [x,y] in union { (varcl a) where a is Element of A : verum } implies x c= union { (varcl a) where a is Element of A : verum } ) assume [x,y] in union { (varcl a) where a is Element of A : verum } ; ::_thesis: x c= union { (varcl a) where a is Element of A : verum } then consider Y being set such that A5: [x,y] in Y and A6: Y in { (varcl a) where a is Element of A : verum } by TARSKI:def_4; ex a being Element of A st Y = varcl a by A6; then A7: x c= Y by A5, Def1; Y c= union { (varcl a) where a is Element of A : verum } by A6, ZFMISC_1:74; hence x c= union { (varcl a) where a is Element of A : verum } by A7, XBOOLE_1:1; ::_thesis: verum end; hence varcl (union A) c= union { (varcl a) where a is Element of A : verum } by A1, Def1; :: according to XBOOLE_0:def_10 ::_thesis: union { (varcl a) where a is Element of A : verum } c= varcl (union A) let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in union { (varcl a) where a is Element of A : verum } or x in varcl (union A) ) assume x in union { (varcl a) where a is Element of A : verum } ; ::_thesis: x in varcl (union A) then consider Y being set such that A8: x in Y and A9: Y in { (varcl a) where a is Element of A : verum } by TARSKI:def_4; consider a being Element of A such that A10: Y = varcl a by A9; ( A is empty or not A is empty ) ; then ( a in A or a is empty ) by SUBSET_1:def_1; then a c= union A by XBOOLE_1:2, ZFMISC_1:74; then Y c= varcl (union A) by A10, Th9; hence x in varcl (union A) by A8; ::_thesis: verum end; scheme :: ABCMIZ_1:sch 1 Sch14{ F1() -> set , F2( set ) -> set , P1[ set ] } : varcl (union { F2(z) where z is Element of F1() : P1[z] } ) = union { (varcl F2(z)) where z is Element of F1() : P1[z] } proof set Z = { F2(z) where z is Element of F1() : P1[z] } ; set X = { (varcl F2(z)) where z is Element of F1() : P1[z] } ; A1: union { F2(z) where z is Element of F1() : P1[z] } c= union { (varcl F2(z)) where z is Element of F1() : P1[z] } proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in union { F2(z) where z is Element of F1() : P1[z] } or x in union { (varcl F2(z)) where z is Element of F1() : P1[z] } ) assume x in union { F2(z) where z is Element of F1() : P1[z] } ; ::_thesis: x in union { (varcl F2(z)) where z is Element of F1() : P1[z] } then consider Y being set such that A2: x in Y and A3: Y in { F2(z) where z is Element of F1() : P1[z] } by TARSKI:def_4; A4: ex z being Element of F1() st ( Y = F2(z) & P1[z] ) by A3; A5: Y c= varcl Y by Def1; varcl Y in { (varcl F2(z)) where z is Element of F1() : P1[z] } by A4; hence x in union { (varcl F2(z)) where z is Element of F1() : P1[z] } by A2, A5, TARSKI:def_4; ::_thesis: verum end; now__::_thesis:_for_x,_y_being_set_st_[x,y]_in_union__{__(varcl_F2(z))_where_z_is_Element_of_F1()_:_P1[z]__}__holds_ x_c=_union__{__(varcl_F2(z))_where_z_is_Element_of_F1()_:_P1[z]__}_ let x, y be set ; ::_thesis: ( [x,y] in union { (varcl F2(z)) where z is Element of F1() : P1[z] } implies x c= union { (varcl F2(z)) where z is Element of F1() : P1[z] } ) assume [x,y] in union { (varcl F2(z)) where z is Element of F1() : P1[z] } ; ::_thesis: x c= union { (varcl F2(z)) where z is Element of F1() : P1[z] } then consider Y being set such that A6: [x,y] in Y and A7: Y in { (varcl F2(z)) where z is Element of F1() : P1[z] } by TARSKI:def_4; ex z being Element of F1() st ( Y = varcl F2(z) & P1[z] ) by A7; then A8: x c= Y by A6, Def1; Y c= union { (varcl F2(z)) where z is Element of F1() : P1[z] } by A7, ZFMISC_1:74; hence x c= union { (varcl F2(z)) where z is Element of F1() : P1[z] } by A8, XBOOLE_1:1; ::_thesis: verum end; hence varcl (union { F2(z) where z is Element of F1() : P1[z] } ) c= union { (varcl F2(z)) where z is Element of F1() : P1[z] } by A1, Def1; :: according to XBOOLE_0:def_10 ::_thesis: union { (varcl F2(z)) where z is Element of F1() : P1[z] } c= varcl (union { F2(z) where z is Element of F1() : P1[z] } ) let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in union { (varcl F2(z)) where z is Element of F1() : P1[z] } or x in varcl (union { F2(z) where z is Element of F1() : P1[z] } ) ) assume x in union { (varcl F2(z)) where z is Element of F1() : P1[z] } ; ::_thesis: x in varcl (union { F2(z) where z is Element of F1() : P1[z] } ) then consider Y being set such that A9: x in Y and A10: Y in { (varcl F2(z)) where z is Element of F1() : P1[z] } by TARSKI:def_4; consider z being Element of F1() such that A11: Y = varcl F2(z) and A12: P1[z] by A10; F2(z) in { F2(z) where z is Element of F1() : P1[z] } by A12; then Y c= varcl (union { F2(z) where z is Element of F1() : P1[z] } ) by A11, Th9, ZFMISC_1:74; hence x in varcl (union { F2(z) where z is Element of F1() : P1[z] } ) by A9; ::_thesis: verum end; theorem Th11: :: ABCMIZ_1:11 for X, Y being set holds varcl (X \/ Y) = (varcl X) \/ (varcl Y) proof let X, Y be set ; ::_thesis: varcl (X \/ Y) = (varcl X) \/ (varcl Y) set A = { (varcl a) where a is Element of {X,Y} : verum } ; X \/ Y = union {X,Y} by ZFMISC_1:75; then A1: varcl (X \/ Y) = union { (varcl a) where a is Element of {X,Y} : verum } by Th10; { (varcl a) where a is Element of {X,Y} : verum } = {(varcl X),(varcl Y)} proof hereby :: according to TARSKI:def_3,XBOOLE_0:def_10 ::_thesis: {(varcl X),(varcl Y)} c= { (varcl a) where a is Element of {X,Y} : verum } let x be set ; ::_thesis: ( x in { (varcl a) where a is Element of {X,Y} : verum } implies x in {(varcl X),(varcl Y)} ) assume x in { (varcl a) where a is Element of {X,Y} : verum } ; ::_thesis: x in {(varcl X),(varcl Y)} then consider a being Element of {X,Y} such that A2: x = varcl a ; ( a = X or a = Y ) by TARSKI:def_2; hence x in {(varcl X),(varcl Y)} by A2, TARSKI:def_2; ::_thesis: verum end; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in {(varcl X),(varcl Y)} or x in { (varcl a) where a is Element of {X,Y} : verum } ) assume x in {(varcl X),(varcl Y)} ; ::_thesis: x in { (varcl a) where a is Element of {X,Y} : verum } then ( ( x = varcl X & X in {X,Y} ) or ( x = varcl Y & Y in {X,Y} ) ) by TARSKI:def_2; hence x in { (varcl a) where a is Element of {X,Y} : verum } ; ::_thesis: verum end; hence varcl (X \/ Y) = (varcl X) \/ (varcl Y) by A1, ZFMISC_1:75; ::_thesis: verum end; theorem Th12: :: ABCMIZ_1:12 for A being non empty set st ( for a being Element of A holds varcl a = a ) holds varcl (meet A) = meet A proof let B be non empty set ; ::_thesis: ( ( for a being Element of B holds varcl a = a ) implies varcl (meet B) = meet B ) set A = meet B; assume A1: for a being Element of B holds varcl a = a ; ::_thesis: varcl (meet B) = meet B now__::_thesis:_(_meet_B_c=_meet_B_&_(_for_x,_y_being_set_st_[x,y]_in_meet_B_holds_ x_c=_meet_B_)_) thus meet B c= meet B ; ::_thesis: for x, y being set st [x,y] in meet B holds x c= meet B let x, y be set ; ::_thesis: ( [x,y] in meet B implies x c= meet B ) assume A2: [x,y] in meet B ; ::_thesis: x c= meet B now__::_thesis:_for_Y_being_set_st_Y_in_B_holds_ x_c=_Y let Y be set ; ::_thesis: ( Y in B implies x c= Y ) assume A3: Y in B ; ::_thesis: x c= Y then A4: [x,y] in Y by A2, SETFAM_1:def_1; Y = varcl Y by A1, A3; hence x c= Y by A4, Def1; ::_thesis: verum end; hence x c= meet B by SETFAM_1:5; ::_thesis: verum end; hence varcl (meet B) c= meet B by Def1; :: according to XBOOLE_0:def_10 ::_thesis: meet B c= varcl (meet B) thus meet B c= varcl (meet B) by Def1; ::_thesis: verum end; theorem Th13: :: ABCMIZ_1:13 for X, Y being set holds varcl ((varcl X) /\ (varcl Y)) = (varcl X) /\ (varcl Y) proof let X, Y be set ; ::_thesis: varcl ((varcl X) /\ (varcl Y)) = (varcl X) /\ (varcl Y) set A = (varcl X) /\ (varcl Y); now__::_thesis:_(_(varcl_X)_/\_(varcl_Y)_c=_(varcl_X)_/\_(varcl_Y)_&_(_for_x,_y_being_set_st_[x,y]_in_(varcl_X)_/\_(varcl_Y)_holds_ x_c=_(varcl_X)_/\_(varcl_Y)_)_) thus (varcl X) /\ (varcl Y) c= (varcl X) /\ (varcl Y) ; ::_thesis: for x, y being set st [x,y] in (varcl X) /\ (varcl Y) holds x c= (varcl X) /\ (varcl Y) let x, y be set ; ::_thesis: ( [x,y] in (varcl X) /\ (varcl Y) implies x c= (varcl X) /\ (varcl Y) ) assume A1: [x,y] in (varcl X) /\ (varcl Y) ; ::_thesis: x c= (varcl X) /\ (varcl Y) then A2: [x,y] in varcl X by XBOOLE_0:def_4; A3: [x,y] in varcl Y by A1, XBOOLE_0:def_4; A4: x c= varcl X by A2, Def1; x c= varcl Y by A3, Def1; hence x c= (varcl X) /\ (varcl Y) by A4, XBOOLE_1:19; ::_thesis: verum end; hence varcl ((varcl X) /\ (varcl Y)) c= (varcl X) /\ (varcl Y) by Def1; :: according to XBOOLE_0:def_10 ::_thesis: (varcl X) /\ (varcl Y) c= varcl ((varcl X) /\ (varcl Y)) thus (varcl X) /\ (varcl Y) c= varcl ((varcl X) /\ (varcl Y)) by Def1; ::_thesis: verum end; registration let A be empty set ; cluster varcl A -> empty ; coherence varcl A is empty by Th8; end; deffunc H1( set , set ) -> set = { [(varcl A),j] where A is Subset of $2, j is Element of NAT : A is finite } ; definition func Vars -> set means :Def2: :: ABCMIZ_1:def 2 ex V being ManySortedSet of NAT st ( it = Union V & V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) ); existence ex b1 being set ex V being ManySortedSet of NAT st ( b1 = Union V & V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) ) proof consider f being Function such that A1: dom f = NAT and A2: f . 0 = { [{},i] where i is Element of NAT : verum } and A3: for n being Nat holds f . (n + 1) = H1(n,f . n) from NAT_1:sch_11(); reconsider f = f as ManySortedSet of NAT by A1, PARTFUN1:def_2, RELAT_1:def_18; take Union f ; ::_thesis: ex V being ManySortedSet of NAT st ( Union f = Union V & V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) ) take V = f; ::_thesis: ( Union f = Union V & V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) ) thus Union f = Union V ; ::_thesis: ( V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) ) thus V . 0 = { [{},i] where i is Element of NAT : verum } by A2; ::_thesis: for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } let n be Nat; ::_thesis: V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } thus V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } by A3; ::_thesis: verum end; uniqueness for b1, b2 being set st ex V being ManySortedSet of NAT st ( b1 = Union V & V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) ) & ex V being ManySortedSet of NAT st ( b2 = Union V & V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) ) holds b1 = b2 proof let A1, A2 be set ; ::_thesis: ( ex V being ManySortedSet of NAT st ( A1 = Union V & V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) ) & ex V being ManySortedSet of NAT st ( A2 = Union V & V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) ) implies A1 = A2 ) given V1 being ManySortedSet of NAT such that A4: A1 = Union V1 and A5: V1 . 0 = { [{},i] where i is Element of NAT : verum } and A6: for n being Nat holds V1 . (n + 1) = H1(n,V1 . n) ; ::_thesis: ( for V being ManySortedSet of NAT holds ( not A2 = Union V or not V . 0 = { [{},i] where i is Element of NAT : verum } or ex n being Nat st not V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) or A1 = A2 ) given V2 being ManySortedSet of NAT such that A7: A2 = Union V2 and A8: V2 . 0 = { [{},i] where i is Element of NAT : verum } and A9: for n being Nat holds V2 . (n + 1) = H1(n,V2 . n) ; ::_thesis: A1 = A2 A10: dom V1 = NAT by PARTFUN1:def_2; A11: dom V2 = NAT by PARTFUN1:def_2; V1 = V2 from NAT_1:sch_15(A10, A5, A6, A11, A8, A9); hence A1 = A2 by A4, A7; ::_thesis: verum end; end; :: deftheorem Def2 defines Vars ABCMIZ_1:def_2_:_ for b1 being set holds ( b1 = Vars iff ex V being ManySortedSet of NAT st ( b1 = Union V & V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) ) ); theorem Th14: :: ABCMIZ_1:14 for V being ManySortedSet of NAT st V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) holds for i, j being Element of NAT st i <= j holds V . i c= V . j proof let V be ManySortedSet of NAT ; ::_thesis: ( V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) implies for i, j being Element of NAT st i <= j holds V . i c= V . j ) assume that A1: V . 0 = { [{},i] where i is Element of NAT : verum } and A2: for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ; ::_thesis: for i, j being Element of NAT st i <= j holds V . i c= V . j defpred S1[ Nat] means V . 0 c= V . $1; A3: now__::_thesis:_for_j_being_Element_of_NAT_st_S1[j]_holds_ S1[j_+_1] let j be Element of NAT ; ::_thesis: ( S1[j] implies S1[j + 1] ) assume S1[j] ; ::_thesis: S1[j + 1] A4: V . (j + 1) = { [(varcl A),k] where A is Subset of (V . j), k is Element of NAT : A is finite } by A2; thus S1[j + 1] ::_thesis: verum proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in V . 0 or x in V . (j + 1) ) assume x in V . 0 ; ::_thesis: x in V . (j + 1) then A5: ex i being Element of NAT st x = [{},i] by A1; {} c= V . j by XBOOLE_1:2; hence x in V . (j + 1) by A4, A5, Th8; ::_thesis: verum end; end; defpred S2[ Nat] means for i being Nat st i <= $1 holds V . i c= V . $1; A6: S2[ 0 ] by NAT_1:3; A7: now__::_thesis:_for_j_being_Element_of_NAT_st_S2[j]_holds_ S2[j_+_1] let j be Element of NAT ; ::_thesis: ( S2[j] implies S2[j + 1] ) assume A8: S2[j] ; ::_thesis: S2[j + 1] A9: V . j c= V . (j + 1) proof percases ( j = 0 or ex k being Nat st j = k + 1 ) by NAT_1:6; suppose j = 0 ; ::_thesis: V . j c= V . (j + 1) hence V . j c= V . (j + 1) by A3; ::_thesis: verum end; suppose ex k being Nat st j = k + 1 ; ::_thesis: V . j c= V . (j + 1) then consider k being Nat such that A10: j = k + 1 ; reconsider k = k as Element of NAT by ORDINAL1:def_12; A11: V . j = { [(varcl A),n] where A is Subset of (V . k), n is Element of NAT : A is finite } by A2, A10; A12: V . (j + 1) = { [(varcl A),n] where A is Subset of (V . j), n is Element of NAT : A is finite } by A2; A13: V . k c= V . j by A8, A10, NAT_1:11; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in V . j or x in V . (j + 1) ) assume x in V . j ; ::_thesis: x in V . (j + 1) then consider A being Subset of (V . k), n being Element of NAT such that A14: x = [(varcl A),n] and A15: A is finite by A11; A c= V . j by A13, XBOOLE_1:1; hence x in V . (j + 1) by A12, A14, A15; ::_thesis: verum end; end; end; thus S2[j + 1] ::_thesis: verum proof let i be Nat; ::_thesis: ( i <= j + 1 implies V . i c= V . (j + 1) ) assume i <= j + 1 ; ::_thesis: V . i c= V . (j + 1) then ( i = j + 1 or V . i c= V . j ) by A8, NAT_1:8; hence V . i c= V . (j + 1) by A9, XBOOLE_1:1; ::_thesis: verum end; end; for j being Element of NAT holds S2[j] from NAT_1:sch_1(A6, A7); hence for i, j being Element of NAT st i <= j holds V . i c= V . j ; ::_thesis: verum end; theorem Th15: :: ABCMIZ_1:15 for V being ManySortedSet of NAT st V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) holds for A being finite Subset of Vars ex i being Element of NAT st A c= V . i proof let V be ManySortedSet of NAT ; ::_thesis: ( V . 0 = { [{},i] where i is Element of NAT : verum } & ( for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ) implies for A being finite Subset of Vars ex i being Element of NAT st A c= V . i ) assume that A1: V . 0 = { [{},i] where i is Element of NAT : verum } and A2: for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } ; ::_thesis: for A being finite Subset of Vars ex i being Element of NAT st A c= V . i let A be finite Subset of Vars; ::_thesis: ex i being Element of NAT st A c= V . i A3: Vars = Union V by A1, A2, Def2; defpred S1[ set , set ] means $1 in V . $2; A4: now__::_thesis:_for_x_being_set_st_x_in_A_holds_ ex_i_being_set_st_ (_i_in_NAT_&_S1[x,i]_) let x be set ; ::_thesis: ( x in A implies ex i being set st ( i in NAT & S1[x,i] ) ) assume x in A ; ::_thesis: ex i being set st ( i in NAT & S1[x,i] ) then consider Y being set such that A5: x in Y and A6: Y in rng V by A3, TARSKI:def_4; consider i being set such that A7: i in dom V and A8: Y = V . i by A6, FUNCT_1:def_3; take i = i; ::_thesis: ( i in NAT & S1[x,i] ) thus ( i in NAT & S1[x,i] ) by A5, A7, A8; ::_thesis: verum end; consider f being Function such that A9: ( dom f = A & rng f c= NAT ) and A10: for x being set st x in A holds S1[x,f . x] from FUNCT_1:sch_5(A4); percases ( A = {} or A <> {} ) ; suppose A = {} ; ::_thesis: ex i being Element of NAT st A c= V . i then A c= V . 0 by XBOOLE_1:2; hence ex i being Element of NAT st A c= V . i ; ::_thesis: verum end; suppose A <> {} ; ::_thesis: ex i being Element of NAT st A c= V . i then reconsider B = rng f as non empty finite Subset of NAT by A9, FINSET_1:8, RELAT_1:42; reconsider i = max B as Element of NAT by ORDINAL1:def_12; take i ; ::_thesis: A c= V . i let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in A or x in V . i ) assume A11: x in A ; ::_thesis: x in V . i then A12: f . x in B by A9, FUNCT_1:def_3; then reconsider j = f . x as Element of NAT ; j <= i by A12, XXREAL_2:def_8; then A13: V . j c= V . i by A1, A2, Th14; x in V . j by A10, A11; hence x in V . i by A13; ::_thesis: verum end; end; end; theorem Th16: :: ABCMIZ_1:16 { [{},i] where i is Element of NAT : verum } c= Vars proof consider V being ManySortedSet of NAT such that A1: Vars = Union V and A2: V . 0 = { [{},i] where i is Element of NAT : verum } and for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } by Def2; dom V = NAT by PARTFUN1:def_2; then V . 0 in rng V by FUNCT_1:def_3; hence { [{},i] where i is Element of NAT : verum } c= Vars by A1, A2, ZFMISC_1:74; ::_thesis: verum end; theorem Th17: :: ABCMIZ_1:17 for A being finite Subset of Vars for i being Nat holds [(varcl A),i] in Vars proof let A be finite Subset of Vars; ::_thesis: for i being Nat holds [(varcl A),i] in Vars let i be Nat; ::_thesis: [(varcl A),i] in Vars consider V being ManySortedSet of NAT such that A1: Vars = Union V and A2: V . 0 = { [{},k] where k is Element of NAT : verum } and A3: for n being Nat holds V . (n + 1) = { [(varcl b),j] where b is Subset of (V . n), j is Element of NAT : b is finite } by Def2; consider j being Element of NAT such that A4: A c= V . j by A2, A3, Th15; A5: V . (j + 1) = { [(varcl B),k] where B is Subset of (V . j), k is Element of NAT : B is finite } by A3; i in NAT by ORDINAL1:def_12; then A6: [(varcl A),i] in V . (j + 1) by A4, A5; dom V = NAT by PARTFUN1:def_2; hence [(varcl A),i] in Vars by A1, A6, CARD_5:2; ::_thesis: verum end; theorem Th18: :: ABCMIZ_1:18 Vars = { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } proof consider V being ManySortedSet of NAT such that A1: Vars = Union V and A2: V . 0 = { [{},i] where i is Element of NAT : verum } and A3: for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } by Def2; set X = { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } ; A4: dom V = NAT by PARTFUN1:def_2; defpred S1[ Nat] means V . $1 c= { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } ; A5: S1[ 0 ] proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in V . 0 or x in { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } ) assume A6: x in V . 0 ; ::_thesis: x in { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } A7: {} c= Vars by XBOOLE_1:2; ex i being Element of NAT st x = [{},i] by A2, A6; hence x in { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } by A7, Th8; ::_thesis: verum end; A8: now__::_thesis:_for_i_being_Element_of_NAT_st_S1[i]_holds_ S1[i_+_1] let i be Element of NAT ; ::_thesis: ( S1[i] implies S1[i + 1] ) assume S1[i] ; ::_thesis: S1[i + 1] A9: V . (i + 1) = { [(varcl A),j] where A is Subset of (V . i), j is Element of NAT : A is finite } by A3; thus S1[i + 1] ::_thesis: verum proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in V . (i + 1) or x in { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } ) assume x in V . (i + 1) ; ::_thesis: x in { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } then consider A being Subset of (V . i), j being Element of NAT such that A10: x = [(varcl A),j] and A11: A is finite by A9; V . i in rng V by A4, FUNCT_1:def_3; then V . i c= Vars by A1, ZFMISC_1:74; then A c= Vars by XBOOLE_1:1; hence x in { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } by A10, A11; ::_thesis: verum end; end; A12: for i being Element of NAT holds S1[i] from NAT_1:sch_1(A5, A8); now__::_thesis:_for_x_being_set_st_x_in_rng_V_holds_ x_c=__{__[(varcl_A),j]_where_A_is_Subset_of_Vars,_j_is_Element_of_NAT_:_A_is_finite__}_ let x be set ; ::_thesis: ( x in rng V implies x c= { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } ) assume x in rng V ; ::_thesis: x c= { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } then ex y being set st ( y in NAT & x = V . y ) by A4, FUNCT_1:def_3; hence x c= { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } by A12; ::_thesis: verum end; hence Vars c= { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } by A1, ZFMISC_1:76; :: according to XBOOLE_0:def_10 ::_thesis: { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } c= Vars let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } or x in Vars ) assume x in { [(varcl A),j] where A is Subset of Vars, j is Element of NAT : A is finite } ; ::_thesis: x in Vars then ex A being Subset of Vars ex j being Element of NAT st ( x = [(varcl A),j] & A is finite ) ; hence x in Vars by Th17; ::_thesis: verum end; theorem Th19: :: ABCMIZ_1:19 varcl Vars = Vars proof consider V being ManySortedSet of NAT such that A1: Vars = Union V and A2: V . 0 = { [{},i] where i is Element of NAT : verum } and A3: for n being Nat holds V . (n + 1) = { [(varcl A),j] where A is Subset of (V . n), j is Element of NAT : A is finite } by Def2; defpred S1[ Nat] means varcl (V . $1) = V . $1; now__::_thesis:_for_x,_y_being_set_st_[x,y]_in_V_._0_holds_ x_c=_V_._0 let x, y be set ; ::_thesis: ( [x,y] in V . 0 implies x c= V . 0 ) assume [x,y] in V . 0 ; ::_thesis: x c= V . 0 then ex i being Element of NAT st [x,y] = [{},i] by A2; then x = {} by XTUPLE_0:1; hence x c= V . 0 by XBOOLE_1:2; ::_thesis: verum end; then A4: varcl (V . 0) c= V . 0 by Def1; V . 0 c= varcl (V . 0) by Def1; then A5: S1[ 0 ] by A4, XBOOLE_0:def_10; A6: now__::_thesis:_for_i_being_Nat_st_S1[i]_holds_ S1[i_+_1] let i be Nat; ::_thesis: ( S1[i] implies S1[i + 1] ) assume A7: S1[i] ; ::_thesis: S1[i + 1] reconsider i9 = i as Element of NAT by ORDINAL1:def_12; A8: V . (i + 1) = { [(varcl A),j] where A is Subset of (V . i), j is Element of NAT : A is finite } by A3; now__::_thesis:_for_x,_y_being_set_st_[x,y]_in_V_._(i_+_1)_holds_ x_c=_V_._(i_+_1) let x, y be set ; ::_thesis: ( [x,y] in V . (i + 1) implies x c= V . (i + 1) ) assume [x,y] in V . (i + 1) ; ::_thesis: x c= V . (i + 1) then consider A being Subset of (V . i), j being Element of NAT such that A9: [x,y] = [(varcl A),j] and A is finite by A8; x = varcl A by A9, XTUPLE_0:1; then A10: x c= V . i by A7, Th9; V . i9 c= V . (i9 + 1) by A2, A3, Th14, NAT_1:11; hence x c= V . (i + 1) by A10, XBOOLE_1:1; ::_thesis: verum end; then A11: varcl (V . (i + 1)) c= V . (i + 1) by Def1; V . (i + 1) c= varcl (V . (i + 1)) by Def1; hence S1[i + 1] by A11, XBOOLE_0:def_10; ::_thesis: verum end; A12: for i being Nat holds S1[i] from NAT_1:sch_2(A5, A6); A13: varcl Vars = union { (varcl a) where a is Element of rng V : verum } by A1, Th10; hereby :: according to TARSKI:def_3,XBOOLE_0:def_10 ::_thesis: Vars c= varcl Vars let x be set ; ::_thesis: ( x in varcl Vars implies x in Vars ) assume x in varcl Vars ; ::_thesis: x in Vars then consider Y being set such that A14: x in Y and A15: Y in { (varcl a) where a is Element of rng V : verum } by A13, TARSKI:def_4; consider a being Element of rng V such that A16: Y = varcl a by A15; consider i being set such that A17: i in dom V and A18: a = V . i by FUNCT_1:def_3; reconsider i = i as Element of NAT by A17; varcl (V . i) = a by A12, A18; hence x in Vars by A1, A14, A16, A17, A18, CARD_5:2; ::_thesis: verum end; thus Vars c= varcl Vars by Def1; ::_thesis: verum end; theorem Th20: :: ABCMIZ_1:20 for X being set st the_rank_of X is finite holds X is finite proof let X be set ; ::_thesis: ( the_rank_of X is finite implies X is finite ) assume the_rank_of X is finite ; ::_thesis: X is finite then the_rank_of X in NAT by CARD_1:61; then A1: Rank (the_rank_of X) is finite by CARD_2:67; X c= Rank (the_rank_of X) by CLASSES1:def_8; hence X is finite by A1; ::_thesis: verum end; theorem Th21: :: ABCMIZ_1:21 for X being set holds the_rank_of (varcl X) = the_rank_of X proof let X be set ; ::_thesis: the_rank_of (varcl X) = the_rank_of X A1: X c= Rank (the_rank_of X) by CLASSES1:def_8; set a = the_rank_of X; A2: the_rank_of X c= succ (the_rank_of X) by ORDINAL3:1; succ (the_rank_of X) c= succ (succ (the_rank_of X)) by ORDINAL3:1; then the_rank_of X c= succ (succ (the_rank_of X)) by A2, XBOOLE_1:1; then A3: Rank (the_rank_of X) c= Rank (succ (succ (the_rank_of X))) by CLASSES1:37; now__::_thesis:_for_x,_y_being_set_st_[x,y]_in_Rank_(the_rank_of_X)_holds_ x_c=_Rank_(the_rank_of_X) let x, y be set ; ::_thesis: ( [x,y] in Rank (the_rank_of X) implies x c= Rank (the_rank_of X) ) assume [x,y] in Rank (the_rank_of X) ; ::_thesis: x c= Rank (the_rank_of X) then x in Rank (the_rank_of X) by A3, CLASSES1:45; hence x c= Rank (the_rank_of X) by ORDINAL1:def_2; ::_thesis: verum end; then varcl X c= Rank (the_rank_of X) by A1, Def1; hence the_rank_of (varcl X) c= the_rank_of X by CLASSES1:65; :: according to XBOOLE_0:def_10 ::_thesis: the_rank_of X c= the_rank_of (varcl X) X c= varcl X by Def1; hence the_rank_of X c= the_rank_of (varcl X) by CLASSES1:67; ::_thesis: verum end; theorem Th22: :: ABCMIZ_1:22 for X being finite Subset of (Rank omega) holds X in Rank omega proof let X be finite Subset of (Rank omega); ::_thesis: X in Rank omega deffunc H2( set ) -> set = the_rank_of $1; consider f being Function such that A1: dom f = X and A2: for x being set st x in X holds f . x = H2(x) from FUNCT_1:sch_3(); A3: rng f c= NAT proof let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in rng f or y in NAT ) assume y in rng f ; ::_thesis: y in NAT then consider x being set such that A4: x in X and A5: y = f . x by A1, FUNCT_1:def_3; the_rank_of x in omega by A4, CLASSES1:66; hence y in NAT by A2, A4, A5; ::_thesis: verum end; percases ( X = {} or X <> {} ) ; suppose X = {} ; ::_thesis: X in Rank omega then the_rank_of X = 0 by CLASSES1:71; hence X in Rank omega by CLASSES1:66; ::_thesis: verum end; suppose X <> {} ; ::_thesis: X in Rank omega then reconsider Y = rng f as non empty finite Subset of NAT by A1, A3, FINSET_1:8, RELAT_1:42; reconsider mY = max Y as Element of NAT by ORDINAL1:def_12; set i = 1 + mY; X c= Rank (1 + mY) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in X or x in Rank (1 + mY) ) assume A6: x in X ; ::_thesis: x in Rank (1 + mY) then A7: f . x in Y by A1, FUNCT_1:def_3; A8: f . x = the_rank_of x by A2, A6; reconsider j = f . x as Element of NAT by A7; j <= mY by A7, XXREAL_2:def_8; then j c= mY by NAT_1:39; then A9: j in succ mY by ORDINAL1:22; succ mY = 1 + mY by NAT_1:38; hence x in Rank (1 + mY) by A8, A9, CLASSES1:66; ::_thesis: verum end; then the_rank_of X c= 1 + mY by CLASSES1:65; then A10: the_rank_of X in succ (1 + mY) by ORDINAL1:22; A11: (1 + mY) + 1 c= omega ; (1 + mY) + 1 = succ (1 + mY) by NAT_1:38; hence X in Rank omega by A10, A11, CLASSES1:66; ::_thesis: verum end; end; end; theorem Th23: :: ABCMIZ_1:23 Vars c= Rank omega proof consider V being ManySortedSet of NAT such that A1: Vars = Union V and A2: V . 0 = { [{},i] where i is Element of NAT : verum } and A3: for n being Nat holds V . (n + 1) = { [(varcl a),j] where a is Subset of (V . n), j is Element of NAT : a is finite } by Def2; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in Vars or x in Rank omega ) assume x in Vars ; ::_thesis: x in Rank omega then consider i being set such that A4: i in dom V and A5: x in V . i by A1, CARD_5:2; reconsider i = i as Element of NAT by A4; defpred S1[ Nat] means V . $1 c= Rank omega; A6: S1[ 0 ] proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in V . 0 or x in Rank omega ) assume x in V . 0 ; ::_thesis: x in Rank omega then consider i being Element of NAT such that A7: x = [{},i] by A2; A8: i + 1 = succ i by NAT_1:38; A9: {} c= i ; A10: i in i + 1 by A8, ORDINAL1:6; A11: {} in i + 1 by A8, A9, ORDINAL1:6, ORDINAL1:12; A12: the_rank_of {} = {} by CLASSES1:73; A13: the_rank_of i = i by CLASSES1:73; A14: {} in Rank (i + 1) by A11, A12, CLASSES1:66; i in Rank (i + 1) by A10, A13, CLASSES1:66; then A15: x in Rank (succ (succ (i + 1))) by A7, A14, CLASSES1:45; succ (succ (i + 1)) c= omega ; then Rank (succ (succ (i + 1))) c= Rank omega by CLASSES1:37; hence x in Rank omega by A15; ::_thesis: verum end; A16: now__::_thesis:_for_n_being_Element_of_NAT_st_S1[n]_holds_ S1[n_+_1] let n be Element of NAT ; ::_thesis: ( S1[n] implies S1[n + 1] ) assume A17: S1[n] ; ::_thesis: S1[n + 1] A18: V . (n + 1) = { [(varcl a),j] where a is Subset of (V . n), j is Element of NAT : a is finite } by A3; thus S1[n + 1] ::_thesis: verum proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in V . (n + 1) or x in Rank omega ) assume x in V . (n + 1) ; ::_thesis: x in Rank omega then consider a being Subset of (V . n), j being Element of NAT such that A19: x = [(varcl a),j] and A20: a is finite by A18; a c= Rank omega by A17, XBOOLE_1:1; then a in Rank omega by A20, Th22; then reconsider i = the_rank_of a as Element of NAT by CLASSES1:66; reconsider k = j \/ i as Element of NAT by ORDINAL3:12; A21: the_rank_of (varcl a) = i by Th21; A22: the_rank_of j = j by CLASSES1:73; A23: k in succ k by ORDINAL1:6; then A24: i in succ k by ORDINAL1:12, XBOOLE_1:7; A25: j in succ k by A23, ORDINAL1:12, XBOOLE_1:7; A26: succ k = k + 1 by NAT_1:38; then A27: varcl a in Rank (k + 1) by A21, A24, CLASSES1:66; j in Rank (k + 1) by A22, A25, A26, CLASSES1:66; then A28: x in Rank (succ (succ (k + 1))) by A19, A27, CLASSES1:45; succ (succ (k + 1)) c= omega ; then Rank (succ (succ (k + 1))) c= Rank omega by CLASSES1:37; hence x in Rank omega by A28; ::_thesis: verum end; end; for n being Element of NAT holds S1[n] from NAT_1:sch_1(A6, A16); then V . i c= Rank omega ; hence x in Rank omega by A5; ::_thesis: verum end; theorem Th24: :: ABCMIZ_1:24 for A being finite Subset of Vars holds varcl A is finite Subset of Vars proof let A be finite Subset of Vars; ::_thesis: varcl A is finite Subset of Vars A c= Rank omega by Th23, XBOOLE_1:1; then A in Rank omega by Th22; then the_rank_of A in omega by CLASSES1:66; then the_rank_of (varcl A) is finite by Th21; hence varcl A is finite Subset of Vars by Th9, Th19, Th20; ::_thesis: verum end; registration cluster Vars -> non empty ; correctness coherence not Vars is empty ; proof [{},0] in { [{},i] where i is Element of NAT : verum } ; hence not Vars is empty by Th16; ::_thesis: verum end; end; definition mode variable is Element of Vars ; end; registration let x be variable; cluster vars x -> finite ; coherence x `1 is finite proof x in Vars ; then consider A being Subset of Vars, j being Element of NAT such that A1: x = [(varcl A),j] and A2: A is finite by Th18; x `1 = varcl A by A1, MCART_1:7; hence x `1 is finite by A2, Th24; ::_thesis: verum end; end; notation let x be variable; synonym vars x for x `1 ; end; definition let x be variable; :: original: vars redefine func vars x -> Subset of Vars; coherence vars x is Subset of Vars proof x in Vars ; then consider A being Subset of Vars, j being Element of NAT such that A1: x = [(varcl A),j] and A2: A is finite by Th18; x `1 = varcl A by A1, MCART_1:7; hence vars x is Subset of Vars by A2, Th24; ::_thesis: verum end; end; theorem :: ABCMIZ_1:25 for i being Nat holds [{},i] in Vars proof let i be Nat; ::_thesis: [{},i] in Vars i in NAT by ORDINAL1:def_12; then [{},i] in { [{},j] where j is Element of NAT : verum } ; hence [{},i] in Vars by Th16; ::_thesis: verum end; theorem Th26: :: ABCMIZ_1:26 for j being Element of NAT for A being Subset of Vars holds varcl {[(varcl A),j]} = (varcl A) \/ {[(varcl A),j]} proof let j be Element of NAT ; ::_thesis: for A being Subset of Vars holds varcl {[(varcl A),j]} = (varcl A) \/ {[(varcl A),j]} let A be Subset of Vars; ::_thesis: varcl {[(varcl A),j]} = (varcl A) \/ {[(varcl A),j]} A1: {[(varcl A),j]} c= (varcl A) \/ {[(varcl A),j]} by XBOOLE_1:7; A2: varcl A c= (varcl A) \/ {[(varcl A),j]} by XBOOLE_1:7; now__::_thesis:_for_x,_y_being_set_st_[x,y]_in_(varcl_A)_\/_{[(varcl_A),j]}_holds_ x_c=_(varcl_A)_\/_{[(varcl_A),j]} let x, y be set ; ::_thesis: ( [x,y] in (varcl A) \/ {[(varcl A),j]} implies x c= (varcl A) \/ {[(varcl A),j]} ) assume [x,y] in (varcl A) \/ {[(varcl A),j]} ; ::_thesis: x c= (varcl A) \/ {[(varcl A),j]} then ( [x,y] in varcl A or [x,y] in {[(varcl A),j]} ) by XBOOLE_0:def_3; then ( [x,y] in varcl A or [x,y] = [(varcl A),j] ) by TARSKI:def_1; then ( x c= varcl A or x = varcl A ) by Def1, XTUPLE_0:1; hence x c= (varcl A) \/ {[(varcl A),j]} by A2, XBOOLE_1:1; ::_thesis: verum end; hence varcl {[(varcl A),j]} c= (varcl A) \/ {[(varcl A),j]} by A1, Def1; :: according to XBOOLE_0:def_10 ::_thesis: (varcl A) \/ {[(varcl A),j]} c= varcl {[(varcl A),j]} A3: {[(varcl A),j]} c= varcl {[(varcl A),j]} by Def1; [(varcl A),j] in {[(varcl A),j]} by TARSKI:def_1; then varcl A c= varcl {[(varcl A),j]} by A3, Def1; hence (varcl A) \/ {[(varcl A),j]} c= varcl {[(varcl A),j]} by A3, XBOOLE_1:8; ::_thesis: verum end; theorem Th27: :: ABCMIZ_1:27 for x being variable holds varcl {x} = (vars x) \/ {x} proof let x be variable; ::_thesis: varcl {x} = (vars x) \/ {x} x in Vars ; then consider A being Subset of Vars, j being Element of NAT such that A1: x = [(varcl A),j] and A is finite by Th18; varcl {x} = (varcl A) \/ {x} by A1, Th26; hence varcl {x} = (vars x) \/ {x} by A1, MCART_1:7; ::_thesis: verum end; theorem :: ABCMIZ_1:28 for i being Nat for x being variable holds [((vars x) \/ {x}),i] in Vars proof let i be Nat; ::_thesis: for x being variable holds [((vars x) \/ {x}),i] in Vars let x be variable; ::_thesis: [((vars x) \/ {x}),i] in Vars x in Vars ; then consider A being Subset of Vars, j being Element of NAT such that A1: x = [(varcl A),j] and A is finite by Th18; A2: varcl {x} = (varcl A) \/ {x} by A1, Th26; A3: vars x = varcl A by A1, MCART_1:7; i in NAT by ORDINAL1:def_12; hence [((vars x) \/ {x}),i] in Vars by A2, A3, Th18; ::_thesis: verum end; begin notation let R be Relation; let A be set ; synonym R dom A for R | A; end; definition func QuasiLoci -> FinSequenceSet of Vars means :Def3: :: ABCMIZ_1:def 3 for p being FinSequence of Vars holds ( p in it iff ( p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p dom i) ) ) ); existence ex b1 being FinSequenceSet of Vars st for p being FinSequence of Vars holds ( p in b1 iff ( p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p dom i) ) ) ) proof defpred S1[ set ] means ex p being Function st ( p = $1 & p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p | i) ) ); consider L being set such that A1: for x being set holds ( x in L iff ( x in Vars * & S1[x] ) ) from XBOOLE_0:sch_1(); L is FinSequenceSet of Vars proof let x be set ; :: according to FINSEQ_2:def_3 ::_thesis: ( not x in L or x is FinSequence of Vars ) assume x in L ; ::_thesis: x is FinSequence of Vars then x in Vars * by A1; hence x is FinSequence of Vars by FINSEQ_1:def_11; ::_thesis: verum end; then reconsider L = L as FinSequenceSet of Vars ; take L ; ::_thesis: for p being FinSequence of Vars holds ( p in L iff ( p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p dom i) ) ) ) let p be FinSequence of Vars ; ::_thesis: ( p in L iff ( p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p dom i) ) ) ) ( p in L iff ( p in Vars * & ex q being Function st ( q = p & q is one-to-one & ( for i being Nat st i in dom q holds (q . i) `1 c= rng (q | i) ) ) ) ) by A1; hence ( p in L iff ( p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p dom i) ) ) ) by FINSEQ_1:def_11; ::_thesis: verum end; correctness uniqueness for b1, b2 being FinSequenceSet of Vars st ( for p being FinSequence of Vars holds ( p in b1 iff ( p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p dom i) ) ) ) ) & ( for p being FinSequence of Vars holds ( p in b2 iff ( p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p dom i) ) ) ) ) holds b1 = b2; proof let L1, L2 be FinSequenceSet of Vars ; ::_thesis: ( ( for p being FinSequence of Vars holds ( p in L1 iff ( p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p dom i) ) ) ) ) & ( for p being FinSequence of Vars holds ( p in L2 iff ( p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p dom i) ) ) ) ) implies L1 = L2 ) assume that A2: for p being FinSequence of Vars holds ( p in L1 iff ( p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p | i) ) ) ) and A3: for p being FinSequence of Vars holds ( p in L2 iff ( p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p | i) ) ) ) ; ::_thesis: L1 = L2 hereby :: according to TARSKI:def_3,XBOOLE_0:def_10 ::_thesis: L2 c= L1 let x be set ; ::_thesis: ( x in L1 implies x in L2 ) assume A4: x in L1 ; ::_thesis: x in L2 then reconsider p = x as FinSequence of Vars by FINSEQ_2:def_3; A5: p is one-to-one by A2, A4; for i being Nat st i in dom p holds (p . i) `1 c= rng (p | i) by A2, A4; hence x in L2 by A3, A5; ::_thesis: verum end; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in L2 or x in L1 ) assume A6: x in L2 ; ::_thesis: x in L1 then reconsider p = x as FinSequence of Vars by FINSEQ_2:def_3; A7: p is one-to-one by A3, A6; for i being Nat st i in dom p holds (p . i) `1 c= rng (p | i) by A3, A6; hence x in L1 by A2, A7; ::_thesis: verum end; end; :: deftheorem Def3 defines QuasiLoci ABCMIZ_1:def_3_:_ for b1 being FinSequenceSet of Vars holds ( b1 = QuasiLoci iff for p being FinSequence of Vars holds ( p in b1 iff ( p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p dom i) ) ) ) ); theorem Th29: :: ABCMIZ_1:29 <*> Vars in QuasiLoci proof reconsider p = <*> Vars as FinSequence of Vars ; ( p is one-to-one & ( for i being Nat st i in dom p holds (p . i) `1 c= rng (p dom i) ) ) ; hence <*> Vars in QuasiLoci by Def3; ::_thesis: verum end; registration cluster QuasiLoci -> non empty ; correctness coherence not QuasiLoci is empty ; by Th29; end; definition mode quasi-loci is Element of QuasiLoci ; end; registration cluster -> one-to-one for Element of QuasiLoci ; coherence for b1 being quasi-loci holds b1 is one-to-one by Def3; end; theorem Th30: :: ABCMIZ_1:30 for l being one-to-one FinSequence of Vars holds ( l is quasi-loci iff for i being Nat for x being variable st i in dom l & x = l . i holds for y being variable st y in vars x holds ex j being Nat st ( j in dom l & j < i & y = l . j ) ) proof let l be one-to-one FinSequence of Vars ; ::_thesis: ( l is quasi-loci iff for i being Nat for x being variable st i in dom l & x = l . i holds for y being variable st y in vars x holds ex j being Nat st ( j in dom l & j < i & y = l . j ) ) hereby ::_thesis: ( ( for i being Nat for x being variable st i in dom l & x = l . i holds for y being variable st y in vars x holds ex j being Nat st ( j in dom l & j < i & y = l . j ) ) implies l is quasi-loci ) assume A1: l is quasi-loci ; ::_thesis: for i being Nat for x being variable st i in dom l & x = l . i holds for y being variable st y in vars x holds ex j being Nat st ( j in dom l & j < i & y = l . j ) let i be Nat; ::_thesis: for x being variable st i in dom l & x = l . i holds for y being variable st y in vars x holds ex j being Nat st ( j in dom l & j < i & y = l . j ) let x be variable; ::_thesis: ( i in dom l & x = l . i implies for y being variable st y in vars x holds ex j being Nat st ( j in dom l & j < i & y = l . j ) ) assume that A2: i in dom l and A3: x = l . i ; ::_thesis: for y being variable st y in vars x holds ex j being Nat st ( j in dom l & j < i & y = l . j ) let y be variable; ::_thesis: ( y in vars x implies ex j being Nat st ( j in dom l & j < i & y = l . j ) ) assume A4: y in vars x ; ::_thesis: ex j being Nat st ( j in dom l & j < i & y = l . j ) vars x c= rng (l | i) by A1, A2, A3, Def3; then consider z being set such that A5: z in dom (l dom i) and A6: y = (l dom i) . z by A4, FUNCT_1:def_3; A7: dom (l dom i) = (dom l) /\ i by RELAT_1:61; reconsider z = z as Element of NAT by A5, A7; reconsider j = z as Nat ; take j = j; ::_thesis: ( j in dom l & j < i & y = l . j ) A8: card z = z by CARD_1:def_2; card i = i by CARD_1:def_2; hence ( j in dom l & j < i & y = l . j ) by A5, A6, A7, A8, FUNCT_1:47, NAT_1:41, XBOOLE_0:def_4; ::_thesis: verum end; assume A9: for i being Nat for x being variable st i in dom l & x = l . i holds for y being variable st y in vars x holds ex j being Nat st ( j in dom l & j < i & y = l . j ) ; ::_thesis: l is quasi-loci now__::_thesis:_for_i_being_Nat_st_i_in_dom_l_holds_ (l_._i)_`1_c=_rng_(l_dom_i) let i be Nat; ::_thesis: ( i in dom l implies (l . i) `1 c= rng (l dom i) ) assume A10: i in dom l ; ::_thesis: (l . i) `1 c= rng (l dom i) then l . i in rng l by FUNCT_1:def_3; then reconsider x = l . i as variable ; thus (l . i) `1 c= rng (l dom i) ::_thesis: verum proof let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in (l . i) `1 or y in rng (l dom i) ) assume y in (l . i) `1 ; ::_thesis: y in rng (l dom i) then A11: y in vars x ; then reconsider y = y as variable ; consider j being Nat such that A12: j in dom l and A13: j < i and A14: y = l . j by A9, A10, A11; A15: card i = i by CARD_1:def_2; card j = j by CARD_1:def_2; then j in i by A13, A15, NAT_1:41; hence y in rng (l dom i) by A12, A14, FUNCT_1:50; ::_thesis: verum end; end; hence l is quasi-loci by Def3; ::_thesis: verum end; theorem Th31: :: ABCMIZ_1:31 for l being quasi-loci for x being variable holds ( l ^ <*x*> is quasi-loci iff ( not x in rng l & vars x c= rng l ) ) proof let l be quasi-loci; ::_thesis: for x being variable holds ( l ^ <*x*> is quasi-loci iff ( not x in rng l & vars x c= rng l ) ) let x be variable; ::_thesis: ( l ^ <*x*> is quasi-loci iff ( not x in rng l & vars x c= rng l ) ) A1: (l ^ <*x*>) . (1 + (len l)) = x by FINSEQ_1:42; A2: dom (l ^ <*x*>) = Seg ((len l) + (len <*x*>)) by FINSEQ_1:def_7 .= Seg ((len l) + 1) by FINSEQ_1:39 ; 1 <= 1 + (len l) by NAT_1:11; then A3: 1 + (len l) in dom (l ^ <*x*>) by A2; A4: dom l = Seg (len l) by FINSEQ_1:def_3; hereby ::_thesis: ( not x in rng l & vars x c= rng l implies l ^ <*x*> is quasi-loci ) assume A5: l ^ <*x*> is quasi-loci ; ::_thesis: ( not x in rng l & vars x c= rng l ) thus not x in rng l ::_thesis: vars x c= rng l proof assume x in rng l ; ::_thesis: contradiction then consider a being set such that A6: a in dom l and A7: x = l . a by FUNCT_1:def_3; reconsider a = a as Element of NAT by A6; A8: (l ^ <*x*>) . a = x by A6, A7, FINSEQ_1:def_7; A9: a <= len l by A4, A6, FINSEQ_1:1; A10: len l < 1 + (len l) by NAT_1:13; dom l c= dom (l ^ <*x*>) by FINSEQ_1:26; hence contradiction by A1, A3, A5, A6, A8, A9, A10, FUNCT_1:def_4; ::_thesis: verum end; thus vars x c= rng l ::_thesis: verum proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in vars x or a in rng l ) assume A11: a in vars x ; ::_thesis: a in rng l then reconsider a = a as variable ; consider j being Nat such that A12: j in dom (l ^ <*x*>) and A13: j < 1 + (len l) and A14: a = (l ^ <*x*>) . j by A1, A3, A5, A11, Th30; reconsider j = j as Element of NAT by ORDINAL1:def_12; A15: j <= len l by A13, NAT_1:13; j >= 1 by A2, A12, FINSEQ_1:1; then A16: j in dom l by A4, A15; then a = l . j by A14, FINSEQ_1:def_7; hence a in rng l by A16, FUNCT_1:def_3; ::_thesis: verum end; end; assume that A17: not x in rng l and A18: vars x c= rng l ; ::_thesis: l ^ <*x*> is quasi-loci A19: l ^ <*x*> is one-to-one proof let a, b be set ; :: according to FUNCT_1:def_4 ::_thesis: ( not a in proj1 (l ^ <*x*>) or not b in proj1 (l ^ <*x*>) or not (l ^ <*x*>) . a = (l ^ <*x*>) . b or a = b ) assume that A20: a in dom (l ^ <*x*>) and A21: b in dom (l ^ <*x*>) and A22: (l ^ <*x*>) . a = (l ^ <*x*>) . b ; ::_thesis: a = b reconsider a = a, b = b as Element of NAT by A20, A21; A23: a >= 1 by A2, A20, FINSEQ_1:1; A24: b >= 1 by A2, A21, FINSEQ_1:1; A25: a <= 1 + (len l) by A2, A20, FINSEQ_1:1; A26: b <= 1 + (len l) by A2, A21, FINSEQ_1:1; A27: ( a <= len l or a = 1 + (len l) ) by A25, NAT_1:8; A28: ( b <= len l or b = 1 + (len l) ) by A26, NAT_1:8; A29: ( a in dom l or a = 1 + (len l) ) by A4, A23, A27; A30: ( b in dom l or b = 1 + (len l) ) by A4, A24, A28; A31: ( ( a in dom l & l . a = (l ^ <*x*>) . a & l . a in rng l ) or a = 1 + (len l) ) by A29, FINSEQ_1:def_7, FUNCT_1:def_3; ( ( b in dom l & l . b = (l ^ <*x*>) . b & l . b in rng l ) or b = 1 + (len l) ) by A30, FINSEQ_1:def_7, FUNCT_1:def_3; hence a = b by A17, A22, A31, FINSEQ_1:42, FUNCT_1:def_4; ::_thesis: verum end; now__::_thesis:_for_i_being_Nat for_z_being_variable_st_i_in_dom_(l_^_<*x*>)_&_z_=_(l_^_<*x*>)_._i_holds_ for_y_being_variable_st_y_in_vars_z_holds_ ex_j_being_Nat_st_ (_j_in_dom_(l_^_<*x*>)_&_j_<_i_&_y_=_(l_^_<*x*>)_._j_) let i be Nat; ::_thesis: for z being variable st i in dom (l ^ <*x*>) & z = (l ^ <*x*>) . i holds for y being variable st y in vars z holds ex j being Nat st ( j in dom (l ^ <*x*>) & j < i & y = (l ^ <*x*>) . j ) let z be variable; ::_thesis: ( i in dom (l ^ <*x*>) & z = (l ^ <*x*>) . i implies for y being variable st y in vars z holds ex j being Nat st ( j in dom (l ^ <*x*>) & j < i & y = (l ^ <*x*>) . j ) ) assume that A32: i in dom (l ^ <*x*>) and A33: z = (l ^ <*x*>) . i ; ::_thesis: for y being variable st y in vars z holds ex j being Nat st ( j in dom (l ^ <*x*>) & j < i & y = (l ^ <*x*>) . j ) A34: i >= 1 by A2, A32, FINSEQ_1:1; i <= 1 + (len l) by A2, A32, FINSEQ_1:1; then ( i <= len l or i = 1 + (len l) ) by NAT_1:8; then A35: ( i in dom l or ( i = 1 + (len l) & z = x ) ) by A4, A32, A33, A34, FINSEQ_1:42; let y be variable; ::_thesis: ( y in vars z implies ex j being Nat st ( j in dom (l ^ <*x*>) & j < i & y = (l ^ <*x*>) . j ) ) assume A36: y in vars z ; ::_thesis: ex j being Nat st ( j in dom (l ^ <*x*>) & j < i & y = (l ^ <*x*>) . j ) thus ex j being Nat st ( j in dom (l ^ <*x*>) & j < i & y = (l ^ <*x*>) . j ) ::_thesis: verum proof percases ( ( i = 1 + (len l) & z = x ) or ( i in dom l & z = l . i ) ) by A33, A35, FINSEQ_1:def_7; supposeA37: ( i = 1 + (len l) & z = x ) ; ::_thesis: ex j being Nat st ( j in dom (l ^ <*x*>) & j < i & y = (l ^ <*x*>) . j ) then consider k being set such that A38: k in dom l and A39: y = l . k by A18, A36, FUNCT_1:def_3; reconsider k = k as Element of NAT by A38; take k ; ::_thesis: ( k in dom (l ^ <*x*>) & k < i & y = (l ^ <*x*>) . k ) A40: dom l c= dom (l ^ <*x*>) by FINSEQ_1:26; k <= len l by A4, A38, FINSEQ_1:1; hence ( k in dom (l ^ <*x*>) & k < i & y = (l ^ <*x*>) . k ) by A37, A38, A39, A40, FINSEQ_1:def_7, NAT_1:13; ::_thesis: verum end; suppose ( i in dom l & z = l . i ) ; ::_thesis: ex j being Nat st ( j in dom (l ^ <*x*>) & j < i & y = (l ^ <*x*>) . j ) then consider j being Nat such that A41: j in dom l and A42: j < i and A43: y = l . j by A36, Th30; take j ; ::_thesis: ( j in dom (l ^ <*x*>) & j < i & y = (l ^ <*x*>) . j ) dom l c= dom (l ^ <*x*>) by FINSEQ_1:26; hence ( j in dom (l ^ <*x*>) & j < i & y = (l ^ <*x*>) . j ) by A41, A42, A43, FINSEQ_1:def_7; ::_thesis: verum end; end; end; end; hence l ^ <*x*> is quasi-loci by A19, Th30; ::_thesis: verum end; theorem Th32: :: ABCMIZ_1:32 for p, q being FinSequence st p ^ q is quasi-loci holds ( p is quasi-loci & q is FinSequence of Vars ) proof let p, q be FinSequence; ::_thesis: ( p ^ q is quasi-loci implies ( p is quasi-loci & q is FinSequence of Vars ) ) assume A1: p ^ q is quasi-loci ; ::_thesis: ( p is quasi-loci & q is FinSequence of Vars ) then A2: p is one-to-one FinSequence of Vars by FINSEQ_1:36, FINSEQ_3:91; now__::_thesis:_for_i_being_Nat for_x_being_variable_st_i_in_dom_p_&_x_=_p_._i_holds_ for_y_being_variable_st_y_in_vars_x_holds_ ex_j_being_Nat_st_ (_j_in_dom_p_&_j_<_i_&_y_=_p_._j_) let i be Nat; ::_thesis: for x being variable st i in dom p & x = p . i holds for y being variable st y in vars x holds ex j being Nat st ( j in dom p & j < i & y = p . j ) let x be variable; ::_thesis: ( i in dom p & x = p . i implies for y being variable st y in vars x holds ex j being Nat st ( j in dom p & j < i & y = p . j ) ) assume that A3: i in dom p and A4: x = p . i ; ::_thesis: for y being variable st y in vars x holds ex j being Nat st ( j in dom p & j < i & y = p . j ) let y be variable; ::_thesis: ( y in vars x implies ex j being Nat st ( j in dom p & j < i & y = p . j ) ) assume A5: y in vars x ; ::_thesis: ex j being Nat st ( j in dom p & j < i & y = p . j ) A6: dom p c= dom (p ^ q) by FINSEQ_1:26; x = (p ^ q) . i by A3, A4, FINSEQ_1:def_7; then consider j being Nat such that A7: j in dom (p ^ q) and A8: j < i and A9: y = (p ^ q) . j by A1, A3, A5, A6, Th30; take j = j; ::_thesis: ( j in dom p & j < i & y = p . j ) A10: dom p = Seg (len p) by FINSEQ_1:def_3; dom (p ^ q) = Seg (len (p ^ q)) by FINSEQ_1:def_3; then A11: j >= 1 by A7, FINSEQ_1:1; i <= len p by A3, A10, FINSEQ_1:1; then j < len p by A8, XXREAL_0:2; hence ( j in dom p & j < i ) by A7, A8, A10, A11; ::_thesis: y = p . j hence y = p . j by A9, FINSEQ_1:def_7; ::_thesis: verum end; hence ( p is quasi-loci & q is FinSequence of Vars ) by A1, A2, Th30, FINSEQ_1:36; ::_thesis: verum end; theorem :: ABCMIZ_1:33 for l being quasi-loci holds varcl (rng l) = rng l proof let l be quasi-loci; ::_thesis: varcl (rng l) = rng l now__::_thesis:_for_x,_y_being_set_st_[x,y]_in_rng_l_holds_ x_c=_rng_l let x, y be set ; ::_thesis: ( [x,y] in rng l implies x c= rng l ) assume A1: [x,y] in rng l ; ::_thesis: x c= rng l then reconsider xy = [x,y] as variable ; consider i being set such that A2: i in dom l and A3: xy = l . i by A1, FUNCT_1:def_3; reconsider i = i as Nat by A2; A4: vars xy = x by MCART_1:7; thus x c= rng l ::_thesis: verum proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in x or a in rng l ) assume A5: a in x ; ::_thesis: a in rng l then reconsider a = a as variable by A4; ex j being Nat st ( j in dom l & j < i & a = l . j ) by A2, A3, A4, A5, Th30; hence a in rng l by FUNCT_1:def_3; ::_thesis: verum end; end; hence varcl (rng l) c= rng l by Def1; :: according to XBOOLE_0:def_10 ::_thesis: rng l c= varcl (rng l) thus rng l c= varcl (rng l) by Def1; ::_thesis: verum end; theorem Th34: :: ABCMIZ_1:34 for x being variable holds ( <*x*> is quasi-loci iff vars x = {} ) proof let x be variable; ::_thesis: ( <*x*> is quasi-loci iff vars x = {} ) A1: <*x*> = (<*> Vars) ^ <*x*> by FINSEQ_1:34; A2: rng {} = {} ; ( vars x c= {} implies vars x = {} ) ; hence ( <*x*> is quasi-loci iff vars x = {} ) by A1, A2, Th29, Th31; ::_thesis: verum end; theorem Th35: :: ABCMIZ_1:35 for x, y being variable holds ( <*x,y*> is quasi-loci iff ( vars x = {} & x <> y & vars y c= {x} ) ) proof let x, y be variable; ::_thesis: ( <*x,y*> is quasi-loci iff ( vars x = {} & x <> y & vars y c= {x} ) ) A1: rng <*x*> = {x} by FINSEQ_1:38; A2: ( <*x*> is quasi-loci iff vars x = {} ) by Th34; ( y in {x} iff y = x ) by TARSKI:def_1; hence ( <*x,y*> is quasi-loci iff ( vars x = {} & x <> y & vars y c= {x} ) ) by A1, A2, Th31, Th32; ::_thesis: verum end; theorem :: ABCMIZ_1:36 for x, y, z being variable holds ( <*x,y,z*> is quasi-loci iff ( vars x = {} & x <> y & vars y c= {x} & x <> z & y <> z & vars z c= {x,y} ) ) proof let x, y, z be variable; ::_thesis: ( <*x,y,z*> is quasi-loci iff ( vars x = {} & x <> y & vars y c= {x} & x <> z & y <> z & vars z c= {x,y} ) ) A1: rng <*x,y*> = {x,y} by FINSEQ_2:127; A2: ( <*x,y*> is quasi-loci iff ( vars x = {} & x <> y & vars y c= {x} ) ) by Th35; ( z in {x,y} iff ( z = x or z = y ) ) by TARSKI:def_2; hence ( <*x,y,z*> is quasi-loci iff ( vars x = {} & x <> y & vars y c= {x} & x <> z & y <> z & vars z c= {x,y} ) ) by A1, A2, Th31, Th32; ::_thesis: verum end; definition let l be quasi-loci; :: original: " redefine funcl " -> PartFunc of Vars,NAT; coherence l " is PartFunc of Vars,NAT proof A1: dom (l ") = rng l by FUNCT_1:33; rng (l ") = dom l by FUNCT_1:33; hence l " is PartFunc of Vars,NAT by A1, RELSET_1:4; ::_thesis: verum end; end; begin definition func a_Type -> set equals :: ABCMIZ_1:def 4 0 ; coherence 0 is set ; func an_Adj -> set equals :: ABCMIZ_1:def 5 1; coherence 1 is set ; func a_Term -> set equals :: ABCMIZ_1:def 6 2; coherence 2 is set ; func * -> set equals :: ABCMIZ_1:def 7 0 ; coherence 0 is set ; func non_op -> set equals :: ABCMIZ_1:def 8 1; coherence 1 is set ; end; :: deftheorem defines a_Type ABCMIZ_1:def_4_:_ a_Type = 0 ; :: deftheorem defines an_Adj ABCMIZ_1:def_5_:_ an_Adj = 1; :: deftheorem defines a_Term ABCMIZ_1:def_6_:_ a_Term = 2; :: deftheorem defines * ABCMIZ_1:def_7_:_ * = 0 ; :: deftheorem defines non_op ABCMIZ_1:def_8_:_ non_op = 1; definition let C be Signature; attrC is constructor means :Def9: :: ABCMIZ_1:def 9 ( the carrier of C = {a_Type,an_Adj,a_Term} & {*,non_op} c= the carrier' of C & the Arity of C . * = <*an_Adj,a_Type*> & the Arity of C . non_op = <*an_Adj*> & the ResultSort of C . * = a_Type & the ResultSort of C . non_op = an_Adj & ( for o being Element of the carrier' of C st o <> * & o <> non_op holds the Arity of C . o in {a_Term} * ) ); end; :: deftheorem Def9 defines constructor ABCMIZ_1:def_9_:_ for C being Signature holds ( C is constructor iff ( the carrier of C = {a_Type,an_Adj,a_Term} & {*,non_op} c= the carrier' of C & the Arity of C . * = <*an_Adj,a_Type*> & the Arity of C . non_op = <*an_Adj*> & the ResultSort of C . * = a_Type & the ResultSort of C . non_op = an_Adj & ( for o being Element of the carrier' of C st o <> * & o <> non_op holds the Arity of C . o in {a_Term} * ) ) ); registration clusterV259() constructor -> non empty non void for ManySortedSign ; coherence for b1 being Signature st b1 is constructor holds ( not b1 is empty & not b1 is void ) proof let C be Signature; ::_thesis: ( C is constructor implies ( not C is empty & not C is void ) ) assume the carrier of C = {a_Type,an_Adj,a_Term} ; :: according to ABCMIZ_1:def_9 ::_thesis: ( not {*,non_op} c= the carrier' of C or not the Arity of C . * = <*an_Adj,a_Type*> or not the Arity of C . non_op = <*an_Adj*> or not the ResultSort of C . * = a_Type or not the ResultSort of C . non_op = an_Adj or ex o being Element of the carrier' of C st ( o <> * & o <> non_op & not the Arity of C . o in {a_Term} * ) or ( not C is empty & not C is void ) ) assume {*,non_op} c= the carrier' of C ; ::_thesis: ( not the Arity of C . * = <*an_Adj,a_Type*> or not the Arity of C . non_op = <*an_Adj*> or not the ResultSort of C . * = a_Type or not the ResultSort of C . non_op = an_Adj or ex o being Element of the carrier' of C st ( o <> * & o <> non_op & not the Arity of C . o in {a_Term} * ) or ( not C is empty & not C is void ) ) thus ( not the Arity of C . * = <*an_Adj,a_Type*> or not the Arity of C . non_op = <*an_Adj*> or not the ResultSort of C . * = a_Type or not the ResultSort of C . non_op = an_Adj or ex o being Element of the carrier' of C st ( o <> * & o <> non_op & not the Arity of C . o in {a_Term} * ) or ( not C is empty & not C is void ) ) ; ::_thesis: verum end; end; definition func MinConstrSign -> strict Signature means :Def10: :: ABCMIZ_1:def 10 ( it is constructor & the carrier' of it = {*,non_op} ); existence ex b1 being strict Signature st ( b1 is constructor & the carrier' of b1 = {*,non_op} ) proof set A = {a_Type,an_Adj,a_Term}; reconsider t = a_Type , a = an_Adj as Element of {a_Type,an_Adj,a_Term} by ENUMSET1:def_1; reconsider aa = <*a*> as Element of {a_Type,an_Adj,a_Term} * ; set C = ManySortedSign(# {a_Type,an_Adj,a_Term},{*,non_op},((*,non_op) --> (<*a,t*>,aa)),((*,non_op) --> (t,a)) #); reconsider C = ManySortedSign(# {a_Type,an_Adj,a_Term},{*,non_op},((*,non_op) --> (<*a,t*>,aa)),((*,non_op) --> (t,a)) #) as non empty non void strict ManySortedSign ; take C ; ::_thesis: ( C is constructor & the carrier' of C = {*,non_op} ) thus ( the carrier of C = {a_Type,an_Adj,a_Term} & {*,non_op} c= the carrier' of C ) ; :: according to ABCMIZ_1:def_9 ::_thesis: ( the Arity of C . * = <*an_Adj,a_Type*> & the Arity of C . non_op = <*an_Adj*> & the ResultSort of C . * = a_Type & the ResultSort of C . non_op = an_Adj & ( for o being Element of the carrier' of C st o <> * & o <> non_op holds the Arity of C . o in {a_Term} * ) & the carrier' of C = {*,non_op} ) thus the Arity of C . * = <*an_Adj,a_Type*> by FUNCT_4:63; ::_thesis: ( the Arity of C . non_op = <*an_Adj*> & the ResultSort of C . * = a_Type & the ResultSort of C . non_op = an_Adj & ( for o being Element of the carrier' of C st o <> * & o <> non_op holds the Arity of C . o in {a_Term} * ) & the carrier' of C = {*,non_op} ) thus the Arity of C . non_op = <*an_Adj*> by FUNCT_4:63; ::_thesis: ( the ResultSort of C . * = a_Type & the ResultSort of C . non_op = an_Adj & ( for o being Element of the carrier' of C st o <> * & o <> non_op holds the Arity of C . o in {a_Term} * ) & the carrier' of C = {*,non_op} ) thus the ResultSort of C . * = a_Type by FUNCT_4:63; ::_thesis: ( the ResultSort of C . non_op = an_Adj & ( for o being Element of the carrier' of C st o <> * & o <> non_op holds the Arity of C . o in {a_Term} * ) & the carrier' of C = {*,non_op} ) thus the ResultSort of C . non_op = an_Adj by FUNCT_4:63; ::_thesis: ( ( for o being Element of the carrier' of C st o <> * & o <> non_op holds the Arity of C . o in {a_Term} * ) & the carrier' of C = {*,non_op} ) thus ( ( for o being Element of the carrier' of C st o <> * & o <> non_op holds the Arity of C . o in {a_Term} * ) & the carrier' of C = {*,non_op} ) by TARSKI:def_2; ::_thesis: verum end; correctness uniqueness for b1, b2 being strict Signature st b1 is constructor & the carrier' of b1 = {*,non_op} & b2 is constructor & the carrier' of b2 = {*,non_op} holds b1 = b2; proof let C1, C2 be strict Signature; ::_thesis: ( C1 is constructor & the carrier' of C1 = {*,non_op} & C2 is constructor & the carrier' of C2 = {*,non_op} implies C1 = C2 ) assume that A1: C1 is constructor and A2: the carrier' of C1 = {*,non_op} and A3: C2 is constructor and A4: the carrier' of C2 = {*,non_op} ; ::_thesis: C1 = C2 set A = {a_Type,an_Adj,a_Term}; A5: the carrier of C1 = {a_Type,an_Adj,a_Term} by A1, Def9; A6: the carrier of C2 = {a_Type,an_Adj,a_Term} by A3, Def9; A7: the Arity of C1 . * = <*an_Adj,a_Type*> by A1, Def9; A8: the Arity of C2 . * = <*an_Adj,a_Type*> by A3, Def9; A9: the Arity of C1 . non_op = <*an_Adj*> by A1, Def9; A10: the Arity of C2 . non_op = <*an_Adj*> by A3, Def9; A11: the ResultSort of C1 . * = a_Type by A1, Def9; A12: the ResultSort of C2 . * = a_Type by A3, Def9; A13: the ResultSort of C1 . non_op = an_Adj by A1, Def9; A14: the ResultSort of C2 . non_op = an_Adj by A3, Def9; A15: dom the Arity of C1 = {*,non_op} by A2, FUNCT_2:def_1; A16: dom the Arity of C2 = {*,non_op} by A4, FUNCT_2:def_1; A17: the Arity of C1 = (*,non_op) --> (<*an_Adj,a_Type*>,<*an_Adj*>) by A7, A9, A15, FUNCT_4:66; A18: the Arity of C2 = (*,non_op) --> (<*an_Adj,a_Type*>,<*an_Adj*>) by A8, A10, A16, FUNCT_4:66; A19: dom the ResultSort of C1 = {*,non_op} by A1, A2, FUNCT_2:def_1; A20: dom the ResultSort of C2 = {*,non_op} by A3, A4, FUNCT_2:def_1; the ResultSort of C1 = (*,non_op) --> (a_Type,an_Adj) by A11, A13, A19, FUNCT_4:66; hence C1 = C2 by A2, A4, A5, A6, A12, A14, A17, A18, A20, FUNCT_4:66; ::_thesis: verum end; end; :: deftheorem Def10 defines MinConstrSign ABCMIZ_1:def_10_:_ for b1 being strict Signature holds ( b1 = MinConstrSign iff ( b1 is constructor & the carrier' of b1 = {*,non_op} ) ); registration cluster MinConstrSign -> strict constructor ; coherence MinConstrSign is constructor by Def10; end; registration cluster strict V259() constructor for ManySortedSign ; existence ex b1 being Signature st ( b1 is constructor & b1 is strict ) proof take MinConstrSign ; ::_thesis: ( MinConstrSign is constructor & MinConstrSign is strict ) thus ( MinConstrSign is constructor & MinConstrSign is strict ) ; ::_thesis: verum end; end; definition mode ConstructorSignature is constructor Signature; end; definition let C be ConstructorSignature; let o be OperSymbol of C; attro is constructor means :Def11: :: ABCMIZ_1:def 11 ( o <> * & o <> non_op ); end; :: deftheorem Def11 defines constructor ABCMIZ_1:def_11_:_ for C being ConstructorSignature for o being OperSymbol of C holds ( o is constructor iff ( o <> * & o <> non_op ) ); theorem :: ABCMIZ_1:37 for S being ConstructorSignature for o being OperSymbol of S st o is constructor holds the_arity_of o = (len (the_arity_of o)) |-> a_Term proof let S be ConstructorSignature; ::_thesis: for o being OperSymbol of S st o is constructor holds the_arity_of o = (len (the_arity_of o)) |-> a_Term let o be OperSymbol of S; ::_thesis: ( o is constructor implies the_arity_of o = (len (the_arity_of o)) |-> a_Term ) assume that A1: o <> * and A2: o <> non_op ; :: according to ABCMIZ_1:def_11 ::_thesis: the_arity_of o = (len (the_arity_of o)) |-> a_Term reconsider t = a_Term as Element of {a_Term} by TARSKI:def_1; A3: len ((len (the_arity_of o)) |-> a_Term) = len (the_arity_of o) by CARD_1:def_7; A4: the_arity_of o in {a_Term} * by A1, A2, Def9; (len (the_arity_of o)) |-> t in {a_Term} * by FINSEQ_1:def_11; hence the_arity_of o = (len (the_arity_of o)) |-> a_Term by A3, A4, Th6; ::_thesis: verum end; definition let C be non empty non void Signature; attrC is initialized means :Def12: :: ABCMIZ_1:def 12 ex m, a being OperSymbol of C st ( the_result_sort_of m = a_Type & the_arity_of m = {} & the_result_sort_of a = an_Adj & the_arity_of a = {} ); end; :: deftheorem Def12 defines initialized ABCMIZ_1:def_12_:_ for C being non empty non void Signature holds ( C is initialized iff ex m, a being OperSymbol of C st ( the_result_sort_of m = a_Type & the_arity_of m = {} & the_result_sort_of a = an_Adj & the_arity_of a = {} ) ); definition let C be ConstructorSignature; A1: the carrier of C = {a_Type,an_Adj,a_Term} by Def9; func a_Type C -> SortSymbol of C equals :: ABCMIZ_1:def 13 a_Type ; coherence a_Type is SortSymbol of C by A1, ENUMSET1:def_1; func an_Adj C -> SortSymbol of C equals :: ABCMIZ_1:def 14 an_Adj ; coherence an_Adj is SortSymbol of C by A1, ENUMSET1:def_1; func a_Term C -> SortSymbol of C equals :: ABCMIZ_1:def 15 a_Term ; coherence a_Term is SortSymbol of C by A1, ENUMSET1:def_1; A2: {*,non_op} c= the carrier' of C by Def9; A3: * in {*,non_op} by TARSKI:def_2; A4: non_op in {*,non_op} by TARSKI:def_2; func non_op C -> OperSymbol of C equals :: ABCMIZ_1:def 16 non_op ; coherence non_op is OperSymbol of C by A2, A4; func ast C -> OperSymbol of C equals :: ABCMIZ_1:def 17 * ; coherence * is OperSymbol of C by A2, A3; end; :: deftheorem defines a_Type ABCMIZ_1:def_13_:_ for C being ConstructorSignature holds a_Type C = a_Type ; :: deftheorem defines an_Adj ABCMIZ_1:def_14_:_ for C being ConstructorSignature holds an_Adj C = an_Adj ; :: deftheorem defines a_Term ABCMIZ_1:def_15_:_ for C being ConstructorSignature holds a_Term C = a_Term ; :: deftheorem defines non_op ABCMIZ_1:def_16_:_ for C being ConstructorSignature holds non_op C = non_op ; :: deftheorem defines ast ABCMIZ_1:def_17_:_ for C being ConstructorSignature holds ast C = * ; theorem :: ABCMIZ_1:38 for C being ConstructorSignature holds ( the_arity_of (non_op C) = <*(an_Adj C)*> & the_result_sort_of (non_op C) = an_Adj C & the_arity_of (ast C) = <*(an_Adj C),(a_Type C)*> & the_result_sort_of (ast C) = a_Type C ) by Def9; definition func Modes -> set equals :: ABCMIZ_1:def 18 [:{a_Type},[:QuasiLoci,NAT:]:]; correctness coherence [:{a_Type},[:QuasiLoci,NAT:]:] is set ; ; func Attrs -> set equals :: ABCMIZ_1:def 19 [:{an_Adj},[:QuasiLoci,NAT:]:]; correctness coherence [:{an_Adj},[:QuasiLoci,NAT:]:] is set ; ; func Funcs -> set equals :: ABCMIZ_1:def 20 [:{a_Term},[:QuasiLoci,NAT:]:]; correctness coherence [:{a_Term},[:QuasiLoci,NAT:]:] is set ; ; end; :: deftheorem defines Modes ABCMIZ_1:def_18_:_ Modes = [:{a_Type},[:QuasiLoci,NAT:]:]; :: deftheorem defines Attrs ABCMIZ_1:def_19_:_ Attrs = [:{an_Adj},[:QuasiLoci,NAT:]:]; :: deftheorem defines Funcs ABCMIZ_1:def_20_:_ Funcs = [:{a_Term},[:QuasiLoci,NAT:]:]; registration cluster Modes -> non empty ; coherence not Modes is empty ; cluster Attrs -> non empty ; coherence not Attrs is empty ; cluster Funcs -> non empty ; coherence not Funcs is empty ; end; definition func Constructors -> non empty set equals :: ABCMIZ_1:def 21 (Modes \/ Attrs) \/ Funcs; coherence (Modes \/ Attrs) \/ Funcs is non empty set ; end; :: deftheorem defines Constructors ABCMIZ_1:def_21_:_ Constructors = (Modes \/ Attrs) \/ Funcs; theorem :: ABCMIZ_1:39 {*,non_op} misses Constructors proof assume not {*,non_op} misses Constructors ; ::_thesis: contradiction then consider x being set such that A1: x in {*,non_op} and A2: x in Constructors by XBOOLE_0:3; ( x in Modes \/ Attrs or x in Funcs ) by A2, XBOOLE_0:def_3; then ( x in Modes or x in Attrs or x in Funcs ) by XBOOLE_0:def_3; then consider Y, Z being set such that A3: x in [:Y,Z:] ; A4: ex y, z being set st ( y in Y & z in Z & [y,z] = x ) by A3, ZFMISC_1:def_2; ( x = * or x = non_op ) by A1, TARSKI:def_2; then ( the_rank_of x = 0 or the_rank_of x = 1 ) by CLASSES1:73; then the_rank_of x c= 1 ; then the_rank_of x in succ (succ {}) by ORDINAL1:6, ORDINAL1:12; then x in Rank (succ (succ {})) by CLASSES1:66; hence contradiction by A4, CLASSES1:29, CLASSES1:45; ::_thesis: verum end; definition let x be Element of [:QuasiLoci,NAT:]; :: original: vars redefine funcx `1 -> quasi-loci; coherence vars x is quasi-loci by MCART_1:10; :: original: the_base_of redefine funcx `2 -> Element of NAT ; coherence the_base_of is Element of NAT by MCART_1:10; end; notation let c be Element of Constructors ; synonym kind_of c for c `1 ; end; definition let c be Element of Constructors ; :: original: vars redefine func kind_of c -> Element of {a_Type,an_Adj,a_Term}; coherence vars c is Element of {a_Type,an_Adj,a_Term} proof ( c in Modes \/ Attrs or c in Funcs ) by XBOOLE_0:def_3; then ( c in Modes or c in Attrs or c in Funcs ) by XBOOLE_0:def_3; then ( c `1 in {a_Type} or c `1 in {an_Adj} or c `1 in {a_Term} ) by MCART_1:10; then ( c `1 = a_Type or c `1 = an_Adj or c `1 = a_Term ) by TARSKI:def_1; hence vars c is Element of {a_Type,an_Adj,a_Term} by ENUMSET1:def_1; ::_thesis: verum end; :: original: the_base_of redefine funcc `2 -> Element of [:QuasiLoci,NAT:]; coherence the_base_of is Element of [:QuasiLoci,NAT:] proof ( c in Modes \/ Attrs or c in Funcs ) by XBOOLE_0:def_3; then ( c in Modes or c in Attrs or c in Funcs ) by XBOOLE_0:def_3; hence the_base_of is Element of [:QuasiLoci,NAT:] by MCART_1:10; ::_thesis: verum end; end; definition let c be Element of Constructors ; func loci_of c -> quasi-loci equals :: ABCMIZ_1:def 22 (c `2) `1 ; coherence (c `2) `1 is quasi-loci ; func index_of c -> Nat equals :: ABCMIZ_1:def 23 (c `2) `2 ; coherence (c `2) `2 is Nat ; end; :: deftheorem defines loci_of ABCMIZ_1:def_22_:_ for c being Element of Constructors holds loci_of c = (c `2) `1 ; :: deftheorem defines index_of ABCMIZ_1:def_23_:_ for c being Element of Constructors holds index_of c = (c `2) `2 ; theorem :: ABCMIZ_1:40 for c being Element of Constructors holds ( ( kind_of c = a_Type implies c in Modes ) & ( c in Modes implies kind_of c = a_Type ) & ( kind_of c = an_Adj implies c in Attrs ) & ( c in Attrs implies kind_of c = an_Adj ) & ( kind_of c = a_Term implies c in Funcs ) & ( c in Funcs implies kind_of c = a_Term ) ) proof let x be Element of Constructors ; ::_thesis: ( ( kind_of x = a_Type implies x in Modes ) & ( x in Modes implies kind_of x = a_Type ) & ( kind_of x = an_Adj implies x in Attrs ) & ( x in Attrs implies kind_of x = an_Adj ) & ( kind_of x = a_Term implies x in Funcs ) & ( x in Funcs implies kind_of x = a_Term ) ) A1: ( x in Modes \/ Attrs or x in Funcs ) by XBOOLE_0:def_3; A2: ( x in Modes implies x `1 in {a_Type} ) by MCART_1:10; A3: ( x in Attrs implies x `1 in {an_Adj} ) by MCART_1:10; ( x in Funcs implies x `1 in {a_Term} ) by MCART_1:10; hence ( ( kind_of x = a_Type implies x in Modes ) & ( x in Modes implies kind_of x = a_Type ) & ( kind_of x = an_Adj implies x in Attrs ) & ( x in Attrs implies kind_of x = an_Adj ) & ( kind_of x = a_Term implies x in Funcs ) & ( x in Funcs implies kind_of x = a_Term ) ) by A1, A2, A3, TARSKI:def_1, XBOOLE_0:def_3; ::_thesis: verum end; definition func MaxConstrSign -> strict ConstructorSignature means :Def24: :: ABCMIZ_1:def 24 ( the carrier' of it = {*,non_op} \/ Constructors & ( for o being OperSymbol of it st o is constructor holds ( the ResultSort of it . o = o `1 & card ( the Arity of it . o) = card ((o `2) `1) ) ) ); existence ex b1 being strict ConstructorSignature st ( the carrier' of b1 = {*,non_op} \/ Constructors & ( for o being OperSymbol of b1 st o is constructor holds ( the ResultSort of b1 . o = o `1 & card ( the Arity of b1 . o) = card ((o `2) `1) ) ) ) proof set S = {a_Type,an_Adj,a_Term}; set O = {*,non_op} \/ Constructors; deffunc H2( Element of Constructors ) -> set = (len (loci_of $1)) |-> a_Term; consider f being ManySortedSet of Constructors such that A1: for c being Element of Constructors holds f . c = H2(c) from PBOOLE:sch_5(); deffunc H3( Element of Constructors ) -> Element of {a_Type,an_Adj,a_Term} = kind_of $1; consider g being ManySortedSet of Constructors such that A2: for c being Element of Constructors holds g . c = H3(c) from PBOOLE:sch_5(); reconsider t = a_Type , a = an_Adj , tr = a_Term as Element of {a_Type,an_Adj,a_Term} by ENUMSET1:def_1; reconsider aa = <*a*> as Element of {a_Type,an_Adj,a_Term} * ; set A = f +* ((*,non_op) --> (<*a,t*>,aa)); set R = g +* ((*,non_op) --> (t,a)); A3: dom ((*,non_op) --> (<*a,t*>,aa)) = {*,non_op} by FUNCT_4:62; A4: dom ((*,non_op) --> (t,a)) = {*,non_op} by FUNCT_4:62; A5: dom f = Constructors by PARTFUN1:def_2; A6: dom g = Constructors by PARTFUN1:def_2; A7: dom (f +* ((*,non_op) --> (<*a,t*>,aa))) = {*,non_op} \/ Constructors by A3, A5, FUNCT_4:def_1; A8: dom (g +* ((*,non_op) --> (t,a))) = {*,non_op} \/ Constructors by A4, A6, FUNCT_4:def_1; rng f c= {a_Type,an_Adj,a_Term} * proof let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in rng f or y in {a_Type,an_Adj,a_Term} * ) assume y in rng f ; ::_thesis: y in {a_Type,an_Adj,a_Term} * then consider x being set such that A9: x in Constructors and A10: y = f . x by A5, FUNCT_1:def_3; reconsider x = x as Element of Constructors by A9; y = (len (loci_of x)) |-> tr by A1, A10; hence y in {a_Type,an_Adj,a_Term} * by FINSEQ_1:def_11; ::_thesis: verum end; then A11: (rng f) \/ (rng ((*,non_op) --> (<*a,t*>,aa))) c= ({a_Type,an_Adj,a_Term} *) \/ ({a_Type,an_Adj,a_Term} *) by XBOOLE_1:13; rng g c= {a_Type,an_Adj,a_Term} proof let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in rng g or y in {a_Type,an_Adj,a_Term} ) assume y in rng g ; ::_thesis: y in {a_Type,an_Adj,a_Term} then consider x being set such that A12: x in Constructors and A13: y = g . x by A6, FUNCT_1:def_3; reconsider x = x as Element of Constructors by A12; y = kind_of x by A2, A13; hence y in {a_Type,an_Adj,a_Term} ; ::_thesis: verum end; then A14: (rng g) \/ (rng ((*,non_op) --> (t,a))) c= {a_Type,an_Adj,a_Term} \/ {a_Type,an_Adj,a_Term} by XBOOLE_1:13; rng (f +* ((*,non_op) --> (<*a,t*>,aa))) c= (rng f) \/ (rng ((*,non_op) --> (<*a,t*>,aa))) by FUNCT_4:17; then reconsider A = f +* ((*,non_op) --> (<*a,t*>,aa)) as Function of ({*,non_op} \/ Constructors),({a_Type,an_Adj,a_Term} *) by A7, A11, FUNCT_2:2, XBOOLE_1:1; rng (g +* ((*,non_op) --> (t,a))) c= (rng g) \/ (rng ((*,non_op) --> (t,a))) by FUNCT_4:17; then reconsider R = g +* ((*,non_op) --> (t,a)) as Function of ({*,non_op} \/ Constructors),{a_Type,an_Adj,a_Term} by A8, A14, FUNCT_2:2, XBOOLE_1:1; reconsider Max = ManySortedSign(# {a_Type,an_Adj,a_Term},({*,non_op} \/ Constructors),A,R #) as non empty non void strict Signature ; Max is constructor proof thus the carrier of Max = {a_Type,an_Adj,a_Term} ; :: according to ABCMIZ_1:def_9 ::_thesis: ( {*,non_op} c= the carrier' of Max & the Arity of Max . * = <*an_Adj,a_Type*> & the Arity of Max . non_op = <*an_Adj*> & the ResultSort of Max . * = a_Type & the ResultSort of Max . non_op = an_Adj & ( for o being Element of the carrier' of Max st o <> * & o <> non_op holds the Arity of Max . o in {a_Term} * ) ) thus {*,non_op} c= the carrier' of Max by XBOOLE_1:7; ::_thesis: ( the Arity of Max . * = <*an_Adj,a_Type*> & the Arity of Max . non_op = <*an_Adj*> & the ResultSort of Max . * = a_Type & the ResultSort of Max . non_op = an_Adj & ( for o being Element of the carrier' of Max st o <> * & o <> non_op holds the Arity of Max . o in {a_Term} * ) ) A15: * in {*,non_op} by TARSKI:def_2; A16: non_op in {*,non_op} by TARSKI:def_2; thus the Arity of Max . * = ((*,non_op) --> (<*a,t*>,aa)) . * by A3, A15, FUNCT_4:13 .= <*an_Adj,a_Type*> by FUNCT_4:63 ; ::_thesis: ( the Arity of Max . non_op = <*an_Adj*> & the ResultSort of Max . * = a_Type & the ResultSort of Max . non_op = an_Adj & ( for o being Element of the carrier' of Max st o <> * & o <> non_op holds the Arity of Max . o in {a_Term} * ) ) thus the Arity of Max . non_op = ((*,non_op) --> (<*a,t*>,aa)) . non_op by A3, A16, FUNCT_4:13 .= <*an_Adj*> by FUNCT_4:63 ; ::_thesis: ( the ResultSort of Max . * = a_Type & the ResultSort of Max . non_op = an_Adj & ( for o being Element of the carrier' of Max st o <> * & o <> non_op holds the Arity of Max . o in {a_Term} * ) ) thus the ResultSort of Max . * = ((*,non_op) --> (t,a)) . * by A4, A15, FUNCT_4:13 .= a_Type by FUNCT_4:63 ; ::_thesis: ( the ResultSort of Max . non_op = an_Adj & ( for o being Element of the carrier' of Max st o <> * & o <> non_op holds the Arity of Max . o in {a_Term} * ) ) thus the ResultSort of Max . non_op = ((*,non_op) --> (t,a)) . non_op by A4, A16, FUNCT_4:13 .= an_Adj by FUNCT_4:63 ; ::_thesis: for o being Element of the carrier' of Max st o <> * & o <> non_op holds the Arity of Max . o in {a_Term} * let o be Element of the carrier' of Max; ::_thesis: ( o <> * & o <> non_op implies the Arity of Max . o in {a_Term} * ) assume that A17: o <> * and A18: o <> non_op ; ::_thesis: the Arity of Max . o in {a_Term} * A19: not o in {*,non_op} by A17, A18, TARSKI:def_2; then reconsider c = o as Element of Constructors by XBOOLE_0:def_3; reconsider tr = tr as Element of {a_Term} by TARSKI:def_1; the Arity of Max . o = f . c by A3, A5, A19, FUNCT_4:def_1 .= (len (loci_of c)) |-> tr by A1 ; hence the Arity of Max . o in {a_Term} * by FINSEQ_1:def_11; ::_thesis: verum end; then reconsider Max = Max as strict ConstructorSignature ; take Max ; ::_thesis: ( the carrier' of Max = {*,non_op} \/ Constructors & ( for o being OperSymbol of Max st o is constructor holds ( the ResultSort of Max . o = o `1 & card ( the Arity of Max . o) = card ((o `2) `1) ) ) ) thus the carrier' of Max = {*,non_op} \/ Constructors ; ::_thesis: for o being OperSymbol of Max st o is constructor holds ( the ResultSort of Max . o = o `1 & card ( the Arity of Max . o) = card ((o `2) `1) ) let o be OperSymbol of Max; ::_thesis: ( o is constructor implies ( the ResultSort of Max . o = o `1 & card ( the Arity of Max . o) = card ((o `2) `1) ) ) assume that A20: o <> * and A21: o <> non_op ; :: according to ABCMIZ_1:def_11 ::_thesis: ( the ResultSort of Max . o = o `1 & card ( the Arity of Max . o) = card ((o `2) `1) ) A22: not o in {*,non_op} by A20, A21, TARSKI:def_2; then reconsider c = o as Element of Constructors by XBOOLE_0:def_3; thus the ResultSort of Max . o = g . c by A4, A6, A22, FUNCT_4:def_1 .= o `1 by A2 ; ::_thesis: card ( the Arity of Max . o) = card ((o `2) `1) thus card ( the Arity of Max . o) = card (f . c) by A3, A5, A22, FUNCT_4:def_1 .= card H2(c) by A1 .= card ((o `2) `1) by CARD_1:def_7 ; ::_thesis: verum end; uniqueness for b1, b2 being strict ConstructorSignature st the carrier' of b1 = {*,non_op} \/ Constructors & ( for o being OperSymbol of b1 st o is constructor holds ( the ResultSort of b1 . o = o `1 & card ( the Arity of b1 . o) = card ((o `2) `1) ) ) & the carrier' of b2 = {*,non_op} \/ Constructors & ( for o being OperSymbol of b2 st o is constructor holds ( the ResultSort of b2 . o = o `1 & card ( the Arity of b2 . o) = card ((o `2) `1) ) ) holds b1 = b2 proof let it1, it2 be strict ConstructorSignature; ::_thesis: ( the carrier' of it1 = {*,non_op} \/ Constructors & ( for o being OperSymbol of it1 st o is constructor holds ( the ResultSort of it1 . o = o `1 & card ( the Arity of it1 . o) = card ((o `2) `1) ) ) & the carrier' of it2 = {*,non_op} \/ Constructors & ( for o being OperSymbol of it2 st o is constructor holds ( the ResultSort of it2 . o = o `1 & card ( the Arity of it2 . o) = card ((o `2) `1) ) ) implies it1 = it2 ) assume that A23: the carrier' of it1 = {*,non_op} \/ Constructors and A24: for o being OperSymbol of it1 st o is constructor holds ( the ResultSort of it1 . o = o `1 & card ( the Arity of it1 . o) = card ((o `2) `1) ) and A25: the carrier' of it2 = {*,non_op} \/ Constructors and A26: for o being OperSymbol of it2 st o is constructor holds ( the ResultSort of it2 . o = o `1 & card ( the Arity of it2 . o) = card ((o `2) `1) ) ; ::_thesis: it1 = it2 set S = {a_Type,an_Adj,a_Term}; A27: the carrier of it1 = {a_Type,an_Adj,a_Term} by Def9; A28: the carrier of it2 = {a_Type,an_Adj,a_Term} by Def9; A29: now__::_thesis:_for_c_being_Element_of_Constructors_st_c_<>_*_&_c_<>_non_op_holds_ the_Arity_of_it1_._c_=_the_Arity_of_it2_._c let c be Element of Constructors ; ::_thesis: ( c <> * & c <> non_op implies the Arity of it1 . c = the Arity of it2 . c ) reconsider o1 = c as OperSymbol of it1 by A23, XBOOLE_0:def_3; reconsider o2 = o1 as OperSymbol of it2 by A23, A25; assume that A30: c <> * and A31: c <> non_op ; ::_thesis: the Arity of it1 . c = the Arity of it2 . c A32: o1 is constructor by A30, A31, Def11; A33: o2 is constructor by A30, A31, Def11; A34: card ( the Arity of it1 . o1) = card ((c `2) `1) by A24, A32; A35: card ( the Arity of it2 . o2) = card ((c `2) `1) by A26, A33; A36: the Arity of it1 . o1 in {a_Term} * by A30, A31, Def9; the Arity of it2 . o2 in {a_Term} * by A30, A31, Def9; then reconsider p1 = the Arity of it1 . o1, p2 = the Arity of it2 . o2 as FinSequence of {a_Term} by A36, FINSEQ_1:def_11; A37: dom p1 = Seg (len p1) by FINSEQ_1:def_3; A38: dom p2 = Seg (len p2) by FINSEQ_1:def_3; now__::_thesis:_for_i_being_Nat_st_i_in_dom_p1_holds_ p1_._i_=_p2_._i let i be Nat; ::_thesis: ( i in dom p1 implies p1 . i = p2 . i ) assume A39: i in dom p1 ; ::_thesis: p1 . i = p2 . i then A40: p1 . i in rng p1 by FUNCT_1:def_3; A41: p2 . i in rng p2 by A34, A35, A37, A38, A39, FUNCT_1:def_3; p1 . i = a_Term by A40, TARSKI:def_1; hence p1 . i = p2 . i by A41, TARSKI:def_1; ::_thesis: verum end; hence the Arity of it1 . c = the Arity of it2 . c by A34, A35, A37, A38, FINSEQ_1:13; ::_thesis: verum end; now__::_thesis:_for_o_being_OperSymbol_of_it1_holds_the_Arity_of_it1_._o_=_the_Arity_of_it2_._o let o be OperSymbol of it1; ::_thesis: the Arity of it1 . o = the Arity of it2 . o ( o in {*,non_op} or not o in {*,non_op} ) ; then ( o = * or o = non_op or ( o in Constructors & o <> * & o <> non_op ) ) by A23, TARSKI:def_2, XBOOLE_0:def_3; then ( ( the Arity of it1 . o = <*an_Adj,a_Type*> & the Arity of it2 . o = <*an_Adj,a_Type*> ) or ( the Arity of it1 . o = <*an_Adj*> & the Arity of it2 . o = <*an_Adj*> ) or the Arity of it1 . o = the Arity of it2 . o ) by A29, Def9; hence the Arity of it1 . o = the Arity of it2 . o ; ::_thesis: verum end; then A42: the Arity of it1 = the Arity of it2 by A23, A25, A27, A28, FUNCT_2:63; now__::_thesis:_for_o_being_OperSymbol_of_it1_holds_the_ResultSort_of_it1_._o_=_the_ResultSort_of_it2_._o let o be OperSymbol of it1; ::_thesis: the ResultSort of it1 . o = the ResultSort of it2 . o reconsider o9 = o as OperSymbol of it2 by A23, A25; ( not o in {*,non_op} or o in {*,non_op} ) ; then ( o = * or o = non_op or ( o in Constructors & o is constructor & o9 is constructor ) ) by A23, Def11, TARSKI:def_2, XBOOLE_0:def_3; then ( ( the ResultSort of it1 . o = a_Type & the ResultSort of it2 . o = a_Type ) or ( the ResultSort of it1 . o = an_Adj & the ResultSort of it2 . o = an_Adj ) or ( the ResultSort of it1 . o = o `1 & the ResultSort of it2 . o = o `1 ) ) by A24, A26, Def9; hence the ResultSort of it1 . o = the ResultSort of it2 . o ; ::_thesis: verum end; hence it1 = it2 by A23, A25, A27, A28, A42, FUNCT_2:63; ::_thesis: verum end; end; :: deftheorem Def24 defines MaxConstrSign ABCMIZ_1:def_24_:_ for b1 being strict ConstructorSignature holds ( b1 = MaxConstrSign iff ( the carrier' of b1 = {*,non_op} \/ Constructors & ( for o being OperSymbol of b1 st o is constructor holds ( the ResultSort of b1 . o = o `1 & card ( the Arity of b1 . o) = card ((o `2) `1) ) ) ) ); registration cluster MinConstrSign -> strict non initialized ; correctness coherence not MinConstrSign is initialized ; proof given m, a being OperSymbol of MinConstrSign such that the_result_sort_of m = a_Type and A1: the_arity_of m = {} and the_result_sort_of a = an_Adj and the_arity_of a = {} ; :: according to ABCMIZ_1:def_12 ::_thesis: contradiction the carrier' of MinConstrSign = {*,non_op} by Def10; then ( m = * or m = non_op ) by TARSKI:def_2; hence contradiction by A1, Def9; ::_thesis: verum end; cluster MaxConstrSign -> strict initialized ; correctness coherence MaxConstrSign is initialized ; proof set m = [a_Type,[{},0]]; set a = [an_Adj,[{},0]]; A2: a_Type in {a_Type} by TARSKI:def_1; A3: an_Adj in {an_Adj} by TARSKI:def_1; A4: [(<*> Vars),0] in [:QuasiLoci,NAT:] by Th29, ZFMISC_1:def_2; then A5: [a_Type,[{},0]] in Modes by A2, ZFMISC_1:def_2; A6: [an_Adj,[{},0]] in Attrs by A3, A4, ZFMISC_1:def_2; A7: [a_Type,[{},0]] in Modes \/ Attrs by A5, XBOOLE_0:def_3; A8: [an_Adj,[{},0]] in Modes \/ Attrs by A6, XBOOLE_0:def_3; A9: [a_Type,[{},0]] in Constructors by A7, XBOOLE_0:def_3; A10: [an_Adj,[{},0]] in Constructors by A8, XBOOLE_0:def_3; the carrier' of MaxConstrSign = {*,non_op} \/ Constructors by Def24; then reconsider m = [a_Type,[{},0]], a = [an_Adj,[{},0]] as OperSymbol of MaxConstrSign by A9, A10, XBOOLE_0:def_3; A11: m is constructor by Def11; A12: a is constructor by Def11; take m ; :: according to ABCMIZ_1:def_12 ::_thesis: ex a being OperSymbol of MaxConstrSign st ( the_result_sort_of m = a_Type & the_arity_of m = {} & the_result_sort_of a = an_Adj & the_arity_of a = {} ) take a ; ::_thesis: ( the_result_sort_of m = a_Type & the_arity_of m = {} & the_result_sort_of a = an_Adj & the_arity_of a = {} ) thus the_result_sort_of m = m `1 by A11, Def24 .= a_Type by MCART_1:7 ; ::_thesis: ( the_arity_of m = {} & the_result_sort_of a = an_Adj & the_arity_of a = {} ) len (the_arity_of m) = card ((m `2) `1) by A11, Def24 .= card ([{},0] `1) by MCART_1:7 .= 0 ; hence the_arity_of m = {} ; ::_thesis: ( the_result_sort_of a = an_Adj & the_arity_of a = {} ) thus the_result_sort_of a = a `1 by A12, Def24 .= an_Adj by MCART_1:7 ; ::_thesis: the_arity_of a = {} len (the_arity_of a) = card ((a `2) `1) by A12, Def24 .= card ([{},0] `1) by MCART_1:7 .= 0 ; hence the_arity_of a = {} ; ::_thesis: verum end; end; registration cluster non empty non void V58() strict V259() constructor initialized for ManySortedSign ; correctness existence ex b1 being ConstructorSignature st ( b1 is initialized & b1 is strict ); proof take MaxConstrSign ; ::_thesis: ( MaxConstrSign is initialized & MaxConstrSign is strict ) thus ( MaxConstrSign is initialized & MaxConstrSign is strict ) ; ::_thesis: verum end; end; registration let C be initialized ConstructorSignature; cluster constructor for Element of the carrier' of C; existence ex b1 being OperSymbol of C st b1 is constructor proof consider m, a being OperSymbol of C such that A1: the_result_sort_of m = a_Type and A2: the_arity_of m = {} and the_result_sort_of a = an_Adj and the_arity_of a = {} by Def12; take m ; ::_thesis: m is constructor thus m <> * by A2, Def9; :: according to ABCMIZ_1:def_11 ::_thesis: m <> non_op thus m <> non_op by A1, Def9; ::_thesis: verum end; end; begin definition let C be ConstructorSignature; A1: the carrier of C = {a_Type,an_Adj,a_Term} by Def9; func MSVars C -> ManySortedSet of the carrier of C means :Def25: :: ABCMIZ_1:def 25 ( it . a_Type = {} & it . an_Adj = {} & it . a_Term = Vars ); uniqueness for b1, b2 being ManySortedSet of the carrier of C st b1 . a_Type = {} & b1 . an_Adj = {} & b1 . a_Term = Vars & b2 . a_Type = {} & b2 . an_Adj = {} & b2 . a_Term = Vars holds b1 = b2 proof let V1, V2 be ManySortedSet of the carrier of C; ::_thesis: ( V1 . a_Type = {} & V1 . an_Adj = {} & V1 . a_Term = Vars & V2 . a_Type = {} & V2 . an_Adj = {} & V2 . a_Term = Vars implies V1 = V2 ) assume that A2: V1 . a_Type = {} and A3: V1 . an_Adj = {} and A4: V1 . a_Term = Vars and A5: V2 . a_Type = {} and A6: V2 . an_Adj = {} and A7: V2 . a_Term = Vars ; ::_thesis: V1 = V2 now__::_thesis:_for_x_being_set_st_x_in_the_carrier_of_C_holds_ V1_._x_=_V2_._x let x be set ; ::_thesis: ( x in the carrier of C implies V1 . x = V2 . x ) assume x in the carrier of C ; ::_thesis: V1 . x = V2 . x then ( x = a_Type or x = an_Adj or x = a_Term ) by A1, ENUMSET1:def_1; hence V1 . x = V2 . x by A2, A3, A4, A5, A6, A7; ::_thesis: verum end; hence V1 = V2 by PBOOLE:3; ::_thesis: verum end; existence ex b1 being ManySortedSet of the carrier of C st ( b1 . a_Type = {} & b1 . an_Adj = {} & b1 . a_Term = Vars ) proof deffunc H2( set ) -> set = IFEQ ($1,a_Term,Vars,{}); consider V being ManySortedSet of the carrier of C such that A8: for x being set st x in the carrier of C holds V . x = H2(x) from PBOOLE:sch_4(); take V ; ::_thesis: ( V . a_Type = {} & V . an_Adj = {} & V . a_Term = Vars ) A9: IFEQ (a_Type,a_Term,Vars,{}) = {} by FUNCOP_1:def_8; A10: IFEQ (an_Adj,a_Term,Vars,{}) = {} by FUNCOP_1:def_8; A11: IFEQ (a_Term,a_Term,Vars,{}) = Vars by FUNCOP_1:def_8; A12: a_Type in the carrier of C by A1, ENUMSET1:def_1; A13: an_Adj in the carrier of C by A1, ENUMSET1:def_1; a_Term in the carrier of C by A1, ENUMSET1:def_1; hence ( V . a_Type = {} & V . an_Adj = {} & V . a_Term = Vars ) by A8, A9, A10, A11, A12, A13; ::_thesis: verum end; end; :: deftheorem Def25 defines MSVars ABCMIZ_1:def_25_:_ for C being ConstructorSignature for b2 being ManySortedSet of the carrier of C holds ( b2 = MSVars C iff ( b2 . a_Type = {} & b2 . an_Adj = {} & b2 . a_Term = Vars ) ); registration let C be ConstructorSignature; cluster MSVars C -> V9() ; coherence not MSVars C is empty-yielding proof take a_Term ; :: according to PBOOLE:def_12 ::_thesis: ( a_Term in the carrier of C & not (MSVars C) . a_Term is empty ) the carrier of C = {a_Type,an_Adj,a_Term} by Def9; hence a_Term in the carrier of C by ENUMSET1:def_1; ::_thesis: not (MSVars C) . a_Term is empty thus not (MSVars C) . a_Term is empty by Def25; ::_thesis: verum end; end; registration let C be initialized ConstructorSignature; cluster Free (C,(MSVars C)) -> non-empty ; correctness coherence Free (C,(MSVars C)) is non-empty ; proof set X = MSVars C; consider m, a being OperSymbol of C such that A1: the_result_sort_of m = a_Type and A2: the_arity_of m = {} and A3: the_result_sort_of a = an_Adj and A4: the_arity_of a = {} by Def12; A5: root-tree [m, the carrier of C] in the Sorts of (Free (C,(MSVars C))) . a_Type by A1, A2, MSAFREE3:5; A6: root-tree [a, the carrier of C] in the Sorts of (Free (C,(MSVars C))) . an_Adj by A3, A4, MSAFREE3:5; set x = the variable; A7: a_Term C = a_Term ; (MSVars C) . a_Term = Vars by Def25; then A8: root-tree [ the variable,a_Term] in the Sorts of (Free (C,(MSVars C))) . a_Term by A7, MSAFREE3:4; assume the Sorts of (Free (C,(MSVars C))) is V8() ; :: according to MSUALG_1:def_3 ::_thesis: contradiction then {} in rng the Sorts of (Free (C,(MSVars C))) by RELAT_1:def_9; then consider s being set such that A9: s in dom the Sorts of (Free (C,(MSVars C))) and A10: {} = the Sorts of (Free (C,(MSVars C))) . s by FUNCT_1:def_3; s in the carrier of C by A9; then s in {a_Type,an_Adj,a_Term} by Def9; hence contradiction by A5, A6, A8, A10, ENUMSET1:def_1; ::_thesis: verum end; end; definition let S be non void Signature; let X be V9() ManySortedSet of the carrier of S; let t be Element of (Free (S,X)); attrt is ground means :: ABCMIZ_1:def 26 Union (S variables_in t) = {} ; attrt is compound means :Def27: :: ABCMIZ_1:def 27 t . {} in [: the carrier' of S,{ the carrier of S}:]; end; :: deftheorem defines ground ABCMIZ_1:def_26_:_ for S being non void Signature for X being V9() ManySortedSet of the carrier of S for t being Element of (Free (S,X)) holds ( t is ground iff Union (S variables_in t) = {} ); :: deftheorem Def27 defines compound ABCMIZ_1:def_27_:_ for S being non void Signature for X being V9() ManySortedSet of the carrier of S for t being Element of (Free (S,X)) holds ( t is compound iff t . {} in [: the carrier' of S,{ the carrier of S}:] ); definition let C be initialized ConstructorSignature; mode expression of C is Element of (Free (C,(MSVars C))); end; definition let C be initialized ConstructorSignature; let s be SortSymbol of C; mode expression of C,s -> expression of C means :Def28: :: ABCMIZ_1:def 28 it in the Sorts of (Free (C,(MSVars C))) . s; existence ex b1 being expression of C st b1 in the Sorts of (Free (C,(MSVars C))) . s proof set t = the Element of the Sorts of (Free (C,(MSVars C))) . s; dom the Sorts of (Free (C,(MSVars C))) = the carrier of C by PARTFUN1:def_2; then the Element of the Sorts of (Free (C,(MSVars C))) . s in Union the Sorts of (Free (C,(MSVars C))) by CARD_5:2; hence ex b1 being expression of C st b1 in the Sorts of (Free (C,(MSVars C))) . s ; ::_thesis: verum end; end; :: deftheorem Def28 defines expression ABCMIZ_1:def_28_:_ for C being initialized ConstructorSignature for s being SortSymbol of C for b3 being expression of C holds ( b3 is expression of C,s iff b3 in the Sorts of (Free (C,(MSVars C))) . s ); theorem Th41: :: ABCMIZ_1:41 for z being set for C being initialized ConstructorSignature for s being SortSymbol of C holds ( z is expression of C,s iff z in the Sorts of (Free (C,(MSVars C))) . s ) proof let z be set ; ::_thesis: for C being initialized ConstructorSignature for s being SortSymbol of C holds ( z is expression of C,s iff z in the Sorts of (Free (C,(MSVars C))) . s ) let C be initialized ConstructorSignature; ::_thesis: for s being SortSymbol of C holds ( z is expression of C,s iff z in the Sorts of (Free (C,(MSVars C))) . s ) let s be SortSymbol of C; ::_thesis: ( z is expression of C,s iff z in the Sorts of (Free (C,(MSVars C))) . s ) A1: dom the Sorts of (Free (C,(MSVars C))) = the carrier of C by PARTFUN1:def_2; the Sorts of (Free (C,(MSVars C))) . s c= Union the Sorts of (Free (C,(MSVars C))) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in the Sorts of (Free (C,(MSVars C))) . s or x in Union the Sorts of (Free (C,(MSVars C))) ) thus ( not x in the Sorts of (Free (C,(MSVars C))) . s or x in Union the Sorts of (Free (C,(MSVars C))) ) by A1, CARD_5:2; ::_thesis: verum end; hence ( z is expression of C,s iff z in the Sorts of (Free (C,(MSVars C))) . s ) by Def28; ::_thesis: verum end; definition let C be initialized ConstructorSignature; let c be constructor OperSymbol of C; assume A1: len (the_arity_of c) = 0 ; funcc term -> expression of C equals :: ABCMIZ_1:def 29 [c, the carrier of C] -tree {}; coherence [c, the carrier of C] -tree {} is expression of C proof the_arity_of c = {} by A1; then A1: root-tree [c, the carrier of C] in the Sorts of (Free (C,(MSVars C))) . (the_result_sort_of c) by MSAFREE3:5; dom the Sorts of (Free (C,(MSVars C))) = the carrier of C by PARTFUN1:def_2; then root-tree [c, the carrier of C] in Union the Sorts of (Free (C,(MSVars C))) by A1, CARD_5:2; hence [c, the carrier of C] -tree {} is expression of C by TREES_4:20; ::_thesis: verum end; end; :: deftheorem defines term ABCMIZ_1:def_29_:_ for C being initialized ConstructorSignature for c being constructor OperSymbol of C st len (the_arity_of c) = 0 holds c term = [c, the carrier of C] -tree {}; theorem Th42: :: ABCMIZ_1:42 for C being initialized ConstructorSignature for o being OperSymbol of C st len (the_arity_of o) = 1 holds for a being expression of C st ex s being SortSymbol of C st ( s = (the_arity_of o) . 1 & a is expression of C,s ) holds [o, the carrier of C] -tree <*a*> is expression of C, the_result_sort_of o proof let C be initialized ConstructorSignature; ::_thesis: for o being OperSymbol of C st len (the_arity_of o) = 1 holds for a being expression of C st ex s being SortSymbol of C st ( s = (the_arity_of o) . 1 & a is expression of C,s ) holds [o, the carrier of C] -tree <*a*> is expression of C, the_result_sort_of o let o be OperSymbol of C; ::_thesis: ( len (the_arity_of o) = 1 implies for a being expression of C st ex s being SortSymbol of C st ( s = (the_arity_of o) . 1 & a is expression of C,s ) holds [o, the carrier of C] -tree <*a*> is expression of C, the_result_sort_of o ) assume A1: len (the_arity_of o) = 1 ; ::_thesis: for a being expression of C st ex s being SortSymbol of C st ( s = (the_arity_of o) . 1 & a is expression of C,s ) holds [o, the carrier of C] -tree <*a*> is expression of C, the_result_sort_of o set X = MSVars C; set Y = (MSVars C) \/ ( the carrier of C --> {0}); let a be expression of C; ::_thesis: ( ex s being SortSymbol of C st ( s = (the_arity_of o) . 1 & a is expression of C,s ) implies [o, the carrier of C] -tree <*a*> is expression of C, the_result_sort_of o ) given s being SortSymbol of C such that A2: s = (the_arity_of o) . 1 and A3: a is expression of C,s ; ::_thesis: [o, the carrier of C] -tree <*a*> is expression of C, the_result_sort_of o reconsider ta = a as Term of C,((MSVars C) \/ ( the carrier of C --> {0})) by MSAFREE3:8; A4: dom <*ta*> = Seg 1 by FINSEQ_1:38; A5: dom <*s*> = Seg 1 by FINSEQ_1:38; A6: the_arity_of o = <*s*> by A1, A2, FINSEQ_1:40; A7: the Sorts of (Free (C,(MSVars C))) = C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0}))) by MSAFREE3:24; now__::_thesis:_for_i_being_Nat_st_i_in_dom_<*ta*>_holds_ for_t_being_Term_of_C,((MSVars_C)_\/_(_the_carrier_of_C_-->_{0}))_st_t_=_<*ta*>_._i_holds_ the_sort_of_t_=_(the_arity_of_o)_._i let i be Nat; ::_thesis: ( i in dom <*ta*> implies for t being Term of C,((MSVars C) \/ ( the carrier of C --> {0})) st t = <*ta*> . i holds the_sort_of t = (the_arity_of o) . i ) assume i in dom <*ta*> ; ::_thesis: for t being Term of C,((MSVars C) \/ ( the carrier of C --> {0})) st t = <*ta*> . i holds the_sort_of t = (the_arity_of o) . i then A8: i = 1 by A4, FINSEQ_1:2, TARSKI:def_1; let t be Term of C,((MSVars C) \/ ( the carrier of C --> {0})); ::_thesis: ( t = <*ta*> . i implies the_sort_of t = (the_arity_of o) . i ) assume A9: t = <*ta*> . i ; ::_thesis: the_sort_of t = (the_arity_of o) . i A10: the Sorts of (Free (C,(MSVars C))) c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) by A7, PBOOLE:def_18; A11: t = a by A8, A9, FINSEQ_1:40; A12: the Sorts of (Free (C,(MSVars C))) . s c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . s by A10, PBOOLE:def_2; t in the Sorts of (Free (C,(MSVars C))) . s by A3, A11, Th41; hence the_sort_of t = (the_arity_of o) . i by A2, A8, A12, MSAFREE3:7; ::_thesis: verum end; then reconsider p = <*ta*> as ArgumentSeq of Sym (o,((MSVars C) \/ ( the carrier of C --> {0}))) by A4, A5, A6, MSATERM:25; A13: variables_in ((Sym (o,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p) c= MSVars C proof let s be set ; :: according to PBOOLE:def_2 ::_thesis: ( not s in the carrier of C or (variables_in ((Sym (o,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p)) . s c= (MSVars C) . s ) assume s in the carrier of C ; ::_thesis: (variables_in ((Sym (o,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p)) . s c= (MSVars C) . s then reconsider s9 = s as SortSymbol of C ; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in (variables_in ((Sym (o,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p)) . s or x in (MSVars C) . s ) assume x in (variables_in ((Sym (o,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p)) . s ; ::_thesis: x in (MSVars C) . s then consider t being DecoratedTree such that A14: t in rng p and A15: x in (C variables_in t) . s9 by MSAFREE3:11; A16: C variables_in a c= MSVars C by MSAFREE3:27; A17: rng p = {a} by FINSEQ_1:38; A18: (C variables_in a) . s9 c= (MSVars C) . s9 by A16, PBOOLE:def_2; t = a by A14, A17, TARSKI:def_1; hence x in (MSVars C) . s by A15, A18; ::_thesis: verum end; set s9 = the_result_sort_of o; A19: the_sort_of ((Sym (o,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p) = the_result_sort_of o by MSATERM:20; the Sorts of (Free (C,(MSVars C))) . (the_result_sort_of o) = { t where t is Term of C,((MSVars C) \/ ( the carrier of C --> {0})) : ( the_sort_of t = the_result_sort_of o & variables_in t c= MSVars C ) } by A7, MSAFREE3:def_5; then [o, the carrier of C] -tree <*a*> in the Sorts of (Free (C,(MSVars C))) . (the_result_sort_of o) by A13, A19; hence [o, the carrier of C] -tree <*a*> is expression of C, the_result_sort_of o by Th41; ::_thesis: verum end; definition let C be initialized ConstructorSignature; let o be OperSymbol of C; assume A1: len (the_arity_of o) = 1 ; let e be expression of C; assume A2: ex s being SortSymbol of C st ( s = (the_arity_of o) . 1 & e is expression of C,s ) ; funco term e -> expression of C equals :Def30: :: ABCMIZ_1:def 30 [o, the carrier of C] -tree <*e*>; coherence [o, the carrier of C] -tree <*e*> is expression of C by A1, A2, Th42; end; :: deftheorem Def30 defines term ABCMIZ_1:def_30_:_ for C being initialized ConstructorSignature for o being OperSymbol of C st len (the_arity_of o) = 1 holds for e being expression of C st ex s being SortSymbol of C st ( s = (the_arity_of o) . 1 & e is expression of C,s ) holds o term e = [o, the carrier of C] -tree <*e*>; theorem Th43: :: ABCMIZ_1:43 for C being initialized ConstructorSignature for a being expression of C, an_Adj C holds ( (non_op C) term a is expression of C, an_Adj C & (non_op C) term a = [non_op, the carrier of C] -tree <*a*> ) proof let C be initialized ConstructorSignature; ::_thesis: for a being expression of C, an_Adj C holds ( (non_op C) term a is expression of C, an_Adj C & (non_op C) term a = [non_op, the carrier of C] -tree <*a*> ) let a be expression of C, an_Adj C; ::_thesis: ( (non_op C) term a is expression of C, an_Adj C & (non_op C) term a = [non_op, the carrier of C] -tree <*a*> ) A1: the_result_sort_of (non_op C) = an_Adj C by Def9; A2: the_arity_of (non_op C) = <*(an_Adj C)*> by Def9; then A3: len (the_arity_of (non_op C)) = 1 by FINSEQ_1:40; A4: (the_arity_of (non_op C)) . 1 = an_Adj C by A2, FINSEQ_1:40; then (non_op C) term a = [non_op, the carrier of C] -tree <*a*> by A3, Def30; hence ( (non_op C) term a is expression of C, an_Adj C & (non_op C) term a = [non_op, the carrier of C] -tree <*a*> ) by A1, A3, A4, Th42; ::_thesis: verum end; theorem Th44: :: ABCMIZ_1:44 for C being initialized ConstructorSignature for a, b being expression of C, an_Adj C st (non_op C) term a = (non_op C) term b holds a = b proof let C be initialized ConstructorSignature; ::_thesis: for a, b being expression of C, an_Adj C st (non_op C) term a = (non_op C) term b holds a = b let a, b be expression of C, an_Adj C; ::_thesis: ( (non_op C) term a = (non_op C) term b implies a = b ) assume (non_op C) term a = (non_op C) term b ; ::_thesis: a = b then [non_op, the carrier of C] -tree <*a*> = (non_op C) term b by Th43 .= [non_op, the carrier of C] -tree <*b*> by Th43 ; then <*a*> = <*b*> by TREES_4:15; hence a = b by FINSEQ_1:76; ::_thesis: verum end; registration let C be initialized ConstructorSignature; let a be expression of C, an_Adj C; cluster(non_op C) term a -> compound ; coherence (non_op C) term a is compound proof (non_op C) term a = [non_op, the carrier of C] -tree <*a*> by Th43; then ((non_op C) term a) . {} = [(non_op C), the carrier of C] by TREES_4:def_4; hence ((non_op C) term a) . {} in [: the carrier' of C,{ the carrier of C}:] by ZFMISC_1:106; :: according to ABCMIZ_1:def_27 ::_thesis: verum end; end; registration let C be initialized ConstructorSignature; cluster non pair non empty Relation-like Function-like finite DecoratedTree-like compound for Element of Union the Sorts of (Free (C,(MSVars C))); existence ex b1 being expression of C st b1 is compound proof set a = the expression of C, an_Adj C; (non_op C) term the expression of C, an_Adj C is compound ; hence ex b1 being expression of C st b1 is compound ; ::_thesis: verum end; end; theorem Th45: :: ABCMIZ_1:45 for C being initialized ConstructorSignature for o being OperSymbol of C st len (the_arity_of o) = 2 holds for a, b being expression of C st ex s1, s2 being SortSymbol of C st ( s1 = (the_arity_of o) . 1 & s2 = (the_arity_of o) . 2 & a is expression of C,s1 & b is expression of C,s2 ) holds [o, the carrier of C] -tree <*a,b*> is expression of C, the_result_sort_of o proof let C be initialized ConstructorSignature; ::_thesis: for o being OperSymbol of C st len (the_arity_of o) = 2 holds for a, b being expression of C st ex s1, s2 being SortSymbol of C st ( s1 = (the_arity_of o) . 1 & s2 = (the_arity_of o) . 2 & a is expression of C,s1 & b is expression of C,s2 ) holds [o, the carrier of C] -tree <*a,b*> is expression of C, the_result_sort_of o let o be OperSymbol of C; ::_thesis: ( len (the_arity_of o) = 2 implies for a, b being expression of C st ex s1, s2 being SortSymbol of C st ( s1 = (the_arity_of o) . 1 & s2 = (the_arity_of o) . 2 & a is expression of C,s1 & b is expression of C,s2 ) holds [o, the carrier of C] -tree <*a,b*> is expression of C, the_result_sort_of o ) assume A1: len (the_arity_of o) = 2 ; ::_thesis: for a, b being expression of C st ex s1, s2 being SortSymbol of C st ( s1 = (the_arity_of o) . 1 & s2 = (the_arity_of o) . 2 & a is expression of C,s1 & b is expression of C,s2 ) holds [o, the carrier of C] -tree <*a,b*> is expression of C, the_result_sort_of o set X = MSVars C; set Y = (MSVars C) \/ ( the carrier of C --> {0}); let a, b be expression of C; ::_thesis: ( ex s1, s2 being SortSymbol of C st ( s1 = (the_arity_of o) . 1 & s2 = (the_arity_of o) . 2 & a is expression of C,s1 & b is expression of C,s2 ) implies [o, the carrier of C] -tree <*a,b*> is expression of C, the_result_sort_of o ) given s1, s2 being SortSymbol of C such that A2: s1 = (the_arity_of o) . 1 and A3: s2 = (the_arity_of o) . 2 and A4: a is expression of C,s1 and A5: b is expression of C,s2 ; ::_thesis: [o, the carrier of C] -tree <*a,b*> is expression of C, the_result_sort_of o reconsider ta = a, tb = b as Term of C,((MSVars C) \/ ( the carrier of C --> {0})) by MSAFREE3:8; A6: dom <*ta,tb*> = Seg 2 by FINSEQ_1:89; A7: dom <*s1,s2*> = Seg 2 by FINSEQ_1:89; A8: the_arity_of o = <*s1,s2*> by A1, A2, A3, FINSEQ_1:44; A9: the Sorts of (Free (C,(MSVars C))) = C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0}))) by MSAFREE3:24; now__::_thesis:_for_i_being_Nat_st_i_in_dom_<*ta,tb*>_holds_ for_t_being_Term_of_C,((MSVars_C)_\/_(_the_carrier_of_C_-->_{0}))_st_t_=_<*ta,tb*>_._i_holds_ the_sort_of_t_=_(the_arity_of_o)_._i let i be Nat; ::_thesis: ( i in dom <*ta,tb*> implies for t being Term of C,((MSVars C) \/ ( the carrier of C --> {0})) st t = <*ta,tb*> . i holds the_sort_of t = (the_arity_of o) . i ) assume i in dom <*ta,tb*> ; ::_thesis: for t being Term of C,((MSVars C) \/ ( the carrier of C --> {0})) st t = <*ta,tb*> . i holds the_sort_of t = (the_arity_of o) . i then A10: ( i = 1 or i = 2 ) by A6, FINSEQ_1:2, TARSKI:def_2; let t be Term of C,((MSVars C) \/ ( the carrier of C --> {0})); ::_thesis: ( t = <*ta,tb*> . i implies the_sort_of t = (the_arity_of o) . i ) assume A11: t = <*ta,tb*> . i ; ::_thesis: the_sort_of t = (the_arity_of o) . i A12: the Sorts of (Free (C,(MSVars C))) c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) by A9, PBOOLE:def_18; A13: ( ( i = 1 & t = a ) or ( i = 2 & t = b ) ) by A10, A11, FINSEQ_1:44; A14: the Sorts of (Free (C,(MSVars C))) . s1 c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . s1 by A12, PBOOLE:def_2; A15: the Sorts of (Free (C,(MSVars C))) . s2 c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . s2 by A12, PBOOLE:def_2; ( ( i = 1 & t in the Sorts of (Free (C,(MSVars C))) . s1 ) or ( i = 2 & t in the Sorts of (Free (C,(MSVars C))) . s2 ) ) by A4, A5, A13, Th41; hence the_sort_of t = (the_arity_of o) . i by A2, A3, A14, A15, MSAFREE3:7; ::_thesis: verum end; then reconsider p = <*ta,tb*> as ArgumentSeq of Sym (o,((MSVars C) \/ ( the carrier of C --> {0}))) by A6, A7, A8, MSATERM:25; A16: variables_in ((Sym (o,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p) c= MSVars C proof let s be set ; :: according to PBOOLE:def_2 ::_thesis: ( not s in the carrier of C or (variables_in ((Sym (o,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p)) . s c= (MSVars C) . s ) assume s in the carrier of C ; ::_thesis: (variables_in ((Sym (o,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p)) . s c= (MSVars C) . s then reconsider s9 = s as SortSymbol of C ; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in (variables_in ((Sym (o,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p)) . s or x in (MSVars C) . s ) assume x in (variables_in ((Sym (o,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p)) . s ; ::_thesis: x in (MSVars C) . s then consider t being DecoratedTree such that A17: t in rng p and A18: x in (C variables_in t) . s9 by MSAFREE3:11; A19: C variables_in a c= MSVars C by MSAFREE3:27; A20: C variables_in b c= MSVars C by MSAFREE3:27; A21: rng p = {a,b} by FINSEQ_2:127; A22: (C variables_in a) . s9 c= (MSVars C) . s9 by A19, PBOOLE:def_2; A23: (C variables_in b) . s9 c= (MSVars C) . s9 by A20, PBOOLE:def_2; ( t = a or t = b ) by A17, A21, TARSKI:def_2; hence x in (MSVars C) . s by A18, A22, A23; ::_thesis: verum end; set s9 = the_result_sort_of o; A24: the_sort_of ((Sym (o,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p) = the_result_sort_of o by MSATERM:20; the Sorts of (Free (C,(MSVars C))) . (the_result_sort_of o) = { t where t is Term of C,((MSVars C) \/ ( the carrier of C --> {0})) : ( the_sort_of t = the_result_sort_of o & variables_in t c= MSVars C ) } by A9, MSAFREE3:def_5; then [o, the carrier of C] -tree <*a,b*> in the Sorts of (Free (C,(MSVars C))) . (the_result_sort_of o) by A16, A24; hence [o, the carrier of C] -tree <*a,b*> is expression of C, the_result_sort_of o by Th41; ::_thesis: verum end; definition let C be initialized ConstructorSignature; let o be OperSymbol of C; assume A1: len (the_arity_of o) = 2 ; let e1, e2 be expression of C; assume A2: ex s1, s2 being SortSymbol of C st ( s1 = (the_arity_of o) . 1 & s2 = (the_arity_of o) . 2 & e1 is expression of C,s1 & e2 is expression of C,s2 ) ; funco term (e1,e2) -> expression of C equals :Def31: :: ABCMIZ_1:def 31 [o, the carrier of C] -tree <*e1,e2*>; coherence [o, the carrier of C] -tree <*e1,e2*> is expression of C by A1, A2, Th45; end; :: deftheorem Def31 defines term ABCMIZ_1:def_31_:_ for C being initialized ConstructorSignature for o being OperSymbol of C st len (the_arity_of o) = 2 holds for e1, e2 being expression of C st ex s1, s2 being SortSymbol of C st ( s1 = (the_arity_of o) . 1 & s2 = (the_arity_of o) . 2 & e1 is expression of C,s1 & e2 is expression of C,s2 ) holds o term (e1,e2) = [o, the carrier of C] -tree <*e1,e2*>; theorem Th46: :: ABCMIZ_1:46 for C being initialized ConstructorSignature for a being expression of C, an_Adj C for t being expression of C, a_Type C holds ( (ast C) term (a,t) is expression of C, a_Type C & (ast C) term (a,t) = [*, the carrier of C] -tree <*a,t*> ) proof let C be initialized ConstructorSignature; ::_thesis: for a being expression of C, an_Adj C for t being expression of C, a_Type C holds ( (ast C) term (a,t) is expression of C, a_Type C & (ast C) term (a,t) = [*, the carrier of C] -tree <*a,t*> ) let a be expression of C, an_Adj C; ::_thesis: for t being expression of C, a_Type C holds ( (ast C) term (a,t) is expression of C, a_Type C & (ast C) term (a,t) = [*, the carrier of C] -tree <*a,t*> ) let t be expression of C, a_Type C; ::_thesis: ( (ast C) term (a,t) is expression of C, a_Type C & (ast C) term (a,t) = [*, the carrier of C] -tree <*a,t*> ) A1: the_result_sort_of (ast C) = a_Type C by Def9; A2: the_arity_of (ast C) = <*(an_Adj C),(a_Type C)*> by Def9; then A3: len (the_arity_of (ast C)) = 2 by FINSEQ_1:44; A4: (the_arity_of (ast C)) . 1 = an_Adj C by A2, FINSEQ_1:44; A5: (the_arity_of (ast C)) . 2 = a_Type C by A2, FINSEQ_1:44; then (ast C) term (a,t) = [*, the carrier of C] -tree <*a,t*> by A3, A4, Def31; hence ( (ast C) term (a,t) is expression of C, a_Type C & (ast C) term (a,t) = [*, the carrier of C] -tree <*a,t*> ) by A1, A3, A4, A5, Th45; ::_thesis: verum end; theorem :: ABCMIZ_1:47 for C being initialized ConstructorSignature for a, b being expression of C, an_Adj C for t1, t2 being expression of C, a_Type C st (ast C) term (a,t1) = (ast C) term (b,t2) holds ( a = b & t1 = t2 ) proof let C be initialized ConstructorSignature; ::_thesis: for a, b being expression of C, an_Adj C for t1, t2 being expression of C, a_Type C st (ast C) term (a,t1) = (ast C) term (b,t2) holds ( a = b & t1 = t2 ) let a, b be expression of C, an_Adj C; ::_thesis: for t1, t2 being expression of C, a_Type C st (ast C) term (a,t1) = (ast C) term (b,t2) holds ( a = b & t1 = t2 ) let t1, t2 be expression of C, a_Type C; ::_thesis: ( (ast C) term (a,t1) = (ast C) term (b,t2) implies ( a = b & t1 = t2 ) ) assume (ast C) term (a,t1) = (ast C) term (b,t2) ; ::_thesis: ( a = b & t1 = t2 ) then [*, the carrier of C] -tree <*a,t1*> = (ast C) term (b,t2) by Th46 .= [*, the carrier of C] -tree <*b,t2*> by Th46 ; then <*a,t1*> = <*b,t2*> by TREES_4:15; hence ( a = b & t1 = t2 ) by FINSEQ_1:77; ::_thesis: verum end; registration let C be initialized ConstructorSignature; let a be expression of C, an_Adj C; let t be expression of C, a_Type C; cluster(ast C) term (a,t) -> compound ; coherence (ast C) term (a,t) is compound proof (ast C) term (a,t) = [*, the carrier of C] -tree <*a,t*> by Th46; then ((ast C) term (a,t)) . {} = [(ast C), the carrier of C] by TREES_4:def_4; hence ((ast C) term (a,t)) . {} in [: the carrier' of C,{ the carrier of C}:] by ZFMISC_1:106; :: according to ABCMIZ_1:def_27 ::_thesis: verum end; end; definition let S be non void Signature; let s be SortSymbol of S; assume A1: ex o being OperSymbol of S st the_result_sort_of o = s ; mode OperSymbol of s -> OperSymbol of S means :: ABCMIZ_1:def 32 the_result_sort_of it = s; existence ex b1 being OperSymbol of S st the_result_sort_of b1 = s by A1; end; :: deftheorem defines OperSymbol ABCMIZ_1:def_32_:_ for S being non void Signature for s being SortSymbol of S st ex o being OperSymbol of S st the_result_sort_of o = s holds for b3 being OperSymbol of S holds ( b3 is OperSymbol of s iff the_result_sort_of b3 = s ); definition let C be ConstructorSignature; :: original: non_op redefine func non_op C -> OperSymbol of an_Adj C; coherence non_op C is OperSymbol of an_Adj C proof the_result_sort_of (non_op C) = an_Adj C by Def9; hence ex o being OperSymbol of C st the_result_sort_of o = an_Adj C ; :: according to ABCMIZ_1:def_32 ::_thesis: the_result_sort_of (non_op C) = an_Adj C thus the_result_sort_of (non_op C) = an_Adj C by Def9; ::_thesis: verum end; :: original: ast redefine func ast C -> OperSymbol of a_Type C; coherence ast C is OperSymbol of a_Type C proof the_result_sort_of (ast C) = a_Type C by Def9; hence ex o being OperSymbol of C st the_result_sort_of o = a_Type C ; :: according to ABCMIZ_1:def_32 ::_thesis: the_result_sort_of (ast C) = a_Type C thus the_result_sort_of (ast C) = a_Type C by Def9; ::_thesis: verum end; end; theorem Th48: :: ABCMIZ_1:48 for C being initialized ConstructorSignature for s1, s2 being SortSymbol of C st s1 <> s2 holds for t1 being expression of C,s1 for t2 being expression of C,s2 holds t1 <> t2 proof let C be initialized ConstructorSignature; ::_thesis: for s1, s2 being SortSymbol of C st s1 <> s2 holds for t1 being expression of C,s1 for t2 being expression of C,s2 holds t1 <> t2 set X = MSVars C; set Y = (MSVars C) \/ ( the carrier of C --> {0}); A1: ex A being MSSubset of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) st ( Free (C,(MSVars C)) = GenMSAlg A & A = (Reverse ((MSVars C) \/ ( the carrier of C --> {0}))) "" (MSVars C) ) by MSAFREE3:def_1; let s1, s2 be SortSymbol of C; ::_thesis: ( s1 <> s2 implies for t1 being expression of C,s1 for t2 being expression of C,s2 holds t1 <> t2 ) the Sorts of (Free (C,(MSVars C))) is MSSubset of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) by A1, MSUALG_2:def_9; then A2: the Sorts of (Free (C,(MSVars C))) c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) by PBOOLE:def_18; then A3: the Sorts of (Free (C,(MSVars C))) . s1 c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . s1 by PBOOLE:def_2; A4: the Sorts of (Free (C,(MSVars C))) . s2 c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . s2 by A2, PBOOLE:def_2; assume s1 <> s2 ; ::_thesis: for t1 being expression of C,s1 for t2 being expression of C,s2 holds t1 <> t2 then A5: the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . s1 misses the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . s2 by PROB_2:def_2; let t1 be expression of C,s1; ::_thesis: for t2 being expression of C,s2 holds t1 <> t2 let t2 be expression of C,s2; ::_thesis: t1 <> t2 A6: t1 in the Sorts of (Free (C,(MSVars C))) . s1 by Def28; t2 in the Sorts of (Free (C,(MSVars C))) . s2 by Def28; hence t1 <> t2 by A3, A4, A5, A6, XBOOLE_0:3; ::_thesis: verum end; begin definition let C be initialized ConstructorSignature; A1: the Sorts of (Free (C,(MSVars C))) . (a_Term C) c= Union the Sorts of (Free (C,(MSVars C))) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in the Sorts of (Free (C,(MSVars C))) . (a_Term C) or x in Union the Sorts of (Free (C,(MSVars C))) ) dom the Sorts of (Free (C,(MSVars C))) = the carrier of C by PARTFUN1:def_2; hence ( not x in the Sorts of (Free (C,(MSVars C))) . (a_Term C) or x in Union the Sorts of (Free (C,(MSVars C))) ) by CARD_5:2; ::_thesis: verum end; func QuasiTerms C -> Subset of (Free (C,(MSVars C))) equals :: ABCMIZ_1:def 33 the Sorts of (Free (C,(MSVars C))) . (a_Term C); coherence the Sorts of (Free (C,(MSVars C))) . (a_Term C) is Subset of (Free (C,(MSVars C))) by A1; end; :: deftheorem defines QuasiTerms ABCMIZ_1:def_33_:_ for C being initialized ConstructorSignature holds QuasiTerms C = the Sorts of (Free (C,(MSVars C))) . (a_Term C); registration let C be initialized ConstructorSignature; cluster QuasiTerms C -> non empty constituted-DTrees ; coherence ( not QuasiTerms C is empty & QuasiTerms C is constituted-DTrees ) proof thus not QuasiTerms C is empty ; ::_thesis: QuasiTerms C is constituted-DTrees let x be set ; :: according to TREES_3:def_5 ::_thesis: ( not x in QuasiTerms C or x is set ) assume x in QuasiTerms C ; ::_thesis: x is set hence x is set ; ::_thesis: verum end; end; definition let C be initialized ConstructorSignature; mode quasi-term of C is expression of C, a_Term C; end; theorem :: ABCMIZ_1:49 for z being set for C being initialized ConstructorSignature holds ( z is quasi-term of C iff z in QuasiTerms C ) by Th41; definition let x be variable; let C be initialized ConstructorSignature; funcx -term C -> quasi-term of C equals :: ABCMIZ_1:def 34 root-tree [x,a_Term]; coherence root-tree [x,a_Term] is quasi-term of C proof (MSVars C) . a_Term = Vars by Def25; then root-tree [x,a_Term] in QuasiTerms C by MSAFREE3:4; hence root-tree [x,a_Term] is quasi-term of C by Th41; ::_thesis: verum end; end; :: deftheorem defines -term ABCMIZ_1:def_34_:_ for x being variable for C being initialized ConstructorSignature holds x -term C = root-tree [x,a_Term]; theorem Th50: :: ABCMIZ_1:50 for x1, x2 being variable for C1, C2 being initialized ConstructorSignature st x1 -term C1 = x2 -term C2 holds x1 = x2 proof let x1, x2 be variable; ::_thesis: for C1, C2 being initialized ConstructorSignature st x1 -term C1 = x2 -term C2 holds x1 = x2 let C1, C2 be initialized ConstructorSignature; ::_thesis: ( x1 -term C1 = x2 -term C2 implies x1 = x2 ) assume x1 -term C1 = x2 -term C2 ; ::_thesis: x1 = x2 then [x1,a_Term] = [x2,a_Term] by TREES_4:4; hence x1 = x2 by XTUPLE_0:1; ::_thesis: verum end; registration let x be variable; let C be initialized ConstructorSignature; clusterx -term C -> non compound ; coherence not x -term C is compound proof a_Term C in the carrier of C ; then A1: a_Term C <> the carrier of C ; A2: (x -term C) . {} = [x,(a_Term C)] by TREES_4:3; a_Term C nin { the carrier of C} by A1, TARSKI:def_1; hence (x -term C) . {} nin [: the carrier' of C,{ the carrier of C}:] by A2, ZFMISC_1:87; :: according to ABCMIZ_1:def_27 ::_thesis: verum end; end; theorem Th51: :: ABCMIZ_1:51 for C being initialized ConstructorSignature for c being constructor OperSymbol of C for p being DTree-yielding FinSequence holds ( [c, the carrier of C] -tree p is expression of C iff ( len p = len (the_arity_of c) & p in (QuasiTerms C) * ) ) proof let C be initialized ConstructorSignature; ::_thesis: for c being constructor OperSymbol of C for p being DTree-yielding FinSequence holds ( [c, the carrier of C] -tree p is expression of C iff ( len p = len (the_arity_of c) & p in (QuasiTerms C) * ) ) let c be constructor OperSymbol of C; ::_thesis: for p being DTree-yielding FinSequence holds ( [c, the carrier of C] -tree p is expression of C iff ( len p = len (the_arity_of c) & p in (QuasiTerms C) * ) ) set o = c; A1: c <> * by Def11; A2: c <> non_op by Def11; let p be DTree-yielding FinSequence; ::_thesis: ( [c, the carrier of C] -tree p is expression of C iff ( len p = len (the_arity_of c) & p in (QuasiTerms C) * ) ) set V = (MSVars C) \/ ( the carrier of C --> {0}); A3: the Sorts of (Free (C,(MSVars C))) = C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0}))) by MSAFREE3:24; hereby ::_thesis: ( len p = len (the_arity_of c) & p in (QuasiTerms C) * implies [c, the carrier of C] -tree p is expression of C ) assume A4: [c, the carrier of C] -tree p is expression of C ; ::_thesis: ( len p = len (the_arity_of c) & p in (QuasiTerms C) * ) then A5: [c, the carrier of C] -tree p is Term of C,((MSVars C) \/ ( the carrier of C --> {0})) by MSAFREE3:8; then A6: p is ArgumentSeq of Sym (c,((MSVars C) \/ ( the carrier of C --> {0}))) by MSATERM:1; hence len p = len (the_arity_of c) by MSATERM:22; ::_thesis: p in (QuasiTerms C) * reconsider q = p as ArgumentSeq of Sym (c,((MSVars C) \/ ( the carrier of C --> {0}))) by A5, MSATERM:1; A7: the_sort_of ((Sym (c,((MSVars C) \/ ( the carrier of C --> {0})))) -tree q) = the_result_sort_of c by MSATERM:20; A8: variables_in ((Sym (c,((MSVars C) \/ ( the carrier of C --> {0})))) -tree q) c= MSVars C by A4, MSAFREE3:27; (C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0})))) . (the_result_sort_of c) = { t where t is Term of C,((MSVars C) \/ ( the carrier of C --> {0})) : ( the_sort_of t = the_result_sort_of c & variables_in t c= MSVars C ) } by MSAFREE3:def_5; then (Sym (c,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p in (C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0})))) . (the_result_sort_of c) by A7, A8; then A9: rng p c= Union (C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0})))) by A6, MSAFREE3:19; rng p c= QuasiTerms C proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in rng p or a in QuasiTerms C ) assume A10: a in rng p ; ::_thesis: a in QuasiTerms C then reconsider ta = a as expression of C by A9, MSAFREE3:24; consider i being set such that A11: i in dom p and A12: a = p . i by A10, FUNCT_1:def_3; reconsider i = i as Nat by A11; reconsider t = p . i as Term of C,((MSVars C) \/ ( the carrier of C --> {0})) by A6, A11, MSATERM:22; A13: the Arity of C . c in {a_Term} * by A1, A2, Def9; A14: dom p = dom (the_arity_of c) by A6, MSATERM:22; A15: the_arity_of c is FinSequence of {a_Term} by A13, FINSEQ_1:def_11; A16: (the_arity_of c) . i in rng (the_arity_of c) by A11, A14, FUNCT_1:def_3; rng (the_arity_of c) c= {(a_Term C)} by A15, FINSEQ_1:def_4; then (the_arity_of c) . i = a_Term C by A16, TARSKI:def_1; then A17: the_sort_of t = a_Term C by A6, A11, MSATERM:23; t = ta by A12; then variables_in t c= MSVars C by MSAFREE3:27; then t in { T where T is Term of C,((MSVars C) \/ ( the carrier of C --> {0})) : ( the_sort_of T = a_Term C & variables_in T c= MSVars C ) } by A17; then t in (C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0})))) . (a_Term C) by MSAFREE3:def_5; hence a in QuasiTerms C by A12, MSAFREE3:23; ::_thesis: verum end; then p is FinSequence of QuasiTerms C by FINSEQ_1:def_4; hence p in (QuasiTerms C) * by FINSEQ_1:def_11; ::_thesis: verum end; assume A18: len p = len (the_arity_of c) ; ::_thesis: ( not p in (QuasiTerms C) * or [c, the carrier of C] -tree p is expression of C ) assume A19: p in (QuasiTerms C) * ; ::_thesis: [c, the carrier of C] -tree p is expression of C Free (C,(MSVars C)) = (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) | (C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0})))) by MSAFREE3:25; then the Sorts of (Free (C,(MSVars C))) is ManySortedSubset of the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) by MSUALG_2:def_9; then the Sorts of (Free (C,(MSVars C))) c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) by PBOOLE:def_18; then A20: QuasiTerms C c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . (a_Term C) by PBOOLE:def_2; A21: p is FinSequence of QuasiTerms C by A19, FINSEQ_1:def_11; then A22: rng p c= QuasiTerms C by FINSEQ_1:def_4; now__::_thesis:_for_i_being_Nat_st_i_in_dom_p_holds_ ex_T_being_Term_of_C,((MSVars_C)_\/_(_the_carrier_of_C_-->_{0}))_st_ (_T_=_p_._i_&_the_sort_of_T_=_(the_arity_of_c)_._i_) let i be Nat; ::_thesis: ( i in dom p implies ex T being Term of C,((MSVars C) \/ ( the carrier of C --> {0})) st ( T = p . i & the_sort_of T = (the_arity_of c) . i ) ) assume A23: i in dom p ; ::_thesis: ex T being Term of C,((MSVars C) \/ ( the carrier of C --> {0})) st ( T = p . i & the_sort_of T = (the_arity_of c) . i ) then p . i in rng p by FUNCT_1:def_3; then A24: p . i in QuasiTerms C by A22; then reconsider t = p . i as expression of C ; A25: the Arity of C . c in {a_Term} * by A1, A2, Def9; A26: dom p = dom (the_arity_of c) by A18, FINSEQ_3:29; A27: the_arity_of c is FinSequence of {a_Term} by A25, FINSEQ_1:def_11; A28: (the_arity_of c) . i in rng (the_arity_of c) by A23, A26, FUNCT_1:def_3; rng (the_arity_of c) c= {(a_Term C)} by A27, FINSEQ_1:def_4; then A29: (the_arity_of c) . i = a_Term C by A28, TARSKI:def_1; reconsider T = t as Term of C,((MSVars C) \/ ( the carrier of C --> {0})) by MSAFREE3:8; take T = T; ::_thesis: ( T = p . i & the_sort_of T = (the_arity_of c) . i ) thus T = p . i ; ::_thesis: the_sort_of T = (the_arity_of c) . i T in the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . (a_Term C) by A20, A24; then T in FreeSort (((MSVars C) \/ ( the carrier of C --> {0})),(a_Term C)) by MSAFREE:def_11; hence the_sort_of T = (the_arity_of c) . i by A29, MSATERM:def_5; ::_thesis: verum end; then A30: p is ArgumentSeq of Sym (c,((MSVars C) \/ ( the carrier of C --> {0}))) by A18, MSATERM:24; A31: dom the Sorts of (Free (C,(MSVars C))) = the carrier of C by PARTFUN1:def_2; rng p c= Union (C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0})))) by A3, A21, FINSEQ_1:def_4; then (Sym (c,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p in (C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0})))) . (the_result_sort_of c) by A30, MSAFREE3:19; hence [c, the carrier of C] -tree p is expression of C by A3, A31, CARD_5:2; ::_thesis: verum end; definition let C be initialized ConstructorSignature; let c be constructor OperSymbol of C; let p be FinSequence of QuasiTerms C; assume B1: len p = len (the_arity_of c) ; A1: p in (QuasiTerms C) * by FINSEQ_1:def_11; funcc -trm p -> compound expression of C equals :Def35: :: ABCMIZ_1:def 35 [c, the carrier of C] -tree p; coherence [c, the carrier of C] -tree p is compound expression of C proof reconsider t = [c, the carrier of C] -tree p as expression of C by B1, A1, Th51; t . {} = [c, the carrier of C] by TREES_4:def_4; then t . {} in [: the carrier' of C,{ the carrier of C}:] by ZFMISC_1:106; hence [c, the carrier of C] -tree p is compound expression of C by Def27; ::_thesis: verum end; end; :: deftheorem Def35 defines -trm ABCMIZ_1:def_35_:_ for C being initialized ConstructorSignature for c being constructor OperSymbol of C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds c -trm p = [c, the carrier of C] -tree p; theorem Th52: :: ABCMIZ_1:52 for C being initialized ConstructorSignature for c being constructor OperSymbol of C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds c -trm p is expression of C, the_result_sort_of c proof let C be initialized ConstructorSignature; ::_thesis: for c being constructor OperSymbol of C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds c -trm p is expression of C, the_result_sort_of c let c be constructor OperSymbol of C; ::_thesis: for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds c -trm p is expression of C, the_result_sort_of c let p be FinSequence of QuasiTerms C; ::_thesis: ( len p = len (the_arity_of c) implies c -trm p is expression of C, the_result_sort_of c ) set X = MSVars C; set V = (MSVars C) \/ ( the carrier of C --> {0}); assume len p = len (the_arity_of c) ; ::_thesis: c -trm p is expression of C, the_result_sort_of c then A1: (Sym (c,((MSVars C) \/ ( the carrier of C --> {0})))) -tree p = c -trm p by Def35; A2: the Sorts of (Free (C,(MSVars C))) = C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0}))) by MSAFREE3:24; c -trm p is Term of C,((MSVars C) \/ ( the carrier of C --> {0})) by MSAFREE3:8; then reconsider q = p as ArgumentSeq of Sym (c,((MSVars C) \/ ( the carrier of C --> {0}))) by A1, MSATERM:1; rng q c= Union the Sorts of (Free (C,(MSVars C))) by FINSEQ_1:def_4; then c -trm p in (C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0})))) . (the_result_sort_of c) by A1, A2, MSAFREE3:19; hence c -trm p is expression of C, the_result_sort_of c by A2, Def28; ::_thesis: verum end; theorem Th53: :: ABCMIZ_1:53 for C being initialized ConstructorSignature for e being expression of C holds ( ex x being variable st e = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & e = c -trm p ) or ex a being expression of C, an_Adj C st e = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) ) proof let C be initialized ConstructorSignature; ::_thesis: for e being expression of C holds ( ex x being variable st e = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & e = c -trm p ) or ex a being expression of C, an_Adj C st e = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) ) let t be expression of C; ::_thesis: ( ex x being variable st t = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & t = c -trm p ) or ex a being expression of C, an_Adj C st t = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st t = (ast C) term (a,t) ) set X = MSVars C; set V = (MSVars C) \/ ( the carrier of C --> {0}); percases ( ex s being SortSymbol of C ex v being set st ( t = root-tree [v,s] & v in (MSVars C) . s ) or ex o being OperSymbol of C ex p being FinSequence of (Free (C,(MSVars C))) st ( t = [o, the carrier of C] -tree p & len p = len (the_arity_of o) & p is DTree-yielding & p is ArgumentSeq of Sym (o,((MSVars C) \/ ( the carrier of C --> {0}))) ) ) by Th7; suppose ex s being SortSymbol of C ex v being set st ( t = root-tree [v,s] & v in (MSVars C) . s ) ; ::_thesis: ( ex x being variable st t = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & t = c -trm p ) or ex a being expression of C, an_Adj C st t = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st t = (ast C) term (a,t) ) then consider s being SortSymbol of C, v being set such that A1: t = root-tree [v,s] and A2: v in (MSVars C) . s ; the carrier of C = {a_Type,an_Adj,a_Term} by Def9; then A3: ( s = a_Term or s = an_Adj or s = a_Type ) by ENUMSET1:def_1; then reconsider v = v as variable by A2, Def25; t = v -term C by A1, A2, A3, Def25; hence ( ex x being variable st t = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & t = c -trm p ) or ex a being expression of C, an_Adj C st t = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st t = (ast C) term (a,t) ) ; ::_thesis: verum end; suppose ex o being OperSymbol of C ex p being FinSequence of (Free (C,(MSVars C))) st ( t = [o, the carrier of C] -tree p & len p = len (the_arity_of o) & p is DTree-yielding & p is ArgumentSeq of Sym (o,((MSVars C) \/ ( the carrier of C --> {0}))) ) ; ::_thesis: ( ex x being variable st t = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & t = c -trm p ) or ex a being expression of C, an_Adj C st t = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st t = (ast C) term (a,t) ) then consider o being OperSymbol of C, p being FinSequence of (Free (C,(MSVars C))) such that A4: t = [o, the carrier of C] -tree p and A5: len p = len (the_arity_of o) and p is DTree-yielding and A6: p is ArgumentSeq of Sym (o,((MSVars C) \/ ( the carrier of C --> {0}))) ; percases ( o = * or o = non_op or o is constructor ) by Def11; supposeA7: o = * ; ::_thesis: ( ex x being variable st t = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & t = c -trm p ) or ex a being expression of C, an_Adj C st t = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st t = (ast C) term (a,t) ) then A8: the_arity_of o = <*an_Adj,a_Type*> by Def9; A9: dom p = dom (the_arity_of o) by A6, MSATERM:22; A10: dom (the_arity_of o) = Seg 2 by A8, FINSEQ_1:89; A11: len (the_arity_of o) = 2 by A8, FINSEQ_1:44; A12: 1 in Seg 2 ; A13: 2 in Seg 2 ; A14: p . 1 in rng p by A9, A10, A12, FUNCT_1:3; p . 2 in rng p by A9, A10, A13, FUNCT_1:3; then reconsider p1 = p . 1, p2 = p . 2 as expression of C by A14; reconsider t1 = p1, t2 = p2 as Term of C,((MSVars C) \/ ( the carrier of C --> {0})) by MSAFREE3:8; A15: C variables_in p1 c= MSVars C by MSAFREE3:27; A16: variables_in t1 = C variables_in t1 ; A17: C variables_in p2 c= MSVars C by MSAFREE3:27; A18: variables_in t2 = C variables_in t2 ; A19: <*an_Adj,a_Type*> . 2 = a_Type C by FINSEQ_1:44; A20: <*an_Adj,a_Type*> . 1 = an_Adj C by FINSEQ_1:44; the_sort_of t1 = (the_arity_of o) . 1 by A6, A9, A10, A12, MSATERM:23; then t1 in { q where q is Term of C,((MSVars C) \/ ( the carrier of C --> {0})) : ( the_sort_of q = an_Adj C & variables_in q c= MSVars C ) } by A8, A15, A16, A20; then p1 in (C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0})))) . (an_Adj C) by MSAFREE3:def_5; then p1 in the Sorts of (Free (C,(MSVars C))) . (an_Adj C) by MSAFREE3:24; then reconsider a = p1 as expression of C, an_Adj C by Def28; the_sort_of t2 = (the_arity_of o) . 2 by A6, A9, A10, A13, MSATERM:23; then t2 in { q where q is Term of C,((MSVars C) \/ ( the carrier of C --> {0})) : ( the_sort_of q = a_Type C & variables_in q c= MSVars C ) } by A8, A17, A18, A19; then p2 in (C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0})))) . (a_Type C) by MSAFREE3:def_5; then p2 in the Sorts of (Free (C,(MSVars C))) . (a_Type C) by MSAFREE3:24; then reconsider q = p2 as expression of C, a_Type C by Def28; p = <*a,q*> by A5, A11, FINSEQ_1:44; then t = (ast C) term (a,q) by A4, A7, A8, A11, A19, A20, Def31; hence ( ex x being variable st t = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & t = c -trm p ) or ex a being expression of C, an_Adj C st t = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st t = (ast C) term (a,t) ) ; ::_thesis: verum end; supposeA21: o = non_op ; ::_thesis: ( ex x being variable st t = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & t = c -trm p ) or ex a being expression of C, an_Adj C st t = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st t = (ast C) term (a,t) ) then A22: the_arity_of o = <*an_Adj*> by Def9; A23: dom p = dom (the_arity_of o) by A6, MSATERM:22; A24: dom (the_arity_of o) = Seg 1 by A22, FINSEQ_1:38; A25: len (the_arity_of o) = 1 by A22, FINSEQ_1:39; A26: 1 in Seg 1 ; then p . 1 in rng p by A23, A24, FUNCT_1:3; then reconsider p1 = p . 1 as expression of C ; reconsider t1 = p1 as Term of C,((MSVars C) \/ ( the carrier of C --> {0})) by MSAFREE3:8; A27: C variables_in p1 c= MSVars C by MSAFREE3:27; A28: variables_in t1 = C variables_in t1 ; A29: <*an_Adj*> . 1 = an_Adj C by FINSEQ_1:40; the_sort_of t1 = (the_arity_of o) . 1 by A6, A23, A24, A26, MSATERM:23; then t1 in { q where q is Term of C,((MSVars C) \/ ( the carrier of C --> {0})) : ( the_sort_of q = an_Adj C & variables_in q c= MSVars C ) } by A22, A27, A28, A29; then p1 in (C -Terms ((MSVars C),((MSVars C) \/ ( the carrier of C --> {0})))) . (an_Adj C) by MSAFREE3:def_5; then p1 in the Sorts of (Free (C,(MSVars C))) . (an_Adj C) by MSAFREE3:24; then reconsider a = p1 as expression of C, an_Adj C by Def28; p = <*a*> by A5, A25, FINSEQ_1:40; then t = (non_op C) term a by A4, A21, A22, A25, A29, Def30; hence ( ex x being variable st t = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & t = c -trm p ) or ex a being expression of C, an_Adj C st t = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st t = (ast C) term (a,t) ) ; ::_thesis: verum end; suppose o is constructor ; ::_thesis: ( ex x being variable st t = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & t = c -trm p ) or ex a being expression of C, an_Adj C st t = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st t = (ast C) term (a,t) ) then reconsider o = o as constructor OperSymbol of C ; t = [o, the carrier of C] -tree p by A4; then p in (QuasiTerms C) * by Th51; then reconsider p = p as FinSequence of QuasiTerms C by FINSEQ_1:def_11; t = o -trm p by A4, A5, Def35; hence ( ex x being variable st t = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & t = c -trm p ) or ex a being expression of C, an_Adj C st t = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st t = (ast C) term (a,t) ) by A5; ::_thesis: verum end; end; end; end; end; theorem Th54: :: ABCMIZ_1:54 for C being initialized ConstructorSignature for c being constructor OperSymbol of C for a being expression of C, an_Adj C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds c -trm p <> (non_op C) term a proof let C be initialized ConstructorSignature; ::_thesis: for c being constructor OperSymbol of C for a being expression of C, an_Adj C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds c -trm p <> (non_op C) term a let c be constructor OperSymbol of C; ::_thesis: for a being expression of C, an_Adj C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds c -trm p <> (non_op C) term a let a be expression of C, an_Adj C; ::_thesis: for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds c -trm p <> (non_op C) term a let p be FinSequence of QuasiTerms C; ::_thesis: ( len p = len (the_arity_of c) implies c -trm p <> (non_op C) term a ) assume len p = len (the_arity_of c) ; ::_thesis: c -trm p <> (non_op C) term a then c -trm p = [c, the carrier of C] -tree p by Def35; then A1: (c -trm p) . {} = [c, the carrier of C] by TREES_4:def_4; assume c -trm p = (non_op C) term a ; ::_thesis: contradiction then c -trm p = [non_op, the carrier of C] -tree <*a*> by Th43; then [c, the carrier of C] = [non_op, the carrier of C] by A1, TREES_4:def_4; then c = non_op by XTUPLE_0:1; hence contradiction by Def11; ::_thesis: verum end; theorem Th55: :: ABCMIZ_1:55 for C being initialized ConstructorSignature for c being constructor OperSymbol of C for a being expression of C, an_Adj C for t being expression of C, a_Type C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds c -trm p <> (ast C) term (a,t) proof let C be initialized ConstructorSignature; ::_thesis: for c being constructor OperSymbol of C for a being expression of C, an_Adj C for t being expression of C, a_Type C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds c -trm p <> (ast C) term (a,t) let c be constructor OperSymbol of C; ::_thesis: for a being expression of C, an_Adj C for t being expression of C, a_Type C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds c -trm p <> (ast C) term (a,t) let a be expression of C, an_Adj C; ::_thesis: for t being expression of C, a_Type C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds c -trm p <> (ast C) term (a,t) let t be expression of C, a_Type C; ::_thesis: for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds c -trm p <> (ast C) term (a,t) let p be FinSequence of QuasiTerms C; ::_thesis: ( len p = len (the_arity_of c) implies c -trm p <> (ast C) term (a,t) ) assume len p = len (the_arity_of c) ; ::_thesis: c -trm p <> (ast C) term (a,t) then c -trm p = [c, the carrier of C] -tree p by Def35; then A1: (c -trm p) . {} = [c, the carrier of C] by TREES_4:def_4; assume c -trm p = (ast C) term (a,t) ; ::_thesis: contradiction then c -trm p = [*, the carrier of C] -tree <*a,t*> by Th46; then [c, the carrier of C] = [*, the carrier of C] by A1, TREES_4:def_4; then c = * by XTUPLE_0:1; hence contradiction by Def11; ::_thesis: verum end; theorem :: ABCMIZ_1:56 for C being initialized ConstructorSignature for a, b being expression of C, an_Adj C for t being expression of C, a_Type C holds (non_op C) term a <> (ast C) term (b,t) proof let C be initialized ConstructorSignature; ::_thesis: for a, b being expression of C, an_Adj C for t being expression of C, a_Type C holds (non_op C) term a <> (ast C) term (b,t) let a, b be expression of C, an_Adj C; ::_thesis: for t being expression of C, a_Type C holds (non_op C) term a <> (ast C) term (b,t) let t be expression of C, a_Type C; ::_thesis: (non_op C) term a <> (ast C) term (b,t) assume (non_op C) term a = (ast C) term (b,t) ; ::_thesis: contradiction then (non_op C) term a = [*, the carrier of C] -tree <*b,t*> by Th46; then ((non_op C) term a) . {} = [*, the carrier of C] by TREES_4:def_4; then ([non_op, the carrier of C] -tree <*a*>) . {} = [*, the carrier of C] by Th43; then [non_op, the carrier of C] = [*, the carrier of C] by TREES_4:def_4; hence contradiction by XTUPLE_0:1; ::_thesis: verum end; theorem Th57: :: ABCMIZ_1:57 for C being initialized ConstructorSignature for e being expression of C st e . {} = [non_op, the carrier of C] holds ex a being expression of C, an_Adj C st e = (non_op C) term a proof let C be initialized ConstructorSignature; ::_thesis: for e being expression of C st e . {} = [non_op, the carrier of C] holds ex a being expression of C, an_Adj C st e = (non_op C) term a let e be expression of C; ::_thesis: ( e . {} = [non_op, the carrier of C] implies ex a being expression of C, an_Adj C st e = (non_op C) term a ) assume A1: e . {} = [non_op, the carrier of C] ; ::_thesis: ex a being expression of C, an_Adj C st e = (non_op C) term a non_op C in the carrier' of C ; then A2: e . {} in [: the carrier' of C,{ the carrier of C}:] by A1, ZFMISC_1:106; percases ( ex x being variable st e = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & e = c -trm p ) or ex a being expression of C, an_Adj C st e = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) ) by Th53; suppose ex x being variable st e = x -term C ; ::_thesis: ex a being expression of C, an_Adj C st e = (non_op C) term a hence ex a being expression of C, an_Adj C st e = (non_op C) term a by A2, Def27; ::_thesis: verum end; suppose ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & e = c -trm p ) ; ::_thesis: ex a being expression of C, an_Adj C st e = (non_op C) term a then consider c being constructor OperSymbol of C, p being FinSequence of QuasiTerms C such that A3: len p = len (the_arity_of c) and A4: e = c -trm p ; e = [c, the carrier of C] -tree p by A3, A4, Def35; then e . {} = [c, the carrier of C] by TREES_4:def_4; then non_op = c by A1, XTUPLE_0:1; hence ex a being expression of C, an_Adj C st e = (non_op C) term a by Def11; ::_thesis: verum end; suppose ex a being expression of C, an_Adj C st e = (non_op C) term a ; ::_thesis: ex a being expression of C, an_Adj C st e = (non_op C) term a hence ex a being expression of C, an_Adj C st e = (non_op C) term a ; ::_thesis: verum end; suppose ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) ; ::_thesis: ex a being expression of C, an_Adj C st e = (non_op C) term a then consider a being expression of C, an_Adj C, t being expression of C, a_Type C such that A5: e = (ast C) term (a,t) ; e = [*, the carrier of C] -tree <*a,t*> by A5, Th46; then e . {} = [*, the carrier of C] by TREES_4:def_4; hence ex a being expression of C, an_Adj C st e = (non_op C) term a by A1, XTUPLE_0:1; ::_thesis: verum end; end; end; theorem Th58: :: ABCMIZ_1:58 for C being initialized ConstructorSignature for e being expression of C st e . {} = [*, the carrier of C] holds ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) proof let C be initialized ConstructorSignature; ::_thesis: for e being expression of C st e . {} = [*, the carrier of C] holds ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) let e be expression of C; ::_thesis: ( e . {} = [*, the carrier of C] implies ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) ) assume A1: e . {} = [*, the carrier of C] ; ::_thesis: ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) ast C in the carrier' of C ; then A2: e . {} in [: the carrier' of C,{ the carrier of C}:] by A1, ZFMISC_1:106; percases ( ex x being variable st e = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & e = c -trm p ) or ex a being expression of C, an_Adj C st e = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) ) by Th53; suppose ex x being variable st e = x -term C ; ::_thesis: ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) hence ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) by A2, Def27; ::_thesis: verum end; suppose ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & e = c -trm p ) ; ::_thesis: ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) then consider c being constructor OperSymbol of C, p being FinSequence of QuasiTerms C such that A3: len p = len (the_arity_of c) and A4: e = c -trm p ; e = [c, the carrier of C] -tree p by A3, A4, Def35; then e . {} = [c, the carrier of C] by TREES_4:def_4; then * = c by A1, XTUPLE_0:1; hence ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) by Def11; ::_thesis: verum end; suppose ex a being expression of C, an_Adj C st e = (non_op C) term a ; ::_thesis: ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) then consider a being expression of C, an_Adj C such that A5: e = (non_op C) term a ; e = [non_op, the carrier of C] -tree <*a*> by A5, Th43; then e . {} = [non_op, the carrier of C] by TREES_4:def_4; hence ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) by A1, XTUPLE_0:1; ::_thesis: verum end; suppose ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) ; ::_thesis: ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) hence ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) ; ::_thesis: verum end; end; end; begin definition let C be initialized ConstructorSignature; let a be expression of C, an_Adj C; func Non a -> expression of C, an_Adj C equals :Def36: :: ABCMIZ_1:def 36 a | <*0*> if ex a9 being expression of C, an_Adj C st a = (non_op C) term a9 otherwise (non_op C) term a; coherence ( ( ex a9 being expression of C, an_Adj C st a = (non_op C) term a9 implies a | <*0*> is expression of C, an_Adj C ) & ( ( for a9 being expression of C, an_Adj C holds not a = (non_op C) term a9 ) implies (non_op C) term a is expression of C, an_Adj C ) ) proof hereby ::_thesis: ( ( for a9 being expression of C, an_Adj C holds not a = (non_op C) term a9 ) implies (non_op C) term a is expression of C, an_Adj C ) given a9 being expression of C, an_Adj C such that A1: a = (non_op C) term a9 ; ::_thesis: a | <*0*> is expression of C, an_Adj C A2: a = [non_op, the carrier of C] -tree <*a9*> by A1, Th43; len <*a9*> = 1 by FINSEQ_1:40; then a | <*0*> = <*a9*> . (0 + 1) by A2, TREES_4:def_4; hence a | <*0*> is expression of C, an_Adj C by FINSEQ_1:40; ::_thesis: verum end; thus ( ( for a9 being expression of C, an_Adj C holds not a = (non_op C) term a9 ) implies (non_op C) term a is expression of C, an_Adj C ) by Th43; ::_thesis: verum end; consistency for b1 being expression of C, an_Adj C holds verum ; end; :: deftheorem Def36 defines Non ABCMIZ_1:def_36_:_ for C being initialized ConstructorSignature for a being expression of C, an_Adj C holds ( ( ex a9 being expression of C, an_Adj C st a = (non_op C) term a9 implies Non a = a | <*0*> ) & ( ( for a9 being expression of C, an_Adj C holds not a = (non_op C) term a9 ) implies Non a = (non_op C) term a ) ); definition let C be initialized ConstructorSignature; let a be expression of C, an_Adj C; attra is positive means :Def37: :: ABCMIZ_1:def 37 for a9 being expression of C, an_Adj C holds not a = (non_op C) term a9; end; :: deftheorem Def37 defines positive ABCMIZ_1:def_37_:_ for C being initialized ConstructorSignature for a being expression of C, an_Adj C holds ( a is positive iff for a9 being expression of C, an_Adj C holds not a = (non_op C) term a9 ); registration let C be initialized ConstructorSignature; cluster non pair non empty Relation-like Function-like finite DecoratedTree-like positive for expression of C, an_Adj C; existence ex b1 being expression of C, an_Adj C st b1 is positive proof consider m, a being OperSymbol of C such that the_result_sort_of m = a_Type and the_arity_of m = {} and A1: the_result_sort_of a = an_Adj and A2: the_arity_of a = {} by Def12; set X = MSVars C; root-tree [a, the carrier of C] in the Sorts of (Free (C,(MSVars C))) . an_Adj by A1, A2, MSAFREE3:5; then reconsider v = root-tree [a, the carrier of C] as expression of C, an_Adj C by Th41; take v ; ::_thesis: v is positive given a9 being expression of C, an_Adj C such that A3: v = (non_op C) term a9 ; :: according to ABCMIZ_1:def_37 ::_thesis: contradiction v = [non_op, the carrier of C] -tree <*a9*> by A3, Th43; then [non_op, the carrier of C] = v . {} by TREES_4:def_4 .= [a, the carrier of C] by TREES_4:3 ; then a = non_op C by XTUPLE_0:1; hence contradiction by A2, Def9; ::_thesis: verum end; end; theorem Th59: :: ABCMIZ_1:59 for C being initialized ConstructorSignature for a being positive expression of C, an_Adj C holds Non a = (non_op C) term a proof let C be initialized ConstructorSignature; ::_thesis: for a being positive expression of C, an_Adj C holds Non a = (non_op C) term a let a be positive expression of C, an_Adj C; ::_thesis: Non a = (non_op C) term a for a9 being expression of C, an_Adj C holds not a = (non_op C) term a9 by Def37; hence Non a = (non_op C) term a by Def36; ::_thesis: verum end; definition let C be initialized ConstructorSignature; let a be expression of C, an_Adj C; attra is negative means :Def38: :: ABCMIZ_1:def 38 ex a9 being expression of C, an_Adj C st ( a9 is positive & a = (non_op C) term a9 ); end; :: deftheorem Def38 defines negative ABCMIZ_1:def_38_:_ for C being initialized ConstructorSignature for a being expression of C, an_Adj C holds ( a is negative iff ex a9 being expression of C, an_Adj C st ( a9 is positive & a = (non_op C) term a9 ) ); registration let C be initialized ConstructorSignature; let a be positive expression of C, an_Adj C; cluster Non a -> non positive negative ; coherence ( Non a is negative & not Non a is positive ) proof thus Non a is negative ::_thesis: not Non a is positive proof take a ; :: according to ABCMIZ_1:def_38 ::_thesis: ( a is positive & Non a = (non_op C) term a ) thus ( a is positive & Non a = (non_op C) term a ) by Th59; ::_thesis: verum end; take a ; :: according to ABCMIZ_1:def_37 ::_thesis: Non a = (non_op C) term a thus Non a = (non_op C) term a by Th59; ::_thesis: verum end; end; registration let C be initialized ConstructorSignature; cluster non pair non empty Relation-like Function-like finite DecoratedTree-like non positive negative for expression of C, an_Adj C; existence ex b1 being expression of C, an_Adj C st ( b1 is negative & not b1 is positive ) proof set a = the positive expression of C, an_Adj C; take Non the positive expression of C, an_Adj C ; ::_thesis: ( Non the positive expression of C, an_Adj C is negative & not Non the positive expression of C, an_Adj C is positive ) thus ( Non the positive expression of C, an_Adj C is negative & not Non the positive expression of C, an_Adj C is positive ) ; ::_thesis: verum end; end; theorem Th60: :: ABCMIZ_1:60 for C being initialized ConstructorSignature for a being non positive expression of C, an_Adj C ex a9 being expression of C, an_Adj C st ( a = (non_op C) term a9 & Non a = a9 ) proof let C be initialized ConstructorSignature; ::_thesis: for a being non positive expression of C, an_Adj C ex a9 being expression of C, an_Adj C st ( a = (non_op C) term a9 & Non a = a9 ) let a be non positive expression of C, an_Adj C; ::_thesis: ex a9 being expression of C, an_Adj C st ( a = (non_op C) term a9 & Non a = a9 ) consider a9 being expression of C, an_Adj C such that A1: a = (non_op C) term a9 by Def37; A2: a = [non_op, the carrier of C] -tree <*a9*> by A1, Th43; take a9 ; ::_thesis: ( a = (non_op C) term a9 & Non a = a9 ) len <*a9*> = 1 by FINSEQ_1:40; then a | <*0*> = <*a9*> . (0 + 1) by A2, TREES_4:def_4 .= a9 by FINSEQ_1:40 ; hence ( a = (non_op C) term a9 & Non a = a9 ) by A1, Def36; ::_thesis: verum end; theorem Th61: :: ABCMIZ_1:61 for C being initialized ConstructorSignature for a being negative expression of C, an_Adj C ex a9 being positive expression of C, an_Adj C st ( a = (non_op C) term a9 & Non a = a9 ) proof let C be initialized ConstructorSignature; ::_thesis: for a being negative expression of C, an_Adj C ex a9 being positive expression of C, an_Adj C st ( a = (non_op C) term a9 & Non a = a9 ) let a be negative expression of C, an_Adj C; ::_thesis: ex a9 being positive expression of C, an_Adj C st ( a = (non_op C) term a9 & Non a = a9 ) consider a9 being expression of C, an_Adj C such that A1: a9 is positive and A2: a = (non_op C) term a9 by Def38; A3: a = [non_op, the carrier of C] -tree <*a9*> by A2, Th43; reconsider a9 = a9 as positive expression of C, an_Adj C by A1; take a9 ; ::_thesis: ( a = (non_op C) term a9 & Non a = a9 ) len <*a9*> = 1 by FINSEQ_1:40; then a | <*0*> = <*a9*> . (0 + 1) by A3, TREES_4:def_4 .= a9 by FINSEQ_1:40 ; hence ( a = (non_op C) term a9 & Non a = a9 ) by A2, Def36; ::_thesis: verum end; theorem Th62: :: ABCMIZ_1:62 for C being initialized ConstructorSignature for a being non positive expression of C, an_Adj C holds (non_op C) term (Non a) = a proof let C be initialized ConstructorSignature; ::_thesis: for a being non positive expression of C, an_Adj C holds (non_op C) term (Non a) = a let a be non positive expression of C, an_Adj C; ::_thesis: (non_op C) term (Non a) = a ex a9 being expression of C, an_Adj C st ( a = (non_op C) term a9 & Non a = a9 ) by Th60; hence (non_op C) term (Non a) = a ; ::_thesis: verum end; registration let C be initialized ConstructorSignature; let a be negative expression of C, an_Adj C; cluster Non a -> positive ; coherence Non a is positive proof ex a9 being positive expression of C, an_Adj C st ( a = (non_op C) term a9 & Non a = a9 ) by Th61; hence Non a is positive ; ::_thesis: verum end; end; definition let C be initialized ConstructorSignature; let a be expression of C, an_Adj C; attra is regular means :Def39: :: ABCMIZ_1:def 39 ( a is positive or a is negative ); end; :: deftheorem Def39 defines regular ABCMIZ_1:def_39_:_ for C being initialized ConstructorSignature for a being expression of C, an_Adj C holds ( a is regular iff ( a is positive or a is negative ) ); registration let C be initialized ConstructorSignature; cluster positive -> non negative regular for expression of C, an_Adj C; coherence for b1 being expression of C, an_Adj C st b1 is positive holds ( b1 is regular & not b1 is negative ) proof let a be expression of C, an_Adj C; ::_thesis: ( a is positive implies ( a is regular & not a is negative ) ) assume A1: a is positive ; ::_thesis: ( a is regular & not a is negative ) hence a is regular by Def39; ::_thesis: not a is negative thus for a9 being expression of C, an_Adj C holds ( not a9 is positive or not a = (non_op C) term a9 ) by A1, Def37; :: according to ABCMIZ_1:def_38 ::_thesis: verum end; cluster negative -> non positive regular for expression of C, an_Adj C; coherence for b1 being expression of C, an_Adj C st b1 is negative holds ( b1 is regular & not b1 is positive ) by Def39; end; registration let C be initialized ConstructorSignature; cluster non pair non empty Relation-like Function-like finite DecoratedTree-like regular for expression of C, an_Adj C; existence ex b1 being expression of C, an_Adj C st b1 is regular proof set a = the positive expression of C, an_Adj C; take the positive expression of C, an_Adj C ; ::_thesis: the positive expression of C, an_Adj C is regular thus the positive expression of C, an_Adj C is regular ; ::_thesis: verum end; end; definition let C be initialized ConstructorSignature; set X = { a where a is expression of C, an_Adj C : a is regular } ; A1: { a where a is expression of C, an_Adj C : a is regular } c= Union the Sorts of (Free (C,(MSVars C))) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in { a where a is expression of C, an_Adj C : a is regular } or x in Union the Sorts of (Free (C,(MSVars C))) ) assume x in { a where a is expression of C, an_Adj C : a is regular } ; ::_thesis: x in Union the Sorts of (Free (C,(MSVars C))) then ex a being expression of C, an_Adj C st ( x = a & a is regular ) ; hence x in Union the Sorts of (Free (C,(MSVars C))) ; ::_thesis: verum end; func QuasiAdjs C -> Subset of (Free (C,(MSVars C))) equals :: ABCMIZ_1:def 40 { a where a is expression of C, an_Adj C : a is regular } ; coherence { a where a is expression of C, an_Adj C : a is regular } is Subset of (Free (C,(MSVars C))) by A1; end; :: deftheorem defines QuasiAdjs ABCMIZ_1:def_40_:_ for C being initialized ConstructorSignature holds QuasiAdjs C = { a where a is expression of C, an_Adj C : a is regular } ; registration let C be initialized ConstructorSignature; cluster QuasiAdjs C -> non empty constituted-DTrees ; coherence ( not QuasiAdjs C is empty & QuasiAdjs C is constituted-DTrees ) proof set v = the positive expression of C, an_Adj C; the positive expression of C, an_Adj C in { a where a is expression of C, an_Adj C : a is regular } ; hence not QuasiAdjs C is empty ; ::_thesis: QuasiAdjs C is constituted-DTrees let x be set ; :: according to TREES_3:def_5 ::_thesis: ( not x in QuasiAdjs C or x is set ) assume x in QuasiAdjs C ; ::_thesis: x is set hence x is set ; ::_thesis: verum end; end; definition let C be initialized ConstructorSignature; mode quasi-adjective of C is regular expression of C, an_Adj C; end; theorem Th63: :: ABCMIZ_1:63 for z being set for C being initialized ConstructorSignature holds ( z is quasi-adjective of C iff z in QuasiAdjs C ) proof let z be set ; ::_thesis: for C being initialized ConstructorSignature holds ( z is quasi-adjective of C iff z in QuasiAdjs C ) let C be initialized ConstructorSignature; ::_thesis: ( z is quasi-adjective of C iff z in QuasiAdjs C ) ( z in QuasiAdjs C iff ex a being expression of C, an_Adj C st ( z = a & a is regular ) ) ; hence ( z is quasi-adjective of C iff z in QuasiAdjs C ) ; ::_thesis: verum end; theorem :: ABCMIZ_1:64 for z being set for C being initialized ConstructorSignature holds ( z is quasi-adjective of C iff ( z is positive expression of C, an_Adj C or z is negative expression of C, an_Adj C ) ) by Def39; registration let C be initialized ConstructorSignature; cluster non positive regular -> negative for expression of C, an_Adj C; coherence for b1 being quasi-adjective of C st not b1 is positive holds b1 is negative by Def39; cluster non negative regular -> positive for expression of C, an_Adj C; coherence for b1 being quasi-adjective of C st not b1 is negative holds b1 is positive ; end; registration let C be initialized ConstructorSignature; cluster non pair non empty Relation-like Function-like finite DecoratedTree-like positive regular for expression of C, an_Adj C; existence ex b1 being quasi-adjective of C st b1 is positive proof set a = the positive expression of C, an_Adj C; the positive expression of C, an_Adj C is quasi-adjective of C ; hence ex b1 being quasi-adjective of C st b1 is positive ; ::_thesis: verum end; cluster non pair non empty Relation-like Function-like finite DecoratedTree-like negative regular for expression of C, an_Adj C; existence ex b1 being quasi-adjective of C st b1 is negative proof set a = the negative expression of C, an_Adj C; the negative expression of C, an_Adj C is quasi-adjective of C ; hence ex b1 being quasi-adjective of C st b1 is negative ; ::_thesis: verum end; end; theorem Th65: :: ABCMIZ_1:65 for C being initialized ConstructorSignature for a being positive quasi-adjective of C ex v being constructor OperSymbol of C st ( the_result_sort_of v = an_Adj C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of v) & a = v -trm p ) ) proof let C be initialized ConstructorSignature; ::_thesis: for a being positive quasi-adjective of C ex v being constructor OperSymbol of C st ( the_result_sort_of v = an_Adj C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of v) & a = v -trm p ) ) let e be positive quasi-adjective of C; ::_thesis: ex v being constructor OperSymbol of C st ( the_result_sort_of v = an_Adj C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of v) & e = v -trm p ) ) percases ( ex x being variable st e = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & e = c -trm p ) or ex a being expression of C, an_Adj C st e = (non_op C) term a or ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) ) by Th53; suppose ex x being variable st e = x -term C ; ::_thesis: ex v being constructor OperSymbol of C st ( the_result_sort_of v = an_Adj C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of v) & e = v -trm p ) ) hence ex v being constructor OperSymbol of C st ( the_result_sort_of v = an_Adj C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of v) & e = v -trm p ) ) by Th48; ::_thesis: verum end; suppose ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & e = c -trm p ) ; ::_thesis: ex v being constructor OperSymbol of C st ( the_result_sort_of v = an_Adj C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of v) & e = v -trm p ) ) then consider c being constructor OperSymbol of C, p being FinSequence of QuasiTerms C such that A1: len p = len (the_arity_of c) and A2: e = c -trm p ; take c ; ::_thesis: ( the_result_sort_of c = an_Adj C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & e = c -trm p ) ) e is expression of C, the_result_sort_of c by A1, A2, Th52; hence the_result_sort_of c = an_Adj C by Th48; ::_thesis: ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & e = c -trm p ) take p ; ::_thesis: ( len p = len (the_arity_of c) & e = c -trm p ) thus ( len p = len (the_arity_of c) & e = c -trm p ) by A1, A2; ::_thesis: verum end; suppose ex a being expression of C, an_Adj C st e = (non_op C) term a ; ::_thesis: ex v being constructor OperSymbol of C st ( the_result_sort_of v = an_Adj C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of v) & e = v -trm p ) ) hence ex v being constructor OperSymbol of C st ( the_result_sort_of v = an_Adj C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of v) & e = v -trm p ) ) by Def37; ::_thesis: verum end; suppose ex a being expression of C, an_Adj C ex t being expression of C, a_Type C st e = (ast C) term (a,t) ; ::_thesis: ex v being constructor OperSymbol of C st ( the_result_sort_of v = an_Adj C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of v) & e = v -trm p ) ) then e is expression of C, a_Type C by Th46; hence ex v being constructor OperSymbol of C st ( the_result_sort_of v = an_Adj C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of v) & e = v -trm p ) ) by Th48; ::_thesis: verum end; end; end; theorem Th66: :: ABCMIZ_1:66 for C being initialized ConstructorSignature for p being FinSequence of QuasiTerms C for v being constructor OperSymbol of C st the_result_sort_of v = an_Adj C & len p = len (the_arity_of v) holds v -trm p is positive quasi-adjective of C proof let C be initialized ConstructorSignature; ::_thesis: for p being FinSequence of QuasiTerms C for v being constructor OperSymbol of C st the_result_sort_of v = an_Adj C & len p = len (the_arity_of v) holds v -trm p is positive quasi-adjective of C let p be FinSequence of QuasiTerms C; ::_thesis: for v being constructor OperSymbol of C st the_result_sort_of v = an_Adj C & len p = len (the_arity_of v) holds v -trm p is positive quasi-adjective of C let v be constructor OperSymbol of C; ::_thesis: ( the_result_sort_of v = an_Adj C & len p = len (the_arity_of v) implies v -trm p is positive quasi-adjective of C ) assume A1: the_result_sort_of v = an_Adj C ; ::_thesis: ( not len p = len (the_arity_of v) or v -trm p is positive quasi-adjective of C ) assume A2: len p = len (the_arity_of v) ; ::_thesis: v -trm p is positive quasi-adjective of C then reconsider a = v -trm p as expression of C, an_Adj C by A1, Th52; a is positive proof assume ex a9 being expression of C, an_Adj C st a = (non_op C) term a9 ; :: according to ABCMIZ_1:def_37 ::_thesis: contradiction hence contradiction by A2, Th54; ::_thesis: verum end; hence v -trm p is positive quasi-adjective of C ; ::_thesis: verum end; registration let C be initialized ConstructorSignature; let a be quasi-adjective of C; cluster Non a -> regular ; coherence Non a is regular proof percases ( a is positive or a is negative ) ; suppose a is positive ; ::_thesis: Non a is regular then reconsider a9 = a as positive expression of C, an_Adj C ; Non a9 is negative ; hence Non a is regular ; ::_thesis: verum end; suppose a is negative ; ::_thesis: Non a is regular then reconsider a9 = a as negative expression of C, an_Adj C ; Non a9 is positive ; hence Non a is regular ; ::_thesis: verum end; end; end; end; theorem Th67: :: ABCMIZ_1:67 for C being initialized ConstructorSignature for a being quasi-adjective of C holds Non (Non a) = a proof let C be initialized ConstructorSignature; ::_thesis: for a being quasi-adjective of C holds Non (Non a) = a let a be quasi-adjective of C; ::_thesis: Non (Non a) = a percases ( a is positive or a is negative ) ; suppose a is positive ; ::_thesis: Non (Non a) = a then reconsider a9 = a as positive expression of C, an_Adj C ; A1: ex b being positive expression of C, an_Adj C st ( Non a9 = (non_op C) term b & Non (Non a9) = b ) by Th61; Non a9 = (non_op C) term a by Th59; hence Non (Non a) = a by A1, Th44; ::_thesis: verum end; suppose a is negative ; ::_thesis: Non (Non a) = a then reconsider a9 = a as negative expression of C, an_Adj C ; ex b being positive expression of C, an_Adj C st ( a9 = (non_op C) term b & Non a9 = b ) by Th61; hence Non (Non a) = a by Th59; ::_thesis: verum end; end; end; theorem :: ABCMIZ_1:68 for C being initialized ConstructorSignature for a1, a2 being quasi-adjective of C st Non a1 = Non a2 holds a1 = a2 proof let C be initialized ConstructorSignature; ::_thesis: for a1, a2 being quasi-adjective of C st Non a1 = Non a2 holds a1 = a2 let a1, a2 be quasi-adjective of C; ::_thesis: ( Non a1 = Non a2 implies a1 = a2 ) Non (Non a1) = a1 by Th67; hence ( Non a1 = Non a2 implies a1 = a2 ) by Th67; ::_thesis: verum end; theorem :: ABCMIZ_1:69 for C being initialized ConstructorSignature for a being quasi-adjective of C holds Non a <> a proof let C be initialized ConstructorSignature; ::_thesis: for a being quasi-adjective of C holds Non a <> a let a be quasi-adjective of C; ::_thesis: Non a <> a percases ( a is positive or a is negative ) ; suppose a is positive ; ::_thesis: Non a <> a then reconsider a9 = a as positive quasi-adjective of C ; Non a9 is negative quasi-adjective of C ; hence Non a <> a ; ::_thesis: verum end; suppose a is negative ; ::_thesis: Non a <> a then reconsider a9 = a as negative quasi-adjective of C ; Non a9 is positive quasi-adjective of C ; hence Non a <> a ; ::_thesis: verum end; end; end; begin definition let C be initialized ConstructorSignature; let q be expression of C, a_Type C; attrq is pure means :Def41: :: ABCMIZ_1:def 41 for a being expression of C, an_Adj C for t being expression of C, a_Type C holds not q = (ast C) term (a,t); end; :: deftheorem Def41 defines pure ABCMIZ_1:def_41_:_ for C being initialized ConstructorSignature for q being expression of C, a_Type C holds ( q is pure iff for a being expression of C, an_Adj C for t being expression of C, a_Type C holds not q = (ast C) term (a,t) ); theorem Th70: :: ABCMIZ_1:70 for C being initialized ConstructorSignature for m being OperSymbol of C st the_result_sort_of m = a_Type & the_arity_of m = {} holds ex t being expression of C, a_Type C st ( t = root-tree [m, the carrier of C] & t is pure ) proof let C be initialized ConstructorSignature; ::_thesis: for m being OperSymbol of C st the_result_sort_of m = a_Type & the_arity_of m = {} holds ex t being expression of C, a_Type C st ( t = root-tree [m, the carrier of C] & t is pure ) let m be OperSymbol of C; ::_thesis: ( the_result_sort_of m = a_Type & the_arity_of m = {} implies ex t being expression of C, a_Type C st ( t = root-tree [m, the carrier of C] & t is pure ) ) assume that A1: the_result_sort_of m = a_Type and A2: the_arity_of m = {} ; ::_thesis: ex t being expression of C, a_Type C st ( t = root-tree [m, the carrier of C] & t is pure ) set X = MSVars C; root-tree [m, the carrier of C] in the Sorts of (Free (C,(MSVars C))) . a_Type by A1, A2, MSAFREE3:5; then reconsider T = root-tree [m, the carrier of C] as expression of C, a_Type C by Th41; take T ; ::_thesis: ( T = root-tree [m, the carrier of C] & T is pure ) thus T = root-tree [m, the carrier of C] ; ::_thesis: T is pure given a being expression of C, an_Adj C, t being expression of C, a_Type C such that A3: T = (ast C) term (a,t) ; :: according to ABCMIZ_1:def_41 ::_thesis: contradiction T = [*, the carrier of C] -tree <*a,t*> by A3, Th46; then [*, the carrier of C] = T . {} by TREES_4:def_4 .= [m, the carrier of C] by TREES_4:3 ; then m = ast C by XTUPLE_0:1; hence contradiction by A2, Def9; ::_thesis: verum end; theorem Th71: :: ABCMIZ_1:71 for C being initialized ConstructorSignature for v being OperSymbol of C st the_result_sort_of v = an_Adj & the_arity_of v = {} holds ex a being expression of C, an_Adj C st ( a = root-tree [v, the carrier of C] & a is positive ) proof let C be initialized ConstructorSignature; ::_thesis: for v being OperSymbol of C st the_result_sort_of v = an_Adj & the_arity_of v = {} holds ex a being expression of C, an_Adj C st ( a = root-tree [v, the carrier of C] & a is positive ) let m be OperSymbol of C; ::_thesis: ( the_result_sort_of m = an_Adj & the_arity_of m = {} implies ex a being expression of C, an_Adj C st ( a = root-tree [m, the carrier of C] & a is positive ) ) assume that A1: the_result_sort_of m = an_Adj and A2: the_arity_of m = {} ; ::_thesis: ex a being expression of C, an_Adj C st ( a = root-tree [m, the carrier of C] & a is positive ) set X = MSVars C; root-tree [m, the carrier of C] in the Sorts of (Free (C,(MSVars C))) . an_Adj by A1, A2, MSAFREE3:5; then reconsider T = root-tree [m, the carrier of C] as expression of C, an_Adj C by Th41; take T ; ::_thesis: ( T = root-tree [m, the carrier of C] & T is positive ) thus T = root-tree [m, the carrier of C] ; ::_thesis: T is positive given a being expression of C, an_Adj C such that A3: T = (non_op C) term a ; :: according to ABCMIZ_1:def_37 ::_thesis: contradiction T = [non_op, the carrier of C] -tree <*a*> by A3, Th43; then [non_op, the carrier of C] = T . {} by TREES_4:def_4 .= [m, the carrier of C] by TREES_4:3 ; then m = non_op by XTUPLE_0:1; hence contradiction by A2, Def9; ::_thesis: verum end; registration let C be initialized ConstructorSignature; cluster non pair non empty Relation-like Function-like finite DecoratedTree-like pure for expression of C, a_Type C; existence ex b1 being expression of C, a_Type C st b1 is pure proof consider m, a being OperSymbol of C such that A1: the_result_sort_of m = a_Type and A2: the_arity_of m = {} and the_result_sort_of a = an_Adj and the_arity_of a = {} by Def12; ex t being expression of C, a_Type C st ( t = root-tree [m, the carrier of C] & t is pure ) by A1, A2, Th70; hence ex b1 being expression of C, a_Type C st b1 is pure ; ::_thesis: verum end; end; definition let C be initialized ConstructorSignature; func QuasiTypes C -> set equals :: ABCMIZ_1:def 42 { [A,t] where t is expression of C, a_Type C, A is finite Subset of (QuasiAdjs C) : t is pure } ; coherence { [A,t] where t is expression of C, a_Type C, A is finite Subset of (QuasiAdjs C) : t is pure } is set ; end; :: deftheorem defines QuasiTypes ABCMIZ_1:def_42_:_ for C being initialized ConstructorSignature holds QuasiTypes C = { [A,t] where t is expression of C, a_Type C, A is finite Subset of (QuasiAdjs C) : t is pure } ; registration let C be initialized ConstructorSignature; cluster QuasiTypes C -> non empty ; coherence not QuasiTypes C is empty proof set q = the pure expression of C, a_Type C; {} is finite Subset of (QuasiAdjs C) by XBOOLE_1:2; then [{}, the pure expression of C, a_Type C] in { [A,t] where t is expression of C, a_Type C, A is finite Subset of (QuasiAdjs C) : t is pure } ; hence not QuasiTypes C is empty ; ::_thesis: verum end; end; definition let C be initialized ConstructorSignature; mode quasi-type of C -> set means :Def43: :: ABCMIZ_1:def 43 it in QuasiTypes C; existence ex b1 being set st b1 in QuasiTypes C proof set T = the Element of QuasiTypes C; take the Element of QuasiTypes C ; ::_thesis: the Element of QuasiTypes C in QuasiTypes C thus the Element of QuasiTypes C in QuasiTypes C ; ::_thesis: verum end; end; :: deftheorem Def43 defines quasi-type ABCMIZ_1:def_43_:_ for C being initialized ConstructorSignature for b2 being set holds ( b2 is quasi-type of C iff b2 in QuasiTypes C ); theorem Th72: :: ABCMIZ_1:72 for z being set for C being initialized ConstructorSignature holds ( z is quasi-type of C iff ex A being finite Subset of (QuasiAdjs C) ex q being pure expression of C, a_Type C st z = [A,q] ) proof let z be set ; ::_thesis: for C being initialized ConstructorSignature holds ( z is quasi-type of C iff ex A being finite Subset of (QuasiAdjs C) ex q being pure expression of C, a_Type C st z = [A,q] ) let C be initialized ConstructorSignature; ::_thesis: ( z is quasi-type of C iff ex A being finite Subset of (QuasiAdjs C) ex q being pure expression of C, a_Type C st z = [A,q] ) ( z in QuasiTypes C iff ex t being expression of C, a_Type C ex A being finite Subset of (QuasiAdjs C) st ( z = [A,t] & t is pure ) ) ; hence ( z is quasi-type of C iff ex A being finite Subset of (QuasiAdjs C) ex q being pure expression of C, a_Type C st z = [A,q] ) by Def43; ::_thesis: verum end; theorem Th73: :: ABCMIZ_1:73 for x, y being set for C being initialized ConstructorSignature holds ( [x,y] is quasi-type of C iff ( x is finite Subset of (QuasiAdjs C) & y is pure expression of C, a_Type C ) ) proof let x, y be set ; ::_thesis: for C being initialized ConstructorSignature holds ( [x,y] is quasi-type of C iff ( x is finite Subset of (QuasiAdjs C) & y is pure expression of C, a_Type C ) ) let C be initialized ConstructorSignature; ::_thesis: ( [x,y] is quasi-type of C iff ( x is finite Subset of (QuasiAdjs C) & y is pure expression of C, a_Type C ) ) hereby ::_thesis: ( x is finite Subset of (QuasiAdjs C) & y is pure expression of C, a_Type C implies [x,y] is quasi-type of C ) assume [x,y] is quasi-type of C ; ::_thesis: ( x is finite Subset of (QuasiAdjs C) & y is pure expression of C, a_Type C ) then ex A being finite Subset of (QuasiAdjs C) ex q being pure expression of C, a_Type C st [x,y] = [A,q] by Th72; hence ( x is finite Subset of (QuasiAdjs C) & y is pure expression of C, a_Type C ) by XTUPLE_0:1; ::_thesis: verum end; thus ( x is finite Subset of (QuasiAdjs C) & y is pure expression of C, a_Type C implies [x,y] is quasi-type of C ) by Th72; ::_thesis: verum end; registration let C be initialized ConstructorSignature; cluster -> pair for quasi-type of C; coherence for b1 being quasi-type of C holds b1 is pair proof let x be quasi-type of C; ::_thesis: x is pair ex A being finite Subset of (QuasiAdjs C) ex q being pure expression of C, a_Type C st x = [A,q] by Th72; hence x is pair ; ::_thesis: verum end; end; theorem Th74: :: ABCMIZ_1:74 for C being initialized ConstructorSignature for q being pure expression of C, a_Type C ex m being constructor OperSymbol of C st ( the_result_sort_of m = a_Type C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of m) & q = m -trm p ) ) proof let C be initialized ConstructorSignature; ::_thesis: for q being pure expression of C, a_Type C ex m being constructor OperSymbol of C st ( the_result_sort_of m = a_Type C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of m) & q = m -trm p ) ) let q be pure expression of C, a_Type C; ::_thesis: ex m being constructor OperSymbol of C st ( the_result_sort_of m = a_Type C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of m) & q = m -trm p ) ) set e = q; percases ( ex x being variable st q = x -term C or ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & q = c -trm p ) or ex a being expression of C, an_Adj C st q = (non_op C) term a or ex a being expression of C, an_Adj C ex q being expression of C, a_Type C st q = (ast C) term (a,q) ) by Th53; suppose ex x being variable st q = x -term C ; ::_thesis: ex m being constructor OperSymbol of C st ( the_result_sort_of m = a_Type C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of m) & q = m -trm p ) ) hence ex m being constructor OperSymbol of C st ( the_result_sort_of m = a_Type C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of m) & q = m -trm p ) ) by Th48; ::_thesis: verum end; suppose ex c being constructor OperSymbol of C ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & q = c -trm p ) ; ::_thesis: ex m being constructor OperSymbol of C st ( the_result_sort_of m = a_Type C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of m) & q = m -trm p ) ) then consider c being constructor OperSymbol of C, p being FinSequence of QuasiTerms C such that A1: len p = len (the_arity_of c) and A2: q = c -trm p ; take c ; ::_thesis: ( the_result_sort_of c = a_Type C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & q = c -trm p ) ) q is expression of C, the_result_sort_of c by A1, A2, Th52; hence the_result_sort_of c = a_Type C by Th48; ::_thesis: ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of c) & q = c -trm p ) take p ; ::_thesis: ( len p = len (the_arity_of c) & q = c -trm p ) thus ( len p = len (the_arity_of c) & q = c -trm p ) by A1, A2; ::_thesis: verum end; suppose ex a being expression of C, an_Adj C st q = (non_op C) term a ; ::_thesis: ex m being constructor OperSymbol of C st ( the_result_sort_of m = a_Type C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of m) & q = m -trm p ) ) then q is expression of C, an_Adj C by Th43; hence ex m being constructor OperSymbol of C st ( the_result_sort_of m = a_Type C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of m) & q = m -trm p ) ) by Th48; ::_thesis: verum end; suppose ex a being expression of C, an_Adj C ex q being expression of C, a_Type C st q = (ast C) term (a,q) ; ::_thesis: ex m being constructor OperSymbol of C st ( the_result_sort_of m = a_Type C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of m) & q = m -trm p ) ) hence ex m being constructor OperSymbol of C st ( the_result_sort_of m = a_Type C & ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of m) & q = m -trm p ) ) by Def41; ::_thesis: verum end; end; end; theorem Th75: :: ABCMIZ_1:75 for C being initialized ConstructorSignature for p being FinSequence of QuasiTerms C for m being constructor OperSymbol of C st the_result_sort_of m = a_Type C & len p = len (the_arity_of m) holds m -trm p is pure expression of C, a_Type C proof let C be initialized ConstructorSignature; ::_thesis: for p being FinSequence of QuasiTerms C for m being constructor OperSymbol of C st the_result_sort_of m = a_Type C & len p = len (the_arity_of m) holds m -trm p is pure expression of C, a_Type C let p be FinSequence of QuasiTerms C; ::_thesis: for m being constructor OperSymbol of C st the_result_sort_of m = a_Type C & len p = len (the_arity_of m) holds m -trm p is pure expression of C, a_Type C let v be constructor OperSymbol of C; ::_thesis: ( the_result_sort_of v = a_Type C & len p = len (the_arity_of v) implies v -trm p is pure expression of C, a_Type C ) assume A1: the_result_sort_of v = a_Type C ; ::_thesis: ( not len p = len (the_arity_of v) or v -trm p is pure expression of C, a_Type C ) assume A2: len p = len (the_arity_of v) ; ::_thesis: v -trm p is pure expression of C, a_Type C then reconsider a = v -trm p as expression of C, a_Type C by A1, Th52; a is pure proof assume ex a9 being expression of C, an_Adj C ex t being expression of C, a_Type C st a = (ast C) term (a9,t) ; :: according to ABCMIZ_1:def_41 ::_thesis: contradiction hence contradiction by A2, Th55; ::_thesis: verum end; hence v -trm p is pure expression of C, a_Type C ; ::_thesis: verum end; theorem :: ABCMIZ_1:76 for C being initialized ConstructorSignature holds ( QuasiTerms C misses QuasiAdjs C & QuasiTerms C misses QuasiTypes C & QuasiTypes C misses QuasiAdjs C ) proof let C be initialized ConstructorSignature; ::_thesis: ( QuasiTerms C misses QuasiAdjs C & QuasiTerms C misses QuasiTypes C & QuasiTypes C misses QuasiAdjs C ) set X = MSVars C; set Y = (MSVars C) \/ ( the carrier of C --> {0}); ex A being MSSubset of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) st ( Free (C,(MSVars C)) = GenMSAlg A & A = (Reverse ((MSVars C) \/ ( the carrier of C --> {0}))) "" (MSVars C) ) by MSAFREE3:def_1; then the Sorts of (Free (C,(MSVars C))) is MSSubset of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) by MSUALG_2:def_9; then A1: the Sorts of (Free (C,(MSVars C))) c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) by PBOOLE:def_18; then A2: QuasiTerms C c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . (a_Term C) by PBOOLE:def_2; A3: the Sorts of (Free (C,(MSVars C))) . (an_Adj C) c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . (an_Adj C) by A1, PBOOLE:def_2; QuasiAdjs C c= the Sorts of (Free (C,(MSVars C))) . (an_Adj C) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in QuasiAdjs C or x in the Sorts of (Free (C,(MSVars C))) . (an_Adj C) ) assume x in QuasiAdjs C ; ::_thesis: x in the Sorts of (Free (C,(MSVars C))) . (an_Adj C) then ex a being expression of C, an_Adj C st ( x = a & a is regular ) ; hence x in the Sorts of (Free (C,(MSVars C))) . (an_Adj C) by Def28; ::_thesis: verum end; then A4: QuasiAdjs C c= the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . (an_Adj C) by A3, XBOOLE_1:1; the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . (a_Term C) misses the Sorts of (FreeMSA ((MSVars C) \/ ( the carrier of C --> {0}))) . (an_Adj C) by PROB_2:def_2; hence QuasiTerms C misses QuasiAdjs C by A2, A4, XBOOLE_1:64; ::_thesis: ( QuasiTerms C misses QuasiTypes C & QuasiTypes C misses QuasiAdjs C ) now__::_thesis:_for_x_being_set_st_x_in_QuasiTerms_C_holds_ not_x_in_QuasiTypes_C let x be set ; ::_thesis: ( x in QuasiTerms C implies not x in QuasiTypes C ) assume that A5: x in QuasiTerms C and A6: x in QuasiTypes C ; ::_thesis: contradiction x is quasi-type of C by A6, Def43; hence contradiction by A5; ::_thesis: verum end; hence QuasiTerms C misses QuasiTypes C by XBOOLE_0:3; ::_thesis: QuasiTypes C misses QuasiAdjs C now__::_thesis:_for_x_being_set_st_x_in_QuasiAdjs_C_holds_ not_x_in_QuasiTypes_C let x be set ; ::_thesis: ( x in QuasiAdjs C implies not x in QuasiTypes C ) assume that A7: x in QuasiAdjs C and A8: x in QuasiTypes C ; ::_thesis: contradiction x is quasi-type of C by A8, Def43; hence contradiction by A7; ::_thesis: verum end; hence QuasiTypes C misses QuasiAdjs C by XBOOLE_0:3; ::_thesis: verum end; theorem :: ABCMIZ_1:77 for C being initialized ConstructorSignature for e being set holds ( ( e is quasi-term of C implies not e is quasi-adjective of C ) & ( e is quasi-term of C implies not e is quasi-type of C ) & ( e is quasi-type of C implies not e is quasi-adjective of C ) ) by Th48; notation let C be initialized ConstructorSignature; let A be finite Subset of (QuasiAdjs C); let q be pure expression of C, a_Type C; synonym A ast q for [C,A]; end; definition let C be initialized ConstructorSignature; let A be finite Subset of (QuasiAdjs C); let q be pure expression of C, a_Type C; :: original: ast redefine funcA ast q -> quasi-type of C; coherence q ast is quasi-type of C by Th73; end; registration let C be initialized ConstructorSignature; let T be quasi-type of C; cluster vars T -> finite ; coherence T `1 is finite proof ex A being finite Subset of (QuasiAdjs C) ex q being pure expression of C, a_Type C st T = [A,q] by Th72; hence T `1 is finite by MCART_1:7; ::_thesis: verum end; end; notation let C be initialized ConstructorSignature; let T be quasi-type of C; synonym adjs T for C `1 ; synonym the_base_of T for C `2 ; end; definition let C be initialized ConstructorSignature; let T be quasi-type of C; :: original: vars redefine func adjs T -> Subset of (QuasiAdjs C); coherence vars T is Subset of (QuasiAdjs C) proof ex A being finite Subset of (QuasiAdjs C) ex q being pure expression of C, a_Type C st T = [A,q] by Th72; hence vars T is Subset of (QuasiAdjs C) by MCART_1:7; ::_thesis: verum end; :: original: the_base_of redefine func the_base_of T -> pure expression of C, a_Type C; coherence the_base_of is pure expression of C, a_Type C proof ex A being finite Subset of (QuasiAdjs C) ex q being pure expression of C, a_Type C st T = [A,q] by Th72; hence the_base_of is pure expression of C, a_Type C by MCART_1:7; ::_thesis: verum end; end; theorem :: ABCMIZ_1:78 for C being initialized ConstructorSignature for q being pure expression of C, a_Type C for A being finite Subset of (QuasiAdjs C) holds ( adjs (A ast q) = A & the_base_of (A ast q) = q ) ; theorem :: ABCMIZ_1:79 for C being initialized ConstructorSignature for A1, A2 being finite Subset of (QuasiAdjs C) for q1, q2 being pure expression of C, a_Type C st A1 ast q1 = A2 ast q2 holds ( A1 = A2 & q1 = q2 ) by XTUPLE_0:1; theorem Th80: :: ABCMIZ_1:80 for C being initialized ConstructorSignature for T being quasi-type of C holds T = (adjs T) ast (the_base_of T) proof let C be initialized ConstructorSignature; ::_thesis: for T being quasi-type of C holds T = (adjs T) ast (the_base_of T) let T be quasi-type of C; ::_thesis: T = (adjs T) ast (the_base_of T) thus T = (adjs T) ast (the_base_of T) ; ::_thesis: verum end; theorem :: ABCMIZ_1:81 for C being initialized ConstructorSignature for T1, T2 being quasi-type of C st adjs T1 = adjs T2 & the_base_of T1 = the_base_of T2 holds T1 = T2 proof let C be initialized ConstructorSignature; ::_thesis: for T1, T2 being quasi-type of C st adjs T1 = adjs T2 & the_base_of T1 = the_base_of T2 holds T1 = T2 let T1, T2 be quasi-type of C; ::_thesis: ( adjs T1 = adjs T2 & the_base_of T1 = the_base_of T2 implies T1 = T2 ) T1 = (adjs T1) ast (the_base_of T1) ; hence ( adjs T1 = adjs T2 & the_base_of T1 = the_base_of T2 implies T1 = T2 ) by Th80; ::_thesis: verum end; definition let C be initialized ConstructorSignature; let T be quasi-type of C; let a be quasi-adjective of C; funca ast T -> quasi-type of C equals :: ABCMIZ_1:def 44 [({a} \/ (adjs T)),(the_base_of T)]; coherence [({a} \/ (adjs T)),(the_base_of T)] is quasi-type of C proof a in QuasiAdjs C ; then {a} c= QuasiAdjs C by ZFMISC_1:31; then {a} \/ (adjs T) is Subset of (QuasiAdjs C) by XBOOLE_1:8; hence [({a} \/ (adjs T)),(the_base_of T)] is quasi-type of C by Th73; ::_thesis: verum end; end; :: deftheorem defines ast ABCMIZ_1:def_44_:_ for C being initialized ConstructorSignature for T being quasi-type of C for a being quasi-adjective of C holds a ast T = [({a} \/ (adjs T)),(the_base_of T)]; theorem :: ABCMIZ_1:82 for C being initialized ConstructorSignature for T being quasi-type of C for a being quasi-adjective of C holds ( adjs (a ast T) = {a} \/ (adjs T) & the_base_of (a ast T) = the_base_of T ) by MCART_1:7; theorem :: ABCMIZ_1:83 for C being initialized ConstructorSignature for T being quasi-type of C for a being quasi-adjective of C holds a ast (a ast T) = a ast T proof let C be initialized ConstructorSignature; ::_thesis: for T being quasi-type of C for a being quasi-adjective of C holds a ast (a ast T) = a ast T let T be quasi-type of C; ::_thesis: for a being quasi-adjective of C holds a ast (a ast T) = a ast T let a be quasi-adjective of C; ::_thesis: a ast (a ast T) = a ast T thus a ast (a ast T) = [({a} \/ ({a} \/ (adjs T))),(the_base_of (a ast T))] by MCART_1:7 .= [(({a} \/ {a}) \/ (adjs T)),(the_base_of (a ast T))] by XBOOLE_1:4 .= a ast T by MCART_1:7 ; ::_thesis: verum end; theorem :: ABCMIZ_1:84 for C being initialized ConstructorSignature for T being quasi-type of C for a, b being quasi-adjective of C holds a ast (b ast T) = b ast (a ast T) proof let C be initialized ConstructorSignature; ::_thesis: for T being quasi-type of C for a, b being quasi-adjective of C holds a ast (b ast T) = b ast (a ast T) let T be quasi-type of C; ::_thesis: for a, b being quasi-adjective of C holds a ast (b ast T) = b ast (a ast T) let a, b be quasi-adjective of C; ::_thesis: a ast (b ast T) = b ast (a ast T) thus a ast (b ast T) = [({a} \/ ({b} \/ (adjs T))),(the_base_of (b ast T))] by MCART_1:7 .= [({b} \/ ({a} \/ (adjs T))),(the_base_of (b ast T))] by XBOOLE_1:4 .= [({b} \/ ({a} \/ (adjs T))),(the_base_of T)] by MCART_1:7 .= [({b} \/ (adjs (a ast T))),(the_base_of T)] by MCART_1:7 .= b ast (a ast T) by MCART_1:7 ; ::_thesis: verum end; begin registration let S be non void Signature; let s be SortSymbol of S; let X be V8() ManySortedSet of the carrier of S; let t be Term of S,X; cluster(variables_in t) . s -> finite ; coherence (variables_in t) . s is finite proof defpred S1[ non empty Relation] means for s being SortSymbol of S holds (S variables_in S) . s is finite ; A1: for z being SortSymbol of S for v being Element of X . z holds S1[ root-tree [v,z]] proof let z be SortSymbol of S; ::_thesis: for v being Element of X . z holds S1[ root-tree [v,z]] let v be Element of X . z; ::_thesis: S1[ root-tree [v,z]] let s be SortSymbol of S; ::_thesis: (S variables_in (root-tree [v,z])) . s is finite ( s = z or s <> z ) ; hence (S variables_in (root-tree [v,z])) . s is finite by MSAFREE3:10; ::_thesis: verum end; A2: for o being OperSymbol of S for p being ArgumentSeq of Sym (o,X) st ( for t being Term of S,X st t in rng p holds S1[t] ) holds S1[[o, the carrier of S] -tree p] proof let o be OperSymbol of S; ::_thesis: for p being ArgumentSeq of Sym (o,X) st ( for t being Term of S,X st t in rng p holds S1[t] ) holds S1[[o, the carrier of S] -tree p] let p be ArgumentSeq of Sym (o,X); ::_thesis: ( ( for t being Term of S,X st t in rng p holds S1[t] ) implies S1[[o, the carrier of S] -tree p] ) assume A3: for t being Term of S,X st t in rng p holds for s being SortSymbol of S holds (S variables_in t) . s is finite ; ::_thesis: S1[[o, the carrier of S] -tree p] let s be SortSymbol of S; ::_thesis: (S variables_in ([o, the carrier of S] -tree p)) . s is finite deffunc H2( Term of S,X) -> set = (S variables_in S) . s; set A = { H2(q) where q is Term of S,X : q in rng p } ; A4: rng p is finite ; A5: { H2(q) where q is Term of S,X : q in rng p } is finite from FRAENKEL:sch_21(A4); now__::_thesis:_for_B_being_set_st_B_in__{__H2(q)_where_q_is_Term_of_S,X_:_q_in_rng_p__}__holds_ B_is_finite let B be set ; ::_thesis: ( B in { H2(q) where q is Term of S,X : q in rng p } implies B is finite ) assume B in { H2(q) where q is Term of S,X : q in rng p } ; ::_thesis: B is finite then ex q being Term of S,X st ( B = (S variables_in q) . s & q in rng p ) ; hence B is finite by A3; ::_thesis: verum end; then A6: union { H2(q) where q is Term of S,X : q in rng p } is finite by A5, FINSET_1:7; (S variables_in ([o, the carrier of S] -tree p)) . s c= union { H2(q) where q is Term of S,X : q in rng p } proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in (S variables_in ([o, the carrier of S] -tree p)) . s or x in union { H2(q) where q is Term of S,X : q in rng p } ) assume x in (S variables_in ([o, the carrier of S] -tree p)) . s ; ::_thesis: x in union { H2(q) where q is Term of S,X : q in rng p } then consider t being DecoratedTree such that A7: t in rng p and A8: x in (S variables_in t) . s by MSAFREE3:11; consider i being set such that A9: i in dom p and A10: t = p . i by A7, FUNCT_1:def_3; reconsider i = i as Nat by A9; reconsider t = p . i as Term of S,X by A9, MSATERM:22; (S variables_in t) . s in { H2(q) where q is Term of S,X : q in rng p } by A7, A10; hence x in union { H2(q) where q is Term of S,X : q in rng p } by A8, A10, TARSKI:def_4; ::_thesis: verum end; hence (S variables_in ([o, the carrier of S] -tree p)) . s is finite by A6; ::_thesis: verum end; for t being Term of S,X holds S1[t] from MSATERM:sch_1(A1, A2); hence (variables_in t) . s is finite ; ::_thesis: verum end; end; registration let S be non void Signature; let s be SortSymbol of S; let X be V9() ManySortedSet of the carrier of S; let t be Element of (Free (S,X)); cluster(S variables_in t) . s -> finite ; coherence (S variables_in t) . s is finite proof reconsider t = t as Term of S,(X \/ ( the carrier of S --> {0})) by MSAFREE3:8; (S variables_in t) . s = (variables_in t) . s ; hence (S variables_in t) . s is finite ; ::_thesis: verum end; end; definition let S be non void Signature; let X be V9() ManySortedSet of the carrier of S; let s be SortSymbol of S; func(X,s) variables_in -> Function of (Union the Sorts of (Free (S,X))),(bool (X . s)) means :Def45: :: ABCMIZ_1:def 45 for t being Element of (Free (S,X)) holds it . t = (S variables_in t) . s; uniqueness for b1, b2 being Function of (Union the Sorts of (Free (S,X))),(bool (X . s)) st ( for t being Element of (Free (S,X)) holds b1 . t = (S variables_in t) . s ) & ( for t being Element of (Free (S,X)) holds b2 . t = (S variables_in t) . s ) holds b1 = b2 proof let f1, f2 be Function of (Union the Sorts of (Free (S,X))),(bool (X . s)); ::_thesis: ( ( for t being Element of (Free (S,X)) holds f1 . t = (S variables_in t) . s ) & ( for t being Element of (Free (S,X)) holds f2 . t = (S variables_in t) . s ) implies f1 = f2 ) assume that A1: for t being Element of (Free (S,X)) holds f1 . t = (S variables_in t) . s and A2: for t being Element of (Free (S,X)) holds f2 . t = (S variables_in t) . s ; ::_thesis: f1 = f2 now__::_thesis:_for_x_being_Element_of_Union_the_Sorts_of_(Free_(S,X))_holds_f1_._x_=_f2_._x let x be Element of Union the Sorts of (Free (S,X)); ::_thesis: f1 . x = f2 . x reconsider t = x as Element of (Free (S,X)) ; thus f1 . x = (S variables_in t) . s by A1 .= f2 . x by A2 ; ::_thesis: verum end; hence f1 = f2 by FUNCT_2:63; ::_thesis: verum end; existence ex b1 being Function of (Union the Sorts of (Free (S,X))),(bool (X . s)) st for t being Element of (Free (S,X)) holds b1 . t = (S variables_in t) . s proof defpred S1[ set , set ] means ex t being Element of (Free (S,X)) st ( t = $1 & $2 = (S variables_in t) . s ); A3: now__::_thesis:_for_x_being_set_st_x_in_Union_the_Sorts_of_(Free_(S,X))_holds_ ex_y_being_set_st_ (_y_in_bool_(X_._s)_&_S1[x,y]_) let x be set ; ::_thesis: ( x in Union the Sorts of (Free (S,X)) implies ex y being set st ( y in bool (X . s) & S1[x,y] ) ) assume x in Union the Sorts of (Free (S,X)) ; ::_thesis: ex y being set st ( y in bool (X . s) & S1[x,y] ) then reconsider t = x as Element of (Free (S,X)) ; S variables_in t c= X by MSAFREE3:27; then (S variables_in t) . s c= X . s by PBOOLE:def_2; hence ex y being set st ( y in bool (X . s) & S1[x,y] ) ; ::_thesis: verum end; consider f being Function such that A4: ( dom f = Union the Sorts of (Free (S,X)) & rng f c= bool (X . s) ) and A5: for x being set st x in Union the Sorts of (Free (S,X)) holds S1[x,f . x] from FUNCT_1:sch_5(A3); reconsider f = f as Function of (Union the Sorts of (Free (S,X))),(bool (X . s)) by A4, FUNCT_2:2; take f ; ::_thesis: for t being Element of (Free (S,X)) holds f . t = (S variables_in t) . s let x be Element of (Free (S,X)); ::_thesis: f . x = (S variables_in x) . s ex t being Element of (Free (S,X)) st ( t = x & f . x = (S variables_in t) . s ) by A5; hence f . x = (S variables_in x) . s ; ::_thesis: verum end; end; :: deftheorem Def45 defines variables_in ABCMIZ_1:def_45_:_ for S being non void Signature for X being V9() ManySortedSet of the carrier of S for s being SortSymbol of S for b4 being Function of (Union the Sorts of (Free (S,X))),(bool (X . s)) holds ( b4 = (X,s) variables_in iff for t being Element of (Free (S,X)) holds b4 . t = (S variables_in t) . s ); definition let C be initialized ConstructorSignature; let e be expression of C; func variables_in e -> Subset of Vars equals :: ABCMIZ_1:def 46 (C variables_in e) . (a_Term C); coherence (C variables_in e) . (a_Term C) is Subset of Vars proof A1: (MSVars C) . (a_Term C) = Vars by Def25; C variables_in e c= MSVars C by MSAFREE3:27; hence (C variables_in e) . (a_Term C) is Subset of Vars by A1, PBOOLE:def_2; ::_thesis: verum end; end; :: deftheorem defines variables_in ABCMIZ_1:def_46_:_ for C being initialized ConstructorSignature for e being expression of C holds variables_in e = (C variables_in e) . (a_Term C); registration let C be initialized ConstructorSignature; let e be expression of C; cluster variables_in e -> finite ; coherence variables_in e is finite ; end; definition let C be initialized ConstructorSignature; let e be expression of C; func vars e -> finite Subset of Vars equals :: ABCMIZ_1:def 47 varcl (variables_in e); coherence varcl (variables_in e) is finite Subset of Vars by Th24; end; :: deftheorem defines vars ABCMIZ_1:def_47_:_ for C being initialized ConstructorSignature for e being expression of C holds vars e = varcl (variables_in e); theorem :: ABCMIZ_1:85 for C being initialized ConstructorSignature for e being expression of C holds varcl (vars e) = vars e ; theorem :: ABCMIZ_1:86 for C being initialized ConstructorSignature for x being variable holds variables_in (x -term C) = {x} by MSAFREE3:10; theorem :: ABCMIZ_1:87 for C being initialized ConstructorSignature for x being variable holds vars (x -term C) = {x} \/ (vars x) proof let C be initialized ConstructorSignature; ::_thesis: for x being variable holds vars (x -term C) = {x} \/ (vars x) let x be variable; ::_thesis: vars (x -term C) = {x} \/ (vars x) thus vars (x -term C) = varcl {x} by MSAFREE3:10 .= {x} \/ (vars x) by Th27 ; ::_thesis: verum end; theorem Th88: :: ABCMIZ_1:88 for C being initialized ConstructorSignature for c being constructor OperSymbol of C for e being expression of C for p being DTree-yielding FinSequence st e = [c, the carrier of C] -tree p holds variables_in e = union { (variables_in t) where t is quasi-term of C : t in rng p } proof let C be initialized ConstructorSignature; ::_thesis: for c being constructor OperSymbol of C for e being expression of C for p being DTree-yielding FinSequence st e = [c, the carrier of C] -tree p holds variables_in e = union { (variables_in t) where t is quasi-term of C : t in rng p } let c be constructor OperSymbol of C; ::_thesis: for e being expression of C for p being DTree-yielding FinSequence st e = [c, the carrier of C] -tree p holds variables_in e = union { (variables_in t) where t is quasi-term of C : t in rng p } let e be expression of C; ::_thesis: for p being DTree-yielding FinSequence st e = [c, the carrier of C] -tree p holds variables_in e = union { (variables_in t) where t is quasi-term of C : t in rng p } let p be DTree-yielding FinSequence; ::_thesis: ( e = [c, the carrier of C] -tree p implies variables_in e = union { (variables_in t) where t is quasi-term of C : t in rng p } ) set X = { (variables_in t) where t is quasi-term of C : t in rng p } ; assume A1: e = [c, the carrier of C] -tree p ; ::_thesis: variables_in e = union { (variables_in t) where t is quasi-term of C : t in rng p } then p in (QuasiTerms C) * by Th51; then p is FinSequence of QuasiTerms C by FINSEQ_1:def_11; then A2: rng p c= QuasiTerms C by FINSEQ_1:def_4; thus variables_in e c= union { (variables_in t) where t is quasi-term of C : t in rng p } :: according to XBOOLE_0:def_10 ::_thesis: union { (variables_in t) where t is quasi-term of C : t in rng p } c= variables_in e proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in variables_in e or a in union { (variables_in t) where t is quasi-term of C : t in rng p } ) assume a in variables_in e ; ::_thesis: a in union { (variables_in t) where t is quasi-term of C : t in rng p } then consider t being DecoratedTree such that A3: t in rng p and A4: a in (C variables_in t) . (a_Term C) by A1, MSAFREE3:11; reconsider t = t as quasi-term of C by A2, A3, Th41; variables_in t in { (variables_in t) where t is quasi-term of C : t in rng p } by A3; hence a in union { (variables_in t) where t is quasi-term of C : t in rng p } by A4, TARSKI:def_4; ::_thesis: verum end; let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in union { (variables_in t) where t is quasi-term of C : t in rng p } or a in variables_in e ) assume a in union { (variables_in t) where t is quasi-term of C : t in rng p } ; ::_thesis: a in variables_in e then consider Y being set such that A5: a in Y and A6: Y in { (variables_in t) where t is quasi-term of C : t in rng p } by TARSKI:def_4; ex t being quasi-term of C st ( Y = variables_in t & t in rng p ) by A6; hence a in variables_in e by A1, A5, MSAFREE3:11; ::_thesis: verum end; theorem Th89: :: ABCMIZ_1:89 for C being initialized ConstructorSignature for c being constructor OperSymbol of C for e being expression of C for p being DTree-yielding FinSequence st e = [c, the carrier of C] -tree p holds vars e = union { (vars t) where t is quasi-term of C : t in rng p } proof let C be initialized ConstructorSignature; ::_thesis: for c being constructor OperSymbol of C for e being expression of C for p being DTree-yielding FinSequence st e = [c, the carrier of C] -tree p holds vars e = union { (vars t) where t is quasi-term of C : t in rng p } let c be constructor OperSymbol of C; ::_thesis: for e being expression of C for p being DTree-yielding FinSequence st e = [c, the carrier of C] -tree p holds vars e = union { (vars t) where t is quasi-term of C : t in rng p } let e be expression of C; ::_thesis: for p being DTree-yielding FinSequence st e = [c, the carrier of C] -tree p holds vars e = union { (vars t) where t is quasi-term of C : t in rng p } let p be DTree-yielding FinSequence; ::_thesis: ( e = [c, the carrier of C] -tree p implies vars e = union { (vars t) where t is quasi-term of C : t in rng p } ) assume A1: e = [c, the carrier of C] -tree p ; ::_thesis: vars e = union { (vars t) where t is quasi-term of C : t in rng p } set A = { (variables_in t) where t is quasi-term of C : t in rng p } ; set B = { (vars t) where t is quasi-term of C : t in rng p } ; percases ( { (variables_in t) where t is quasi-term of C : t in rng p } = {} or { (variables_in t) where t is quasi-term of C : t in rng p } <> {} ) ; supposeA2: { (variables_in t) where t is quasi-term of C : t in rng p } = {} ; ::_thesis: vars e = union { (vars t) where t is quasi-term of C : t in rng p } set b = the Element of { (vars t) where t is quasi-term of C : t in rng p } ; now__::_thesis:_not__{__(vars_t)_where_t_is_quasi-term_of_C_:_t_in_rng_p__}__<>_{} assume { (vars t) where t is quasi-term of C : t in rng p } <> {} ; ::_thesis: contradiction then the Element of { (vars t) where t is quasi-term of C : t in rng p } in { (vars t) where t is quasi-term of C : t in rng p } ; then consider t being quasi-term of C such that the Element of { (vars t) where t is quasi-term of C : t in rng p } = vars t and A3: t in rng p ; variables_in t in { (variables_in t) where t is quasi-term of C : t in rng p } by A3; hence contradiction by A2; ::_thesis: verum end; hence vars e = union { (vars t) where t is quasi-term of C : t in rng p } by A1, A2, Th8, Th88, ZFMISC_1:2; ::_thesis: verum end; suppose { (variables_in t) where t is quasi-term of C : t in rng p } <> {} ; ::_thesis: vars e = union { (vars t) where t is quasi-term of C : t in rng p } then reconsider A = { (variables_in t) where t is quasi-term of C : t in rng p } as non empty set ; set D = { (varcl s) where s is Element of A : verum } ; A4: { (vars t) where t is quasi-term of C : t in rng p } c= { (varcl s) where s is Element of A : verum } proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in { (vars t) where t is quasi-term of C : t in rng p } or a in { (varcl s) where s is Element of A : verum } ) assume a in { (vars t) where t is quasi-term of C : t in rng p } ; ::_thesis: a in { (varcl s) where s is Element of A : verum } then consider t being quasi-term of C such that A5: a = vars t and A6: t in rng p ; variables_in t in A by A6; then reconsider s = variables_in t as Element of A ; a = varcl s by A5; hence a in { (varcl s) where s is Element of A : verum } ; ::_thesis: verum end; A7: { (varcl s) where s is Element of A : verum } c= { (vars t) where t is quasi-term of C : t in rng p } proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in { (varcl s) where s is Element of A : verum } or a in { (vars t) where t is quasi-term of C : t in rng p } ) assume a in { (varcl s) where s is Element of A : verum } ; ::_thesis: a in { (vars t) where t is quasi-term of C : t in rng p } then consider s being Element of A such that A8: a = varcl s ; s in A ; then consider t being quasi-term of C such that A9: s = variables_in t and A10: t in rng p ; vars t = a by A8, A9; hence a in { (vars t) where t is quasi-term of C : t in rng p } by A10; ::_thesis: verum end; thus vars e = varcl (union A) by A1, Th88 .= union { (varcl s) where s is Element of A : verum } by Th10 .= union { (vars t) where t is quasi-term of C : t in rng p } by A4, A7, XBOOLE_0:def_10 ; ::_thesis: verum end; end; end; theorem :: ABCMIZ_1:90 for C being initialized ConstructorSignature for c being constructor OperSymbol of C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds variables_in (c -trm p) = union { (variables_in t) where t is quasi-term of C : t in rng p } proof let C be initialized ConstructorSignature; ::_thesis: for c being constructor OperSymbol of C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds variables_in (c -trm p) = union { (variables_in t) where t is quasi-term of C : t in rng p } let c be constructor OperSymbol of C; ::_thesis: for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds variables_in (c -trm p) = union { (variables_in t) where t is quasi-term of C : t in rng p } let p be FinSequence of QuasiTerms C; ::_thesis: ( len p = len (the_arity_of c) implies variables_in (c -trm p) = union { (variables_in t) where t is quasi-term of C : t in rng p } ) assume len p = len (the_arity_of c) ; ::_thesis: variables_in (c -trm p) = union { (variables_in t) where t is quasi-term of C : t in rng p } then c -trm p = [c, the carrier of C] -tree p by Def35; hence variables_in (c -trm p) = union { (variables_in t) where t is quasi-term of C : t in rng p } by Th88; ::_thesis: verum end; theorem :: ABCMIZ_1:91 for C being initialized ConstructorSignature for c being constructor OperSymbol of C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds vars (c -trm p) = union { (vars t) where t is quasi-term of C : t in rng p } proof let C be initialized ConstructorSignature; ::_thesis: for c being constructor OperSymbol of C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds vars (c -trm p) = union { (vars t) where t is quasi-term of C : t in rng p } let c be constructor OperSymbol of C; ::_thesis: for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds vars (c -trm p) = union { (vars t) where t is quasi-term of C : t in rng p } let p be FinSequence of QuasiTerms C; ::_thesis: ( len p = len (the_arity_of c) implies vars (c -trm p) = union { (vars t) where t is quasi-term of C : t in rng p } ) assume len p = len (the_arity_of c) ; ::_thesis: vars (c -trm p) = union { (vars t) where t is quasi-term of C : t in rng p } then c -trm p = [c, the carrier of C] -tree p by Def35; hence vars (c -trm p) = union { (vars t) where t is quasi-term of C : t in rng p } by Th89; ::_thesis: verum end; theorem :: ABCMIZ_1:92 for S being ManySortedSign for o being set holds S variables_in ([o, the carrier of S] -tree {}) = [[0]] the carrier of S proof let S be ManySortedSign ; ::_thesis: for o being set holds S variables_in ([o, the carrier of S] -tree {}) = [[0]] the carrier of S let o be set ; ::_thesis: S variables_in ([o, the carrier of S] -tree {}) = [[0]] the carrier of S now__::_thesis:_for_s_being_set_st_s_in_the_carrier_of_S_holds_ (S_variables_in_([o,_the_carrier_of_S]_-tree_{}))_._s_=_([[0]]_the_carrier_of_S)_._s let s be set ; ::_thesis: ( s in the carrier of S implies (S variables_in ([o, the carrier of S] -tree {})) . s = ([[0]] the carrier of S) . s ) assume A1: s in the carrier of S ; ::_thesis: (S variables_in ([o, the carrier of S] -tree {})) . s = ([[0]] the carrier of S) . s now__::_thesis:_for_x_being_set_holds_ (_x_in_(S_variables_in_([o,_the_carrier_of_S]_-tree_{}))_._s_iff_x_in_([[0]]_the_carrier_of_S)_._s_) let x be set ; ::_thesis: ( x in (S variables_in ([o, the carrier of S] -tree {})) . s iff x in ([[0]] the carrier of S) . s ) rng {} = {} ; then ( x in (S variables_in ([o, the carrier of S] -tree {})) . s iff ex q being DecoratedTree st ( q in {} & x in (S variables_in q) . s ) ) by A1, MSAFREE3:11; hence ( x in (S variables_in ([o, the carrier of S] -tree {})) . s iff x in ([[0]] the carrier of S) . s ) ; ::_thesis: verum end; hence (S variables_in ([o, the carrier of S] -tree {})) . s = ([[0]] the carrier of S) . s by TARSKI:1; ::_thesis: verum end; hence S variables_in ([o, the carrier of S] -tree {}) = [[0]] the carrier of S by PBOOLE:3; ::_thesis: verum end; theorem Th93: :: ABCMIZ_1:93 for S being ManySortedSign for o being set for t being DecoratedTree holds S variables_in ([o, the carrier of S] -tree <*t*>) = S variables_in t proof let S be ManySortedSign ; ::_thesis: for o being set for t being DecoratedTree holds S variables_in ([o, the carrier of S] -tree <*t*>) = S variables_in t let o be set ; ::_thesis: for t being DecoratedTree holds S variables_in ([o, the carrier of S] -tree <*t*>) = S variables_in t let t be DecoratedTree; ::_thesis: S variables_in ([o, the carrier of S] -tree <*t*>) = S variables_in t now__::_thesis:_for_s_being_set_st_s_in_the_carrier_of_S_holds_ (S_variables_in_([o,_the_carrier_of_S]_-tree_<*t*>))_._s_=_(S_variables_in_t)_._s let s be set ; ::_thesis: ( s in the carrier of S implies (S variables_in ([o, the carrier of S] -tree <*t*>)) . s = (S variables_in t) . s ) assume A1: s in the carrier of S ; ::_thesis: (S variables_in ([o, the carrier of S] -tree <*t*>)) . s = (S variables_in t) . s A2: t in {t} by TARSKI:def_1; now__::_thesis:_for_x_being_set_holds_ (_x_in_(S_variables_in_([o,_the_carrier_of_S]_-tree_<*t*>))_._s_iff_x_in_(S_variables_in_t)_._s_) let x be set ; ::_thesis: ( x in (S variables_in ([o, the carrier of S] -tree <*t*>)) . s iff x in (S variables_in t) . s ) rng <*t*> = {t} by FINSEQ_1:39; then ( x in (S variables_in ([o, the carrier of S] -tree <*t*>)) . s iff ex q being DecoratedTree st ( q in {t} & x in (S variables_in q) . s ) ) by A1, MSAFREE3:11; hence ( x in (S variables_in ([o, the carrier of S] -tree <*t*>)) . s iff x in (S variables_in t) . s ) by A2, TARSKI:def_1; ::_thesis: verum end; hence (S variables_in ([o, the carrier of S] -tree <*t*>)) . s = (S variables_in t) . s by TARSKI:1; ::_thesis: verum end; hence S variables_in ([o, the carrier of S] -tree <*t*>) = S variables_in t by PBOOLE:3; ::_thesis: verum end; theorem Th94: :: ABCMIZ_1:94 for C being initialized ConstructorSignature for a being expression of C, an_Adj C holds variables_in ((non_op C) term a) = variables_in a proof let C be initialized ConstructorSignature; ::_thesis: for a being expression of C, an_Adj C holds variables_in ((non_op C) term a) = variables_in a let a be expression of C, an_Adj C; ::_thesis: variables_in ((non_op C) term a) = variables_in a (non_op C) term a = [non_op, the carrier of C] -tree <*a*> by Th43; hence variables_in ((non_op C) term a) = variables_in a by Th93; ::_thesis: verum end; theorem :: ABCMIZ_1:95 for C being initialized ConstructorSignature for a being expression of C, an_Adj C holds vars ((non_op C) term a) = vars a by Th94; theorem Th96: :: ABCMIZ_1:96 for S being ManySortedSign for o being set for t1, t2 being DecoratedTree holds S variables_in ([o, the carrier of S] -tree <*t1,t2*>) = (S variables_in t1) \/ (S variables_in t2) proof let S be ManySortedSign ; ::_thesis: for o being set for t1, t2 being DecoratedTree holds S variables_in ([o, the carrier of S] -tree <*t1,t2*>) = (S variables_in t1) \/ (S variables_in t2) let o be set ; ::_thesis: for t1, t2 being DecoratedTree holds S variables_in ([o, the carrier of S] -tree <*t1,t2*>) = (S variables_in t1) \/ (S variables_in t2) let t1, t2 be DecoratedTree; ::_thesis: S variables_in ([o, the carrier of S] -tree <*t1,t2*>) = (S variables_in t1) \/ (S variables_in t2) now__::_thesis:_for_s_being_set_st_s_in_the_carrier_of_S_holds_ (S_variables_in_([o,_the_carrier_of_S]_-tree_<*t1,t2*>))_._s_=_((S_variables_in_t1)_\/_(S_variables_in_t2))_._s let s be set ; ::_thesis: ( s in the carrier of S implies (S variables_in ([o, the carrier of S] -tree <*t1,t2*>)) . s = ((S variables_in t1) \/ (S variables_in t2)) . s ) assume A1: s in the carrier of S ; ::_thesis: (S variables_in ([o, the carrier of S] -tree <*t1,t2*>)) . s = ((S variables_in t1) \/ (S variables_in t2)) . s A2: t1 in {t1,t2} by TARSKI:def_2; A3: t2 in {t1,t2} by TARSKI:def_2; now__::_thesis:_for_x_being_set_holds_ (_x_in_(S_variables_in_([o,_the_carrier_of_S]_-tree_<*t1,t2*>))_._s_iff_x_in_((S_variables_in_t1)_\/_(S_variables_in_t2))_._s_) let x be set ; ::_thesis: ( x in (S variables_in ([o, the carrier of S] -tree <*t1,t2*>)) . s iff x in ((S variables_in t1) \/ (S variables_in t2)) . s ) rng <*t1,t2*> = {t1,t2} by FINSEQ_2:127; then ( x in (S variables_in ([o, the carrier of S] -tree <*t1,t2*>)) . s iff ex q being DecoratedTree st ( q in {t1,t2} & x in (S variables_in q) . s ) ) by A1, MSAFREE3:11; then ( x in (S variables_in ([o, the carrier of S] -tree <*t1,t2*>)) . s iff ( x in (S variables_in t1) . s or x in (S variables_in t2) . s ) ) by A2, A3, TARSKI:def_2; then ( x in (S variables_in ([o, the carrier of S] -tree <*t1,t2*>)) . s iff x in ((S variables_in t1) . s) \/ ((S variables_in t2) . s) ) by XBOOLE_0:def_3; hence ( x in (S variables_in ([o, the carrier of S] -tree <*t1,t2*>)) . s iff x in ((S variables_in t1) \/ (S variables_in t2)) . s ) by A1, PBOOLE:def_4; ::_thesis: verum end; hence (S variables_in ([o, the carrier of S] -tree <*t1,t2*>)) . s = ((S variables_in t1) \/ (S variables_in t2)) . s by TARSKI:1; ::_thesis: verum end; hence S variables_in ([o, the carrier of S] -tree <*t1,t2*>) = (S variables_in t1) \/ (S variables_in t2) by PBOOLE:3; ::_thesis: verum end; theorem Th97: :: ABCMIZ_1:97 for C being initialized ConstructorSignature for t being expression of C, a_Type C for a being expression of C, an_Adj C holds variables_in ((ast C) term (a,t)) = (variables_in a) \/ (variables_in t) proof let C be initialized ConstructorSignature; ::_thesis: for t being expression of C, a_Type C for a being expression of C, an_Adj C holds variables_in ((ast C) term (a,t)) = (variables_in a) \/ (variables_in t) let t be expression of C, a_Type C; ::_thesis: for a being expression of C, an_Adj C holds variables_in ((ast C) term (a,t)) = (variables_in a) \/ (variables_in t) let a be expression of C, an_Adj C; ::_thesis: variables_in ((ast C) term (a,t)) = (variables_in a) \/ (variables_in t) (ast C) term (a,t) = [*, the carrier of C] -tree <*a,t*> by Th46; then variables_in ((ast C) term (a,t)) = ((C variables_in a) \/ (C variables_in t)) . a_Term by Th96; hence variables_in ((ast C) term (a,t)) = (variables_in a) \/ (variables_in t) by PBOOLE:def_4; ::_thesis: verum end; theorem :: ABCMIZ_1:98 for C being initialized ConstructorSignature for t being expression of C, a_Type C for a being expression of C, an_Adj C holds vars ((ast C) term (a,t)) = (vars a) \/ (vars t) proof let C be initialized ConstructorSignature; ::_thesis: for t being expression of C, a_Type C for a being expression of C, an_Adj C holds vars ((ast C) term (a,t)) = (vars a) \/ (vars t) let t be expression of C, a_Type C; ::_thesis: for a being expression of C, an_Adj C holds vars ((ast C) term (a,t)) = (vars a) \/ (vars t) let a be expression of C, an_Adj C; ::_thesis: vars ((ast C) term (a,t)) = (vars a) \/ (vars t) thus vars ((ast C) term (a,t)) = varcl ((variables_in a) \/ (variables_in t)) by Th97 .= (vars a) \/ (vars t) by Th11 ; ::_thesis: verum end; theorem Th99: :: ABCMIZ_1:99 for C being initialized ConstructorSignature for a being expression of C, an_Adj C holds variables_in (Non a) = variables_in a proof let C be initialized ConstructorSignature; ::_thesis: for a being expression of C, an_Adj C holds variables_in (Non a) = variables_in a let a be expression of C, an_Adj C; ::_thesis: variables_in (Non a) = variables_in a percases ( not a is positive or a is positive ) ; suppose not a is positive ; ::_thesis: variables_in (Non a) = variables_in a then consider a9 being expression of C, an_Adj C such that A1: a = (non_op C) term a9 and A2: Non a = a9 by Th60; [(non_op C), the carrier of C] -tree <*a9*> = a by A1, Th43; hence variables_in (Non a) = variables_in a by A2, Th93; ::_thesis: verum end; suppose a is positive ; ::_thesis: variables_in (Non a) = variables_in a then Non a = (non_op C) term a by Th59 .= [non_op, the carrier of C] -tree <*a*> by Th43 ; hence variables_in (Non a) = variables_in a by Th93; ::_thesis: verum end; end; end; theorem :: ABCMIZ_1:100 for C being initialized ConstructorSignature for a being expression of C, an_Adj C holds vars (Non a) = vars a by Th99; definition let C be initialized ConstructorSignature; let T be quasi-type of C; func variables_in T -> Subset of Vars equals :: ABCMIZ_1:def 48 (union ((((MSVars C),(a_Term C)) variables_in) .: (adjs T))) \/ (variables_in (the_base_of T)); coherence (union ((((MSVars C),(a_Term C)) variables_in) .: (adjs T))) \/ (variables_in (the_base_of T)) is Subset of Vars proof A1: (((MSVars C),(a_Term C)) variables_in) .: (adjs T) is Subset of (bool Vars) by Def25; union (bool Vars) = Vars by ZFMISC_1:81; then union ((((MSVars C),(a_Term C)) variables_in) .: (adjs T)) c= Vars by A1, ZFMISC_1:77; hence (union ((((MSVars C),(a_Term C)) variables_in) .: (adjs T))) \/ (variables_in (the_base_of T)) is Subset of Vars by XBOOLE_1:8; ::_thesis: verum end; end; :: deftheorem defines variables_in ABCMIZ_1:def_48_:_ for C being initialized ConstructorSignature for T being quasi-type of C holds variables_in T = (union ((((MSVars C),(a_Term C)) variables_in) .: (adjs T))) \/ (variables_in (the_base_of T)); registration let C be initialized ConstructorSignature; let T be quasi-type of C; cluster variables_in T -> finite ; coherence variables_in T is finite proof now__::_thesis:_for_A_being_set_st_A_in_(((MSVars_C),(a_Term_C))_variables_in)_.:_(adjs_T)_holds_ A_is_finite let A be set ; ::_thesis: ( A in (((MSVars C),(a_Term C)) variables_in) .: (adjs T) implies A is finite ) assume A in (((MSVars C),(a_Term C)) variables_in) .: (adjs T) ; ::_thesis: A is finite then consider x being set such that A1: x in Union the Sorts of (Free (C,(MSVars C))) and x in adjs T and A2: A = (((MSVars C),(a_Term C)) variables_in) . x by FUNCT_2:64; reconsider x = x as expression of C by A1; A = (C variables_in x) . (a_Term C) by A2, Def45; hence A is finite ; ::_thesis: verum end; then union ((((MSVars C),(a_Term C)) variables_in) .: (adjs T)) is finite by FINSET_1:7; hence variables_in T is finite ; ::_thesis: verum end; end; definition let C be initialized ConstructorSignature; let T be quasi-type of C; func vars T -> finite Subset of Vars equals :: ABCMIZ_1:def 49 varcl (variables_in T); coherence varcl (variables_in T) is finite Subset of Vars by Th24; end; :: deftheorem defines vars ABCMIZ_1:def_49_:_ for C being initialized ConstructorSignature for T being quasi-type of C holds vars T = varcl (variables_in T); theorem :: ABCMIZ_1:101 for C being initialized ConstructorSignature for T being quasi-type of C holds varcl (vars T) = vars T ; theorem Th102: :: ABCMIZ_1:102 for C being initialized ConstructorSignature for T being quasi-type of C for a being quasi-adjective of C holds variables_in (a ast T) = (variables_in a) \/ (variables_in T) proof let C be initialized ConstructorSignature; ::_thesis: for T being quasi-type of C for a being quasi-adjective of C holds variables_in (a ast T) = (variables_in a) \/ (variables_in T) let T be quasi-type of C; ::_thesis: for a being quasi-adjective of C holds variables_in (a ast T) = (variables_in a) \/ (variables_in T) let a be quasi-adjective of C; ::_thesis: variables_in (a ast T) = (variables_in a) \/ (variables_in T) A1: dom (((MSVars C),(a_Term C)) variables_in) = Union the Sorts of (Free (C,(MSVars C))) by FUNCT_2:def_1; thus variables_in (a ast T) = (union ((((MSVars C),(a_Term C)) variables_in) .: (adjs (a ast T)))) \/ (variables_in (the_base_of T)) by MCART_1:7 .= (union ((((MSVars C),(a_Term C)) variables_in) .: ({a} \/ (adjs T)))) \/ (variables_in (the_base_of T)) by MCART_1:7 .= (union (((((MSVars C),(a_Term C)) variables_in) .: {a}) \/ ((((MSVars C),(a_Term C)) variables_in) .: (adjs T)))) \/ (variables_in (the_base_of T)) by RELAT_1:120 .= ((union ((((MSVars C),(a_Term C)) variables_in) .: {a})) \/ (union ((((MSVars C),(a_Term C)) variables_in) .: (adjs T)))) \/ (variables_in (the_base_of T)) by ZFMISC_1:78 .= (union (Im ((((MSVars C),(a_Term C)) variables_in),a))) \/ (variables_in T) by XBOOLE_1:4 .= (union {((((MSVars C),(a_Term C)) variables_in) . a)}) \/ (variables_in T) by A1, FUNCT_1:59 .= ((((MSVars C),(a_Term C)) variables_in) . a) \/ (variables_in T) by ZFMISC_1:25 .= (variables_in a) \/ (variables_in T) by Def45 ; ::_thesis: verum end; theorem :: ABCMIZ_1:103 for C being initialized ConstructorSignature for T being quasi-type of C for a being quasi-adjective of C holds vars (a ast T) = (vars a) \/ (vars T) proof let C be initialized ConstructorSignature; ::_thesis: for T being quasi-type of C for a being quasi-adjective of C holds vars (a ast T) = (vars a) \/ (vars T) let T be quasi-type of C; ::_thesis: for a being quasi-adjective of C holds vars (a ast T) = (vars a) \/ (vars T) let a be quasi-adjective of C; ::_thesis: vars (a ast T) = (vars a) \/ (vars T) thus vars (a ast T) = varcl ((variables_in a) \/ (variables_in T)) by Th102 .= (vars a) \/ (vars T) by Th11 ; ::_thesis: verum end; theorem Th104: :: ABCMIZ_1:104 for C being initialized ConstructorSignature for q being pure expression of C, a_Type C for A being finite Subset of (QuasiAdjs C) holds variables_in (A ast q) = (union { (variables_in a) where a is quasi-adjective of C : a in A } ) \/ (variables_in q) proof let C be initialized ConstructorSignature; ::_thesis: for q being pure expression of C, a_Type C for A being finite Subset of (QuasiAdjs C) holds variables_in (A ast q) = (union { (variables_in a) where a is quasi-adjective of C : a in A } ) \/ (variables_in q) let q be pure expression of C, a_Type C; ::_thesis: for A being finite Subset of (QuasiAdjs C) holds variables_in (A ast q) = (union { (variables_in a) where a is quasi-adjective of C : a in A } ) \/ (variables_in q) let A be finite Subset of (QuasiAdjs C); ::_thesis: variables_in (A ast q) = (union { (variables_in a) where a is quasi-adjective of C : a in A } ) \/ (variables_in q) set X = (((MSVars C),(a_Term C)) variables_in) .: A; set Y = { (variables_in a) where a is quasi-adjective of C : a in A } ; A1: (((MSVars C),(a_Term C)) variables_in) .: A c= { (variables_in a) where a is quasi-adjective of C : a in A } proof let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in (((MSVars C),(a_Term C)) variables_in) .: A or z in { (variables_in a) where a is quasi-adjective of C : a in A } ) assume z in (((MSVars C),(a_Term C)) variables_in) .: A ; ::_thesis: z in { (variables_in a) where a is quasi-adjective of C : a in A } then consider a being set such that a in dom (((MSVars C),(a_Term C)) variables_in) and A2: a in A and A3: z = (((MSVars C),(a_Term C)) variables_in) . a by FUNCT_1:def_6; reconsider a = a as quasi-adjective of C by A2, Th63; z = variables_in a by A3, Def45; hence z in { (variables_in a) where a is quasi-adjective of C : a in A } by A2; ::_thesis: verum end; A4: { (variables_in a) where a is quasi-adjective of C : a in A } c= (((MSVars C),(a_Term C)) variables_in) .: A proof let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in { (variables_in a) where a is quasi-adjective of C : a in A } or z in (((MSVars C),(a_Term C)) variables_in) .: A ) assume z in { (variables_in a) where a is quasi-adjective of C : a in A } ; ::_thesis: z in (((MSVars C),(a_Term C)) variables_in) .: A then consider a being quasi-adjective of C such that A5: z = variables_in a and A6: a in A ; A7: z = (((MSVars C),(a_Term C)) variables_in) . a by A5, Def45; dom (((MSVars C),(a_Term C)) variables_in) = Union the Sorts of (Free (C,(MSVars C))) by FUNCT_2:def_1; hence z in (((MSVars C),(a_Term C)) variables_in) .: A by A6, A7, FUNCT_1:def_6; ::_thesis: verum end; thus variables_in (A ast q) = (union ((((MSVars C),(a_Term C)) variables_in) .: (adjs (A ast q)))) \/ (variables_in q) .= (union ((((MSVars C),(a_Term C)) variables_in) .: A)) \/ (variables_in q) .= (union { (variables_in a) where a is quasi-adjective of C : a in A } ) \/ (variables_in q) by A1, A4, XBOOLE_0:def_10 ; ::_thesis: verum end; theorem :: ABCMIZ_1:105 for C being initialized ConstructorSignature for q being pure expression of C, a_Type C for A being finite Subset of (QuasiAdjs C) holds vars (A ast q) = (union { (vars a) where a is quasi-adjective of C : a in A } ) \/ (vars q) proof let C be initialized ConstructorSignature; ::_thesis: for q being pure expression of C, a_Type C for A being finite Subset of (QuasiAdjs C) holds vars (A ast q) = (union { (vars a) where a is quasi-adjective of C : a in A } ) \/ (vars q) let q be pure expression of C, a_Type C; ::_thesis: for A being finite Subset of (QuasiAdjs C) holds vars (A ast q) = (union { (vars a) where a is quasi-adjective of C : a in A } ) \/ (vars q) let A be finite Subset of (QuasiAdjs C); ::_thesis: vars (A ast q) = (union { (vars a) where a is quasi-adjective of C : a in A } ) \/ (vars q) set X = { (variables_in a) where a is quasi-adjective of C : a in A } ; set Y = { (vars a) where a is quasi-adjective of C : a in A } ; A1: union { (variables_in a) where a is quasi-adjective of C : a in A } c= union { (vars a) where a is quasi-adjective of C : a in A } proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in union { (variables_in a) where a is quasi-adjective of C : a in A } or x in union { (vars a) where a is quasi-adjective of C : a in A } ) assume x in union { (variables_in a) where a is quasi-adjective of C : a in A } ; ::_thesis: x in union { (vars a) where a is quasi-adjective of C : a in A } then consider Z being set such that A2: x in Z and A3: Z in { (variables_in a) where a is quasi-adjective of C : a in A } by TARSKI:def_4; consider a being quasi-adjective of C such that A4: Z = variables_in a and A5: a in A by A3; A6: Z c= vars a by A4, Def1; vars a in { (vars a) where a is quasi-adjective of C : a in A } by A5; hence x in union { (vars a) where a is quasi-adjective of C : a in A } by A2, A6, TARSKI:def_4; ::_thesis: verum end; for x, y being set st [x,y] in union { (vars a) where a is quasi-adjective of C : a in A } holds x c= union { (vars a) where a is quasi-adjective of C : a in A } proof let x, y be set ; ::_thesis: ( [x,y] in union { (vars a) where a is quasi-adjective of C : a in A } implies x c= union { (vars a) where a is quasi-adjective of C : a in A } ) assume [x,y] in union { (vars a) where a is quasi-adjective of C : a in A } ; ::_thesis: x c= union { (vars a) where a is quasi-adjective of C : a in A } then consider Z being set such that A7: [x,y] in Z and A8: Z in { (vars a) where a is quasi-adjective of C : a in A } by TARSKI:def_4; ex a being quasi-adjective of C st ( Z = vars a & a in A ) by A8; then A9: x c= Z by A7, Def1; Z c= union { (vars a) where a is quasi-adjective of C : a in A } by A8, ZFMISC_1:74; hence x c= union { (vars a) where a is quasi-adjective of C : a in A } by A9, XBOOLE_1:1; ::_thesis: verum end; then A10: varcl (union { (variables_in a) where a is quasi-adjective of C : a in A } ) c= union { (vars a) where a is quasi-adjective of C : a in A } by A1, Def1; A11: union { (vars a) where a is quasi-adjective of C : a in A } c= varcl (union { (variables_in a) where a is quasi-adjective of C : a in A } ) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in union { (vars a) where a is quasi-adjective of C : a in A } or x in varcl (union { (variables_in a) where a is quasi-adjective of C : a in A } ) ) assume x in union { (vars a) where a is quasi-adjective of C : a in A } ; ::_thesis: x in varcl (union { (variables_in a) where a is quasi-adjective of C : a in A } ) then consider Z being set such that A12: x in Z and A13: Z in { (vars a) where a is quasi-adjective of C : a in A } by TARSKI:def_4; consider a being quasi-adjective of C such that A14: Z = vars a and A15: a in A by A13; variables_in a in { (variables_in a) where a is quasi-adjective of C : a in A } by A15; then vars a c= varcl (union { (variables_in a) where a is quasi-adjective of C : a in A } ) by Th9, ZFMISC_1:74; hence x in varcl (union { (variables_in a) where a is quasi-adjective of C : a in A } ) by A12, A14; ::_thesis: verum end; thus vars (A ast q) = varcl ((union { (variables_in a) where a is quasi-adjective of C : a in A } ) \/ (variables_in q)) by Th104 .= (varcl (union { (variables_in a) where a is quasi-adjective of C : a in A } )) \/ (vars q) by Th11 .= (union { (vars a) where a is quasi-adjective of C : a in A } ) \/ (vars q) by A10, A11, XBOOLE_0:def_10 ; ::_thesis: verum end; theorem Th106: :: ABCMIZ_1:106 for C being initialized ConstructorSignature for q being pure expression of C, a_Type C holds variables_in (({} (QuasiAdjs C)) ast q) = variables_in q proof let C be initialized ConstructorSignature; ::_thesis: for q being pure expression of C, a_Type C holds variables_in (({} (QuasiAdjs C)) ast q) = variables_in q let q be pure expression of C, a_Type C; ::_thesis: variables_in (({} (QuasiAdjs C)) ast q) = variables_in q set A = {} (QuasiAdjs C); set AA = { (variables_in a) where a is quasi-adjective of C : a in {} (QuasiAdjs C) } ; { (variables_in a) where a is quasi-adjective of C : a in {} (QuasiAdjs C) } c= {} proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in { (variables_in a) where a is quasi-adjective of C : a in {} (QuasiAdjs C) } or x in {} ) assume x in { (variables_in a) where a is quasi-adjective of C : a in {} (QuasiAdjs C) } ; ::_thesis: x in {} then ex a being quasi-adjective of C st ( x = variables_in a & a in {} (QuasiAdjs C) ) ; hence x in {} ; ::_thesis: verum end; then A1: { (variables_in a) where a is quasi-adjective of C : a in {} (QuasiAdjs C) } = {} ; variables_in (({} (QuasiAdjs C)) ast q) = (union { (variables_in a) where a is quasi-adjective of C : a in {} (QuasiAdjs C) } ) \/ (variables_in q) by Th104; hence variables_in (({} (QuasiAdjs C)) ast q) = variables_in q by A1, ZFMISC_1:2; ::_thesis: verum end; theorem Th107: :: ABCMIZ_1:107 for C being initialized ConstructorSignature for e being expression of C holds ( e is ground iff variables_in e = {} ) proof let C be initialized ConstructorSignature; ::_thesis: for e being expression of C holds ( e is ground iff variables_in e = {} ) let e be expression of C; ::_thesis: ( e is ground iff variables_in e = {} ) thus ( e is ground implies variables_in e = {} ) ::_thesis: ( variables_in e = {} implies e is ground ) proof assume Union (C variables_in e) = {} ; :: according to ABCMIZ_1:def_26 ::_thesis: variables_in e = {} hence variables_in e = {} by Th1, XBOOLE_1:3; ::_thesis: verum end; assume that A1: variables_in e = {} and A2: Union (C variables_in e) <> {} ; :: according to ABCMIZ_1:def_26 ::_thesis: contradiction set x = the Element of Union (C variables_in e); A3: ex y being set st ( y in dom (C variables_in e) & the Element of Union (C variables_in e) in (C variables_in e) . y ) by A2, CARD_5:2; A4: dom (C variables_in e) = the carrier of C by PARTFUN1:def_2 .= {a_Type,an_Adj,a_Term} by Def9 ; A5: C variables_in e c= MSVars C by MSAFREE3:27; A6: (MSVars C) . an_Adj = {} by Def25; A7: (MSVars C) . a_Type = {} by Def25; A8: (C variables_in e) . (an_Adj C) c= {} by A5, A6, PBOOLE:def_2; (C variables_in e) . (a_Type C) c= {} by A5, A7, PBOOLE:def_2; hence contradiction by A1, A3, A4, A8, ENUMSET1:def_1; ::_thesis: verum end; definition let C be initialized ConstructorSignature; let T be quasi-type of C; attrT is ground means :Def50: :: ABCMIZ_1:def 50 variables_in T = {} ; end; :: deftheorem Def50 defines ground ABCMIZ_1:def_50_:_ for C being initialized ConstructorSignature for T being quasi-type of C holds ( T is ground iff variables_in T = {} ); registration let C be initialized ConstructorSignature; cluster non pair non empty Relation-like Function-like finite DecoratedTree-like ground pure for expression of C, a_Type C; existence ex b1 being expression of C, a_Type C st ( b1 is ground & b1 is pure ) proof consider m, a being OperSymbol of C such that A1: the_result_sort_of m = a_Type and A2: the_arity_of m = {} and the_result_sort_of a = an_Adj and the_arity_of a = {} by Def12; root-tree [m, the carrier of C] in the Sorts of (Free (C,(MSVars C))) . (a_Type C) by A1, A2, MSAFREE3:5; then reconsider mm = root-tree [m, the carrier of C] as expression of C, a_Type C by Th41; take mm ; ::_thesis: ( mm is ground & mm is pure ) set p = <*> (Union the Sorts of (Free (C,(MSVars C)))); A3: mm = [m, the carrier of C] -tree (<*> (Union the Sorts of (Free (C,(MSVars C))))) by TREES_4:20; A4: m <> * by A2, Def9; m <> non_op by A1, Def9; then A5: m is constructor by A4, Def11; variables_in mm c= {} proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in variables_in mm or x in {} ) assume x in variables_in mm ; ::_thesis: x in {} then x in union { (variables_in t) where t is quasi-term of C : t in rng (<*> (Union the Sorts of (Free (C,(MSVars C))))) } by A3, A5, Th88; then consider Y being set such that x in Y and A6: Y in { (variables_in t) where t is quasi-term of C : t in rng (<*> (Union the Sorts of (Free (C,(MSVars C))))) } by TARSKI:def_4; ex t being quasi-term of C st ( Y = variables_in t & t in rng (<*> (Union the Sorts of (Free (C,(MSVars C))))) ) by A6; hence x in {} ; ::_thesis: verum end; then variables_in mm = {} ; hence mm is ground by Th107; ::_thesis: mm is pure ex t being expression of C, a_Type C st ( t = root-tree [m, the carrier of C] & t is pure ) by A1, A2, Th70; hence mm is pure ; ::_thesis: verum end; cluster non pair non empty Relation-like Function-like finite DecoratedTree-like ground regular for expression of C, an_Adj C; existence ex b1 being quasi-adjective of C st b1 is ground proof consider m, a being OperSymbol of C such that the_result_sort_of m = a_Type and the_arity_of m = {} and A7: the_result_sort_of a = an_Adj and A8: the_arity_of a = {} by Def12; consider mm being expression of C, an_Adj C such that A9: mm = root-tree [a, the carrier of C] and A10: mm is positive by A7, A8, Th71; reconsider mm = mm as quasi-adjective of C by A10; take mm ; ::_thesis: mm is ground set p = <*> (Union the Sorts of (Free (C,(MSVars C)))); A11: mm = [a, the carrier of C] -tree (<*> (Union the Sorts of (Free (C,(MSVars C))))) by A9, TREES_4:20; A12: a <> * by A7, Def9; a <> non_op by A8, Def9; then A13: a is constructor by A12, Def11; variables_in mm c= {} proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in variables_in mm or x in {} ) assume x in variables_in mm ; ::_thesis: x in {} then x in union { (variables_in t) where t is quasi-term of C : t in rng (<*> (Union the Sorts of (Free (C,(MSVars C))))) } by A11, A13, Th88; then consider Y being set such that x in Y and A14: Y in { (variables_in t) where t is quasi-term of C : t in rng (<*> (Union the Sorts of (Free (C,(MSVars C))))) } by TARSKI:def_4; ex t being quasi-term of C st ( Y = variables_in t & t in rng (<*> (Union the Sorts of (Free (C,(MSVars C))))) ) by A14; hence x in {} ; ::_thesis: verum end; then variables_in mm = {} ; hence mm is ground by Th107; ::_thesis: verum end; end; theorem Th108: :: ABCMIZ_1:108 for C being initialized ConstructorSignature for t being ground pure expression of C, a_Type C holds ({} (QuasiAdjs C)) ast t is ground proof let C be initialized ConstructorSignature; ::_thesis: for t being ground pure expression of C, a_Type C holds ({} (QuasiAdjs C)) ast t is ground let t be ground pure expression of C, a_Type C; ::_thesis: ({} (QuasiAdjs C)) ast t is ground set T = ({} (QuasiAdjs C)) ast t; thus variables_in (({} (QuasiAdjs C)) ast t) = variables_in t by Th106 .= {} by Th107 ; :: according to ABCMIZ_1:def_50 ::_thesis: verum end; registration let C be initialized ConstructorSignature; let t be ground pure expression of C, a_Type C; clustert ast -> ground for quasi-type of C; coherence for b1 being quasi-type of C st b1 = ({} (QuasiAdjs C)) ast t holds b1 is ground by Th108; end; registration let C be initialized ConstructorSignature; cluster pair non empty ground for quasi-type of C; existence ex b1 being quasi-type of C st b1 is ground proof set t = the ground pure expression of C, a_Type C; take ({} (QuasiAdjs C)) ast the ground pure expression of C, a_Type C ; ::_thesis: ({} (QuasiAdjs C)) ast the ground pure expression of C, a_Type C is ground thus ({} (QuasiAdjs C)) ast the ground pure expression of C, a_Type C is ground ; ::_thesis: verum end; end; registration let C be initialized ConstructorSignature; let T be ground quasi-type of C; let a be ground quasi-adjective of C; clustera ast T -> ground ; coherence a ast T is ground proof thus variables_in (a ast T) = (variables_in a) \/ (variables_in T) by Th102 .= {} \/ (variables_in T) by Th107 .= {} by Def50 ; :: according to ABCMIZ_1:def_50 ::_thesis: verum end; end; begin definition func VarPoset -> non empty strict Poset equals :: ABCMIZ_1:def 51 (InclPoset { (varcl A) where A is finite Subset of Vars : verum } ) opp ; coherence (InclPoset { (varcl A) where A is finite Subset of Vars : verum } ) opp is non empty strict Poset proof set A0 = the finite Subset of Vars; set V = { (varcl A) where A is finite Subset of Vars : verum } ; varcl the finite Subset of Vars in { (varcl A) where A is finite Subset of Vars : verum } ; then reconsider V = { (varcl A) where A is finite Subset of Vars : verum } as non empty set ; reconsider P = InclPoset V as non empty Poset ; not P opp is empty ; hence (InclPoset { (varcl A) where A is finite Subset of Vars : verum } ) opp is non empty strict Poset ; ::_thesis: verum end; end; :: deftheorem defines VarPoset ABCMIZ_1:def_51_:_ VarPoset = (InclPoset { (varcl A) where A is finite Subset of Vars : verum } ) opp ; theorem Th109: :: ABCMIZ_1:109 for x, y being Element of VarPoset holds ( x <= y iff y c= x ) proof let x, y be Element of VarPoset; ::_thesis: ( x <= y iff y c= x ) set V = { (varcl A) where A is finite Subset of Vars : verum } ; set A0 = the finite Subset of Vars; varcl the finite Subset of Vars in { (varcl A) where A is finite Subset of Vars : verum } ; then reconsider V = { (varcl A) where A is finite Subset of Vars : verum } as non empty set ; reconsider a = x, b = y as Element of ((InclPoset V) opp) ; ( x <= y iff ~ a >= ~ b ) by YELLOW_7:1; hence ( x <= y iff y c= x ) by YELLOW_1:3; ::_thesis: verum end; theorem Th110: :: ABCMIZ_1:110 for x being set holds ( x is Element of VarPoset iff ( x is finite Subset of Vars & varcl x = x ) ) proof let x be set ; ::_thesis: ( x is Element of VarPoset iff ( x is finite Subset of Vars & varcl x = x ) ) set V = { (varcl A) where A is finite Subset of Vars : verum } ; set A0 = the finite Subset of Vars; varcl the finite Subset of Vars in { (varcl A) where A is finite Subset of Vars : verum } ; then reconsider V = { (varcl A) where A is finite Subset of Vars : verum } as non empty set ; the carrier of (InclPoset V) = V by YELLOW_1:1; then ( x is Element of VarPoset iff x in V ) ; then ( x is Element of VarPoset iff ex A being finite Subset of Vars st x = varcl A ) ; hence ( x is Element of VarPoset iff ( x is finite Subset of Vars & varcl x = x ) ) by Th24; ::_thesis: verum end; registration cluster VarPoset -> non empty strict with_suprema with_infima ; coherence ( VarPoset is with_infima & VarPoset is with_suprema ) proof set V = { (varcl A) where A is finite Subset of Vars : verum } ; set A0 = the finite Subset of Vars; varcl the finite Subset of Vars in { (varcl A) where A is finite Subset of Vars : verum } ; then reconsider V = { (varcl A) where A is finite Subset of Vars : verum } as non empty set ; now__::_thesis:_for_x,_y_being_set_st_x_in_V_&_y_in_V_holds_ x_\/_y_in_V let x, y be set ; ::_thesis: ( x in V & y in V implies x \/ y in V ) assume x in V ; ::_thesis: ( y in V implies x \/ y in V ) then consider A1 being finite Subset of Vars such that A1: x = varcl A1 ; assume y in V ; ::_thesis: x \/ y in V then consider A2 being finite Subset of Vars such that A2: y = varcl A2 ; x \/ y = varcl (A1 \/ A2) by A1, A2, Th11; hence x \/ y in V ; ::_thesis: verum end; then InclPoset V is with_suprema by YELLOW_1:11; hence VarPoset is with_infima by LATTICE3:10; ::_thesis: VarPoset is with_suprema now__::_thesis:_for_x,_y_being_set_st_x_in_V_&_y_in_V_holds_ x_/\_y_in_V let x, y be set ; ::_thesis: ( x in V & y in V implies x /\ y in V ) assume x in V ; ::_thesis: ( y in V implies x /\ y in V ) then consider A1 being finite Subset of Vars such that A3: x = varcl A1 ; assume y in V ; ::_thesis: x /\ y in V then consider A2 being finite Subset of Vars such that A4: y = varcl A2 ; reconsider V1 = varcl A1, V2 = varcl A2 as finite Subset of Vars by Th24; x /\ y = varcl (V1 /\ V2) by A3, A4, Th13; hence x /\ y in V ; ::_thesis: verum end; then InclPoset V is with_infima by YELLOW_1:12; hence VarPoset is with_suprema by YELLOW_7:16; ::_thesis: verum end; end; theorem Th111: :: ABCMIZ_1:111 for V1, V2 being Element of VarPoset holds ( V1 "\/" V2 = V1 /\ V2 & V1 "/\" V2 = V1 \/ V2 ) proof let V1, V2 be Element of VarPoset; ::_thesis: ( V1 "\/" V2 = V1 /\ V2 & V1 "/\" V2 = V1 \/ V2 ) set V = { (varcl A) where A is finite Subset of Vars : verum } ; set A0 = the finite Subset of Vars; varcl the finite Subset of Vars in { (varcl A) where A is finite Subset of Vars : verum } ; then reconsider V = { (varcl A) where A is finite Subset of Vars : verum } as non empty set ; A1: VarPoset = (InclPoset V) opp ; A2: the carrier of (InclPoset V) = V by YELLOW_1:1; reconsider v1 = V1, v2 = V2 as Element of ((InclPoset V) opp) ; reconsider a1 = V1, a2 = V2 as Element of (InclPoset V) ; V1 in V by A2; then consider A1 being finite Subset of Vars such that A3: V1 = varcl A1 ; V2 in V by A2; then consider A2 being finite Subset of Vars such that A4: V2 = varcl A2 ; A5: a1 ~ = v1 ; A6: a2 ~ = v2 ; A7: ( InclPoset V is with_infima & InclPoset V is with_suprema ) by A1, LATTICE3:10, YELLOW_7:16; reconsider x1 = V1, x2 = V2 as finite Subset of Vars by A3, A4, Th24; V1 /\ V2 = varcl (x1 /\ x2) by A3, A4, Th13; then V1 /\ V2 in V ; then a1 "/\" a2 = V1 /\ V2 by YELLOW_1:9; hence V1 "\/" V2 = V1 /\ V2 by A5, A6, A7, YELLOW_7:21; ::_thesis: V1 "/\" V2 = V1 \/ V2 V1 \/ V2 = varcl (A1 \/ A2) by A3, A4, Th11; then a1 \/ a2 in V ; then a1 "\/" a2 = V1 \/ V2 by YELLOW_1:8; hence V1 "/\" V2 = V1 \/ V2 by A5, A6, A7, YELLOW_7:23; ::_thesis: verum end; registration let V1, V2 be Element of VarPoset; identifyV1 "\/" V2 with V1 /\ V2; compatibility V1 "\/" V2 = V1 /\ V2 by Th111; identifyV1 "/\" V2 with V1 \/ V2; compatibility V1 "/\" V2 = V1 \/ V2 by Th111; end; theorem Th112: :: ABCMIZ_1:112 for X being non empty Subset of VarPoset holds ( ex_sup_of X, VarPoset & sup X = meet X ) proof let X be non empty Subset of VarPoset; ::_thesis: ( ex_sup_of X, VarPoset & sup X = meet X ) set a = the Element of X; A1: meet X c= the Element of X by SETFAM_1:3; A2: the Element of X is finite Subset of Vars by Th110; then A3: meet X c= Vars by A1, XBOOLE_1:1; for a being Element of X holds varcl a = a by Th110; then varcl (meet X) = meet X by Th12; then reconsider m = meet X as Element of VarPoset by A1, A2, A3, Th110; A4: now__::_thesis:_(_X_is_<=_than_m_&_(_for_b_being_Element_of_VarPoset_st_X_is_<=_than_b_holds_ m_<=_b_)_) thus X is_<=_than m ::_thesis: for b being Element of VarPoset st X is_<=_than b holds m <= b proof let n be Element of VarPoset; :: according to LATTICE3:def_9 ::_thesis: ( not n in X or n <= m ) assume n in X ; ::_thesis: n <= m then m c= n by SETFAM_1:3; hence n <= m by Th109; ::_thesis: verum end; let b be Element of VarPoset; ::_thesis: ( X is_<=_than b implies m <= b ) assume A5: X is_<=_than b ; ::_thesis: m <= b now__::_thesis:_for_Y_being_set_st_Y_in_X_holds_ b_c=_Y let Y be set ; ::_thesis: ( Y in X implies b c= Y ) assume A6: Y in X ; ::_thesis: b c= Y then reconsider c = Y as Element of VarPoset ; c <= b by A5, A6, LATTICE3:def_9; hence b c= Y by Th109; ::_thesis: verum end; then b c= m by SETFAM_1:5; hence m <= b by Th109; ::_thesis: verum end; hence ex_sup_of X, VarPoset by YELLOW_0:15; ::_thesis: sup X = meet X hence sup X = meet X by A4, YELLOW_0:def_9; ::_thesis: verum end; registration cluster VarPoset -> non empty strict up-complete ; coherence VarPoset is up-complete proof for X being non empty directed Subset of VarPoset holds ex_sup_of X, VarPoset by Th112; hence VarPoset is up-complete by WAYBEL_0:75; ::_thesis: verum end; end; theorem :: ABCMIZ_1:113 Top VarPoset = {} proof set V = { (varcl A) where A is finite Subset of Vars : verum } ; A1: {} Vars in { (varcl A) where A is finite Subset of Vars : verum } by Th8; A2: VarPoset opp is lower-bounded by YELLOW_7:31; (Bottom (InclPoset { (varcl A) where A is finite Subset of Vars : verum } )) ~ = {} by A1, YELLOW_1:13; hence Top VarPoset = {} by A2, YELLOW_7:33; ::_thesis: verum end; definition let C be initialized ConstructorSignature; func vars-function C -> Function of (QuasiTypes C), the carrier of VarPoset means :: ABCMIZ_1:def 52 for T being quasi-type of C holds it . T = vars T; uniqueness for b1, b2 being Function of (QuasiTypes C), the carrier of VarPoset st ( for T being quasi-type of C holds b1 . T = vars T ) & ( for T being quasi-type of C holds b2 . T = vars T ) holds b1 = b2 proof let f1, f2 be Function of (QuasiTypes C), the carrier of VarPoset; ::_thesis: ( ( for T being quasi-type of C holds f1 . T = vars T ) & ( for T being quasi-type of C holds f2 . T = vars T ) implies f1 = f2 ) assume that A1: for T being quasi-type of C holds f1 . T = vars T and A2: for T being quasi-type of C holds f2 . T = vars T ; ::_thesis: f1 = f2 now__::_thesis:_for_T_being_Element_of_QuasiTypes_C_holds_f1_._T_=_f2_._T let T be Element of QuasiTypes C; ::_thesis: f1 . T = f2 . T reconsider t = T as quasi-type of C by Def43; thus f1 . T = vars t by A1 .= f2 . T by A2 ; ::_thesis: verum end; hence f1 = f2 by FUNCT_2:63; ::_thesis: verum end; existence ex b1 being Function of (QuasiTypes C), the carrier of VarPoset st for T being quasi-type of C holds b1 . T = vars T proof defpred S1[ set , set ] means ex T being quasi-type of C st ( $1 = T & $2 = vars T ); A3: for x being set st x in QuasiTypes C holds ex y being set st S1[x,y] proof let x be set ; ::_thesis: ( x in QuasiTypes C implies ex y being set st S1[x,y] ) assume x in QuasiTypes C ; ::_thesis: ex y being set st S1[x,y] then reconsider T = x as quasi-type of C by Def43; take vars T ; ::_thesis: S1[x, vars T] take T ; ::_thesis: ( x = T & vars T = vars T ) thus ( x = T & vars T = vars T ) ; ::_thesis: verum end; consider f being Function such that A4: dom f = QuasiTypes C and A5: for x being set st x in QuasiTypes C holds S1[x,f . x] from CLASSES1:sch_1(A3); rng f c= the carrier of VarPoset proof let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in rng f or y in the carrier of VarPoset ) assume y in rng f ; ::_thesis: y in the carrier of VarPoset then consider x being set such that A6: x in dom f and A7: y = f . x by FUNCT_1:def_3; consider T being quasi-type of C such that x = T and A8: y = vars T by A4, A5, A6, A7; varcl (vars T) = vars T ; then y is Element of VarPoset by A8, Th110; hence y in the carrier of VarPoset ; ::_thesis: verum end; then reconsider f = f as Function of (QuasiTypes C), the carrier of VarPoset by A4, FUNCT_2:2; take f ; ::_thesis: for T being quasi-type of C holds f . T = vars T let x be quasi-type of C; ::_thesis: f . x = vars x x in QuasiTypes C by Def43; then ex T being quasi-type of C st ( x = T & f . x = vars T ) by A5; hence f . x = vars x ; ::_thesis: verum end; end; :: deftheorem defines vars-function ABCMIZ_1:def_52_:_ for C being initialized ConstructorSignature for b2 being Function of (QuasiTypes C), the carrier of VarPoset holds ( b2 = vars-function C iff for T being quasi-type of C holds b2 . T = vars T ); definition let L be non empty Poset; attrL is smooth means :: ABCMIZ_1:def 53 ex C being initialized ConstructorSignature ex f being Function of L,VarPoset st ( the carrier of L c= QuasiTypes C & f = (vars-function C) | the carrier of L & ( for x, y being Element of L holds f preserves_sup_of {x,y} ) ); end; :: deftheorem defines smooth ABCMIZ_1:def_53_:_ for L being non empty Poset holds ( L is smooth iff ex C being initialized ConstructorSignature ex f being Function of L,VarPoset st ( the carrier of L c= QuasiTypes C & f = (vars-function C) | the carrier of L & ( for x, y being Element of L holds f preserves_sup_of {x,y} ) ) ); registration let C be initialized ConstructorSignature; let T be ground quasi-type of C; cluster RelStr(# {T},(id {T}) #) -> smooth ; coherence RelStr(# {T},(id {T}) #) is smooth proof set L = RelStr(# {T},(id {T}) #); A1: T in QuasiTypes C by Def43; then {T} c= QuasiTypes C by ZFMISC_1:31; then reconsider f = (vars-function C) | {T} as Function of RelStr(# {T},(id {T}) #),VarPoset by FUNCT_2:32; take C ; :: according to ABCMIZ_1:def_53 ::_thesis: ex f being Function of RelStr(# {T},(id {T}) #),VarPoset st ( the carrier of RelStr(# {T},(id {T}) #) c= QuasiTypes C & f = (vars-function C) | the carrier of RelStr(# {T},(id {T}) #) & ( for x, y being Element of RelStr(# {T},(id {T}) #) holds f preserves_sup_of {x,y} ) ) take f ; ::_thesis: ( the carrier of RelStr(# {T},(id {T}) #) c= QuasiTypes C & f = (vars-function C) | the carrier of RelStr(# {T},(id {T}) #) & ( for x, y being Element of RelStr(# {T},(id {T}) #) holds f preserves_sup_of {x,y} ) ) thus the carrier of RelStr(# {T},(id {T}) #) c= QuasiTypes C by A1, ZFMISC_1:31; ::_thesis: ( f = (vars-function C) | the carrier of RelStr(# {T},(id {T}) #) & ( for x, y being Element of RelStr(# {T},(id {T}) #) holds f preserves_sup_of {x,y} ) ) thus f = (vars-function C) | the carrier of RelStr(# {T},(id {T}) #) ; ::_thesis: for x, y being Element of RelStr(# {T},(id {T}) #) holds f preserves_sup_of {x,y} let x, y be Element of RelStr(# {T},(id {T}) #); ::_thesis: f preserves_sup_of {x,y} set F = {x,y}; assume ex_sup_of {x,y}, RelStr(# {T},(id {T}) #) ; :: according to WAYBEL_0:def_31 ::_thesis: ( ex_sup_of f .: {x,y}, VarPoset & "\/" ((f .: {x,y}),VarPoset) = f . ("\/" ({x,y},RelStr(# {T},(id {T}) #))) ) A2: x = T by TARSKI:def_1; y = T by TARSKI:def_1; then A3: {x,y} = {T} by A2, ENUMSET1:29; dom f = {T} by FUNCT_2:def_1; then A4: Im (f,T) = {(f . x)} by A2, FUNCT_1:59; hence ex_sup_of f .: {x,y}, VarPoset by A3, YELLOW_0:38; ::_thesis: "\/" ((f .: {x,y}),VarPoset) = f . ("\/" ({x,y},RelStr(# {T},(id {T}) #))) thus sup (f .: {x,y}) = f . x by A3, A4, YELLOW_0:39 .= f . (sup {x,y}) by A2, TARSKI:def_1 ; ::_thesis: verum end; end; begin scheme :: ABCMIZ_1:sch 2 StructInd{ F1() -> initialized ConstructorSignature, P1[ set ], F2() -> expression of F1() } : P1[F2()] provided A1: for x being variable holds P1[x -term F1()] and A2: for c being constructor OperSymbol of F1() for p being FinSequence of QuasiTerms F1() st len p = len (the_arity_of c) & ( for t being quasi-term of F1() st t in rng p holds P1[t] ) holds P1[c -trm p] and A3: for a being expression of F1(), an_Adj F1() st P1[a] holds P1[(non_op F1()) term a] and A4: for a being expression of F1(), an_Adj F1() st P1[a] holds for t being expression of F1(), a_Type F1() st P1[t] holds P1[(ast F1()) term (a,t)] proof defpred S1[ set ] means ( $1 is expression of F1() implies P1[$1] ); set X = MSVars F1(); set V = (MSVars F1()) \/ ( the carrier of F1() --> {0}); set S = F1(); set C = F1(); A5: F2() is Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; A6: for s being SortSymbol of F1() for v being Element of ((MSVars F1()) \/ ( the carrier of F1() --> {0})) . s holds S1[ root-tree [v,s]] proof let s be SortSymbol of F1(); ::_thesis: for v being Element of ((MSVars F1()) \/ ( the carrier of F1() --> {0})) . s holds S1[ root-tree [v,s]] let v be Element of ((MSVars F1()) \/ ( the carrier of F1() --> {0})) . s; ::_thesis: S1[ root-tree [v,s]] set t = root-tree [v,s]; assume A7: root-tree [v,s] is expression of F1() ; ::_thesis: P1[ root-tree [v,s]] A8: (root-tree [v,s]) . {} = [v,s] by TREES_4:3; A9: s in the carrier of F1() ; A10: ((root-tree [v,s]) . {}) `2 = s by A8, MCART_1:7; A11: s <> the carrier of F1() by A9; percases ( ex x being variable st root-tree [v,s] = x -term F1() or ex c being constructor OperSymbol of F1() ex p being FinSequence of QuasiTerms F1() st ( len p = len (the_arity_of c) & root-tree [v,s] = c -trm p ) or ex a being expression of F1(), an_Adj F1() st root-tree [v,s] = (non_op F1()) term a or ex a being expression of F1(), an_Adj F1() ex q being expression of F1(), a_Type F1() st root-tree [v,s] = (ast F1()) term (a,q) ) by A7, Th53; suppose ex x being variable st root-tree [v,s] = x -term F1() ; ::_thesis: P1[ root-tree [v,s]] hence P1[ root-tree [v,s]] by A1; ::_thesis: verum end; suppose ex c being constructor OperSymbol of F1() ex p being FinSequence of QuasiTerms F1() st ( len p = len (the_arity_of c) & root-tree [v,s] = c -trm p ) ; ::_thesis: P1[ root-tree [v,s]] then consider c being constructor OperSymbol of F1(), p being FinSequence of QuasiTerms F1() such that A12: len p = len (the_arity_of c) and A13: root-tree [v,s] = c -trm p ; root-tree [v,s] = [c, the carrier of F1()] -tree p by A12, A13, Def35; then (root-tree [v,s]) . {} = [c, the carrier of F1()] by TREES_4:def_4; hence P1[ root-tree [v,s]] by A10, A11, MCART_1:7; ::_thesis: verum end; suppose ex a being expression of F1(), an_Adj F1() st root-tree [v,s] = (non_op F1()) term a ; ::_thesis: P1[ root-tree [v,s]] then consider a being expression of F1(), an_Adj F1() such that A14: root-tree [v,s] = (non_op F1()) term a ; A15: the_arity_of (non_op F1()) = <*(an_Adj F1())*> by Def9; A16: <*(an_Adj F1())*> . 1 = an_Adj F1() by FINSEQ_1:40; len <*(an_Adj F1())*> = 1 by FINSEQ_1:40; then root-tree [v,s] = [(non_op F1()), the carrier of F1()] -tree <*a*> by A14, A15, A16, Def30; then (root-tree [v,s]) . {} = [(non_op F1()), the carrier of F1()] by TREES_4:def_4; hence P1[ root-tree [v,s]] by A10, A11, MCART_1:7; ::_thesis: verum end; suppose ex a being expression of F1(), an_Adj F1() ex q being expression of F1(), a_Type F1() st root-tree [v,s] = (ast F1()) term (a,q) ; ::_thesis: P1[ root-tree [v,s]] then consider a being expression of F1(), an_Adj F1(), q being expression of F1(), a_Type F1() such that A17: root-tree [v,s] = (ast F1()) term (a,q) ; A18: the_arity_of (ast F1()) = <*(an_Adj F1()),(a_Type F1())*> by Def9; A19: <*(an_Adj F1()),(a_Type F1())*> . 1 = an_Adj F1() by FINSEQ_1:44; A20: <*(an_Adj F1()),(a_Type F1())*> . 2 = a_Type F1() by FINSEQ_1:44; len <*(an_Adj F1()),(a_Type F1())*> = 2 by FINSEQ_1:44; then root-tree [v,s] = [(ast F1()), the carrier of F1()] -tree <*a,q*> by A17, A18, A19, A20, Def31; then (root-tree [v,s]) . {} = [(ast F1()), the carrier of F1()] by TREES_4:def_4; hence P1[ root-tree [v,s]] by A10, A11, MCART_1:7; ::_thesis: verum end; end; end; A21: for o being OperSymbol of F1() for p being ArgumentSeq of Sym (o,((MSVars F1()) \/ ( the carrier of F1() --> {0}))) st ( for t being Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) st t in rng p holds S1[t] ) holds S1[[o, the carrier of F1()] -tree p] proof let o be OperSymbol of F1(); ::_thesis: for p being ArgumentSeq of Sym (o,((MSVars F1()) \/ ( the carrier of F1() --> {0}))) st ( for t being Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) st t in rng p holds S1[t] ) holds S1[[o, the carrier of F1()] -tree p] let p be ArgumentSeq of Sym (o,((MSVars F1()) \/ ( the carrier of F1() --> {0}))); ::_thesis: ( ( for t being Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) st t in rng p holds S1[t] ) implies S1[[o, the carrier of F1()] -tree p] ) assume A22: for t being Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) st t in rng p holds S1[t] ; ::_thesis: S1[[o, the carrier of F1()] -tree p] set t = [o, the carrier of F1()] -tree p; assume A23: [o, the carrier of F1()] -tree p is expression of F1() ; ::_thesis: P1[[o, the carrier of F1()] -tree p] percases ( ex x being variable st [o, the carrier of F1()] -tree p = x -term F1() or ex c being constructor OperSymbol of F1() ex p being FinSequence of QuasiTerms F1() st ( len p = len (the_arity_of c) & [o, the carrier of F1()] -tree p = c -trm p ) or ex a being expression of F1(), an_Adj F1() st [o, the carrier of F1()] -tree p = (non_op F1()) term a or ex a being expression of F1(), an_Adj F1() ex q being expression of F1(), a_Type F1() st [o, the carrier of F1()] -tree p = (ast F1()) term (a,q) ) by A23, Th53; suppose ex x being variable st [o, the carrier of F1()] -tree p = x -term F1() ; ::_thesis: P1[[o, the carrier of F1()] -tree p] hence P1[[o, the carrier of F1()] -tree p] by A1; ::_thesis: verum end; suppose ex c being constructor OperSymbol of F1() ex p being FinSequence of QuasiTerms F1() st ( len p = len (the_arity_of c) & [o, the carrier of F1()] -tree p = c -trm p ) ; ::_thesis: P1[[o, the carrier of F1()] -tree p] then consider c being constructor OperSymbol of F1(), q being FinSequence of QuasiTerms F1() such that A24: len q = len (the_arity_of c) and A25: [o, the carrier of F1()] -tree p = c -trm q ; [o, the carrier of F1()] -tree p = [c, the carrier of F1()] -tree q by A24, A25, Def35; then A26: p = q by TREES_4:15; now__::_thesis:_for_t_being_quasi-term_of_F1()_st_t_in_rng_q_holds_ P1[t] let t be quasi-term of F1(); ::_thesis: ( t in rng q implies P1[t] ) t is Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; hence ( t in rng q implies P1[t] ) by A22, A26; ::_thesis: verum end; hence P1[[o, the carrier of F1()] -tree p] by A2, A24, A25; ::_thesis: verum end; suppose ex a being expression of F1(), an_Adj F1() st [o, the carrier of F1()] -tree p = (non_op F1()) term a ; ::_thesis: P1[[o, the carrier of F1()] -tree p] then consider a being expression of F1(), an_Adj F1() such that A27: [o, the carrier of F1()] -tree p = (non_op F1()) term a ; A28: the_arity_of (non_op F1()) = <*(an_Adj F1())*> by Def9; A29: <*(an_Adj F1())*> . 1 = an_Adj F1() by FINSEQ_1:40; len <*(an_Adj F1())*> = 1 by FINSEQ_1:40; then [o, the carrier of F1()] -tree p = [(non_op F1()), the carrier of F1()] -tree <*a*> by A27, A28, A29, Def30; then A30: p = <*a*> by TREES_4:15; A31: rng <*a*> = {a} by FINSEQ_1:39; A32: a in {a} by TARSKI:def_1; a is Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; hence P1[[o, the carrier of F1()] -tree p] by A3, A22, A27, A30, A31, A32; ::_thesis: verum end; suppose ex a being expression of F1(), an_Adj F1() ex q being expression of F1(), a_Type F1() st [o, the carrier of F1()] -tree p = (ast F1()) term (a,q) ; ::_thesis: P1[[o, the carrier of F1()] -tree p] then consider a being expression of F1(), an_Adj F1(), q being expression of F1(), a_Type F1() such that A33: [o, the carrier of F1()] -tree p = (ast F1()) term (a,q) ; A34: the_arity_of (ast F1()) = <*(an_Adj F1()),(a_Type F1())*> by Def9; A35: <*(an_Adj F1()),(a_Type F1())*> . 1 = an_Adj F1() by FINSEQ_1:44; A36: <*(an_Adj F1()),(a_Type F1())*> . 2 = a_Type F1() by FINSEQ_1:44; len <*(an_Adj F1()),(a_Type F1())*> = 2 by FINSEQ_1:44; then [o, the carrier of F1()] -tree p = [(ast F1()), the carrier of F1()] -tree <*a,q*> by A33, A34, A35, A36, Def31; then A37: p = <*a,q*> by TREES_4:15; A38: rng <*a,q*> = {a,q} by FINSEQ_2:127; A39: a in {a,q} by TARSKI:def_2; A40: q in {a,q} by TARSKI:def_2; A41: a is Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; A42: q is Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; P1[a] by A22, A37, A38, A39, A41; hence P1[[o, the carrier of F1()] -tree p] by A4, A22, A33, A37, A38, A40, A42; ::_thesis: verum end; end; end; for t being Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) holds S1[t] from MSATERM:sch_1(A6, A21); hence P1[F2()] by A5; ::_thesis: verum end; definition let S be ManySortedSign ; attrS is with_an_operation_for_each_sort means :Def54: :: ABCMIZ_1:def 54 the carrier of S c= rng the ResultSort of S; let X be ManySortedSet of the carrier of S; attrX is with_missing_variables means :Def55: :: ABCMIZ_1:def 55 X " {{}} c= rng the ResultSort of S; end; :: deftheorem Def54 defines with_an_operation_for_each_sort ABCMIZ_1:def_54_:_ for S being ManySortedSign holds ( S is with_an_operation_for_each_sort iff the carrier of S c= rng the ResultSort of S ); :: deftheorem Def55 defines with_missing_variables ABCMIZ_1:def_55_:_ for S being ManySortedSign for X being ManySortedSet of the carrier of S holds ( X is with_missing_variables iff X " {{}} c= rng the ResultSort of S ); theorem Th114: :: ABCMIZ_1:114 for S being non void Signature for X being ManySortedSet of the carrier of S holds ( X is with_missing_variables iff for s being SortSymbol of S st X . s = {} holds ex o being OperSymbol of S st the_result_sort_of o = s ) proof let S be non void Signature; ::_thesis: for X being ManySortedSet of the carrier of S holds ( X is with_missing_variables iff for s being SortSymbol of S st X . s = {} holds ex o being OperSymbol of S st the_result_sort_of o = s ) let X be ManySortedSet of the carrier of S; ::_thesis: ( X is with_missing_variables iff for s being SortSymbol of S st X . s = {} holds ex o being OperSymbol of S st the_result_sort_of o = s ) A1: dom X = the carrier of S by PARTFUN1:def_2; hereby ::_thesis: ( ( for s being SortSymbol of S st X . s = {} holds ex o being OperSymbol of S st the_result_sort_of o = s ) implies X is with_missing_variables ) assume X is with_missing_variables ; ::_thesis: for s being SortSymbol of S st X . s = {} holds ex o being OperSymbol of S st the_result_sort_of o = s then A2: X " {{}} c= rng the ResultSort of S by Def55; let s be SortSymbol of S; ::_thesis: ( X . s = {} implies ex o being OperSymbol of S st the_result_sort_of o = s ) assume X . s = {} ; ::_thesis: ex o being OperSymbol of S st the_result_sort_of o = s then X . s in {{}} by TARSKI:def_1; then s in X " {{}} by A1, FUNCT_1:def_7; then consider o being set such that A3: o in the carrier' of S and A4: the ResultSort of S . o = s by A2, FUNCT_2:11; reconsider o = o as OperSymbol of S by A3; take o = o; ::_thesis: the_result_sort_of o = s thus the_result_sort_of o = s by A4; ::_thesis: verum end; assume A5: for s being SortSymbol of S st X . s = {} holds ex o being OperSymbol of S st the_result_sort_of o = s ; ::_thesis: X is with_missing_variables let x be set ; :: according to TARSKI:def_3,ABCMIZ_1:def_55 ::_thesis: ( not x in X " {{}} or x in rng the ResultSort of S ) assume A6: x in X " {{}} ; ::_thesis: x in rng the ResultSort of S then A7: X . x in {{}} by FUNCT_1:def_7; reconsider x = x as SortSymbol of S by A1, A6, FUNCT_1:def_7; X . x = {} by A7, TARSKI:def_1; then ex o being OperSymbol of S st the_result_sort_of o = x by A5; hence x in rng the ResultSort of S by FUNCT_2:4; ::_thesis: verum end; registration cluster MaxConstrSign -> strict with_an_operation_for_each_sort ; coherence MaxConstrSign is with_an_operation_for_each_sort proof set C = MaxConstrSign ; set m = [a_Type,[{},0]]; set a = [an_Adj,[{},0]]; set f = [a_Term,[{},0]]; A1: a_Type in {a_Type} by TARSKI:def_1; A2: an_Adj in {an_Adj} by TARSKI:def_1; A3: a_Term in {a_Term} by TARSKI:def_1; A4: [(<*> Vars),0] in [:QuasiLoci,NAT:] by Th29, ZFMISC_1:def_2; then A5: [a_Type,[{},0]] in Modes by A1, ZFMISC_1:def_2; A6: [an_Adj,[{},0]] in Attrs by A2, A4, ZFMISC_1:def_2; A7: [a_Term,[{},0]] in Funcs by A3, A4, ZFMISC_1:def_2; A8: [a_Type,[{},0]] in Modes \/ Attrs by A5, XBOOLE_0:def_3; A9: [an_Adj,[{},0]] in Modes \/ Attrs by A6, XBOOLE_0:def_3; A10: [a_Type,[{},0]] in Constructors by A8, XBOOLE_0:def_3; A11: [an_Adj,[{},0]] in Constructors by A9, XBOOLE_0:def_3; A12: [a_Term,[{},0]] in Constructors by A7, XBOOLE_0:def_3; the carrier' of MaxConstrSign = {*,non_op} \/ Constructors by Def24; then reconsider m = [a_Type,[{},0]], a = [an_Adj,[{},0]], f = [a_Term,[{},0]] as OperSymbol of MaxConstrSign by A10, A11, A12, XBOOLE_0:def_3; A13: m is constructor by Def11; A14: a is constructor by Def11; A15: f is constructor by Def11; A16: the ResultSort of MaxConstrSign . m = m `1 by A13, Def24; A17: the ResultSort of MaxConstrSign . a = a `1 by A14, Def24; A18: the ResultSort of MaxConstrSign . f = f `1 by A15, Def24; A19: the ResultSort of MaxConstrSign . m = a_Type by A16, MCART_1:7; A20: the ResultSort of MaxConstrSign . a = an_Adj by A17, MCART_1:7; A21: the ResultSort of MaxConstrSign . f = a_Term by A18, MCART_1:7; A22: the carrier of MaxConstrSign = {a_Type,an_Adj,a_Term} by Def9; let x be set ; :: according to TARSKI:def_3,ABCMIZ_1:def_54 ::_thesis: ( not x in the carrier of MaxConstrSign or x in rng the ResultSort of MaxConstrSign ) assume x in the carrier of MaxConstrSign ; ::_thesis: x in rng the ResultSort of MaxConstrSign then ( x = a_Type or x = an_Adj or x = a_Term ) by A22, ENUMSET1:def_1; hence x in rng the ResultSort of MaxConstrSign by A19, A20, A21, FUNCT_2:4; ::_thesis: verum end; let C be ConstructorSignature; cluster MSVars C -> with_missing_variables ; coherence MSVars C is with_missing_variables proof set X = MSVars C; let x be set ; :: according to TARSKI:def_3,ABCMIZ_1:def_55 ::_thesis: ( not x in (MSVars C) " {{}} or x in rng the ResultSort of C ) assume A23: x in (MSVars C) " {{}} ; ::_thesis: x in rng the ResultSort of C then A24: x in dom (MSVars C) by FUNCT_1:def_7; A25: (MSVars C) . x in {{}} by A23, FUNCT_1:def_7; x in the carrier of C by A24; then x in {a_Type,an_Adj,a_Term} by Def9; then A26: ( x = a_Type or x = an_Adj or x = a_Term ) by ENUMSET1:def_1; A27: (MSVars C) . x = {} by A25, TARSKI:def_1; A28: the ResultSort of C . (ast C) = a_Type by Def9; the ResultSort of C . (non_op C) = an_Adj by Def9; hence x in rng the ResultSort of C by A26, A27, A28, Def25, FUNCT_2:4; ::_thesis: verum end; end; registration let S be ManySortedSign ; cluster Relation-like V8() the carrier of S -defined Function-like total -> with_missing_variables for set ; coherence for b1 being ManySortedSet of the carrier of S st b1 is V8() holds b1 is with_missing_variables proof let X be ManySortedSet of the carrier of S; ::_thesis: ( X is V8() implies X is with_missing_variables ) assume A1: X is V8() ; ::_thesis: X is with_missing_variables let x be set ; :: according to TARSKI:def_3,ABCMIZ_1:def_55 ::_thesis: ( not x in X " {{}} or x in rng the ResultSort of S ) assume A2: x in X " {{}} ; ::_thesis: x in rng the ResultSort of S then A3: x in dom X by FUNCT_1:def_7; A4: X . x in {{}} by A2, FUNCT_1:def_7; A5: X . x in rng X by A3, FUNCT_1:def_3; X . x = {} by A4, TARSKI:def_1; hence x in rng the ResultSort of S by A1, A5, RELAT_1:def_9; ::_thesis: verum end; end; registration let S be ManySortedSign ; cluster Relation-like the carrier of S -defined Function-like total with_missing_variables for set ; existence ex b1 being ManySortedSet of the carrier of S st b1 is with_missing_variables proof set A = the V8() ManySortedSet of the carrier of S; take the V8() ManySortedSet of the carrier of S ; ::_thesis: the V8() ManySortedSet of the carrier of S is with_missing_variables thus the V8() ManySortedSet of the carrier of S is with_missing_variables ; ::_thesis: verum end; end; registration cluster non empty non void V58() strict V259() constructor initialized with_an_operation_for_each_sort for ManySortedSign ; existence ex b1 being ConstructorSignature st ( b1 is initialized & b1 is with_an_operation_for_each_sort & b1 is strict ) proof take MaxConstrSign ; ::_thesis: ( MaxConstrSign is initialized & MaxConstrSign is with_an_operation_for_each_sort & MaxConstrSign is strict ) thus ( MaxConstrSign is initialized & MaxConstrSign is with_an_operation_for_each_sort & MaxConstrSign is strict ) ; ::_thesis: verum end; end; registration let C be with_an_operation_for_each_sort ManySortedSign ; cluster Relation-like the carrier of C -defined Function-like total -> with_missing_variables for set ; coherence for b1 being ManySortedSet of the carrier of C holds b1 is with_missing_variables proof let X be ManySortedSet of the carrier of C; ::_thesis: X is with_missing_variables A1: X " {{}} c= dom X by RELAT_1:132; A2: dom X = the carrier of C by PARTFUN1:def_2; the carrier of C c= rng the ResultSort of C by Def54; hence X " {{}} c= rng the ResultSort of C by A1, A2, XBOOLE_1:1; :: according to ABCMIZ_1:def_55 ::_thesis: verum end; end; definition let G be non empty DTConstrStr ; :: original: Terminals redefine func Terminals G -> Subset of G; coherence Terminals G is Subset of G proof the carrier of G = (Terminals G) \/ (NonTerminals G) by LANG1:1; hence Terminals G is Subset of G by XBOOLE_1:7; ::_thesis: verum end; :: original: NonTerminals redefine func NonTerminals G -> Subset of G; coherence NonTerminals G is Subset of G proof the carrier of G = (Terminals G) \/ (NonTerminals G) by LANG1:1; hence NonTerminals G is Subset of G by XBOOLE_1:7; ::_thesis: verum end; end; theorem Th115: :: ABCMIZ_1:115 for D1, D2 being non empty DTConstrStr st the Rules of D1 c= the Rules of D2 holds ( NonTerminals D1 c= NonTerminals D2 & the carrier of D1 /\ (Terminals D2) c= Terminals D1 & ( Terminals D1 c= Terminals D2 implies the carrier of D1 c= the carrier of D2 ) ) proof let D1, D2 be non empty DTConstrStr ; ::_thesis: ( the Rules of D1 c= the Rules of D2 implies ( NonTerminals D1 c= NonTerminals D2 & the carrier of D1 /\ (Terminals D2) c= Terminals D1 & ( Terminals D1 c= Terminals D2 implies the carrier of D1 c= the carrier of D2 ) ) ) assume A1: the Rules of D1 c= the Rules of D2 ; ::_thesis: ( NonTerminals D1 c= NonTerminals D2 & the carrier of D1 /\ (Terminals D2) c= Terminals D1 & ( Terminals D1 c= Terminals D2 implies the carrier of D1 c= the carrier of D2 ) ) thus A2: NonTerminals D1 c= NonTerminals D2 ::_thesis: ( the carrier of D1 /\ (Terminals D2) c= Terminals D1 & ( Terminals D1 c= Terminals D2 implies the carrier of D1 c= the carrier of D2 ) ) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in NonTerminals D1 or x in NonTerminals D2 ) assume x in NonTerminals D1 ; ::_thesis: x in NonTerminals D2 then ex s being Symbol of D1 st ( x = s & ex n being FinSequence st s ==> n ) ; then consider s being Symbol of D1, n being FinSequence such that A3: x = s and A4: s ==> n ; A5: [s,n] in the Rules of D1 by A4, LANG1:def_1; then [s,n] in the Rules of D2 by A1; then reconsider s9 = s as Symbol of D2 by ZFMISC_1:87; s9 ==> n by A1, A5, LANG1:def_1; hence x in NonTerminals D2 by A3; ::_thesis: verum end; hereby :: according to TARSKI:def_3 ::_thesis: ( Terminals D1 c= Terminals D2 implies the carrier of D1 c= the carrier of D2 ) let x be set ; ::_thesis: ( x in the carrier of D1 /\ (Terminals D2) implies x in Terminals D1 ) assume A6: x in the carrier of D1 /\ (Terminals D2) ; ::_thesis: x in Terminals D1 then A7: x in Terminals D2 by XBOOLE_0:def_4; reconsider s9 = x as Symbol of D1 by A6, XBOOLE_0:def_4; reconsider s = x as Symbol of D2 by A6; assume not x in Terminals D1 ; ::_thesis: contradiction then consider n being FinSequence such that A8: s9 ==> n ; [s9,n] in the Rules of D1 by A8, LANG1:def_1; then s ==> n by A1, LANG1:def_1; then for s being Symbol of D2 holds ( not x = s or ex n being FinSequence st s ==> n ) ; hence contradiction by A7; ::_thesis: verum end; assume Terminals D1 c= Terminals D2 ; ::_thesis: the carrier of D1 c= the carrier of D2 then (Terminals D1) \/ (NonTerminals D1) c= (Terminals D2) \/ (NonTerminals D2) by A2, XBOOLE_1:13; then (Terminals D1) \/ (NonTerminals D1) c= the carrier of D2 by LANG1:1; hence the carrier of D1 c= the carrier of D2 by LANG1:1; ::_thesis: verum end; theorem Th116: :: ABCMIZ_1:116 for D1, D2 being non empty DTConstrStr st Terminals D1 c= Terminals D2 & the Rules of D1 c= the Rules of D2 holds TS D1 c= TS D2 proof let G, G9 be non empty DTConstrStr ; ::_thesis: ( Terminals G c= Terminals G9 & the Rules of G c= the Rules of G9 implies TS G c= TS G9 ) assume that A1: Terminals G c= Terminals G9 and A2: the Rules of G c= the Rules of G9 ; ::_thesis: TS G c= TS G9 A3: the carrier of G9 = (Terminals G9) \/ (NonTerminals G9) by LANG1:1; A4: the carrier of G c= the carrier of G9 by A1, A2, Th115; defpred S1[ set ] means $1 in TS G9; A5: for s being Symbol of G st s in Terminals G holds S1[ root-tree s] proof let s be Symbol of G; ::_thesis: ( s in Terminals G implies S1[ root-tree s] ) assume A6: s in Terminals G ; ::_thesis: S1[ root-tree s] then reconsider s9 = s as Symbol of G9 by A1, A3, XBOOLE_0:def_3; root-tree s = root-tree s9 ; hence S1[ root-tree s] by A1, A6, DTCONSTR:def_1; ::_thesis: verum end; A7: for nt being Symbol of G for ts being FinSequence of TS G st nt ==> roots ts & ( for t being DecoratedTree of the carrier of G st t in rng ts holds S1[t] ) holds S1[nt -tree ts] proof let n be Symbol of G; ::_thesis: for ts being FinSequence of TS G st n ==> roots ts & ( for t being DecoratedTree of the carrier of G st t in rng ts holds S1[t] ) holds S1[n -tree ts] let s be FinSequence of TS G; ::_thesis: ( n ==> roots s & ( for t being DecoratedTree of the carrier of G st t in rng s holds S1[t] ) implies S1[n -tree s] ) assume that A8: [n,(roots s)] in the Rules of G and A9: for t being DecoratedTree of the carrier of G st t in rng s holds S1[t] ; :: according to LANG1:def_1 ::_thesis: S1[n -tree s] rng s c= TS G9 proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in rng s or x in TS G9 ) assume A10: x in rng s ; ::_thesis: x in TS G9 thus x in TS G9 by A9, A10; ::_thesis: verum end; then reconsider s9 = s as FinSequence of TS G9 by FINSEQ_1:def_4; n in the carrier of G ; then reconsider n9 = n as Symbol of G9 by A4; n9 ==> roots s9 by A2, A8, LANG1:def_1; hence S1[n -tree s] by DTCONSTR:def_1; ::_thesis: verum end; A11: for t being DecoratedTree of the carrier of G st t in TS G holds S1[t] from DTCONSTR:sch_7(A5, A7); let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in TS G or x in TS G9 ) assume A12: x in TS G ; ::_thesis: x in TS G9 then reconsider t = x as Element of FinTrees the carrier of G ; S1[t] by A11, A12; hence x in TS G9 ; ::_thesis: verum end; theorem Th117: :: ABCMIZ_1:117 for S being ManySortedSign for X, Y being ManySortedSet of the carrier of S st X c= Y & X is with_missing_variables holds Y is with_missing_variables proof let S be ManySortedSign ; ::_thesis: for X, Y being ManySortedSet of the carrier of S st X c= Y & X is with_missing_variables holds Y is with_missing_variables let X, Y be ManySortedSet of the carrier of S; ::_thesis: ( X c= Y & X is with_missing_variables implies Y is with_missing_variables ) assume that A1: X c= Y and A2: X " {{}} c= rng the ResultSort of S ; :: according to ABCMIZ_1:def_55 ::_thesis: Y is with_missing_variables let x be set ; :: according to TARSKI:def_3,ABCMIZ_1:def_55 ::_thesis: ( not x in Y " {{}} or x in rng the ResultSort of S ) assume A3: x in Y " {{}} ; ::_thesis: x in rng the ResultSort of S then A4: x in dom Y by FUNCT_1:def_7; A5: Y . x in {{}} by A3, FUNCT_1:def_7; A6: dom X = the carrier of S by PARTFUN1:def_2; A7: Y . x = {} by A5, TARSKI:def_1; X . x c= Y . x by A1, A4, PBOOLE:def_2; then X . x = {} by A7; then X . x in {{}} by TARSKI:def_1; then x in X " {{}} by A4, A6, FUNCT_1:def_7; hence x in rng the ResultSort of S by A2; ::_thesis: verum end; theorem Th118: :: ABCMIZ_1:118 for S being set for X, Y being ManySortedSet of S st X c= Y holds Union (coprod X) c= Union (coprod Y) proof let S be set ; ::_thesis: for X, Y being ManySortedSet of S st X c= Y holds Union (coprod X) c= Union (coprod Y) let X, Y be ManySortedSet of S; ::_thesis: ( X c= Y implies Union (coprod X) c= Union (coprod Y) ) assume A1: X c= Y ; ::_thesis: Union (coprod X) c= Union (coprod Y) A2: dom Y = S by PARTFUN1:def_2; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in Union (coprod X) or x in Union (coprod Y) ) assume A3: x in Union (coprod X) ; ::_thesis: x in Union (coprod Y) then A4: x `2 in dom X by CARD_3:22; A5: x `1 in X . (x `2) by A3, CARD_3:22; A6: x = [(x `1),(x `2)] by A3, CARD_3:22; X . (x `2) c= Y . (x `2) by A1, A4, PBOOLE:def_2; hence x in Union (coprod Y) by A2, A4, A5, A6, CARD_3:22; ::_thesis: verum end; theorem :: ABCMIZ_1:119 for S being non void Signature for X, Y being ManySortedSet of the carrier of S st X c= Y holds the carrier of (DTConMSA X) c= the carrier of (DTConMSA Y) by Th118, XBOOLE_1:9; theorem Th120: :: ABCMIZ_1:120 for S being non void Signature for X being ManySortedSet of the carrier of S st X is with_missing_variables holds ( NonTerminals (DTConMSA X) = [: the carrier' of S,{ the carrier of S}:] & Terminals (DTConMSA X) = Union (coprod X) ) proof let S be non void Signature; ::_thesis: for X being ManySortedSet of the carrier of S st X is with_missing_variables holds ( NonTerminals (DTConMSA X) = [: the carrier' of S,{ the carrier of S}:] & Terminals (DTConMSA X) = Union (coprod X) ) let X be ManySortedSet of the carrier of S; ::_thesis: ( X is with_missing_variables implies ( NonTerminals (DTConMSA X) = [: the carrier' of S,{ the carrier of S}:] & Terminals (DTConMSA X) = Union (coprod X) ) ) assume A1: X is with_missing_variables ; ::_thesis: ( NonTerminals (DTConMSA X) = [: the carrier' of S,{ the carrier of S}:] & Terminals (DTConMSA X) = Union (coprod X) ) set D = DTConMSA X; set A = [: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X)); A2: Union (coprod X) misses [: the carrier' of S,{ the carrier of S}:] by MSAFREE:4; A3: Terminals (DTConMSA X) misses NonTerminals (DTConMSA X) by DTCONSTR:8; thus NonTerminals (DTConMSA X) c= [: the carrier' of S,{ the carrier of S}:] by MSAFREE:6; :: according to XBOOLE_0:def_10 ::_thesis: ( [: the carrier' of S,{ the carrier of S}:] c= NonTerminals (DTConMSA X) & Terminals (DTConMSA X) = Union (coprod X) ) thus A4: [: the carrier' of S,{ the carrier of S}:] c= NonTerminals (DTConMSA X) ::_thesis: Terminals (DTConMSA X) = Union (coprod X) proof let o, x2 be set ; :: according to RELAT_1:def_3 ::_thesis: ( not x2 ast in [: the carrier' of S,{ the carrier of S}:] or x2 ast in NonTerminals (DTConMSA X) ) assume A5: [o,x2] in [: the carrier' of S,{ the carrier of S}:] ; ::_thesis: x2 ast in NonTerminals (DTConMSA X) then A6: x2 in { the carrier of S} by ZFMISC_1:87; reconsider o = o as OperSymbol of S by A5, ZFMISC_1:87; A7: the carrier of S = x2 by A6, TARSKI:def_1; then reconsider xa = [o, the carrier of S] as Element of the carrier of (DTConMSA X) by A5, XBOOLE_0:def_3; set O = the_arity_of o; defpred S1[ set , set ] means ( $2 in [: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X)) & ( X . ((the_arity_of o) . $1) <> {} implies $2 in coprod (((the_arity_of o) . $1),X) ) & ( X . ((the_arity_of o) . $1) = {} implies ex o being OperSymbol of S st ( $2 = [o, the carrier of S] & the_result_sort_of o = (the_arity_of o) . $1 ) ) ); A8: for a being set st a in Seg (len (the_arity_of o)) holds ex b being set st S1[a,b] proof let a be set ; ::_thesis: ( a in Seg (len (the_arity_of o)) implies ex b being set st S1[a,b] ) assume a in Seg (len (the_arity_of o)) ; ::_thesis: ex b being set st S1[a,b] then A9: a in dom (the_arity_of o) by FINSEQ_1:def_3; then A10: (the_arity_of o) . a in rng (the_arity_of o) by FUNCT_1:def_3; then reconsider s = (the_arity_of o) . a as SortSymbol of S ; percases ( not X . ((the_arity_of o) . a) is empty or X . ((the_arity_of o) . a) = {} ) ; suppose not X . ((the_arity_of o) . a) is empty ; ::_thesis: ex b being set st S1[a,b] then consider x being set such that A11: x in X . ((the_arity_of o) . a) by XBOOLE_0:def_1; take y = [x,((the_arity_of o) . a)]; ::_thesis: S1[a,y] A12: y in coprod (((the_arity_of o) . a),X) by A10, A11, MSAFREE:def_2; A13: (the_arity_of o) . a in rng (the_arity_of o) by A9, FUNCT_1:def_3; dom (coprod X) = the carrier of S by PARTFUN1:def_2; then (coprod X) . ((the_arity_of o) . a) in rng (coprod X) by A13, FUNCT_1:def_3; then coprod (((the_arity_of o) . a),X) in rng (coprod X) by A13, MSAFREE:def_3; then y in Union (coprod X) by A12, TARSKI:def_4; hence S1[a,y] by A10, A11, MSAFREE:def_2, XBOOLE_0:def_3; ::_thesis: verum end; supposeA14: X . ((the_arity_of o) . a) = {} ; ::_thesis: ex b being set st S1[a,b] then consider o being OperSymbol of S such that A15: the_result_sort_of o = s by A1, Th114; take y = [o, the carrier of S]; ::_thesis: S1[a,y] the carrier of S in { the carrier of S} by TARSKI:def_1; then y in [: the carrier' of S,{ the carrier of S}:] by ZFMISC_1:87; hence S1[a,y] by A14, A15, XBOOLE_0:def_3; ::_thesis: verum end; end; end; consider b being Function such that A16: ( dom b = Seg (len (the_arity_of o)) & ( for a being set st a in Seg (len (the_arity_of o)) holds S1[a,b . a] ) ) from CLASSES1:sch_1(A8); reconsider b = b as FinSequence by A16, FINSEQ_1:def_2; rng b c= [: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X)) proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in rng b or a in [: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X)) ) assume a in rng b ; ::_thesis: a in [: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X)) then ex c being set st ( c in dom b & b . c = a ) by FUNCT_1:def_3; hence a in [: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X)) by A16; ::_thesis: verum end; then reconsider b = b as FinSequence of [: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X)) by FINSEQ_1:def_4; reconsider b = b as Element of ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X))) * by FINSEQ_1:def_11; A17: len b = len (the_arity_of o) by A16, FINSEQ_1:def_3; now__::_thesis:_for_c_being_set_st_c_in_dom_b_holds_ (_(_b_._c_in_[:_the_carrier'_of_S,{_the_carrier_of_S}:]_implies_for_o1_being_OperSymbol_of_S_st_[o1,_the_carrier_of_S]_=_b_._c_holds_ the_result_sort_of_o1_=_(the_arity_of_o)_._c_)_&_(_b_._c_in_Union_(coprod_X)_implies_b_._c_in_coprod_(((the_arity_of_o)_._c),X)_)_) let c be set ; ::_thesis: ( c in dom b implies ( ( b . c in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = b . c holds the_result_sort_of o1 = (the_arity_of o) . c ) & ( b . c in Union (coprod X) implies b . c in coprod (((the_arity_of o) . c),X) ) ) ) assume A18: c in dom b ; ::_thesis: ( ( b . c in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = b . c holds the_result_sort_of o1 = (the_arity_of o) . c ) & ( b . c in Union (coprod X) implies b . c in coprod (((the_arity_of o) . c),X) ) ) then A19: S1[c,b . c] by A16; dom (the_arity_of o) = Seg (len (the_arity_of o)) by FINSEQ_1:def_3; then A20: (the_arity_of o) . c in rng (the_arity_of o) by A16, A18, FUNCT_1:def_3; dom (coprod X) = the carrier of S by PARTFUN1:def_2; then (coprod X) . ((the_arity_of o) . c) in rng (coprod X) by A20, FUNCT_1:def_3; then coprod (((the_arity_of o) . c),X) in rng (coprod X) by A20, MSAFREE:def_3; then ( X . ((the_arity_of o) . c) <> {} implies b . c in Union (coprod X) ) by A19, TARSKI:def_4; hence ( b . c in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = b . c holds the_result_sort_of o1 = (the_arity_of o) . c ) by A2, A19, XBOOLE_0:3, XTUPLE_0:1; ::_thesis: ( b . c in Union (coprod X) implies b . c in coprod (((the_arity_of o) . c),X) ) assume A21: b . c in Union (coprod X) ; ::_thesis: b . c in coprod (((the_arity_of o) . c),X) now__::_thesis:_not_X_._((the_arity_of_o)_._c)_=_{} assume X . ((the_arity_of o) . c) = {} ; ::_thesis: contradiction then A22: ex o being OperSymbol of S st ( b . c = [o, the carrier of S] & the_result_sort_of o = (the_arity_of o) . c ) by A16, A18; the carrier of S in { the carrier of S} by TARSKI:def_1; then b . c in [: the carrier' of S,{ the carrier of S}:] by A22, ZFMISC_1:87; hence contradiction by A2, A21, XBOOLE_0:3; ::_thesis: verum end; hence b . c in coprod (((the_arity_of o) . c),X) by A16, A18; ::_thesis: verum end; then [xa,b] in REL X by A17, MSAFREE:5; then xa ==> b by LANG1:def_1; hence x2 ast in NonTerminals (DTConMSA X) by A7; ::_thesis: verum end; thus Terminals (DTConMSA X) c= Union (coprod X) :: according to XBOOLE_0:def_10 ::_thesis: Union (coprod X) c= Terminals (DTConMSA X) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in Terminals (DTConMSA X) or x in Union (coprod X) ) assume A23: x in Terminals (DTConMSA X) ; ::_thesis: x in Union (coprod X) then not x in [: the carrier' of S,{ the carrier of S}:] by A3, A4, XBOOLE_0:3; hence x in Union (coprod X) by A23, XBOOLE_0:def_3; ::_thesis: verum end; thus Union (coprod X) c= Terminals (DTConMSA X) by MSAFREE:6; ::_thesis: verum end; theorem :: ABCMIZ_1:121 for S being non void Signature for X, Y being ManySortedSet of the carrier of S st X c= Y & X is with_missing_variables holds ( Terminals (DTConMSA X) c= Terminals (DTConMSA Y) & the Rules of (DTConMSA X) c= the Rules of (DTConMSA Y) & TS (DTConMSA X) c= TS (DTConMSA Y) ) proof let S be non void Signature; ::_thesis: for X, Y being ManySortedSet of the carrier of S st X c= Y & X is with_missing_variables holds ( Terminals (DTConMSA X) c= Terminals (DTConMSA Y) & the Rules of (DTConMSA X) c= the Rules of (DTConMSA Y) & TS (DTConMSA X) c= TS (DTConMSA Y) ) let X, Y be ManySortedSet of the carrier of S; ::_thesis: ( X c= Y & X is with_missing_variables implies ( Terminals (DTConMSA X) c= Terminals (DTConMSA Y) & the Rules of (DTConMSA X) c= the Rules of (DTConMSA Y) & TS (DTConMSA X) c= TS (DTConMSA Y) ) ) assume that A1: X c= Y and A2: X is with_missing_variables ; ::_thesis: ( Terminals (DTConMSA X) c= Terminals (DTConMSA Y) & the Rules of (DTConMSA X) c= the Rules of (DTConMSA Y) & TS (DTConMSA X) c= TS (DTConMSA Y) ) A3: Y is with_missing_variables by A1, A2, Th117; set G = DTConMSA X; set G9 = DTConMSA Y; A4: the carrier of (DTConMSA X) c= the carrier of (DTConMSA Y) by A1, Th118, XBOOLE_1:9; A5: Terminals (DTConMSA X) = Union (coprod X) by A2, Th120; A6: Terminals (DTConMSA Y) = Union (coprod Y) by A3, Th120; hence Terminals (DTConMSA X) c= Terminals (DTConMSA Y) by A1, A5, Th118; ::_thesis: ( the Rules of (DTConMSA X) c= the Rules of (DTConMSA Y) & TS (DTConMSA X) c= TS (DTConMSA Y) ) A7: the carrier of (DTConMSA X) * c= the carrier of (DTConMSA Y) * by A4, FINSEQ_1:62; thus the Rules of (DTConMSA X) c= the Rules of (DTConMSA Y) ::_thesis: TS (DTConMSA X) c= TS (DTConMSA Y) proof let a, b be set ; :: according to RELAT_1:def_3 ::_thesis: ( not b ast in the Rules of (DTConMSA X) or b ast in the Rules of (DTConMSA Y) ) assume A8: [a,b] in the Rules of (DTConMSA X) ; ::_thesis: b ast in the Rules of (DTConMSA Y) then A9: a in [: the carrier' of S,{ the carrier of S}:] by MSAFREE1:2; A10: b in ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X))) * by A8, MSAFREE1:2; reconsider a = a as Element of [: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X)) by A9, XBOOLE_0:def_3; reconsider a9 = a as Element of [: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod Y)) by A9, XBOOLE_0:def_3; reconsider b = b as Element of ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X))) * by A8, MSAFREE1:2; reconsider b9 = b as Element of ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod Y))) * by A7, A10; now__::_thesis:_for_o_being_OperSymbol_of_S_st_[o,_the_carrier_of_S]_=_a9_holds_ (_len_b9_=_len_(the_arity_of_o)_&_(_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]_=_b_._x_holds_ the_result_sort_of_o1_=_(the_arity_of_o)_._x_)_&_(_b9_._x_in_Union_(coprod_Y)_implies_b9_._x_in_coprod_(((the_arity_of_o)_._x),Y)_)_)_)_) let o be OperSymbol of S; ::_thesis: ( [o, the carrier of S] = a9 implies ( len b9 = len (the_arity_of o) & ( 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] = b . x holds the_result_sort_of o1 = (the_arity_of o) . x ) & ( b9 . x in Union (coprod Y) implies b9 . x in coprod (((the_arity_of o) . x),Y) ) ) ) ) ) assume A11: [o, the carrier of S] = a9 ; ::_thesis: ( len b9 = len (the_arity_of o) & ( 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] = b . x holds the_result_sort_of o1 = (the_arity_of o) . x ) & ( b9 . x in Union (coprod Y) implies b9 . x in coprod (((the_arity_of o) . x),Y) ) ) ) ) hence A12: len b9 = len (the_arity_of o) by A8, MSAFREE:def_7; ::_thesis: 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] = b . x holds the_result_sort_of o1 = (the_arity_of o) . x ) & ( b9 . x in Union (coprod Y) implies b9 . x in coprod (((the_arity_of o) . x),Y) ) ) let x be set ; ::_thesis: ( x in dom b9 implies ( ( b9 . 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 ) & ( b9 . x in Union (coprod Y) implies b9 . x in coprod (((the_arity_of o) . x),Y) ) ) ) assume A13: x in dom b9 ; ::_thesis: ( ( b9 . 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 ) & ( b9 . x in Union (coprod Y) implies b9 . x in coprod (((the_arity_of o) . x),Y) ) ) hence ( b9 . 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 ) by A8, A11, MSAFREE:def_7; ::_thesis: ( b9 . x in Union (coprod Y) implies b9 . x in coprod (((the_arity_of o) . x),Y) ) A14: Union (coprod Y) misses [: the carrier' of S,{ the carrier of S}:] by MSAFREE:4; A15: b . x in [: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X)) by A13, DTCONSTR:2; A16: dom b9 = Seg (len b9) by FINSEQ_1:def_3; dom (the_arity_of o) = Seg (len b9) by A12, FINSEQ_1:def_3; then A17: (the_arity_of o) . x in the carrier of S by A13, A16, DTCONSTR:2; assume A18: b9 . x in Union (coprod Y) ; ::_thesis: b9 . x in coprod (((the_arity_of o) . x),Y) ( b . x in [: the carrier' of S,{ the carrier of S}:] or b . x in Union (coprod X) ) by A15, XBOOLE_0:def_3; then b . x in coprod (((the_arity_of o) . x),X) by A8, A11, A13, A14, A18, MSAFREE:def_7, XBOOLE_0:3; then A19: ex a being set st ( a in X . ((the_arity_of o) . x) & b . x = [a,((the_arity_of o) . x)] ) by A17, MSAFREE:def_2; X . ((the_arity_of o) . x) c= Y . ((the_arity_of o) . x) by A1, A17, PBOOLE:def_2; hence b9 . x in coprod (((the_arity_of o) . x),Y) by A17, A19, MSAFREE:def_2; ::_thesis: verum end; hence b ast in the Rules of (DTConMSA Y) by A9, MSAFREE:def_7; ::_thesis: verum end; hence TS (DTConMSA X) c= TS (DTConMSA Y) by A1, A5, A6, Th116, Th118; ::_thesis: verum end; theorem Th122: :: ABCMIZ_1:122 for C being initialized ConstructorSignature for t being set holds ( t in Terminals (DTConMSA (MSVars C)) iff ex x being variable st t = [x,(a_Term C)] ) proof let C be initialized ConstructorSignature; ::_thesis: for t being set holds ( t in Terminals (DTConMSA (MSVars C)) iff ex x being variable st t = [x,(a_Term C)] ) let t be set ; ::_thesis: ( t in Terminals (DTConMSA (MSVars C)) iff ex x being variable st t = [x,(a_Term C)] ) set X = MSVars C; A1: Terminals (DTConMSA (MSVars C)) = Union (coprod (MSVars C)) by Th120; A2: dom (MSVars C) = the carrier of C by PARTFUN1:def_2; A3: the carrier of C = {a_Type,an_Adj,a_Term} by Def9; A4: (MSVars C) . a_Type = {} by Def25; A5: (MSVars C) . an_Adj = {} by Def25; A6: (MSVars C) . a_Term = Vars by Def25; hereby ::_thesis: ( ex x being variable st t = [x,(a_Term C)] implies t in Terminals (DTConMSA (MSVars C)) ) assume A7: t in Terminals (DTConMSA (MSVars C)) ; ::_thesis: ex x being variable st t = [x,(a_Term C)] then A8: t `2 in dom (MSVars C) by A1, CARD_3:22; A9: t `1 in (MSVars C) . (t `2) by A1, A7, CARD_3:22; A10: ( t `2 = a_Type or t `2 = an_Adj or t `2 = a_Term ) by A3, A8, ENUMSET1:def_1; reconsider x = t `1 as variable by A3, A4, A5, A6, A8, A9, ENUMSET1:def_1; take x = x; ::_thesis: t = [x,(a_Term C)] thus t = [x,(a_Term C)] by A1, A4, A5, A7, A10, CARD_3:22; ::_thesis: verum end; given x being variable such that A11: t = [x,(a_Term C)] ; ::_thesis: t in Terminals (DTConMSA (MSVars C)) A12: t `1 = x by A11, MCART_1:7; t `2 = a_Term by A11, MCART_1:7; hence t in Terminals (DTConMSA (MSVars C)) by A1, A2, A6, A11, A12, CARD_3:22; ::_thesis: verum end; theorem Th123: :: ABCMIZ_1:123 for C being initialized ConstructorSignature for t being set holds ( t in NonTerminals (DTConMSA (MSVars C)) iff ( t = [(ast C), the carrier of C] or t = [(non_op C), the carrier of C] or ex c being constructor OperSymbol of C st t = [c, the carrier of C] ) ) proof let C be initialized ConstructorSignature; ::_thesis: for t being set holds ( t in NonTerminals (DTConMSA (MSVars C)) iff ( t = [(ast C), the carrier of C] or t = [(non_op C), the carrier of C] or ex c being constructor OperSymbol of C st t = [c, the carrier of C] ) ) let t be set ; ::_thesis: ( t in NonTerminals (DTConMSA (MSVars C)) iff ( t = [(ast C), the carrier of C] or t = [(non_op C), the carrier of C] or ex c being constructor OperSymbol of C st t = [c, the carrier of C] ) ) set X = MSVars C; A1: NonTerminals (DTConMSA (MSVars C)) = [: the carrier' of C,{ the carrier of C}:] by Th120; hereby ::_thesis: ( ( t = [(ast C), the carrier of C] or t = [(non_op C), the carrier of C] or ex c being constructor OperSymbol of C st t = [c, the carrier of C] ) implies t in NonTerminals (DTConMSA (MSVars C)) ) assume t in NonTerminals (DTConMSA (MSVars C)) ; ::_thesis: ( t = [(ast C), the carrier of C] or t = [(non_op C), the carrier of C] or ex c being constructor OperSymbol of C st t = [c, the carrier of C] ) then consider a, b being set such that A2: a in the carrier' of C and A3: b in { the carrier of C} and A4: t = [a,b] by A1, ZFMISC_1:def_2; reconsider a = a as OperSymbol of C by A2; A5: b = the carrier of C by A3, TARSKI:def_1; ( a is constructor or not a is constructor ) ; hence ( t = [(ast C), the carrier of C] or t = [(non_op C), the carrier of C] or ex c being constructor OperSymbol of C st t = [c, the carrier of C] ) by A4, A5, Def11; ::_thesis: verum end; the carrier of C in { the carrier of C} by TARSKI:def_1; hence ( ( t = [(ast C), the carrier of C] or t = [(non_op C), the carrier of C] or ex c being constructor OperSymbol of C st t = [c, the carrier of C] ) implies t in NonTerminals (DTConMSA (MSVars C)) ) by A1, ZFMISC_1:87; ::_thesis: verum end; theorem Th124: :: ABCMIZ_1:124 for S being non void Signature for X being with_missing_variables ManySortedSet of the carrier of S for t being set st t in Union the Sorts of (Free (S,X)) holds t is Term of S,(X \/ ( the carrier of S --> {0})) proof let S be non void Signature; ::_thesis: for X being with_missing_variables ManySortedSet of the carrier of S for t being set st t in Union the Sorts of (Free (S,X)) holds t is Term of S,(X \/ ( the carrier of S --> {0})) let X be with_missing_variables ManySortedSet of the carrier of S; ::_thesis: for t being set st t in Union the Sorts of (Free (S,X)) holds t is Term of S,(X \/ ( the carrier of S --> {0})) set V = X \/ ( the carrier of S --> {0}); set A = Free (S,X); set U = the Sorts of (Free (S,X)); A1: the Sorts of (Free (S,X)) = S -Terms (X,(X \/ ( the carrier of S --> {0}))) by MSAFREE3:24; let t be set ; ::_thesis: ( t in Union the Sorts of (Free (S,X)) implies t is Term of S,(X \/ ( the carrier of S --> {0})) ) assume t in Union the Sorts of (Free (S,X)) ; ::_thesis: t is Term of S,(X \/ ( the carrier of S --> {0})) then consider s being set such that A2: s in dom the Sorts of (Free (S,X)) and A3: t in the Sorts of (Free (S,X)) . s by CARD_5:2; reconsider s = s as SortSymbol of S by A2; the Sorts of (Free (S,X)) . s = { r where r is Term of S,(X \/ ( the carrier of S --> {0})) : ( the_sort_of r = s & variables_in r c= X ) } by A1, MSAFREE3:def_5; then ex r being Term of S,(X \/ ( the carrier of S --> {0})) st ( t = r & the_sort_of r = s & variables_in r c= X ) by A3; hence t is Term of S,(X \/ ( the carrier of S --> {0})) ; ::_thesis: verum end; theorem :: ABCMIZ_1:125 for S being non void Signature for X being with_missing_variables ManySortedSet of the carrier of S for t being Term of S,(X \/ ( the carrier of S --> {0})) st t in Union the Sorts of (Free (S,X)) holds t in the Sorts of (Free (S,X)) . (the_sort_of t) proof let S be non void Signature; ::_thesis: for X being with_missing_variables ManySortedSet of the carrier of S for t being Term of S,(X \/ ( the carrier of S --> {0})) st t in Union the Sorts of (Free (S,X)) holds t in the Sorts of (Free (S,X)) . (the_sort_of t) let X be with_missing_variables ManySortedSet of the carrier of S; ::_thesis: for t being Term of S,(X \/ ( the carrier of S --> {0})) st t in Union the Sorts of (Free (S,X)) holds t in the Sorts of (Free (S,X)) . (the_sort_of t) set V = X \/ ( the carrier of S --> {0}); set A = Free (S,X); set U = the Sorts of (Free (S,X)); A1: the Sorts of (Free (S,X)) = S -Terms (X,(X \/ ( the carrier of S --> {0}))) by MSAFREE3:24; let t be Term of S,(X \/ ( the carrier of S --> {0})); ::_thesis: ( t in Union the Sorts of (Free (S,X)) implies t in the Sorts of (Free (S,X)) . (the_sort_of t) ) assume t in Union the Sorts of (Free (S,X)) ; ::_thesis: t in the Sorts of (Free (S,X)) . (the_sort_of t) then consider s being set such that A2: s in dom the Sorts of (Free (S,X)) and A3: t in the Sorts of (Free (S,X)) . s by CARD_5:2; reconsider s = s as SortSymbol of S by A2; the Sorts of (Free (S,X)) . s = { r where r is Term of S,(X \/ ( the carrier of S --> {0})) : ( the_sort_of r = s & variables_in r c= X ) } by A1, MSAFREE3:def_5; then ex r being Term of S,(X \/ ( the carrier of S --> {0})) st ( t = r & the_sort_of r = s & variables_in r c= X ) by A3; hence t in the Sorts of (Free (S,X)) . (the_sort_of t) by A3; ::_thesis: verum end; theorem :: ABCMIZ_1:126 for G being non empty DTConstrStr for s being Element of G for p being FinSequence st s ==> p holds p is FinSequence of the carrier of G proof let G be non empty DTConstrStr ; ::_thesis: for s being Element of G for p being FinSequence st s ==> p holds p is FinSequence of the carrier of G let s be Element of G; ::_thesis: for p being FinSequence st s ==> p holds p is FinSequence of the carrier of G let p be FinSequence; ::_thesis: ( s ==> p implies p is FinSequence of the carrier of G ) assume s ==> p ; ::_thesis: p is FinSequence of the carrier of G then [s,p] in the Rules of G by LANG1:def_1; then p in the carrier of G * by ZFMISC_1:87; hence p is FinSequence of the carrier of G by FINSEQ_1:def_11; ::_thesis: verum end; theorem Th127: :: ABCMIZ_1:127 for S being non void Signature for X, Y being ManySortedSet of the carrier of S for g1 being Symbol of (DTConMSA X) for g2 being Symbol of (DTConMSA Y) for p1 being FinSequence of the carrier of (DTConMSA X) for p2 being FinSequence of the carrier of (DTConMSA Y) st g1 = g2 & p1 = p2 & g1 ==> p1 holds g2 ==> p2 proof let S be non void Signature; ::_thesis: for X, Y being ManySortedSet of the carrier of S for g1 being Symbol of (DTConMSA X) for g2 being Symbol of (DTConMSA Y) for p1 being FinSequence of the carrier of (DTConMSA X) for p2 being FinSequence of the carrier of (DTConMSA Y) st g1 = g2 & p1 = p2 & g1 ==> p1 holds g2 ==> p2 let X, Y be ManySortedSet of the carrier of S; ::_thesis: for g1 being Symbol of (DTConMSA X) for g2 being Symbol of (DTConMSA Y) for p1 being FinSequence of the carrier of (DTConMSA X) for p2 being FinSequence of the carrier of (DTConMSA Y) st g1 = g2 & p1 = p2 & g1 ==> p1 holds g2 ==> p2 A1: dom Y = the carrier of S by PARTFUN1:def_2; set G1 = DTConMSA X; set G2 = DTConMSA Y; let g1 be Symbol of (DTConMSA X); ::_thesis: for g2 being Symbol of (DTConMSA Y) for p1 being FinSequence of the carrier of (DTConMSA X) for p2 being FinSequence of the carrier of (DTConMSA Y) st g1 = g2 & p1 = p2 & g1 ==> p1 holds g2 ==> p2 let g2 be Symbol of (DTConMSA Y); ::_thesis: for p1 being FinSequence of the carrier of (DTConMSA X) for p2 being FinSequence of the carrier of (DTConMSA Y) st g1 = g2 & p1 = p2 & g1 ==> p1 holds g2 ==> p2 let p1 be FinSequence of the carrier of (DTConMSA X); ::_thesis: for p2 being FinSequence of the carrier of (DTConMSA Y) st g1 = g2 & p1 = p2 & g1 ==> p1 holds g2 ==> p2 let p2 be FinSequence of the carrier of (DTConMSA Y); ::_thesis: ( g1 = g2 & p1 = p2 & g1 ==> p1 implies g2 ==> p2 ) assume that A2: g1 = g2 and A3: p1 = p2 and A4: g1 ==> p1 ; ::_thesis: g2 ==> p2 A5: [g1,p1] in REL X by A4, LANG1:def_1; then A6: p1 in ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod X))) * by ZFMISC_1:87; then A7: g1 in [: the carrier' of S,{ the carrier of S}:] by A5, MSAFREE:def_7; A8: p2 in ([: the carrier' of S,{ the carrier of S}:] \/ (Union (coprod Y))) * by FINSEQ_1:def_11; now__::_thesis:_for_o9_being_OperSymbol_of_S_st_[o9,_the_carrier_of_S]_=_g2_holds_ (_len_p2_=_len_(the_arity_of_o9)_&_(_for_x_being_set_st_x_in_dom_p2_holds_ (_(_p2_._x_in_[:_the_carrier'_of_S,{_the_carrier_of_S}:]_implies_for_o1_being_OperSymbol_of_S_st_[o1,_the_carrier_of_S]_=_p2_._x_holds_ the_result_sort_of_o1_=_(the_arity_of_o9)_._x_)_&_(_p2_._x_in_Union_(coprod_Y)_implies_p2_._x_in_coprod_(((the_arity_of_o9)_._x),Y)_)_)_)_) let o9 be OperSymbol of S; ::_thesis: ( [o9, the carrier of S] = g2 implies ( len p2 = len (the_arity_of o9) & ( for x being set st x in dom p2 holds ( ( p2 . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = p2 . x holds the_result_sort_of o1 = (the_arity_of o9) . x ) & ( p2 . x in Union (coprod Y) implies p2 . x in coprod (((the_arity_of o9) . x),Y) ) ) ) ) ) assume A9: [o9, the carrier of S] = g2 ; ::_thesis: ( len p2 = len (the_arity_of o9) & ( for x being set st x in dom p2 holds ( ( p2 . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = p2 . x holds the_result_sort_of o1 = (the_arity_of o9) . x ) & ( p2 . x in Union (coprod Y) implies p2 . x in coprod (((the_arity_of o9) . x),Y) ) ) ) ) hence A10: len p2 = len (the_arity_of o9) by A2, A3, A5, A6, MSAFREE:def_7; ::_thesis: for x being set st x in dom p2 holds ( ( p2 . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = p2 . x holds the_result_sort_of o1 = (the_arity_of o9) . x ) & ( p2 . x in Union (coprod Y) implies p2 . x in coprod (((the_arity_of o9) . x),Y) ) ) let x be set ; ::_thesis: ( x in dom p2 implies ( ( p2 . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = p2 . x holds the_result_sort_of o1 = (the_arity_of o9) . x ) & ( p2 . x in Union (coprod Y) implies p2 . x in coprod (((the_arity_of o9) . x),Y) ) ) ) assume A11: x in dom p2 ; ::_thesis: ( ( p2 . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = p2 . x holds the_result_sort_of o1 = (the_arity_of o9) . x ) & ( p2 . x in Union (coprod Y) implies p2 . x in coprod (((the_arity_of o9) . x),Y) ) ) hence ( p2 . x in [: the carrier' of S,{ the carrier of S}:] implies for o1 being OperSymbol of S st [o1, the carrier of S] = p2 . x holds the_result_sort_of o1 = (the_arity_of o9) . x ) by A2, A3, A5, A6, A9, MSAFREE:def_7; ::_thesis: ( p2 . x in Union (coprod Y) implies p2 . x in coprod (((the_arity_of o9) . x),Y) ) x in dom (the_arity_of o9) by A10, A11, FINSEQ_3:29; then (the_arity_of o9) . x in rng (the_arity_of o9) by FUNCT_1:def_3; then reconsider i = (the_arity_of o9) . x as SortSymbol of S ; assume A12: p2 . x in Union (coprod Y) ; ::_thesis: p2 . x in coprod (((the_arity_of o9) . x),Y) then A13: (p2 . x) `2 in dom Y by CARD_3:22; A14: (p2 . x) `1 in Y . ((p2 . x) `2) by A12, CARD_3:22; A15: p2 . x = [((p2 . x) `1),((p2 . x) `2)] by A12, CARD_3:22; p2 . x in rng p1 by A3, A11, FUNCT_1:def_3; then ( ( the carrier of S nin the carrier of S & p2 . x in [: the carrier' of S,{ the carrier of S}:] ) or p2 . x in Union (coprod X) ) by XBOOLE_0:def_3; then p2 . x in coprod (i,X) by A1, A2, A3, A5, A6, A9, A11, A13, A15, MSAFREE:def_7, ZFMISC_1:106; then ex a being set st ( a in X . i & p2 . x = [a,i] ) by MSAFREE:def_2; then i = (p2 . x) `2 by A15, XTUPLE_0:1; hence p2 . x in coprod (((the_arity_of o9) . x),Y) by A14, A15, MSAFREE:def_2; ::_thesis: verum end; then [g2,p2] in REL Y by A2, A7, A8, MSAFREE:def_7; hence g2 ==> p2 by LANG1:def_1; ::_thesis: verum end; theorem Th128: :: ABCMIZ_1:128 for S being non void Signature for X being with_missing_variables ManySortedSet of the carrier of S holds Union the Sorts of (Free (S,X)) = TS (DTConMSA X) proof let S be non void Signature; ::_thesis: for X being with_missing_variables ManySortedSet of the carrier of S holds Union the Sorts of (Free (S,X)) = TS (DTConMSA X) let X be with_missing_variables ManySortedSet of the carrier of S; ::_thesis: Union the Sorts of (Free (S,X)) = TS (DTConMSA X) set V = X \/ ( the carrier of S --> {0}); set A = Free (S,X); set U = the Sorts of (Free (S,X)); set G = DTConMSA X; A1: the Sorts of (Free (S,X)) = S -Terms (X,(X \/ ( the carrier of S --> {0}))) by MSAFREE3:24; A2: dom the Sorts of (Free (S,X)) = the carrier of S by PARTFUN1:def_2; defpred S1[ set ] means ( $1 in Union the Sorts of (Free (S,X)) implies $1 in TS (DTConMSA X) ); A3: for s being SortSymbol of S for v being Element of (X \/ ( the carrier of S --> {0})) . s holds S1[ root-tree [v,s]] proof let s be SortSymbol of S; ::_thesis: for v being Element of (X \/ ( the carrier of S --> {0})) . s holds S1[ root-tree [v,s]] let v be Element of (X \/ ( the carrier of S --> {0})) . s; ::_thesis: S1[ root-tree [v,s]] assume root-tree [v,s] in Union the Sorts of (Free (S,X)) ; ::_thesis: root-tree [v,s] in TS (DTConMSA X) then consider s1 being set such that A4: s1 in dom the Sorts of (Free (S,X)) and A5: root-tree [v,s] in the Sorts of (Free (S,X)) . s1 by CARD_5:2; reconsider s1 = s1 as SortSymbol of S by A4; the Sorts of (Free (S,X)) . s1 = { t where t is Term of S,(X \/ ( the carrier of S --> {0})) : ( the_sort_of t = s1 & variables_in t c= X ) } by A1, MSAFREE3:def_5; then consider t being Term of S,(X \/ ( the carrier of S --> {0})) such that A6: root-tree [v,s] = t and the_sort_of t = s1 and A7: variables_in t c= X by A5; (variables_in t) . s = {v} by A6, MSAFREE3:10; then {v} c= X . s by A7, PBOOLE:def_2; then v in X . s by ZFMISC_1:31; then [v,s] in Terminals (DTConMSA X) by MSAFREE:7; hence root-tree [v,s] in TS (DTConMSA X) by DTCONSTR:def_1; ::_thesis: verum end; A8: for o being OperSymbol of S for p being ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) st ( for t being Term of S,(X \/ ( the carrier of S --> {0})) st t in rng p holds S1[t] ) holds S1[[o, the carrier of S] -tree p] proof let o be OperSymbol of S; ::_thesis: for p being ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) st ( for t being Term of S,(X \/ ( the carrier of S --> {0})) st t in rng p holds S1[t] ) holds S1[[o, the carrier of S] -tree p] let p be ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))); ::_thesis: ( ( for t being Term of S,(X \/ ( the carrier of S --> {0})) st t in rng p holds S1[t] ) implies S1[[o, the carrier of S] -tree p] ) assume that A9: for t being Term of S,(X \/ ( the carrier of S --> {0})) st t in rng p holds S1[t] and A10: [o, the carrier of S] -tree p in Union the Sorts of (Free (S,X)) ; ::_thesis: [o, the carrier of S] -tree p in TS (DTConMSA X) consider s being set such that A11: s in dom the Sorts of (Free (S,X)) and A12: [o, the carrier of S] -tree p in the Sorts of (Free (S,X)) . s by A10, CARD_5:2; reconsider s = s as SortSymbol of S by A11; the Sorts of (Free (S,X)) . s = { t where t is Term of S,(X \/ ( the carrier of S --> {0})) : ( the_sort_of t = s & variables_in t c= X ) } by A1, MSAFREE3:def_5; then consider t being Term of S,(X \/ ( the carrier of S --> {0})) such that A13: [o, the carrier of S] -tree p = t and A14: the_sort_of t = s and variables_in t c= X by A12; t . {} = [o, the carrier of S] by A13, TREES_4:def_4; then the_result_sort_of o = s by A14, MSATERM:17; then A15: rng p c= Union the Sorts of (Free (S,X)) by A1, A12, MSAFREE3:19; rng p c= TS (DTConMSA X) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in rng p or x in TS (DTConMSA X) ) assume A16: x in rng p ; ::_thesis: x in TS (DTConMSA X) then x is Term of S,(X \/ ( the carrier of S --> {0})) by A15, Th124; hence x in TS (DTConMSA X) by A9, A15, A16; ::_thesis: verum end; then reconsider q = p as FinSequence of TS (DTConMSA X) by FINSEQ_1:def_4; NonTerminals (DTConMSA X) = [: the carrier' of S,{ the carrier of S}:] by Th120; then [o, the carrier of S] in NonTerminals (DTConMSA X) by ZFMISC_1:106; then reconsider oo = [o, the carrier of S] as Symbol of (DTConMSA X) ; Sym (o,(X \/ ( the carrier of S --> {0}))) ==> roots p by MSATERM:21; then oo ==> roots q by Th127; hence [o, the carrier of S] -tree p in TS (DTConMSA X) by DTCONSTR:def_1; ::_thesis: verum end; A17: for t being Term of S,(X \/ ( the carrier of S --> {0})) holds S1[t] from MSATERM:sch_1(A3, A8); A18: NonTerminals (DTConMSA X) = [: the carrier' of S,{ the carrier of S}:] by Th120; A19: Terminals (DTConMSA X) = Union (coprod X) by Th120; defpred S2[ set ] means $1 in Union the Sorts of (Free (S,X)); A20: for s being Symbol of (DTConMSA X) st s in Terminals (DTConMSA X) holds S2[ root-tree s] proof let s be Symbol of (DTConMSA X); ::_thesis: ( s in Terminals (DTConMSA X) implies S2[ root-tree s] ) assume A21: s in Terminals (DTConMSA X) ; ::_thesis: S2[ root-tree s] then A22: s `2 in dom X by A19, CARD_3:22; A23: s `1 in X . (s `2) by A19, A21, CARD_3:22; A24: s = [(s `1),(s `2)] by A19, A21, CARD_3:22; A25: dom the Sorts of (Free (S,X)) = the carrier of S by PARTFUN1:def_2; root-tree s in the Sorts of (Free (S,X)) . (s `2) by A22, A23, A24, MSAFREE3:4; hence S2[ root-tree s] by A22, A25, CARD_5:2; ::_thesis: verum end; A26: for nt being Symbol of (DTConMSA X) for ts being FinSequence of TS (DTConMSA X) st nt ==> roots ts & ( for t being DecoratedTree of the carrier of (DTConMSA X) st t in rng ts holds S2[t] ) holds S2[nt -tree ts] proof let nt be Symbol of (DTConMSA X); ::_thesis: for ts being FinSequence of TS (DTConMSA X) st nt ==> roots ts & ( for t being DecoratedTree of the carrier of (DTConMSA X) st t in rng ts holds S2[t] ) holds S2[nt -tree ts] let ts be FinSequence of TS (DTConMSA X); ::_thesis: ( nt ==> roots ts & ( for t being DecoratedTree of the carrier of (DTConMSA X) st t in rng ts holds S2[t] ) implies S2[nt -tree ts] ) assume that A27: nt ==> roots ts and A28: for t being DecoratedTree of the carrier of (DTConMSA X) st t in rng ts holds S2[t] ; ::_thesis: S2[nt -tree ts] nt in NonTerminals (DTConMSA X) by A27; then consider o, z being set such that A29: o in the carrier' of S and A30: z in { the carrier of S} and A31: nt = [o,z] by A18, ZFMISC_1:def_2; reconsider o = o as OperSymbol of S by A29; A32: rng ts c= Union the Sorts of (Free (S,X)) proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in rng ts or a in Union the Sorts of (Free (S,X)) ) assume A33: a in rng ts ; ::_thesis: a in Union the Sorts of (Free (S,X)) thus a in Union the Sorts of (Free (S,X)) by A28, A33; ::_thesis: verum end; rng ts c= TS (DTConMSA (X \/ ( the carrier of S --> {0}))) proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in rng ts or a in TS (DTConMSA (X \/ ( the carrier of S --> {0}))) ) assume a in rng ts ; ::_thesis: a in TS (DTConMSA (X \/ ( the carrier of S --> {0}))) then A34: a is Element of S -Terms (X \/ ( the carrier of S --> {0})) by A32, Th124; S -Terms (X \/ ( the carrier of S --> {0})) = TS (DTConMSA (X \/ ( the carrier of S --> {0}))) by MSATERM:def_1; hence a in TS (DTConMSA (X \/ ( the carrier of S --> {0}))) by A34; ::_thesis: verum end; then reconsider p = ts as FinSequence of TS (DTConMSA (X \/ ( the carrier of S --> {0}))) by FINSEQ_1:def_4; reconsider q = p as FinSequence of S -Terms (X \/ ( the carrier of S --> {0})) by MSATERM:def_1; A35: z = the carrier of S by A30, TARSKI:def_1; then Sym (o,(X \/ ( the carrier of S --> {0}))) ==> roots p by A27, A31, Th127; then reconsider q = q as ArgumentSeq of Sym (o,(X \/ ( the carrier of S --> {0}))) by MSATERM:21; set t = (Sym (o,(X \/ ( the carrier of S --> {0})))) -tree q; (Sym (o,(X \/ ( the carrier of S --> {0})))) -tree q in the Sorts of (Free (S,X)) . (the_result_sort_of o) by A1, A32, MSAFREE3:19; hence S2[nt -tree ts] by A2, A31, A35, CARD_5:2; ::_thesis: verum end; A36: for t being DecoratedTree of the carrier of (DTConMSA X) st t in TS (DTConMSA X) holds S2[t] from DTCONSTR:sch_7(A20, A26); thus Union the Sorts of (Free (S,X)) c= TS (DTConMSA X) :: according to XBOOLE_0:def_10 ::_thesis: TS (DTConMSA X) c= Union the Sorts of (Free (S,X)) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in Union the Sorts of (Free (S,X)) or x in TS (DTConMSA X) ) assume A37: x in Union the Sorts of (Free (S,X)) ; ::_thesis: x in TS (DTConMSA X) then consider s being set such that A38: s in dom the Sorts of (Free (S,X)) and A39: x in the Sorts of (Free (S,X)) . s by CARD_5:2; reconsider s = s as SortSymbol of S by A38; x in the Sorts of (Free (S,X)) . s by A39; then x is Term of S,(X \/ ( the carrier of S --> {0})) by A1, MSAFREE3:16; hence x in TS (DTConMSA X) by A17, A37; ::_thesis: verum end; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in TS (DTConMSA X) or x in Union the Sorts of (Free (S,X)) ) assume A40: x in TS (DTConMSA X) ; ::_thesis: x in Union the Sorts of (Free (S,X)) then reconsider TG = TS (DTConMSA X) as non empty Subset of (FinTrees the carrier of (DTConMSA X)) ; x is Element of TG by A40; hence x in Union the Sorts of (Free (S,X)) by A36; ::_thesis: verum end; definition let S be non void Signature; let X be ManySortedSet of the carrier of S; mode term-transformation of S,X -> UnOp of (Union the Sorts of (Free (S,X))) means :Def56: :: ABCMIZ_1:def 56 for s being SortSymbol of S holds it .: ( the Sorts of (Free (S,X)) . s) c= the Sorts of (Free (S,X)) . s; existence ex b1 being UnOp of (Union the Sorts of (Free (S,X))) st for s being SortSymbol of S holds b1 .: ( the Sorts of (Free (S,X)) . s) c= the Sorts of (Free (S,X)) . s proof set f = id (Union the Sorts of (Free (S,X))); A1: dom (id (Union the Sorts of (Free (S,X)))) = Union the Sorts of (Free (S,X)) ; rng (id (Union the Sorts of (Free (S,X)))) = Union the Sorts of (Free (S,X)) ; then reconsider f = id (Union the Sorts of (Free (S,X))) as UnOp of (Union the Sorts of (Free (S,X))) by A1, FUNCT_2:2; take f ; ::_thesis: for s being SortSymbol of S holds f .: ( the Sorts of (Free (S,X)) . s) c= the Sorts of (Free (S,X)) . s thus for s being SortSymbol of S holds f .: ( the Sorts of (Free (S,X)) . s) c= the Sorts of (Free (S,X)) . s by Th4; ::_thesis: verum end; end; :: deftheorem Def56 defines term-transformation ABCMIZ_1:def_56_:_ for S being non void Signature for X being ManySortedSet of the carrier of S for b3 being UnOp of (Union the Sorts of (Free (S,X))) holds ( b3 is term-transformation of S,X iff for s being SortSymbol of S holds b3 .: ( the Sorts of (Free (S,X)) . s) c= the Sorts of (Free (S,X)) . s ); theorem Th129: :: ABCMIZ_1:129 for S being non void Signature for X being non empty ManySortedSet of the carrier of S for f being UnOp of (Union the Sorts of (Free (S,X))) holds ( f is term-transformation of S,X iff for s being SortSymbol of S for a being set st a in the Sorts of (Free (S,X)) . s holds f . a in the Sorts of (Free (S,X)) . s ) proof let S be non void Signature; ::_thesis: for X being non empty ManySortedSet of the carrier of S for f being UnOp of (Union the Sorts of (Free (S,X))) holds ( f is term-transformation of S,X iff for s being SortSymbol of S for a being set st a in the Sorts of (Free (S,X)) . s holds f . a in the Sorts of (Free (S,X)) . s ) let X be non empty ManySortedSet of the carrier of S; ::_thesis: for f being UnOp of (Union the Sorts of (Free (S,X))) holds ( f is term-transformation of S,X iff for s being SortSymbol of S for a being set st a in the Sorts of (Free (S,X)) . s holds f . a in the Sorts of (Free (S,X)) . s ) A1: dom the Sorts of (Free (S,X)) = the carrier of S by PARTFUN1:def_2; let f be UnOp of (Union the Sorts of (Free (S,X))); ::_thesis: ( f is term-transformation of S,X iff for s being SortSymbol of S for a being set st a in the Sorts of (Free (S,X)) . s holds f . a in the Sorts of (Free (S,X)) . s ) A2: dom f = Union the Sorts of (Free (S,X)) by FUNCT_2:52; hereby ::_thesis: ( ( for s being SortSymbol of S for a being set st a in the Sorts of (Free (S,X)) . s holds f . a in the Sorts of (Free (S,X)) . s ) implies f is term-transformation of S,X ) assume A3: f is term-transformation of S,X ; ::_thesis: for s being SortSymbol of S for a being set st a in the Sorts of (Free (S,X)) . s holds f . a in the Sorts of (Free (S,X)) . s let s be SortSymbol of S; ::_thesis: for a being set st a in the Sorts of (Free (S,X)) . s holds f . a in the Sorts of (Free (S,X)) . s A4: f .: ( the Sorts of (Free (S,X)) . s) c= the Sorts of (Free (S,X)) . s by A3, Def56; the Sorts of (Free (S,X)) . s in rng the Sorts of (Free (S,X)) by A1, FUNCT_1:def_3; then A5: the Sorts of (Free (S,X)) . s c= Union the Sorts of (Free (S,X)) by ZFMISC_1:74; let a be set ; ::_thesis: ( a in the Sorts of (Free (S,X)) . s implies f . a in the Sorts of (Free (S,X)) . s ) assume a in the Sorts of (Free (S,X)) . s ; ::_thesis: f . a in the Sorts of (Free (S,X)) . s then f . a in f .: ( the Sorts of (Free (S,X)) . s) by A2, A5, FUNCT_1:def_6; hence f . a in the Sorts of (Free (S,X)) . s by A4; ::_thesis: verum end; assume A6: for s being SortSymbol of S for a being set st a in the Sorts of (Free (S,X)) . s holds f . a in the Sorts of (Free (S,X)) . s ; ::_thesis: f is term-transformation of S,X let s be SortSymbol of S; :: according to ABCMIZ_1:def_56 ::_thesis: f .: ( the Sorts of (Free (S,X)) . s) c= the Sorts of (Free (S,X)) . s let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in f .: ( the Sorts of (Free (S,X)) . s) or x in the Sorts of (Free (S,X)) . s ) assume x in f .: ( the Sorts of (Free (S,X)) . s) ; ::_thesis: x in the Sorts of (Free (S,X)) . s then ex a being set st ( a in dom f & a in the Sorts of (Free (S,X)) . s & x = f . a ) by FUNCT_1:def_6; hence x in the Sorts of (Free (S,X)) . s by A6; ::_thesis: verum end; theorem Th130: :: ABCMIZ_1:130 for S being non void Signature for X being non empty ManySortedSet of the carrier of S for f being term-transformation of S,X for s being SortSymbol of S for p being FinSequence of the Sorts of (Free (S,X)) . s holds ( f * p is FinSequence of the Sorts of (Free (S,X)) . s & card (f * p) = len p ) proof let S be non void Signature; ::_thesis: for X being non empty ManySortedSet of the carrier of S for f being term-transformation of S,X for s being SortSymbol of S for p being FinSequence of the Sorts of (Free (S,X)) . s holds ( f * p is FinSequence of the Sorts of (Free (S,X)) . s & card (f * p) = len p ) let X be non empty ManySortedSet of the carrier of S; ::_thesis: for f being term-transformation of S,X for s being SortSymbol of S for p being FinSequence of the Sorts of (Free (S,X)) . s holds ( f * p is FinSequence of the Sorts of (Free (S,X)) . s & card (f * p) = len p ) set A = Free (S,X); let f be term-transformation of S,X; ::_thesis: for s being SortSymbol of S for p being FinSequence of the Sorts of (Free (S,X)) . s holds ( f * p is FinSequence of the Sorts of (Free (S,X)) . s & card (f * p) = len p ) let s be SortSymbol of S; ::_thesis: for p being FinSequence of the Sorts of (Free (S,X)) . s holds ( f * p is FinSequence of the Sorts of (Free (S,X)) . s & card (f * p) = len p ) let p be FinSequence of the Sorts of (Free (S,X)) . s; ::_thesis: ( f * p is FinSequence of the Sorts of (Free (S,X)) . s & card (f * p) = len p ) A1: ( Union the Sorts of (Free (S,X)) = {} or Union the Sorts of (Free (S,X)) <> {} ) ; A2: dom the Sorts of (Free (S,X)) = the carrier of S by PARTFUN1:def_2; A3: dom f = Union the Sorts of (Free (S,X)) by A1, FUNCT_2:def_1; the Sorts of (Free (S,X)) . s in rng the Sorts of (Free (S,X)) by A2, FUNCT_1:def_3; then the Sorts of (Free (S,X)) . s c= Union the Sorts of (Free (S,X)) by ZFMISC_1:74; then rng p c= dom f by A3, XBOOLE_1:1; then A4: dom (f * p) = dom p by RELAT_1:27; dom p = Seg (len p) by FINSEQ_1:def_3; then A5: f * p is FinSequence by A4, FINSEQ_1:def_2; A6: rng (f * p) c= the Sorts of (Free (S,X)) . s proof let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in rng (f * p) or z in the Sorts of (Free (S,X)) . s ) assume z in rng (f * p) ; ::_thesis: z in the Sorts of (Free (S,X)) . s then consider i being set such that A7: i in dom (f * p) and A8: z = (f * p) . i by FUNCT_1:def_3; p . i in rng p by A4, A7, FUNCT_1:def_3; then f . (p . i) in the Sorts of (Free (S,X)) . s by Th129; hence z in the Sorts of (Free (S,X)) . s by A7, A8, FUNCT_1:12; ::_thesis: verum end; hence f * p is FinSequence of the Sorts of (Free (S,X)) . s by A5, FINSEQ_1:def_4; ::_thesis: card (f * p) = len p reconsider q = f * p as FinSequence of the Sorts of (Free (S,X)) . s by A5, A6, FINSEQ_1:def_4; thus card (f * p) = len q .= len p by A4, FINSEQ_3:29 ; ::_thesis: verum end; definition let S be non void Signature; let X be ManySortedSet of the carrier of S; let t be term-transformation of S,X; attrt is substitution means :: ABCMIZ_1:def 57 for o being OperSymbol of S for p, q being FinSequence of (Free (S,X)) st [o, the carrier of S] -tree p in Union the Sorts of (Free (S,X)) & q = t * p holds t . ([o, the carrier of S] -tree p) = [o, the carrier of S] -tree q; end; :: deftheorem defines substitution ABCMIZ_1:def_57_:_ for S being non void Signature for X being ManySortedSet of the carrier of S for t being term-transformation of S,X holds ( t is substitution iff for o being OperSymbol of S for p, q being FinSequence of (Free (S,X)) st [o, the carrier of S] -tree p in Union the Sorts of (Free (S,X)) & q = t * p holds t . ([o, the carrier of S] -tree p) = [o, the carrier of S] -tree q ); scheme :: ABCMIZ_1:sch 3 StructDef{ F1() -> initialized ConstructorSignature, F2( set ) -> expression of F1(), F3( set ) -> expression of F1(), F4( set , set ) -> expression of F1(), F5( set , set ) -> expression of F1() } : ex f being term-transformation of F1(), MSVars F1() st ( ( for x being variable holds f . (x -term F1()) = F2(x) ) & ( for c being constructor OperSymbol of F1() for p, q being FinSequence of QuasiTerms F1() st len p = len (the_arity_of c) & q = f * p holds f . (c -trm p) = F4(c,q) ) & ( for a being expression of F1(), an_Adj F1() holds f . ((non_op F1()) term a) = F3((f . a)) ) & ( for a being expression of F1(), an_Adj F1() for t being expression of F1(), a_Type F1() holds f . ((ast F1()) term (a,t)) = F5((f . a),(f . t)) ) ) provided A1: for x being variable holds F2(x) is quasi-term of F1() and A2: for c being constructor OperSymbol of F1() for p being FinSequence of QuasiTerms F1() st len p = len (the_arity_of c) holds F4(c,p) is expression of F1(), the_result_sort_of c and A3: for a being expression of F1(), an_Adj F1() holds F3(a) is expression of F1(), an_Adj F1() and A4: for a being expression of F1(), an_Adj F1() for t being expression of F1(), a_Type F1() holds F5(a,t) is expression of F1(), a_Type F1() proof set V = MSVars F1(); set X = (MSVars F1()) \/ ( the carrier of F1() --> {0}); set A = Free (F1(),(MSVars F1())); set U = the Sorts of (Free (F1(),(MSVars F1()))); set D = Union the Sorts of (Free (F1(),(MSVars F1()))); set G = DTConMSA (MSVars F1()); deffunc H2( Symbol of (DTConMSA (MSVars F1()))) -> expression of F1() = F2(($1 `1)); deffunc H3( Symbol of (DTConMSA (MSVars F1())), FinSequence, Function) -> Element of Union the Sorts of (Free (F1(),(MSVars F1()))) = IFEQ (($1 `1),*,F5(($3 . 1),($3 . 2)),(IFEQ (($1 `1),non_op,F3(($3 . 1)),F4(($1 `1),$3)))); consider f being Function of (TS (DTConMSA (MSVars F1()))),(Union the Sorts of (Free (F1(),(MSVars F1())))) such that A5: for t being Symbol of (DTConMSA (MSVars F1())) st t in Terminals (DTConMSA (MSVars F1())) holds f . (root-tree t) = H2(t) and A6: for nt being Symbol of (DTConMSA (MSVars F1())) for ts being FinSequence of TS (DTConMSA (MSVars F1())) st nt ==> roots ts holds f . (nt -tree ts) = H3(nt, roots ts,f * ts) from DTCONSTR:sch_8(); Union the Sorts of (Free (F1(),(MSVars F1()))) = TS (DTConMSA (MSVars F1())) by Th128; then reconsider f = f as Function of (Union the Sorts of (Free (F1(),(MSVars F1())))),(Union the Sorts of (Free (F1(),(MSVars F1())))) ; f is term-transformation of F1(), MSVars F1() proof let s be SortSymbol of F1(); :: according to ABCMIZ_1:def_56 ::_thesis: f .: ( the Sorts of (Free (F1(),(MSVars F1()))) . s) c= the Sorts of (Free (F1(),(MSVars F1()))) . s let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in f .: ( the Sorts of (Free (F1(),(MSVars F1()))) . s) or x in the Sorts of (Free (F1(),(MSVars F1()))) . s ) assume x in f .: ( the Sorts of (Free (F1(),(MSVars F1()))) . s) ; ::_thesis: x in the Sorts of (Free (F1(),(MSVars F1()))) . s then consider a being Element of Union the Sorts of (Free (F1(),(MSVars F1()))) such that A7: a in the Sorts of (Free (F1(),(MSVars F1()))) . s and A8: x = f . a by FUNCT_2:65; defpred S1[ expression of F1()] means for s being SortSymbol of F1() st $1 in the Sorts of (Free (F1(),(MSVars F1()))) . s holds f . $1 in the Sorts of (Free (F1(),(MSVars F1()))) . s; A9: for x being variable holds S1[x -term F1()] proof let y be variable; ::_thesis: S1[y -term F1()] set a = y -term F1(); let s be SortSymbol of F1(); ::_thesis: ( y -term F1() in the Sorts of (Free (F1(),(MSVars F1()))) . s implies f . (y -term F1()) in the Sorts of (Free (F1(),(MSVars F1()))) . s ) assume A10: y -term F1() in the Sorts of (Free (F1(),(MSVars F1()))) . s ; ::_thesis: f . (y -term F1()) in the Sorts of (Free (F1(),(MSVars F1()))) . s A11: [y,(a_Term F1())] in Terminals (DTConMSA (MSVars F1())) by Th122; then reconsider t = [y,(a_Term F1())] as Symbol of (DTConMSA (MSVars F1())) ; f . (y -term F1()) = H2(t) by A5, A11 .= F2(y) by MCART_1:7 ; then A12: f . (y -term F1()) is quasi-term of F1() by A1; y -term F1() is expression of F1(),s by A10, Def28; then s = a_Term F1() by Th48; hence f . (y -term F1()) in the Sorts of (Free (F1(),(MSVars F1()))) . s by A12, Def28; ::_thesis: verum end; A13: for c being constructor OperSymbol of F1() for p being FinSequence of QuasiTerms F1() st len p = len (the_arity_of c) & ( for t being quasi-term of F1() st t in rng p holds S1[t] ) holds S1[c -trm p] proof let c be constructor OperSymbol of F1(); ::_thesis: for p being FinSequence of QuasiTerms F1() st len p = len (the_arity_of c) & ( for t being quasi-term of F1() st t in rng p holds S1[t] ) holds S1[c -trm p] let p be FinSequence of QuasiTerms F1(); ::_thesis: ( len p = len (the_arity_of c) & ( for t being quasi-term of F1() st t in rng p holds S1[t] ) implies S1[c -trm p] ) assume that A14: len p = len (the_arity_of c) and A15: for t being quasi-term of F1() st t in rng p holds S1[t] ; ::_thesis: S1[c -trm p] set a = c -trm p; set nt = [c, the carrier of F1()]; let s be SortSymbol of F1(); ::_thesis: ( c -trm p in the Sorts of (Free (F1(),(MSVars F1()))) . s implies f . (c -trm p) in the Sorts of (Free (F1(),(MSVars F1()))) . s ) assume A16: c -trm p in the Sorts of (Free (F1(),(MSVars F1()))) . s ; ::_thesis: f . (c -trm p) in the Sorts of (Free (F1(),(MSVars F1()))) . s [c, the carrier of F1()] in NonTerminals (DTConMSA (MSVars F1())) by Th123; then reconsider nt = [c, the carrier of F1()] as Symbol of (DTConMSA (MSVars F1())) ; reconsider ts = p as FinSequence of TS (DTConMSA (MSVars F1())) by Th128; A17: c -trm p = nt -tree ts by A14, Def35; reconsider aa = c -trm p as Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; the Sorts of (Free (F1(),(MSVars F1()))) = F1() -Terms ((MSVars F1()),((MSVars F1()) \/ ( the carrier of F1() --> {0}))) by MSAFREE3:24; then the Sorts of (Free (F1(),(MSVars F1()))) c= the Sorts of (FreeMSA ((MSVars F1()) \/ ( the carrier of F1() --> {0}))) by PBOOLE:def_18; then the Sorts of (Free (F1(),(MSVars F1()))) . s c= the Sorts of (FreeMSA ((MSVars F1()) \/ ( the carrier of F1() --> {0}))) . s by PBOOLE:def_2; then aa in (FreeSort ((MSVars F1()) \/ ( the carrier of F1() --> {0}))) . s by A16; then aa in FreeSort (((MSVars F1()) \/ ( the carrier of F1() --> {0})),s) by MSAFREE:def_11; then A18: the_sort_of aa = s by MSATERM:def_5; A19: nt `1 = c by MCART_1:7; A20: c <> * by Def11; A21: c <> non_op by Def11; A22: rng p c= QuasiTerms F1() by FINSEQ_1:def_4; dom f = Union the Sorts of (Free (F1(),(MSVars F1()))) by FUNCT_2:def_1; then A23: rng p c= dom f ; rng (f * p) c= QuasiTerms F1() proof let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in rng (f * p) or z in QuasiTerms F1() ) assume z in rng (f * p) ; ::_thesis: z in QuasiTerms F1() then consider i being set such that A24: i in dom (f * p) and A25: z = (f * p) . i by FUNCT_1:def_3; i in dom p by A23, A24, RELAT_1:27; then A26: p . i in rng p by FUNCT_1:def_3; then reconsider pi1 = p . i as quasi-term of F1() by A22, Th41; pi1 in the Sorts of (Free (F1(),(MSVars F1()))) . (a_Term F1()) by Th41; then f . pi1 in the Sorts of (Free (F1(),(MSVars F1()))) . (a_Term F1()) by A15, A26; hence z in QuasiTerms F1() by A24, A25, FUNCT_1:12; ::_thesis: verum end; then reconsider q = f * p as FinSequence of QuasiTerms F1() by FINSEQ_1:def_4; rng p c= F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) proof let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in rng p or z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) ) assume z in rng p ; ::_thesis: z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) then z is Element of F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; hence z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) ; ::_thesis: verum end; then reconsider r = p as FinSequence of F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) by FINSEQ_1:def_4; A27: len q = len p by A23, FINSEQ_2:29; c -trm p is Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; then A28: r is ArgumentSeq of Sym (c,((MSVars F1()) \/ ( the carrier of F1() --> {0}))) by A17, MSATERM:1; then A29: the_result_sort_of c = s by A17, A18, MSATERM:20; Sym (c,((MSVars F1()) \/ ( the carrier of F1() --> {0}))) ==> roots r by A28, MSATERM:21; then nt ==> roots ts by Th127; then f . (c -trm p) = H3(nt, roots ts,f * ts) by A6, A17 .= IFEQ (c,non_op,F3(((f * ts) . 1)),F4(c,(f * ts))) by A19, A20, FUNCOP_1:def_8 .= F4(c,(f * ts)) by A21, FUNCOP_1:def_8 ; then f . (c -trm p) is expression of F1(), the_result_sort_of c by A2, A14, A27; hence f . (c -trm p) in the Sorts of (Free (F1(),(MSVars F1()))) . s by A29, Def28; ::_thesis: verum end; A30: for a being expression of F1(), an_Adj F1() st S1[a] holds S1[(non_op F1()) term a] proof let v be expression of F1(), an_Adj F1(); ::_thesis: ( S1[v] implies S1[(non_op F1()) term v] ) assume A31: S1[v] ; ::_thesis: S1[(non_op F1()) term v] A32: v in the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()) by Def28; then f . v in the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()) by A31; then reconsider fv = f . v as expression of F1(), an_Adj F1() by Def28; let s be SortSymbol of F1(); ::_thesis: ( (non_op F1()) term v in the Sorts of (Free (F1(),(MSVars F1()))) . s implies f . ((non_op F1()) term v) in the Sorts of (Free (F1(),(MSVars F1()))) . s ) assume A33: (non_op F1()) term v in the Sorts of (Free (F1(),(MSVars F1()))) . s ; ::_thesis: f . ((non_op F1()) term v) in the Sorts of (Free (F1(),(MSVars F1()))) . s A34: (non_op F1()) term v is expression of F1(), an_Adj F1() by Th43; (non_op F1()) term v is expression of F1(),s by A33, Def28; then A35: s = an_Adj F1() by A34, Th48; set QA = the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()); rng <*v*> = {v} by FINSEQ_1:38; then rng <*v*> c= the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()) by A32, ZFMISC_1:31; then reconsider p = <*v*> as FinSequence of the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()) by FINSEQ_1:def_4; set c = non_op F1(); set a = (non_op F1()) term v; set nt = [(non_op F1()), the carrier of F1()]; [(non_op F1()), the carrier of F1()] in NonTerminals (DTConMSA (MSVars F1())) by Th123; then reconsider nt = [(non_op F1()), the carrier of F1()] as Symbol of (DTConMSA (MSVars F1())) ; reconsider ts = p as FinSequence of TS (DTConMSA (MSVars F1())) by Th128; A36: (non_op F1()) term v = nt -tree ts by Th43; A37: nt `1 = non_op F1() by MCART_1:7; dom f = Union the Sorts of (Free (F1(),(MSVars F1()))) by FUNCT_2:def_1; then A38: f * p = <*fv*> by FINSEQ_2:34; rng p c= F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) proof let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in rng p or z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) ) assume z in rng p ; ::_thesis: z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) then z is expression of F1(), an_Adj F1() by Th41; then z is Element of F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; hence z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) ; ::_thesis: verum end; then reconsider r = p as FinSequence of F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) by FINSEQ_1:def_4; (non_op F1()) term v is Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; then r is ArgumentSeq of Sym ((non_op F1()),((MSVars F1()) \/ ( the carrier of F1() --> {0}))) by A36, MSATERM:1; then Sym ((non_op F1()),((MSVars F1()) \/ ( the carrier of F1() --> {0}))) ==> roots r by MSATERM:21; then nt ==> roots ts by Th127; then f . ((non_op F1()) term v) = H3(nt, roots ts,f * ts) by A6, A36 .= IFEQ ((non_op F1()),non_op,F3(((f * ts) . 1)),F4((non_op F1()),(f * ts))) by A37, FUNCOP_1:def_8 .= F3(((f * ts) . 1)) by FUNCOP_1:def_8 .= F3(fv) by A38, FINSEQ_1:40 ; then f . ((non_op F1()) term v) is expression of F1(), an_Adj F1() by A3; hence f . ((non_op F1()) term v) in the Sorts of (Free (F1(),(MSVars F1()))) . s by A35, Def28; ::_thesis: verum end; A39: for a being expression of F1(), an_Adj F1() st S1[a] holds for t being expression of F1(), a_Type F1() st S1[t] holds S1[(ast F1()) term (a,t)] proof let v be expression of F1(), an_Adj F1(); ::_thesis: ( S1[v] implies for t being expression of F1(), a_Type F1() st S1[t] holds S1[(ast F1()) term (v,t)] ) assume A40: S1[v] ; ::_thesis: for t being expression of F1(), a_Type F1() st S1[t] holds S1[(ast F1()) term (v,t)] let t be expression of F1(), a_Type F1(); ::_thesis: ( S1[t] implies S1[(ast F1()) term (v,t)] ) assume A41: S1[t] ; ::_thesis: S1[(ast F1()) term (v,t)] A42: v in the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()) by Def28; A43: t in the Sorts of (Free (F1(),(MSVars F1()))) . (a_Type F1()) by Def28; A44: f . v in the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()) by A40, A42; A45: f . t in the Sorts of (Free (F1(),(MSVars F1()))) . (a_Type F1()) by A41, A43; reconsider fv = f . v as expression of F1(), an_Adj F1() by A44, Def28; reconsider ft = f . t as expression of F1(), a_Type F1() by A45, Def28; let s be SortSymbol of F1(); ::_thesis: ( (ast F1()) term (v,t) in the Sorts of (Free (F1(),(MSVars F1()))) . s implies f . ((ast F1()) term (v,t)) in the Sorts of (Free (F1(),(MSVars F1()))) . s ) assume A46: (ast F1()) term (v,t) in the Sorts of (Free (F1(),(MSVars F1()))) . s ; ::_thesis: f . ((ast F1()) term (v,t)) in the Sorts of (Free (F1(),(MSVars F1()))) . s A47: (ast F1()) term (v,t) is expression of F1(), a_Type F1() by Th46; (ast F1()) term (v,t) is expression of F1(),s by A46, Def28; then A48: s = a_Type F1() by A47, Th48; reconsider p = <*v,t*> as FinSequence of Union the Sorts of (Free (F1(),(MSVars F1()))) ; set c = ast F1(); set a = (ast F1()) term (v,t); set nt = [(ast F1()), the carrier of F1()]; [(ast F1()), the carrier of F1()] in NonTerminals (DTConMSA (MSVars F1())) by Th123; then reconsider nt = [(ast F1()), the carrier of F1()] as Symbol of (DTConMSA (MSVars F1())) ; reconsider ts = p as FinSequence of TS (DTConMSA (MSVars F1())) by Th128; A49: (ast F1()) term (v,t) = nt -tree ts by Th46; A50: nt `1 = ast F1() by MCART_1:7; A51: f * p = <*fv,ft*> by FINSEQ_2:36; rng p c= F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) proof let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in rng p or z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) ) assume z in rng p ; ::_thesis: z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) then z is Element of F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; hence z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) ; ::_thesis: verum end; then reconsider r = p as FinSequence of F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) by FINSEQ_1:def_4; (ast F1()) term (v,t) is Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; then r is ArgumentSeq of Sym ((ast F1()),((MSVars F1()) \/ ( the carrier of F1() --> {0}))) by A49, MSATERM:1; then Sym ((ast F1()),((MSVars F1()) \/ ( the carrier of F1() --> {0}))) ==> roots r by MSATERM:21; then nt ==> roots ts by Th127; then f . ((ast F1()) term (v,t)) = H3(nt, roots ts,f * ts) by A6, A49 .= F5(((f * ts) . 1),((f * ts) . 2)) by A50, FUNCOP_1:def_8 .= F5(fv,((f * ts) . 2)) by A51, FINSEQ_1:44 .= F5(fv,ft) by A51, FINSEQ_1:44 ; then f . ((ast F1()) term (v,t)) is expression of F1(), a_Type F1() by A4; hence f . ((ast F1()) term (v,t)) in the Sorts of (Free (F1(),(MSVars F1()))) . s by A48, Def28; ::_thesis: verum end; S1[a] from ABCMIZ_1:sch_2(A9, A13, A30, A39); hence x in the Sorts of (Free (F1(),(MSVars F1()))) . s by A7, A8; ::_thesis: verum end; then reconsider f = f as term-transformation of F1(), MSVars F1() ; take f ; ::_thesis: ( ( for x being variable holds f . (x -term F1()) = F2(x) ) & ( for c being constructor OperSymbol of F1() for p, q being FinSequence of QuasiTerms F1() st len p = len (the_arity_of c) & q = f * p holds f . (c -trm p) = F4(c,q) ) & ( for a being expression of F1(), an_Adj F1() holds f . ((non_op F1()) term a) = F3((f . a)) ) & ( for a being expression of F1(), an_Adj F1() for t being expression of F1(), a_Type F1() holds f . ((ast F1()) term (a,t)) = F5((f . a),(f . t)) ) ) hereby ::_thesis: ( ( for c being constructor OperSymbol of F1() for p, q being FinSequence of QuasiTerms F1() st len p = len (the_arity_of c) & q = f * p holds f . (c -trm p) = F4(c,q) ) & ( for a being expression of F1(), an_Adj F1() holds f . ((non_op F1()) term a) = F3((f . a)) ) & ( for a being expression of F1(), an_Adj F1() for t being expression of F1(), a_Type F1() holds f . ((ast F1()) term (a,t)) = F5((f . a),(f . t)) ) ) let x be variable; ::_thesis: f . (x -term F1()) = F2(x) x in Vars ; then A52: x in (MSVars F1()) . (a_Term F1()) by Def25; reconsider x9 = x as Element of (MSVars F1()) . (a_Term F1()) by Def25; reconsider xx = [x9,(a_Term F1())] as Symbol of (DTConMSA (MSVars F1())) by A52, MSAFREE3:2; xx in Terminals (DTConMSA (MSVars F1())) by A52, MSAFREE:7; hence f . (x -term F1()) = F2((xx `1)) by A5 .= F2(x) by MCART_1:7 ; ::_thesis: verum end; hereby ::_thesis: ( ( for a being expression of F1(), an_Adj F1() holds f . ((non_op F1()) term a) = F3((f . a)) ) & ( for a being expression of F1(), an_Adj F1() for t being expression of F1(), a_Type F1() holds f . ((ast F1()) term (a,t)) = F5((f . a),(f . t)) ) ) let c be constructor OperSymbol of F1(); ::_thesis: for p, q being FinSequence of QuasiTerms F1() st len p = len (the_arity_of c) & q = f * p holds f . (c -trm p) = F4(c,q) let p, q be FinSequence of QuasiTerms F1(); ::_thesis: ( len p = len (the_arity_of c) & q = f * p implies f . (c -trm p) = F4(c,q) ) assume that A53: len p = len (the_arity_of c) and A54: q = f * p ; ::_thesis: f . (c -trm p) = F4(c,q) set a = c -trm p; set nt = [c, the carrier of F1()]; [c, the carrier of F1()] in NonTerminals (DTConMSA (MSVars F1())) by Th123; then reconsider nt = [c, the carrier of F1()] as Symbol of (DTConMSA (MSVars F1())) ; reconsider ts = p as FinSequence of TS (DTConMSA (MSVars F1())) by Th128; A55: c -trm p = nt -tree ts by A53, Def35; A56: nt `1 = c by MCART_1:7; A57: c <> * by Def11; A58: c <> non_op by Def11; rng p c= F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) proof let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in rng p or z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) ) assume z in rng p ; ::_thesis: z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) then z is Element of F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; hence z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) ; ::_thesis: verum end; then reconsider r = p as FinSequence of F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) by FINSEQ_1:def_4; c -trm p is Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; then r is ArgumentSeq of Sym (c,((MSVars F1()) \/ ( the carrier of F1() --> {0}))) by A55, MSATERM:1; then Sym (c,((MSVars F1()) \/ ( the carrier of F1() --> {0}))) ==> roots r by MSATERM:21; then nt ==> roots ts by Th127; then f . (c -trm p) = H3(nt, roots ts,f * ts) by A6, A55 .= IFEQ (c,non_op,F3(((f * ts) . 1)),F4(c,(f * ts))) by A56, A57, FUNCOP_1:def_8 .= F4(c,(f * ts)) by A58, FUNCOP_1:def_8 ; hence f . (c -trm p) = F4(c,q) by A54; ::_thesis: verum end; hereby ::_thesis: for a being expression of F1(), an_Adj F1() for t being expression of F1(), a_Type F1() holds f . ((ast F1()) term (a,t)) = F5((f . a),(f . t)) let v be expression of F1(), an_Adj F1(); ::_thesis: f . ((non_op F1()) term v) = F3((f . v)) A59: v in the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()) by Def28; then f . v in the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()) by Th129; then reconsider fv = f . v as expression of F1(), an_Adj F1() by Def28; set QA = the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()); rng <*v*> = {v} by FINSEQ_1:38; then rng <*v*> c= the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()) by A59, ZFMISC_1:31; then reconsider p = <*v*> as FinSequence of the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()) by FINSEQ_1:def_4; set c = non_op F1(); set a = (non_op F1()) term v; set nt = [(non_op F1()), the carrier of F1()]; [(non_op F1()), the carrier of F1()] in NonTerminals (DTConMSA (MSVars F1())) by Th123; then reconsider nt = [(non_op F1()), the carrier of F1()] as Symbol of (DTConMSA (MSVars F1())) ; reconsider ts = p as FinSequence of TS (DTConMSA (MSVars F1())) by Th128; A60: (non_op F1()) term v = nt -tree ts by Th43; A61: nt `1 = non_op F1() by MCART_1:7; dom f = Union the Sorts of (Free (F1(),(MSVars F1()))) by FUNCT_2:def_1; then A62: f * p = <*fv*> by FINSEQ_2:34; rng p c= F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) proof let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in rng p or z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) ) assume z in rng p ; ::_thesis: z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) then z is expression of F1(), an_Adj F1() by Th41; then z is Element of F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; hence z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) ; ::_thesis: verum end; then reconsider r = p as FinSequence of F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) by FINSEQ_1:def_4; (non_op F1()) term v is Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; then r is ArgumentSeq of Sym ((non_op F1()),((MSVars F1()) \/ ( the carrier of F1() --> {0}))) by A60, MSATERM:1; then Sym ((non_op F1()),((MSVars F1()) \/ ( the carrier of F1() --> {0}))) ==> roots r by MSATERM:21; then nt ==> roots ts by Th127; then f . ((non_op F1()) term v) = H3(nt, roots ts,f * ts) by A6, A60 .= IFEQ ((non_op F1()),non_op,F3(((f * ts) . 1)),F4((non_op F1()),(f * ts))) by A61, FUNCOP_1:def_8 .= F3(((f * ts) . 1)) by FUNCOP_1:def_8 ; hence f . ((non_op F1()) term v) = F3((f . v)) by A62, FINSEQ_1:40; ::_thesis: verum end; let v be expression of F1(), an_Adj F1(); ::_thesis: for t being expression of F1(), a_Type F1() holds f . ((ast F1()) term (v,t)) = F5((f . v),(f . t)) let t be expression of F1(), a_Type F1(); ::_thesis: f . ((ast F1()) term (v,t)) = F5((f . v),(f . t)) A63: v in the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()) by Def28; A64: t in the Sorts of (Free (F1(),(MSVars F1()))) . (a_Type F1()) by Def28; A65: f . v in the Sorts of (Free (F1(),(MSVars F1()))) . (an_Adj F1()) by A63, Th129; A66: f . t in the Sorts of (Free (F1(),(MSVars F1()))) . (a_Type F1()) by A64, Th129; reconsider fv = f . v as expression of F1(), an_Adj F1() by A65, Def28; reconsider ft = f . t as expression of F1(), a_Type F1() by A66, Def28; reconsider p = <*v,t*> as FinSequence of Union the Sorts of (Free (F1(),(MSVars F1()))) ; set c = ast F1(); set a = (ast F1()) term (v,t); set nt = [(ast F1()), the carrier of F1()]; [(ast F1()), the carrier of F1()] in NonTerminals (DTConMSA (MSVars F1())) by Th123; then reconsider nt = [(ast F1()), the carrier of F1()] as Symbol of (DTConMSA (MSVars F1())) ; reconsider ts = p as FinSequence of TS (DTConMSA (MSVars F1())) by Th128; A67: (ast F1()) term (v,t) = nt -tree ts by Th46; A68: nt `1 = ast F1() by MCART_1:7; A69: f * p = <*fv,ft*> by FINSEQ_2:36; rng p c= F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) proof let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in rng p or z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) ) assume z in rng p ; ::_thesis: z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) then z is Element of F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; hence z in F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) ; ::_thesis: verum end; then reconsider r = p as FinSequence of F1() -Terms ((MSVars F1()) \/ ( the carrier of F1() --> {0})) by FINSEQ_1:def_4; (ast F1()) term (v,t) is Term of F1(),((MSVars F1()) \/ ( the carrier of F1() --> {0})) by MSAFREE3:8; then r is ArgumentSeq of Sym ((ast F1()),((MSVars F1()) \/ ( the carrier of F1() --> {0}))) by A67, MSATERM:1; then Sym ((ast F1()),((MSVars F1()) \/ ( the carrier of F1() --> {0}))) ==> roots r by MSATERM:21; then nt ==> roots ts by Th127; then f . ((ast F1()) term (v,t)) = H3(nt, roots ts,f * ts) by A6, A67 .= F5(((f * ts) . 1),((f * ts) . 2)) by A68, FUNCOP_1:def_8 .= F5(fv,((f * ts) . 2)) by A69, FINSEQ_1:44 ; hence f . ((ast F1()) term (v,t)) = F5((f . v),(f . t)) by A69, FINSEQ_1:44; ::_thesis: verum end; begin definition let A be set ; let x, y be set ; let a, b be Element of A; :: original: IFIN redefine func IFIN (x,y,a,b) -> Element of A; coherence IFIN (x,y,a,b) is Element of A by MATRIX_7:def_1; end; definition let C be initialized ConstructorSignature; mode valuation of C is PartFunc of Vars,(QuasiTerms C); end; definition let C be initialized ConstructorSignature; let f be valuation of C; attrf is irrelevant means :Def58: :: ABCMIZ_1:def 58 for x being variable st x in dom f holds ex y being variable st f . x = y -term C; end; :: deftheorem Def58 defines irrelevant ABCMIZ_1:def_58_:_ for C being initialized ConstructorSignature for f being valuation of C holds ( f is irrelevant iff for x being variable st x in dom f holds ex y being variable st f . x = y -term C ); notation let C be initialized ConstructorSignature; let f be valuation of C; antonym relevant f for irrelevant ; end; registration let C be initialized ConstructorSignature; cluster empty Function-like -> irrelevant for Element of bool [:Vars,(QuasiTerms C):]; coherence for b1 being valuation of C st b1 is empty holds b1 is irrelevant proof let f be valuation of C; ::_thesis: ( f is empty implies f is irrelevant ) assume f is empty ; ::_thesis: f is irrelevant then reconsider f = f as empty valuation of C ; let x be variable; :: according to ABCMIZ_1:def_58 ::_thesis: ( x in dom f implies ex y being variable st f . x = y -term C ) dom f = {} ; hence ( x in dom f implies ex y being variable st f . x = y -term C ) ; ::_thesis: verum end; end; registration let C be initialized ConstructorSignature; cluster empty Relation-like Vars -defined QuasiTerms C -valued Function-like Function-yielding V115() for Element of bool [:Vars,(QuasiTerms C):]; existence ex b1 being valuation of C st b1 is empty proof take {} (Vars,(QuasiTerms C)) ; ::_thesis: {} (Vars,(QuasiTerms C)) is empty thus {} (Vars,(QuasiTerms C)) is empty ; ::_thesis: verum end; end; definition let C be initialized ConstructorSignature; let X be Subset of Vars; funcC idval X -> valuation of C equals :: ABCMIZ_1:def 59 { [x,(x -term C)] where x is variable : x in X } ; coherence { [x,(x -term C)] where x is variable : x in X } is valuation of C proof set f = { [x,(x -term C)] where x is variable : x in X } ; defpred S1[ variable, set ] means $2 = $1 -term C; A1: now__::_thesis:_for_x_being_variable_ex_t_being_Element_of_QuasiTerms_C_st_S1[x,t] let x be variable; ::_thesis: ex t being Element of QuasiTerms C st S1[x,t] reconsider t = x -term C as Element of QuasiTerms C by Def28; take t = t; ::_thesis: S1[x,t] thus S1[x,t] ; ::_thesis: verum end; consider g being Function of Vars,(QuasiTerms C) such that A2: for x being variable holds S1[x,g . x] from FUNCT_2:sch_3(A1); { [x,(x -term C)] where x is variable : x in X } c= g proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in { [x,(x -term C)] where x is variable : x in X } or a in g ) assume a in { [x,(x -term C)] where x is variable : x in X } ; ::_thesis: a in g then consider x being variable such that A3: a = [x,(x -term C)] and x in X ; A4: g . x = x -term C by A2; dom g = Vars by FUNCT_2:def_1; hence a in g by A3, A4, FUNCT_1:1; ::_thesis: verum end; hence { [x,(x -term C)] where x is variable : x in X } is valuation of C by RELSET_1:1; ::_thesis: verum end; end; :: deftheorem defines idval ABCMIZ_1:def_59_:_ for C being initialized ConstructorSignature for X being Subset of Vars holds C idval X = { [x,(x -term C)] where x is variable : x in X } ; theorem Th131: :: ABCMIZ_1:131 for C being initialized ConstructorSignature for X being Subset of Vars holds ( dom (C idval X) = X & ( for x being variable st x in X holds (C idval X) . x = x -term C ) ) proof let C be initialized ConstructorSignature; ::_thesis: for X being Subset of Vars holds ( dom (C idval X) = X & ( for x being variable st x in X holds (C idval X) . x = x -term C ) ) let X be Subset of Vars; ::_thesis: ( dom (C idval X) = X & ( for x being variable st x in X holds (C idval X) . x = x -term C ) ) set f = C idval X; thus dom (C idval X) c= X :: according to XBOOLE_0:def_10 ::_thesis: ( X c= dom (C idval X) & ( for x being variable st x in X holds (C idval X) . x = x -term C ) ) proof let a be set ; :: according to TARSKI:def_3 ::_thesis: ( not a in dom (C idval X) or a in X ) assume a in dom (C idval X) ; ::_thesis: a in X then [a,((C idval X) . a)] in C idval X by FUNCT_1:def_2; then ex x being variable st ( [a,((C idval X) . a)] = [x,(x -term C)] & x in X ) ; hence a in X by XTUPLE_0:1; ::_thesis: verum end; hereby :: according to TARSKI:def_3 ::_thesis: for x being variable st x in X holds (C idval X) . x = x -term C let x be set ; ::_thesis: ( x in X implies x in dom (C idval X) ) assume A1: x in X ; ::_thesis: x in dom (C idval X) then reconsider a = x as variable ; [a,(a -term C)] in C idval X by A1; hence x in dom (C idval X) by FUNCT_1:1; ::_thesis: verum end; let x be variable; ::_thesis: ( x in X implies (C idval X) . x = x -term C ) assume x in X ; ::_thesis: (C idval X) . x = x -term C then [x,(x -term C)] in C idval X ; hence (C idval X) . x = x -term C by FUNCT_1:1; ::_thesis: verum end; registration let C be initialized ConstructorSignature; let X be Subset of Vars; clusterC idval X -> one-to-one irrelevant ; coherence ( C idval X is irrelevant & C idval X is one-to-one ) proof set f = C idval X; A1: dom (C idval X) = X by Th131; hereby :: according to ABCMIZ_1:def_58 ::_thesis: C idval X is one-to-one let x be variable; ::_thesis: ( x in dom (C idval X) implies ex y being variable st (C idval X) . x = y -term C ) assume A2: x in dom (C idval X) ; ::_thesis: ex y being variable st (C idval X) . x = y -term C take y = x; ::_thesis: (C idval X) . x = y -term C thus (C idval X) . x = y -term C by A1, A2, Th131; ::_thesis: verum end; let x, y be set ; :: according to FUNCT_1:def_4 ::_thesis: ( not x in proj1 (C idval X) or not y in proj1 (C idval X) or not (C idval X) . x = (C idval X) . y or x = y ) assume that A3: x in dom (C idval X) and A4: y in dom (C idval X) ; ::_thesis: ( not (C idval X) . x = (C idval X) . y or x = y ) reconsider x = x, y = y as variable by A3, A4; A5: (C idval X) . x = x -term C by A1, A3, Th131; (C idval X) . y = y -term C by A1, A4, Th131; hence ( not (C idval X) . x = (C idval X) . y or x = y ) by A5, Th50; ::_thesis: verum end; end; registration let C be initialized ConstructorSignature; let X be empty Subset of Vars; clusterC idval X -> empty ; coherence C idval X is empty proof dom (C idval X) = X by Th131; hence C idval X is empty ; ::_thesis: verum end; end; definition let C be initialized ConstructorSignature; let f be valuation of C; funcf # -> term-transformation of C, MSVars C means :Def60: :: ABCMIZ_1:def 60 ( ( for x being variable holds ( ( x in dom f implies it . (x -term C) = f . x ) & ( not x in dom f implies it . (x -term C) = x -term C ) ) ) & ( for c being constructor OperSymbol of C for p, q being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & q = it * p holds it . (c -trm p) = c -trm q ) & ( for a being expression of C, an_Adj C holds it . ((non_op C) term a) = (non_op C) term (it . a) ) & ( for a being expression of C, an_Adj C for t being expression of C, a_Type C holds it . ((ast C) term (a,t)) = (ast C) term ((it . a),(it . t)) ) ); existence ex b1 being term-transformation of C, MSVars C st ( ( for x being variable holds ( ( x in dom f implies b1 . (x -term C) = f . x ) & ( not x in dom f implies b1 . (x -term C) = x -term C ) ) ) & ( for c being constructor OperSymbol of C for p, q being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & q = b1 * p holds b1 . (c -trm p) = c -trm q ) & ( for a being expression of C, an_Adj C holds b1 . ((non_op C) term a) = (non_op C) term (b1 . a) ) & ( for a being expression of C, an_Adj C for t being expression of C, a_Type C holds b1 . ((ast C) term (a,t)) = (ast C) term ((b1 . a),(b1 . t)) ) ) proof deffunc H2( variable) -> Element of Union the Sorts of (Free (C,(MSVars C))) = IFIN ($1,(dom f),(f /. $1),($1 -term C)); deffunc H3( constructor OperSymbol of C, FinSequence of QuasiTerms C) -> compound expression of C = $1 -trm $2; deffunc H4( expression of C) -> expression of C = (non_op C) term $1; deffunc H5( expression of C, expression of C) -> expression of C = (ast C) term ($1,$2); A1: for x being variable holds H2(x) is quasi-term of C proof let x be variable; ::_thesis: H2(x) is quasi-term of C f /. x is quasi-term of C by Th41; hence H2(x) is quasi-term of C by MATRIX_7:def_1; ::_thesis: verum end; A2: for c being constructor OperSymbol of C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) holds H3(c,p) is expression of C, the_result_sort_of c by Th52; A3: for a being expression of C, an_Adj C holds H4(a) is expression of C, an_Adj C by Th43; A4: for a being expression of C, an_Adj C for t being expression of C, a_Type C holds H5(a,t) is expression of C, a_Type C by Th46; consider f9 being term-transformation of C, MSVars C such that A5: ( ( for x being variable holds f9 . (x -term C) = H2(x) ) & ( for c being constructor OperSymbol of C for p, q being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & q = f9 * p holds f9 . (c -trm p) = H3(c,q) ) & ( for a being expression of C, an_Adj C holds f9 . ((non_op C) term a) = H4(f9 . a) ) & ( for a being expression of C, an_Adj C for t being expression of C, a_Type C holds f9 . ((ast C) term (a,t)) = H5(f9 . a,f9 . t) ) ) from ABCMIZ_1:sch_3(A1, A2, A3, A4); take f9 ; ::_thesis: ( ( for x being variable holds ( ( x in dom f implies f9 . (x -term C) = f . x ) & ( not x in dom f implies f9 . (x -term C) = x -term C ) ) ) & ( for c being constructor OperSymbol of C for p, q being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & q = f9 * p holds f9 . (c -trm p) = c -trm q ) & ( for a being expression of C, an_Adj C holds f9 . ((non_op C) term a) = (non_op C) term (f9 . a) ) & ( for a being expression of C, an_Adj C for t being expression of C, a_Type C holds f9 . ((ast C) term (a,t)) = (ast C) term ((f9 . a),(f9 . t)) ) ) hereby ::_thesis: ( ( for c being constructor OperSymbol of C for p, q being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & q = f9 * p holds f9 . (c -trm p) = c -trm q ) & ( for a being expression of C, an_Adj C holds f9 . ((non_op C) term a) = (non_op C) term (f9 . a) ) & ( for a being expression of C, an_Adj C for t being expression of C, a_Type C holds f9 . ((ast C) term (a,t)) = (ast C) term ((f9 . a),(f9 . t)) ) ) let x be variable; ::_thesis: ( ( x in dom f implies f9 . (x -term C) = f . x ) & ( not x in dom f implies f9 . (x -term C) = x -term C ) ) A6: f9 . (x -term C) = H2(x) by A5; ( x in dom f implies f /. x = f . x ) by PARTFUN1:def_6; hence ( x in dom f implies f9 . (x -term C) = f . x ) by A6, MATRIX_7:def_1; ::_thesis: ( not x in dom f implies f9 . (x -term C) = x -term C ) thus ( not x in dom f implies f9 . (x -term C) = x -term C ) by A6, MATRIX_7:def_1; ::_thesis: verum end; thus ( ( for c being constructor OperSymbol of C for p, q being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & q = f9 * p holds f9 . (c -trm p) = c -trm q ) & ( for a being expression of C, an_Adj C holds f9 . ((non_op C) term a) = (non_op C) term (f9 . a) ) & ( for a being expression of C, an_Adj C for t being expression of C, a_Type C holds f9 . ((ast C) term (a,t)) = (ast C) term ((f9 . a),(f9 . t)) ) ) by A5; ::_thesis: verum end; correctness uniqueness for b1, b2 being term-transformation of C, MSVars C st ( for x being variable holds ( ( x in dom f implies b1 . (x -term C) = f . x ) & ( not x in dom f implies b1 . (x -term C) = x -term C ) ) ) & ( for c being constructor OperSymbol of C for p, q being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & q = b1 * p holds b1 . (c -trm p) = c -trm q ) & ( for a being expression of C, an_Adj C holds b1 . ((non_op C) term a) = (non_op C) term (b1 . a) ) & ( for a being expression of C, an_Adj C for t being expression of C, a_Type C holds b1 . ((ast C) term (a,t)) = (ast C) term ((b1 . a),(b1 . t)) ) & ( for x being variable holds ( ( x in dom f implies b2 . (x -term C) = f . x ) & ( not x in dom f implies b2 . (x -term C) = x -term C ) ) ) & ( for c being constructor OperSymbol of C for p, q being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & q = b2 * p holds b2 . (c -trm p) = c -trm q ) & ( for a being expression of C, an_Adj C holds b2 . ((non_op C) term a) = (non_op C) term (b2 . a) ) & ( for a being expression of C, an_Adj C for t being expression of C, a_Type C holds b2 . ((ast C) term (a,t)) = (ast C) term ((b2 . a),(b2 . t)) ) holds b1 = b2; proof let f1, f2 be term-transformation of C, MSVars C; ::_thesis: ( ( for x being variable holds ( ( x in dom f implies f1 . (x -term C) = f . x ) & ( not x in dom f implies f1 . (x -term C) = x -term C ) ) ) & ( for c being constructor OperSymbol of C for p, q being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & q = f1 * p holds f1 . (c -trm p) = c -trm q ) & ( for a being expression of C, an_Adj C holds f1 . ((non_op C) term a) = (non_op C) term (f1 . a) ) & ( for a being expression of C, an_Adj C for t being expression of C, a_Type C holds f1 . ((ast C) term (a,t)) = (ast C) term ((f1 . a),(f1 . t)) ) & ( for x being variable holds ( ( x in dom f implies f2 . (x -term C) = f . x ) & ( not x in dom f implies f2 . (x -term C) = x -term C ) ) ) & ( for c being constructor OperSymbol of C for p, q being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & q = f2 * p holds f2 . (c -trm p) = c -trm q ) & ( for a being expression of C, an_Adj C holds f2 . ((non_op C) term a) = (non_op C) term (f2 . a) ) & ( for a being expression of C, an_Adj C for t being expression of C, a_Type C holds f2 . ((ast C) term (a,t)) = (ast C) term ((f2 . a),(f2 . t)) ) implies f1 = f2 ) assume that A7: for x being variable holds ( ( x in dom f implies f1 . (x -term C) = f . x ) & ( not x in dom f implies f1 . (x -term C) = x -term C ) ) and A8: for c being constructor OperSymbol of C for p, q being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & q = f1 * p holds f1 . (c -trm p) = c -trm q and A9: for a being expression of C, an_Adj C holds f1 . ((non_op C) term a) = (non_op C) term (f1 . a) and A10: for a being expression of C, an_Adj C for t being expression of C, a_Type C holds f1 . ((ast C) term (a,t)) = (ast C) term ((f1 . a),(f1 . t)) and A11: for x being variable holds ( ( x in dom f implies f2 . (x -term C) = f . x ) & ( not x in dom f implies f2 . (x -term C) = x -term C ) ) and A12: for c being constructor OperSymbol of C for p, q being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & q = f2 * p holds f2 . (c -trm p) = c -trm q and A13: for a being expression of C, an_Adj C holds f2 . ((non_op C) term a) = (non_op C) term (f2 . a) and A14: for a being expression of C, an_Adj C for t being expression of C, a_Type C holds f2 . ((ast C) term (a,t)) = (ast C) term ((f2 . a),(f2 . t)) ; ::_thesis: f1 = f2 set D = Union the Sorts of (Free (C,(MSVars C))); A15: dom f1 = Union the Sorts of (Free (C,(MSVars C))) by FUNCT_2:def_1; A16: dom f2 = Union the Sorts of (Free (C,(MSVars C))) by FUNCT_2:def_1; defpred S1[ expression of C] means f1 . $1 = f2 . $1; A17: for x being variable holds S1[x -term C] proof let x be variable; ::_thesis: S1[x -term C] ( ( x in dom f & f1 . (x -term C) = f . x ) or ( x nin dom f & f1 . (x -term C) = x -term C ) ) by A7; hence S1[x -term C] by A11; ::_thesis: verum end; A18: for c being constructor OperSymbol of C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & ( for t being quasi-term of C st t in rng p holds S1[t] ) holds S1[c -trm p] proof let c be constructor OperSymbol of C; ::_thesis: for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & ( for t being quasi-term of C st t in rng p holds S1[t] ) holds S1[c -trm p] let p be FinSequence of QuasiTerms C; ::_thesis: ( len p = len (the_arity_of c) & ( for t being quasi-term of C st t in rng p holds S1[t] ) implies S1[c -trm p] ) assume that A19: len p = len (the_arity_of c) and A20: for t being quasi-term of C st t in rng p holds S1[t] ; ::_thesis: S1[c -trm p] A21: rng p c= QuasiTerms C by FINSEQ_1:def_4; A22: rng (f1 * p) = f1 .: (rng p) by RELAT_1:127; A23: rng (f2 * p) = f2 .: (rng p) by RELAT_1:127; A24: rng (f1 * p) c= f1 .: (QuasiTerms C) by A21, A22, RELAT_1:123; A25: rng (f2 * p) c= f2 .: (QuasiTerms C) by A21, A23, RELAT_1:123; A26: f1 .: (QuasiTerms C) c= QuasiTerms C by Def56; A27: f2 .: (QuasiTerms C) c= QuasiTerms C by Def56; A28: rng (f1 * p) c= QuasiTerms C by A24, A26, XBOOLE_1:1; rng (f2 * p) c= QuasiTerms C by A25, A27, XBOOLE_1:1; then reconsider q1 = f1 * p, q2 = f2 * p as FinSequence of QuasiTerms C by A28, FINSEQ_1:def_4; A29: rng p c= Union the Sorts of (Free (C,(MSVars C))) ; then A30: dom q1 = dom p by A15, RELAT_1:27; A31: dom q2 = dom p by A16, A29, RELAT_1:27; now__::_thesis:_for_i_being_Nat_st_i_in_dom_p_holds_ q1_._i_=_q2_._i let i be Nat; ::_thesis: ( i in dom p implies q1 . i = q2 . i ) assume A32: i in dom p ; ::_thesis: q1 . i = q2 . i then A33: q1 . i = f1 . (p . i) by FUNCT_1:13; A34: q2 . i = f2 . (p . i) by A32, FUNCT_1:13; A35: p . i in rng p by A32, FUNCT_1:def_3; then p . i is quasi-term of C by A21, Th41; hence q1 . i = q2 . i by A20, A33, A34, A35; ::_thesis: verum end; then f1 . (c -trm p) = c -trm q2 by A8, A19, A30, A31, FINSEQ_1:13; hence S1[c -trm p] by A12, A19; ::_thesis: verum end; A36: for a being expression of C, an_Adj C st S1[a] holds S1[(non_op C) term a] proof let a be expression of C, an_Adj C; ::_thesis: ( S1[a] implies S1[(non_op C) term a] ) assume S1[a] ; ::_thesis: S1[(non_op C) term a] then f1 . ((non_op C) term a) = (non_op C) term (f2 . a) by A9; hence S1[(non_op C) term a] by A13; ::_thesis: verum end; A37: for a being expression of C, an_Adj C st S1[a] holds for t being expression of C, a_Type C st S1[t] holds S1[(ast C) term (a,t)] proof let a be expression of C, an_Adj C; ::_thesis: ( S1[a] implies for t being expression of C, a_Type C st S1[t] holds S1[(ast C) term (a,t)] ) assume A38: S1[a] ; ::_thesis: for t being expression of C, a_Type C st S1[t] holds S1[(ast C) term (a,t)] let t be expression of C, a_Type C; ::_thesis: ( S1[t] implies S1[(ast C) term (a,t)] ) assume S1[t] ; ::_thesis: S1[(ast C) term (a,t)] then f1 . ((ast C) term (a,t)) = (ast C) term ((f2 . a),(f2 . t)) by A10, A38; hence S1[(ast C) term (a,t)] by A14; ::_thesis: verum end; now__::_thesis:_for_t_being_expression_of_C_holds_S1[t] let t be expression of C; ::_thesis: S1[t] thus S1[t] from ABCMIZ_1:sch_2(A17, A18, A36, A37); ::_thesis: verum end; hence f1 = f2 by FUNCT_2:63; ::_thesis: verum end; end; :: deftheorem Def60 defines # ABCMIZ_1:def_60_:_ for C being initialized ConstructorSignature for f being valuation of C for b3 being term-transformation of C, MSVars C holds ( b3 = f # iff ( ( for x being variable holds ( ( x in dom f implies b3 . (x -term C) = f . x ) & ( not x in dom f implies b3 . (x -term C) = x -term C ) ) ) & ( for c being constructor OperSymbol of C for p, q being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & q = b3 * p holds b3 . (c -trm p) = c -trm q ) & ( for a being expression of C, an_Adj C holds b3 . ((non_op C) term a) = (non_op C) term (b3 . a) ) & ( for a being expression of C, an_Adj C for t being expression of C, a_Type C holds b3 . ((ast C) term (a,t)) = (ast C) term ((b3 . a),(b3 . t)) ) ) ); registration let C be initialized ConstructorSignature; let f be valuation of C; clusterf # -> substitution ; coherence f # is substitution proof let o be OperSymbol of C; :: according to ABCMIZ_1:def_57 ::_thesis: for p, q being FinSequence of (Free (C,(MSVars C))) st [o, the carrier of C] -tree p in Union the Sorts of (Free (C,(MSVars C))) & q = (f #) * p holds (f #) . ([o, the carrier of C] -tree p) = [o, the carrier of C] -tree q let p, q be FinSequence of (Free (C,(MSVars C))); ::_thesis: ( [o, the carrier of C] -tree p in Union the Sorts of (Free (C,(MSVars C))) & q = (f #) * p implies (f #) . ([o, the carrier of C] -tree p) = [o, the carrier of C] -tree q ) assume that A1: [o, the carrier of C] -tree p in Union the Sorts of (Free (C,(MSVars C))) and A2: q = (f #) * p ; ::_thesis: (f #) . ([o, the carrier of C] -tree p) = [o, the carrier of C] -tree q A3: dom (f #) = Union the Sorts of (Free (C,(MSVars C))) by FUNCT_2:def_1; reconsider t = [o, the carrier of C] -tree p as expression of C by A1; A4: t . {} = [o, the carrier of C] by TREES_4:def_4; percases ( o is constructor or o = * or o = non_op ) by Def11; suppose o is constructor ; ::_thesis: (f #) . ([o, the carrier of C] -tree p) = [o, the carrier of C] -tree q then reconsider c = o as constructor OperSymbol of C ; A5: t = [c, the carrier of C] -tree p ; then A6: len p = len (the_arity_of c) by Th51; p in (QuasiTerms C) * by A5, Th51; then reconsider p9 = p as FinSequence of QuasiTerms C by FINSEQ_1:def_11; reconsider q9 = (f #) * p9 as FinSequence of QuasiTerms C by Th130; A7: len q9 = len p by Th130; thus (f #) . ([o, the carrier of C] -tree p) = (f #) . (c -trm p9) by A6, Def35 .= c -trm q9 by A6, Def60 .= [o, the carrier of C] -tree q by A2, A6, A7, Def35 ; ::_thesis: verum end; supposeA8: o = * ; ::_thesis: (f #) . ([o, the carrier of C] -tree p) = [o, the carrier of C] -tree q then consider a being expression of C, an_Adj C, s being expression of C, a_Type C such that A9: t = (ast C) term (a,s) by A4, Th58; a in the Sorts of (Free (C,(MSVars C))) . (an_Adj C) by Def28; then (f #) . a in the Sorts of (Free (C,(MSVars C))) . (an_Adj C) by Th129; then reconsider fa = (f #) . a as expression of C, an_Adj C by Th41; s in the Sorts of (Free (C,(MSVars C))) . (a_Type C) by Def28; then (f #) . s in the Sorts of (Free (C,(MSVars C))) . (a_Type C) by Th129; then reconsider fs = (f #) . s as expression of C, a_Type C by Th41; t = [(ast C), the carrier of C] -tree <*a,s*> by A9, Th46; then p = <*a,s*> by TREES_4:15; then q = <*fa,fs*> by A2, A3, FINSEQ_2:125; then [o, the carrier of C] -tree q = (ast C) term (fa,fs) by A8, Th46; hence (f #) . ([o, the carrier of C] -tree p) = [o, the carrier of C] -tree q by A9, Def60; ::_thesis: verum end; supposeA10: o = non_op ; ::_thesis: (f #) . ([o, the carrier of C] -tree p) = [o, the carrier of C] -tree q then consider a being expression of C, an_Adj C such that A11: t = (non_op C) term a by A4, Th57; a in the Sorts of (Free (C,(MSVars C))) . (an_Adj C) by Def28; then (f #) . a in the Sorts of (Free (C,(MSVars C))) . (an_Adj C) by Th129; then reconsider fa = (f #) . a as expression of C, an_Adj C by Th41; t = [(non_op C), the carrier of C] -tree <*a*> by A11, Th43; then p = <*a*> by TREES_4:15; then q = <*fa*> by A2, A3, FINSEQ_2:34; then [o, the carrier of C] -tree q = (non_op C) term fa by A10, Th43; hence (f #) . ([o, the carrier of C] -tree p) = [o, the carrier of C] -tree q by A11, Def60; ::_thesis: verum end; end; end; end; definition let C be initialized ConstructorSignature; let f be valuation of C; let e be expression of C; funce at f -> expression of C equals :: ABCMIZ_1:def 61 (f #) . e; coherence (f #) . e is expression of C ; end; :: deftheorem defines at ABCMIZ_1:def_61_:_ for C being initialized ConstructorSignature for f being valuation of C for e being expression of C holds e at f = (f #) . e; definition let C be initialized ConstructorSignature; let f be valuation of C; let p be FinSequence; assume B1: rng p c= Union the Sorts of (Free (C,(MSVars C))) ; funcp at f -> FinSequence equals :Def62: :: ABCMIZ_1:def 62 (f #) * p; coherence (f #) * p is FinSequence proof set A = Free (C,(MSVars C)); dom (f #) = Union the Sorts of (Free (C,(MSVars C))) by FUNCT_2:def_1; then A1: dom ((f #) * p) = dom p by B1, RELAT_1:27; dom p = Seg (len p) by FINSEQ_1:def_3; hence (f #) * p is FinSequence by A1, FINSEQ_1:def_2; ::_thesis: verum end; end; :: deftheorem Def62 defines at ABCMIZ_1:def_62_:_ for C being initialized ConstructorSignature for f being valuation of C for p being FinSequence st rng p c= Union the Sorts of (Free (C,(MSVars C))) holds p at f = (f #) * p; definition let C be initialized ConstructorSignature; let f be valuation of C; let p be FinSequence of QuasiTerms C; :: original: at redefine funcp at f -> FinSequence of QuasiTerms C equals :: ABCMIZ_1:def 63 (f #) * p; coherence p at f is FinSequence of QuasiTerms C proof A1: (f #) * p is FinSequence of QuasiTerms C by Th130; rng p c= Union the Sorts of (Free (C,(MSVars C))) ; hence p at f is FinSequence of QuasiTerms C by A1, Def62; ::_thesis: verum end; compatibility for b1 being FinSequence of QuasiTerms C holds ( b1 = p at f iff b1 = (f #) * p ) proof rng p c= Union the Sorts of (Free (C,(MSVars C))) ; hence for b1 being FinSequence of QuasiTerms C holds ( b1 = p at f iff b1 = (f #) * p ) by Def62; ::_thesis: verum end; end; :: deftheorem defines at ABCMIZ_1:def_63_:_ for C being initialized ConstructorSignature for f being valuation of C for p being FinSequence of QuasiTerms C holds p at f = (f #) * p; theorem :: ABCMIZ_1:132 for C being initialized ConstructorSignature for f being valuation of C for x being variable st not x in dom f holds (x -term C) at f = x -term C by Def60; theorem :: ABCMIZ_1:133 for C being initialized ConstructorSignature for f being valuation of C for x being variable st x in dom f holds (x -term C) at f = f . x by Def60; theorem :: ABCMIZ_1:134 for C being initialized ConstructorSignature for c being constructor OperSymbol of C for p being FinSequence of QuasiTerms C for f being valuation of C st len p = len (the_arity_of c) holds (c -trm p) at f = c -trm (p at f) by Def60; theorem :: ABCMIZ_1:135 for C being initialized ConstructorSignature for a being expression of C, an_Adj C for f being valuation of C holds ((non_op C) term a) at f = (non_op C) term (a at f) by Def60; theorem :: ABCMIZ_1:136 for C being initialized ConstructorSignature for t being expression of C, a_Type C for a being expression of C, an_Adj C for f being valuation of C holds ((ast C) term (a,t)) at f = (ast C) term ((a at f),(t at f)) by Def60; theorem Th137: :: ABCMIZ_1:137 for C being initialized ConstructorSignature for e being expression of C for X being Subset of Vars holds e at (C idval X) = e proof let C be initialized ConstructorSignature; ::_thesis: for e being expression of C for X being Subset of Vars holds e at (C idval X) = e let e be expression of C; ::_thesis: for X being Subset of Vars holds e at (C idval X) = e set t = e; let X be Subset of Vars; ::_thesis: e at (C idval X) = e set f = C idval X; defpred S1[ expression of C] means $1 at (C idval X) = $1; A1: for x being variable holds S1[x -term C] proof let x be variable; ::_thesis: S1[x -term C] A2: ( x in X or x nin X ) ; A3: dom (C idval X) = X by Th131; ( x in X implies (C idval X) . x = x -term C ) by Th131; hence S1[x -term C] by A2, A3, Def60; ::_thesis: verum end; A4: for c being constructor OperSymbol of C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & ( for t being quasi-term of C st t in rng p holds S1[t] ) holds S1[c -trm p] proof let c be constructor OperSymbol of C; ::_thesis: for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & ( for t being quasi-term of C st t in rng p holds S1[t] ) holds S1[c -trm p] let p be FinSequence of QuasiTerms C; ::_thesis: ( len p = len (the_arity_of c) & ( for t being quasi-term of C st t in rng p holds S1[t] ) implies S1[c -trm p] ) assume that A5: len p = len (the_arity_of c) and A6: for t being quasi-term of C st t in rng p holds S1[t] ; ::_thesis: S1[c -trm p] len (p at (C idval X)) = len p by Th130; then A7: dom (p at (C idval X)) = dom p by FINSEQ_3:29; now__::_thesis:_for_i_being_Nat_st_i_in_dom_p_holds_ (p_at_(C_idval_X))_._i_=_p_._i let i be Nat; ::_thesis: ( i in dom p implies (p at (C idval X)) . i = p . i ) assume A8: i in dom p ; ::_thesis: (p at (C idval X)) . i = p . i then A9: p . i in rng p by FUNCT_1:def_3; rng p c= QuasiTerms C by FINSEQ_1:def_4; then reconsider pi1 = p . i as quasi-term of C by A9, Th41; (p at (C idval X)) . i = pi1 at (C idval X) by A8, FUNCT_1:13; hence (p at (C idval X)) . i = p . i by A6, A9; ::_thesis: verum end; then p at (C idval X) = p by A7, FINSEQ_1:13; hence S1[c -trm p] by A5, Def60; ::_thesis: verum end; A10: for a being expression of C, an_Adj C st S1[a] holds S1[(non_op C) term a] by Def60; A11: for a being expression of C, an_Adj C st S1[a] holds for t being expression of C, a_Type C st S1[t] holds S1[(ast C) term (a,t)] by Def60; thus S1[e] from ABCMIZ_1:sch_2(A1, A4, A10, A11); ::_thesis: verum end; theorem :: ABCMIZ_1:138 for C being initialized ConstructorSignature for X being Subset of Vars holds (C idval X) # = id (Union the Sorts of (Free (C,(MSVars C)))) proof let C be initialized ConstructorSignature; ::_thesis: for X being Subset of Vars holds (C idval X) # = id (Union the Sorts of (Free (C,(MSVars C)))) let X be Subset of Vars; ::_thesis: (C idval X) # = id (Union the Sorts of (Free (C,(MSVars C)))) set f = C idval X; A1: dom ((C idval X) #) = Union the Sorts of (Free (C,(MSVars C))) by FUNCT_2:def_1; now__::_thesis:_for_x_being_set_st_x_in_Union_the_Sorts_of_(Free_(C,(MSVars_C)))_holds_ ((C_idval_X)_#)_._x_=_x let x be set ; ::_thesis: ( x in Union the Sorts of (Free (C,(MSVars C))) implies ((C idval X) #) . x = x ) assume x in Union the Sorts of (Free (C,(MSVars C))) ; ::_thesis: ((C idval X) #) . x = x then reconsider t = x as expression of C ; thus ((C idval X) #) . x = t at (C idval X) .= x by Th137 ; ::_thesis: verum end; hence (C idval X) # = id (Union the Sorts of (Free (C,(MSVars C)))) by A1, FUNCT_1:17; ::_thesis: verum end; theorem Th139: :: ABCMIZ_1:139 for C being initialized ConstructorSignature for e being expression of C for f being empty valuation of C holds e at f = e proof let C be initialized ConstructorSignature; ::_thesis: for e being expression of C for f being empty valuation of C holds e at f = e let e be expression of C; ::_thesis: for f being empty valuation of C holds e at f = e let f be empty valuation of C; ::_thesis: e at f = e f = C idval ({} Vars) ; hence e at f = e by Th137; ::_thesis: verum end; theorem :: ABCMIZ_1:140 for C being initialized ConstructorSignature for f being empty valuation of C holds f # = id (Union the Sorts of (Free (C,(MSVars C)))) proof let C be initialized ConstructorSignature; ::_thesis: for f being empty valuation of C holds f # = id (Union the Sorts of (Free (C,(MSVars C)))) let f be empty valuation of C; ::_thesis: f # = id (Union the Sorts of (Free (C,(MSVars C)))) A1: dom (f #) = Union the Sorts of (Free (C,(MSVars C))) by FUNCT_2:def_1; now__::_thesis:_for_x_being_set_st_x_in_Union_the_Sorts_of_(Free_(C,(MSVars_C)))_holds_ (f_#)_._x_=_x let x be set ; ::_thesis: ( x in Union the Sorts of (Free (C,(MSVars C))) implies (f #) . x = x ) assume x in Union the Sorts of (Free (C,(MSVars C))) ; ::_thesis: (f #) . x = x then reconsider t = x as expression of C ; thus (f #) . x = t at f .= x by Th139 ; ::_thesis: verum end; hence f # = id (Union the Sorts of (Free (C,(MSVars C)))) by A1, FUNCT_1:17; ::_thesis: verum end; definition let C be initialized ConstructorSignature; let f be valuation of C; let t be quasi-term of C; :: original: at redefine funct at f -> quasi-term of C; coherence t at f is quasi-term of C proof t in QuasiTerms C by Def28; then t at f in QuasiTerms C by Th129; hence t at f is quasi-term of C by Th41; ::_thesis: verum end; end; definition let C be initialized ConstructorSignature; let f be valuation of C; let a be expression of C, an_Adj C; :: original: at redefine funca at f -> expression of C, an_Adj C; coherence a at f is expression of C, an_Adj C proof a in the Sorts of (Free (C,(MSVars C))) . (an_Adj C) by Def28; then a at f in the Sorts of (Free (C,(MSVars C))) . (an_Adj C) by Th129; hence a at f is expression of C, an_Adj C by Th41; ::_thesis: verum end; end; registration let C be initialized ConstructorSignature; let f be valuation of C; let a be positive expression of C, an_Adj C; clustera at f -> positive for expression of C, an_Adj C; coherence for b1 being expression of C, an_Adj C st b1 = a at f holds b1 is positive proof consider v being constructor OperSymbol of C such that A1: the_result_sort_of v = an_Adj C and A2: ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of v) & a = v -trm p ) by Th65; consider p being FinSequence of QuasiTerms C such that A3: len p = len (the_arity_of v) and A4: a = v -trm p by A2; A5: len (p at f) = len p by Th130; a at f = v -trm (p at f) by A3, A4, Def60; hence for b1 being expression of C, an_Adj C st b1 = a at f holds b1 is positive by A1, A3, A5, Th66; ::_thesis: verum end; end; registration let C be initialized ConstructorSignature; let f be valuation of C; let a be negative expression of C, an_Adj C; clustera at f -> negative for expression of C, an_Adj C; coherence for b1 being expression of C, an_Adj C st b1 = a at f holds b1 is negative proof (non_op C) term (Non a) = a by Th62; then a at f = (non_op C) term ((Non a) at f) by Def60 .= Non ((Non a) at f) by Th59 ; hence for b1 being expression of C, an_Adj C st b1 = a at f holds b1 is negative ; ::_thesis: verum end; end; definition let C be initialized ConstructorSignature; let f be valuation of C; let a be quasi-adjective of C; :: original: at redefine funca at f -> quasi-adjective of C; coherence a at f is quasi-adjective of C proof percases ( a is positive or a is negative ) ; suppose a is positive ; ::_thesis: a at f is quasi-adjective of C then reconsider a = a as positive quasi-adjective of C ; a at f is positive ; hence a at f is quasi-adjective of C ; ::_thesis: verum end; suppose a is negative ; ::_thesis: a at f is quasi-adjective of C then reconsider a = a as negative quasi-adjective of C ; a at f is negative ; hence a at f is quasi-adjective of C ; ::_thesis: verum end; end; end; end; theorem :: ABCMIZ_1:141 for C being initialized ConstructorSignature for a being expression of C, an_Adj C for f being valuation of C holds (Non a) at f = Non (a at f) proof let C be initialized ConstructorSignature; ::_thesis: for a being expression of C, an_Adj C for f being valuation of C holds (Non a) at f = Non (a at f) let a be expression of C, an_Adj C; ::_thesis: for f being valuation of C holds (Non a) at f = Non (a at f) let f be valuation of C; ::_thesis: (Non a) at f = Non (a at f) percases ( a is positive or not a is positive ) ; suppose a is positive ; ::_thesis: (Non a) at f = Non (a at f) then reconsider b = a as positive expression of C, an_Adj C ; reconsider af = b at f as positive expression of C, an_Adj C ; thus (Non a) at f = ((non_op C) term b) at f by Th59 .= (non_op C) term af by Def60 .= Non (a at f) by Th59 ; ::_thesis: verum end; suppose not a is positive ; ::_thesis: (Non a) at f = Non (a at f) then consider b being expression of C, an_Adj C such that A1: a = (non_op C) term b and A2: Non a = b by Th60; A3: a at f = (non_op C) term (b at f) by A1, Def60; then not a at f is positive by Def37; then ex k being expression of C, an_Adj C st ( a at f = (non_op C) term k & Non (a at f) = k ) by Th60; hence (Non a) at f = Non (a at f) by A2, A3, Th44; ::_thesis: verum end; end; end; definition let C be initialized ConstructorSignature; let f be valuation of C; let t be expression of C, a_Type C; :: original: at redefine funct at f -> expression of C, a_Type C; coherence t at f is expression of C, a_Type C proof t in the Sorts of (Free (C,(MSVars C))) . (a_Type C) by Def28; then t at f in the Sorts of (Free (C,(MSVars C))) . (a_Type C) by Th129; hence t at f is expression of C, a_Type C by Th41; ::_thesis: verum end; end; registration let C be initialized ConstructorSignature; let f be valuation of C; let t be pure expression of C, a_Type C; clustert at f -> pure for expression of C, a_Type C; coherence for b1 being expression of C, a_Type C st b1 = t at f holds b1 is pure proof consider m being constructor OperSymbol of C such that A1: the_result_sort_of m = a_Type C and A2: ex p being FinSequence of QuasiTerms C st ( len p = len (the_arity_of m) & t = m -trm p ) by Th74; consider p being FinSequence of QuasiTerms C such that A3: len p = len (the_arity_of m) and A4: t = m -trm p by A2; A5: len (p at f) = len p by Th130; t at f = m -trm (p at f) by A3, A4, Def60; hence for b1 being expression of C, a_Type C st b1 = t at f holds b1 is pure by A1, A3, A5, Th75; ::_thesis: verum end; end; theorem :: ABCMIZ_1:142 for C being initialized ConstructorSignature for f being one-to-one irrelevant valuation of C ex g being one-to-one irrelevant valuation of C st for x, y being variable holds ( x in dom f & f . x = y -term C iff ( y in dom g & g . y = x -term C ) ) proof let C be initialized ConstructorSignature; ::_thesis: for f being one-to-one irrelevant valuation of C ex g being one-to-one irrelevant valuation of C st for x, y being variable holds ( x in dom f & f . x = y -term C iff ( y in dom g & g . y = x -term C ) ) let f be one-to-one irrelevant valuation of C; ::_thesis: ex g being one-to-one irrelevant valuation of C st for x, y being variable holds ( x in dom f & f . x = y -term C iff ( y in dom g & g . y = x -term C ) ) set Y = { x where x is variable : x -term C in rng f } ; defpred S1[ set , set ] means ex x being set st ( x in dom f & f . x = root-tree [$1,a_Term] & $2 = root-tree [x,a_Term] ); A1: for x being set st x in { x where x is variable : x -term C in rng f } holds ex y being set st S1[x,y] proof let x be set ; ::_thesis: ( x in { x where x is variable : x -term C in rng f } implies ex y being set st S1[x,y] ) assume x in { x where x is variable : x -term C in rng f } ; ::_thesis: ex y being set st S1[x,y] then A2: ex z being variable st ( x = z & z -term C in rng f ) ; then reconsider z = x as variable ; consider y being set such that A3: y in dom f and A4: z -term C = f . y by A2, FUNCT_1:def_3; reconsider y = y as variable by A3; take y -term C ; ::_thesis: S1[x,y -term C] thus S1[x,y -term C] by A3, A4; ::_thesis: verum end; consider g being Function such that A5: dom g = { x where x is variable : x -term C in rng f } and A6: for y being set st y in { x where x is variable : x -term C in rng f } holds S1[y,g . y] from CLASSES1:sch_1(A1); A7: { x where x is variable : x -term C in rng f } c= Vars proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in { x where x is variable : x -term C in rng f } or x in Vars ) assume x in { x where x is variable : x -term C in rng f } ; ::_thesis: x in Vars then ex z being variable st ( x = z & z -term C in rng f ) ; hence x in Vars ; ::_thesis: verum end; rng g c= QuasiTerms C proof let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in rng g or y in QuasiTerms C ) assume y in rng g ; ::_thesis: y in QuasiTerms C then consider x being set such that A8: x in dom g and A9: y = g . x by FUNCT_1:def_3; reconsider x = x as variable by A5, A7, A8; consider z being set such that A10: z in dom f and f . z = x -term C and A11: g . x = root-tree [z,a_Term] by A5, A6, A8; reconsider z = z as variable by A10; y = z -term C by A9, A11; hence y in QuasiTerms C by Def28; ::_thesis: verum end; then reconsider g = g as valuation of C by A5, A7, RELSET_1:4; A12: g is irrelevant proof let x be variable; :: according to ABCMIZ_1:def_58 ::_thesis: ( x in dom g implies ex y being variable st g . x = y -term C ) assume x in dom g ; ::_thesis: ex y being variable st g . x = y -term C then consider y being set such that A13: y in dom f and f . y = x -term C and A14: g . x = root-tree [y,a_Term] by A5, A6; reconsider y = y as variable by A13; take y ; ::_thesis: g . x = y -term C thus g . x = y -term C by A14; ::_thesis: verum end; g is one-to-one proof let z1, z2 be set ; :: according to FUNCT_1:def_4 ::_thesis: ( not z1 in proj1 g or not z2 in proj1 g or not g . z1 = g . z2 or z1 = z2 ) assume that A15: z1 in dom g and A16: z2 in dom g and A17: g . z1 = g . z2 ; ::_thesis: z1 = z2 reconsider z1 = z1, z2 = z2 as variable by A15, A16; consider x1 being set such that A18: x1 in dom f and A19: f . x1 = z1 -term C and A20: g . z1 = root-tree [x1,a_Term] by A5, A6, A15; consider x2 being set such that A21: x2 in dom f and A22: f . x2 = z2 -term C and A23: g . z1 = root-tree [x2,a_Term] by A5, A6, A16, A17; reconsider x1 = x1, x2 = x2 as variable by A18, A21; x1 -term C = x2 -term C by A20, A23; then x1 = x2 by Th50; hence z1 = z2 by A19, A22, Th50; ::_thesis: verum end; then reconsider g = g as one-to-one irrelevant valuation of C by A12; take g ; ::_thesis: for x, y being variable holds ( x in dom f & f . x = y -term C iff ( y in dom g & g . y = x -term C ) ) let x, y be variable; ::_thesis: ( x in dom f & f . x = y -term C iff ( y in dom g & g . y = x -term C ) ) hereby ::_thesis: ( y in dom g & g . y = x -term C implies ( x in dom f & f . x = y -term C ) ) assume that A24: x in dom f and A25: f . x = y -term C ; ::_thesis: ( y in dom g & g . y = x -term C ) f . x in rng f by A24, FUNCT_1:def_3; hence y in dom g by A5, A25; ::_thesis: g . y = x -term C then S1[y,g . y] by A5, A6; hence g . y = x -term C by A24, A25, FUNCT_1:def_4; ::_thesis: verum end; assume that A26: y in dom g and A27: g . y = x -term C ; ::_thesis: ( x in dom f & f . x = y -term C ) consider z being set such that A28: z in dom f and A29: f . z = root-tree [y,a_Term] and A30: x -term C = root-tree [z,a_Term] by A5, A6, A26, A27; reconsider z = z as variable by A28; x -term C = z -term C by A30; hence ( x in dom f & f . x = y -term C ) by A28, A29, Th50; ::_thesis: verum end; theorem :: ABCMIZ_1:143 for C being initialized ConstructorSignature for f, g being one-to-one irrelevant valuation of C st ( for x, y being variable st x in dom f & f . x = y -term C holds ( y in dom g & g . y = x -term C ) ) holds for e being expression of C st variables_in e c= dom f holds (e at f) at g = e proof let C be initialized ConstructorSignature; ::_thesis: for f, g being one-to-one irrelevant valuation of C st ( for x, y being variable st x in dom f & f . x = y -term C holds ( y in dom g & g . y = x -term C ) ) holds for e being expression of C st variables_in e c= dom f holds (e at f) at g = e let f, g be one-to-one irrelevant valuation of C; ::_thesis: ( ( for x, y being variable st x in dom f & f . x = y -term C holds ( y in dom g & g . y = x -term C ) ) implies for e being expression of C st variables_in e c= dom f holds (e at f) at g = e ) assume A1: for x, y being variable st x in dom f & f . x = y -term C holds ( y in dom g & g . y = x -term C ) ; ::_thesis: for e being expression of C st variables_in e c= dom f holds (e at f) at g = e let t be expression of C; ::_thesis: ( variables_in t c= dom f implies (t at f) at g = t ) defpred S1[ expression of C] means ( variables_in $1 c= dom f implies ($1 at f) at g = $1 ); A2: for x being variable holds S1[x -term C] proof let x be variable; ::_thesis: S1[x -term C] assume variables_in (x -term C) c= dom f ; ::_thesis: ((x -term C) at f) at g = x -term C then {x} c= dom f by MSAFREE3:10; then A3: x in dom f by ZFMISC_1:31; then consider y being variable such that A4: f . x = y -term C by Def58; A5: y in dom g by A1, A3, A4; A6: g . y = x -term C by A1, A3, A4; (x -term C) at f = y -term C by A3, A4, Def60; hence ((x -term C) at f) at g = x -term C by A5, A6, Def60; ::_thesis: verum end; A7: for c being constructor OperSymbol of C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & ( for t being quasi-term of C st t in rng p holds S1[t] ) holds S1[c -trm p] proof let c be constructor OperSymbol of C; ::_thesis: for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & ( for t being quasi-term of C st t in rng p holds S1[t] ) holds S1[c -trm p] let p be FinSequence of QuasiTerms C; ::_thesis: ( len p = len (the_arity_of c) & ( for t being quasi-term of C st t in rng p holds S1[t] ) implies S1[c -trm p] ) assume that A8: len p = len (the_arity_of c) and A9: for t being quasi-term of C st t in rng p holds S1[t] and A10: variables_in (c -trm p) c= dom f ; ::_thesis: ((c -trm p) at f) at g = c -trm p c -trm p = [c, the carrier of C] -tree p by A8, Def35; then A11: variables_in (c -trm p) = union { (variables_in s) where s is quasi-term of C : s in rng p } by Th88; A12: len (p at f) = len p by Th130; A13: len ((p at f) at g) = len (p at f) by Th130; A14: dom (p at f) = dom p by A12, FINSEQ_3:29; A15: dom ((p at f) at g) = dom (p at f) by A13, FINSEQ_3:29; now__::_thesis:_for_i_being_Nat_st_i_in_dom_p_holds_ ((p_at_f)_at_g)_._i_=_p_._i let i be Nat; ::_thesis: ( i in dom p implies ((p at f) at g) . i = p . i ) assume A16: i in dom p ; ::_thesis: ((p at f) at g) . i = p . i then A17: (p at f) . i = (f #) . (p . i) by FUNCT_1:13; A18: p . i in rng p by A16, FUNCT_1:def_3; rng p c= QuasiTerms C by FINSEQ_1:def_4; then reconsider pi1 = p . i as quasi-term of C by A18, Th41; variables_in pi1 in { (variables_in s) where s is quasi-term of C : s in rng p } by A18; then A19: variables_in pi1 c= variables_in (c -trm p) by A11, ZFMISC_1:74; ((p at f) at g) . i = (pi1 at f) at g by A14, A16, A17, FUNCT_1:13; hence ((p at f) at g) . i = p . i by A9, A10, A18, A19, XBOOLE_1:1; ::_thesis: verum end; then A20: (p at f) at g = p by A14, A15, FINSEQ_1:13; (c -trm p) at f = c -trm (p at f) by A8, Def60; hence ((c -trm p) at f) at g = c -trm p by A8, A12, A20, Def60; ::_thesis: verum end; A21: for a being expression of C, an_Adj C st S1[a] holds S1[(non_op C) term a] proof let a be expression of C, an_Adj C; ::_thesis: ( S1[a] implies S1[(non_op C) term a] ) assume that A22: S1[a] and A23: variables_in ((non_op C) term a) c= dom f ; ::_thesis: (((non_op C) term a) at f) at g = (non_op C) term a A24: (non_op C) term a = [non_op, the carrier of C] -tree <*a*> by Th43; thus (((non_op C) term a) at f) at g = ((non_op C) term (a at f)) at g by Def60 .= (non_op C) term a by A22, A23, A24, Def60, Th93 ; ::_thesis: verum end; A25: for a being expression of C, an_Adj C st S1[a] holds for t being expression of C, a_Type C st S1[t] holds S1[(ast C) term (a,t)] proof let a be expression of C, an_Adj C; ::_thesis: ( S1[a] implies for t being expression of C, a_Type C st S1[t] holds S1[(ast C) term (a,t)] ) assume A26: S1[a] ; ::_thesis: for t being expression of C, a_Type C st S1[t] holds S1[(ast C) term (a,t)] let t be expression of C, a_Type C; ::_thesis: ( S1[t] implies S1[(ast C) term (a,t)] ) assume that A27: S1[t] and A28: variables_in ((ast C) term (a,t)) c= dom f ; ::_thesis: (((ast C) term (a,t)) at f) at g = (ast C) term (a,t) (ast C) term (a,t) = [*, the carrier of C] -tree <*a,t*> by Th46; then A29: variables_in ((ast C) term (a,t)) = ((C variables_in a) \/ (C variables_in t)) . a_Term by Th96 .= (variables_in a) \/ (variables_in t) by PBOOLE:def_4 ; thus (((ast C) term (a,t)) at f) at g = ((ast C) term ((a at f),(t at f))) at g by Def60 .= (ast C) term (a,t) by A26, A27, A28, A29, Def60, XBOOLE_1:11 ; ::_thesis: verum end; thus S1[t] from ABCMIZ_1:sch_2(A2, A7, A21, A25); ::_thesis: verum end; definition let C be initialized ConstructorSignature; let f be valuation of C; let A be Subset of (QuasiAdjs C); funcA at f -> Subset of (QuasiAdjs C) equals :: ABCMIZ_1:def 64 { (a at f) where a is quasi-adjective of C : a in A } ; coherence { (a at f) where a is quasi-adjective of C : a in A } is Subset of (QuasiAdjs C) proof set X = { (a at f) where a is quasi-adjective of C : a in A } ; { (a at f) where a is quasi-adjective of C : a in A } c= QuasiAdjs C proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in { (a at f) where a is quasi-adjective of C : a in A } or x in QuasiAdjs C ) assume x in { (a at f) where a is quasi-adjective of C : a in A } ; ::_thesis: x in QuasiAdjs C then ex a being quasi-adjective of C st ( x = a at f & a in A ) ; hence x in QuasiAdjs C ; ::_thesis: verum end; hence { (a at f) where a is quasi-adjective of C : a in A } is Subset of (QuasiAdjs C) ; ::_thesis: verum end; end; :: deftheorem defines at ABCMIZ_1:def_64_:_ for C being initialized ConstructorSignature for f being valuation of C for A being Subset of (QuasiAdjs C) holds A at f = { (a at f) where a is quasi-adjective of C : a in A } ; theorem Th144: :: ABCMIZ_1:144 for C being initialized ConstructorSignature for f being valuation of C for A being Subset of (QuasiAdjs C) for a being quasi-adjective of C st A = {a} holds A at f = {(a at f)} proof let C be initialized ConstructorSignature; ::_thesis: for f being valuation of C for A being Subset of (QuasiAdjs C) for a being quasi-adjective of C st A = {a} holds A at f = {(a at f)} let f be valuation of C; ::_thesis: for A being Subset of (QuasiAdjs C) for a being quasi-adjective of C st A = {a} holds A at f = {(a at f)} let A be Subset of (QuasiAdjs C); ::_thesis: for a being quasi-adjective of C st A = {a} holds A at f = {(a at f)} let a be quasi-adjective of C; ::_thesis: ( A = {a} implies A at f = {(a at f)} ) assume A1: A = {a} ; ::_thesis: A at f = {(a at f)} thus A at f c= {(a at f)} :: according to XBOOLE_0:def_10 ::_thesis: {(a at f)} c= A at f proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in A at f or x in {(a at f)} ) assume x in A at f ; ::_thesis: x in {(a at f)} then ex b being quasi-adjective of C st ( x = b at f & b in A ) ; then x = a at f by A1, TARSKI:def_1; hence x in {(a at f)} by TARSKI:def_1; ::_thesis: verum end; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in {(a at f)} or x in A at f ) assume x in {(a at f)} ; ::_thesis: x in A at f then A2: x = a at f by TARSKI:def_1; a in A by A1, TARSKI:def_1; hence x in A at f by A2; ::_thesis: verum end; theorem Th145: :: ABCMIZ_1:145 for C being initialized ConstructorSignature for f being valuation of C for A, B being Subset of (QuasiAdjs C) holds (A \/ B) at f = (A at f) \/ (B at f) proof let C be initialized ConstructorSignature; ::_thesis: for f being valuation of C for A, B being Subset of (QuasiAdjs C) holds (A \/ B) at f = (A at f) \/ (B at f) let f be valuation of C; ::_thesis: for A, B being Subset of (QuasiAdjs C) holds (A \/ B) at f = (A at f) \/ (B at f) let A, B be Subset of (QuasiAdjs C); ::_thesis: (A \/ B) at f = (A at f) \/ (B at f) thus (A \/ B) at f c= (A at f) \/ (B at f) :: according to XBOOLE_0:def_10 ::_thesis: (A at f) \/ (B at f) c= (A \/ B) at f proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in (A \/ B) at f or x in (A at f) \/ (B at f) ) assume x in (A \/ B) at f ; ::_thesis: x in (A at f) \/ (B at f) then consider a being quasi-adjective of C such that A1: x = a at f and A2: a in A \/ B ; ( a in A or a in B ) by A2, XBOOLE_0:def_3; then ( x in A at f or x in B at f ) by A1; hence x in (A at f) \/ (B at f) by XBOOLE_0:def_3; ::_thesis: verum end; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in (A at f) \/ (B at f) or x in (A \/ B) at f ) assume x in (A at f) \/ (B at f) ; ::_thesis: x in (A \/ B) at f then ( x in A at f or x in B at f ) by XBOOLE_0:def_3; then ( ( A c= A \/ B & ex a being quasi-adjective of C st ( x = a at f & a in A ) ) or ( B c= A \/ B & ex a being quasi-adjective of C st ( x = a at f & a in B ) ) ) by XBOOLE_1:7; hence x in (A \/ B) at f ; ::_thesis: verum end; theorem :: ABCMIZ_1:146 for C being initialized ConstructorSignature for f being valuation of C for A, B being Subset of (QuasiAdjs C) st A c= B holds A at f c= B at f proof let C be initialized ConstructorSignature; ::_thesis: for f being valuation of C for A, B being Subset of (QuasiAdjs C) st A c= B holds A at f c= B at f let f be valuation of C; ::_thesis: for A, B being Subset of (QuasiAdjs C) st A c= B holds A at f c= B at f let A, B be Subset of (QuasiAdjs C); ::_thesis: ( A c= B implies A at f c= B at f ) assume A c= B ; ::_thesis: A at f c= B at f then A \/ B = B by XBOOLE_1:12; then B at f = (A at f) \/ (B at f) by Th145; hence A at f c= B at f by XBOOLE_1:7; ::_thesis: verum end; registration let C be initialized ConstructorSignature; let f be valuation of C; let A be finite Subset of (QuasiAdjs C); clusterA at f -> finite ; coherence A at f is finite proof A1: A is finite ; deffunc H2( expression of C) -> expression of C = C at f; A2: { H2(w) where w is expression of C : w in A } is finite from FRAENKEL:sch_21(A1); A at f c= { H2(w) where w is expression of C : w in A } proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in A at f or x in { H2(w) where w is expression of C : w in A } ) assume x in A at f ; ::_thesis: x in { H2(w) where w is expression of C : w in A } then ex a being quasi-adjective of C st ( x = a at f & a in A ) ; hence x in { H2(w) where w is expression of C : w in A } ; ::_thesis: verum end; hence A at f is finite by A2; ::_thesis: verum end; end; definition let C be initialized ConstructorSignature; let f be valuation of C; let T be quasi-type of C; funcT at f -> quasi-type of C equals :: ABCMIZ_1:def 65 ((adjs T) at f) ast ((the_base_of T) at f); coherence ((adjs T) at f) ast ((the_base_of T) at f) is quasi-type of C ; end; :: deftheorem defines at ABCMIZ_1:def_65_:_ for C being initialized ConstructorSignature for f being valuation of C for T being quasi-type of C holds T at f = ((adjs T) at f) ast ((the_base_of T) at f); theorem :: ABCMIZ_1:147 for C being initialized ConstructorSignature for f being valuation of C for T being quasi-type of C holds ( adjs (T at f) = (adjs T) at f & the_base_of (T at f) = (the_base_of T) at f ) by MCART_1:7; theorem :: ABCMIZ_1:148 for C being initialized ConstructorSignature for f being valuation of C for T being quasi-type of C for a being quasi-adjective of C holds (a ast T) at f = (a at f) ast (T at f) proof let C be initialized ConstructorSignature; ::_thesis: for f being valuation of C for T being quasi-type of C for a being quasi-adjective of C holds (a ast T) at f = (a at f) ast (T at f) let f be valuation of C; ::_thesis: for T being quasi-type of C for a being quasi-adjective of C holds (a ast T) at f = (a at f) ast (T at f) let T be quasi-type of C; ::_thesis: for a being quasi-adjective of C holds (a ast T) at f = (a at f) ast (T at f) let a be quasi-adjective of C; ::_thesis: (a ast T) at f = (a at f) ast (T at f) a in QuasiAdjs C ; then reconsider A = {a} as Subset of (QuasiAdjs C) by ZFMISC_1:31; thus (a ast T) at f = [((adjs (a ast T)) at f),((the_base_of T) at f)] by MCART_1:7 .= [((A \/ (adjs T)) at f),((the_base_of T) at f)] by MCART_1:7 .= [((A at f) \/ ((adjs T) at f)),((the_base_of T) at f)] by Th145 .= [({(a at f)} \/ ((adjs T) at f)),((the_base_of T) at f)] by Th144 .= [({(a at f)} \/ (adjs (T at f))),((the_base_of T) at f)] by MCART_1:7 .= (a at f) ast (T at f) by MCART_1:7 ; ::_thesis: verum end; definition let C be initialized ConstructorSignature; let f, g be valuation of C; funcf at g -> valuation of C means :Def66: :: ABCMIZ_1:def 66 ( dom it = (dom f) \/ (dom g) & ( for x being variable st x in dom it holds it . x = ((x -term C) at f) at g ) ); existence ex b1 being valuation of C st ( dom b1 = (dom f) \/ (dom g) & ( for x being variable st x in dom b1 holds b1 . x = ((x -term C) at f) at g ) ) proof deffunc H2( set ) -> quasi-term of C = (((In ($1,Vars)) -term C) at f) at g; consider h being Function such that A1: dom h = (dom f) \/ (dom g) and A2: for x being set st x in (dom f) \/ (dom g) holds h . x = H2(x) from FUNCT_1:sch_3(); rng h c= QuasiTerms C proof let y be set ; :: according to TARSKI:def_3 ::_thesis: ( not y in rng h or y in QuasiTerms C ) assume y in rng h ; ::_thesis: y in QuasiTerms C then consider x being set such that A3: x in dom h and A4: y = h . x by FUNCT_1:def_3; y = H2(x) by A1, A2, A3, A4; hence y in QuasiTerms C by Def28; ::_thesis: verum end; then reconsider h = h as valuation of C by A1, RELSET_1:4; take h ; ::_thesis: ( dom h = (dom f) \/ (dom g) & ( for x being variable st x in dom h holds h . x = ((x -term C) at f) at g ) ) thus dom h = (dom f) \/ (dom g) by A1; ::_thesis: for x being variable st x in dom h holds h . x = ((x -term C) at f) at g let x be variable; ::_thesis: ( x in dom h implies h . x = ((x -term C) at f) at g ) assume x in dom h ; ::_thesis: h . x = ((x -term C) at f) at g then h . x = H2(x) by A1, A2; hence h . x = ((x -term C) at f) at g by FUNCT_7:def_1; ::_thesis: verum end; uniqueness for b1, b2 being valuation of C st dom b1 = (dom f) \/ (dom g) & ( for x being variable st x in dom b1 holds b1 . x = ((x -term C) at f) at g ) & dom b2 = (dom f) \/ (dom g) & ( for x being variable st x in dom b2 holds b2 . x = ((x -term C) at f) at g ) holds b1 = b2 proof let h1, h2 be valuation of C; ::_thesis: ( dom h1 = (dom f) \/ (dom g) & ( for x being variable st x in dom h1 holds h1 . x = ((x -term C) at f) at g ) & dom h2 = (dom f) \/ (dom g) & ( for x being variable st x in dom h2 holds h2 . x = ((x -term C) at f) at g ) implies h1 = h2 ) assume that A5: dom h1 = (dom f) \/ (dom g) and A6: for x being variable st x in dom h1 holds h1 . x = ((x -term C) at f) at g and A7: dom h2 = (dom f) \/ (dom g) and A8: for x being variable st x in dom h2 holds h2 . x = ((x -term C) at f) at g ; ::_thesis: h1 = h2 now__::_thesis:_for_x_being_variable_st_x_in_dom_h1_holds_ h1_._x_=_h2_._x let x be variable; ::_thesis: ( x in dom h1 implies h1 . x = h2 . x ) assume A9: x in dom h1 ; ::_thesis: h1 . x = h2 . x then h1 . x = ((x -term C) at f) at g by A6; hence h1 . x = h2 . x by A5, A7, A8, A9; ::_thesis: verum end; hence h1 = h2 by A5, A7, PARTFUN1:5; ::_thesis: verum end; end; :: deftheorem Def66 defines at ABCMIZ_1:def_66_:_ for C being initialized ConstructorSignature for f, g, b4 being valuation of C holds ( b4 = f at g iff ( dom b4 = (dom f) \/ (dom g) & ( for x being variable st x in dom b4 holds b4 . x = ((x -term C) at f) at g ) ) ); registration let C be initialized ConstructorSignature; let f, g be irrelevant valuation of C; clusterf at g -> irrelevant ; coherence f at g is irrelevant proof let x be variable; :: according to ABCMIZ_1:def_58 ::_thesis: ( x in dom (f at g) implies ex y being variable st (f at g) . x = y -term C ) assume A1: x in dom (f at g) ; ::_thesis: ex y being variable st (f at g) . x = y -term C then A2: (f at g) . x = ((x -term C) at f) at g by Def66; A3: dom (f at g) = (dom f) \/ (dom g) by Def66; percases ( x in dom f or x nin dom f ) ; supposeA4: x in dom f ; ::_thesis: ex y being variable st (f at g) . x = y -term C then consider y being variable such that A5: f . x = y -term C by Def58; A6: (x -term C) at f = y -term C by A4, A5, Def60; then A7: ( y in dom g implies (f at g) . x = g . y ) by A2, Def60; ( y nin dom g implies (f at g) . x = y -term C ) by A2, A6, Def60; hence ex y being variable st (f at g) . x = y -term C by A7, Def58; ::_thesis: verum end; supposeA8: x nin dom f ; ::_thesis: ex y being variable st (f at g) . x = y -term C then A9: (x -term C) at f = x -term C by Def60; A10: x in dom g by A1, A3, A8, XBOOLE_0:def_3; then (f at g) . x = g . x by A2, A9, Def60; hence ex y being variable st (f at g) . x = y -term C by A10, Def58; ::_thesis: verum end; end; end; end; theorem Th149: :: ABCMIZ_1:149 for C being initialized ConstructorSignature for e being expression of C for f1, f2 being valuation of C holds (e at f1) at f2 = e at (f1 at f2) proof let C be initialized ConstructorSignature; ::_thesis: for e being expression of C for f1, f2 being valuation of C holds (e at f1) at f2 = e at (f1 at f2) let e be expression of C; ::_thesis: for f1, f2 being valuation of C holds (e at f1) at f2 = e at (f1 at f2) set t = e; let f1, f2 be valuation of C; ::_thesis: (e at f1) at f2 = e at (f1 at f2) A1: dom (f1 at f2) = (dom f1) \/ (dom f2) by Def66; defpred S1[ expression of C] means ($1 at f1) at f2 = $1 at (f1 at f2); A2: for x being variable holds S1[x -term C] proof let x be variable; ::_thesis: S1[x -term C] percases ( x in dom (f1 at f2) or x nin dom (f1 at f2) ) ; supposeA3: x in dom (f1 at f2) ; ::_thesis: S1[x -term C] then (x -term C) at (f1 at f2) = (f1 at f2) . x by Def60; hence S1[x -term C] by A3, Def66; ::_thesis: verum end; supposeA4: x nin dom (f1 at f2) ; ::_thesis: S1[x -term C] then A5: x nin dom f1 by A1, XBOOLE_0:def_3; A6: x nin dom f2 by A1, A4, XBOOLE_0:def_3; A7: (x -term C) at f1 = x -term C by A5, Def60; (x -term C) at f2 = x -term C by A6, Def60; hence S1[x -term C] by A4, A7, Def60; ::_thesis: verum end; end; end; A8: for c being constructor OperSymbol of C for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & ( for t being quasi-term of C st t in rng p holds S1[t] ) holds S1[c -trm p] proof let c be constructor OperSymbol of C; ::_thesis: for p being FinSequence of QuasiTerms C st len p = len (the_arity_of c) & ( for t being quasi-term of C st t in rng p holds S1[t] ) holds S1[c -trm p] let p be FinSequence of QuasiTerms C; ::_thesis: ( len p = len (the_arity_of c) & ( for t being quasi-term of C st t in rng p holds S1[t] ) implies S1[c -trm p] ) assume that A9: len p = len (the_arity_of c) and A10: for t being quasi-term of C st t in rng p holds S1[t] ; ::_thesis: S1[c -trm p] A11: len (p at f1) = len p by Th130; A12: len (p at (f1 at f2)) = len p by Th130; A13: len ((p at f1) at f2) = len (p at f1) by Th130; A14: dom (p at f1) = dom p by A11, FINSEQ_3:29; A15: dom (p at (f1 at f2)) = dom p by A12, FINSEQ_3:29; A16: dom ((p at f1) at f2) = dom p by A11, A13, FINSEQ_3:29; now__::_thesis:_for_i_being_Nat_st_i_in_dom_p_holds_ ((p_at_f1)_at_f2)_._i_=_(p_at_(f1_at_f2))_._i let i be Nat; ::_thesis: ( i in dom p implies ((p at f1) at f2) . i = (p at (f1 at f2)) . i ) assume A17: i in dom p ; ::_thesis: ((p at f1) at f2) . i = (p at (f1 at f2)) . i then A18: ((p at f1) at f2) . i = (f2 #) . ((p at f1) . i) by A14, FUNCT_1:13; A19: p . i in rng p by A17, FUNCT_1:def_3; rng p c= QuasiTerms C by FINSEQ_1:def_4; then reconsider pi1 = p . i as quasi-term of C by A19, Th41; thus ((p at f1) at f2) . i = (pi1 at f1) at f2 by A17, A18, FUNCT_1:13 .= pi1 at (f1 at f2) by A10, A19 .= (p at (f1 at f2)) . i by A17, FUNCT_1:13 ; ::_thesis: verum end; then A20: (p at f1) at f2 = p at (f1 at f2) by A15, A16, FINSEQ_1:13; thus ((c -trm p) at f1) at f2 = (c -trm (p at f1)) at f2 by A9, Def60 .= c -trm (p at (f1 at f2)) by A9, A11, A20, Def60 .= (c -trm p) at (f1 at f2) by A9, Def60 ; ::_thesis: verum end; A21: for a being expression of C, an_Adj C st S1[a] holds S1[(non_op C) term a] proof let a be expression of C, an_Adj C; ::_thesis: ( S1[a] implies S1[(non_op C) term a] ) assume S1[a] ; ::_thesis: S1[(non_op C) term a] then ((non_op C) term (a at f1)) at f2 = (non_op C) term (a at (f1 at f2)) by Def60 .= ((non_op C) term a) at (f1 at f2) by Def60 ; hence S1[(non_op C) term a] by Def60; ::_thesis: verum end; A22: for a being expression of C, an_Adj C st S1[a] holds for t being expression of C, a_Type C st S1[t] holds S1[(ast C) term (a,t)] proof let a be expression of C, an_Adj C; ::_thesis: ( S1[a] implies for t being expression of C, a_Type C st S1[t] holds S1[(ast C) term (a,t)] ) assume A23: S1[a] ; ::_thesis: for t being expression of C, a_Type C st S1[t] holds S1[(ast C) term (a,t)] let t be expression of C, a_Type C; ::_thesis: ( S1[t] implies S1[(ast C) term (a,t)] ) assume S1[t] ; ::_thesis: S1[(ast C) term (a,t)] then ((ast C) term ((a at f1),(t at f1))) at f2 = (ast C) term ((a at (f1 at f2)),(t at (f1 at f2))) by A23, Def60 .= ((ast C) term (a,t)) at (f1 at f2) by Def60 ; hence S1[(ast C) term (a,t)] by Def60; ::_thesis: verum end; thus S1[e] from ABCMIZ_1:sch_2(A2, A8, A21, A22); ::_thesis: verum end; theorem Th150: :: ABCMIZ_1:150 for C being initialized ConstructorSignature for A being Subset of (QuasiAdjs C) for f1, f2 being valuation of C holds (A at f1) at f2 = A at (f1 at f2) proof let C be initialized ConstructorSignature; ::_thesis: for A being Subset of (QuasiAdjs C) for f1, f2 being valuation of C holds (A at f1) at f2 = A at (f1 at f2) let A be Subset of (QuasiAdjs C); ::_thesis: for f1, f2 being valuation of C holds (A at f1) at f2 = A at (f1 at f2) let f1, f2 be valuation of C; ::_thesis: (A at f1) at f2 = A at (f1 at f2) thus (A at f1) at f2 c= A at (f1 at f2) :: according to XBOOLE_0:def_10 ::_thesis: A at (f1 at f2) c= (A at f1) at f2 proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in (A at f1) at f2 or x in A at (f1 at f2) ) assume x in (A at f1) at f2 ; ::_thesis: x in A at (f1 at f2) then consider a being quasi-adjective of C such that A1: x = a at f2 and A2: a in A at f1 ; consider b being quasi-adjective of C such that A3: a = b at f1 and A4: b in A by A2; x = b at (f1 at f2) by A1, A3, Th149; hence x in A at (f1 at f2) by A4; ::_thesis: verum end; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in A at (f1 at f2) or x in (A at f1) at f2 ) assume x in A at (f1 at f2) ; ::_thesis: x in (A at f1) at f2 then consider a being quasi-adjective of C such that A5: x = a at (f1 at f2) and A6: a in A ; A7: x = (a at f1) at f2 by A5, Th149; a at f1 in A at f1 by A6; hence x in (A at f1) at f2 by A7; ::_thesis: verum end; theorem :: ABCMIZ_1:151 for C being initialized ConstructorSignature for T being quasi-type of C for f1, f2 being valuation of C holds (T at f1) at f2 = T at (f1 at f2) proof let C be initialized ConstructorSignature; ::_thesis: for T being quasi-type of C for f1, f2 being valuation of C holds (T at f1) at f2 = T at (f1 at f2) let T be quasi-type of C; ::_thesis: for f1, f2 being valuation of C holds (T at f1) at f2 = T at (f1 at f2) let f1, f2 be valuation of C; ::_thesis: (T at f1) at f2 = T at (f1 at f2) thus (T at f1) at f2 = (((adjs T) at f1) at f2) ast ((the_base_of (T at f1)) at f2) by MCART_1:7 .= ((adjs T) at (f1 at f2)) ast ((the_base_of (T at f1)) at f2) by Th150 .= ((adjs T) at (f1 at f2)) ast (((the_base_of T) at f1) at f2) by MCART_1:7 .= T at (f1 at f2) by Th149 ; ::_thesis: verum end;