
theorem Th19:
  for x,y,c being set holds InnerVertices MajorityStr(x,y,c) =
  {[<*x,y*>,'&'], [<*y,c*>,'&'], [<*c,x*>,'&']} \/ {MajorityOutput(x,y,c)}
proof
  let x,y,c be set;
  set xy = [<*x,y*>, '&'], yc = [<*y,c*>, '&'], cx = [<*c,x*>, '&'];
  set Cxy = 1GateCircStr(<*x,y*>, '&'), Cyc = 1GateCircStr(<*y,c*>, '&'),
  Ccx = 1GateCircStr(<*c,x*>, '&'), Cxyc = 1GateCircStr
  (<*[<*x,y*>, '&'], [<*y,c*>, '&'], [<*c,x*>, '&']*>, or3);
A1: Cxy tolerates (Cyc +* Ccx +* Cxyc) by CIRCCOMB:47;
A2: Cyc tolerates (Ccx +* Cxyc) by CIRCCOMB:47;
A3: Ccx tolerates Cxyc by CIRCCOMB:47;
A4: InnerVertices (Cyc +* (Ccx +* Cxyc)) =
  InnerVertices Cyc \/ InnerVertices (Ccx +* Cxyc) by A2,CIRCCOMB:11;
A5: InnerVertices (Ccx +* Cxyc) =
  InnerVertices Ccx \/ InnerVertices Cxyc by A3,CIRCCOMB:11;
  thus
  InnerVertices MajorityStr(x,y,c) =
  InnerVertices (Cxy +* (Cyc +* Ccx) +* Cxyc) by CIRCCOMB:6
    .= InnerVertices (Cxy +* (Cyc +* Ccx +* Cxyc)) by CIRCCOMB:6
    .= InnerVertices Cxy \/ InnerVertices (Cyc +* Ccx +* Cxyc)
  by A1,CIRCCOMB:11
    .= InnerVertices Cxy \/ InnerVertices (Cyc +* (Ccx +* Cxyc))
  by CIRCCOMB:6
    .= InnerVertices Cxy \/ InnerVertices Cyc \/
  (InnerVertices Ccx \/ InnerVertices Cxyc) by A4,A5,XBOOLE_1:4
    .= InnerVertices Cxy \/ InnerVertices Cyc \/
  InnerVertices Ccx \/ InnerVertices Cxyc by XBOOLE_1:4
    .= {xy} \/ InnerVertices Cyc \/
  InnerVertices Ccx \/ InnerVertices Cxyc by CIRCCOMB:42
    .= {xy} \/ {yc} \/ InnerVertices Ccx \/ InnerVertices Cxyc by CIRCCOMB:42
    .= {xy} \/ {yc} \/ {cx} \/ InnerVertices Cxyc by CIRCCOMB:42
    .= {xy, yc} \/ {cx} \/ InnerVertices Cxyc by ENUMSET1:1
    .= {xy, yc, cx} \/ InnerVertices Cxyc by ENUMSET1:3
    .= {xy, yc, cx} \/ {MajorityOutput(x,y,c)} by CIRCCOMB:42;
end;
