
theorem Th1:
  for ap,bp,cp,dp,cin being set holds InnerVertices BitFTA0Str(ap,
  bp,cp,dp,cin) = {[<*ap,bp*>,xor2], GFA0AdderOutput(ap,bp,cp)} \/ {[<*ap,bp*>,
  and2], [<*bp,cp*>,and2], [<*cp,ap*>,and2], GFA0CarryOutput(ap,bp,cp)} \/ {[<*
GFA0AdderOutput(ap,bp,cp),cin*>,xor2], GFA0AdderOutput(GFA0AdderOutput(ap,bp,cp
),cin,dp)} \/ {[<*GFA0AdderOutput(ap,bp,cp),cin*>,and2], [<*cin,dp*>,and2], [<*
dp,GFA0AdderOutput(ap,bp,cp)*>,and2], GFA0CarryOutput(GFA0AdderOutput(ap,bp,cp)
  ,cin,dp)}
proof
  let ap,bp,cp,dp,cin be set;
  set S = BitFTA0Str(ap,bp,cp,dp,cin);
  set S1 = BitGFA0Str(ap,bp,cp);
  set A1 = GFA0AdderOutput(ap,bp,cp);
  set C1 = GFA0CarryOutput(ap,bp,cp);
  set S2 = BitGFA0Str(A1,cin,dp);
  set A2 = GFA0AdderOutput(A1,cin,dp);
  set C2 = GFA0CarryOutput(A1,cin,dp);
  set apbp0 = [<*ap,bp*>, xor2];
  set apbp = [<*ap,bp*>, and2];
  set bpcp = [<*bp,cp*>, and2];
  set cpap = [<*cp,ap*>, and2];
  set A1cin0 = [<*A1,cin*>,xor2];
  set A1cin = [<*A1,cin*>,and2];
  set cindp = [<*cin,dp*>,and2];
  set dpA1 = [<*dp,A1*>, and2];
  S1 tolerates S2 by CIRCCOMB:47;
  hence InnerVertices S = (InnerVertices S1) \/ (InnerVertices S2) by
CIRCCOMB:11
    .= ({apbp0} \/ {A1} \/ {apbp,bpcp,cpap} \/ {C1}) \/ (InnerVertices S2)
  by GFACIRC1:31
    .= ({apbp0,A1} \/ {apbp,bpcp,cpap} \/ {C1}) \/ (InnerVertices S2) by
ENUMSET1:1
    .= ({apbp0,A1} \/ ({apbp,bpcp,cpap} \/ {C1})) \/ (InnerVertices S2) by
XBOOLE_1:4
    .= ({apbp0,A1} \/ {apbp,bpcp,cpap,C1}) \/ (InnerVertices S2) by ENUMSET1:6
    .= ({apbp0,A1} \/ {apbp,bpcp,cpap,C1}) \/ ({A1cin0} \/ {A2} \/ {A1cin,
  cindp,dpA1} \/ {C2}) by GFACIRC1:31
    .= ({apbp0,A1} \/ {apbp,bpcp,cpap,C1}) \/ ({A1cin0,A2} \/ {A1cin,cindp,
  dpA1} \/ {C2}) by ENUMSET1:1
    .= ({apbp0,A1} \/ {apbp,bpcp,cpap,C1}) \/ ({A1cin0,A2} \/ ({A1cin,cindp,
  dpA1} \/ {C2})) by XBOOLE_1:4
    .= ({apbp0,A1} \/ {apbp,bpcp,cpap,C1}) \/ ({A1cin0,A2} \/ {A1cin,cindp,
  dpA1,C2}) by ENUMSET1:6
    .= {apbp0,A1} \/ {apbp,bpcp,cpap,C1} \/ {A1cin0,A2} \/ {A1cin,cindp,dpA1
  ,C2} by XBOOLE_1:4;
end;
