Documentation

Linglib.Core.Logic.Intensional.RestrictedModality

Restricted Modality: Modal Axioms, Decidability, Logic Lattice, Gallin Hierarchy #

@cite{dowty-wall-peters-1981} @cite{kratzer-1981} @cite{kripke-1963}

Builds on the polymorphic Kripke foundation in Defs.lean. This file adds:

  1. Modal axiom correspondence (T, D, 4, B, 5): which frame conditions on R validate which modal axioms when interpreted via boxR/diamondR. The K axiom holds for any R.

  2. Monotonicity, distribution, restriction: standard properties of normal modal operators. Restriction (boxR_restrict) is Kratzer's insight that conversational backgrounds strengthen necessity.

  3. Decidable instances: boxR R p w, diamondR R p w are decidable over finite worlds with decidable accessibility and propositions.

  4. Logic lattice: Axiom, Logic, named logics (K, T, D, S4, S5, KD45), lattice instances, frameConditions predicate.

  5. Gallin hierarchy (@cite{gallin-1975}): PropOp (general propositional operators), indicialNec/indicialPoss (Kripke-type), s5Nec/s5Poss (universal-accessibility = classical IL S5). The architectural anchor showing that classical IL S5 = the universal-accessibility special case of the polymorphic theory, and that non-Kripke operators (tense, progressive) live outside IsIndicial.

  6. IL Frame specialization: with universal accessibility, boxR/diamondR recover S5 box/diamond from Quantification.lean — the formal bridge that the polymorphic theory contains classical IL as a special case.

Connection to Kratzer semantics #

Kratzer's conversational backgrounds derive accessibility from a modal base: R_f(w, w') ≡ w' ∈ ⋂f(w). The ordering source further restricts to "best" worlds. In IL terms:

theorem Core.Logic.Intensional.boxR_K {W : Type u_1} (R : AccessRel W) (p q : WProp) (w : W) (hpq : boxR R (fun (v : W) => p vq v) w) (hp : boxR R p w) :
boxR R q w

K axiom: □_R(p → q) → (□_R p → □_R q). Holds for any accessibility relation.

theorem Core.Logic.Intensional.boxR_T {W : Type u_1} (R : AccessRel W) (hR : IsReflexive R) (p : WProp) (w : W) (h : boxR R p w) :
p w

T axiom: reflexive R gives □_R p w → p w. What is necessary is actual.

theorem Core.Logic.Intensional.boxR_D {W : Type u_1} (R : AccessRel W) (hS : IsSerial R) (p : WProp) (w : W) (h : boxR R p w) :
diamondR R p w

D axiom: serial R gives □_R p w → ◇_R p w. What is necessary is possible.

theorem Core.Logic.Intensional.boxR_four {W : Type u_1} (R : AccessRel W) (hT : IsTransitive R) (p : WProp) (w : W) (h : boxR R p w) :
boxR R (boxR R p) w

4 axiom: transitive R gives □_R p → □_R □_R p. Positive introspection.

theorem Core.Logic.Intensional.boxR_B {W : Type u_1} (R : AccessRel W) (hS : IsSymmetric R) (p : WProp) (w : W) (h : p w) :
boxR R (diamondR R p) w

B axiom: symmetric R gives p w → □_R ◇_R p w. What is actual is necessarily possible.

theorem Core.Logic.Intensional.boxR_five {W : Type u_1} (R : AccessRel W) (hE : IsEuclidean R) (p : WProp) (w : W) (h : diamondR R p w) :
boxR R (diamondR R p) w

5 axiom: euclidean R gives ◇_R p w → □_R ◇_R p w. Positive possibility introspection.

theorem Core.Logic.Intensional.boxR_mono {W : Type u_1} (R : AccessRel W) {p q : WProp} (h : ∀ (v : W), p vq v) (w : W) (hb : boxR R p w) :
boxR R q w

boxR R is monotone: if p ≤ q pointwise, then □_R p ≤ □_R q.

theorem Core.Logic.Intensional.diamondR_mono {W : Type u_1} (R : AccessRel W) {p q : WProp} (h : ∀ (v : W), p vq v) (w : W) (hd : diamondR R p w) :
diamondR R q w

diamondR R is monotone.

theorem Core.Logic.Intensional.boxR_conj {W : Type u_1} (R : AccessRel W) (p q : WProp) (w : W) :
boxR R (fun (v : W) => p v q v) w = (boxR R p w boxR R q w)

□_R distributes over .

theorem Core.Logic.Intensional.diamondR_disj {W : Type u_1} (R : AccessRel W) (p q : WProp) (w : W) :
diamondR R (fun (v : W) => p v q v) w = (diamondR R p w diamondR R q w)

◇_R distributes over .

theorem Core.Logic.Intensional.boxR_necessitation {W : Type u_1} (R : AccessRel W) (p : WProp) (h : ∀ (v : W), p v) (w : W) :
boxR R p w

Necessitation: if p holds at every world, then □_R p holds everywhere.

theorem Core.Logic.Intensional.boxR_restrict {W : Type u_1} {R₁ R₂ : AccessRel W} (h : ∀ (w v : W), R₂ w vR₁ w v) (p : WProp) (w : W) (hb : boxR R₁ p w) :
boxR R₂ p w

Restricting accessibility strengthens necessity: if R₂ ⊆ R₁, then □_{R₁} p → □_{R₂} p.

theorem Core.Logic.Intensional.diamondR_restrict {W : Type u_1} {R₁ R₂ : AccessRel W} (h : ∀ (w v : W), R₂ w vR₁ w v) (p : WProp) (w : W) (hd : diamondR R₂ p w) :
diamondR R₁ p w

Restricting accessibility weakens possibility: if R₂ ⊆ R₁, then ◇_{R₂} p → ◇_{R₁} p.

theorem Core.Logic.Intensional.S5_frame_all_axioms {W : Type u_1} (R : AccessRel W) (hR : IsReflexive R) (hE : IsEuclidean R) :
(∀ (p : WProp) (w : W), boxR R p wp w) (∀ (p : WProp) (w : W), boxR R p wdiamondR R p w) (∀ (p : WProp) (w : W), boxR R p wboxR R (boxR R p) w) (∀ (p : WProp) (w : W), p wboxR R (diamondR R p) w) ∀ (p : WProp) (w : W), diamondR R p wboxR R (diamondR R p) w

With reflexive + euclidean accessibility (= S5 frame conditions), boxR validates all of T, D, 4, B, 5.

theorem Core.Logic.Intensional.boxR_eq_forall {W : Type u_1} (R : AccessRel W) (p : WProp) (w : W) :
boxR R p w = ∀ (v : W), R w vp v

boxR R p i is the infimum of p v over worlds v accessible from w.

theorem Core.Logic.Intensional.diamondR_eq_exists {W : Type u_1} (R : AccessRel W) (p : WProp) (w : W) :
diamondR R p w = ∃ (v : W), R w v p v

diamondR R p w is the supremum of p v over worlds v accessible from w.

The Gallin hierarchy (@cite{gallin-1975}) #

In IL/ML_p, propositional operators form a three-level hierarchy:

  1. General (PropOp): Any (W → Prop) → W → Prop — arbitrary properties of propositions, varying by world.

  2. Indicial (= Kripke-type): Operators definable via an accessibility relation R. The necessity variant is ∀ v, R w v → p v (= boxR); the possibility variant is ∃ v, R w v ∧ p v (= diamondR).

  3. S5: The indicial case with R = universalR — IL's box/diamond.

All PropOps  ⊋  Indicial (Kripke)  ⊋  S5 (IL's □)

Why this is here even with no current downstream consumer. These theorems are the architectural anchor for the design choice that restricted modality lives in Core/Logic/Intensional/: they prove that classical IL S5 is exactly the universal-accessibility special case of the polymorphic theory, and that every boxR R is a normal modal operator (monotone, distribConj). Non-indicial PropOps (e.g., tense, present progressive) are the formal extension point for tense / non-Kripke modal operators that cannot be expressed as boxR R for any R. Removing this section would erase the formal record of why the directory layout is what it is.

@[reducible, inline]

A propositional operator: any function from propositions to propositions, parametrized by world. This is Gallin's most general level — an arbitrary property of propositions varying by index.

Examples: necessity (boxR R), possibility (diamondR R), past tense (∃ v, v < w ∧ p v), present progressive, habituals.

Equations
Instances For

    A propositional operator N is monotone if p ≤ q pointwise implies N p ≤ N q pointwise. Every K-operator (= normal modal operator) is monotone.

    Equations
    • N.Monotone = ∀ {p q : WProp}, (∀ (v : W), p vq v)∀ (w : W), N p wN q w
    Instances For

      A propositional operator distributes over conjunction (one direction of the K axiom: □(p ∧ q) → □p ∧ □q).

      Equations
      • N.DistribConj = ∀ (p q : WProp) (w : W), N (fun (v : W) => p v q v) wN p w N q w
      Instances For

        An indicial necessity operator: the restriction of PropOp to operators definable via an accessibility relation. indicialNec R p w ↔ ∀ v, R w v → p v.

        This is boxR viewed as a member of the Gallin hierarchy.

        Equations
        Instances For

          An indicial possibility operator (dual). indicialPoss R p w ↔ ∃ v, R w v ∧ p v.

          Equations
          Instances For

            boxR IS indicialNec — definitional equality.

            diamondR IS indicialPoss — definitional equality.

            A propositional operator is indicial if there exists an accessibility relation R such that N = indicialNec R. The non-indicial case is where tense and other non-Kripke operators live.

            Equations
            Instances For

              Every boxR R is indicial.

              Every indicial operator is monotone (every Kripke operator is a K-operator).

              Every indicial operator distributes over conjunction.

              S5 necessity as a PropOp: p holds at all worlds.

              Equations
              Instances For

                S5 possibility as a PropOp: p holds at some world.

                Equations
                Instances For

                  S5 = indicialNec universalR: the S5 necessity operator is the indicial operator with universal accessibility. The formal statement that S5 sits at the top of the indicial hierarchy.

                  S5 necessity is indicial.

                  theorem Core.Logic.Intensional.indicialNec_weaker_of_sub {W : Type u_1} {R₁ R₂ : AccessRel W} (h : ∀ (w v : W), R₂ w vR₁ w v) (p : WProp) (w : W) :
                  indicialNec R₁ p windicialNec R₂ p w

                  Restriction order on indicial operators: if R₂ ⊆ R₁ then indicialNec R₁ is weaker than indicialNec R₂ — fewer accessible worlds means a stronger necessity.

                  S5 (R = universal) is the weakest; empty R is the strongest (vacuously true). This is Kratzer's insight that conversational backgrounds restrict the modal base, formalized at the PropOp level.

                  theorem Core.Logic.Intensional.s5Nec_weakest {W : Type u_1} (R : AccessRel W) (p : WProp) (w : W) (h : s5Nec p w) :

                  S5 necessity is the weakest indicial operator: for any R, s5Nec p w → indicialNec R p w.

                  theorem Core.Logic.Intensional.indicialNec_emptyR {W : Type u_1} (p : WProp) (w : W) :

                  Empty accessibility gives the strongest (vacuously true) indicial operator.

                  Following mathlib conventions: definitions are Prop-valued (in Defs.lean), with Decidable instances providing computation. With [Fintype W], [DecidableRel R], and [DecidablePred p], formulas like boxR R p w and IsReflexive R reduce by decide.

                  @[implicit_reducible]
                  instance Core.Logic.Intensional.boxR_decidable {W : Type u_2} [Fintype W] (R : AccessRel W) (p : WProp) (w : W) [(v : W) → Decidable (R w v)] [DecidablePred p] :
                  Decidable (boxR R p w)

                  boxR R p w is decidable when worlds enumerate, accessibility is decidable, and the proposition is decidable.

                  Equations
                  @[implicit_reducible]
                  instance Core.Logic.Intensional.diamondR_decidable {W : Type u_2} [Fintype W] (R : AccessRel W) (p : WProp) (w : W) [(v : W) → Decidable (R w v)] [DecidablePred p] :
                  Decidable (diamondR R p w)

                  diamondR R p w is decidable under the same conditions as boxR.

                  Equations

                  Axiom schemas addable to K.

                  Instances For
                    @[implicit_reducible]
                    Equations
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[implicit_reducible]
                      Equations
                      • One or more equations did not get rendered due to their size.

                      A normal modal logic is K plus axiom schemas.

                      Instances For
                        def Core.Logic.Intensional.instDecidableEqLogic.decEq (x✝ x✝¹ : Logic) :
                        Decidable (x✝ = x✝¹)
                        Equations
                        Instances For
                          @[implicit_reducible]

                          L₁ ≤ L₂ means L₁ is weaker (fewer axioms).

                          Equations
                          @[implicit_reducible]
                          Equations
                          • One or more equations did not get rendered due to their size.
                          @[implicit_reducible]
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            Equations
                            Instances For

                              Frame conditions required by a logic.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For

                                Bridge theorems connecting the polymorphic infrastructure to Montague's IL. With universal accessibility, boxR/diamondR recover S5 box/diamond from Quantification.lean. These would all be rfl if box/diamond were definitionally boxR universalR ∘ pick-an-index — see the Quantification module for the layering question. As stated they're one-step simp proofs.

                                theorem Core.Logic.Intensional.boxR_universal {F : Frame} (p : F.Denot Ty.prop) :
                                (fun (i : F.Index) => boxR universalR p i) = fun (x : F.Index) => box p

                                S5 necessity (box) is restricted necessity with universal accessibility.

                                theorem Core.Logic.Intensional.diamondR_universal {F : Frame} (p : F.Denot Ty.prop) :
                                (fun (i : F.Index) => diamondR universalR p i) = fun (x : F.Index) => diamond p

                                S5 possibility (diamond) is restricted possibility with universal accessibility.

                                theorem Core.Logic.Intensional.box_implies_boxR {F : Frame} (R : AccessRel F.Index) (p : F.Denot Ty.prop) (h : box p) (i : F.Index) :
                                boxR R p i

                                S5 box implies any restricted box.

                                Any restricted diamond implies S5 diamond.

                                theorem Core.Logic.Intensional.valid_boxR {F : Frame} (R : AccessRel F.Index) (p : F.Denot Ty.prop) (hv : Algebra.valid p) (i : F.Index) :
                                boxR R p i

                                A valid proposition is R-necessary at every world (for any R).

                                theorem Core.Logic.Intensional.boxR_entailment_lift {F : Frame} (R : AccessRel F.Index) (p q : F.Denot Ty.prop) (h : ∀ (v : F.Index), p vq v) (i : F.Index) (hb : boxR R p i) :
                                boxR R q i

                                Semantic entailment lifts to restricted modality: if p ⊨ q then □_R p ⊨ □_R q.