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 A:
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 A0:
( s1 = (the_arity_of o) . 1 & s2 = (the_arity_of o) . 2 & a is expression of C,s1 & 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:9;
A2:
( dom <*ta,tb*> = Seg 2 & dom <*s1,s2*> = Seg 2 )
by FINSEQ_3:29;
A4:
the_arity_of o = <*s1,s2*>
by A, A0, FINSEQ_1:61;
B1:
the Sorts of (Free C,(MSVars C)) = C -Terms (MSVars C),((MSVars C) \/ (the carrier of C --> {0 }))
by MSAFREE3:25;
now 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) . ithen A3:
(
i = 1 or
i = 2 )
by A2, FINSEQ_1:4, 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
t = <*ta,tb*> . i
;
:: thesis: the_sort_of t = (the_arity_of o) . ithen
( the
Sorts of
(Free C,(MSVars C)) c= the
Sorts of
(FreeMSA ((MSVars C) \/ (the carrier of C --> {0 }))) & ( (
i = 1 &
t = a ) or (
i = 2 &
t = b ) ) )
by B1, A3, FINSEQ_1:61, PBOOLE:def 23;
then
( the
Sorts of
(Free C,(MSVars C)) . s1 c= the
Sorts of
(FreeMSA ((MSVars C) \/ (the carrier of C --> {0 }))) . s1 & the
Sorts of
(Free C,(MSVars C)) . s2 c= the
Sorts of
(FreeMSA ((MSVars C) \/ (the carrier of C --> {0 }))) . s2 & ( (
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 A0, Th42, PBOOLE:def 5;
hence
the_sort_of t = (the_arity_of o) . i
by A0, MSAFREE3:8;
:: thesis: verum end;
then reconsider p = <*ta,tb*> as ArgumentSeq of Sym o,((MSVars C) \/ (the carrier of C --> {0 })) by A2, A4, MSATERM:25;
A5:
variables_in ((Sym o,((MSVars C) \/ (the carrier of C --> {0 }))) -tree p) c= MSVars C
set s' = the_result_sort_of o;
A7:
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 B1, MSAFREE3:def 6;
then
[o,the carrier of C] -tree <*a,b*> in the Sorts of (Free C,(MSVars C)) . (the_result_sort_of o)
by A5, A7;
hence
[o,the carrier of C] -tree <*a,b*> is expression of C, the_result_sort_of o
by Th42; :: thesis: verum