úÎ!<%6{^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]Safe^_`abcde(c) Reed Mullanix 2019 BSD-stylereedmullanix@gmail.comSafe%78;=>?@ACHPVX_?refineryGenerates a "hole" of type ext0, which should represent an incomplete extract.       (c) Reed Mullanix 2019 BSD-stylereedmullanix@gmail.comNone78;=>?@ACHMPVX_d(refinery3Create a subgoal, and return the resulting extract.)refineryA )5 is a monad transformer for creating inference rules.,refineryA ,U is a monad transformer that performs proof refinement. The type variables signifiy:jdgJ - The goal type. This is the thing we are trying to construct a proof of.extK - The extract type. This is what we will recieve after running the tactic.err - The error type. We can use f/ to abort the computation with a provided errors - The state type.m - The base monad.a$ - The return value. This to make , a monad, and will always be '()'/refinery'Helper function for producing a tactic.0refinery,Helper function for deconstructing a tactic.1refinery6Map the unwrapped computation using the given function '()*+,-./01 ,-./01'()*+(c) Reed Mullanix 2019 BSD-stylereedmullanix@gmail.comNone8=>?@ACHMPVX_5ÄPrefineryLCreate a tactic that applies each of the tactics in the list to one subgoal.êWhen the number of subgoals is greater than the number of provided tactics, the identity tactic is applied to the remainder. When the number of subgoals is less than the number of provided tactics, the remaining tactics are ignored.Qrefineryt1  % t2" will interleave the execution of t1 and t2. This is useful if t1D will produce an infinite number of extracts, as we will still run t2. This is contrasted with t1  | t2, which will not ever consider t2 if t1) produces an infinite number of extracts.Rrefinery commit t1 t2 will run t1, and then only run t2 if t1 failed to produce any extracts.Srefinery.Tries to run a tactic, backtracking on failureTrefinery'Runs a tactic repeatedly until it failsUrefineryGet the current goalVrefinery choice ts} will run all of the tactics in the list against the current subgoals, and interleave their extracts in a manner similar to Q.Wrefineryprogress eq err t applies the tactic tZ, and checks to see if the resulting subgoals are all equal to the initial goal by using eq. If they are, it throws err.Xrefinery gather t f runs the tactic t , then runs fI with all of the generated subgoals to determine the next tactic to run.Yrefinery pruning t f runs the tactic t@, and then applies a predicate to all of the generated subgoals.Zrefinery filterT p f t runs the tactic t>, and applies a predicate to the state after the execution of t$. We also run a "cleanup" function fW. Note that the predicate is applied to the state _before_ the cleanup function is run.[refineryHApply the first tactic, and then apply the second tactic focused on the n th subgoal.\refinery]Runs a tactic, producing a list of possible extracts, along with a list of unsolved subgoals.]refinery%Turn an inference rule into a tactic.'(),PQRSTUVWXYZ[\],\PQRSTVWXYZU['()]Q3g      !"#$%&'()*+,-../00123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl'refinery-0.3.0.0-Fdcu2SHDGUb4nunxmlwjIURefinery.ProofStateRefinery.Tactic.InternalRefinery.TacticPaths_refinery MonadExtracthole ProofStateTSubgoalEffectStatefulAlt InterleaveCommitEmptyFailureAxiom applyContproofs accumEitheraxiomsubgoals mapExtract mapExtract'$fMonadStatesProofStateT$fMonadReaderrProofStateT$fMonadErrorerrProofStateT$fMonadCatchProofStateT$fMonadThrowProofStateT$fMonadIOProofStateT$fMonadPlusProofStateT$fAlternativeProofStateT$fMonadTransProofStateT$fMonadProofStateT$fMFunctorTYPEProofStateT$fApplicativeProofStateT$fFunctorProofStateT$fShowProofStateT$fMonadExtractextExceptT$fMonadExtractextWriterT$fMonadExtractextWriterT0$fMonadExtractextStateT$fMonadExtractextReaderT$fGenericProofStateT MonadRulesubgoalRuleTunRuleTTacticT unTacticTtactic proofState mapTacticT$fMonadStatesTacticT$fMonadTransTacticT$fMFunctorTYPETacticT $fShowTacticT$fMonadErrorerrRuleT$fMonadIORuleT$fMFunctorTYPERuleT$fMonadTransRuleT$fMonadReaderrRuleT$fMonadStatesRuleT $fMonadRuleT$fApplicativeRuleT$fFunctorRuleT $fShowRuleT$fMonadRulejdgextExceptT$fMonadRulejdgextStateT$fMonadRulejdgextReaderT$fMonadRulejdgextRuleT$fFunctorTacticT$fApplicativeTacticT$fAlternativeTacticT$fMonadTacticT$fMonadPlusTacticT$fMonadReaderTacticT$fMonadErrorTacticT$fMonadIOTacticT$fMonadThrowTacticT$fMonadCatchTacticT$fGenericTacticT$fGenericRuleT<@><%>committrymany_goalchoiceprogressgatherpruningensurefocus runTacticTruleversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName mtl-2.2.2Control.Monad.Error.Class throwError