Safe Haskell | None |
---|---|

Language | Haskell98 |

Implements a proof state, some primitive tactics for manipulating proofs, and some high level commands for introducing new theorems, evaluation/checking inside the proof system, etc.

- data ProofTerm
- data Goal = GD {}
- mkProofTerm :: Term -> ProofTerm
- getProofTerm :: ProofTerm -> Term
- updateSolved :: [(Name, Term)] -> ProofTerm -> ProofTerm
- updateSolvedTerm :: [(Name, Term)] -> Term -> Term
- updateSolvedTerm' :: [(Name, Term)] -> Term -> (Term, Bool)
- bound_in :: ProofTerm -> [Name]
- bound_in_term :: Term -> [Name]
- refocus :: Hole -> ProofTerm -> ProofTerm
- updsubst :: Eq n => n -> TT n -> TT n -> TT n
- type Hole = Maybe Name
- type RunTactic' a = Context -> Env -> Term -> StateT a TC Term
- goal :: Hole -> ProofTerm -> TC Goal
- atHole :: Hole -> RunTactic' a -> Context -> Env -> ProofTerm -> StateT a TC (ProofTerm, Bool)

# Documentation

mkProofTerm :: Term -> ProofTerm Source

getProofTerm :: ProofTerm -> Term Source

updateSolvedTerm :: [(Name, Term)] -> Term -> Term Source

Given a list of solved holes, fill out the solutions in a term

updateSolvedTerm' :: [(Name, Term)] -> Term -> (Term, Bool) Source

Given a list of solved holes, fill out the solutions in a term. Return whether updates were performed, to facilitate sharing when there are no updates.

bound_in_term :: Term -> [Name] Source

refocus :: Hole -> ProofTerm -> ProofTerm Source

Refocus the proof term zipper on a particular hole, if it exists. If not, return the original proof term.

As `subst`

, in TT, but takes advantage of knowing not to substitute
under Complete applications.