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:65;
A4: dom (* ,non_op --> t,a) = {* ,non_op } by FUNCT_4:65;
A5: dom f = Constructors by PARTFUN1:def 4;
A6: dom g = Constructors by PARTFUN1:def 4;
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 5;
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 5;
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:18;
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:4, XBOOLE_1:1;
rng (g +* (* ,non_op --> t,a)) c= (rng g) \/ (rng (* ,non_op --> t,a)) by FUNCT_4:18;
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:4, 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:14
.= <*an_Adj ,a_Type *> by FUNCT_4:66 ; :: 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:14
.= <*an_Adj *> by FUNCT_4:66 ; :: 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:14
.= a_Type by FUNCT_4:66 ; :: 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:14
.= an_Adj by FUNCT_4:66 ; :: 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 FINSEQ_1:def 18 ; :: thesis: verum