The canonical index of a tableau variable #
idxOf e G T v is the index of the variable v in the described 3SAT formula: the answer
index j < 4T for a cell of one of the two free tapes inside the answer block — tape 5
for j < 2T and tape 6 otherwise, position r / 2 + 3 for r = j mod 2T, the value 1
for r odd and the blank for r even — and the structured index (encodeVar) for every
other variable. So the first 4T variables of the formula are exactly the two answer blocks,
which is what item 1 of thm:succinct-sat needs, and decodeVar_fieldsOf_idxOf says that
decoding the canonical index returns the variable. decodeVar_ans is the other half: every
index below 4T decodes to the answer variable it stands for
(planning/succinct-cook-levin.md, S3).
Reading an index built from a number #
The answer variables #
The cell value of an answer index: 1 for an odd offset, the blank for an even one.
Equations
Instances For
The canonical index #
The cell is an answer cell: at time 0 on a free tape, inside the answer block, holding
1 or the blank.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
The answer index of an answer cell.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical index of a tableau variable: the answer index for an answer cell, the
structured index (encodeVar) otherwise.
Equations
- One or more equations did not get rendered due to their size.
- MIPRE.TM.CookLevin.Desc.idxOf e G T (MIPRE.TM.CookLevin.TabVar.head t d p) = MIPRE.Cost.bitsVal (MIPRE.TM.CookLevin.Desc.encodeVar e G (MIPRE.TM.CookLevin.TabVar.head t d p))
- MIPRE.TM.CookLevin.Desc.idxOf e G T (MIPRE.TM.CookLevin.TabVar.state t q) = MIPRE.Cost.bitsVal (MIPRE.TM.CookLevin.Desc.encodeVar e G (MIPRE.TM.CookLevin.TabVar.state t q))
- MIPRE.TM.CookLevin.Desc.idxOf e G T (MIPRE.TM.CookLevin.TabVar.emitOne t) = MIPRE.Cost.bitsVal (MIPRE.TM.CookLevin.Desc.encodeVar e G (MIPRE.TM.CookLevin.TabVar.emitOne t))
- MIPRE.TM.CookLevin.Desc.idxOf e G T (MIPRE.TM.CookLevin.TabVar.emitBad t) = MIPRE.Cost.bitsVal (MIPRE.TM.CookLevin.Desc.encodeVar e G (MIPRE.TM.CookLevin.TabVar.emitBad t))
- MIPRE.TM.CookLevin.Desc.idxOf e G T (MIPRE.TM.CookLevin.TabVar.emitted t) = MIPRE.Cost.bitsVal (MIPRE.TM.CookLevin.Desc.encodeVar e G (MIPRE.TM.CookLevin.TabVar.emitted t))
- MIPRE.TM.CookLevin.Desc.idxOf e G T (MIPRE.TM.CookLevin.TabVar.aux t js g) = MIPRE.Cost.bitsVal (MIPRE.TM.CookLevin.Desc.encodeVar e G (MIPRE.TM.CookLevin.TabVar.aux t js g))
Instances For
Decoding the canonical index returns the variable.