>>> maybe 0 (`sMod` 2) (sJust (3 :: SInteger)) 1 :: SInteger >>> maybe 0 (`sMod` 2) (sNothing :: SMaybe Integer) 0 :: SInteger >>> let f = uninterpret "f" :: SInteger -> SBool >>> prove $ \x d -> maybe d f (sJust x) .== f x Q.E.D. >>> prove $ \d -> maybe d f sNothing .== d Q.E.D.
>>> fromMaybe 2 (sNothing :: SMaybe Integer) 2 :: SInteger >>> fromMaybe 2 (sJust 5 :: SMaybe Integer) 5 :: SInteger >>> prove $ \x -> fromMaybe x (sNothing :: SMaybe Integer) .== x Q.E.D. >>> prove $ \x -> fromMaybe (x+1) (sJust x :: SMaybe Integer) .== x Q.E.D.
>>> liftMaybe (Just (3 :: SInteger)) Just 3 :: SMaybe Integer >>> liftMaybe (Nothing :: Maybe SInteger) Nothing :: SMaybe Integer