A.1  NIMP-Based Full Adder

TRUE :  a3 = 1
NIMP :  a3 a1 ≡{a3 = a 3.a1 = a1}
TRUE :  a4 = 1
NIMP :  a4 a2 ≡{a4 = a 4.a2 = a2}
NIMP :  a4 a3 ≡{a4 = a 4.a3 = a2.a1}
NIMP :  a2 a1 ≡{a2 = a 2.a1}
TRUE :  a5 = 1
NIMP :  a5 a2 ≡{a5 = a 5.a2 = a2 + a1}
NIMP :  a5 a4 ≡{a5 = a 5.a4 = (a2 + a1).(a2 + a1) a1 XOR a2}
NIMP :  a3 a2 ≡{a3 = a 3.a2 = a1.a2}
NIMP :  a1 a4 ≡{a1 = a 1.a4 = a1.a2}
TRUE :  a4 = 1
NIMP :  a4 cin ≡{a4 = a 4.cin = cin}
NIMP :  cin a3 ≡{cin = c in.a3 = cin.(a1 + a2)}
TRUE :  a3 = 1
NIMP :  a3 a1 ≡{a3 = a 3.a1 = a1.a2}
NIMP :  a3 cin ≡{a3 = a 3.cin = (a1.a2).(--------------)

 cin.(a1 +  a2)cout}
TRUE :  a1 = 1
NIMP :  a1 a3 ≡{a1 = a 1.a3 = cout}
TRUE :  a2 = 1
NIMP :  a2 a4 ≡{a2 = a 2.a4 = cin}
TRUE :  a3 = 1
NIMP :  a3 a5 ≡{a3 = a 3.a5 = a1 XOR a2}
NIMP :  a3 a2 ≡{a3 = a 3.a2 = (a1 XOR a2).cin}
NIMP :  a5 a4 ≡{a5 = a 5.a4 = cin.(a1 XOR a2)}
TRUE :  a2 = 1
NIMP :  a2 a3 ≡{a2 = a 2.a3 = (a1 XOR a2) + cin}
NIMP :  a2 a5 ≡{a2 = a 2.a5 = ( ---------------      )
  (a1 XOR    a2 ) + cin.(cin + (a1  XOR    a2))}
TRUE :  a4 = 1
NIMP :  a4 a2 ≡{a4 = a 4.a2 =                  ---
((a1  XOR    a2).cin) .(     ---------------)
  cin.(a1 XOR    a2)}
    ≡{a4 = c in XOR a1 XOR a2 s} (A.3)