
theorem
  for x,y,z being set st z <> [<*x,y*>,xor2] & x <> [<*y,z*>,and2] & y
<> [<*z,x*>,and2] & z <> [<*x,y*>,and2] for s being State of BitGFA0Circ(x,y,z)
  holds Following(s,2) is stable
proof
  set f1 = and2, f2 = and2, f3 = and2;
  set f0 = xor2;
  let x,y,z be set such that
A1: z <> [<*x,y*>,f0] and
A2: x <> [<*y,z*>,f2] & y <> [<*z,x*>,f3] & z <> [<*x,y*>,f1];
  set A = BitGFA0Circ(x,y,z);
  let s be State of A;
  set S2 = GFA0CarryStr(x,y,z);
  set S1 = GFA0AdderStr(x,y,z);
  InputVertices S1 = {x,y,z} by A1,FACIRC_1:57;
  then
A3: InputVertices S1 = InputVertices S2 by A2,Th14;
  set A1 = GFA0AdderCirc(x,y,z);
  reconsider s1 = s|the carrier of S1 as State of A1 by FACIRC_1:26;
  Following(s1,2) is stable by A1,FACIRC_1:63;
  then
A4: Following(s1,2) = Following Following(s1,2)
    .= Following(s1,2+1) by FACIRC_1:12;
  set A2 = GFA0CarryCirc(x,y,z);
  reconsider s2 = s|the carrier of S2 as State of A2 by FACIRC_1:26;
  Following(s2,2) is stable by A2,Th23;
  then
A5: Following(s2,2) = Following Following(s2,2)
    .= Following(s2,2+1) by FACIRC_1:12;
  reconsider t = s as State of A1+*A2;
  set S = BitGFA0Str(x,y,z);
A6: dom Following(s,3) = the carrier of S by CIRCUIT1:3;
  InnerVertices S2 misses InputVertices S2 by XBOOLE_1:79;
  then
A7: Following(s1,2) = Following(t,2)|the carrier of S1 & Following(s1,3) =
  Following(t,3)|the carrier of S1 by A3,FACIRC_1:30;
  InnerVertices S1 misses InputVertices S1 by XBOOLE_1:79;
  then
A8: Following(s2,2) = Following(t,2)|the carrier of S2 & Following(s2,3) =
  Following(t,3)|the carrier of S2 by A3,FACIRC_1:31;
A9: the carrier of S = (the carrier of S1) \/ the carrier of S2 by
CIRCCOMB:def 2;
A10: dom Following(s1,2) = the carrier of S1 & dom Following(s2,2) = the
  carrier of S2 by CIRCUIT1:3;
A11: now
    let a be object;
    assume a in the carrier of S;
    then a in the carrier of S1 or a in the carrier of S2 by A9,XBOOLE_0:def 3;
    then (Following(s,2)).a = (Following(s1,2)).a & (Following(s,3)).a = (
Following(s1,3)).a or (Following(s,2)).a = (Following(s2,2)).a & (Following(s,3
    )).a = (Following(s2,3)).a by A7,A8,A4,A5,A10,FUNCT_1:47;
    hence (Following(s,2)).a = (Following Following(s,2)).a by A4,A5,
FACIRC_1:12;
  end;
  Following(s,2+1) = Following Following(s,2) & dom Following(s,2) = the
  carrier of S by CIRCUIT1:3,FACIRC_1:12;
  hence Following(s,2) = Following Following(s,2) by A6,A11,FUNCT_1:2;
end;
