:: 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;