usa :: (M.Map Int String, ROBDDState Int)
usa = (toName, (foldr1 (.&.) $ map oneColor allStates)
      .&. edge az ca  .&. edge az nv  .&. edge ca nv .&. edge ca or_ .&. edge id_ mt
      .&. edge id_ nv .&. edge id_ or_ .&. edge id_ wa .&. edge nv or_ .&. edge or_ wa)
      where
      allStates = [az, ca, id_, mt, nv, or_, wa]
      toName = M.fromList $ [(az, "AZ"), (ca, "CA"), (id_, "ID"), (mt, "MT"), (nv, "NV") 
                             , (or_, "OR"), (wa, "WA") ]
      az  = 3 * 4 :: Int
      ca  = 5 * 4 :: Int
      id_ = 12 * 4 :: Int
      mt  = 26 * 4 :: Int
      nv  = 28 * 4 :: Int
      or_ = 37 * 4 :: Int
      wa  = 47 * 4 :: Int
usa :: (M.Map Int String, ROBDDState Int)
usa = (toName, (foldr1 (.&.) $ map oneColor allStates)
      .&. edge az ca  .&. edge az nv  .&. edge ca nv .&. edge ca or_ .&. edge id_ mt
      .&. edge id_ nv .&. edge id_ or_ .&. edge id_ wa .&. edge nv or_ .&. edge or_ wa)
      where
      allStates = [az, ca, id_, mt, nv, or_, wa]
      toName = M.fromList $ [(az, "AZ"), (ca, "CA"), (id_, "ID"), (mt, "MT"), (nv, "NV") 
                             , (or_, "OR"), (wa, "WA") ]
      az  = 3 * 4 :: Int
      ca  = 5 * 4 :: Int
      id_ = 12 * 4 :: Int
      mt  = 26 * 4 :: Int
      nv  = 28 * 4 :: Int
      or_ = 37 * 4 :: Int
      wa  = 47 * 4 :: Int
usa = (toName, (foldr1 (.&.) $ map oneColor allStates)
      .&. edge az ca  .&. edge az nv  .&. edge ca nv .&. edge ca or_ .&. edge id_ mt
      .&. edge id_ nv .&. edge id_ or_ .&. edge id_ wa .&. edge nv or_ .&. edge or_ wa)
      where
      allStates = [az, ca, id_, mt, nv, or_, wa]
      toName = M.fromList $ [(az, "AZ"), (ca, "CA"), (id_, "ID"), (mt, "MT"), (nv, "NV") 
                             , (or_, "OR"), (wa, "WA") ]
      az  = 3 * 4 :: Int
      ca  = 5 * 4 :: Int
      id_ = 12 * 4 :: Int
      mt  = 26 * 4 :: Int
      nv  = 28 * 4 :: Int
      or_ = 37 * 4 :: Int
      wa  = 47 * 4 :: Int