Safe Haskell | None |
---|---|
Language | Haskell98 |
- data Exp
- data Pat
- newtype Var = V {}
- newtype Con = C {}
- data Prop = Prop [Var] Exp Exp
- data Side
- data Known = Known {}
- getKnown :: QED Known
- data Unknown = Unknown {}
- getUnknown :: Proof (Known, Unknown)
- data Goal = Goal [Prop] Prop
- getGoal :: Proof (Known, Unknown, Goal)
- newtype BadProof = BadProof String
- badProof :: String -> Proof a
- isBadProof :: Proof () -> Proof Bool
- newtype Laws = Laws [Prop]
- rewriteUnfold :: Prop -> Proof ()
- rewriteEquivalent :: Prop -> Proof ()
- rewriteRecurse :: Proof ()
- rewriteSplit :: Proof ()
- rewriteTautology :: Proof ()
Documentation
All these things are append only
getUnknown :: Proof (Known, Unknown) Source
isBadProof :: Proof () -> Proof Bool Source
rewriteUnfold :: Prop -> Proof () Source
Use a new prop which is the same as the previous goal, but with any number of unfoldings
rewriteEquivalent :: Prop -> Proof () Source
Use a new prop which is the same as the first goals prop, but with simplified/rearranged expressions
rewriteRecurse :: Proof () Source
Apply the coinduction principle on the computation
rewriteSplit :: Proof () Source
Split the expression into multiple subexpressions
rewriteTautology :: Proof () Source
The first goal is a tautology