The Mizar article:

Correctness of Binary Counter Circuits

by
Yuguang Yang,
Katsumi Wasaki,
Yasushi Fuwa, and
Yatsuka Nakamura

Received March 13, 1999

Copyright (c) 1999 Association of Mizar Users

MML identifier: GATE_2
[ MML identifier index ]


environ

 vocabulary GATE_1;
 notation GATE_1;
 constructors GATE_1, XBOOLE_0;
 requirements BOOLE;
 theorems GATE_1;

begin :: Correctness of Binary Counter Circuits
reserve a,b,c,d for set;

::Correctness of 3-bit binary counter without reset input
::state transition: s0 (000) -> s1 (001)-> s2 (010) -> ... ->s7 (111) -> s0 (000).

theorem
  for s0,s1,s2,s3,s4,s5,s6,s7,ns0,ns1,ns2,ns3,ns4,ns5,ns6,ns7,q1,q2,q3,nq1,
nq2,nq3 being set holds
  ($s0 iff $AND3(NOT1 q3,NOT1 q2,NOT1 q1))&
  ($s1 iff $AND3(NOT1 q3,NOT1 q2,q1))&
  ($s2 iff $AND3(NOT1 q3,q2,NOT1 q1))&
  ($s3 iff $AND3(NOT1 q3,q2,q1))&
  ($s4 iff $AND3(q3,NOT1 q2,NOT1 q1))&
  ($s5 iff $AND3(q3,NOT1 q2,q1))&
  ($s6 iff $AND3(q3,q2,NOT1 q1))&
  ($s7 iff $AND3(q3,q2,q1))&
  ($ns0 iff $AND3(NOT1 nq3,NOT1 nq2,NOT1 nq1))&
  ($ns1 iff $AND3(NOT1 nq3,NOT1 nq2,nq1))&
  ($ns2 iff $AND3(NOT1 nq3,nq2,NOT1 nq1))&
  ($ns3 iff $AND3(NOT1 nq3,nq2,nq1))&
  ($ns4 iff $AND3(nq3,NOT1 nq2,NOT1 nq1))&
  ($ns5 iff $AND3(nq3,NOT1 nq2,nq1))&
  ($ns6 iff $AND3(nq3,nq2,NOT1 nq1))&
  ($ns7 iff $AND3(nq3,nq2,nq1))&
  ($nq1 iff $(NOT1 q1))&
  ($nq2 iff $XOR2(q1,q2))&
  ($nq3 iff $OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3))))
implies ($ns1 iff $s0)&
  ($ns2 iff $s1)&
  ($ns3 iff $s2)&
  ($ns4 iff $s3)&
  ($ns5 iff $s4)&
  ($ns6 iff $s5)&
  ($ns7 iff $s6)&
  ($ns0 iff $s7)
proof
let s0,s1,s2,s3,s4,s5,s6,s7,ns0,ns1,ns2,ns3,ns4,ns5,ns6,ns7,q1,q2,q3,nq1,
nq2,nq3 be set;
  assume that A1:($s0 iff $AND3(NOT1 q3,NOT1 q2,NOT1 q1))and
  A2:($s1 iff $AND3(NOT1 q3,NOT1 q2,q1))and
  A3:($s2 iff $AND3(NOT1 q3,q2,NOT1 q1))and
  A4:($s3 iff $AND3(NOT1 q3,q2,q1))and
  A5:($s4 iff $AND3(q3,NOT1 q2,NOT1 q1))and
  A6:($s5 iff $AND3(q3,NOT1 q2,q1))and
  A7:($s6 iff $AND3(q3,q2,NOT1 q1))and
  A8:($s7 iff $AND3(q3,q2,q1))and
  A9:($ns0 iff $AND3(NOT1 nq3,NOT1 nq2,NOT1 nq1))and
  A10:($ns1 iff $AND3(NOT1 nq3,NOT1 nq2,nq1))and
  A11:($ns2 iff $AND3(NOT1 nq3,nq2,NOT1 nq1))and
  A12:($ns3 iff $AND3(NOT1 nq3,nq2,nq1))and
  A13:($ns4 iff $AND3(nq3,NOT1 nq2,NOT1 nq1))and
  A14:($ns5 iff $AND3(nq3,NOT1 nq2,nq1))and
  A15:($ns6 iff $AND3(nq3,nq2,NOT1 nq1))and
  A16:($ns7 iff $AND3(nq3,nq2,nq1))and
  A17:($nq1 iff $NOT1 q1)and
  A18:($nq2 iff $XOR2(q1,q2))and
  A19:($nq3 iff $OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3))));
    $ns1 iff $NOT1 nq3 & $NOT1 nq2 & $nq1 by A10,GATE_1:16;
  then $ns1 iff $NOT1 nq3 & not $XOR2(q1,q2) & not $q1 by A17,A18,GATE_1:4;

  then $ns1 iff not $AND2(q3, NOT1 q1) & not $AND2(q1, XOR2(q2,q3))
    & not $q2 & not $q1 by A19,GATE_1:4,7,8;
  then $ns1 iff (not $q3 or not $NOT1 q1) & (not $q1 or not $XOR2(q2,q3))
   & not $q2 & not $q1 by GATE_1:6;
  then $ns1 iff $NOT1 q3 & $NOT1 q2 & $NOT1 q1 by GATE_1:4;
hence $ns1 iff $s0 by A1,GATE_1:16;
      $ns2 iff $NOT1 nq3 & $nq2 & $NOT1 nq1 by A11,GATE_1:16;

    then $ns2 iff not $AND2(q3, NOT1 q1) & not $AND2(q1, XOR2(q2,q3))
      & not $q2 & $q1 by A17,A18,A19,GATE_1:4,7,8;
    then $ns2 iff (not $q3 or not $NOT1 q1) & (not $q1 or not $XOR2(q2,q3))
     & not $q2 & $q1 by GATE_1:6;
    then $ns2 iff (not $q3 or $q1) & not $q3 & not $q2 & $q1 by GATE_1:8;
    then $ns2 iff $NOT1 q3 & $NOT1 q2 & $q1 by GATE_1:4;
hence $ns2 iff $s1 by A2,GATE_1:16;
      $ns3 iff $NOT1 nq3 & $XOR2(q1,q2) & not $q1 by A12,A17,A18,GATE_1:4,16;

    then $ns3 iff not $AND2(q3, NOT1 q1) & not $AND2(q1, XOR2(q2,q3))
      & $q2 & not $q1 by A19,GATE_1:4,7,8;
    then $ns3 iff (not $q3 or not $NOT1 q1) & (not $q1 or not $XOR2(q2,q3))
     & $q2 & not $q1 by GATE_1:6;
    then $ns3 iff $NOT1 q3 & $q2 & $NOT1 q1 by GATE_1:4;
hence $ns3 iff $s2 by A3,GATE_1:16;
        $ns4 iff $nq3 & $NOT1 nq2 & $NOT1 nq1 by A13,GATE_1:16;

      then $ns4 iff ($AND2(q3, NOT1 q1) or $AND2(q1, XOR2(q2,q3)))
        & $q2 & $q1 by A17,A18,A19,GATE_1:4,7,8;
      then $ns4 iff (($q3 & $NOT1 q1) or ($q1 & $XOR2(q2,q3)))
       & $q2 & $q1 by GATE_1:6;
      then $ns4 iff not $q3 & $q2 & $q1 by GATE_1:4,8;
      then $ns4 iff $NOT1 q3 & $q2 & $q1 by GATE_1:4;
 hence $ns4 iff $s3 by A4,GATE_1:16;
        $ns5 iff $nq3 & $NOT1 nq2 & $nq1 by A14,GATE_1:16;
      then $ns5 iff $nq3 & not $XOR2(q1,q2) & not $q1 by A17,A18,GATE_1:4;
   then $ns5 iff ($AND2(q3, NOT1 q1) or $AND2(q1, XOR2(q2,q3)))
     & not $q2 & not $q1 by A19,GATE_1:7,8;
   then $ns5 iff $q3 & $NOT1 q2 & $NOT1 q1 by GATE_1:4,6;
hence $ns5 iff $s4 by A5,GATE_1:16;
          $ns6 iff $nq3 & $nq2 & $NOT1 nq1 by A15,GATE_1:16;

        then $ns6 iff ($AND2(q3, NOT1 q1) or $AND2(q1, XOR2(q2,q3)))
          & not $q2 & $q1 by A17,A18,A19,GATE_1:4,7,8;
        then $ns6 iff (($q3 & $NOT1 q1) or ($q1 & $XOR2(q2,q3)))
         & not $q2 & $q1 by GATE_1:6;
        then $ns6 iff $q3 & not $q2 & $q1 by GATE_1:8;
        then $ns6 iff $q3 & $NOT1 q2 & $q1 by GATE_1:4;
 hence $ns6 iff $s5 by A6,GATE_1:16;
         $ns7 iff $nq3 & $XOR2(q1,q2) & not $q1 by A16,A17,A18,GATE_1:4,16;
    then $ns7 iff ($AND2(q3, NOT1 q1) or $AND2(q1, XOR2(q2,q3)))
      & $q2 & not $q1 by A19,GATE_1:7,8;
    then $ns7 iff $q3 & $q2 & $NOT1 q1 by GATE_1:4,6;
hence $ns7 iff $s6 by A7,GATE_1:16;
        $ns0 iff $NOT1 nq3 & $NOT1 nq2 & $NOT1 nq1 by A9,GATE_1:16;

      then $ns0 iff not $AND2(q3, NOT1 q1) & not $AND2(q1, XOR2(q2,q3))
        & $q2 & $q1 by A17,A18,A19,GATE_1:4,7,8;
      then $ns0 iff (not $q3 or not $NOT1 q1) & (not $q1 or not $XOR2(q2,q3))
       & $q2 & $q1 by GATE_1:6;
      then $ns0 iff (not $q3 or $q1) & $q3 & $q2 & $q1 by GATE_1:4,8;

hence $ns0 iff $s7 by A8,GATE_1:16;
end;

theorem
  $AND3(AND2(a,d),AND2(b,d),AND2(c,d)) iff $AND2(AND3(a,b,c),d)
proof
A1: $AND3(AND2(a,d),AND2(b,d),AND2(c,d)) iff
    $AND2(a,d) & $AND2(b,d) & $AND2(c,d) by GATE_1:16;

 $a & $b & $c & $d iff $AND3(a,b,c) & $d by GATE_1:16;

hence thesis by A1,GATE_1:6;
end;

theorem
  (not $AND2(a,b) iff $OR2(NOT1 a, NOT1 b))&
( $OR2(a,b) & $OR2(c,b) iff $OR2(AND2(a,c),b)) &
($OR2(a,b) & $OR2(c,b) & $OR2(d,b) iff $OR2(AND3(a,c,d),b))&
($OR2(a,b) & ($a iff $c) implies $OR2(c,b) )
proof
  not $AND2(a,b) iff not ($a & $b) by GATE_1:6;
then A1: not $AND2(a,b) iff $NOT1 a or $NOT1 b by GATE_1:4;
  $OR2(a,b) & $OR2(c,b) iff ($a or $b) & ($c or $b) by GATE_1:7;
then A2: $OR2(a,b) & $OR2(c,b) iff $AND2(a,c) or $b by GATE_1:6;
  $OR2(a,b) & $OR2(c,b) & $OR2(d,b) iff
  ($a or $b) & ($c or $b) & ($d or $b) by GATE_1:7;
then $OR2(a,b) & $OR2(c,b) & $OR2(d,b) iff $AND3(a,c,d) or $b by GATE_1:16;

hence thesis by A1,A2,GATE_1:7;
end;

::Correctness of 3-bit binary counter with  reset input R
::initial state s*(xxx) -> s0(000) [reset]
::state transition: s0 (000) -> s1 (001)-> s2 (010) -> ... ->s7 (111) -> s0 (000).

theorem
  for s0,s1,s2,s3,s4,s5,s6,s7,ns0,ns1,ns2,ns3,ns4,ns5,ns6,ns7,q1,q2,q3,nq1,
nq2,nq3,R being set holds
  ($s0 iff $AND3(NOT1 q3,NOT1 q2,NOT1 q1))&
  ($s1 iff $AND3(NOT1 q3,NOT1 q2,q1))&
  ($s2 iff $AND3(NOT1 q3,q2,NOT1 q1))&
  ($s3 iff $AND3(NOT1 q3,q2,q1))&
  ($s4 iff $AND3(q3,NOT1 q2,NOT1 q1))&
  ($s5 iff $AND3(q3,NOT1 q2,q1))&
  ($s6 iff $AND3(q3,q2,NOT1 q1))&
  ($s7 iff $AND3(q3,q2,q1))&
  ($ns0 iff $AND3(NOT1 nq3,NOT1 nq2,NOT1 nq1))&
  ($ns1 iff $AND3(NOT1 nq3,NOT1 nq2,nq1))&
  ($ns2 iff $AND3(NOT1 nq3,nq2,NOT1 nq1))&
  ($ns3 iff $AND3(NOT1 nq3,nq2,nq1))&
  ($ns4 iff $AND3(nq3,NOT1 nq2,NOT1 nq1))&
  ($ns5 iff $AND3(nq3,NOT1 nq2,nq1))&
  ($ns6 iff $AND3(nq3,nq2,NOT1 nq1))&
  ($ns7 iff $AND3(nq3,nq2,nq1))&
  ($nq1 iff $AND2(NOT1 q1,R))&
  ($nq2 iff $AND2(XOR2(q1,q2),R))&
  ($nq3 iff $AND2(OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3))),R))
implies ($ns1 iff $AND2(s0,R))&
  ($ns2 iff $AND2(s1,R))&
  ($ns3 iff $AND2(s2,R))&
  ($ns4 iff $AND2(s3,R))&
  ($ns5 iff $AND2(s4,R))&
  ($ns6 iff $AND2(s5,R))&
  ($ns7 iff $AND2(s6,R))&
  ($ns0 iff $OR2(s7,NOT1 R))
proof
let s0,s1,s2,s3,s4,s5,s6,s7,ns0,ns1,ns2,ns3,ns4,ns5,ns6,ns7,q1,q2,q3,nq1,
nq2,nq3,R  be set;
  assume that
  A1:($s0 iff $AND3(NOT1 q3,NOT1 q2,NOT1 q1))and
  A2:($s1 iff $AND3(NOT1 q3,NOT1 q2,q1))and
  A3:($s2 iff $AND3(NOT1 q3,q2,NOT1 q1))and
  A4:($s3 iff $AND3(NOT1 q3,q2,q1))and
  A5:($s4 iff $AND3(q3,NOT1 q2,NOT1 q1))and
  A6:($s5 iff $AND3(q3,NOT1 q2,q1))and
  A7:($s6 iff $AND3(q3,q2,NOT1 q1))and
  A8:($s7 iff $AND3(q3,q2,q1))and
  A9:($ns0 iff $AND3(NOT1 nq3,NOT1 nq2,NOT1 nq1))and
  A10:($ns1 iff $AND3(NOT1 nq3,NOT1 nq2,nq1))and
  A11:($ns2 iff $AND3(NOT1 nq3,nq2,NOT1 nq1))and
  A12:($ns3 iff $AND3(NOT1 nq3,nq2,nq1))and
  A13:($ns4 iff $AND3(nq3,NOT1 nq2,NOT1 nq1))and
  A14:($ns5 iff $AND3(nq3,NOT1 nq2,nq1))and
  A15:($ns6 iff $AND3(nq3,nq2,NOT1 nq1))and
  A16:($ns7 iff $AND3(nq3,nq2,nq1))and
  A17:($nq1 iff $AND2(NOT1 q1,R))and
  A18:($nq2 iff $AND2(XOR2(q1,q2),R))and
  A19:($nq3 iff $AND2(OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3))),R));
    $ns1 iff $NOT1 nq3 & $NOT1 nq2 & $NOT1 q1 & $R by A10,A17,GATE_1:6,16;
  then $ns1 iff not $nq3 & ( not $XOR2(q1,q2) or not $R)
   & not $q1 & $R by A18,GATE_1:4,6;
  then $ns1 iff not $OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3)))
   & not $q2 & not $q1 & $R by A19,GATE_1:6,8;
  then $ns1 iff (not $AND2(q3, NOT1 q1) & not $AND2(q1, XOR2(q2,q3)))
   & not $q2 & not $q1 & $R by GATE_1:7;
  then $ns1 iff ((not $q3 or not $NOT1 q1) & (not $q1 or not $XOR2(q2,q3)))
   & not $q2 & not $q1 & $R by GATE_1:6;
  then $ns1 iff $NOT1 q3 & $NOT1 q2 & $NOT1 q1 & $R by GATE_1:4;
hence $ns1 iff $AND2(s0,R) by A1,GATE_1:6,16;
    $ns2 iff $NOT1 nq3 & $nq2 & $NOT1 nq1 by A11,GATE_1:16;
  then $ns2 iff not $nq3 & $XOR2(q1,q2) & $R &
   (not $NOT1 q1 or not $R) by A17,A18,GATE_1:4,6;
  then $ns2 iff not $nq3 & $XOR2(q1,q2) & $R & $q1 by GATE_1:4;

  then $ns2 iff not $OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3)))
   & not $q2 & $q1 & $R by A19,GATE_1:6,8;
  then $ns2 iff (not $AND2(q3, NOT1 q1) & not $AND2(q1, XOR2(q2,q3)))
   & not $q2 & $q1 & $R by GATE_1:7;
  then $ns2 iff ((not $q3 or not $NOT1 q1) & (not $q1 or not $XOR2(q2,q3)))
   & not $q2 & $q1 & $R by GATE_1:6;
  then $ns2 iff (not $q3 or $q1) & not $q3
   & not $q2 & $q1 & $R by GATE_1:8;
  then $ns2 iff $NOT1 q3 & $NOT1 q2 & $q1 & $R by GATE_1:4;
hence $ns2 iff $AND2(s1,R) by A2,GATE_1:6,16;
    $ns3 iff $NOT1 nq3 & $nq2 & $NOT1 q1 & $R by A12,A17,GATE_1:6,16;
  then $ns3 iff not $nq3 & $XOR2(q1,q2) & $R
   & not $q1 & $R by A18,GATE_1:4,6;
  then $ns3 iff not $OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3)))
   & $q2 & not $q1 & $R by A19,GATE_1:6,8;
  then $ns3 iff (not $AND2(q3, NOT1 q1) & not $AND2(q1, XOR2(q2,q3)))
   & $q2 & not $q1 & $R by GATE_1:7;
  then $ns3 iff ((not $q3 or not $NOT1 q1) & (not $q1 or not $XOR2(q2,q3)))
   & $q2 & not $q1 & $R by GATE_1:6;
  then $ns3 iff $NOT1 q3 & $q2 & $NOT1 q1 & $R by GATE_1:4;
hence $ns3 iff $AND2(s2,R) by A3,GATE_1:6,16;
    $ns4 iff $nq3 & $NOT1 nq2 & $NOT1 nq1 by A13,GATE_1:16;
  then $ns4 iff $OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3))) & $R
   & not $nq2 & not $AND2(NOT1 q1,R) by A17,A19,GATE_1:4,6;
  then $ns4 iff $OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3))) & $R
   & not $nq2 & not $NOT1 q1 by GATE_1:6;
  then $ns4 iff $OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3))) & $R
   & not $XOR2(q1,q2) & $q1 by A18,GATE_1:4,6;
  then $ns4 iff ($AND2(q3, NOT1 q1) or $AND2(q1, XOR2(q2,q3))) & $R
   & $q2 & $q1 by GATE_1:7,8;
  then $ns4 iff (($q3 & $NOT1 q1) or ($q1 & $XOR2(q2,q3))) & $R
   & $q2 & $q1 by GATE_1:6;
  then $ns4 iff not $q3 & $R & $q2 & $q1 by GATE_1:4,8;
  then $ns4 iff $NOT1 q3 & $q2 & $q1 & $R by GATE_1:4;
hence $ns4 iff $AND2(s3,R) by A4,GATE_1:6,16;
    $ns5 iff $nq3 & $NOT1 nq2 & $NOT1 q1 & $R by A14,A17,GATE_1:6,16;
  then $ns5 iff $nq3 & (not $XOR2(q1,q2) or not $R)
   & not $q1 & $R by A18,GATE_1:4,6;
  then $ns5 iff $OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3)))
   & not $q2 & not $q1 & $R by A19,GATE_1:6,8;
  then $ns5 iff ( $AND2(q3, NOT1 q1) or $AND2(q1, XOR2(q2,q3)))
   & not $q2 & not $q1 & $R by GATE_1:7;

  then $ns5 iff $q3 & $NOT1 q2 & $NOT1 q1 & $R by GATE_1:4,6;
hence $ns5 iff $AND2(s4,R) by A5,GATE_1:6,16;
    $ns6 iff $nq3 & $nq2 & $NOT1 nq1 by A15,GATE_1:16;
  then $ns6 iff $nq3 & $XOR2(q1,q2) & $R &
   (not $NOT1 q1 or not $R) by A17,A18,GATE_1:4,6;
  then $ns6 iff $nq3 & $XOR2(q1,q2) & $R & $q1 by GATE_1:4;
  then $ns6 iff $OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3)))
   & not $q2 & $R & $q1 by A19,GATE_1:6,8;
  then $ns6 iff ($AND2(q3, NOT1 q1) or $AND2(q1, XOR2(q2,q3)))
   & not $q2 & $R & $q1 by GATE_1:7;
  then $ns6 iff (($q3 & $NOT1 q1) or ($q1 & $XOR2(q2,q3))) & $R
     & not $q2 & $q1 by GATE_1:6;
  then $ns6 iff $q3 & $R & not $q2 & $q1 by GATE_1:8;
  then $ns6 iff $q3 & $NOT1 q2 & $q1 & $R by GATE_1:4;
hence $ns6 iff $AND2(s5,R) by A6,GATE_1:6,16;
      $ns7 iff $nq3 & $nq2 & $NOT1 q1 & $R by A16,A17,GATE_1:6,16;
    then $ns7 iff $nq3 & $XOR2(q1,q2)
     & not $q1 & $R by A18,GATE_1:4,6;
    then $ns7 iff $OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3)))
     & $q2 & not $q1 & $R by A19,GATE_1:6,8;
    then $ns7 iff ( $AND2(q3, NOT1 q1) or $AND2(q1, XOR2(q2,q3)))
     & $q2 & not $q1 & $R by GATE_1:7;

    then $ns7 iff $q3 & $q2 & $NOT1 q1 & $R by GATE_1:4,6;
  hence $ns7 iff $AND2(s6,R) by A7,GATE_1:6,16;
    $ns0 iff $NOT1 nq3 & $NOT1 nq2 & $NOT1 nq1 by A9,GATE_1:16;
  then $ns0 iff ($q1 & not $XOR2(q1,q2) &
  not $OR2(AND2(q3, NOT1 q1), AND2(q1, XOR2(q2,q3)))) or not $R by A17,A18,A19,
GATE_1:4,6;
  then $ns0 iff ($q1 & $q2 & not $AND2(q3, NOT1 q1) & not $AND2(q1, XOR2(q2,q3
)))
  or not $R by GATE_1:7,8;
  then $ns0 iff ($q1 & $q2 & not $AND2(q3, NOT1 q1) & not $XOR2(q2,q3))
  or not $R by GATE_1:6;
  then $ns0 iff (($q1 & $q2 & not $q3 & $q3) or ($q1 & $q2 & not $NOT1 q1 & $
q3))
  or not $R by GATE_1:6,8;
  then $ns0 iff ($q1 & $q2 & $q1 & $q3) or not $R by GATE_1:4;
  then $ns0 iff $s7 or $NOT1 R by A8,GATE_1:4,16;
  hence $ns0 iff $OR2(s7,NOT1 R) by GATE_1:7;
end;

Back to top