let C be 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)
let e be expression of C; 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; (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]
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;
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;
( 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]
;
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;
then A20:
(p at f1) at f2 = p at (f1 at f2)
by A15, A16;
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
;
verum
end;
A21:
for a being expression of C, an_Adj C st S1[a] holds
S1[(non_op C) term a]
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;
( 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]
;
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;
( S1[t] implies S1[(ast C) term (a,t)] )
assume
S1[
t]
;
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;
verum
end;
thus
S1[e]
from ABCMIZ_1:sch 2(A2, A8, A21, A22); verum