The Tseitin encoding of a first-order kernel: defining formulas #
First-order counterpart of DescriptiveComplexity.Problems.Sat.Tseitin: formulas over
the ordered expansion L.sum Language.order defining, inside an input
structure, the clauses of the Tseitin (Tseitin 1968)
encoding of a kernel formula and their literals –
DescriptiveComplexity.Tseitin.isClauseF mirroring
DescriptiveComplexity.Tseitin.IsClauseSem and DescriptiveComplexity.Tseitin.litF mirroring
DescriptiveComplexity.Tseitin.LitSem, with realization lemmas
(DescriptiveComplexity.Tseitin.realize_isClauseF, DescriptiveComplexity.Tseitin.realize_litF).
All builders are parameterized by maps Fin D → γ selecting the free
variables holding the clause and literal tuples, so that they can be
instantiated at the variable types of the defining formulas of an
interpretation (Fin 1 × Fin D, Fin 2 × Fin D). The order is used in a
single place: the formula DescriptiveComplexity.Tseitin.botF expressing that a
coordinate is a minimum, which pins down the canonical padding of tuples.
A term of the kernel, over the ordered expansion, its variables read from
the coordinates selected by c.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The equality atom of the kernel, as a formula over the ordered expansion.
Equations
- DescriptiveComplexity.Tseitin.termEqF h t₁ t₂ c = (DescriptiveComplexity.Tseitin.tTerm h t₁ c).equal (DescriptiveComplexity.Tseitin.tTerm h t₂ c)
Instances For
Dependency graph
An input-relation symbol, in the ordered expansion.
Equations
Instances For
Dependency graph
An input-relation atom of the kernel, as a formula over the ordered expansion.
Equations
- DescriptiveComplexity.Tseitin.relAtF h r ts c = (DescriptiveComplexity.Tseitin.inRelSym r).formula fun (k : Fin l) => DescriptiveComplexity.Tseitin.tTerm h (ts k) c
Instances For
Dependency graph
The tuple held by x is the canonically padded tuple of values of the
terms of a block-variable atom, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Realization of the builders #
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The clause-existence formulas #
The defining formula of clause existence, mirroring
DescriptiveComplexity.Tseitin.IsClauseSem: the clause tuple is read from the
coordinates selected by c.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.Tseitin.isClauseF FirstOrder.Language.BoundedFormula.falsum x_7 x_4 x_2 x_3 = if x_2 = 0 then DescriptiveComplexity.canonF x x_3 else ⊥
- DescriptiveComplexity.Tseitin.isClauseF (FirstOrder.Language.BoundedFormula.rel (Sum.inr val) ts) h_2 x_8 x_2 x_3 = if x_2 = 0 ∨ x_2 = 1 then DescriptiveComplexity.canonF x x_3 else ⊥
- DescriptiveComplexity.Tseitin.isClauseF (f₁.imp f₂) h (Sum.inl val) x_2 x_3 = DescriptiveComplexity.canonF x x_3
- DescriptiveComplexity.Tseitin.isClauseF (f₁.imp f₂) h (Sum.inr (Sum.inl q)) x_2 x_3 = DescriptiveComplexity.Tseitin.isClauseF f₁ ⋯ q x_2 x_3
- DescriptiveComplexity.Tseitin.isClauseF (f₁.imp f₂) h (Sum.inr (Sum.inr q)) x_2 x_3 = DescriptiveComplexity.Tseitin.isClauseF f₂ ⋯ q x_2 x_3
- DescriptiveComplexity.Tseitin.isClauseF f.all h (Sum.inl val) x_2 x_3 = if x_2 = 0 then DescriptiveComplexity.canonF (x + 1) x_3 else if x_2 = 1 then DescriptiveComplexity.canonF x x_3 else ⊥
- DescriptiveComplexity.Tseitin.isClauseF f.all h (Sum.inr q) x_2 x_3 = DescriptiveComplexity.Tseitin.isClauseF f h q x_2 x_3
Instances For
Dependency graph
Realization of the clause-existence formulas.
Dependency graph
The literal formulas #
The defining formula of literal occurrence with sign s, mirroring
DescriptiveComplexity.Tseitin.LitSem: the clause tuple is read from the coordinates
selected by u, the literal tuple from those selected by x. Root positions
of subformulas are recognized by DescriptiveComplexity.Tseitin.isRootB.
Equations
- One or more equations did not get rendered due to their size.
- DescriptiveComplexity.Tseitin.litF s FirstOrder.Language.BoundedFormula.falsum x_10 x_5 x_2 (Sum.inr val) x_3 x_4 = if s = false ∧ x_2 = 0 then DescriptiveComplexity.eqTupF x_3 x_4 else ⊥
- DescriptiveComplexity.Tseitin.litF s FirstOrder.Language.BoundedFormula.falsum x_10 x_5 x_2 (Sum.inl val) x_3 x_4 = ⊥
- DescriptiveComplexity.Tseitin.litF s (FirstOrder.Language.BoundedFormula.equal t₁ t₂) x_10 x_5 x_2 (Sum.inl val) x_3 x_4 = ⊥
- DescriptiveComplexity.Tseitin.litF s (FirstOrder.Language.BoundedFormula.rel (Sum.inl val) ts) h_2 x_10 x_2 (Sum.inl val_1) x_3 x_4 = ⊥
- DescriptiveComplexity.Tseitin.litF s (f₁.imp f₂) h (Sum.inl val) x_2 (Sum.inl val_1) x_3 x_4 = ⊥
- DescriptiveComplexity.Tseitin.litF s (f₁.imp f₂) h (Sum.inr (Sum.inl q)) x_2 (Sum.inl i) x_3 x_4 = DescriptiveComplexity.Tseitin.litF s f₁ ⋯ q x_2 (Sum.inl i) x_3 x_4
- DescriptiveComplexity.Tseitin.litF s (f₁.imp f₂) h (Sum.inr (Sum.inl q)) x_2 vt x_3 x_4 = ⊥
- DescriptiveComplexity.Tseitin.litF s (f₁.imp f₂) h (Sum.inr (Sum.inr q)) x_2 (Sum.inl i) x_3 x_4 = DescriptiveComplexity.Tseitin.litF s f₂ ⋯ q x_2 (Sum.inl i) x_3 x_4
- DescriptiveComplexity.Tseitin.litF s (f₁.imp f₂) h (Sum.inr (Sum.inr q)) x_2 vt x_3 x_4 = ⊥
- DescriptiveComplexity.Tseitin.litF s f.all h (Sum.inl val) x_2 (Sum.inl val_1) x_3 x_4 = ⊥
- DescriptiveComplexity.Tseitin.litF s f.all h (Sum.inr q) x_2 (Sum.inl i) x_3 x_4 = DescriptiveComplexity.Tseitin.litF s f h q x_2 (Sum.inl i) x_3 x_4
- DescriptiveComplexity.Tseitin.litF s f.all h (Sum.inr q) x_2 (Sum.inr ⟨m', Sum.inr q'⟩) x_3 x_4 = DescriptiveComplexity.Tseitin.litF s f h q x_2 (Sum.inr ⟨m', q'⟩) x_3 x_4
- DescriptiveComplexity.Tseitin.litF s f.all h (Sum.inr q) x_2 vt x_3 x_4 = ⊥
Instances For
Dependency graph
Realization of the literal formulas.