
theorem ::3WTMCLA:
  for x0,x1,x2,y0,y1,y2,z0,z1,z2,z3,z4,z5, q00,q01,q02,q03,c01,c02,c03
  being set holds (q00 is not empty iff AND2(x0,y0) is not empty)& (q01 is not
empty iff XOR3(AND2(x1,y0),AND2(x0,y1),{}) is not empty)& (c01 is not empty iff
MAJ3(AND2(x1,y0),AND2(x0,y1),{}) is not empty)& (q02 is not empty iff XOR3(AND2
(x2,y0),AND2(x1,y1),AND2(x0,y2)) is not empty)& (c02 is not empty iff MAJ3(AND2
(x2,y0),AND2(x1,y1),AND2(x0,y2)) is not empty)& (q03 is not empty iff XOR3(AND2
(x2,y1),AND2(x1,y2),{}) is not empty)& (c03 is not empty iff MAJ3(AND2(x2,y1),
  AND2(x1,y2),{}) is not empty)& (z0 is not empty iff q00 is not empty)& (z1 is
  not empty iff q01 is not empty)& (z2 is not empty iff CLAADD1( q02,c01,{}) is
not empty)& (z3 is not empty iff CLAADD2( q03,c02,q02,c01,{}) is not empty)& (
z4 is not empty iff CLAADD3(AND2(x2,y2),c03,q03,c02,q02,c01,{}) is not empty)&
(z5 is not empty iff CLACARR3(AND2(x2,y2),c03,q03,c02,q02,c01,{}) is not empty)
implies (z0 is not empty iff MULT310(x2, x1,y1,x0,y0) is not empty)& (z1 is not
empty iff MULT311(x2, x1,y1,x0,y0) is not empty)& (z2 is not empty iff MULT321(
x2,y2,x1,y1,x0,y0) is not empty)& (z3 is not empty iff MULT322(x2,y2,x1,y1,x0,
y0) is not empty)& (z4 is not empty iff MULT323(x2,y2,x1,y1,x0,y0) is not empty
  )& (z5 is not empty iff MULT324(x2,y2,x1,y1,x0,y0) is not empty)
proof
  let x0,x1,x2,y0,y1,y2,z0,z1,z2,z3,z4,z5, q00,q01,q02,q03,c01,c02,c03 be set;
  assume that
A1: q00 is not empty iff AND2(x0,y0) is not empty and
A2: q01 is not empty iff XOR3(AND2(x1,y0),AND2(x0,y1),{}) is not empty and
A3: c01 is not empty iff MAJ3(AND2(x1,y0),AND2(x0,y1),{}) is not empty and
A4: q02 is not empty iff XOR3(AND2(x2,y0),AND2(x1,y1),AND2(x0,y2)) is
  not empty and
A5: c02 is not empty iff MAJ3(AND2(x2,y0),AND2(x1,y1),AND2(x0,y2)) is
  not empty and
A6: q03 is not empty iff XOR3(AND2(x2,y1),AND2(x1,y2),{}) is not empty and
A7: c03 is not empty iff MAJ3(AND2(x2,y1),AND2(x1,y2),{}) is not empty and
A8: z0 is not empty iff q00 is not empty and
A9: z1 is not empty iff q01 is not empty and
A10: z2 is not empty iff CLAADD1( q02,c01,{}) is not empty and
A11: z3 is not empty iff CLAADD2( q03,c02,q02,c01,{}) is not empty and
A12: z4 is not empty iff CLAADD3(AND2(x2,y2),c03,q03,c02,q02,c01,{}) is
  not empty and
A13: z5 is not empty iff CLACARR3(AND2(x2,y2),c03,q03,c02,q02,c01,{}) is
  not empty;
  set x0y2 = AND2(x0,y2);
  set x1y1 = AND2(x1,y1);
  set x2y0 = AND2(x2,y0);
  thus z0 is not empty iff MULT310(x2,x1,y1,x0,y0) is not empty by A1,A8;
  thus z1 is not empty iff MULT311(x2,x1,y1,x0,y0) is not empty by A2,A9;
  set m312 = MULT312(x2,x1,y1,x0,y0);
  set x0y1 = AND2(x0,y1);
  set x1y0 = AND2(x1,y0);
A14: m312 = XOR3(x2y0,x1y1,MAJ3(x1y0,x0y1,{})) by GATE_1:def 35;
  then
A15: m312 is not empty iff ( x2y0 is not empty & not x1y1 is not empty or
not x2y0 is not empty & x1y1 is not empty ) & not (x1y0 is not empty & x0y1 is
  not empty) or not ( x2y0 is not empty & not x1y1 is not empty or not x2y0 is
  not empty & x1y1 is not empty ) & x1y0 is not empty & x0y1 is not empty;
  set x1y2 = AND2(x1,y2);
  set x2y1 = AND2(x2,y1);
A16: q03 is not empty iff x2y1 is not empty & not x1y2 is not empty or not
  x2y1 is not empty & x1y2 is not empty by A6;
  set m324 = MULT324(x2,y2,x1,y1,x0,y0);
  set m323 = MULT323(x2,y2,x1,y1,x0,y0);
  set m314 = MULT314(x2,x1,y1,x0,y0);
  set x2y2 = AND2(x2,y2);
A17: m314 = MAJ3({},x2y1,CARR2(x2y0,x1y1,x1y0,x0y1,{})) by GATE_1:def 38
    .= MAJ3({},x2y1,MAJ3(x2y0,x1y1,MAJ3(x1y0,x0y1,{}))) by GATE_1:def 36;
  set m322 = MULT322(x2,y2,x1,y1,x0,y0);
  set m313 = MULT313(x2,x1,y1,x0,y0);
A18: m313 = XOR3({},x2y1,CARR2(x2y0,x1y1,x1y0,x0y1,{})) by GATE_1:def 37
    .= XOR3({},x2y1,MAJ3(x2y0,x1y1,MAJ3(x1y0,x0y1,{}))) by GATE_1:def 36;
  q02 is not empty iff ( x2y0 is not empty & not x1y1 is not empty or not
  x2y0 is not empty & x1y1 is not empty ) & not x0y2 is not empty or not ( x2y0
  is not empty & not x1y1 is not empty or not x2y0 is not empty & x1y1 is not
  empty ) & x0y2 is not empty by A4;
  hence z2 is not empty iff MULT321(x2,y2,x1,y1,x0,y0) is not empty by A3,A10
,A14;
A19: c02 is not empty iff x2y0 is not empty & x1y1 is not empty or x1y1 is
  not empty & x0y2 is not empty or x0y2 is not empty & x2y0 is not empty by A5;
  m322 = XOR3(m313,x1y2,MAJ3(m312,x0y2,{})) by GATE_1:def 35;
  then m322 is not empty iff ( m313 is not empty & not x1y2 is not empty or
not m313 is not empty & x1y2 is not empty ) & not (m312 is not empty & x0y2 is
  not empty) or not ( m313 is not empty & not x1y2 is not empty or not m313 is
  not empty & x1y2 is not empty ) & m312 is not empty & x0y2 is not empty;
  hence z3 is not empty iff MULT322(x2,y2,x1,y1,x0,y0) is not empty by A3,A4
,A11,A19,A16,A15,A18;
  m323 = XOR3(m314,x2y2,CARR2(m313,x1y2,m312,x0y2,{})) by GATE_1:def 37
    .= XOR3(m314,x2y2,MAJ3(m313,x1y2,MAJ3(m312,x0y2,{}))) by GATE_1:def 36;
  then m323 is not empty iff ( m314 is not empty & not x2y2 is not empty or
not m314 is not empty & x2y2 is not empty ) & not ( m313 is not empty & x1y2 is
not empty or x1y2 is not empty & m312 is not empty & x0y2 is not empty or m312
  is not empty & x0y2 is not empty & m313 is not empty ) or not ( m314 is not
empty & not x2y2 is not empty or not m314 is not empty & x2y2 is not empty ) &
  ( m313 is not empty & x1y2 is not empty or x1y2 is not empty & m312 is not
  empty & x0y2 is not empty or m312 is not empty & x0y2 is not empty & m313 is
  not empty );
  hence
  z4 is not empty iff MULT323(x2,y2,x1,y1,x0,y0) is not empty by A3,A4,A7,A12
,A19,A16,A15,A18,A17;
  m324 = MAJ3(m314,x2y2,CARR2(m313,x1y2,m312,x0y2,{})) by GATE_1:def 38
    .= MAJ3(m314,x2y2,MAJ3(m313,x1y2,MAJ3(m312,x0y2,{}))) by GATE_1:def 36;
  then m324 is not empty iff m314 is not empty & x2y2 is not empty or x2y2 is
not empty & ( m313 is not empty & x1y2 is not empty or x1y2 is not empty & m312
  is not empty & x0y2 is not empty or m312 is not empty & x0y2 is not empty &
  m313 is not empty ) or ( m313 is not empty & x1y2 is not empty or x1y2 is not
  empty & m312 is not empty & x0y2 is not empty or m312 is not empty & x0y2 is
  not empty & m313 is not empty ) & m314 is not empty;
  hence thesis by A3,A4,A7,A13,A19,A16,A15,A18,A17;
end;
