pure-validity / src /IR /NAND.hs
SNAPKITTYWEST's picture
push from SNAPKITTYWEST/pure-validity
56de343 verified
Raw
History Blame Contribute Delete
454 Bytes
module IR.NAND (toNAND, isNANDNormal) where
import IR.Boolean
toNAND :: BExpr -> BExpr
toNAND BTrue = BNand BFalse BFalse
toNAND BFalse = BNand (BNand BFalse BFalse) (BNand BFalse BFalse)
toNAND (BVar v) = BVar v
toNAND (BNand a b) = BNand (toNAND a) (toNAND b)
isNANDNormal :: BExpr -> Bool
isNANDNormal BTrue = False
isNANDNormal BFalse = False
isNANDNormal (BVar _) = True
isNANDNormal (BNand a b) = isNANDNormal a && isNANDNormal b