Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- assumption :: TacticsM ()
- assume :: OccName -> TacticsM ()
- recursion :: TacticsM ()
- restrictPositionForApplication :: TacticsM () -> TacticsM () -> TacticsM ()
- intros :: TacticsM ()
- destructAuto :: HyInfo CType -> TacticsM ()
- destructOrHomoAuto :: HyInfo CType -> TacticsM ()
- destruct :: HyInfo CType -> TacticsM ()
- homo :: HyInfo CType -> TacticsM ()
- destructLambdaCase :: TacticsM ()
- homoLambdaCase :: TacticsM ()
- apply :: HyInfo CType -> TacticsM ()
- split :: TacticsM ()
- splitAuto :: TacticsM ()
- splitSingle :: TacticsM ()
- requireNewHoles :: TacticsM () -> TacticsM ()
- splitConLike :: ConLike -> TacticsM ()
- splitDataCon :: DataCon -> TacticsM ()
- destructAll :: TacticsM ()
- userSplit :: OccName -> TacticsM ()
- matching :: (Judgement -> TacticsM ()) -> TacticsM ()
- attemptOn :: (Judgement -> [a]) -> (a -> TacticsM ()) -> TacticsM ()
- localTactic :: TacticsM a -> (Judgement -> Judgement) -> TacticsM a
- refine :: TacticsM ()
- auto' :: Int -> TacticsM ()
- overFunctions :: (HyInfo CType -> TacticsM ()) -> TacticsM ()
- overAlgebraicTerms :: (HyInfo CType -> TacticsM ()) -> TacticsM ()
- allNames :: Judgement -> Set OccName
- applyMethod :: Class -> PredType -> OccName -> TacticsM ()
- applyByName :: OccName -> TacticsM ()
- runTactic :: Context -> Judgement -> TacticsM () -> Either [TacticError] RunTacticResults
Documentation
assumption :: TacticsM () Source #
Use something in the hypothesis to fill the hole.
destructOrHomoAuto :: HyInfo CType -> TacticsM () Source #
When running auto, in order to prune the auto search tree, we try a homomorphic destruct whenever possible. If that produces any results, we can probably just prune the other side.
homo :: HyInfo CType -> TacticsM () Source #
Case split, using the same data constructor in the matches.
destructLambdaCase :: TacticsM () Source #
LambdaCase split, and leave holes in the matches.
homoLambdaCase :: TacticsM () Source #
LambdaCase split, using the same data constructor in the matches.
splitAuto :: TacticsM () Source #
Choose between each of the goal's data constructors. Different than
split
because it won't split a data con if it doesn't result in any new
goals.
splitSingle :: TacticsM () Source #
Like split
, but only works if there is a single matching data
constructor for the goal.
requireNewHoles :: TacticsM () -> TacticsM () Source #
Allow the given tactic to proceed if and only if it introduces holes that have a different goal than current goal.
splitConLike :: ConLike -> TacticsM () Source #
Attempt to instantiate the given ConLike to solve the goal.
INVARIANT: Assumes the given ConLike is appropriate to construct the type with.
splitDataCon :: DataCon -> TacticsM () Source #
Attempt to instantiate the given data constructor to solve the goal.
INVARIANT: Assumes the given datacon is appropriate to construct the type with.
destructAll :: TacticsM () Source #
Perform a case split on each top-level argument. Used to implement the "Destruct all function arguments" action.
matching :: (Judgement -> TacticsM ()) -> TacticsM () Source #
matching f
takes a function from a judgement to a Tactic
, and
then applies the resulting Tactic
.
applyByName :: OccName -> TacticsM () Source #
:: Context | |
-> Judgement | |
-> TacticsM () | Tactic to use |
-> Either [TacticError] RunTacticResults |
Attempt to generate a term of the right type using in-scope bindings, and a given tactic.