reserve x,y,c for set;

theorem
  for s being State of BorrowICirc(x,y,c), a,b being Element of BOOLEAN
  st a = s.y & b = s.c holds (Following s).[<*y,c*>, and2] = a '&' b
proof
  set xy = <*x,y*>, yc = <*y,c*>, xc = <*x,c*>;
  set S1 = 1GateCircStr(xy, and2a), A1 = 1GateCircuit(x,y, and2a);
  set S2 = 1GateCircStr(yc, and2 ), A2 = 1GateCircuit(y,c, and2 );
  set S3 = 1GateCircStr(xc, and2a), A3 = 1GateCircuit(x,c, and2a);
  set S = BorrowIStr(x,y,c), A = BorrowICirc(x,y,c);
  set v2 = [yc, and2];
  let s be State of A;
  let a,b be Element of BOOLEAN such that
A1: a = s.y & b = s.c;
  reconsider yy = y, cc = c as Vertex of S2 by FACIRC_1:43;
  reconsider v2 as Element of InnerVertices S2 by FACIRC_1:47;
A2: S1+*S2 = S2+*S1 by FACIRC_1:23;
  then
A3: S = S2+*(S1+*S3) by CIRCCOMB:6;
  then reconsider v = v2 as Element of InnerVertices S by FACIRC_1:21;
  A1+*A2 = A2+*A1 by FACIRC_1:24;
  then
A4: A = A2+*(A1+*A3) by A2,FACIRC_1:25;
  then reconsider s2 = s|the carrier of S2 as State of A2 by FACIRC_1:26;
  reconsider yy, cc as Vertex of S by A3,FACIRC_1:20;
A5: dom s2 = the carrier of S2 by CIRCUIT1:3;
  thus (Following s).[yc, and2] = (Following s2).v by A3,A4,CIRCCOMB:64
    .= and2.<*s2.yy,s2.cc*> by FACIRC_1:50
    .= and2.<*s.yy,s2.cc*> by A5,FUNCT_1:47
    .= and2.<*s.yy,s.cc*> by A5,FUNCT_1:47
    .= a '&' b by A1,FACIRC_1:def 6;
end;
