reserve x,y,z,c for object,
  f for Function of 2-tuples_on BOOLEAN, BOOLEAN;
reserve s for State of 2GatesCircuit(x,y,c,f);

theorem Th63:
  c <> [<*x,y*>, f] implies Following(s,2) is stable
proof
  set S = 2GatesCircStr(x,y,c,f);
  assume
A1: c <> [<*x,y*>, f];
  now
    thus dom Following Following(s,2) = the carrier of S & dom Following(s,2)
    = the carrier of S by CIRCUIT1:3;
    let a be object;
A2: InputVertices S \/ InnerVertices S = the carrier of S by XBOOLE_1:45;
    assume a in the carrier of S;
    then reconsider v = a as Vertex of S;
A3: InnerVertices S = {[<*x,y*>, f], 2GatesCircOutput(x,y,c,f)} by Th56;
A4: (Following(s,2)).c = s.c by A1,Th62;
A5: (Following(s,2)).x = s.x & (Following(s,2)).y = s.y by A1,Th62;
A6: (Following(s,2)).[<*x,y*>,f] = f.<*s.x, s.y*> & (Following(s,2)).
    2GatesCircOutput(x,y,c,f) = f.<*f.<*s.x, s.y*>, s.c*> by A1,Th62;
A7: InputVertices S = {x,y,c} by A1,Th57;
    per cases by A2,XBOOLE_0:def 3;
    suppose
      v in InputVertices S;
      then v = x or v = y or v = c by A7,ENUMSET1:def 1;
      hence (Following Following(s,2)).a = (Following(s,2)).a by A1,Lm1;
    end;
    suppose
      v in InnerVertices S;
      then v = [<*x,y*>, f] or v = 2GatesCircOutput(x,y,c,f) by A3,TARSKI:def 2
;
      hence (Following Following(s,2)).a = (Following(s,2)).a by A1,A6,A5,A4
,Lm1;
    end;
  end;
  hence Following(s,2) = Following Following(s,2) by FUNCT_1:2;
end;
