The active-transition family emitter #
activeTransitionClausesF quantifies over rows, machine states, three head
positions, three read symbols, and the choice bit; per tuple it emits seven
implication clauses (the eight-literal reading condition plus one
consequence each). States, symbols, and the choice bit are finite data
unrolled at definition level (bigSeqTM over their lists); rows and
positions are runtime loops.
Unrolled emission: if every element's machine appends its word from
any accumulator, the bigSeqTM of the mapped list appends the
flatMap.
Peel the zero iteration off a range flatMap.
Load posMove-of-a-position into the scratch position register: copy,
then adjust by the (definition-level) move. none means the halting
state's frozen head.
Equations
- Complexity.SAT.setupPosTM p none = Complexity.TM.copyIntoTM p Complexity.SAT.Emit.auxReg2
- Complexity.SAT.setupPosTM p (some Complexity.Dir3.stay) = Complexity.TM.copyIntoTM p Complexity.SAT.Emit.auxReg2
- Complexity.SAT.setupPosTM p (some Complexity.Dir3.left) = (Complexity.TM.copyIntoTM p Complexity.SAT.Emit.auxReg2).seqTM (Complexity.TM.decRegTM Complexity.SAT.Emit.auxReg2)
- Complexity.SAT.setupPosTM p (some Complexity.Dir3.right) = (Complexity.TM.copyIntoTM p Complexity.SAT.Emit.auxReg2).seqTM (Complexity.TM.incRegTM Complexity.SAT.Emit.auxReg2)
Instances For
posMoveOpt moves a position bounded by P to one bounded by P + 1.
setupPosTM Hoare specification: auxReg2 := posMoveOpt of the
position register's value.
The standing register facts of the active family's leaves.
The mixed-radix capacity product is within the modulus bound
M.The row index is below the row count.
The input-head position is within the position bound.
The work-head position is within the position bound.
The output-head position is within the position bound.
Every work tape is parked (head at cell 0).
Radix register A holds the row capacity
steps + 1.Radix register B holds the state capacity
max Qc 3.Radix register C holds the position capacity
P + 2.Radix register D holds the symbol capacity
4.The row register holds the current row
t.The successor-row register holds
t + 1.The first position register holds the input-head position.
The second position register holds the work-head position.
The third position register holds the output-head position.
Instances For
The base facts survive scratch-position updates.
The reading condition denotes activeCondF.
The per-tuple leaf: the seven implication clauses, with the write symbols and head moves resolved at definition level.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Budget of the leaf.
Equations
- Complexity.SAT.activeLeafBudget M = 7 * Complexity.SAT.clauseBudget 9 M + 7 * Complexity.TM.opBudget M + 13
Instances For
One conseq-clause emission from an ActiveBase state.
activeLeafTM Hoare specification: appends the encoded
activeClausesAtF for the tuple.
Budget of the choice-bit unroll: two leaves.
Equations
- Complexity.SAT.activeBLevelBudget M = 2 * (Complexity.SAT.activeLeafBudget M + 1) + 1
Instances For
activeBLevelTM Hoare specification.
Budget of the output-symbol unroll: four choice-bit levels.
Equations
Instances For
activeSoLevelTM Hoare specification.
Budget of the output-position block: the po = 0 instance plus the
counter setup, the sweep loop, and the counter reset.
Equations
- One or more equations did not get rendered due to their size.
Instances For
activePoSplitTM Hoare specification (at po = 0 boundary
state).
Budget of the work-symbol unroll: four output-position blocks.
Equations
Instances For
activeSwLevelTM Hoare specification.
Budget of the work-position block: the pw = 0 instance plus the
counter setup, the sweep loop, and the counter reset.
Equations
- One or more equations did not get rendered due to their size.
Instances For
activePwSplitTM Hoare specification (at pw = po = 0 boundary
state).
The input-symbol unroll.
Equations
- Complexity.SAT.activeSiLevelTM N q = Complexity.TM.bigSeqTM (List.map (fun (si : Complexity.Γ) => Complexity.SAT.activePwSplitTM N q si) Complexity.SAT.Tableau.allSyms)
Instances For
Budget of the input-symbol unroll: four work-position blocks.
Equations
Instances For
activeSiLevelTM Hoare specification.
Budget of the input-position sweep: the loop plus the counter reset.
Equations
Instances For
activePiLoopTM Hoare specification (at the row boundary state).
The machine-state unroll.
Equations
- Complexity.SAT.activeQLevelTM N = Complexity.TM.bigSeqTM (List.map (fun (q : N.Q) => Complexity.SAT.activePiLoopTM N q) Finset.univ.toList)
Instances For
Budget of the machine-state unroll: one input-position sweep per state.
Equations
- Complexity.SAT.activeQLevelBudget N M = Fintype.card N.Q * (Complexity.SAT.activePiLoopBudget M + 1) + 1
Instances For
activeQLevelTM Hoare specification.
The active row body: bump the successor-row register, then the state unroll.
Equations
Instances For
Budget of the row body: the register bump plus the state unroll.
Equations
Instances For
The active-family emitter: loop the row body over rows
0..steps-1.
Equations
Instances For
activeRowTM Hoare specification (at row i < steps; the
successor-row register enters at i and leaves at i + 1).
emitActiveTM Hoare specification: appends the encoded active
transition family, leaving row counter and successor-row register at
steps.