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 #
props : Set (Set W)— sets of subsets ofW, mathlib-nativecontains_emptyis logically equivalent toNonempty propstogether with downward closure — we expose it as the field directly because it's the only constraint that matters once downward closure holdsinforeturnsSet W(mathlib-native), notW → BoolSetLike (Question W) (Set W)— auto-derivesMembership,CoeSort, and theextmachinery.mem_propsis the canonical simp normalization (q ∈ P.props → q ∈ P).CompleteDistribLattice (Question W)— registered viaCompleteDistribLattice.ofMinimalAxiomsfrom two pointwise inequalities, givingFrame,Coframe,HeytingAlgebra, andBiheytingAlgebrafor free. MirrorsFilter's registration pattern.
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 ⊥.
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: if
presolves the issue andq ⊆ p, thenqalso resolves it (any sufficient evidence is also sufficient when strengthened).
Instances For
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
- Core.Question.instSetLikeSet = { coe := Core.Question.props, coe_injective' := ⋯ }
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.
Instances For
A sentence is informative iff its informative content excludes at least one possible world.
Equations
- P.isInformative = (P.info ≠ Set.univ)
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
- P.isDeclarative = (P.info ∈ P.props)
Instances For
Declarative and inquisitive are exact negations of each other.
Constructors #
The declarative content of a proposition p: the principal
ideal {q | q ⊆ p}. Single alternative p; non-inquisitive;
informative iff p ≠ univ.
Equations
- Core.Question.declarative p = { props := {q : Set W | q ⊆ p}, contains_empty := ⋯, downward_closed := ⋯ }
Instances For
Basic theorems on declarative #
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.
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.
Instances For
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.
Instances For
The top inquisitive content: every set of worlds resolves the issue. The trivial inquiry that demands nothing.
Equations
- Core.Question.top = { props := Set.univ, contains_empty := ⋯, downward_closed := ⋯ }
Instances For
The bottom inquisitive content: only the inconsistent state
(∅) resolves the issue. The unsatisfiable inquiry.
Equations
- Core.Question.bot = { props := {∅}, contains_empty := ⋯, downward_closed := ⋯ }
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).
The arbitrary supremum: a state resolves sSup S iff it resolves
some P ∈ S (or is the empty state, which always resolves).
Equations
- Core.Question.sSupContent S = { props := {q : Set W | q = ∅ ∨ ∃ P ∈ S, q ∈ P.props}, contains_empty := ⋯, downward_closed := ⋯ }
Instances For
The arbitrary infimum: a state resolves sInf S iff it resolves
every P ∈ S. (When S = ∅, this is Set.univ, recovering ⊤.)
Equations
- Core.Question.sInfContent S = { props := {q : Set W | ∀ P ∈ S, q ∈ P.props}, contains_empty := ⋯, downward_closed := ⋯ }
Instances For
Equations
- Core.Question.instSupSet = { sSup := Core.Question.sSupContent }
Equations
- Core.Question.instInfSet = { sInf := Core.Question.sInfContent }
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.
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.
Membership in a bounded indexed iSup. Used pervasively for
Hamblin-style wh-question alternatives (which) and for any
⨆ i ∈ I, declarative (P i) construction.
Equations
- Core.Question.instInhabited = { default := ⊤ }
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).
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.
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.
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.
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.
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.
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.
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.
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.
A declarative p content has exactly one alternative — p
itself, the unique maximal subset of p.
The unique alternative of ⊤ is Set.univ.
The unique alternative of ⊥ is ∅.
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 ≠ ∅.
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).
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:
- Single-alternative case:
P = declarative piffalt P = {p}(the principal-ideal characterization for declaratives). - The polar case:
polar p = declarative p ⊔ declarative pᶜ(inHamblin.lean) is literally⨆ q ∈ {p, pᶜ}, declarative q. - Setoid-derived inquiries:
fromSetoid rresolves to the iSup over equivalence classes (each class is an alternative).
Without finiteness the theorem fails (alternatives may not exist),
but the inequality ⨆ p ∈ alt P, declarative p ≤ P holds always.
The lower bound (always holds): the inquisitive disjunction of the
declarative principal ideals of P's alternatives is contained in
P itself.
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.
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 non-inquisitive projection
!P = Pᶜᶜ = declarative (info P)(proj_eq_compl_compl), - the non-informative projection
?P = P ⊔ Pᶜ, - and the division law
!P ⊓ ?P = Pdecomposing every content into its informative and inquisitive components (proj_inf_nonInfo).
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.
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
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.
Instances For
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.
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}).
Inquisitive support: s ⊨ P iff the state s resolves the issue P.
Equations
- Core.Question.instSupport = { supports := fun (s : Set W) (P : Core.Question W) => s ∈ P }