Documentation

DescriptiveComplexity.Problems.Wide.DrawRepAtoms

The atoms of a defining sentence, classified #

The element loops of the EXPSPACE program evaluate the matrices of the expansion's defining sentences – X.relSentence, over the base vocabulary expanded by a replicated block (one copy per argument point), and X.dom, over the same expanded by the block itself. Both are the same shape, so the classification is stated at an arbitrary block: the base-vocabulary atoms – equalities, base relations, order – are guards, evaluated on the control-held elements by the transition table itself; the block atoms are the read leaves, one named-bit trip each, at the cell of the point whose payload the loop variables spell.

This file mirrors DescriptiveComplexity.Problems.Wide.DrawAtoms at that language: DescriptiveComplexity.Draw.BlkAtom is the kind, DescriptiveComplexity.Draw.blkAtom? the total-on-atoms classifier, DescriptiveComplexity.Draw.BlkAtom.holds the semantic reading at a block assignment, and DescriptiveComplexity.Draw.realize_iff_qfValue_blkHolds the capstone: a quantifier-free matrix realizes as its Boolean function at the kinds' readings. For a defining sentence the assignment is DescriptiveComplexity.SOBlock.replicateAssign, so a block atom's index splits into the copy – which argument point – and the point's own relation variable.

The kinds #

An atom of a defining sentence, classified: the base-vocabulary kinds are guards, the block kind is a read leaf.

Instances For
    Dependency graph

    The classification of a relation atom, by its symbol's summand.

    Equations
    Instances For
      Dependency graph
      Dependency graph
      Dependency graph

      The atoms that need a tape #

      Only the block atoms are read leaves: an equality, a base relation or an order comparison on the loop's own elements is a guard, evaluated by the transition table where it stands. So a round of an element loop makes one trip per block atom and no more – which matters, because a defining sentence may well have no block atom at all, and there is in general no cell a harmless trip could be sent to.

      Is this atom a read leaf? – decided by the relation symbol's summand, so no term analysis and no relationality is needed.

      Equations
      Instances For
        Dependency graph
        Dependency graph
        Dependency graph
        Dependency graph

        The semantic reading #

        def DescriptiveComplexity.Draw.BlkAtom.holds {L : FirstOrder.Language} {B : SOBlock} {A : Type} [L.Structure A] [LinearOrder A] (ρ : B.Assignment A) {n : } (w : Fin nA) :
        BlkAtom L B nProp

        What an atom says, at a block assignment and a valuation of the prefix.

        Equations
        Instances For
          Dependency graph
          theorem DescriptiveComplexity.Draw.realize_blkAtom {L : FirstOrder.Language} [L.IsRelational] {B : SOBlock} {A : Type} [L.Structure A] [LinearOrder A] (ρ : B.Assignment A) {n : } {φ : ((L.sum FirstOrder.Language.order).sum B.lang).BoundedFormula Empty n} {κ : BlkAtom L B n} (h : blkAtom? φ = some κ) (w : Fin nA) :

          The reading is correct: a classified atom realizes at a valuation of the prefix exactly as its kind says.

          Dependency graph

          A read leaf is a block atom: the syntactic test and the classifier agree, so an element loop's r-th trip has a relation variable, a copy and a tuple of levels to read.

          Dependency graph

          The converse test: a classified block atom passes the syntactic one.

          Dependency graph

          The matrix through its classified atoms: a quantifier-free matrix realizes exactly as its Boolean function at the kinds' readings.

          Dependency graph