The clause families as formulas #
For each family predicate of Families.lean and Window.lean, the formula computing it on a
candidate of field formulas (CandF: three FieldsF and three sign formulas), with its
exact semantics (eval_startF, …, eval_windowF) and its input bound. The fixed input
tapes enter through value formulas (cellValF for a listed string, unaryValF for the
unary time bound), tied to fixed by TapeSpec; the free tapes through the list of their
indices (FreeSpec) (planning/succinct-cook-levin.md, S3).
Helpers #
Input bounds of the field formulas #
The field formulas read only inputs below n.
- flag : SAT.Fml.InputsLt n A.flag
- tag (f : SAT.Fml) : f ∈ A.tag → SAT.Fml.InputsLt n f
- t (f : SAT.Fml) : f ∈ A.t → SAT.Fml.InputsLt n f
- d (f : SAT.Fml) : f ∈ A.d → SAT.Fml.InputsLt n f
- p (f : SAT.Fml) : f ∈ A.p → SAT.Fml.InputsLt n f
- v (f : SAT.Fml) : f ∈ A.v → SAT.Fml.InputsLt n f
- q (f : SAT.Fml) : f ∈ A.q → SAT.Fml.InputsLt n f
- g (f : SAT.Fml) : f ∈ A.g → SAT.Fml.InputsLt n f
- ansOk : SAT.Fml.InputsLt n A.ansOk
Instances For
Candidates of formulas #
The three records have the field lengths.
- A₁ : FieldsF.Lengths e G C.A₁
- A₂ : FieldsF.Lengths e G C.A₂
- A₃ : FieldsF.Lengths e G C.A₃
Instances For
The candidate reads only inputs below n.
- A₁ : FieldsF.InputsLt n C.A₁
- σ₁ : SAT.Fml.InputsLt n C.σ₁
- A₂ : FieldsF.InputsLt n C.A₂
- σ₂ : SAT.Fml.InputsLt n C.σ₂
- A₃ : FieldsF.InputsLt n C.A₃
- σ₃ : SAT.Fml.InputsLt n C.σ₃
Instances For
Same-variable formulas #
cellEq.
Equations
- One or more equations did not get rendered due to their size.
Instances For
headEq.
Equations
Instances For
stateEq.
Equations
Instances For
auxEq.
Equations
- One or more equations did not get rendered due to their size.
Instances For
samePos.
Equations
Instances For
Unit clauses and signs #
UnitCell.
Equations
- One or more equations did not get rendered due to their size.
Instances For
UnitHead.
Equations
- One or more equations did not get rendered due to their size.
Instances For
UnitState.
Equations
- One or more equations did not get rendered due to their size.
Instances For
UnitEmitBad.
Equations
- One or more equations did not get rendered due to their size.
Instances For
UnitEmitted.
Equations
- One or more equations did not get rendered due to their size.
Instances For
UnitAux.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Positions and values #
The codes of a string.
Equations
Instances For
More helpers #
FreeTape.
Equations
- MIPRE.TM.CookLevin.Desc.freeTapeF frees A = MIPRE.SAT.Fml.orList (List.map (fun (j : ℕ) => MIPRE.SAT.Fml.eqConst A.d (MIPRE.TM.CookLevin.Desc.nbits 4 j)) frees)
Instances For
The start family #
StartHead.
Equations
- One or more equations did not get rendered due to their size.
Instances For
StartState.
Equations
- One or more equations did not get rendered due to their size.
Instances For
StartWork.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The free family #
The boundary, emission and final families #
BdryCell.
Equations
- One or more equations did not get rendered due to their size.
Instances For
BdryHead.
Equations
Instances For
BdryPred.
Equations
Instances For
EmitZero.
Equations
- One or more equations did not get rendered due to their size.
Instances For
EmitStep.
Equations
- One or more equations did not get rendered due to their size.
Instances For
EmitMono.
Equations
- One or more equations did not get rendered due to their size.
Instances For
EmitOne.
Equations
- One or more equations did not get rendered due to their size.
Instances For
EmitOnce.
Equations
- One or more equations did not get rendered due to their size.
Instances For
EmitBad.
Equations
Instances For
EmitPred.
Equations
- One or more equations did not get rendered due to their size.
Instances For
FinalState.
Equations
- One or more equations did not get rendered due to their size.
Instances For
FinalEmitted.
Equations
- One or more equations did not get rendered due to their size.
Instances For
FinalPred.
Equations
Instances For
The five explicit families #
The window family #
The templates of the check circuit enter the formula as data: a window variable is a
descriptor (WDesc: a one-hot kind, and the tape, offset, value and state as bit strings),
a literal spec an LDesc, so that the describer program builds the window formula by a fold
over a constant list of descriptors, never inspecting a WinVar or a Gate.
The one-hot vector of length n with its k-th entry set.
Equations
- MIPRE.TM.CookLevin.Desc.oneHot n k = List.map (fun (i : ℕ) => decide (i = k)) (List.range n)
Instances For
Select by a one-hot vector: ⋁ᵢ bᵢ ∧ fᵢ.
Equations
- MIPRE.TM.CookLevin.Desc.selectF hot fs = MIPRE.SAT.Fml.orList (List.zipWith (fun (b : Bool) (f : MIPRE.SAT.Fml) => (MIPRE.SAT.Fml.const b).and f) hot fs)
Instances For
A window variable as data: the kind (one-hot over cellPre, headPre, cellPost,
headPost, statePre, statePost, emitOne, emitBad), the tape (4 bits, and one-hot over
the 13 tapes), the offset (3 bits), the value (3 bits), the state (Qb bits).
- d : Cost.BitStr
- δ : Cost.BitStr
- v : Cost.BitStr
- q : Cost.BitStr
Instances For
The descriptor of a window variable.
Equations
- One or more equations did not get rendered due to their size.
Instances For
SpecMatch for a gate spec, with the gate index as bits.
Equations
- One or more equations did not get rendered due to their size.
Instances For
SpecMatch, on a descriptor.
Equations
- MIPRE.TM.CookLevin.Desc.specMatchN e G Fa A l = (MIPRE.SAT.Fml.const l.isAux).mux (MIPRE.TM.CookLevin.Desc.auxMatchN e G Fa A l.u) (MIPRE.TM.CookLevin.Desc.winMatchN e Fa A l.w)
Instances For
The descriptors of the window variables, in the canonical order.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The descriptor of a spec.
Equations
- One or more equations did not get rendered due to their size.
- MIPRE.TM.CookLevin.Desc.LitSpec.toN G (MIPRE.TM.CookLevin.Desc.LitSpec.win n) = { isAux := false, u := [], w := MIPRE.TM.CookLevin.Desc.wvDescs.getD n MIPRE.TM.CookLevin.Desc.badDesc }
Instances For
A template as data.
Equations
Instances For
The descriptor of a template.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The template descriptors of the check circuit: the constant of the describer.
Equations
- MIPRE.TM.CookLevin.Desc.tplsOf G chk = MIPRE.TM.CookLevin.Desc.tplsFrom G 0 chk.gates
Instances For
WindowOut.
Equations
- One or more equations did not get rendered due to their size.
Instances For
WindowPred.
Equations
- MIPRE.TM.CookLevin.Desc.windowN e G tpls C = (MIPRE.TM.CookLevin.Desc.windowGatesN e G tpls C).or (MIPRE.TM.CookLevin.Desc.windowOutF e G C)
Instances For
The whole tableau #
The formula of the tableau on a candidate: the five explicit families or the window family.
Equations
- MIPRE.TM.CookLevin.Desc.tableauF e G tabs frees tpls C = (MIPRE.TM.CookLevin.Desc.mainF e tabs frees C).or (MIPRE.TM.CookLevin.Desc.windowN e G tpls C)
Instances For
The tableau formula is exact: it accepts a candidate iff the candidate decodes to a
clause of tableau U 0 1 S fixed chk.