Article GATE_5, MML version 4.99.1005

:: GATE_5:funcnot 1 => GATE_5:func 1
definition
  let a1, a2, a3, a4 be set;
  func MULT210(A2,A4,A1,A3) -> set equals
    AND2(a1,a3);
end;

:: GATE_5:def 1
theorem
for b1, b2, b3, b4 being set holds
MULT210(b2,b4,b1,b3) = AND2(b1,b3);

:: GATE_5:funcnot 2 => GATE_5:func 2
definition
  let a1, a2, a3, a4 be set;
  func MULT211(A2,A4,A1,A3) -> set equals
    XOR3(AND2(a2,a3),AND2(a1,a4),{});
end;

:: GATE_5:def 2
theorem
for b1, b2, b3, b4 being set holds
MULT211(b2,b4,b1,b3) = XOR3(AND2(b2,b3),AND2(b1,b4),{});

:: GATE_5:funcnot 3 => GATE_5:func 3
definition
  let a1, a2, a3, a4 be set;
  func MULT212(A2,A4,A1,A3) -> set equals
    ADD2({},AND2(a2,a4),AND2(a2,a3),AND2(a1,a4),{});
end;

:: GATE_5:def 3
theorem
for b1, b2, b3, b4 being set holds
MULT212(b2,b4,b1,b3) = ADD2({},AND2(b2,b4),AND2(b2,b3),AND2(b1,b4),{});

:: GATE_5:funcnot 4 => GATE_5:func 4
definition
  let a1, a2, a3, a4 be set;
  func MULT213(A2,A4,A1,A3) -> set equals
    CARR2({},AND2(a2,a4),AND2(a2,a3),AND2(a1,a4),{});
end;

:: GATE_5:def 4
theorem
for b1, b2, b3, b4 being set holds
MULT213(b2,b4,b1,b3) = CARR2({},AND2(b2,b4),AND2(b2,b3),AND2(b1,b4),{});

:: GATE_5:th 1
theorem
for b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13 being set
      st (b9 is not empty implies AND2(b1,b3) is not empty) &
         (AND2(b1,b3) is not empty implies b9 is not empty) &
         (b10 is not empty implies XOR3(AND2(b2,b3),AND2(b1,b4),{}) is not empty) &
         (XOR3(AND2(b2,b3),AND2(b1,b4),{}) is not empty implies b10 is not empty) &
         (b11 is not empty implies MAJ3(AND2(b2,b3),AND2(b1,b4),{}) is not empty) &
         (MAJ3(AND2(b2,b3),AND2(b1,b4),{}) is not empty implies b11 is not empty) &
         (b12 is not empty implies XOR3(AND2(b2,b4),{},b11) is not empty) &
         (XOR3(AND2(b2,b4),{},b11) is not empty implies b12 is not empty) &
         (b13 is not empty implies MAJ3(AND2(b2,b4),{},b11) is not empty) &
         (MAJ3(AND2(b2,b4),{},b11) is not empty implies b13 is not empty) &
         (b5 is not empty implies b9 is not empty) &
         (b9 is not empty implies b5 is not empty) &
         (b6 is not empty implies b10 is not empty) &
         (b10 is not empty implies b6 is not empty) &
         (b7 is not empty implies b12 is not empty) &
         (b12 is not empty implies b7 is not empty) &
         (b8 is not empty implies b13 is not empty) &
         (b13 is not empty implies b8 is not empty)
   holds (b5 is not empty implies MULT210(b2,b4,b1,b3) is not empty) & (MULT210(b2,b4,b1,b3) is not empty implies b5 is not empty) & (b6 is not empty implies MULT211(b2,b4,b1,b3) is not empty) & (MULT211(b2,b4,b1,b3) is not empty implies b6 is not empty) & (b7 is not empty implies MULT212(b2,b4,b1,b3) is not empty) & (MULT212(b2,b4,b1,b3) is not empty implies b7 is not empty) & (b8 is not empty implies MULT213(b2,b4,b1,b3) is not empty) & (MULT213(b2,b4,b1,b3) is not empty implies b8 is not empty);

:: GATE_5:funcnot 5 => GATE_5:func 5
definition
  let a1, a2, a3, a4, a5 be set;
  func MULT310(A3,A2,A5,A1,A4) -> set equals
    AND2(a1,a4);
end;

:: GATE_5:def 5
theorem
for b1, b2, b3, b4, b5 being set holds
MULT310(b3,b2,b5,b1,b4) = AND2(b1,b4);

:: GATE_5:funcnot 6 => GATE_5:func 6
definition
  let a1, a2, a3, a4, a5 be set;
  func MULT311(A3,A2,A5,A1,A4) -> set equals
    XOR3(AND2(a2,a4),AND2(a1,a5),{});
end;

:: GATE_5:def 6
theorem
for b1, b2, b3, b4, b5 being set holds
MULT311(b3,b2,b5,b1,b4) = XOR3(AND2(b2,b4),AND2(b1,b5),{});

:: GATE_5:funcnot 7 => GATE_5:func 7
definition
  let a1, a2, a3, a4, a5 be set;
  func MULT312(A3,A2,A5,A1,A4) -> set equals
    ADD2(AND2(a3,a4),AND2(a2,a5),AND2(a2,a4),AND2(a1,a5),{});
end;

:: GATE_5:def 7
theorem
for b1, b2, b3, b4, b5 being set holds
MULT312(b3,b2,b5,b1,b4) = ADD2(AND2(b3,b4),AND2(b2,b5),AND2(b2,b4),AND2(b1,b5),{});

:: GATE_5:funcnot 8 => GATE_5:func 8
definition
  let a1, a2, a3, a4, a5 be set;
  func MULT313(A3,A2,A5,A1,A4) -> set equals
    ADD3({},AND2(a3,a5),AND2(a3,a4),AND2(a2,a5),AND2(a2,a4),AND2(a1,a5),{});
end;

:: GATE_5:def 8
theorem
for b1, b2, b3, b4, b5 being set holds
MULT313(b3,b2,b5,b1,b4) = ADD3({},AND2(b3,b5),AND2(b3,b4),AND2(b2,b5),AND2(b2,b4),AND2(b1,b5),{});

:: GATE_5:funcnot 9 => GATE_5:func 9
definition
  let a1, a2, a3, a4, a5 be set;
  func MULT314(A3,A2,A5,A1,A4) -> set equals
    CARR3({},AND2(a3,a5),AND2(a3,a4),AND2(a2,a5),AND2(a2,a4),AND2(a1,a5),{});
end;

:: GATE_5:def 9
theorem
for b1, b2, b3, b4, b5 being set holds
MULT314(b3,b2,b5,b1,b4) = CARR3({},AND2(b3,b5),AND2(b3,b4),AND2(b2,b5),AND2(b2,b4),AND2(b1,b5),{});

:: GATE_5:funcnot 10 => GATE_5:func 10
definition
  let a1, a2, a3, a4, a5, a6 be set;
  func MULT321(A3,A6,A2,A5,A1,A4) -> set equals
    XOR3(MULT312(a3,a2,a5,a1,a4),AND2(a1,a6),{});
end;

:: GATE_5:def 10
theorem
for b1, b2, b3, b4, b5, b6 being set holds
MULT321(b3,b6,b2,b5,b1,b4) = XOR3(MULT312(b3,b2,b5,b1,b4),AND2(b1,b6),{});

:: GATE_5:funcnot 11 => GATE_5:func 11
definition
  let a1, a2, a3, a4, a5, a6 be set;
  func MULT322(A3,A6,A2,A5,A1,A4) -> set equals
    ADD2(MULT313(a3,a2,a5,a1,a4),AND2(a2,a6),MULT312(a3,a2,a5,a1,a4),AND2(a1,a6),{});
end;

:: GATE_5:def 11
theorem
for b1, b2, b3, b4, b5, b6 being set holds
MULT322(b3,b6,b2,b5,b1,b4) = ADD2(MULT313(b3,b2,b5,b1,b4),AND2(b2,b6),MULT312(b3,b2,b5,b1,b4),AND2(b1,b6),{});

:: GATE_5:funcnot 12 => GATE_5:func 12
definition
  let a1, a2, a3, a4, a5, a6 be set;
  func MULT323(A3,A6,A2,A5,A1,A4) -> set equals
    ADD3(MULT314(a3,a2,a5,a1,a4),AND2(a3,a6),MULT313(a3,a2,a5,a1,a4),AND2(a2,a6),MULT312(a3,a2,a5,a1,a4),AND2(a1,a6),{});
end;

:: GATE_5:def 12
theorem
for b1, b2, b3, b4, b5, b6 being set holds
MULT323(b3,b6,b2,b5,b1,b4) = ADD3(MULT314(b3,b2,b5,b1,b4),AND2(b3,b6),MULT313(b3,b2,b5,b1,b4),AND2(b2,b6),MULT312(b3,b2,b5,b1,b4),AND2(b1,b6),{});

:: GATE_5:funcnot 13 => GATE_5:func 13
definition
  let a1, a2, a3, a4, a5, a6 be set;
  func MULT324(A3,A6,A2,A5,A1,A4) -> set equals
    CARR3(MULT314(a3,a2,a5,a1,a4),AND2(a3,a6),MULT313(a3,a2,a5,a1,a4),AND2(a2,a6),MULT312(a3,a2,a5,a1,a4),AND2(a1,a6),{});
end;

:: GATE_5:def 13
theorem
for b1, b2, b3, b4, b5, b6 being set holds
MULT324(b3,b6,b2,b5,b1,b4) = CARR3(MULT314(b3,b2,b5,b1,b4),AND2(b3,b6),MULT313(b3,b2,b5,b1,b4),AND2(b2,b6),MULT312(b3,b2,b5,b1,b4),AND2(b1,b6),{});

:: GATE_5:th 2
theorem
for b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25 being set
      st (b13 is not empty implies AND2(b1,b4) is not empty) &
         (AND2(b1,b4) is not empty implies b13 is not empty) &
         (b14 is not empty implies XOR3(AND2(b2,b4),AND2(b1,b5),{}) is not empty) &
         (XOR3(AND2(b2,b4),AND2(b1,b5),{}) is not empty implies b14 is not empty) &
         (b16 is not empty implies MAJ3(AND2(b2,b4),AND2(b1,b5),{}) is not empty) &
         (MAJ3(AND2(b2,b4),AND2(b1,b5),{}) is not empty implies b16 is not empty) &
         (b15 is not empty implies XOR3(AND2(b3,b4),AND2(b2,b5),{}) is not empty) &
         (XOR3(AND2(b3,b4),AND2(b2,b5),{}) is not empty implies b15 is not empty) &
         (b17 is not empty implies MAJ3(AND2(b3,b4),AND2(b2,b5),{}) is not empty) &
         (MAJ3(AND2(b3,b4),AND2(b2,b5),{}) is not empty implies b17 is not empty) &
         (b18 is not empty implies XOR3(b15,AND2(b1,b6),b16) is not empty) &
         (XOR3(b15,AND2(b1,b6),b16) is not empty implies b18 is not empty) &
         (b20 is not empty implies MAJ3(b15,AND2(b1,b6),b16) is not empty) &
         (MAJ3(b15,AND2(b1,b6),b16) is not empty implies b20 is not empty) &
         (b19 is not empty implies XOR3(AND2(b3,b5),AND2(b2,b6),b17) is not empty) &
         (XOR3(AND2(b3,b5),AND2(b2,b6),b17) is not empty implies b19 is not empty) &
         (b21 is not empty implies MAJ3(AND2(b3,b5),AND2(b2,b6),b17) is not empty) &
         (MAJ3(AND2(b3,b5),AND2(b2,b6),b17) is not empty implies b21 is not empty) &
         (b22 is not empty implies XOR3(b19,{},b20) is not empty) &
         (XOR3(b19,{},b20) is not empty implies b22 is not empty) &
         (b24 is not empty implies MAJ3(b19,{},b20) is not empty) &
         (MAJ3(b19,{},b20) is not empty implies b24 is not empty) &
         (b23 is not empty implies XOR3(AND2(b3,b6),b24,b21) is not empty) &
         (XOR3(AND2(b3,b6),b24,b21) is not empty implies b23 is not empty) &
         (b25 is not empty implies MAJ3(AND2(b3,b6),b24,b21) is not empty) &
         (MAJ3(AND2(b3,b6),b24,b21) is not empty implies b25 is not empty) &
         (b7 is not empty implies b13 is not empty) &
         (b13 is not empty implies b7 is not empty) &
         (b8 is not empty implies b14 is not empty) &
         (b14 is not empty implies b8 is not empty) &
         (b9 is not empty implies b18 is not empty) &
         (b18 is not empty implies b9 is not empty) &
         (b10 is not empty implies b22 is not empty) &
         (b22 is not empty implies b10 is not empty) &
         (b11 is not empty implies b23 is not empty) &
         (b23 is not empty implies b11 is not empty) &
         (b12 is not empty implies b25 is not empty) &
         (b25 is not empty implies b12 is not empty)
   holds (b7 is not empty implies MULT310(b3,b2,b5,b1,b4) is not empty) &
    (MULT310(b3,b2,b5,b1,b4) is not empty implies b7 is not empty) &
    (b8 is not empty implies MULT311(b3,b2,b5,b1,b4) is not empty) &
    (MULT311(b3,b2,b5,b1,b4) is not empty implies b8 is not empty) &
    (b9 is not empty implies MULT321(b3,b6,b2,b5,b1,b4) is not empty) &
    (MULT321(b3,b6,b2,b5,b1,b4) is not empty implies b9 is not empty) &
    (b10 is not empty implies MULT322(b3,b6,b2,b5,b1,b4) is not empty) &
    (MULT322(b3,b6,b2,b5,b1,b4) is not empty implies b10 is not empty) &
    (b11 is not empty implies MULT323(b3,b6,b2,b5,b1,b4) is not empty) &
    (MULT323(b3,b6,b2,b5,b1,b4) is not empty implies b11 is not empty) &
    (b12 is not empty implies MULT324(b3,b6,b2,b5,b1,b4) is not empty) &
    (MULT324(b3,b6,b2,b5,b1,b4) is not empty implies b12 is not empty);

:: GATE_5:th 3
theorem
for b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25 being set
      st (b13 is not empty implies AND2(b1,b4) is not empty) &
         (AND2(b1,b4) is not empty implies b13 is not empty) &
         (b14 is not empty implies XOR3(AND2(b2,b4),AND2(b1,b5),{}) is not empty) &
         (XOR3(AND2(b2,b4),AND2(b1,b5),{}) is not empty implies b14 is not empty) &
         (b17 is not empty implies MAJ3(AND2(b2,b4),AND2(b1,b5),{}) is not empty) &
         (MAJ3(AND2(b2,b4),AND2(b1,b5),{}) is not empty implies b17 is not empty) &
         (b15 is not empty implies XOR3(AND2(b3,b4),AND2(b2,b5),AND2(b1,b6)) is not empty) &
         (XOR3(AND2(b3,b4),AND2(b2,b5),AND2(b1,b6)) is not empty implies b15 is not empty) &
         (b18 is not empty implies MAJ3(AND2(b3,b4),AND2(b2,b5),AND2(b1,b6)) is not empty) &
         (MAJ3(AND2(b3,b4),AND2(b2,b5),AND2(b1,b6)) is not empty implies b18 is not empty) &
         (b16 is not empty implies XOR3(AND2(b3,b5),AND2(b2,b6),{}) is not empty) &
         (XOR3(AND2(b3,b5),AND2(b2,b6),{}) is not empty implies b16 is not empty) &
         (b19 is not empty implies MAJ3(AND2(b3,b5),AND2(b2,b6),{}) is not empty) &
         (MAJ3(AND2(b3,b5),AND2(b2,b6),{}) is not empty implies b19 is not empty) &
         (b20 is not empty implies XOR3(b15,b17,{}) is not empty) &
         (XOR3(b15,b17,{}) is not empty implies b20 is not empty) &
         (b23 is not empty implies MAJ3(b15,b17,{}) is not empty) &
         (MAJ3(b15,b17,{}) is not empty implies b23 is not empty) &
         (b21 is not empty implies XOR3(b16,b18,b23) is not empty) &
         (XOR3(b16,b18,b23) is not empty implies b21 is not empty) &
         (b24 is not empty implies MAJ3(b16,b18,b23) is not empty) &
         (MAJ3(b16,b18,b23) is not empty implies b24 is not empty) &
         (b22 is not empty implies XOR3(AND2(b3,b6),b19,b24) is not empty) &
         (XOR3(AND2(b3,b6),b19,b24) is not empty implies b22 is not empty) &
         (b25 is not empty implies MAJ3(AND2(b3,b6),b19,b24) is not empty) &
         (MAJ3(AND2(b3,b6),b19,b24) is not empty implies b25 is not empty) &
         (b7 is not empty implies b13 is not empty) &
         (b13 is not empty implies b7 is not empty) &
         (b8 is not empty implies b14 is not empty) &
         (b14 is not empty implies b8 is not empty) &
         (b9 is not empty implies b20 is not empty) &
         (b20 is not empty implies b9 is not empty) &
         (b10 is not empty implies b21 is not empty) &
         (b21 is not empty implies b10 is not empty) &
         (b11 is not empty implies b22 is not empty) &
         (b22 is not empty implies b11 is not empty) &
         (b12 is not empty implies b25 is not empty) &
         (b25 is not empty implies b12 is not empty)
   holds (b7 is not empty implies MULT310(b3,b2,b5,b1,b4) is not empty) &
    (MULT310(b3,b2,b5,b1,b4) is not empty implies b7 is not empty) &
    (b8 is not empty implies MULT311(b3,b2,b5,b1,b4) is not empty) &
    (MULT311(b3,b2,b5,b1,b4) is not empty implies b8 is not empty) &
    (b9 is not empty implies MULT321(b3,b6,b2,b5,b1,b4) is not empty) &
    (MULT321(b3,b6,b2,b5,b1,b4) is not empty implies b9 is not empty) &
    (b10 is not empty implies MULT322(b3,b6,b2,b5,b1,b4) is not empty) &
    (MULT322(b3,b6,b2,b5,b1,b4) is not empty implies b10 is not empty) &
    (b11 is not empty implies MULT323(b3,b6,b2,b5,b1,b4) is not empty) &
    (MULT323(b3,b6,b2,b5,b1,b4) is not empty implies b11 is not empty) &
    (b12 is not empty implies MULT324(b3,b6,b2,b5,b1,b4) is not empty) &
    (MULT324(b3,b6,b2,b5,b1,b4) is not empty implies b12 is not empty);

:: GATE_5:funcnot 14 => GATE_1:func 10
notation
  let a1, a2, a3 be set;
  synonym CLAADD1(a1,a2,a3) for XOR3(a1,a2,a3);
end;

:: GATE_5:funcnot 15 => GATE_1:func 11
notation
  let a1, a2, a3 be set;
  synonym CLACARR1(a1,a2,a3) for MAJ3(a1,a2,a3);
end;

:: GATE_5:funcnot 16 => GATE_5:func 14
definition
  let a1, a2, a3, a4, a5 be set;
  func CLAADD2(A3,A4,A1,A2,A5) -> set equals
    XOR3(a3,a4,MAJ3(a1,a2,a5));
end;

:: GATE_5:def 16
theorem
for b1, b2, b3, b4, b5 being set holds
CLAADD2(b3,b4,b1,b2,b5) = XOR3(b3,b4,MAJ3(b1,b2,b5));

:: GATE_5:funcnot 17 => GATE_5:func 15
definition
  let a1, a2, a3, a4, a5 be set;
  func CLACARR2(A3,A4,A1,A2,A5) -> set equals
    OR2(AND2(a3,a4),AND2(OR2(a3,a4),MAJ3(a1,a2,a5)));
end;

:: GATE_5:def 17
theorem
for b1, b2, b3, b4, b5 being set holds
CLACARR2(b3,b4,b1,b2,b5) = OR2(AND2(b3,b4),AND2(OR2(b3,b4),MAJ3(b1,b2,b5)));

:: GATE_5:funcnot 18 => GATE_5:func 16
definition
  let a1, a2, a3, a4, a5, a6, a7 be set;
  func CLAADD3(A5,A6,A3,A4,A1,A2,A7) -> set equals
    XOR3(a5,a6,CLACARR2(a3,a4,a1,a2,a7));
end;

:: GATE_5:def 18
theorem
for b1, b2, b3, b4, b5, b6, b7 being set holds
CLAADD3(b5,b6,b3,b4,b1,b2,b7) = XOR3(b5,b6,CLACARR2(b3,b4,b1,b2,b7));

:: GATE_5:funcnot 19 => GATE_5:func 17
definition
  let a1, a2, a3, a4, a5, a6, a7 be set;
  func CLACARR3(A5,A6,A3,A4,A1,A2,A7) -> set equals
    OR3(AND2(a5,a6),AND2(OR2(a5,a6),AND2(a3,a4)),AND3(OR2(a5,a6),OR2(a3,a4),MAJ3(a1,a2,a7)));
end;

:: GATE_5:def 19
theorem
for b1, b2, b3, b4, b5, b6, b7 being set holds
CLACARR3(b5,b6,b3,b4,b1,b2,b7) = OR3(AND2(b5,b6),AND2(OR2(b5,b6),AND2(b3,b4)),AND3(OR2(b5,b6),OR2(b3,b4),MAJ3(b1,b2,b7)));

:: GATE_5:funcnot 20 => GATE_5:func 18
definition
  let a1, a2, a3, a4, a5, a6, a7, a8, a9 be set;
  func CLAADD4(A7,A8,A5,A6,A3,A4,A1,A2,A9) -> set equals
    XOR3(a7,a8,CLACARR3(a5,a6,a3,a4,a1,a2,a9));
end;

:: GATE_5:def 20
theorem
for b1, b2, b3, b4, b5, b6, b7, b8, b9 being set holds
CLAADD4(b7,b8,b5,b6,b3,b4,b1,b2,b9) = XOR3(b7,b8,CLACARR3(b5,b6,b3,b4,b1,b2,b9));

:: GATE_5:funcnot 21 => GATE_5:func 19
definition
  let a1, a2, a3, a4, a5, a6, a7, a8, a9 be set;
  func CLACARR4(A7,A8,A5,A6,A3,A4,A1,A2,A9) -> set equals
    OR4(AND2(a7,a8),AND2(OR2(a7,a8),AND2(a5,a6)),AND3(OR2(a7,a8),OR2(a5,a6),AND2(a3,a4)),AND4(OR2(a7,a8),OR2(a5,a6),OR2(a3,a4),MAJ3(a1,a2,a9)));
end;

:: GATE_5:def 21
theorem
for b1, b2, b3, b4, b5, b6, b7, b8, b9 being set holds
CLACARR4(b7,b8,b5,b6,b3,b4,b1,b2,b9) = OR4(AND2(b7,b8),AND2(OR2(b7,b8),AND2(b5,b6)),AND3(OR2(b7,b8),OR2(b5,b6),AND2(b3,b4)),AND4(OR2(b7,b8),OR2(b5,b6),OR2(b3,b4),MAJ3(b1,b2,b9)));

:: GATE_5:th 4
theorem
for b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19 being set
      st (b13 is not empty implies AND2(b1,b4) is not empty) &
         (AND2(b1,b4) is not empty implies b13 is not empty) &
         (b14 is not empty implies XOR3(AND2(b2,b4),AND2(b1,b5),{}) is not empty) &
         (XOR3(AND2(b2,b4),AND2(b1,b5),{}) is not empty implies b14 is not empty) &
         (b17 is not empty implies MAJ3(AND2(b2,b4),AND2(b1,b5),{}) is not empty) &
         (MAJ3(AND2(b2,b4),AND2(b1,b5),{}) is not empty implies b17 is not empty) &
         (b15 is not empty implies XOR3(AND2(b3,b4),AND2(b2,b5),AND2(b1,b6)) is not empty) &
         (XOR3(AND2(b3,b4),AND2(b2,b5),AND2(b1,b6)) is not empty implies b15 is not empty) &
         (b18 is not empty implies MAJ3(AND2(b3,b4),AND2(b2,b5),AND2(b1,b6)) is not empty) &
         (MAJ3(AND2(b3,b4),AND2(b2,b5),AND2(b1,b6)) is not empty implies b18 is not empty) &
         (b16 is not empty implies XOR3(AND2(b3,b5),AND2(b2,b6),{}) is not empty) &
         (XOR3(AND2(b3,b5),AND2(b2,b6),{}) is not empty implies b16 is not empty) &
         (b19 is not empty implies MAJ3(AND2(b3,b5),AND2(b2,b6),{}) is not empty) &
         (MAJ3(AND2(b3,b5),AND2(b2,b6),{}) is not empty implies b19 is not empty) &
         (b7 is not empty implies b13 is not empty) &
         (b13 is not empty implies b7 is not empty) &
         (b8 is not empty implies b14 is not empty) &
         (b14 is not empty implies b8 is not empty) &
         (b9 is not empty implies XOR3(b15,b17,{}) is not empty) &
         (XOR3(b15,b17,{}) is not empty implies b9 is not empty) &
         (b10 is not empty implies CLAADD2(b16,b18,b15,b17,{}) is not empty) &
         (CLAADD2(b16,b18,b15,b17,{}) is not empty implies b10 is not empty) &
         (b11 is not empty implies CLAADD3(AND2(b3,b6),b19,b16,b18,b15,b17,{}) is not empty) &
         (CLAADD3(AND2(b3,b6),b19,b16,b18,b15,b17,{}) is not empty implies b11 is not empty) &
         (b12 is not empty implies CLACARR3(AND2(b3,b6),b19,b16,b18,b15,b17,{}) is not empty) &
         (CLACARR3(AND2(b3,b6),b19,b16,b18,b15,b17,{}) is not empty implies b12 is not empty)
   holds (b7 is not empty implies MULT310(b3,b2,b5,b1,b4) is not empty) &
    (MULT310(b3,b2,b5,b1,b4) is not empty implies b7 is not empty) &
    (b8 is not empty implies MULT311(b3,b2,b5,b1,b4) is not empty) &
    (MULT311(b3,b2,b5,b1,b4) is not empty implies b8 is not empty) &
    (b9 is not empty implies MULT321(b3,b6,b2,b5,b1,b4) is not empty) &
    (MULT321(b3,b6,b2,b5,b1,b4) is not empty implies b9 is not empty) &
    (b10 is not empty implies MULT322(b3,b6,b2,b5,b1,b4) is not empty) &
    (MULT322(b3,b6,b2,b5,b1,b4) is not empty implies b10 is not empty) &
    (b11 is not empty implies MULT323(b3,b6,b2,b5,b1,b4) is not empty) &
    (MULT323(b3,b6,b2,b5,b1,b4) is not empty implies b11 is not empty) &
    (b12 is not empty implies MULT324(b3,b6,b2,b5,b1,b4) is not empty) &
    (MULT324(b3,b6,b2,b5,b1,b4) is not empty implies b12 is not empty);