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
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 Th43c;
A3:
for a being expression of C, an_Adj C holds H4(a) is expression of C, an_Adj C
by ThNon;
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 ThAst;
consider f' being term-transformation of C, MSVars C such that
A5:
( ( for x being variable holds f' . (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 = f' * p holds
f' . (c -trm p) = H3(c,q) ) & ( for a being expression of C, an_Adj C holds f' . ((non_op C) term a) = H4(f' . a) ) & ( for a being expression of C, an_Adj C
for t being expression of C, a_Type C holds f' . ((ast C) term a,t) = H5(f' . a,f' . t) ) )
from ABCMIZ_1:sch 3(A1, A2, A3, A4);
take
f'
; :: thesis: ( ( for x being variable holds
( ( x in dom f implies f' . (x -term C) = f . x ) & ( not x in dom f implies f' . (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 = f' * p holds
f' . (c -trm p) = c -trm q ) & ( for a being expression of C, an_Adj C holds f' . ((non_op C) term a) = (non_op C) term (f' . a) ) & ( for a being expression of C, an_Adj C
for t being expression of C, a_Type C holds f' . ((ast C) term a,t) = (ast C) term (f' . a),(f' . t) ) )
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 = f' * p holds
f' . (c -trm p) = c -trm q ) & ( for a being expression of C, an_Adj C holds f' . ((non_op C) term a) = (non_op C) term (f' . a) ) & ( for a being expression of C, an_Adj C
for t being expression of C, a_Type C holds f' . ((ast C) term a,t) = (ast C) term (f' . a),(f' . t) ) )
by A5; :: thesis: verum