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
A1:
the carrier' of it1 = {* ,non_op } \/ Constructors
and
A2:
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
A3:
the carrier' of it2 = {* ,non_op } \/ Constructors
and
A4:
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 };
set O = {* ,non_op } \/ Constructors ;
A5:
( the carrier of it1 = {a_Type ,an_Adj ,a_Term } & the carrier of it2 = {a_Type ,an_Adj ,a_Term } )
by CONSTRSIGN;
then A6:
the Arity of it1 = the Arity of it2
by A1, A3, A5, FUNCT_2:113;
hence
it1 = it2
by A6, A1, A3, A5, FUNCT_2:113; :: thesis: verum