Shared output routines for first-order interpretation transducers #
The order-free and canonical ordered transducers share coordinate extraction, framing, and malformed-output emission. Coordinates are written in increasing digit order; a client chooses its logical coordinate order through the formula's variable-to-register map.
Main definitions #
Cslib.Logic.Vocabulary.ModelChecker.Writer.tupleReg: a coordinate block register.Cslib.Logic.Vocabulary.ModelChecker.Writer.coordinatesCode: write the digits of an index.Cslib.Logic.Vocabulary.ModelChecker.Writer.rejectCode: emit a fixed malformed target.
Main results #
Cslib.Logic.Vocabulary.ModelChecker.Writer.reaches_coordinatesCode: exact digit semantics.Cslib.Logic.Vocabulary.ModelChecker.Writer.reachesOut_rejectCode: exact rejection output.
References #
- N. Immerman, Descriptive Complexity. These routines are extracted from the existing order-free interpretation transducer, with its author and framing conventions retained.
The register of the coordinate i of the tuple in block m, for tuples of d coordinates.
Instances For
The code writing the coordinates of the tuple whose index is in register 4 into block m,
placed at the label b; it continues at b + d.
Instances For
The coordinate writer uses one instruction per digit.
Writing the coordinates of a tuple: from the code at b, with the index u < n ^ d of a
tuple in register 4 and n in register 0, the program writes the coordinates u / n ^ i % n
of the tuple into block m, changing no other register.
Emitting true and a bit for every number below N, then false, frames the bits.
The code emitting encStructure (0, [[], …, []]), a malformed input with one table too many,
then halting; placed at b.
Instances For
The rejection routine emits exactly the fixed malformed target and halts.
The fixed malformed target has one empty table too many.