Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
This module implements "Proof by Logical Evaluation" where we unfold function definitions if they *must* be unfolded, to strengthen the environments with function-definition-equalities. The algorithm is discussed at length in:
- "Refinement Reflection", POPL 2018, https://arxiv.org/pdf/1711.03842
- "Reasoning about Functions", VMCAI 2018, https://ranjitjhala.github.io/static/reasoning-about-functions.pdf
Synopsis
- instantiate :: Loc a => Config -> SInfo a -> Maybe [SubcId] -> IO (SInfo a)
- data FuelCount = FC {}
- data ICtx = ICtx {}
- data Knowledge = KN {
- knSims :: Map Symbol [(Rewrite, IsUserDataSMeasure)]
- knAms :: Map Symbol Equation
- knContext :: Context
- knPreds :: Context -> [(Symbol, Sort)] -> Expr -> IO Bool
- knLams :: ![(Symbol, Sort)]
- knSummary :: ![(Symbol, Int)]
- knDCs :: !(HashSet Symbol)
- knDataCtors :: !(HashMap Symbol DataCtor)
- knSels :: !SelectorMap
- knConsts :: !ConstDCMap
- knAutoRWs :: HashMap SubcId [AutoRewrite]
- knRWTerminationOpts :: RWTerminationOpts
- simplify :: Knowledge -> ICtx -> Expr -> Expr
Documentation
instantiate :: Loc a => Config -> SInfo a -> Maybe [SubcId] -> IO (SInfo a) Source #
Strengthen Constraint Environments via PLE
ICtx
is the local information -- at each trie node -- obtained by incremental PLE
Knowledge (SMT Interaction)
KN | |
|