The window family, on decoded fields #
The window clauses of the tableau are the Tseitin clauses of the check circuit chk at
every step t and window js (windowClauses). Every such clause has a gate literal
(aux t js g) in its third position: the templates of a gate (gateTemplates) list its
clauses as triples of literal specs — a gate index (.aux u) or a window input (.win n)
— with their signs, and the clause is recovered from the templates by instantiating the
specs at (t, js) (gateClauses_eq_templates). A candidate matches a template when its
third record is a gate variable of the template's gate and the other two records denote the
spec's variable relative to it (SpecMatch: the time and centers are read off the third
record). windowPred_iff: the candidate decodes to a window clause iff it matches a
template of a gate, or is the output unit clause (planning/succinct-cook-levin.md, S3).
Templates #
Equations
- MIPRE.TM.CookLevin.Desc.instDecidableEqLitSpec.decEq (MIPRE.TM.CookLevin.Desc.LitSpec.aux a) (MIPRE.TM.CookLevin.Desc.LitSpec.aux b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- MIPRE.TM.CookLevin.Desc.instDecidableEqLitSpec.decEq (MIPRE.TM.CookLevin.Desc.LitSpec.aux u) (MIPRE.TM.CookLevin.Desc.LitSpec.win n) = isFalse ⋯
- MIPRE.TM.CookLevin.Desc.instDecidableEqLitSpec.decEq (MIPRE.TM.CookLevin.Desc.LitSpec.win n) (MIPRE.TM.CookLevin.Desc.LitSpec.aux u) = isFalse ⋯
- MIPRE.TM.CookLevin.Desc.instDecidableEqLitSpec.decEq (MIPRE.TM.CookLevin.Desc.LitSpec.win a) (MIPRE.TM.CookLevin.Desc.LitSpec.win b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
A clause template: three specs with their signs.
Equations
Instances For
The tableau variable of a spec at step t and window js.
Equations
Instances For
The clause of a template at step t and window js.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The third spec of every template of gate g is the gate itself.
A spec of a template of gate g is the gate, a gate it reads, or the input it reads.
Matching a spec against the gate literal #
The record F denotes the window variable wv of the window of the record Fa (a gate
variable: its time and centers are Fa.t, Fa.js).
Equations
- One or more equations did not get rendered due to their size.
- MIPRE.TM.CookLevin.Desc.WinMatch e Fa (MIPRE.TM.CookLevin.WinVar.statePre q) x✝ = (MIPRE.TM.CookLevin.Desc.IsState e x✝ ∧ x✝.t = Fa.t ∧ x✝.q = MIPRE.TM.CookLevin.Desc.qCode q)
- MIPRE.TM.CookLevin.Desc.WinMatch e Fa (MIPRE.TM.CookLevin.WinVar.statePost q) x✝ = (MIPRE.TM.CookLevin.Desc.IsState e x✝ ∧ x✝.t = Fa.t + 1 ∧ x✝.q = MIPRE.TM.CookLevin.Desc.qCode q)
- MIPRE.TM.CookLevin.Desc.WinMatch e Fa MIPRE.TM.CookLevin.WinVar.emitOne x✝ = (MIPRE.TM.CookLevin.Desc.IsEmitOne e x✝ ∧ x✝.t = Fa.t)
- MIPRE.TM.CookLevin.Desc.WinMatch e Fa MIPRE.TM.CookLevin.WinVar.emitBad x✝ = (MIPRE.TM.CookLevin.Desc.IsEmitBad e x✝ ∧ x✝.t = Fa.t)
Instances For
The record F denotes the variable of the spec, relative to the gate record Fa.
Equations
Instances For
The window predicate #
The candidate matches a template of some gate of chk.
Equations
- MIPRE.TM.CookLevin.Desc.WindowGates e G chk c = ∃ (g : Fin chk.gates.length), ∃ tp ∈ MIPRE.TM.CookLevin.Desc.gateTemplates (↑g) chk.gates[g], MIPRE.TM.CookLevin.Desc.TplMatch e G tp c
Instances For
The candidate is the output unit clause of a window.
Equations
- MIPRE.TM.CookLevin.Desc.WindowOut e G c = (MIPRE.TM.CookLevin.Desc.UnitAux e G c ∧ MIPRE.TM.CookLevin.Desc.SameSigns c ∧ c.F₁.g = G - 1 ∧ c.s₁ = true)
Instances For
The window family.
Equations
- MIPRE.TM.CookLevin.Desc.WindowPred e G chk c = (MIPRE.TM.CookLevin.Desc.WindowGates e G chk c ∨ MIPRE.TM.CookLevin.Desc.WindowOut e G c)
Instances For
The specs of a template of a gate of chk are in range.
The window family is exact: a candidate satisfies WindowPred iff it decodes to a
window clause of the tableau.
The whole tableau #
The candidate decodes to a clause of the tableau iff it satisfies one of the family predicates.