Register invariant for the Tseitin streaming controller #
This file connects the pure token transducer in ThreeSAT.Streaming to the
finite control and six unary registers of validEmitterTM. It deliberately
contains no execution simulation. The definitions here only say how a pure
streaming state is represented:
- pending literals retain their signs in
PendingSigns; - the parser scan becomes a
StreamMode; - unbounded variable indices occupy
freshReg,currentReg, and the three pending-literal registers; - the scratch register is zero; and
- the output tape is an append-only
TM.OutAcccontaining the encoding of the already-emitted tokens.
The projection and parked-tape lemmas are the glue needed to instantiate the
register-level Hoare specifications in Machine.Internal.BufferSpecs.
Main definitions #
Finite-control representation #
Forget the variable indices of a pure pending window, retaining exactly the signs kept by the machine controller.
Equations
- Complexity.SAT.ThreeSAT.Machine.PendingSigns.ofStreaming Complexity.SAT.ThreeSAT.Streaming.Pending.zero = Complexity.SAT.ThreeSAT.Machine.PendingSigns.zero
- Complexity.SAT.ThreeSAT.Machine.PendingSigns.ofStreaming (Complexity.SAT.ThreeSAT.Streaming.Pending.one a) = Complexity.SAT.ThreeSAT.Machine.PendingSigns.one a.sign
- Complexity.SAT.ThreeSAT.Machine.PendingSigns.ofStreaming (Complexity.SAT.ThreeSAT.Streaming.Pending.two a b) = Complexity.SAT.ThreeSAT.Machine.PendingSigns.two a.sign b.sign
- Complexity.SAT.ThreeSAT.Machine.PendingSigns.ofStreaming (Complexity.SAT.ThreeSAT.Streaming.Pending.three a b c) = Complexity.SAT.ThreeSAT.Machine.PendingSigns.three a.sign b.sign c.sign
Instances For
Convert a pure parser scan to its finite controller mode under the signs of the current pending window.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Finite controller mode represented by a complete pure streaming state.
Equations
Instances For
Sign control after a pure literal push agrees with PendingSigns.push.
A pure literal push returns the parser to the corresponding boundary mode.
Closing a pure clause resets both pending signs and parser mode.
Unary-register representation #
Unary value stored in currentReg for a pure parser scan.
Equations
Instances For
Unary value stored in bufferAReg for a pending window.
Equations
- Complexity.SAT.ThreeSAT.Machine.streamingBufferA Complexity.SAT.ThreeSAT.Streaming.Pending.zero = 0
- Complexity.SAT.ThreeSAT.Machine.streamingBufferA (Complexity.SAT.ThreeSAT.Streaming.Pending.one a) = a.var
- Complexity.SAT.ThreeSAT.Machine.streamingBufferA (Complexity.SAT.ThreeSAT.Streaming.Pending.two a b) = a.var
- Complexity.SAT.ThreeSAT.Machine.streamingBufferA (Complexity.SAT.ThreeSAT.Streaming.Pending.three a b c) = a.var
Instances For
Unary value stored in bufferBReg for a pending window.
Equations
- Complexity.SAT.ThreeSAT.Machine.streamingBufferB Complexity.SAT.ThreeSAT.Streaming.Pending.zero = 0
- Complexity.SAT.ThreeSAT.Machine.streamingBufferB (Complexity.SAT.ThreeSAT.Streaming.Pending.one a) = 0
- Complexity.SAT.ThreeSAT.Machine.streamingBufferB (Complexity.SAT.ThreeSAT.Streaming.Pending.two a b) = b.var
- Complexity.SAT.ThreeSAT.Machine.streamingBufferB (Complexity.SAT.ThreeSAT.Streaming.Pending.three a b c) = b.var
Instances For
Unary value stored in bufferCReg for a pending window.
Equations
- Complexity.SAT.ThreeSAT.Machine.streamingBufferC Complexity.SAT.ThreeSAT.Streaming.Pending.zero = 0
- Complexity.SAT.ThreeSAT.Machine.streamingBufferC (Complexity.SAT.ThreeSAT.Streaming.Pending.one a) = 0
- Complexity.SAT.ThreeSAT.Machine.streamingBufferC (Complexity.SAT.ThreeSAT.Streaming.Pending.two a b) = 0
- Complexity.SAT.ThreeSAT.Machine.streamingBufferC (Complexity.SAT.ThreeSAT.Streaming.Pending.three a b c) = c.var
Instances For
Six unary-register values representing a pure streaming state.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every register tape in the representation of a pure state is parked.
Complete tape predicate #
Tape-level representation of a pure streaming state. The input tape is a fixed parked ghost for buffer operations; the work tapes are its six unary registers; and the output accumulator contains exactly the emitted tokens.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Project the fixed input tape from the streaming-state predicate.
Project the six-register work-tape function.
Project the exact append-only encoded-token accumulator.
The represented input is parked whenever its fixed ghost is parked.
Every represented work tape is parked.
The represented output accumulator is parked.
Project the fresh-variable register.
Project the current-literal register.
Project the first pending-literal register.
Project the second pending-literal register.
Project the third pending-literal register.
Project the zero scratch register.