Copyright | (c) Reed Mullanix 2019 |
---|---|
License | BSD-style |
Maintainer | reedmullanix@gmail.com |
Safe Haskell | None |
Language | Haskell2010 |
WARNING
This module is considered internal, and can change at any given time.
Synopsis
- newtype TacticT jdg ext m a = TacticT {
- unTacticT :: StateT jdg (ProofStateT ext m) a
- mapTacticT :: Monad m => (m a -> m b) -> TacticT jdg ext m a -> TacticT jdg ext m b
- stateful :: Monad m => TacticT jdg ext m a -> (jdg -> RuleT jdg ext (StateT s m) ext) -> s -> TacticT jdg ext m a
- asRule :: Monad m => jdg -> TacticT jdg ext m a -> RuleT jdg ext m ext
- class Monad m => MonadRule jdg ext m | m -> jdg, m -> ext where
- subgoal :: jdg -> m ext
- newtype RuleT jdg ext m a = RuleT {}
- mapRuleT :: Monad m => (m a -> m b) -> RuleT jdg ext m a -> RuleT jdg ext m b
- class Monad m => MonadProvable jdg m | m -> jdg where
- proving :: jdg -> m jdg
- newtype ProvableT jdg m a = ProvableT {
- runProvableT :: m a
- type Provable jdg a = ProvableT jdg Identity a
- runProvable :: Provable jdg a -> a
Documentation
newtype TacticT jdg ext m a Source #
A
is a monad transformer that performs proof refinement.
The type variables signifiy:TacticT
jdg
- The goal type. This is the thing we are trying to construct a proof of.ext
- The extract type. This is what we will recieve after running the tactic.m
- The base monad.a
- The return value. This to make
a monad, and will always beTacticT
'()'
TacticT | |
|
Instances
mapTacticT :: Monad m => (m a -> m b) -> TacticT jdg ext m a -> TacticT jdg ext m b Source #
Map the unwrapped computation using the given function
stateful :: Monad m => TacticT jdg ext m a -> (jdg -> RuleT jdg ext (StateT s m) ext) -> s -> TacticT jdg ext m a Source #
Helper function for making "stateful" tactics like "@"
asRule :: Monad m => jdg -> TacticT jdg ext m a -> RuleT jdg ext m ext Source #
Transforms a tactic into a rule. Useful for doing things with
.stateful
class Monad m => MonadRule jdg ext m | m -> jdg, m -> ext where Source #
Nothing
subgoal :: jdg -> m ext Source #
Create a subgoal, and return the resulting extract.
subgoal :: (MonadTrans t, MonadRule jdg ext m1, m ~ t m1) => jdg -> m ext Source #
Create a subgoal, and return the resulting extract.
Instances
MonadRule jdg ext m => MonadRule jdg ext (ProvableT env m) Source # | |
Defined in Refinery.Tactic.Internal | |
MonadRule jdg ext m => MonadRule jdg ext (ExceptT env m) Source # | |
Defined in Refinery.Tactic.Internal | |
MonadRule jdg ext m => MonadRule jdg ext (StateT env m) Source # | |
Defined in Refinery.Tactic.Internal | |
MonadRule jdg ext m => MonadRule jdg ext (ReaderT env m) Source # | |
Defined in Refinery.Tactic.Internal | |
Monad m => MonadRule jdg ext (RuleT jdg ext m) Source # | |
Defined in Refinery.Tactic.Internal |
newtype RuleT jdg ext m a Source #
A
is a monad transformer for creating inference rules.RuleT
Instances
Monad m => MonadRule jdg ext (RuleT jdg ext m) Source # | |
Defined in Refinery.Tactic.Internal | |
MonadState s m => MonadState s (RuleT jdg ext m) Source # | |
MonadReader env m => MonadReader env (RuleT jdg ext m) Source # | |
MonadError err m => MonadError err (RuleT jdg ext m) Source # | |
Defined in Refinery.Tactic.Internal throwError :: err -> RuleT jdg ext m a # catchError :: RuleT jdg ext m a -> (err -> RuleT jdg ext m a) -> RuleT jdg ext m a # | |
MonadExtract ext m => MonadExtract ext (RuleT jdg ext m) Source # | |
Defined in Refinery.Tactic | |
MFunctor (RuleT jdg ext :: (Type -> Type) -> Type -> Type) Source # | |
MonadTrans (RuleT jdg ext) Source # | |
Defined in Refinery.Tactic.Internal | |
Functor m => Monad (RuleT jdg ext m) Source # | |
Functor m => Functor (RuleT jdg ext m) Source # | |
Functor m => Applicative (RuleT jdg ext m) Source # | |
Defined in Refinery.Tactic.Internal pure :: a -> RuleT jdg ext m a # (<*>) :: RuleT jdg ext m (a -> b) -> RuleT jdg ext m a -> RuleT jdg ext m b # liftA2 :: (a -> b -> c) -> RuleT jdg ext m a -> RuleT jdg ext m b -> RuleT jdg ext m c # (*>) :: RuleT jdg ext m a -> RuleT jdg ext m b -> RuleT jdg ext m b # (<*) :: RuleT jdg ext m a -> RuleT jdg ext m b -> RuleT jdg ext m a # | |
MonadIO m => MonadIO (RuleT jdg ext m) Source # | |
Defined in Refinery.Tactic.Internal | |
MonadThrow m => MonadThrow (RuleT jdg ext m) Source # | |
Defined in Refinery.Tactic.Internal | |
MonadCatch m => MonadCatch (RuleT jdg ext m) Source # | |
mapRuleT :: Monad m => (m a -> m b) -> RuleT jdg ext m a -> RuleT jdg ext m b Source #
Map the unwrapped computation using the given function
class Monad m => MonadProvable jdg m | m -> jdg where Source #
Nothing
proving :: jdg -> m jdg Source #
Applies a transformation of goals at every step of the tactic.
proving :: (MonadTrans t, MonadProvable jdg m1, m ~ t m1) => jdg -> m jdg Source #
Applies a transformation of goals at every step of the tactic.
Instances
Monad m => MonadProvable jdg (ProvableT jdg m) Source # | |
Defined in Refinery.Tactic.Internal | |
MonadProvable jdg m => MonadProvable jdg (ExceptT err m) Source # | |
Defined in Refinery.Tactic.Internal | |
MonadProvable jdg m => MonadProvable jdg (StateT s m) Source # | |
Defined in Refinery.Tactic.Internal | |
MonadProvable jdg m => MonadProvable jdg (ProofStateT ext m) Source # | |
Defined in Refinery.Tactic.Internal proving :: jdg -> ProofStateT ext m jdg Source # | |
MonadProvable jdg m => MonadProvable jdg (ReaderT r m) Source # | |
Defined in Refinery.Tactic.Internal |
newtype ProvableT jdg m a Source #
Helper newtype for when you don't have any need for the mechanisms of MonadProvable.
ProvableT | |
|
Instances
runProvable :: Provable jdg a -> a Source #