
theorem Th32:
  for S1,S2,S being non void Circuit-like non empty
ManySortedSign st InnerVertices S1 misses InputVertices S2 & S = S1+*S2 for A1
  being non-empty Circuit of S1, A2 being non-empty Circuit of S2 for A being
non-empty Circuit of S st A1 tolerates A2 & A = A1+*A2 for s being State of A,
s1 being State of A1, s2 being State of A2 st s1 = s|the carrier of S1 & s2 = s
  |the carrier of S2 holds Following s = (Following s1)+*(Following s2)
proof
  let S1,S2,S be non void Circuit-like non empty ManySortedSign;
  assume that
A1: InnerVertices S1 misses InputVertices S2 and
A2: S = S1+*S2;
A3: the carrier of S = (the carrier of S1) \/ the carrier of S2 by A2,Def2;
  let A1 be non-empty Circuit of S1, A2 be non-empty Circuit of S2;
  let A be non-empty Circuit of S such that
A4: A1 tolerates A2 and
A5: A = A1+*A2;
  let s be State of A, s1 be State of A1, s2 be State of A2 such that
A6: s1 = s|the carrier of S1 and
A7: s2 = s|the carrier of S2;
A8: dom Following s2 = the carrier of S2 by CIRCUIT1:3;
A9: dom Following s1 = the carrier of S1 by CIRCUIT1:3;
A10: now
    let x be object;
    assume x in (dom Following s1) \/ dom Following s2;
    then reconsider v = x as Vertex of S by A2,A9,A8,Def2;
    hereby
      assume x in dom Following s2;
      then reconsider v2 = x as Vertex of S2 by CIRCUIT1:3;
A11:  now
        the ResultSort of S = (the ResultSort of S1)+*the ResultSort of
        S2 by A2,Def2;
        then
A12:    rng the ResultSort of S c= (rng the ResultSort of S1) \/ rng the
        ResultSort of S2 by FUNCT_4:17;
        assume
A13:    v2 in InputVertices S2;
        then
A14:    not v2 in rng the ResultSort of S2 by XBOOLE_0:def 5;
        not v2 in rng the ResultSort of S1 by A1,A13,XBOOLE_0:3;
        then not v in rng the ResultSort of S by A14,A12,XBOOLE_0:def 3;
        hence v in InputVertices S by XBOOLE_0:def 5;
      end;
      InputVertices S2 \/ InnerVertices S2 = the carrier of S2 by XBOOLE_1:45;
      then v2 in InnerVertices S2 or v2 in InputVertices S2 by XBOOLE_0:def 3;
      then v in InnerVertices S2 or v in the carrier of S2 & v in
      InputVertices S by A11;
      hence (Following s).x = (Following s2).x by A2,A4,A5,A7,Th31;
    end;
    assume
A15: not x in dom Following s2;
    then reconsider v1 = v as Vertex of S1 by A3,A8,XBOOLE_0:def 3;
    rng the ResultSort of S2 c= the carrier of S2 by RELAT_1:def 19;
    then
A16: not v1 in rng the ResultSort of S2 by A8,A15;
A17: now
      assume v1 in InputVertices S1;
      then
A18:  not v1 in rng the ResultSort of S1 by XBOOLE_0:def 5;
      the ResultSort of S = (the ResultSort of S1)+*the ResultSort of S2
      by A2,Def2;
      then rng the ResultSort of S c= (rng the ResultSort of S1) \/ rng the
      ResultSort of S2 by FUNCT_4:17;
      then not v in rng the ResultSort of S by A16,A18,XBOOLE_0:def 3;
      hence v in InputVertices S by XBOOLE_0:def 5;
    end;
    InputVertices S1 \/ InnerVertices S1 = the carrier of S1 by XBOOLE_1:45;
    then v1 in InnerVertices S1 or v1 in InputVertices S1 by XBOOLE_0:def 3;
    hence (Following s).x = (Following s1).x by A2,A4,A5,A6,A17,Th31;
  end;
  dom Following s = the carrier of S by CIRCUIT1:3;
  hence thesis by A3,A9,A8,A10,FUNCT_4:def 1;
end;
