Documentation

LeanPool.InfinitaryLogic.Lomega1omega.Syntax

Lω₁ω Syntax — compatibility facade over the fixed-carrier syntax #

BoundedFormulaω, Formulaω and Sentenceω are no longer declared here. They come from Mathlib.ModelTheory.Infinitary.Syntax, where BoundedFormulaω L α n is an abbrev for BoundedFormulaInf L ℕ α n. This file re-exports that syntax under the module path and namespace the project already uses, and adds only what Mathlib does not provide.

Why an abbrev and not a def #

The specialization must stay definitional, not merely propositional. Since Lean 4.34 a goal has to be type-correct at implicit transparency before rw/simp will act on it, so a semireducible wrapper around BoundedFormulaInf ℕ would silently break rewriting across the whole ω consumer surface. The probes at the end of this file certify the identification with no change, rewrite, or explicit cast — their absence is the certification.

What this file still owns #

Bot, Top, Inhabited, not and ex now come from Mathlib and are deliberately not redeclared. BoundedFormulaInf.verum plays the role of the old top and is definitionally equal to it (not falsum reduces to imp falsum falsum).

Qualified constructor surface #

The constructors live in the BoundedFormulaInf namespace. Dot-notation on a BoundedFormulaω already resolves there, but consumers naming a constructor explicitly as BoundedFormulaω.falsum need these. Each is an abbrev, so it unfolds by rfl, and each is @[match_pattern], so it may still be used in pattern position.

@[reducible, match_pattern, inline]

Falsity, as a qualified constructor name.

Equations
Instances For
    @[reducible, match_pattern, inline]
    abbrev FirstOrder.Language.BoundedFormulaω.equal {L : Language} {α : Type u'} {n : } (t₁ t₂ : L.Term (α Fin n)) :

    Equality, as a qualified constructor name.

    Equations
    Instances For
      @[reducible, match_pattern, inline]
      abbrev FirstOrder.Language.BoundedFormulaω.rel {L : Language} {α : Type u'} {n l : } (R : L.Relations l) (ts : Fin lL.Term (α Fin n)) :

      Relation application, as a qualified constructor name.

      Equations
      Instances For
        @[reducible, match_pattern, inline]
        abbrev FirstOrder.Language.BoundedFormulaω.imp {L : Language} {α : Type u'} {n : } (φ ψ : L.BoundedFormulaω α n) :

        Implication, as a qualified constructor name.

        Equations
        Instances For
          @[reducible, match_pattern, inline]
          abbrev FirstOrder.Language.BoundedFormulaω.all {L : Language} {α : Type u'} {n : } (φ : L.BoundedFormulaω α (n + 1)) :

          Universal quantification, as a qualified constructor name.

          Equations
          Instances For
            @[reducible, match_pattern, inline]
            abbrev FirstOrder.Language.BoundedFormulaω.iSup {L : Language} {α : Type u'} {n : } (φs : L.BoundedFormulaω α n) :

            Countable disjunction, as a qualified constructor name.

            Equations
            Instances For
              @[reducible, match_pattern, inline]
              abbrev FirstOrder.Language.BoundedFormulaω.iInf {L : Language} {α : Type u'} {n : } (φs : L.BoundedFormulaω α n) :

              Countable conjunction, as a qualified constructor name.

              Equations
              Instances For
                @[reducible, match_pattern, inline]

                Negation, as a qualified name. BoundedFormulaInf.not is the definition.

                Equations
                Instances For
                  @[reducible, match_pattern, inline]
                  abbrev FirstOrder.Language.BoundedFormulaω.ex {L : Language} {α : Type u'} {n : } (φ : L.BoundedFormulaω α (n + 1)) :

                  Existential quantification, as a qualified name.

                  Equations
                  Instances For
                    @[reducible, inline]

                    The true formula. Mathlib calls it verum; this is the project's historical name for it, and the two are definitionally equal (not falsum reduces to imp falsum falsum).

                    Equations
                    Instances For

                      Production's not and ex were @[match_pattern]; Mathlib's are not, and the attribute cannot be added downstream ("cannot add attribute to a declaration in an imported module"). The qualified BoundedFormulaω.not/.ex above are declared here and so do carry it, which covers consumers that name them explicitly; dot-notation patterns (| .not φ => …) resolve through the head symbol to BoundedFormulaInf.not and are therefore not available. If a consumer needs them, the fix belongs upstream on the fork, not here.

                      Derived connectives Mathlib does not provide #

                      @[match_pattern]

                      Conjunction of two formulas, defined via De Morgan.

                      Equations
                      Instances For
                        @[match_pattern]

                        Disjunction of two formulas.

                        Equations
                        Instances For

                          Biconditional between formulas.

                          Equations
                          Instances For
                            def FirstOrder.Language.BoundedFormulaω.einf {L : Language} {α : Type u'} {n : } {ι : Type u_1} [Encodable ι] (φs : ιL.BoundedFormulaω α n) :

                            Indexed conjunction over any Encodable type. This extends iInf from ℕ-indexed to general countable indices by encoding.

                            Equations
                            Instances For
                              def FirstOrder.Language.BoundedFormulaω.esup {L : Language} {α : Type u'} {n : } {ι : Type u_1} [Encodable ι] (φs : ιL.BoundedFormulaω α n) :

                              Indexed disjunction over any Encodable type. This extends iSup from ℕ-indexed to general countable indices by encoding.

                              Equations
                              Instances For

                                Explicit-encoding forms #

                                einf/esup take their encoding by instance search. A consumer that must use a specific enumeration — one supplied as data rather than found — is otherwise forced into a local letI, which is fragile and makes the resulting syntax look instance-dependent when it is not.

                                These are thin wrappers, deliberately: einf/esup are not redefined in terms of them. Reversing that dependency would disturb definitional reductions across many existing consumers.

                                def FirstOrder.Language.BoundedFormulaω.einfWith {L : Language} {α : Type u'} {n : } {ι : Type u_1} (e : Encodable ι) (φs : ιL.BoundedFormulaω α n) :

                                einf along an explicitly supplied encoding.

                                Equations
                                Instances For
                                  def FirstOrder.Language.BoundedFormulaω.esupWith {L : Language} {α : Type u'} {n : } {ι : Type u_1} (e : Encodable ι) (φs : ιL.BoundedFormulaω α n) :

                                  esup along an explicitly supplied encoding.

                                  Equations
                                  Instances For

                                    Implication notation for infinitary formulas.

                                    Equations
                                    Instances For

                                      Universal-quantifier notation for infinitary formulas.

                                      Equations
                                      Instances For

                                        Negation notation for infinitary formulas.

                                        Equations
                                        Instances For

                                          Existential-quantifier notation for infinitary formulas.

                                          Equations
                                          Instances For

                                            Biconditional notation for infinitary formulas.

                                            Equations
                                            Instances For

                                              Facade transparency gates #

                                              These must elaborate with no change, rewrite, or explicit cast. That is precisely what certifies that the ω names remain a definitional specialization — the property Lean 4.34's implicit-transparency requirement makes load-bearing for every rw/simp in the ω tower.