Documentation

Linglib.Core.Logic.Modal.Inquisitive

Inquisitive Modal Logic (InqML) #

[Cia22] [Cia14] [CGR18]

Inquisitive modal logic extends classical modal logic with a treatment of questions alongside statements, following the Ciardelli-Groenendijk-Roelofsen tradition. The originating modal paper is [Cia14] (Advances in Modal Logic), with the propositional inquisitive system InqB developed in [CGR18] (Oxford University Press) and the modal preview in [Cia22] Chapter 8.

Formulas are evaluated at information states (teams of worlds), with two crucial novelties relative to BSML / MDL / MIL:

Reference: [Cia22] Chapter 8 (modal preview), with the propositional InqB base from Chapter 3.

Closure profile #

PropertyInqML formula
IsLowerSet✓ (persistence)
SupClosed✗ broken by \\/
∅ ∈ support

InqML inhabits the same closure cell as MDL (downward-closed + empty, sup-closure broken) — but via a different syntactic mechanism: the inquisitive disjunction \\/ breaks union closure where MDL's dependence atom does. This is the second inhabitant of this cell in linglib, demonstrating that the architectural pattern "team-semantic logic with non-classical disjunction-like connective fails union closure" applies regardless of whether the connective is question- flavored (InqML) or dependence-flavored (MDL).

Main declarations #

Implementation notes #

The standard inquisitive connective set is {⊥, ∧, →, \\/} with ¬φ := φ → ⊥, !φ := ¬¬φ (declarative variant), and ?φ := φ \\/ ¬φ (polar question) as standard abbreviations. We include \\/ and as primitives; ¬, !, ? can be added as helpers later when a consumer needs them.

The modal extension adds only per [Cia22] §8.2. Section 8.3 introduces a second modality (properly inquisitive, using a relation R : W × ℘(W) instead of R : W × W) — deferred to a follow-up file/PR because it requires a different model carrier than KripkeModel.

The KripkeModel carrier from Core/Logic/Modal/Kripke.lean is reused. Per-world semantics naturally fits the R : W → Finset W shape.

Sibling logics in Core/Logic/Modal/ #

Todo #

Syntax (Ciardelli §3 + §8) #

inductive Core.Logic.Modal.Inquisitive.Formula (Atom : Type u_3) :
Type u_3

InqML syntax: classical propositional base (atoms, , , ) extended with inquisitive disjunction \\/ and Kripke modality .

Instances For
    def Core.Logic.Modal.Inquisitive.instReprFormula.repr {Atom✝ : Type u_3} [Repr Atom✝] :
    Formula Atom✝Std.Format
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[implicit_reducible]
      instance Core.Logic.Modal.Inquisitive.instReprFormula {Atom✝ : Type u_3} [Repr Atom✝] :
      Repr (Formula Atom✝)
      Equations

      Semantics (Ciardelli §3.1 + §8.2) #

      def Core.Logic.Modal.Inquisitive.eval {W : Type u_1} [DecidableEq W] [Fintype W] {Atom : Type u_2} (M : KripkeModel W Atom) :
      Formula AtomFinset WProp

      Inquisitive team-semantic evaluation. Single-relation semantics (only support, no anti-support); negation is derived as impl φ bot.

      Equations
      Instances For
        @[reducible, inline]
        abbrev Core.Logic.Modal.Inquisitive.support {W : Type u_1} [DecidableEq W] [Fintype W] {Atom : Type u_2} (M : KripkeModel W Atom) (φ : Formula Atom) (s : Finset W) :

        Support: alias for eval. InqML has a single support relation (no anti-support).

        Equations
        Instances For
          @[simp]
          theorem Core.Logic.Modal.Inquisitive.support_atom {W : Type u_1} [DecidableEq W] [Fintype W] {Atom : Type u_2} (M : KripkeModel W Atom) (p : Atom) (s : Finset W) :
          support M (Formula.atom p) s ws, M.val p w = true
          @[simp]
          theorem Core.Logic.Modal.Inquisitive.support_bot {W : Type u_1} [DecidableEq W] [Fintype W] {Atom : Type u_2} (M : KripkeModel W Atom) (s : Finset W) :
          support M Formula.bot s s =
          @[simp]
          theorem Core.Logic.Modal.Inquisitive.support_conj {W : Type u_1} [DecidableEq W] [Fintype W] {Atom : Type u_2} (M : KripkeModel W Atom) (φ ψ : Formula Atom) (s : Finset W) :
          support M (φ.conj ψ) s support M φ s support M ψ s
          @[simp]
          theorem Core.Logic.Modal.Inquisitive.support_impl {W : Type u_1} [DecidableEq W] [Fintype W] {Atom : Type u_2} (M : KripkeModel W Atom) (φ ψ : Formula Atom) (s : Finset W) :
          support M (φ.impl ψ) s ts, support M φ tsupport M ψ t
          @[simp]
          theorem Core.Logic.Modal.Inquisitive.support_inqDisj {W : Type u_1} [DecidableEq W] [Fintype W] {Atom : Type u_2} (M : KripkeModel W Atom) (φ ψ : Formula Atom) (s : Finset W) :
          support M (φ.inqDisj ψ) s support M φ s support M ψ s
          @[simp]
          theorem Core.Logic.Modal.Inquisitive.support_nec {W : Type u_1} [DecidableEq W] [Fintype W] {Atom : Type u_2} (M : KripkeModel W Atom) (φ : Formula Atom) (s : Finset W) :
          support M φ.nec s ws, support M φ (M.access w)

          Derived connectives #

          @[reducible, inline]
          abbrev Core.Logic.Modal.Inquisitive.Formula.neg {Atom : Type u_2} (φ : Formula Atom) :
          Formula Atom

          Negation: ¬φ := φ → ⊥ (Ciardelli §3, Def 3.2.2).

          Equations
          Instances For
            @[reducible, inline]
            abbrev Core.Logic.Modal.Inquisitive.Formula.polarQ {Atom : Type u_2} (φ : Formula Atom) :
            Formula Atom

            Polar question: ?φ := φ \\/ ¬φ (Ciardelli §3, Def 3.2.2). The canonical inquisitive abbreviation for "whether φ".

            Equations
            Instances For

              Persistence (Ciardelli §3 — downward closure) #

              theorem Core.Logic.Modal.Inquisitive.isLowerSet_support {W : Type u_1} [DecidableEq W] [Fintype W] {Atom : Type u_2} (M : KripkeModel W Atom) (φ : Formula Atom) :
              IsLowerSet {s : Finset W | support M φ s}

              Persistence: every InqML formula's support is downward-closed under . Ciardelli §3 (propositional case) + §8.2 (modal extension); the key structural property of inquisitive semantics.

              Empty-team property (Ciardelli §3) #

              theorem Core.Logic.Modal.Inquisitive.support_empty {W : Type u_1} [DecidableEq W] [Fintype W] {Atom : Type u_2} (M : KripkeModel W Atom) (φ : Formula Atom) :
              support M φ

              Every InqML formula is supported on the empty team.

              Inquisitive disjunction breaks union closure #

              theorem Core.Logic.Modal.Inquisitive.not_supClosed_inqDisj_of_witness {W : Type u_1} [DecidableEq W] [Fintype W] {Atom : Type u_2} {p q : Atom} {w₁ w₂ : W} {M : KripkeModel W Atom} (hp₁ : M.val p w₁ = true) (hq₁ : M.val q w₁ = false) (hp₂ : M.val p w₂ = false) (hq₂ : M.val q w₂ = true) :
              ¬SupClosed {s : Finset W | support M ((Formula.atom p).inqDisj (Formula.atom q)) s}

              Inquisitive disjunction breaks union closure: a constructive counterexample. With two worlds w₁, w₂ where p is true at w₁ only and q is true at w₂ only, the singletons {w₁} and {w₂} each support p \\/ q (the first supports p, the second supports q), but {w₁, w₂} supports neither. This is the canonical inquisitive UC-failure pattern.

              Soundness for the closure cell (Definability bridge) #

              InqML is sound for its closure cell: every InqML-definable team property is downward-closed (persistent) and has the empty-team property. InqML shares the downward-closed, empty-team cell with dependence logic ([Cia22]; [Ant25]) — but breaks union closure via inquisitive disjunction \\/ (see not_supClosed_inqDisj_of_witness) rather than via a dependence atom.

              Composes isLowerSet_support (persistence) and support_empty through the Team/Definability.lean bridge. The converse (every such property is InqML-definable) is the open half.