qed-0.0: Simple prover

Safe HaskellNone
LanguageHaskell98

Proof.QED.Internal

Synopsis

Documentation

data Pat Source

Constructors

PCon Con [Var] 
PWild 

newtype Var Source

Constructors

V 

Fields

fromVar :: String
 

newtype Con Source

Constructors

C 

Fields

fromCon :: String
 

data Side Source

Constructors

LHS 
RHS 

data Known Source

All these things are append only

Constructors

Known 

Fields

definitions :: [(Var, Exp)]
 
types :: [(String, [(Con, Int)])]
 
assumed :: [Prop]
 
proved :: [Prop]
 
cheater :: Bool
 

data Unknown Source

Constructors

Unknown 

Fields

goals :: [Goal]
 
focusSide :: Maybe Side
 
focusAt :: Int
 

data Goal Source

Constructors

Goal [Prop] Prop 

newtype Laws Source

Constructors

Laws [Prop] 

Instances

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