Documentation

DescriptiveComplexity.Problems.Wide.DrawData

The data of the EXPSPACE reduction, bundled #

Everything the EXPSPACE program is built from, in one record: the expansion, the partial-fixed-point definition, one prenex pack per step formula and one for the output sentence, and the encoding layout with its coordinate budget. On top of it, the derived dimensions the slot and control inventories of DescriptiveComplexity.Problems.Wide.DrawSlots are sized by: the variable index DescriptiveComplexity.Draw.Data.VarIx (none is the output), the prefix lengths nOf and their maximum ki, the outer block count ko, the classified atoms of each matrix (DescriptiveComplexity.Draw.Data.kindOf) and their counts.

The point of bundling: the program's phase and rule types are indexed by this data (one call site per variable, per atom, per argument position), so every site file takes one Draw.Data and nothing else, and the dimensions are defined as the exact maxima rather than constrained by inequalities.

The data of the EXPSPACE reduction: the expansion, the definition, the prenex packs, and the encoding layout with its coordinate budget.

Instances For
    Dependency graph

    The variable index #

    @[reducible, inline]

    The variables the program evaluates a formula for: the fixed-point variables, and (none) the output sentence.

    Equations
    Instances For
      Dependency graph

      The number of outer argument blocks: enough for every variable's arguments.

      Equations
      Instances For
        Dependency graph

        The arity of a variable – the number of blocks its address prefix reads; 0 for the output.

        Equations
        Instances For
          Dependency graph
          @[reducible]

          The prefix length of a variable's pack. Reducible: the pack's own statements are about (dt.pk i).n, and rw matches at implicit transparency.

          Equations
          Instances For
            Dependency graph
            @[reducible]

            The polarities of a variable's pack.

            Equations
            Instances For
              Dependency graph
              @[reducible]

              The matrix of a variable's pack.

              Equations
              Instances For
                Dependency graph
                Dependency graph
                Dependency graph
                Dependency graph

                The number of inner argument blocks: the longest prefix among the packs.

                Equations
                Instances For
                  Dependency graph
                  Dependency graph

                  The classified atoms #

                  The atoms of a variable's matrix, in evaluation order.

                  Equations
                  Instances For
                    Dependency graph

                    The number of atoms of a variable's matrix.

                    Equations
                    Instances For
                      Dependency graph

                      The largest atom count among the matrices: the size of the verdict inventory.

                      Equations
                      Instances For
                        Dependency graph
                        Dependency graph
                        noncomputable def DescriptiveComplexity.Draw.Data.kindOf {L : FirstOrder.Language} (dt : Data L) (v : dt.VarIx) (a : Fin (dt.natOf v)) :
                        MatAtom dt.X dt.d.B (dt.nOf v)

                        The kind of an atom, read off the syntax: the index data of the per-atom call sites.

                        Equations
                        Instances For
                          Dependency graph
                          theorem DescriptiveComplexity.Draw.Data.matAtom?_get {L : FirstOrder.Language} (dt : Data L) (v : dt.VarIx) (a : Fin (dt.natOf v)) :
                          matAtom? ((dt.atomsOf v).get a) = some (dt.kindOf v a)

                          The classifier agrees with the kind.

                          Dependency graph

                          The slot and control inventories, sized #

                          The control dimensions #

                          noncomputable def DescriptiveComplexity.Draw.Data.kindDepth {L : FirstOrder.Language} (dt : Data L) {n : } :
                          MatAtom dt.X dt.d.B n

                          The prefix depth of an expansion atom's defining sentences, maximized over the tag tuples; 0 for the other kinds, whose loops are the coordinate ones.

                          Equations
                          Instances For
                            Dependency graph
                            noncomputable def DescriptiveComplexity.Draw.Data.kindReads {L : FirstOrder.Language} (dt : Data L) {n : } :
                            MatAtom dt.X dt.d.B n

                            The leaf-read budget of an atom: the block-atom count of its defining sentences' matrices – the base-vocabulary atoms are guards and take no trip – 2 for the coordinate loops of an equality or order atom, 0 for a stage atom.

                            Equations
                            Instances For
                              Dependency graph

                              The domain sentences' largest prefix depth.

                              Equations
                              Instances For
                                Dependency graph

                                The domain sentences' largest read-leaf count.

                                Equations
                                Instances For
                                  Dependency graph

                                  The loop-variable budget: the coordinate loops' width and every element loop's depth.

                                  Equations
                                  Instances For
                                    Dependency graph

                                    The leaf-read budget.

                                    Equations
                                    Instances For
                                      Dependency graph
                                      noncomputable def DescriptiveComplexity.Draw.Data.kindArgs {L : FirstOrder.Language} (dt : Data L) {n : } :
                                      MatAtom dt.X dt.d.B n

                                      The number of argument points an atom's kind reads the tags of: the arity of an expansion atom, 0 for the other kinds.

                                      Equations
                                      Instances For
                                        Dependency graph

                                        The tag-flag budget: one per argument position of an expansion atom and tag, and one block's worth for the gates – whose domain evaluation reads the tag of the single block it gates, and which must be paid for even when no expansion atom occurs.

                                        Equations
                                        Instances For
                                          Dependency graph

                                          The accumulator budget: one per prefix level, and one over.

                                          Equations
                                          Instances For
                                            Dependency graph
                                            Dependency graph
                                            Dependency graph
                                            Dependency graph
                                            Dependency graph

                                            An expansion atom's tag flags fit: one per argument position and tag.

                                            Dependency graph

                                            A gate's tag flags fit: one block's worth is always paid for.

                                            Dependency graph
                                            Dependency graph
                                            @[reducible, inline]

                                            The control slots of the program, at the computed budgets.

                                            Equations
                                            Instances For
                                              Dependency graph
                                              @[reducible, inline]

                                              The track slots of the program.

                                              Equations
                                              Instances For
                                                Dependency graph
                                                @[instance_reducible]

                                                The slots' equality is classically decidable – the variable index only carries Finite, and the rules that update slots (Function.update) are noncomputable throughout.

                                                Equations
                                                Dependency graph
                                                @[reducible, inline]

                                                The block-index type of the program's addresses.

                                                Equations
                                                Instances For
                                                  Dependency graph