defpred S1[ set , set ] means ex v being Vertex of IIG st
( v = $1 & ( $1 in InputVertices IIG implies $2 = (FreeGen v,the Sorts of A) --> (root-tree [(iv . v),v]) ) & ( $1 in SortsWithConstants IIG implies $2 = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) & ( $1 in (InnerVertices IIG) \ (SortsWithConstants IIG) implies $2 = id (FreeGen v,the Sorts of A) ) );
A1: now
let i be set ; :: thesis: ( i in the carrier of IIG implies ex j being set st S1[i,j] )
assume A2: i in the carrier of IIG ; :: thesis: ex j being set st S1[i,j]
then reconsider v = i as Vertex of IIG ;
A3: ((InnerVertices IIG) \ (SortsWithConstants IIG)) \/ (SortsWithConstants IIG) = InnerVertices IIG by MSAFREE2:5, XBOOLE_1:45;
v in (InputVertices IIG) \/ (InnerVertices IIG) by A2, XBOOLE_1:45;
then A4: ( v in InputVertices IIG or v in InnerVertices IIG ) by XBOOLE_0:def 3;
thus ex j being set st S1[i,j] :: thesis: verum
proof
per cases ( v in InputVertices IIG or v in SortsWithConstants IIG or v in (InnerVertices IIG) \ (SortsWithConstants IIG) ) by A3, A4, XBOOLE_0:def 3;
suppose A5: v in InputVertices IIG ; :: thesis: ex j being set st S1[i,j]
reconsider j = (FreeGen v,the Sorts of A) --> (root-tree [(iv . v),v]) as set ;
take j ; :: thesis: S1[i,j]
take v ; :: thesis: ( v = i & ( i in InputVertices IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(iv . v),v]) ) & ( i in SortsWithConstants IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) & ( i in (InnerVertices IIG) \ (SortsWithConstants IIG) implies j = id (FreeGen v,the Sorts of A) ) )
thus v = i ; :: thesis: ( ( i in InputVertices IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(iv . v),v]) ) & ( i in SortsWithConstants IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) & ( i in (InnerVertices IIG) \ (SortsWithConstants IIG) implies j = id (FreeGen v,the Sorts of A) ) )
thus ( i in InputVertices IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(iv . v),v]) ) ; :: thesis: ( ( i in SortsWithConstants IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) & ( i in (InnerVertices IIG) \ (SortsWithConstants IIG) implies j = id (FreeGen v,the Sorts of A) ) )
hereby :: thesis: ( i in (InnerVertices IIG) \ (SortsWithConstants IIG) implies j = id (FreeGen v,the Sorts of A) ) end;
assume A7: i in (InnerVertices IIG) \ (SortsWithConstants IIG) ; :: thesis: j = id (FreeGen v,the Sorts of A)
A8: (InnerVertices IIG) \ (SortsWithConstants IIG) c= InnerVertices IIG by XBOOLE_1:36;
InputVertices IIG misses InnerVertices IIG by XBOOLE_1:79;
hence j = id (FreeGen v,the Sorts of A) by A5, A7, A8, XBOOLE_0:3; :: thesis: verum
end;
suppose A9: v in SortsWithConstants IIG ; :: thesis: ex j being set st S1[i,j]
reconsider j = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) as set ;
take j ; :: thesis: S1[i,j]
take v ; :: thesis: ( v = i & ( i in InputVertices IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(iv . v),v]) ) & ( i in SortsWithConstants IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) & ( i in (InnerVertices IIG) \ (SortsWithConstants IIG) implies j = id (FreeGen v,the Sorts of A) ) )
thus v = i ; :: thesis: ( ( i in InputVertices IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(iv . v),v]) ) & ( i in SortsWithConstants IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) & ( i in (InnerVertices IIG) \ (SortsWithConstants IIG) implies j = id (FreeGen v,the Sorts of A) ) )
hereby :: thesis: ( ( i in SortsWithConstants IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) & ( i in (InnerVertices IIG) \ (SortsWithConstants IIG) implies j = id (FreeGen v,the Sorts of A) ) ) end;
thus ( i in SortsWithConstants IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) ; :: thesis: ( i in (InnerVertices IIG) \ (SortsWithConstants IIG) implies j = id (FreeGen v,the Sorts of A) )
assume A11: i in (InnerVertices IIG) \ (SortsWithConstants IIG) ; :: thesis: j = id (FreeGen v,the Sorts of A)
(InnerVertices IIG) \ (SortsWithConstants IIG) misses SortsWithConstants IIG by XBOOLE_1:79;
hence j = id (FreeGen v,the Sorts of A) by A9, A11, XBOOLE_0:3; :: thesis: verum
end;
suppose A12: v in (InnerVertices IIG) \ (SortsWithConstants IIG) ; :: thesis: ex j being set st S1[i,j]
reconsider j = id (FreeGen v,the Sorts of A) as set ;
take j ; :: thesis: S1[i,j]
take v ; :: thesis: ( v = i & ( i in InputVertices IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(iv . v),v]) ) & ( i in SortsWithConstants IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) & ( i in (InnerVertices IIG) \ (SortsWithConstants IIG) implies j = id (FreeGen v,the Sorts of A) ) )
thus v = i ; :: thesis: ( ( i in InputVertices IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(iv . v),v]) ) & ( i in SortsWithConstants IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) & ( i in (InnerVertices IIG) \ (SortsWithConstants IIG) implies j = id (FreeGen v,the Sorts of A) ) )
hereby :: thesis: ( ( i in SortsWithConstants IIG implies j = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) & ( i in (InnerVertices IIG) \ (SortsWithConstants IIG) implies j = id (FreeGen v,the Sorts of A) ) ) end;
hereby :: thesis: ( i in (InnerVertices IIG) \ (SortsWithConstants IIG) implies j = id (FreeGen v,the Sorts of A) ) end;
assume i in (InnerVertices IIG) \ (SortsWithConstants IIG) ; :: thesis: j = id (FreeGen v,the Sorts of A)
thus j = id (FreeGen v,the Sorts of A) ; :: thesis: verum
end;
end;
end;
end;
consider M being ManySortedSet of such that
A16: for i being set st i in the carrier of IIG holds
S1[i,M . i] from PBOOLE:sch 3(A1);
A17: now
let i be set ; :: thesis: ( i in the carrier of IIG implies M . b1 is Function of ((FreeGen the Sorts of A) . b1),(the Sorts of (FreeEnv A) . b1) )
assume A18: i in the carrier of IIG ; :: thesis: M . b1 is Function of ((FreeGen the Sorts of A) . b1),(the Sorts of (FreeEnv A) . b1)
then reconsider v = i as Vertex of IIG ;
A19: ((InnerVertices IIG) \ (SortsWithConstants IIG)) \/ (SortsWithConstants IIG) = InnerVertices IIG by MSAFREE2:5, XBOOLE_1:45;
v in (InputVertices IIG) \/ (InnerVertices IIG) by A18, XBOOLE_1:45;
then A20: ( v in InputVertices IIG or v in InnerVertices IIG ) by XBOOLE_0:def 3;
A21: FreeGen v,the Sorts of A = (FreeGen the Sorts of A) . v by MSAFREE:def 18;
A22: FreeEnv A = MSAlgebra(# (FreeSort the Sorts of A),(FreeOper the Sorts of A) #) by MSAFREE:def 16;
per cases ( v in InputVertices IIG or v in SortsWithConstants IIG or v in (InnerVertices IIG) \ (SortsWithConstants IIG) ) by A19, A20, XBOOLE_0:def 3;
suppose A23: v in InputVertices IIG ; :: thesis: M . b1 is Function of ((FreeGen the Sorts of A) . b1),(the Sorts of (FreeEnv A) . b1)
then iv . v in the Sorts of A . v by MSAFREE2:def 5;
then A24: root-tree [(iv . v),v] in FreeGen v,the Sorts of A by MSAFREE:def 17;
S1[v,M . v] by A16;
hence M . i is Function of ((FreeGen the Sorts of A) . i),(the Sorts of (FreeEnv A) . i) by A21, A22, A23, A24, FUNCOP_1:57; :: thesis: verum
end;
suppose A25: v in SortsWithConstants IIG ; :: thesis: M . b1 is Function of ((FreeGen the Sorts of A) . b1),(the Sorts of (FreeEnv A) . b1)
then v in { s where s is SortSymbol of IIG : s is with_const_op } by MSAFREE2:def 1;
then consider s being SortSymbol of IIG such that
A26: v = s and
A27: s is with_const_op ;
consider o being OperSymbol of IIG such that
A28: the Arity of IIG . o = {} and
A29: the ResultSort of IIG . o = v by A26, A27, MSUALG_2:def 2;
set e = root-tree [(action_at v),the carrier of IIG];
A30: SortsWithConstants IIG c= InnerVertices IIG by MSAFREE2:5;
the_result_sort_of o = v by A29, MSUALG_1:def 7;
then A31: o = action_at v by A25, A30, MSAFREE2:def 7;
A32: root-tree [(action_at v),the carrier of IIG] = [(action_at v),the carrier of IIG] -tree {} by TREES_4:20;
A33: {} = <*> (IIG -Terms the Sorts of A) ;
set p = <*> (TS (DTConMSA the Sorts of A));
reconsider sy = Sym (action_at v),the Sorts of A as NonTerminal of (DTConMSA the Sorts of A) ;
A34: <*> (TS (DTConMSA the Sorts of A)) = the_arity_of o by A28, MSUALG_1:def 6;
for n being Nat st n in dom (<*> (TS (DTConMSA the Sorts of A))) holds
(<*> (TS (DTConMSA the Sorts of A))) . n in FreeSort the Sorts of A,((the_arity_of o) /. n) ;
then <*> (TS (DTConMSA the Sorts of A)) in (((FreeSort the Sorts of A) # ) * the Arity of IIG) . o by A34, MSAFREE:9;
then sy ==> roots (<*> (TS (DTConMSA the Sorts of A))) by A31, MSAFREE:10;
then <*> (TS (DTConMSA the Sorts of A)) is SubtreeSeq of Sym (action_at v),the Sorts of A by DTCONSTR:def 9;
then {} is ArgumentSeq of sy by A33, MSATERM:def 2;
then root-tree [(action_at v),the carrier of IIG] in IIG -Terms the Sorts of A by A32, MSATERM:1;
then reconsider e = root-tree [(action_at v),the carrier of IIG] as Element of TS (DTConMSA the Sorts of A) by MSATERM:def 1;
A35: e . {} = [(action_at v),the carrier of IIG] by TREES_4:3;
the_result_sort_of (action_at v) = v by A25, A30, MSAFREE2:def 7;
then e in { a where a is Element of TS (DTConMSA the Sorts of A) : ( ex x being set st
( x in the Sorts of A . v & a = root-tree [x,v] ) or ex o being OperSymbol of IIG st
( [o,the carrier of IIG] = a . {} & the_result_sort_of o = v ) )
}
by A35;
then e in FreeSort the Sorts of A,v by MSAFREE:def 12;
then A36: e in the Sorts of (FreeEnv A) . v by A22, MSAFREE:def 13;
S1[v,M . v] by A16;
hence M . i is Function of ((FreeGen the Sorts of A) . i),(the Sorts of (FreeEnv A) . i) by A21, A25, A36, FUNCOP_1:57; :: thesis: verum
end;
suppose A37: v in (InnerVertices IIG) \ (SortsWithConstants IIG) ; :: thesis: M . b1 is Function of ((FreeGen the Sorts of A) . b1),(the Sorts of (FreeEnv A) . b1)
A38: ( dom (id (FreeGen v,the Sorts of A)) = FreeGen v,the Sorts of A & rng (id (FreeGen v,the Sorts of A)) = FreeGen v,the Sorts of A ) by RELAT_1:71;
S1[v,M . v] by A16;
hence M . i is Function of ((FreeGen the Sorts of A) . i),(the Sorts of (FreeEnv A) . i) by A21, A22, A37, A38, FUNCT_2:def 1, RELSET_1:11; :: thesis: verum
end;
end;
end;
now
let i be set ; :: thesis: ( i in dom M implies M . i is Function )
assume i in dom M ; :: thesis: M . i is Function
then i in the carrier of IIG by PARTFUN1:def 4;
hence M . i is Function by A17; :: thesis: verum
end;
then reconsider M = M as ManySortedFunction of by FUNCOP_1:def 6;
reconsider M = M as ManySortedFunction of FreeGen the Sorts of A,the Sorts of (FreeEnv A) by A17, PBOOLE:def 18;
take M ; :: thesis: for v being Vertex of IIG holds
( ( v in InputVertices IIG implies M . v = (FreeGen v,the Sorts of A) --> (root-tree [(iv . v),v]) ) & ( v in SortsWithConstants IIG implies M . v = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) & ( v in (InnerVertices IIG) \ (SortsWithConstants IIG) implies M . v = id (FreeGen v,the Sorts of A) ) )

let v be Vertex of IIG; :: thesis: ( ( v in InputVertices IIG implies M . v = (FreeGen v,the Sorts of A) --> (root-tree [(iv . v),v]) ) & ( v in SortsWithConstants IIG implies M . v = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) & ( v in (InnerVertices IIG) \ (SortsWithConstants IIG) implies M . v = id (FreeGen v,the Sorts of A) ) )
hereby :: thesis: ( ( v in SortsWithConstants IIG implies M . v = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) ) & ( v in (InnerVertices IIG) \ (SortsWithConstants IIG) implies M . v = id (FreeGen v,the Sorts of A) ) )
assume A39: v in InputVertices IIG ; :: thesis: M . v = (FreeGen v,the Sorts of A) --> (root-tree [(iv . v),v])
S1[v,M . v] by A16;
hence M . v = (FreeGen v,the Sorts of A) --> (root-tree [(iv . v),v]) by A39; :: thesis: verum
end;
hereby :: thesis: ( v in (InnerVertices IIG) \ (SortsWithConstants IIG) implies M . v = id (FreeGen v,the Sorts of A) )
assume A40: v in SortsWithConstants IIG ; :: thesis: M . v = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG])
S1[v,M . v] by A16;
hence M . v = (FreeGen v,the Sorts of A) --> (root-tree [(action_at v),the carrier of IIG]) by A40; :: thesis: verum
end;
assume A41: v in (InnerVertices IIG) \ (SortsWithConstants IIG) ; :: thesis: M . v = id (FreeGen v,the Sorts of A)
S1[v,M . v] by A16;
hence M . v = id (FreeGen v,the Sorts of A) by A41; :: thesis: verum