!š[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Safe;<P_ zsyntaxAn inference rule schema is just a curried n-ary function where n is an unbounded, unspecified number of input premises, possibly zero (in that case, the rule is an axiom). A 5 element may represent three possible situations: A failing computation which produces nothing; this is the degenerate case of a rule schema that always fails to match, and also what enables to make  an instance of [, \, and ].GA successful computation that produces a 0-ary function, i.e. an axiom;A successful computation that produces a unary function, that is, a function accepting one argument and possibly returning a new . Applying such a function to an input corresponds to "matching" the first premise of the rule schema against a candidate input. The result is either a matching failure or a new, partially applied rule.zsyntax;Constructs a single-premise rule from a matching function. Safe &'.1HPSX_/5 zsyntaxType of inference rules. Axioms are not considered rules in this case, so a rule takes at least one premise. Hence the corresponding type is a function from a premise sequent to a rule application result. zsyntaxIType of elements that represent the result of applying an inference rule.Such application may either fail, succeed with a value (when the rule has been fully applied), or succeed with a function (when the rule is only partially applied and has still some premises to match). zsyntax^Type of search nodes in the search space, given by a node together with a proof search stage.zsyntaxStages of proof searchzsyntax Initial nodezsyntax Active nodezsyntax Inactive nodezsyntaxConclusion nodezsyntaxForward subsumption-checkedzsyntaxBackward subsumption-checked zsyntaxGlobal index node!zsyntax Goal node% !"#$%&'()*+,-./012% !"#&'%21./0-()*+,$Safe4P_F5zsyntaxType of the result of A, which extracts all positive search results from a search result stream. An element of `Extraction a` is either a non-empty list of positive results, or an element of SpaceExhausted) giving a reason why no result was found.8zsyntaxKType of reasons why no result can be extracted from a search result stream.Either the search space has been exhaustively searched and no result was found (the query is not a theorem), or the search was terminated preemptively according to an upper bound imposed on the maximum depth of the search space.;zsyntaxType representing the result of proof search. Every element in the list corresponds to the result of analysing node in the search space by the search algorithm. The result is <3 in the positive case the node is a goal node, or > in the negative case.,The search agorithm produces an element of `; a` lazily, inserting > constructors to ensure that the computation is productive even in the case no goal node is found in the search space. This allows to perform proof search in an on-demand fashion, possibly giving up after a certain number of >s.?zsyntaxDelays a search result stream. delay x == Delay : x @zsyntax+Appends a result to a search result stream. cons x y = Res x : y AzsyntaxExtract all the positive results from a search result stream, stopping if no result is found after the given number of delays. 56789:;<=>?@A ;<=>56789:A?@Safe.P_HCzsyntax<Result type of matching a list of rules to an input sequent.CDEFKJIHGLMNOPQRSTUVWXYZ[EFKJIHGDCLMNOPQRSTUVWXYZ[ SafeP_I"#56789:;<=>?@A["#[NoneMP_Z|\zsyntaxA reaction list is a list of pairs, where in each pair the first component is an elementary base, and the second component is a control set._zsyntaxA control set is a set of linear contexts made up of atomic formulas, that is, multisets of formulas of the bonding language.NFor a context C in a control set S we may want to consider its superset closure, that is, have that C' is in S for all superset C' of C. We therefore distinguish between superset-closed contexts and normal contexts in a control set. Actually, superset-closed contexts are the only way to specify infinite control sets.kzsyntaxAChecks whether a linear context "respects" a control set context.lzsyntaxpChecks whether a linear context "respects" a control set, that is, if it respects all the control set contexts.nzsyntax0Extends a reaction list with an elementary base.ozsyntaxChecks whether an elementary base "respects" a reaction list, given a function to check whether the base "respects" the list's control sets.\]^_`abcedfhgijklmnofhgbced_`aijkl\]^mnoNone&'.1456@AEHMPSX_zsyntaxEType of formula labels. Note that logical atoms are their own labels.zsyntax Regular labelzsyntax Logical atomzsyntaxRType of basic formulas. A basic formula is one composed of conjunctions of atoms.zsyntax[Type of opaque formulas, that is, those for which we do not care about their formula kind.zsyntax{Type of labelled formulas, indexed by a formula kind and parameterized by the type of the labels and of the logical atoms.zsyntax6Heterogeneous equality test between labelled formulas.This function just compares the formulas' labels for equality, under the assumption that labels have been assigned in a sensible way.zsyntax3Heterogeneous comparison between labelled formulas.yThis function just compares the formulas' labels, under the assumption that labels have been assigned in a sensible way.zsyntaxFPretty-print labelled formulas, given a way to pretty-print its atoms.ENote that this function ignores labels, for which one should use the ^ instance.zsyntax2Returns the elementary base of a labelled formula.zsyntaxjConstructs the conjunction of two opaque formulas. The result is a provably conjunctive labelled formula.zsyntaxConstructs the Zsyntax conditional (aka linear implication) between two opaque formulas, whose reaction is described by a given elementary base and reaction list. The result is a provably implicational labelled formula.zsyntax/Constructs a basic formula from a logical atom.zsyntaxEConstructs the conjunction of two basic formulas, with a given label.zsyntaxDReturns the labelled formula corresponding to a given basic formula.~Note that the result formula is opaque, since it could be an atom as well as a conjunction, and thus has no determined index.zsyntaxvUnrolls a basic formula, discarding all labels and returning a (non-empty) list of all its constituent logical atoms.zsyntaxdDecides whether the input labelled formula is a basic formula, and if so, it returns it wrapped in _ as a proper basic formula.zsyntax0Converts a labelled axiom to a labelled formula.zsyntaxFPretty-prints a labelled axiom, given a way to pretty-print its atoms.JNote that this function ignores labels, for which one should rely on the ^ instance.zsyntax&Returns the label of a labelled axiom.zsyntax(Returns the label of a labelled formula.zsyntaxTReturns the result of a deep heterogeneous comparison between two labelled formulas.pComparison is "deep" in the sense that is considers the entire recursive structure of formulas. This is unlike , which only compares labels.''None&',-.14EHMPSVX_k zsyntax)Pre-sequents to be used as match results.zsyntaxSequent schemas.zsyntax^Type indicating the possible shapes of an active relation. An active relation has the form?act(delta ; omega ==>_zeta xi)[...] -> gamma' ; delta' -->> reswhere either 1. xi is a formula, zeta is a control set, and res is empty, or 2. xi is empty, zeta is empty, and res is a formula. zsyntax/Linear contexts that appear in sequent schemas.zsyntax\Type of neutral formulas, i.e. all formulas whose formula kind is classified as neutral by .zsyntaxMPredicate identifying those formula kinds corresponding to neutral formulas.zsyntaxType of labelled sequents.zsyntaxPType of labelled neutral contexts, i.e. multisets of neutral labelled formulas.zsyntaxEType of labelled unrestricted contexts, i.e. sets of labelled axioms.$$None&'14P_zsyntax9Derivation term of the labelled forward sequent calculus. None &'.HPUV_9zsyntaxQPredicate identifying those formula kinds that correspond to focusable formulas.zsyntaxxA rule of the derived rule calculus is a relation that has derivation term-decorated sequents as both input and output.zsyntaxQA relation is an unbounded curried function with an annotated sequents as input.zsyntaxDType of labelled sequents that are annotated with a derivation term.zsyntax(Type of derivation terms-decorated data.zsyntaxvGiven two multisets m1 and m2, it checks whether m1 is contained in m2, and returns the rest of m2 if it is the case.    None &'.HPX_k\zsyntax0Type of proper rules of the formal system, i.e. "s that take at least one premise.zsyntaxType of goal sequents.A goal sequent is characterized by an unrestricted context of axioms, a (non-empty) neutral context, and a consequent formula of unspecified formula kind (i.e., an opaque formula).#zsyntax#Computes the frontier of a sequent.%zsyntaxQComputes the set of initial rules from the frontier of a specified goal sequent. !"#$%&' !"#$%&'NoneP_RP   !"#$%&' None &'1456EPX_ ,zsyntaxType of ZBS sequents.1zsyntax^Type of logical formulas of Zsyntax, parameterized by the type of atoms (which are typically 6s).3zsyntax"Type of logical axioms of Zsyntax.6zsyntaxType of biochemical (non-logical) formulas, which constitute the logical atoms of logical formulas of Zsyntax. It is parameterized over the type of biochemical atoms. :zsyntaxJPretty-prints biochemical formulas, given a way to pretty print its atoms. \>>> ppBioFormula id (BioAtom "foo" <> BioAtom "bar" <> BioAtom "baz") "((foo " bar) " baz)" <zsyntaxUConstructs an axiom from non-empty lists of logical atoms as premise and conclusion.>zsyntaxFPretty-prints Zsyntax formulas, given a way to pretty-print its atoms.?zsyntax1Constructs an atomic formula from a logical atom.Azsyntax+Constructs the conjunction of two formulas.BzsyntaxConstructs a Zsyntax conditional (aka linear implication) between two formulas, whose associated biochemical reaction is described by a given elementary base and reaction list.Dzsyntax-Turns a sequent into a labelled goal sequent.IzsyntaxqCustom equality instance for biological atoms. It includes commutativity of the biological interaction operator.,-0/.123456879:;<=>?@ABCDEFG6879:345;<=12>?@AB,-0/.CDEFG NonePUV_XzsyntaxTurns a sequent into a labelled sequent that is suitable for proof search, by breaking the linear context formulas into neutral formulas, and labelling all subformulas with unique labels.Yzsyntax3Searches for a derivation of the specified sequent. .search g == searchLabelled (toLabelledGoal g) ZzsyntaxwSearches for a derivation of the specified goal sequent. Returns the search results, as well as all searched sequents.)56789:;A,-./0123456789:;<=>?@ABCDEFGVWXYZ YZX;56789:WVA` !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; ; < < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ]  ^ _ h `abcabdaefaghaijk%zsyntax-0.2.0.0-Tl0q16FmSaKhxAvioeXYQ Otter.RuleOtter.Internal.StructuresOtter.SearchResOtter.Internal.SearchZsyntax.ReactionListZsyntax.Labelled.FormulaZsyntax.Labelled.Rule.InterfaceZsyntax.Labelled.DerivationTerm$Zsyntax.Labelled.Rule.BipoleRelationZsyntax.Labelled.Rule.FrontierZsyntax.FormulaZsyntaxOtterZsyntax.Labelled.Rule ProperRuleRuleunRulematchapply arrowDimaprelDimap$fMonadFailRule$fMonadPlusRule$fAlternativeRule $fMonadRule $fFunctorRule$fApplicativeRuleSearchProperRule SearchRule GlobalIndex ConclNode InactiveNodes InactiveNode ActiveNodes FSCheckedNode BSCheckedNode ActiveNode SearchNodeStageInitialActiveInactiveConcl FSChecked BSCheckedGlIndexGoal Subsumablesubsumes extractNode initializeinitIsFSCheckdinitIsBSCheckdmkGoal emptyActivesemptyInactivesemptyGI toProperRule foldActivesactivate popInactiveOpaddToInactives fwdSubsumesremoveSubsumedByOp$fFoldableGlobalIndex$fShowSearchNode Extraction AllResults NoResults FailureReason NotATheorem SpaceTooBig SearchResResDelaydelayconsextractResults $fFunctorRes RuleAppResProver ProverStatePS_rules_actives _inactives_index_isGoal popInactive getActivesgetRulesisGoalMhaveGoalfilterUnsubsumedisNotFwdSubsumedremoveSubsumedByaddRule addInactive percolateprocessNewActivemergeloopdoSearchsearchRListRLunRLCtrlSetCSunCS CtrlSetCtxtCSC_cscType_cscCtxtCtrlTypeRegularSupersetClosed fromCSCtxts toCtxtList respectsCC msRespectsCSjustCSextend respectsRList $fEqCtrlType $fOrdCtrlType$fShowCtrlType$fEqCtrlSetCtxt$fOrdCtrlSetCtxt$fShowCtrlSetCtxt $fEqCtrlSet $fOrdCtrlSet$fSemigroupCtrlSet$fMonoidCtrlSet $fShowCtrlSet $fEqRList $fOrdRList$fSemigroupRList $fMonoidRList $fShowRListLabelLALAxiomLAxBFormulaBAtomBConjOpaqueOLFormulaAtomConjImpl ReactionListFKindKAtomKConjKImplElemBaseunEB frmlHetEq frmlHetOrd ppLFormulaelemBase withOpaqueoConjoImplbAtombConj bfToFormula bfToAtoms maybeBFormula axToFormulappLAxiomaxLabellabel deepHetComp $fOrdOpaque $fEqOpaque $fOrdLAxiom $fEqLAxiom$fSemigroupElemBase$fMonoidElemBase $fEqElemBase $fOrdElemBase$fShowElemBase$fFunctorBFormula$fFoldableBFormula$fTraversableBFormula$fShowBFormula $fShowLAxiom$fFunctorLAxiom$fFoldableLAxiom$fTraversableLAxiom $fEqLabel $fOrdLabel $fShowLabel $fShowOpaque$fTraversableLFormula$fFoldableLFormula$fFunctorLFormula$fShowLFormulaZetaXi FullZetaXi EmptyZetaXiMatchRes MREmptyGoal MRFullGoalSSchema SSEmptyGoal SSFullGoalActCaseFullXiEmptyResultEmptyXiFullResult SchemaLCtxtSLCNeutralN NeutralKind decideNeutralSubCtxtSC_scOnOnlyFirst _scRestFirstLSequentLSlsUCtxtlsLCtxtlsCtylsConclLCtxtUCtxt subCtxtOfwithMaybeNeutral withNeutralswitchN elemBaseAlllcBase$fNeutralKindKImpl$fNeutralKindKAtom $fOrdNeutral $fEqNeutral$fSubsumableLSequent$fSemigroupSchemaLCtxt $fShowNeutralDerivationTermInitCopyConjRConjLImplRImplLconcl transitions$fFunctorDerivationTerm DTMatchRes DTFocMatchRes FocMatchRes IsFocusable BipoleRule BipoleRel AnnLSequent:::_term_payloadrespects matchMultiSetmatchLinearCtxt matchSchemamatchRelpositiveFocalDispatch leftActivefocusimplLeftcopyRule implRight$fSubsumable:::$fBifunctor:::$fIsFocusableKConj$fIsFocusableKAtom$fEq:::$fOrd::: $fShow::: GoalNSequentGNS_gnsUC_gnsLC _gnsConclDecoratedFormulaUnrestrLinNegLinPosdfLabel toGoalSequent filterImplfrNegfrPosfocactfrontier generateRule initialRules mayProperRule maySequent$fOrdDecoratedFormula$fEqDecoratedFormula$fSubsumableGoalNSequent$fShowGoalNSequentSequentSQ_sqUC_sqLC_sqConclFormulaAxiomunSA BioFormulaBioAtomBioInter normalize ppBioFormulaaxForgetaxiomaxiom' ppFormulaatomlToSconjimplnuLabel neutralize maybeNeutral neutralizeOsneutralizeFormula$fOrdBioFormula$fEqBioFormula$fSemigroupBioFormula $fOrdAxiom $fEqAxiom $fOrdFormula $fEqFormula$fFunctorBioFormula$fFoldableBioFormula$fTraversableBioFormula$fShowBioFormula $fShowAxiom $fShowSequent $fShowFormulaDecoratedLSequenttoLabelledGoalsearchLabelledbaseGHC.Base Alternative MonadPlusControl.Monad.Fail MonadFailGHC.ShowShow GHC.MaybeJust