Documentation

DescriptiveComplexity.RecursivelyEnumerable

The class RE, defined by value invention #

RE (DescriptiveComplexity.RE), the recursively enumerable problems, defined – like every class in this library – by a logic: definability in ∃SO[new], existential second-order logic over a universe extended by finitely many invented values (DescriptiveComplexity.SigmaSONewDefinable, in DescriptiveComplexity.SecondOrderNew).

It is a bona fide DescriptiveComplexity.ComplexityClass because ∃SO[new] definability is closed under (ordered) first-order reductions (DescriptiveComplexity.SigmaSONewDefinable.of_foReduction in DescriptiveComplexity.SecondOrderNewPull, and DescriptiveComplexity.SigmaSONewDefinable.of_orderedReduction in DescriptiveComplexity.SecondOrderNewOrdered): the target's extended universe is definable inside the source's, with the same invented values, so the kernel pulls back through a relativized interpretation, and the order of an ordered reduction is re-quantified inside the block under a guard relativized to the original elements.

DescriptiveComplexity.NP_subset_RE is the inclusion NP ⊆ RE, by inventing nothing.

What this file claims, and where the rest is #

RE is here a logically defined class, exactly as NP is Σ₁-definability rather than a machine notion: a completeness proof for it is an ∃SO[new] definition plus a first-order reduction. Two facts about it are proved elsewhere, where the class meets Mathlib's computability layer, and nothing in this file assumes them:

Both are in DescriptiveComplexity.Computability.CodeHaltComplete.

The class RE: the problems definable in ∃SO[new], existential second-order logic with value invention. Unbounding the number of invented values is the only change from the Σ₁ definition of NP, and it is what takes the class from “search a space exponential in the instance” to “search an unbounded space of finite witnesses”.

It is a DescriptiveComplexity.ComplexityClass by the two closure theorems of DescriptiveComplexity.SecondOrderNewPull and DescriptiveComplexity.SecondOrderNewOrdered; hardness is cofinal, as everywhere in this development (see DescriptiveComplexity.hard_RE_iff).

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    Dependency graph
    @[reducible, inline]

    co-RE: the problems whose complement is recursively enumerable. Unlike coNP, which the second-order quantifier duality identifies with Π₁ definability, this is only the complement operator applied to RE: ∃SO[new] has no dual reading here, and no inclusion between RE and co-RE is available at this level. That the two classes differ is DescriptiveComplexity.RE_ne_coRE.

    Equations
    Instances For
      Dependency graph
      Dependency graph
      Dependency graph

      Over a relational vocabulary, cofinal RE-hardness is the usual notion: every ∃SO[new]-definable problem reduces to P.

      Dependency graph

      NP ⊆ RE: an existential second-order sentence is an ∃SO[new] sentence that invents nothing (DescriptiveComplexity.SigmaSODefinable.toNew).

      Dependency graph
      Dependency graph