
theorem Th31:
  for am,bm,cm,dm,cin being set holds InnerVertices BitFTA3Str(am,
  bm,cm,dm,cin) = {[<*am,bm*>,xor2], GFA3AdderOutput(am,bm,cm)} \/ {[<*am,bm*>,
nor2], [<*bm,cm*>,nor2], [<*cm,am*>,nor2], GFA3CarryOutput(am,bm,cm)} \/ {[
<*GFA3AdderOutput(am,bm,cm),cin*>,xor2], GFA3AdderOutput(GFA3AdderOutput(am,bm,
cm),cin,dm)} \/ {[<*GFA3AdderOutput(am,bm,cm),cin*>,nor2], [<*cin,dm*>,nor2],
[<*dm,GFA3AdderOutput(am,bm,cm)*>,nor2], GFA3CarryOutput(GFA3AdderOutput(am,bm
  ,cm),cin,dm)}
proof
  let am,bm,cm,dm,cin be set;
  set S = BitFTA3Str(am,bm,cm,dm,cin);
  set S1 = BitGFA3Str(am,bm,cm);
  set A1 = GFA3AdderOutput(am,bm,cm);
  set C1 = GFA3CarryOutput(am,bm,cm);
  set S2 = BitGFA3Str(A1,cin,dm);
  set A2 = GFA3AdderOutput(A1,cin,dm);
  set C2 = GFA3CarryOutput(A1,cin,dm);
  set ambm0 = [<*am,bm*>, xor2 ];
  set ambm = [<*am,bm*>, nor2];
  set bmcm = [<*bm,cm*>, nor2];
  set cmam = [<*cm,am*>, nor2];
  set A1cin0 = [<*A1,cin*>,xor2 ];
  set A1cin = [<*A1,cin*>,nor2];
  set cindm = [<*cin,dm*>,nor2];
  set dmA1 = [<*dm,A1*>, nor2];
  S1 tolerates S2 by CIRCCOMB:47;
  hence InnerVertices S = (InnerVertices S1) \/ (InnerVertices S2) by
CIRCCOMB:11
    .= ({ambm0} \/ {A1} \/ {ambm,bmcm,cmam} \/ {C1}) \/ (InnerVertices S2)
  by GFACIRC1:127
    .= ({ambm0,A1} \/ {ambm,bmcm,cmam} \/ {C1}) \/ (InnerVertices S2) by
ENUMSET1:1
    .= ({ambm0,A1} \/ ({ambm,bmcm,cmam} \/ {C1})) \/ (InnerVertices S2) by
XBOOLE_1:4
    .= ({ambm0,A1} \/ {ambm,bmcm,cmam,C1}) \/ (InnerVertices S2) by ENUMSET1:6
    .= ({ambm0,A1} \/ {ambm,bmcm,cmam,C1}) \/ ({A1cin0} \/ {A2} \/ {A1cin,
  cindm,dmA1} \/ {C2}) by GFACIRC1:127
    .= ({ambm0,A1} \/ {ambm,bmcm,cmam,C1}) \/ ({A1cin0,A2} \/ {A1cin,cindm,
  dmA1} \/ {C2}) by ENUMSET1:1
    .= ({ambm0,A1} \/ {ambm,bmcm,cmam,C1}) \/ ({A1cin0,A2} \/ ({A1cin,cindm,
  dmA1} \/ {C2})) by XBOOLE_1:4
    .= ({ambm0,A1} \/ {ambm,bmcm,cmam,C1}) \/ ({A1cin0,A2} \/ {A1cin,cindm,
  dmA1,C2}) by ENUMSET1:6
    .= {ambm0,A1} \/ {ambm,bmcm,cmam,C1} \/ {A1cin0,A2} \/ {A1cin,cindm,dmA1
  ,C2} by XBOOLE_1:4;
end;
