Îõ³h&C$A¡3      !"#$%&'()*+,-./012 Defines the  type(c) Junaid Rasheed, 2021-2022MPLjrasheed178@gmail.com experimental Safe-Inferred-.;ÀÁÂÃÄËØÙÛ5LPPaverThe Ï data type is used to represent non-strict inequalities. The LHS is a list of 3 variables along with their 4 coefficients. The RHS is a 4 number. Utility functions for the  type(c) Junaid Rasheed, 2021-2022MPLjrasheed178@gmail.com experimental Safe-Inferred-.;ÀÁÂÃÄËØÙÛâhLPPaverGet the LHS of a LPPaverGet the LHS of a LPPaver)Get a list of all variables in a list of sLPPaverConvert a list of s into a list of 5Äs. The function returns a pair with the first item being a list of 5)s and the second item being a mapping of 3 variables (from s) to 6 variables (for 5s).,Utility functions for LPPaver.Decide modules(c) Junaid Rasheed, 2021-2022MPLjrasheed178@gmail.com experimental Safe-Inferred-.;ÀÁÂÃÄËØÙÛØ!LPPaverDummy trace functionLPPaverCalculate the range of some 7 expression over the given 8 with the given 9 using :. LPPaverCalculate the gradient of some 7 expression over the given 8 with the given 9 using ;. LPPaverRun  on each 7 in a given list LPPaverRun   on each 7 in a given list LPPaverRun   on each '[E.E]' in a given list LPPaverRun   on each '[E.E]' in a given listLPPaverRun   on an [[<]]LPPaverRun   on an [[<]]LPPaver Evaluate an = over some 8 with a given 9 using LPPaverøFilter out expressions in a list which are certainly false. If an expression cannot be evaluated, do not filter it out.LPPaver÷Filter out expressions in a list which are certainly true. If an expression cannot be evaluated, do not filter it out.LPPaveròReturns true if any of the ranges of the given Expression have been evaluated to be greater than or equal to zero.LPPaver*The mean of a list of 'CN Dyadic' numbers.LPPaverëSafely find the maximum of a list of ordered elements, avoiding exceptions by ignoring anything with errorsLPPaver,Safely find the maximum centre of a list of >s over a given ?6, avoiding exceptions by ignoring anything with errorsLPPaver-Safely find the maximum minimum of a list of >s over a given ?6, avoiding exceptions by ignoring anything with errorsLPPaver-Safely find the maximum maximum of a list of >s over a given ?6, avoiding exceptions by ignoring anything with errorsLPPaver Bisect the widest interval in a 8LPPaver Bisect the widest interval in a @LPPaver•Ensures that the first varMap is within the second varMap If it is, returns the first varMap. If it isn't modifies the varMap so that the returned varMap is within the second varMap Both varmaps must have the same number of vars in the same order (order of vars not checked)LPPaver Version of 8 that returns Nothing if a calculation contains an errorLPPaverReturn the value of the given < expression/>ç at the extreme left corner and the extreme right corner as well as partial derivatives over the given ?-. Extreme corners are defined as the minimummaximum of every interval in a ? for the left#right extreme corners respectively.LPPaver)Decide if the ranges of a conjunction of <Ö expressions is false in a standard manner A range with an error is treated as false.LPPaver)Decide if the ranges of a conjunction of <Õ expressions is true in a standard manner A range with an error is treated as false. LPPaver)Decide if the ranges of a disjunction of <Õ expressions is true in a standard manner A range with an error is treated as false.!LPPaver)Decide if the ranges of a disjunction of <Ö expressions is false in a standard manner A range with an error is treated as false."LPPaverEvaluate the range of each <Ù expression in a disjunction and check if the disjunction is false in a standard manner. #LPPaverEvaluate the range of each <É expression in a CNF and check if the CNF is false in a standard manner. $LPPaverEvaluate the range of each <Ø expression in a conjunction and check if the conjunction is true in a standard manner. %LPPaver7Check the results of a disjunction in a standard manner&LPPaver7Check the results of a conjunction in a standard manner'LPPaver’Substitute all variable-defining equalities in a given conjunction. Simplify the conjunction after substituting all variable-defining equalities.!  !"#$%&'!  !"#$%&'Linearisations for conjunctions(c) Junaid Rasheed, 2021-2022MPLjrasheed178@gmail.com experimental Safe-Inferred-.;ÀÁÂÃÄËØÙÛ!T(LPPaverÜRemove unsat areas from a conjunction arising from a DNF by weakening the conjunction using *¦. The resulting linear system is solved and optimised by the two-phase simplex method. If the linear system is infeasible, the entire conjunction was unsatisfiable.)LPPaveræFind a satisfiable point from a conjunction arising from a DNF by strengthening the conjunction using +Ü. The resulting linear system is solved by the first phase of the two-phase simplex method.*LPPaverÀLinearisations that weaken a conjunction of terms over some box.+LPPaverÄLinearisations that strengthen a conjunction of terms over some box.(LPPaver†A list of values needed to linearise each term in the conjunction. In each triple, the first item is the value of the term from the extreme left corner of a 86, the second item is the value of the term from the extreme right corner of a 8Â, and the third item are partial derivatives of the term over a 8.LPPaver7The VarMap over which we are examining the conjunction.LPPaveréThe result of the simplex method on the resulting linear system. (Just False, Nothing) is returned if the system is infeasible. (Nothing, Just newArea) is returned if the system is feasible: newArea is an optimisation of the given 8.)LPPaver†A list of values needed to linearise each term in the conjunction. In each triple, the first item is the value of the term from the extreme left corner of a 86, the second item is the value of the term from the extreme right corner of a 8Â, and the third item are partial derivatives of the term over a 8.LPPaver7The VarMap over which we are examining the conjunction.LPPaver"A boolean used to determine which extremeÉ corner to strengthen the conjunction from. If true, linearise from the extreme left corner and vice versa.LPPaver?The result. If this is Nothing, no satisfiable point was found.*LPPaver†A list of values needed to linearise each term in the conjunction. In each triple, the first item is the value of the term from the extreme left corner of a 86, the second item is the value of the term from the extreme right corner of a 8Â, and the third item are partial derivatives of the term over a 8.LPPaver7The VarMap over which we are examining the conjunction.LPPaverÁAn implicit linear system that is a weakening of the conjunction.+LPPaver†A list of values needed to linearise each term in the conjunction. In each triple, the first item is the value of the term from the extreme left corner of a 86, the second item is the value of the term from the extreme right corner of a 8Â, and the third item are partial derivatives of the term over a 8.LPPaver7The VarMap over which we are examining the conjunction.LPPaver"A boolean used to determine which extremeÉ corner to strengthen the conjunction from. If true, linearise from the extreme left corner and vice versa.LPPaverÁAn implicit linear system that is a weakening of the conjunction.()*+()*+Algorithms for deciding DNFs(c) Junaid Rasheed, 2021-2022MPLjrasheed178@gmail.com experimental Safe-Inferred-.;ÀÁÂÃÄËØÙÛAG,LPPaverStart initial call to 0 for some conjunction in a DNF.-LPPaverCheck a DNF of <ô terms using a depth-first branch-and-prune algorithm which tends to perform well when the problem is unsatisfiable..LPPaverCheck a DNF of <ñ terms using a best-first branch-and-prune algorithm which tends to perform well when the problem is satisfiable./LPPaverØAttempt to decide a conjunction over some given box using basic interval evaluation via : 0LPPaver¬Decide a conjunction in a best-first manner using a priority queue. Maximal minimums over conjunctions are used to order them, with larger maximal minimums taking priority.1LPPaver£Decide a conjunction arising from a DNF over a given box using a depth-first branch-and-prune algorithm which tends to work well when the problem is unsatisfiable.2LPPaver Decide a conjunction arising from a DNF over a given box using a best-first branch-and-prune algorithm which tends to work well when the problem is satisfiable.,LPPaverÌEach item is a term in the conjunction. The first item of each pair is the <5 representation of the term and the second item is a > equivalent of the same term.LPPaver4The area over which we are checking the conjunction.LPPaverÆThe maximum number of boxes that should be examined before giving up. LPPaverÙA rational number used as a heuristic to determine when to recurse when pruning with the simplex method. 1.2 (the recommended default) means the simplex method will recurse if the box being examined has shrunk by 20%LPPaver9 used for As. B 100 is the recommended default.LPPaverŒThe return result. (Nothing, Just indeterminateArea) means that the algorithm could not make a decision and returns an example of an indeterminate area. (Just False, Nothing) means that the algorithm has decided the DNF is unsatisfiable over the given area. (Just True, Just satArea) means that the algorithm has decided the DNF is satisfiable (with satArea being a model) over the given area.-LPPaverÌEach item is a term in the conjunction. The first item of each pair is the <5 representation of the term and the second item is a > equivalent of the same term.LPPaver4The area over which we are checking the conjunction.LPPaver6The maximum depth that we can reach before giving up. LPPaverÙA rational number used as a heuristic to determine when to recurse when pruning with the simplex method. 1.2 (the recommended default) means the simplex method will recurse if the box being examined has shrunk by 20%LPPaver9 used for As. B 100 is the recommended default.LPPaverŒThe return result. (Nothing, Just indeterminateArea) means that the algorithm could not make a decision and returns an example of an indeterminate area. (Just False, Nothing) means that the algorithm has decided the DNF is unsatisfiable over the given area. (Just True, Just satArea) means that the algorithm has decided the DNF is satisfiable (with satArea being a model) over the given area..LPPaverÌEach item is a term in the conjunction. The first item of each pair is the <5 representation of the term and the second item is a > equivalent of the same term.LPPaver4The area over which we are checking the conjunction.LPPaverÆThe maximum number of boxes that should be examined before giving up. LPPaverÙA rational number used as a heuristic to determine when to recurse when pruning with the simplex method. 1.2 (the recommended default) means the simplex method will recurse if the box being examined has shrunk by 20%LPPaver9 used for As. B 100 is the recommended default.LPPaverŒThe return result. (Nothing, Just indeterminateArea) means that the algorithm could not make a decision and returns an example of an indeterminate area. (Just False, Nothing) means that the algorithm has decided the DNF is unsatisfiable over the given area. (Just True, Just satArea) means that the algorithm has decided the DNF is satisfiable (with satArea being a model) over the given area./LPPaverÌEach item is a term in the conjunction. The first item of each pair is the <5 representation of the term and the second item is a > equivalent of the same term.0LPPaverŽThe priority queue. Maximal minimals are represented using CN MPBall. Each element in the queue is a triple. The first item is a pair where C is an <$ representation of the term and the D is a >­ equivalent of the same term. The second item is the area over which the previous conjunction should be examined. The third item is a boolean used to determine from which extreme% corner to linearise the conjunction.LPPaver,The number of boxes that have been examined.LPPaverÆThe maximum number of boxes that should be examined before giving up. LPPaverèA rational number used as a heuristic to determine when to recurse when pruning with the simplex method.LPPaver9 used for As. B 100 is the recommended default.LPPaverŒThe return result. (Nothing, Just indeterminateArea) means that the algorithm could not make a decision and returns an example of an indeterminate area. (Just False, Nothing) means that the algorithm has decided the DNF is unsatisfiable over the given area. (Just True, Just satArea) means that the algorithm has decided the DNF is satisfiable (with satArea being a model) over the given area.1LPPaverÌEach item is a term in the conjunction. The first item of each pair is the <5 representation of the term and the second item is a > equivalent of the same term.LPPaveröThe initial area over which the box is being examined. This remains unchanged during recursive calls to this function.LPPaver6The current area over which the box is being examined.LPPaverThe current depth.LPPaver*The maximum allowed depth before giving upLPPaverÙA rational number used as a heuristic to determine when to recurse when pruning with the simplex method. 1.2 (the recommended default) means the simplex method will recurse if the box being examined has shrunk by 20%LPPaver9 used for As. B 100 is the recommended default.LPPaverŒThe return result. (Nothing, Just indeterminateArea) means that the algorithm could not make a decision and returns an example of an indeterminate area. (Just False, Nothing) means that the algorithm has decided the DNF is unsatisfiable over the given area. (Just True, Just satArea) means that the algorithm has decided the DNF is satisfiable (with satArea being a model) over the given area.2LPPaverÌEach item is a term in the conjunction. The first item of each pair is the <5 representation of the term and the second item is a > equivalent of the same term.LPPaveröThe initial area over which the box is being examined. This remains unchanged during recursive calls to this function.LPPaver6The current area over which the box is being examined.LPPaverÙA rational number used as a heuristic to determine when to recurse when pruning with the simplex method. 1.2 (the recommended default) means the simplex method will recurse if the box being examined has shrunk by 20%LPPaver9 used for As. B 100 is the recommended default.LPPaver A boolean used to determine the extreme* corner to linearise the conjunction from.LPPaver”The return result For the first item, Nothing means the algorithm could not decide, Just False means unsatisfiable and Just True means satisfiable. The second item gives a counter-example/indeterminate area if appropriate. The third item is a filtered conjunction: terms which interval evaluate to true are filtered out. A boolean specifying the last corner from which the conjunction was linearised.,-./012,-./012 Safe-Inferred.;ÀÁÂÃÄËØÙÛA”EFGHIJKLÍ      !"#$%&'()*+,-./0123456789:;<:=>?@ABCDEFGEHIJKLMNOMNPEFQEFRMNSMTUEHVJWXJKY:Z[:Z\]^_`abcdå&LPPaver-0.0.3.1-GoPPcOVGDGSGslcu3IE6H4LPPaver.Constraint.TypeLPPaver.Constraint.UtilLPPaver.Decide.UtilLPPaver.Decide.LinearisationLPPaver.Decide.Algorithm Paths_LPPaver ConstraintGEQLEQconstraintLeftSideconstraintRightSideconstraintVarsconstraintsToSimplexConstraintstraceapplyExpressiongradientExpressionapplyExpressionListgradientExpressionListapplyExpressionDoubleListgradientExpressionDoubleListapplyESafeDoubleListgradientESafeDoubleListcheckFWithApplyfilterOutFalseExpressionsfilterOutTrueExpressionsdecideRangesGEZeromean safeMaximumsafeMaximumCentresafeMaximumMinimumsafeMaximumMaximumbisectWidestIntervalbisectWidestTypedIntervalensureVarMapWithinVarMap'safelyComputeCornerValuesAndDerivatives!computeCornerValuesAndDerivativesdecideConjunctionRangesFalsedecideConjunctionRangesTruedecideDisjunctionRangesTruedecideDisjunctionRangesFalsedecideDisjunctionFalsedecideCNFFalsedecideConjunctionTruecheckDisjunctionResultscheckConjunctionResultssubstituteConjunctionEqualities%removeConjunctionUnsatAreaWithSimplex!findConjunctionSatAreaWithSimplex-createConstraintsToRemoveConjunctionUnsatArea"createConstraintsToFindSatSolutionsetupBestFirstCheckDNFcheckEDNFDepthFirstWithSimplexcheckEDNFBestFirstWithSimplexCEdecideConjunctionWithApplydecideConjunctionBestFirst&decideConjunctionDepthFirstWithSimplexdecideConjunctionWithSimplexCEbaseGHC.BaseStringGHC.RealRational-simplex-method-0.1.0.0-JZppxmmxxj7JQ35FUmHHiuLinear.Simplex.TypesPolyConstraint ghc-bignumGHC.Num.IntegerInteger&PropaFP-0.1.1.0-9ZNotVRhYtR2mLj8t9hzo4PropaFP.ExpressionEPropaFP.VarMapVarMap&aern2-mp-0.2.9.1-JXWq3AK8QxFfyNYG9a0xZAERN2.MP.Precision Precision)aern2-mfun-0.2.9.0-LhewNeSjM9dEUfejU4JZnIAERN2.BoxFun.TypeapplygradientESafeFBoxFunAERN2.BoxFun.BoxBox TypedVarMapAERN2.MP.Ball.TypeMPBallprec Data.Tuplefstsndversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName