tamarin-prover-0.8.0.0: src/Theory/Constraint/Solver.hs
-- |
-- Copyright : (c) 2010-2012 Benedikt Schmidt & Simon Meier
-- License : GPL v3 (see LICENSE)
--
-- Maintainer : Simon Meier <iridcode@gmail.com>
-- Portability : GHC only
--
-- The public interface of the constraint solver, which implements all
-- constraint reduction rules and together with a rule application heuristic.
module Theory.Constraint.Solver (
-- * Constraint systems
module Theory.Constraint.System
-- * Proof contexts
-- | The proof context captures all relevant information about the context
-- in which we are using the constraint solver. These are things like the
-- signature of the message theory, the multiset rewriting rules of the
-- protocol, the available precomputed case distinctions, whether induction
-- should be applied or not, whether typed or untyped case distinctions are
-- used, and whether we are looking for the existence of a trace or proving
-- the absence of any trace satisfying the constraint system.
, ProofContext(..)
, pcSignature
, pcRules
, pcCaseDists
, pcUseInduction
, pcCaseDistKind
, pcTraceQuantifier
, pcInjectiveFactInsts
, InductionHint(..)
, ClassifiedRules(..)
, joinAllRules
, crProtocol
, crConstruct
, crDestruct
-- * Constraint reduction rules
-- ** Contradictions
-- | All rules that reduce a constraint system to the empty set of
-- constraint systems. The 'Contradiction' datatype stores the information
-- about the contradiction for later display to the user.
, Contradiction
, contradictions
-- ** Precomputed case distinctions
-- | For better speed, we precompute case distinctions. This is especially
-- important for getting rid of all chain constraints before actually
-- starting to verify security properties.
, CaseDistinction
, cdGoal
, cdCases
, precomputeCaseDistinctions
, refineWithTypingAsms
, unsolvedChainConstraints
-- * Proof methods
-- | Proof methods are the external to the constraint solver. They allow its
-- small step execution. This module also provides the heuristics for
-- selecting the best proof method to apply to a constraint system.
, module Theory.Constraint.Solver.ProofMethod
-- ** Convenience export
, module Logic.Connectives
) where
import Logic.Connectives
import Theory.Constraint.Solver.CaseDistinctions
import Theory.Constraint.Solver.Contradictions
import Theory.Constraint.Solver.ProofMethod
import Theory.Constraint.Solver.Types
import Theory.Constraint.System