1. State transition table:
    Current 
    State 
     Next State Output
     in=0 in=1
    A
    B
    C
    D
    E
     B    D     00
     B    C     01
     D    C     10
     E    D     00
     E    B     00

    1. State encoding table:
      State Encoding
      A
      B
      C
      D
      E
      000
      001
      010
      011
      100

      Encoded state transition table:
      Current 
      State 
       Next State Output
       in=0 in=1
      000
      001
      010
      011
      100
      101
      11x
       001  011   00
       001  010   01
       011  010   10
       100  011   00
       100  001   00
       xxx  xxx   xx
       xxx  xxx   xx

      NS2 = (~in * CS2) + (~in * CS1 * CS0)
      NS1 = (in * ~CS2) + (CS1 * ~CS0)
      NS0 = (in * ((~CS1 * ~CS0) + (CS1 * CS0))) +
             (~in * ((~CS2 * ~CS1) + (CS1 * ~CS0)))
      O1 = CS1 * ~CS0
      O0 = ~CS2 * ~CS1 * CS0



    2. State encoding table:
      State Encoding
      A
      B
      C
      D
      E
      00001
      00010
      00100
      01000
      10000

      Encoded state transition table:
      Current 
      State 
       Next State  Output
       in=0  in=1
      00000
      00001
      00010
      00011
      00100
      00101
      0011x
      01000
      01001
      0101x
      011xx
      10000
      10001
      1001x
      101xx
      11xxx
       xxxxx xxxxx  xx
       00010 01000  00
       00010 00100  01
       xxxxx xxxxx  xx
       01000 00100  10
       xxxxx xxxxx  xx
       xxxxx xxxxx  xx
       10000 01000  00
       xxxxx xxxxx  xx
       xxxxx xxxxx  xx
       xxxxx xxxxx  xx
       10000 00010  00
       xxxxx xxxxx  xx
       xxxxx xxxxx  xx
       xxxxx xxxxx  xx
       xxxxx xxxxx  xx

      NS4 = ~in * (CS3 + CS4)
      NS3 = (CS0 * in) + (CS2 * ~in) + (CS3 * in)
      NS2 = in * (CS1 + CS2)
      NS1 = (CS0 * ~in) + (CS1 * ~in) + (CS4 * in)
      NS0 = 0
      O1 = CS2
      O0 = CS1



    3. State encoding table:
      State Encoding
      A
      B
      C
      D
      E
      0000
      0100
      1000
      0001
      0010

      Encoded state transition table:
      Current 
      State 
       Next State Output
       in=0 in=1
      0000
      0001
      0010
      0011
      0100
      0101
      011x
      1000
      1001
      101x
      11xx
       0100 0001  00
       0010 0001  00
       0010 0100  00
       xxxx xxxx  xx
       0100 1000  01
       xxxx xxxx  xx
       xxxx xxxx  xx
       0001 1000  10
       xxxx xxxx  xx
       xxxx xxxx  xx
       xxxx xxxx  xx

      NS3 = in * (CS3 + CS2)
      NS2 = (in * CS1) + (~in * ~CS3 * ~CS1 * ~CS0)
      NS1 = ~in * (CS1 + CS0)
      NS0 = (~in * CS3) + (in * ~CS3 * ~CS2 * ~CS1)
      O1 = CS3
      O0 = CS2



  2. State transition table:
    Current 
    State 
     Next State  Output
     in=0 in=1   in=0 in=1
    X
    Y
    Z
     Z    Y      0    0
     X    Z      0    1
     Y    Z      1    1

    1. State encoding table:
      State Encoding
      X
      Y
      Z
      00
      01
      10

      Encoded state transition table:
      Current 
      State 
       Next State  Output
       in=0 in=1   in=0 in=1
      00
      01
      10
      11
       10   01     0   0
       00   10     0   1
       01   10     1   1
       xx   xx     x   x

      NS1 = (in * CS0) + (~in * ~CS0)
      NS0 = (~in * CS1) + (in * ~CS1 * ~CS0)
      O = (in * CS0) + (CS1 * ~CS0)



    2. State encoding table:
      State Encoding
      X
      Y
      Z
      001
      010
      100

      Encoded state transition table:
      Current 
      State 
       Next State  Output
       in=0 in=1   in=0 in=1
      000
      001
      010
      011
      100
      101
      11x
       xxx  xxx    x   x
       100  010    0   0
       001  100    0   1
       xxx  xxx    x   x
       010  100    1   1
       xxx  xxx    x   x
       xxx  xxx    x   x

      NS2 = (~in * CS0) + (in * CS1) + (in * CS2)
      NS1 = (~in * CS2) + (in * CS0)
      NS0 = (~in * CS1)
      O = CS2 + (in * CS1)



    3. State encoding table:
      State Encoding
      X
      Y
      Z
      00
      01
      11

      Encoded state transition table:
      Current 
      State 
       Next State  Output
       in=0 in=1   in=0 in=1
      00
      01
      10
      11
       11   01     0   0
       00   11     0   1
       xx   xx     x   x
       01   11     1   1

      NS1 = (~in * ~CS0) + (in * CS0)
      NS0 = in + CS1 + ~CS0
      O = CS1 + (in * CS0)



  3. (Moved to homework 9)
  4. (Programming version)
    A correct (and slightly verbose) ImplicationChart.java.
    A collection of FSMs, listed from the "hardest" to the "easiest"
    If you want to, send a description of why your FSM is tricky to the class list or me, and I'll forward along.

    (Written version)






    (b) can done with the row matching method and (a) cannot.