Documentation

CslibFrontier.Computability.Complexity.Problems.SAT.ExactOne.DrawingAvoidance

Nonincident-vertex avoidance from actual occurrence contacts #

Once every displayed variable and nonempty clause has its own incident route, pairwise contact control already implies nonincident-vertex avoidance. The only possible ambiguity would identify a variable point with a clause point; the distinct displayed positions exclude that ambiguity.

Main results #

References #

These elementary consequences of occurrence-indexed drawing certificates are original.

Used variable vertices cannot lie on another incidence once actual endpoint contacts and variable/clause separation have been checked.

theorem Cslib.Complexity.SAT.ExactOne.FormulaDrawing.avoidsClauses_of_contacts {V : Type} [DecidableEq V] {φ : Logic.PL.CNF V} {a : FormulaDrawing φ} (hcount : a.clausePoints.length = List.length φ) (hnd : a.positions.Nodup) (hnonempty : ∀ c ∈ φ, c ≠ []) (hends : ∀ o ∈ Logic.PL.occurrences φ, List.head? (a.incidenceRoute o) = some (a.clausePoints.getD o.1 (0, 0))) (hcontacts : ∀ o ∈ Logic.PL.occurrences φ, ∀ t ∈ Logic.PL.occurrences φ, o ≠ t → ∀ p ∈ Orthogonal.support (a.incidenceRoute o), p ∈ Orthogonal.support (a.incidenceRoute t) → o.2.2.1 = t.2.2.1 ∧ p = Orthogonal.realPoint (a.variablePoint o.2.2.1) ∨ o.1 = t.1 ∧ p = Orthogonal.realPoint (a.clausePoints.getD o.1 (0, 0))) (o : Logic.PL.Occurrence V) :

Every nonempty clause vertex avoids other incidence routes once actual endpoint contacts and variable/clause separation have been checked.