Documentation

InfinitaryLogic.Linf.QuantifierRank

L∞ω Quantifier Rank #

This file defines the quantifier rank of L∞ω formulas and the "agree up to rank α" relation between structures.

Main Definitions #

Main Results #

References #

Quantifier Rank #

noncomputable def FirstOrder.Language.BoundedFormulaInf.qrank {L : Language} {α : Type u_1} {n : } :

The quantifier rank of an L∞ω formula.

  • Atomic formulas (falsum, equal, rel) have rank 0
  • Implication takes the max of its arguments
  • Universal quantification adds 1
  • Infinitary connectives take the sup of their arguments
Equations
Instances For
    @[reducible, inline]
    noncomputable abbrev FirstOrder.Language.FormulaInf.qrank {L : Language} {α : Type u_1} (φ : L.FormulaInf α) :

    Quantifier rank of a formula (no bound variables).

    Equations
    Instances For
      @[reducible, inline]

      Quantifier rank of a sentence.

      Equations
      Instances For

        Quantifier Rank Lemmas #

        @[simp]
        theorem FirstOrder.Language.BoundedFormulaInf.qrank_equal {L : Language} {α : Type u_1} {n : } (t₁ t₂ : L.Term (α Fin n)) :
        (equal t₁ t₂).qrank = 0
        @[simp]
        theorem FirstOrder.Language.BoundedFormulaInf.qrank_rel {L : Language} {α : Type u_1} {n l : } (R : L.Relations l) (ts : Fin lL.Term (α Fin n)) :
        (rel R ts).qrank = 0
        @[simp]
        theorem FirstOrder.Language.BoundedFormulaInf.qrank_imp {L : Language} {α : Type u_1} {n : } (φ ψ : L.BoundedFormulaInf α n) :
        (φ.imp ψ).qrank = max φ.qrank ψ.qrank
        @[simp]
        theorem FirstOrder.Language.BoundedFormulaInf.qrank_all {L : Language} {α : Type u_1} {n : } (φ : L.BoundedFormulaInf α (n + 1)) :
        φ.all.qrank = φ.qrank + 1
        @[simp]
        theorem FirstOrder.Language.BoundedFormulaInf.qrank_iSup {L : Language} {α : Type u_1} {n : } {ι : Type u_2} (φs : ιL.BoundedFormulaInf α n) :
        (iSup φs).qrank = ⨆ (i : ι), (φs i).qrank
        @[simp]
        theorem FirstOrder.Language.BoundedFormulaInf.qrank_iInf {L : Language} {α : Type u_1} {n : } {ι : Type u_2} (φs : ιL.BoundedFormulaInf α n) :
        (iInf φs).qrank = ⨆ (i : ι), (φs i).qrank
        @[simp]

        The top formula has rank 0.

        @[simp]

        Negation preserves quantifier rank.

        theorem FirstOrder.Language.BoundedFormulaInf.qrank_and {L : Language} {α : Type u_1} {n : } (φ ψ : L.BoundedFormulaInf α n) :
        (φ.and ψ).qrank = max φ.qrank ψ.qrank

        Conjunction takes max of ranks.

        theorem FirstOrder.Language.BoundedFormulaInf.qrank_or {L : Language} {α : Type u_1} {n : } (φ ψ : L.BoundedFormulaInf α n) :
        (φ.or ψ).qrank = max φ.qrank ψ.qrank

        Disjunction takes max of ranks.

        theorem FirstOrder.Language.BoundedFormulaInf.qrank_ex {L : Language} {α : Type u_1} {n : } (φ : L.BoundedFormulaInf α (n + 1)) :
        φ.ex.qrank = φ.qrank + 1

        Existential quantification adds 1 to rank.

        @[simp]
        theorem FirstOrder.Language.BoundedFormulaInf.qrank_mapFreeVars {L : Language} {α α' : Type w'} (f : αα') {n : } (φ : L.BoundedFormulaInf α n) :

        mapFreeVars preserves quantifier rank. Renaming free variables does not change the logical complexity of a formula.

        Equivalence up to Quantifier Rank #

        Two structures are equivalent up to quantifier rank α if they satisfy the same sentences of quantifier rank ≤ α.

        The current definition pins both the ordinal α and the formula universe to Ordinal.{0} and BoundedFormulaInf.{u, v, 0, 0} respectively. This is a practical choice: qrank returns Ordinal.{0}, so the inequality φ.qrank ≤ α requires α : Ordinal.{0}. See LinfEquiv for discussion of the uι = 0 choice.

        Equations
        Instances For

          Equivalence up to quantifier rank is reflexive.

          theorem FirstOrder.Language.EquivQRInf.symm {L : Language} {M : Type w} [L.Structure M] {N : Type w} [L.Structure N] {α : Ordinal.{0}} (h : L.EquivQRInf α M N) :
          L.EquivQRInf α N M

          Equivalence up to quantifier rank is symmetric.

          theorem FirstOrder.Language.EquivQRInf.trans {L : Language} {M : Type w} [L.Structure M] {N : Type w} [L.Structure N] {P : Type w} [L.Structure P] {α : Ordinal.{0}} (h₁ : L.EquivQRInf α M N) (h₂ : L.EquivQRInf α N P) :
          L.EquivQRInf α M P

          Equivalence up to quantifier rank is transitive.

          theorem FirstOrder.Language.EquivQRInf.monotone {L : Language} {M : Type w} [L.Structure M] {N : Type w} [L.Structure N] {α β : Ordinal.{0}} (hαβ : α β) (h : L.EquivQRInf β M N) :
          L.EquivQRInf α M N

          Equivalence at higher rank implies equivalence at lower rank.

          Equivalence at rank 0 means agreement on all quantifier-free sentences.

          Universe-correct Equivalence up to Quantifier Rank #

          Equivalence up to quantifier rank α with index types matching the structure universe.

          Unlike EquivQRInf which pins uι = 0, this version uses BoundedFormulaInf.{u, v, 0, w} so that index types for iSup/iInf may be any Type w. This is the companion of LinfEquivW for tracking quantifier rank bounds.

          Equations
          Instances For
            theorem FirstOrder.Language.EquivQRInfW.symm {L : Language} {M : Type w} [L.Structure M] {N : Type w} [L.Structure N] {α : Ordinal.{0}} (h : L.EquivQRInfW α M N) :
            L.EquivQRInfW α N M
            theorem FirstOrder.Language.EquivQRInfW.trans {L : Language} {M : Type w} [L.Structure M] {N : Type w} [L.Structure N] {P : Type w} [L.Structure P] {α : Ordinal.{0}} (h₁ : L.EquivQRInfW α M N) (h₂ : L.EquivQRInfW α N P) :
            L.EquivQRInfW α M P
            theorem FirstOrder.Language.EquivQRInfW.monotone {L : Language} {M : Type w} [L.Structure M] {N : Type w} [L.Structure N] {α β : Ordinal.{0}} (hαβ : α β) (h : L.EquivQRInfW β M N) :
            L.EquivQRInfW α M N