Documentation

Mathlib.ModelTheory.Infinitary.QuantifierRank

Quantifier rank of infinitary formulas #

The quantifier rank of an infinitary formula: 0 on atoms, max on implication, successor under ∀, and the supremum over the branching carrier at an infinitary node.

The universe of the rank #

Because the infinitary cases take a supremum over the carrier ι, the natural target is Ordinal.{uι} — the carrier's own ordinal universe. At ι := ℕ this is exactly Ordinal.{0}, which is where Scott analysis wants it; no lifting appears in the L_{ω₁ω} case.

Transport between carriers is therefore stated up to Ordinal.lift: qrank_reindex says reindex preserves rank once both sides are lifted into a common universe. Padding is invisible to rank, since the padded branches are ⊤/⊥, both of rank 0 — which is why the statement holds for empty carriers too, where every branch is padding.

Main definitions #

Main results #

noncomputable def FirstOrder.Language.BoundedFormulaInf.qrank {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} :

The quantifier rank of an infinitary formula, valued in the branching carrier's own ordinal universe.

Equations
Instances For
    @[simp]
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.qrank_equal {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {t₁ t₂ : L.Term (α ⊕ Fin n)} :
    (equal t₁ t₂).qrank = 0
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.qrank_rel {L : Language} {ι : Type uι} {α : Type u'} {n l : ℕ} {R : L.Relations l} {ts : Fin l → L.Term (α ⊕ Fin n)} :
    (rel R ts).qrank = 0
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.qrank_imp {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {φ ψ : L.BoundedFormulaInf ι α n} :
    (φ.imp ψ).qrank = max φ.qrank ψ.qrank
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.qrank_all {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {φ : L.BoundedFormulaInf ι α (n + 1)} :
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.qrank_iSup {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {φs : ι → L.BoundedFormulaInf ι α n} :
    (iSup φs).qrank = ⨆ (i : ι), (φs i).qrank
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.qrank_iInf {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {φs : ι → L.BoundedFormulaInf ι α n} :
    (iInf φs).qrank = ⨆ (i : ι), (φs i).qrank
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.qrank_not {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {φ : L.BoundedFormulaInf ι α n} :
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.qrank_bot {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} :
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.qrank_top {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} :
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.qrank_ex {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {φ : L.BoundedFormulaInf ι α (n + 1)} :
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.qrank_alls {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {φ : L.BoundedFormulaInf ι α n} :
    qrank φ.alls = φ.qrank + ↑n
    @[simp]
    theorem FirstOrder.Language.BoundedFormulaInf.qrank_exs {L : Language} {ι : Type uι} {α : Type u'} {n : ℕ} {φ : L.BoundedFormulaInf ι α n} :
    qrank φ.exs = φ.qrank + ↑n

    Rank transport: carrier transport preserves quantifier rank, up to Ordinal.lift into the common universe.

    Padding is invisible: the branches a coding cannot decode are ⊤/⊥, both of rank 0, so they never raise the supremum. In particular this holds when ι is empty, where every branch of the transported formula is padding.

    Rank transport along an equivalence coding, where no padding occurs.

    Carrier-independence of the finitary embedding's rank. A finitary formula has no infinitary nodes, so its rank is the same at every branching carrier — the ranks live in different ordinal universes, so the statement is up to Ordinal.lift, exactly as in qrank_reindex.

    Unlike qrank_reindex this needs no coding between the carriers: there is nothing to transport.