SMT-LIB logics #
A Logic names the fragment a solver should expect, as Solver.setLogic takes it: QF_LIA,
UFBV, ALL… Start from a named logic and extend it, or build one from nothing with Logic.mk:
s.setLogic Logic.qf_lia.uf -- QF_UFLIA
s.setLogic (Logic.mk.uf.arith .lia).toLogic.qf -- QF_UFLIA
Logic.ofSmtLib parses a logic's name, and Logic.toSmtLib prints one.
Difference logic / linearity / transcendental numbers.
- diff : Kind
Only permits difference logic (implies linear).
- nonDiff
(linear transcendental : Bool)
: Kind
Arithmetic.
linear: only allows linear terms if true, allows non-linear terms if false.transcendental: (dis)allows non-algebraic numbers (wikipedia).
Instances For
Instances For
Equations
- Cvc.Logic.Arith.Kind.diff.setNonDiff = Cvc.Logic.Arith.Kind.nonDiff true false
- (Cvc.Logic.Arith.Kind.nonDiff linear transcendental).setNonDiff = Cvc.Logic.Arith.Kind.nonDiff linear transcendental
Instances For
Equations
Instances For
Equations
Instances For
Instances For
Gives the I, R, or IR part of the logic, e.g. IR in LIRA.
Equations
Instances For
Equations
- Cvc.Logic.Arith.IntReal.ofSmtLib "I" = pure Cvc.Logic.Arith.IntReal.int
- Cvc.Logic.Arith.IntReal.ofSmtLib "R" = pure Cvc.Logic.Arith.IntReal.real
- Cvc.Logic.Arith.IntReal.ofSmtLib "IR" = pure Cvc.Logic.Arith.IntReal.both
- Cvc.Logic.Arith.IntReal.ofSmtLib x✝ = Cvc.throwUser (toString "illegal int/real bit `" ++ toString x✝ ++ toString "`, expected `I`, `R`, or `IR`")
Instances For
Equations
- Cvc.Logic.Arith.simplest = { kind := Cvc.Logic.Arith.Kind.simplest, intReal := Cvc.Logic.Arith.IntReal.simplest }
Instances For
Equations
- self.setNonDiff = { kind := self.kind.setNonDiff, intReal := self.intReal }
Instances For
Equations
- self.setNonLinear = { kind := self.kind.setNonLinear, intReal := self.intReal }
Instances For
Equations
- self.setTranscendental = { kind := self.kind.setTranscendental, intReal := self.intReal }
Instances For
Generates the arithmetic part of an SMT-LIB logic, e.g. NIRA.
Equations
- One or more equations did not get rendered due to their size.
Instances For
LIA.
Equations
- Cvc.Logic.Arith.lia = { kind := Cvc.Logic.Arith.Kind.nonDiff true false, intReal := Cvc.Logic.Arith.IntReal.int }
Instances For
LRA.
Equations
- Cvc.Logic.Arith.lra = { kind := Cvc.Logic.Arith.Kind.nonDiff true false, intReal := Cvc.Logic.Arith.IntReal.real }
Instances For
LIRA.
Equations
- Cvc.Logic.Arith.lira = { kind := Cvc.Logic.Arith.Kind.nonDiff true false, intReal := Cvc.Logic.Arith.IntReal.both }
Instances For
NIA.
Equations
- Cvc.Logic.Arith.nia = { kind := Cvc.Logic.Arith.Kind.nonDiff false false, intReal := Cvc.Logic.Arith.IntReal.int }
Instances For
NRA.
Equations
- Cvc.Logic.Arith.nra = { kind := Cvc.Logic.Arith.Kind.nonDiff false false, intReal := Cvc.Logic.Arith.IntReal.real }
Instances For
NIRA.
Equations
- Cvc.Logic.Arith.nira = { kind := Cvc.Logic.Arith.Kind.nonDiff false false, intReal := Cvc.Logic.Arith.IntReal.both }
Instances For
LIAT.
Equations
- Cvc.Logic.Arith.liat = { kind := Cvc.Logic.Arith.Kind.nonDiff true true, intReal := Cvc.Logic.Arith.IntReal.int }
Instances For
LRAT.
Equations
- Cvc.Logic.Arith.lrat = { kind := Cvc.Logic.Arith.Kind.nonDiff true true, intReal := Cvc.Logic.Arith.IntReal.real }
Instances For
LIRAT.
Equations
- Cvc.Logic.Arith.lirat = { kind := Cvc.Logic.Arith.Kind.nonDiff true true, intReal := Cvc.Logic.Arith.IntReal.both }
Instances For
NIAT.
Equations
- Cvc.Logic.Arith.niat = { kind := Cvc.Logic.Arith.Kind.nonDiff false true, intReal := Cvc.Logic.Arith.IntReal.int }
Instances For
NRAT.
Equations
- Cvc.Logic.Arith.nrat = { kind := Cvc.Logic.Arith.Kind.nonDiff false true, intReal := Cvc.Logic.Arith.IntReal.real }
Instances For
NIRAT.
Equations
- Cvc.Logic.Arith.nirat = { kind := Cvc.Logic.Arith.Kind.nonDiff false true, intReal := Cvc.Logic.Arith.IntReal.both }
Instances For
IDL.
Equations
- Cvc.Logic.Arith.idl = { kind := Cvc.Logic.Arith.Kind.diff, intReal := Cvc.Logic.Arith.IntReal.int }
Instances For
RDL.
Equations
- Cvc.Logic.Arith.rdl = { kind := Cvc.Logic.Arith.Kind.diff, intReal := Cvc.Logic.Arith.IntReal.real }
Instances For
IRDL.
Equations
- Cvc.Logic.Arith.irdl = { kind := Cvc.Logic.Arith.Kind.diff, intReal := Cvc.Logic.Arith.IntReal.both }
Instances For
Whether the logic is ALL or enables at least one theory.
Equations
Instances For
Equations
The empty logic, to add theories to.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds higher-order reasoning, HO_.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Makes the logic quantifier-free, QF_.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds separation logic, SEP_.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds arrays, A or AX.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds uninterpreted functions, UF.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds cardinality constraints, C.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds bit-vectors, BV.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds finite fields, FF.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds floating-point arithmetic, FP.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds datatypes, DT.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds strings, S.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Makes the arithmetic linear rather than difference logic.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Makes the arithmetic non-linear.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds transcendental functions to the arithmetic.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds integers to the arithmetic.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds reals to the arithmetic.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Starts building a logic from nothing.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds higher-order reasoning, HO_.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Makes the logic quantifier-free, QF_.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds separation logic, SEP_.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds arrays, A or AX.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds uninterpreted functions, UF.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds cardinality constraints, C.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds bit-vectors, BV.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds finite fields, FF.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds floating-point arithmetic, FP.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds datatypes, DT.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Adds strings, S.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Pure arithmetic logics #
Each is the logic of its name: Logic.lira is LIRA, Logic.qf_nia is QF_NIA.
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Conversion from/to strings #
SMT-LIB string representation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
SMT-LIB string representation.
Equations
Instances For
Equations
- Cvc.Logic.instToString = { toString := Cvc.Logic.toString }
Parses an SMT-LIB logic name, such as QF_UFLIA.