Documentation

Linglib.Core.Question.Basic

Question — core type, lattice, Heyting derivatives #

@cite{ciardelli-groenendijk-roelofsen-2018} @cite{puncochar-2016} @cite{puncochar-2019} @cite{theiler-etal-2018}

A bundled Question W — a non-empty downward-closed family of information states over W (where an information state is a subset of W). This is mathematically a non-empty LowerSet (Set W); in linguistic terms it is the umbrella structure for question-flavored content: it subsumes Hamblin alternative sets (polar, which), partition-style questions (via Core/Mood/PartitionAsInquiry.lean), and the inquisitive propositions of @cite{ciardelli-groenendijk-roelofsen-2018}. The name "Question" follows the decision-theoretic / discourse-semantic tradition (van Rooij, Westera) — neutral as to whether the consumer is doing inquisitive theorizing.

This Basic file carries the structural core: the type definition with its SetLike instance, the info/alt/isInformative/isInquisitive/ isDeclarative predicates, the declarative constructor, the algebraic operations (conj, inqDisj, top, bot) packaged into the CompleteDistribLattice instance, the basic info-on-lattice-operations API, the alt-as-maximal characterization, the existence of alternatives under finiteness, the Resolutions Theorem (DNF), the principal-ideal characterization of declaratives, the Heyting derivatives (compl_eq, proj, nonInfo, the division law), and the LEM-fails witness.

For Hamblin constructions (polar, which), see Core/Question/Hamblin.lean. For partial-answerhood and Roberts QUD-relevance predicates, see Core/Question/Relevance.lean. For the Setoid → Question embedding (used by POSWQ), see Core/Mood/PartitionAsInquiry.lean.

Mathlib alignment #

Why a bundled structure rather than LowerSet (Set W)? #

A downward-closed family of propositions on W is, abstractly, a LowerSet (Set W). We considered registering Question as a LowerSet synonym, but rejected it because the elements disagree: LowerSet.⊥ = ∅ (no resolving propositions), while ours is {∅} (only the inconsistent state resolves). The non-emptiness constraint (contains_empty) is essential to inquisitive semantics and is lost in LowerSet. We use SetLike instead, which gives the membership/coercion API without forcing LowerSet's .

structure Core.Question (W : Type u) :

An inquisitive proposition in the sense of @cite{ciardelli-groenendijk-roelofsen-2018}: a non-empty downward-closed family of information states over W. The states in props are the ones that resolve the issue raised by the sentence.

  • props : Set (Set W)

    The set of propositions resolving the issue.

  • contains_empty : self.props

    Contains the empty proposition (= the inconsistent information state). Equivalent to non-emptiness given downward closure.

  • downward_closed (p : Set W) : p self.propsqp, q self.props

    Downward closed: if p resolves the issue and q ⊆ p, then q also resolves it (any sufficient evidence is also sufficient when strengthened).

Instances For
    @[implicit_reducible]
    instance Core.Question.instSetLikeSet {W : Type u} :
    SetLike (Question W) (Set W)

    SetLike instance: an Question W coerces to its underlying Set (Set W) of resolving propositions. Auto-derives Membership (q ∈ P means q ∈ P.props), CoeSort, and the standard ext machinery. Mirrors mathlib's pattern for Submonoid, Subgroup, LowerSet, etc.

    Equations
    @[simp]
    theorem Core.Question.mem_props {W : Type u} {P : Question W} {q : Set W} :
    q P.props q P

    Membership normalization: q ∈ P.props rewrites to q ∈ P. Mirrors mathlib's mem_carrier pattern (SetLike.Basic line 92).

    @[simp]
    theorem Core.Question.coe_mk {W : Type u} (s : Set (Set W)) (h₁ : s) (h₂ : ps, qp, q s) :
    { props := s, contains_empty := h₁, downward_closed := h₂ } = s
    theorem Core.Question.ext {W : Type u} {P Q : Question W} (h : ∀ (q : Set W), q P q Q) :
    P = Q

    Two Questions are equal when their props agree.

    theorem Core.Question.ext_iff {W : Type u} {P Q : Question W} :
    P = Q ∀ (q : Set W), q P q Q
    def Core.Question.alt {W : Type u} (P : Question W) :
    Set (Set W)

    The alternatives of an inquisitive content (@cite{ciardelli-groenendijk-roelofsen-2018}): the maximal propositions in props. These are the "answers" — the strongest information states that resolve the issue.

    Equations
    • P.alt = {p : Set W | p P.props qP.props, p qp = q}
    Instances For
      def Core.Question.info {W : Type u} (P : Question W) :
      Set W

      The informative content of an inquisitive content (@cite{ciardelli-groenendijk-roelofsen-2018}): the union of all propositions in props. The information any utterance with this meaning provides — the actual world must lie in info P.

      Equations
      Instances For

        A sentence is informative iff its informative content excludes at least one possible world.

        Equations
        Instances For

          A sentence is inquisitive iff resolving the issue it raises requires more than the information it provides — equivalently, iff info P itself is not in props (so no single proposition in props covers all of info P).

          Equations
          Instances For

            A sentence is declarative iff it is not inquisitive — equivalently, iff info P ∈ props. Algebraic characterization (@cite{puncochar-2019}): props is a principal ideal in the algebra of information states; see isDeclarative_iff_eq_declarative_info.

            Equations
            Instances For

              Declarative and inquisitive are exact negations of each other.

              Constructors #

              def Core.Question.declarative {W : Type u} (p : Set W) :

              The declarative content of a proposition p: the principal ideal {q | q ⊆ p}. Single alternative p; non-inquisitive; informative iff p ≠ univ.

              Equations
              Instances For

                Basic theorems on declarative #

                @[simp]
                theorem Core.Question.mem_declarative {W : Type u} {p q : Set W} :
                q declarative p q p
                @[simp]
                theorem Core.Question.info_declarative {W : Type u} (p : Set W) :

                Algebraic operations (@cite{puncochar-2019} §2) #

                Following the support-clause definitions in @cite{puncochar-2019} §2: conjunction is ||α ∧ β|| = ||α|| ∩ ||β|| (state supports α ∧ β iff it supports both); inquisitive disjunction is ||α ⩒ β|| = ||α|| ∪ ||β|| (state supports α ⩒ β iff it supports either).

                Implication and negation ¬ arise as the Heyting and of the CompleteDistribLattice structure registered below; see the "Heyting derivatives" section for the structural identity Pᶜ = declarative (info P)ᶜ and the derivatives it grounds.

                def Core.Question.conj {W : Type u} (P Q : Question W) :

                Inquisitive conjunction P ∧ Q (@cite{puncochar-2019} §2 ∧ clause): props is the pointwise intersection. A state resolves P ∧ Q iff it resolves both P and Q.

                Equations
                • P.conj Q = { props := P.props Q.props, contains_empty := , downward_closed := }
                Instances For
                  def Core.Question.inqDisj {W : Type u} (P Q : Question W) :

                  Inquisitive disjunction P ⩒ Q (@cite{puncochar-2019} §2 ⩒ clause): props is the pointwise union. A state resolves P ⩒ Q iff it resolves P or Q. Distinct from classical disjunction , whose support clause involves splitting the state across two substates.

                  Equations
                  Instances For

                    The top inquisitive content: every set of worlds resolves the issue. The trivial inquiry that demands nothing.

                    Equations
                    Instances For

                      The bottom inquisitive content: only the inconsistent state () resolves the issue. The unsatisfiable inquiry.

                      Equations
                      Instances For

                        Complete lattice structure #

                        We package the algebraic operations into mathlib's order/lattice typeclasses: the entailment order P ≤ Q := P.props ⊆ Q.props makes Question W into a bounded distributive complete lattice with ⊓ = conj, ⊔ = inqDisj, ⊥ = bot, ⊤ = top, plus arbitrary suprema and infima.

                        sSup S is the union of all props fields (with adjoined so contains_empty holds vacuously when S = ∅); sInf S is the intersection (= univ, vacuously, when S = ∅, which gives ). This gives access to the entire mathlib order/lattice API (inf_le_left, le_sup_right, inf_sup_right, iSup, iInf, sSup_le_iff, intervals, lattice homomorphisms, …).

                        Distributivity (binary) is free: it reduces to the standard set distributivity on the underlying Set (Set W), and falls out of the CompleteDistribLattice registration below (no separate DistribLattice instance needed).

                        def Core.Question.sSupContent {W : Type u} (S : Set (Question W)) :

                        The arbitrary supremum: a state resolves sSup S iff it resolves some P ∈ S (or is the empty state, which always resolves).

                        Equations
                        Instances For
                          def Core.Question.sInfContent {W : Type u} (S : Set (Question W)) :

                          The arbitrary infimum: a state resolves sInf S iff it resolves every P ∈ S. (When S = ∅, this is Set.univ, recovering .)

                          Equations
                          Instances For
                            @[implicit_reducible]
                            instance Core.Question.instSupSet {W : Type u} :
                            SupSet (Question W)
                            Equations
                            @[implicit_reducible]
                            instance Core.Question.instInfSet {W : Type u} :
                            InfSet (Question W)
                            Equations
                            @[implicit_reducible]
                            instance Core.Question.instCompleteLattice {W : Type u} :
                            CompleteLattice (Question W)

                            The complete lattice structure on Question W. Provides Lattice, BoundedOrder, SupSet, InfSet, plus iSup/iInf for the entire mathlib API.

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

                            Distributivity #

                            Question W is a complete distributive lattice (in mathlib's sense: both a Frame and a Coframe). This subsumes finite distributivity, gives a HeytingAlgebra (and BiheytingAlgebra) structure for free, and follows from a single fact about the underlying Set (Set W): pointwise distributes over arbitrary , and pointwise distributes over arbitrary .

                            We register it via CompleteDistribLattice.ofMinimalAxioms, which needs only the two inequalities inf_sSup ≤ iSup_inf and iInf_sup ≤ sup_sInf.

                            @[implicit_reducible]
                            instance Core.Question.instCompleteDistribLattice {W : Type u} :
                            CompleteDistribLattice (Question W)

                            The CompleteDistribLattice structure: distributes over and distributes over . Subsumes binary distributivity and auto-provides HeytingAlgebra, CoheytingAlgebra, and BiheytingAlgebra instances via ofMinimalAxioms.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            theorem Core.Question.le_def {W : Type u} {P Q : Question W} :
                            P Q P.props Q.props
                            theorem Core.Question.inf_eq_conj {W : Type u} (P Q : Question W) :
                            PQ = P.conj Q
                            theorem Core.Question.sup_eq_inqDisj {W : Type u} (P Q : Question W) :
                            PQ = P.inqDisj Q
                            theorem Core.Question.sSup_eq {W : Type u} (S : Set (Question W)) :
                            sSup S = sSupContent S
                            theorem Core.Question.sInf_eq {W : Type u} (S : Set (Question W)) :
                            sInf S = sInfContent S
                            @[simp]
                            theorem Core.Question.mem_sSup_props {W : Type u} {S : Set (Question W)} {q : Set W} :
                            q (sSup S).props q = PS, q P.props
                            @[simp]
                            theorem Core.Question.mem_sInf_props {W : Type u} {S : Set (Question W)} {q : Set W} :
                            q (sInf S).props PS, q P.props
                            theorem Core.Question.mem_iSup_iff {W : Type u} {ι : Sort u_1} {f : ιQuestion W} {q : Set W} :
                            q ⨆ (i : ι), f i q = ∃ (i : ι), q f i

                            Membership in an indexed iSup of inquisitive contents. The q = ∅ disjunct is structural: lies in every content's props.

                            theorem Core.Question.mem_biSup_iff {W : Type u} {ι : Type u_1} {I : Set ι} {f : ιQuestion W} {q : Set W} :
                            q iI, f i q = iI, q f i

                            Membership in a bounded indexed iSup. Used pervasively for Hamblin-style wh-question alternatives (which) and for any ⨆ i ∈ I, declarative (P i) construction.

                            @[implicit_reducible]
                            instance Core.Question.instInhabited {W : Type u} :
                            Inhabited (Question W)
                            Equations

                            Basic API for info on the lattice operations #

                            info is a monotone map from (Question W, ≤) to (Set W, ⊆) and commutes with (and /). The story for is one-sided: info distributes over union but only sub-distributes over intersection (the same asymmetry as ⋃₀ over Set operations).

                            theorem Core.Question.info_mono {W : Type u} {P Q : Question W} (h : P Q) :
                            P.info Q.info

                            info is monotone in the entailment order: a stronger inquiry has no more informative content than a weaker one.

                            @[simp]
                            theorem Core.Question.info_top {W : Type u} :
                            .info = Set.univ
                            @[simp]
                            theorem Core.Question.info_bot {W : Type u} :
                            .info =
                            @[simp]
                            theorem Core.Question.info_sup {W : Type u} (P Q : Question W) :
                            (PQ).info = P.info Q.info
                            theorem Core.Question.info_inf_subset {W : Type u} (P Q : Question W) :
                            (PQ).info P.info Q.info

                            alt API and inquisitivity from alternatives #

                            The alt (alternatives) selector picks out maximal propositions in P.props. Two basic facts: alternatives are propositions, and the union of alternatives is contained in info P (equality requires finite-W or other guarantees that maximals exist — @cite{ciardelli-groenendijk-roelofsen-2018} discusses the limit case where no maximal element exists). The two-alternatives criterion gives a sufficient condition for inquisitivity that does not depend on finiteness.

                            theorem Core.Question.mem_alt {W : Type u} {P : Question W} {p : Set W} :
                            p P.alt p P.props qP.props, p qp = q

                            Unfolded membership in alt. Not the simp normal form — mem_alt_iff_maximal is preferred because it connects to mathlib's Maximal API. Use this lemma when destructuring is more convenient than going through Maximal.

                            theorem Core.Question.sUnion_alt_subset_info {W : Type u} (P : Question W) :
                            ⋃₀ P.alt P.info
                            @[simp]
                            theorem Core.Question.mem_alt_iff_maximal {W : Type u} {P : Question W} {p : Set W} :
                            p P.alt Maximal (fun (x : Set W) => x P.props) p

                            Simp normal form for alternatives: the alternatives of alt P are exactly the Maximal elements of P.props under the subset order. Bridges the linguistic alt-definition to mathlib's order-theoretic Maximal, so that mathlib's Maximal API (maximal_iff, Maximal.eq_of_ge, etc.) applies directly to inquisitive alternatives.

                            theorem Core.Question.mem_alt_inf_iff {W : Type u} {P Q : Question W} {q : Set W} :
                            q (PQ).alt Maximal (fun (p : Set W) => p P.props p Q.props) q

                            Membership in alt (P ⊓ Q): the alternatives of the inquisitive conjunction are exactly the maximal elements of P.props ∩ Q.props. Direct corollary of mem_alt_iff_maximal and the pointwise definition of on props.

                            theorem Core.Question.mem_alt_sup_iff {W : Type u} {P Q : Question W} {q : Set W} :
                            q (PQ).alt Maximal (fun (p : Set W) => p P.props p Q.props) q

                            Membership in alt (P ⊔ Q): the alternatives of the inquisitive disjunction are exactly the maximal elements of P.props ∪ Q.props. Direct corollary of mem_alt_iff_maximal and the pointwise definition of on props. The asymmetry with inf: inf's alts are sub-states satisfying both, sup's alts are super-states maximal across either.

                            theorem Core.Question.mem_alt_sup_of_alt_left {W : Type u} {P Q : Question W} {p : Set W} (hP : p P.alt) (hQ : qQ.props, p qp = q) :
                            p (PQ).alt

                            An alt of P that is not contained in any strictly larger alt of Q survives in alt (P ⊔ Q). The convenient direction for constructing alts of an inquisitive disjunction.

                            theorem Core.Question.mem_alt_sup_of_alt_right {W : Type u} {P Q : Question W} {q : Set W} (hQ : q Q.alt) (hP : pP.props, q pq = p) :
                            q (PQ).alt

                            An alt of Q that is not contained in any strictly larger alt of P survives in alt (P ⊔ Q). Mirror of mem_alt_sup_of_alt_left.

                            theorem Core.Question.alt_sup_subset_union {W : Type u} (P Q : Question W) :
                            (PQ).alt P.alt Q.alt

                            An alt of P ⊔ Q is necessarily an alt of one of the summands — when restricted to that summand's props.

                            @[simp]
                            theorem Core.Question.declarative_inf {W : Type u} (A B : Set W) :
                            declarative Adeclarative B = declarative (A B)

                            The meet of two declaratives is the declarative of the intersection: ↓{A} ⊓ ↓{B} = ↓{A ∩ B}. State q resolves both declarative A and declarative B iff q ⊆ A ∩ B. Direct corollary of Set.subset_inter_iff.

                            @[simp]
                            theorem Core.Question.alt_declarative {W : Type u} (p : Set W) :
                            (declarative p).alt = {p}

                            A declarative p content has exactly one alternative — p itself, the unique maximal subset of p.

                            @[simp]
                            theorem Core.Question.alt_top {W : Type u} :
                            .alt = {Set.univ}

                            The unique alternative of is Set.univ.

                            @[simp]
                            theorem Core.Question.alt_bot {W : Type u} :
                            .alt = {}

                            The unique alternative of is .

                            theorem Core.Question.isInquisitive_of_two_alternatives {W : Type u} (P : Question W) {p₁ p₂ : Set W} (h₁ : p₁ P.alt) (h₂ : p₂ P.alt) (hne : p₁ p₂) :

                            If P has two distinct alternatives, then P is inquisitive: no single proposition (in particular, not info P) can equal both.

                            Existence of alternatives under finiteness #

                            When W is finite, P.props ⊆ Set W is finite, so every proposition extends to a maximal one. This gives the dual half of sUnion_alt_subset_info: info P ⊆ ⋃₀ alt P, hence equality.

                            Without finiteness, alternatives need not exist — a downward-closed family with no maximal element (e.g. {q ⊊ Set.univ | q.Finite} on infinite W) is a valid Question with alt P = ∅ even though info P ≠ ∅.

                            theorem Core.Question.exists_alt_above {W : Type u} (P : Question W) (hP : P.props.Finite) {p : Set W} (hp : p P.props) :
                            qP.alt, p q

                            Existence of alternatives under finiteness: every proposition in P.props extends to a maximal one (i.e., to an alternative).

                            Hypothesis is the minimal one: P.props.Finite (not Finite W). The latter implies the former (since Set.instFinite gives Finite (Set W) and P.props ⊆ Set W), but P.props.Finite can hold even on infinite worlds (e.g., a content with finitely many alternatives over an infinite world space).

                            theorem Core.Question.info_eq_sUnion_alt {W : Type u} (P : Question W) (hP : P.props.Finite) :
                            P.info = ⋃₀ P.alt

                            Under finiteness of P.props, info P is exactly the union of alternatives: every world in some resolving proposition lies in some maximal resolving proposition.

                            The Resolutions Theorem (DNF for inquisitive content) #

                            The deepest theorem about Question: under finiteness, every inquisitive content equals the inquisitive disjunction of the declaratives generated by its alternatives. This is the inquisitive-semantics analogue of disjunctive normal form, justifying the slogan "an inquisitive content is its alternatives" — once alternatives exist (finiteness), they fully determine the content.

                            This subsumes:

                            Without finiteness the theorem fails (alternatives may not exist), but the inequality ⨆ p ∈ alt P, declarative p ≤ P holds always.

                            theorem Core.Question.iSup_declarative_alt_le {W : Type u} (P : Question W) :
                            pP.alt, declarative p P

                            The lower bound (always holds): the inquisitive disjunction of the declarative principal ideals of P's alternatives is contained in P itself.

                            theorem Core.Question.eq_iSup_declarative_alt_of_exists_alt {W : Type u} (P : Question W) (hExt : pP.props, qP.alt, p q) :
                            P = pP.alt, declarative p

                            Resolutions Theorem under "alternatives-cover" hypothesis: when every resolving proposition extends to an alternative, P equals the inquisitive disjunction of the declaratives generated by its alternatives. The hypothesis hExt is strictly weaker than P.props.Finite: atoms have props = {q | q ⊆ V} (potentially infinite if V infinite) but alt = {V}, so hExt discharges by q ⊆ V → q ⊆ V while finiteness fails.

                            This is Booth 2022's Compactness of Alternatives for atomic and decomposable bilateral inquisitive propositions, captured at the Question substrate level.

                            theorem Core.Question.eq_iSup_declarative_alt {W : Type u} (P : Question W) (hP : P.props.Finite) :
                            P = pP.alt, declarative p

                            Resolutions Theorem: under finiteness of P.props, every inquisitive content is the inquisitive disjunction of the declaratives generated by its alternatives. Corollary of the "alternatives-cover" version: finiteness gives existence of a maximal extension via exists_alt_above.

                            Principal-ideal characterization of declaratives #

                            @cite{puncochar-2019}: declarative propositions are, algebraically speaking, principal ideals in the algebra of information states. We make this characterization explicit: P is declarative iff P is the principal ideal generated by info P. We also prove the equivalent characterization via alternatives: P is declarative iff alt P = {info P}.

                            Principal-ideal characterization (@cite{puncochar-2019}): an inquisitive content is declarative iff it equals the principal ideal generated by its informative content.

                            Alternative-set characterization: an inquisitive content is declarative iff its alternatives are exactly {info P} — i.e., iff its informative content is itself the unique maximal resolving state.

                            Heyting derivatives: complement, projection, division law #

                            The CompleteDistribLattice structure registered above gives us a HeytingAlgebra for free, so Pᶜ (pseudo-complement) and P ⇨ Q (Heyting implication) come pre-installed with their universal properties. The structural fact that drives the inquisitive-specific theory is the explicit formula for Pᶜ:

                            `Pᶜ = declarative (info P)ᶜ`
                            

                            i.e., complementing P is the same as complementing its informative content and taking the principal ideal. This single identity (compl_eq) lets us derive the standard inquisitive operators (@cite{ciardelli-groenendijk-roelofsen-2018}; @cite{puncochar-2019}):

                            The lattice is Heyting but not Boolean: LEM P ⊔ Pᶜ = ⊤ fails in general — see not_lem_inquisitive_content below.

                            Pseudo-complement formula: the Heyting complement Pᶜ is the declarative principal ideal of the complemented informative content. This is the structural identity that grounds all subsequent Heyting derivatives.

                            @[simp]
                            theorem Core.Question.info_compl {W : Type u} (P : Question W) :

                            info commutes with complement: even though the lattice of contents is only Heyting, the underlying informative content is a Boolean Set, and info respects complementation.

                            def Core.Question.proj {W : Type u} (P : Question W) :

                            Non-inquisitive projection !P: the declarative content with the same informative content as P (@cite{ciardelli-groenendijk-roelofsen-2018}). Removes any inquisitivity by collapsing all alternatives into a single principal ideal. Always declarative; equal to P iff P is declarative.

                            Used to define classical (non-inquisitive) operators in inquisitive semantics: classical disjunction is !(P ⩒ Q) = !P ⊔ !Q, etc.

                            Equations
                            Instances For

                              !P = Pᶜᶜ: the non-inquisitive projection coincides with the Heyting double-complement (@cite{ciardelli-groenendijk-roelofsen-2018}). Together with compl_eq, this means every inquisitive operator derivable from the Heyting structure is, at the level of info, a Boolean operator on Set W.

                              @[simp]
                              theorem Core.Question.info_proj {W : Type u} (P : Question W) :
                              P.proj.info = P.info
                              @[simp]
                              theorem Core.Question.proj_proj {W : Type u} (P : Question W) :
                              P.proj.proj = P.proj

                              proj is idempotent: projecting twice = projecting once.

                              theorem Core.Question.proj_eq_self_iff {W : Type u} (P : Question W) :
                              P.proj = P P.isDeclarative

                              Projection fixes declarative contents (!P = P iff P is declarative).

                              Non-informative projection ?P := P ⊔ Pᶜ (@cite{ciardelli-groenendijk-roelofsen-2018}). The "inquisitive question" operator: takes any content and returns its non-informative counterpart with the same inquisitive structure.

                              Equations
                              Instances For
                                theorem Core.Question.proj_inf_nonInfo {W : Type u} (P : Question W) :
                                P.projP.nonInfo = P

                                Division law (@cite{ciardelli-groenendijk-roelofsen-2018}): every inquisitive content decomposes uniquely as the meet of its non-inquisitive projection and its non-informative projection. This is the fundamental decomposition theorem of inquisitive semantics — it says the lattice "factors through" (info, alternatives).

                                LEM fails: the lattice is Heyting but not Boolean #

                                A central feature of inquisitive semantics is that the standard logical laws of a Boolean algebra do not all hold. In particular, the law of excluded middle P ⊔ Pᶜ = ⊤ fails: an inquisitive content P and its pseudo-complement Pᶜ are both declarative, so their join is declarative too, while is the trivially-resolved content (every state in props). The witness below uses the polar-question shape declarative {true} ⊔ declarative {true}ᶜ over Bool.

                                theorem Core.Question.not_lem_inquisitive_content :
                                ∃ (W : Type) (P : Question W), PP

                                LEM fails for inquisitive content: there exists W and P with P ⊔ Pᶜ ≠ ⊤. This is what makes the lattice Heyting rather than Boolean.

                                Core.Question.Support instance #

                                The cross-tradition s ⊨ Q interface (Core.Question.Support) is satisfied by Question in the standard inquisitive way: an information state s : Set W supports / resolves the issue P iff s is one of the resolving propositions (s ∈ P.props). This is the inquisitive notion of support (@cite{ciardelli-groenendijk-roelofsen-2018}).

                                @[implicit_reducible]
                                instance Core.Question.instSupport {W : Type u} :
                                Support (Set W) (Question W)

                                Inquisitive support: s ⊨ P iff the state s resolves the issue P.

                                Equations
                                theorem Core.Question.supports_iff {W : Type u} (s : Set W) (P : Question W) :
                                Support.supports s P s P