An atomic comparison between an integer polynomial and zero.
Instances For
Boolean combinations of univariate polynomial atoms.
- atom
(a : Atom)
: Formula
A polynomial comparison.
- tt : Formula
Truth.
- ff : Formula
Falsity.
- not
(φ : Formula)
: Formula
Boolean negation.
- and
(φ ψ : Formula)
: Formula
Boolean conjunction.
- or
(φ ψ : Formula)
: Formula
Boolean disjunction.
- imp
(φ ψ : Formula)
: Formula
Boolean implication.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Hex.RCF.instDecidableEqFormula.decEq (Hex.RCF.Formula.atom a) (Hex.RCF.Formula.atom b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (Hex.RCF.Formula.atom a) Hex.RCF.Formula.tt = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (Hex.RCF.Formula.atom a) Hex.RCF.Formula.ff = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (Hex.RCF.Formula.atom a) φ.not = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (Hex.RCF.Formula.atom a) (φ.and ψ) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (Hex.RCF.Formula.atom a) (φ.or ψ) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (Hex.RCF.Formula.atom a) (φ.imp ψ) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.tt (Hex.RCF.Formula.atom a) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.tt Hex.RCF.Formula.tt = isTrue ⋯
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.tt Hex.RCF.Formula.ff = isFalse Hex.RCF.instDecidableEqFormula.decEq._proof_10✝
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.tt φ.not = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.tt (φ.and ψ) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.tt (φ.or ψ) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.tt (φ.imp ψ) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.ff (Hex.RCF.Formula.atom a) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.ff Hex.RCF.Formula.tt = isFalse Hex.RCF.instDecidableEqFormula.decEq._proof_16✝
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.ff Hex.RCF.Formula.ff = isTrue ⋯
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.ff φ.not = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.ff (φ.and ψ) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.ff (φ.or ψ) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq Hex.RCF.Formula.ff (φ.imp ψ) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq φ.not (Hex.RCF.Formula.atom a) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq φ.not Hex.RCF.Formula.tt = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq φ.not Hex.RCF.Formula.ff = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq a.not b.not = if h : a = b then h ▸ have inst := Hex.RCF.instDecidableEqFormula.decEq a a; isTrue ⋯ else isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq φ.not (φ_1.and ψ) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq φ.not (φ_1.or ψ) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq φ.not (φ_1.imp ψ) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.and ψ) (Hex.RCF.Formula.atom a) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.and ψ) Hex.RCF.Formula.tt = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.and ψ) Hex.RCF.Formula.ff = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.and ψ) φ_1.not = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.and ψ) (φ_1.or ψ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.and ψ) (φ_1.imp ψ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.or ψ) (Hex.RCF.Formula.atom a) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.or ψ) Hex.RCF.Formula.tt = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.or ψ) Hex.RCF.Formula.ff = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.or ψ) φ_1.not = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.or ψ) (φ_1.and ψ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.or ψ) (φ_1.imp ψ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.imp ψ) (Hex.RCF.Formula.atom a) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.imp ψ) Hex.RCF.Formula.tt = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.imp ψ) Hex.RCF.Formula.ff = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.imp ψ) φ_1.not = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.imp ψ) (φ_1.and ψ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqFormula.decEq (φ.imp ψ) (φ_1.or ψ_1) = isFalse ⋯
Instances For
A quantifier-free formula under exactly one real or bounded-real
quantifier. Bounded quantifiers use the half-open convention (a, b] inherited
from real-root isolations.
- forallReal
(φ : Formula)
: Sentence
Universal quantification over the whole domain.
- existsReal
(φ : Formula)
: Sentence
Existential quantification over the whole domain.
- forallIoc
(a b : Dyadic)
(φ : Formula)
: Sentence
Universal quantification over the half-open dyadic interval
(a, b]. - existsIoc
(a b : Dyadic)
(φ : Formula)
: Sentence
Existential quantification over the half-open dyadic interval
(a, b].
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.forallReal a) (Hex.RCF.Sentence.forallReal b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.forallReal φ) (Hex.RCF.Sentence.existsReal φ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.forallReal φ) (Hex.RCF.Sentence.forallIoc a b φ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.forallReal φ) (Hex.RCF.Sentence.existsIoc a b φ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.existsReal φ) (Hex.RCF.Sentence.forallReal φ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.existsReal a) (Hex.RCF.Sentence.existsReal b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.existsReal φ) (Hex.RCF.Sentence.forallIoc a b φ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.existsReal φ) (Hex.RCF.Sentence.existsIoc a b φ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.forallIoc a b φ) (Hex.RCF.Sentence.forallReal φ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.forallIoc a b φ) (Hex.RCF.Sentence.existsReal φ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.forallIoc a b φ) (Hex.RCF.Sentence.existsIoc a_1 b_1 φ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.existsIoc a b φ) (Hex.RCF.Sentence.forallReal φ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.existsIoc a b φ) (Hex.RCF.Sentence.existsReal φ_1) = isFalse ⋯
- Hex.RCF.instDecidableEqSentence.decEq (Hex.RCF.Sentence.existsIoc a b φ) (Hex.RCF.Sentence.forallIoc a_1 b_1 φ_1) = isFalse ⋯
Instances For
All atom polynomials in a formula, in deterministic left-to-right order.
Equations
Instances For
The body of a one-quantifier sentence.
Equations
- (Hex.RCF.Sentence.forallReal φ).formula = φ
- (Hex.RCF.Sentence.existsReal φ).formula = φ
- (Hex.RCF.Sentence.forallIoc a b φ).formula = φ
- (Hex.RCF.Sentence.existsIoc a b φ).formula = φ
Instances For
The positive-degree atom polynomials used by the carrier decomposition. Constant atoms remain in the reflected formula but, after their truth values are evaluated, do not contribute carrier boundaries.
Equations
- s.polys = List.filter (fun (p : Hex.ZPoly) => decide (0 < Hex.DensePoly.natDegree p)) s.formula.polys