
theorem Th30:
  for x,y,z being set st z <> [<*x,y*>, xor2] for s being State of
GFA0AdderCirc(x,y,z) for a1,a2,a3 being Element of BOOLEAN st a1 = s.x & a2 = s
  .y & a3 = s.z holds Following(s,2).GFA0AdderOutput(x,y,z) = a1 'xor' a2 'xor'
  a3 & Following(s,2).[<*x,y*>,xor2] = a1 'xor' a2 & Following(s,2).x = a1 &
  Following(s,2).y = a2 & Following(s,2).z = a3
proof
  set f = xor2;
  let x,y,z be set such that
A1: z <> [<*x,y*>,f];
  set xy = [<*x,y*>,f];
  set A = GFA0AdderCirc(x,y,z);
  let s be State of A;
  let a1,a2,a3 be Element of BOOLEAN such that
A2: a1 = s.x & a2 = s.y and
A3: a3 = s.z;
  thus (Following(s,2)).GFA0AdderOutput(x,y,z) = f.<* f.<*a1, a2*>, a3*> by A1
,A2,A3,FACIRC_1:62
    .= f.<*a1 'xor' a2, a3*> by FACIRC_1:def 4
    .= a1 'xor' a2 'xor' a3 by FACIRC_1:def 4;
  (Following(s,2)).xy = f.<*a1, a2*> by A1,A2,FACIRC_1:62;
  hence (Following(s,2)).xy = a1 'xor' a2 by FACIRC_1:def 4;
  thus thesis by A1,A2,A3,FACIRC_1:62;
end;
