
theorem Th3:
  for a,b being FinSequence, c being set
  st c = [<*>, (0-tuples_on BOOLEAN)-->FALSE] holds
  1-BitGFA0Str(a,b) = 1GateCircStr(<*>, (0-tuples_on BOOLEAN)-->FALSE) +*
  BitGFA0Str(a.1, b.1, c) &
  1-BitGFA0Circ(a,b) = 1GateCircuit(<*>, (0-tuples_on BOOLEAN)-->FALSE) +*
  BitGFA0Circ(a.1, b.1, c) &
  1-BitGFA0CarryOutput(a,b) = GFA0CarryOutput(a.1, b.1, c)
proof
  set f0 = 1GateCircStr(<*>,(0-tuples_on BOOLEAN)-->FALSE);
  set g0 = 1GateCircuit(<*>,(0-tuples_on BOOLEAN)-->FALSE);
  set h0 = [<*>, (0-tuples_on BOOLEAN)-->FALSE];
  let a,b being FinSequence, c be set such that
A1: c = h0;
  consider f,g,h being ManySortedSet of NAT such that
A2: 1-BitGFA0Str(a,b) = f.1 and
A3: 1-BitGFA0Circ(a,b) = g.1 and
A4: f.0 = f0 and
A5: g.0 = g0 and
A6: h.0 = c and
A7: for n being Nat, S being non empty ManySortedSign,
  A being non-empty MSAlgebra over S
  for z be set st S = f.n & A = g.n & z = h.n
  holds f.(n+1) = S +* BitGFA0Str(a.(n+1),b.(n+1), z) &
  g.(n+1) = A +* BitGFA0Circ(a.(n+1),b.(n+1), z) &
  h.(n+1) = GFA0CarryOutput(a.(n+1), b.(n+1), z) by A1,Def2;
  1-BitGFA0CarryOutput(a,b) = h.(0+1) by A1,A4,A5,A6,A7,Th1;
  hence thesis by A2,A3,A4,A5,A6,A7;
end;
