Modal Typological Types #
Theory-neutral vocabulary for cross-linguistic modal typology: ModalForce,
ModalFlavor, ForceFlavor, ModalItem, ConcordType, ModalDecomposition.
These types classify modal meanings along two independent dimensions — force (quantificational strength) and flavor (contextual source) — following @cite{kratzer-1981} and @cite{imel-guo-steinert-threlkeld-2026}.
Separated from Core.Logic.Intensional because Kripke frames and frame
correspondence are pure mathematical logic, while force/flavor classification
is linguistic typology. The two are connected (Kripke semantics interprets
force-flavor pairs) but conceptually independent.
What belongs here vs. Core.Logic.Intensional #
- Here (
Core.Modality):ModalForce,ModalFlavor,ForceFlavor,ModalItem,ConcordType,ModalDecomposition— linguistic classification of modal meanings. - There (
Core.Logic.Intensional):AccessRel,kripkeEval, frame conditions (IsReflexive,IsSerial,IsTransitive,IsSymmetric,IsEuclidean), correspondence theorems, the lattice of normal modal logics — mathematical semantics.
Modal force: necessity (□), weak necessity (□w), or possibility (◇). @cite{von-fintel-iatridou-2008}, @cite{agha-jeretic-2026}.
Weak necessity ("ought", "should") sits between □ and ◇ in strength: □φ → □wφ → ◇φ. The nature of this intermediate force is debated:
- @cite{von-fintel-iatridou-2008}: same ∀ quantifier as strong necessity but over a refined (smaller) set of best worlds (domain restriction).
- Rubinstein (2014): fundamentally comparative meaning.
- @cite{agha-jeretic-2022}: non-quantificational (plural predication).
Weak necessity has no clean dual in this 3-point space: domain refinement weakens ∀ but strengthens ∃ (@cite{agha-jeretic-2026}; UNVERIFIED §2.4).
- necessity : ModalForce
- weakNecessity : ModalForce
- possibility : ModalForce
Instances For
Equations
- Core.Modality.instDecidableEqModalForce x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Core.Modality.instReprModalForce = { reprPrec := Core.Modality.instReprModalForce.repr }
Equations
Equations
- One or more equations did not get rendered due to their size.
Classical dual: □ ↔ ◇. Weak necessity maps to possibility as a stipulated default. The literature is unsettled: Yalcin 2016, Lassiter 2017, Carr 2024, and arguably von Fintel & Iatridou 2008 themselves discuss candidate weak-necessity duals ("might-as-easily-not", "could", priority might). The "no clean dual" claim attributed to @cite{agha-jeretic-2026} (UNVERIFIED §2.4 quote) should be read as "no consensus dual", not as a structural impossibility.
Equations
Instances For
All modal forces.
Equations
Instances For
Strength ordering on modal force: □ ≥ □w ≥ ◇.
f₁.atLeastAsStrong f₂ iff an f₁-claim is at least as strong as an f₂-claim.
@cite{von-fintel-iatridou-2008}: must φ → ought φ → can φ.
Equations
- Core.Modality.ModalForce.necessity.atLeastAsStrong x✝ = true
- Core.Modality.ModalForce.weakNecessity.atLeastAsStrong Core.Modality.ModalForce.weakNecessity = true
- Core.Modality.ModalForce.weakNecessity.atLeastAsStrong Core.Modality.ModalForce.possibility = true
- Core.Modality.ModalForce.possibility.atLeastAsStrong Core.Modality.ModalForce.possibility = true
- x✝¹.atLeastAsStrong x✝ = false
Instances For
Modal flavor: the contextual source of modality. Theory-neutral: avoids commitment to how flavor is semantically encoded. Teleological is subsumed under circumstantial (both concern facts/abilities). Bouletic (desires/wishes) is distinguished from deontic (norms/rules), following @cite{kratzer-1981}'s four-way classification.
- epistemic : ModalFlavor
- deontic : ModalFlavor
- bouletic : ModalFlavor
- circumstantial : ModalFlavor
Instances For
Equations
- Core.Modality.instDecidableEqModalFlavor x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Core.Modality.instReprModalFlavor = { reprPrec := Core.Modality.instReprModalFlavor.repr }
Equations
Equations
- One or more equations did not get rendered due to their size.
All modal flavors.
Equations
Instances For
A force-flavor pair: one point in the modal semantic space P. |P| = |Force| × |Flavor| = 3 × 4 = 12.
Imel, Guo, & @cite{imel-guo-steinert-threlkeld-2026}: modal meanings are subsets of P. Their original database uses a 2×3 space (necessity/possibility × 3 flavors); we extend to 3×4 by adding weak necessity as a distinct force value (following @cite{agha-jeretic-2026}) and bouletic as a distinct flavor (following @cite{kratzer-1981}).
- force : ModalForce
- flavor : ModalFlavor
Instances For
Equations
- Core.Modality.instDecidableEqForceFlavor.decEq { force := a, flavor := a_1 } { force := b, flavor := b_1 } = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Core.Modality.instReprForceFlavor = { reprPrec := Core.Modality.instReprForceFlavor.repr }
Equations
Equations
- Core.Modality.instInhabitedForceFlavor.default = { force := default, flavor := default }
Instances For
Equations
- Core.Modality.instToStringForceFlavor = { toString := fun (ff : Core.Modality.ForceFlavor) => toString "(" ++ toString ff.force ++ toString "," ++ toString ff.flavor ++ toString ")" }
All twelve points in the modal semantic space (|ModalForce| × |ModalFlavor| = 3 × 4).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The Cartesian product of forces and flavors. Infrastructure for constructing modal meanings; no theoretical commitment (just list operations).
Equations
- One or more equations did not get rendered due to their size.
Instances For
A modal item: the shared core of any expression carrying modal meaning.
Unifies AuxEntry.{form, modalMeaning, register},
ModalAdvEntry.{form, modalMeaning, register}, and
ModalExpression.{form, meaning} under a common type.
- form : String
- meaning : List ForceFlavor
- register : Features.Register.Level
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Core.Modality.instReprModalItem = { reprPrec := Core.Modality.instReprModalItem.repr }
Equations
- Core.Modality.instBEqModalItem.beq { form := a, meaning := a_1, register := a_2 } { form := b, meaning := b_1, register := b_2 } = (a == b && (a_1 == b_1 && a_2 == b_2))
- Core.Modality.instBEqModalItem.beq x✝¹ x✝ = false
Instances For
Equations
Two modal items are register variants if they differ in register.
Equations
Instances For
Classification of concord phenomena by what logical type is doubled.
- negation : ConcordType
- modalNecessity : ConcordType
- modalPossibility : ConcordType
Instances For
Equations
- Core.Modality.instDecidableEqConcordType x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Core.Modality.instReprConcordType = { reprPrec := Core.Modality.instReprConcordType.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Map modal force to the corresponding concord type. Weak necessity patterns with necessity for concord purposes (both are ∀ quantifiers).
Equations
- Core.Modality.ConcordType.fromModalForce Core.Modality.ModalForce.necessity = Core.Modality.ConcordType.modalNecessity
- Core.Modality.ConcordType.fromModalForce Core.Modality.ModalForce.weakNecessity = Core.Modality.ConcordType.modalNecessity
- Core.Modality.ConcordType.fromModalForce Core.Modality.ModalForce.possibility = Core.Modality.ConcordType.modalPossibility
Instances For
Interpretability of a modal feature (@cite{zeijlstra-2007}).
Modal elements carry features specifying modal force (∃/∀). Features are either interpretable (semantically active — the element contributes a modal operator at LF) or uninterpretable (semantically vacuous — the element is checked by a c-commanding interpretable feature and does not contribute its own operator).
@cite{ciardelli-guerrini-2026} use this distinction to derive narrow-scope readings for "MOD A COORD MOD B" sentences: when both auxiliaries carry uninterpretable features, a single silent interpretable operator scopes over the coordination, yielding Δ(A ∘ B) rather than ΔA ∘ ΔB.
- interpretable : ModalInterpretability
- uninterpretable : ModalInterpretability
Instances For
Equations
- Core.Modality.instDecidableEqModalInterpretability x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- Core.Modality.instBEqModalInterpretability.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
A modal feature: force (∃/∀) paired with interpretability (i/u).
@cite{zeijlstra-2007}: every modal element carries a feature from this four-cell space: [i∃-MOD], [u∃-MOD], [i∀-MOD], [u∀-MOD].
- force : ModalForce
- interp : ModalInterpretability
Instances For
Equations
- Core.Modality.instDecidableEqModalFeature.decEq { force := a, interp := a_1 } { force := b, interp := b_1 } = if h : a = b then h ▸ if h : a_1 = b_1 then h ▸ isTrue ⋯ else isFalse ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Core.Modality.instReprModalFeature = { reprPrec := Core.Modality.instReprModalFeature.repr }
Equations
Equations
- Core.Modality.instBEqModalFeature.beq { force := a, interp := a_1 } { force := b, interp := b_1 } = (a == b && a_1 == b_1)
- Core.Modality.instBEqModalFeature.beq x✝¹ x✝ = false
Instances For
Equations
Equations
- Core.Modality.instInhabitedModalFeature.default = { force := default, interp := default }
Instances For
Feature checking: an interpretable feature checks a c-commanded uninterpretable feature of matching concord class.
@cite{zeijlstra-2007}: u-features must be c-commanded by a matching i-feature to be licensed. The match is by concord class (necessity and weak necessity both count as ∀-type).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Negation flips the relevant modal force for concord purposes.
@cite{ciardelli-guerrini-2026} (UNVERIFIED §4.2): modal concord across negation requires opposite forces — ALLOWi∃ is well-formed because ¬∀ = ∃, but *DEMANDi∀ is ill-formed (same force).
Derived from ModalForce.dual — negation over a modal operator yields
its dual force (¬□ = ◇, ¬◇ = □).
Instances For
Whether a modal meaning decomposes into independent force and flavor dimensions or is a unitary, non-decomposable operator.
@cite{werner-2006}, @cite{condoravdi-2002}: some modals resist the standard force × flavor decomposition. "Will" and other temporal-modal elements do not factor cleanly into a modal force and a conversational background flavor.
- decomposable : ModalDecomposition
- unitary : ModalDecomposition
Instances For
Equations
- Core.Modality.instDecidableEqModalDecomposition x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Classify a modal item by whether its meaning set equals the Cartesian product of its force and flavor projections. A modal is decomposable iff every combination of its attested forces and flavors is also attested — the two dimensions are independent.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A modal item is unitary (non-decomposable into force × flavor).
Equations
Instances For
Singleton meanings are trivially decomposable: a modal with exactly one force-flavor pair always satisfies IFF.
A non-IFF meaning is unitary: necessity-epistemic + possibility-deontic without the cross-product pairs.
Mode of projecting conversational backgrounds. @cite{kratzer-2012} replaces the traditional epistemic/circumstantial dichotomy with a distinction between factual and content modes:
- Factual: the modal quantifies over worlds containing a counterpart
of some actual-world situation or body of evidence. The actual world
is always among the accessible worlds (
w ∈ ∩f(w)). - Content: the modal quantifies over worlds compatible with the propositional content of some information source (rumour, report, sensory evidence). The actual world need not be accessible — the speaker can disbelieve the content.
@cite{matthewson-2016} (UNVERIFIED Table 18.2 reference).
The old circumstantial class is entirely factual. The old epistemic class splits: factual epistemics (inferential, based on situation counterparts) vs. content epistemics (reportative, based on propositional content).
- factual : ProjectionMode
- content : ProjectionMode
Instances For
Equations
- Core.Modality.instDecidableEqProjectionMode x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- Core.Modality.instBEqProjectionMode.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Three-way classification of conversational backgrounds. @cite{matthewson-2016} (UNVERIFIED Table 18.3 reference). Refines the traditional epistemic/circumstantial binary into a three-way split based on projection mode and whether information source is encoded.
- factualCircumstantial: factual mode, no information source encoded. Covers deontic, bouletic, teleological, ability, pure circumstantial. English: can (circumstantial), German: können.
- factualEvidential: factual mode, information source encoded. The speaker cannot disbelieve the prejacent. St'át'imcets: k'a (inferential), English: must (indirect evidence).
- contentEvidential: content mode, information source encoded. The speaker can disbelieve the prejacent. St'át'imcets: lákw7a (sensory non-visual), German: sollen.
- factualCircumstantial : BackgroundClass
- factualEvidential : BackgroundClass
- contentEvidential : BackgroundClass
Instances For
Equations
- Core.Modality.instDecidableEqBackgroundClass x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Core.Modality.instBEqBackgroundClass.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
Equations
- One or more equations did not get rendered due to their size.
The projection mode of each background class.
Equations
- Core.Modality.BackgroundClass.factualCircumstantial.projectionMode = Core.Modality.ProjectionMode.factual
- Core.Modality.BackgroundClass.factualEvidential.projectionMode = Core.Modality.ProjectionMode.factual
- Core.Modality.BackgroundClass.contentEvidential.projectionMode = Core.Modality.ProjectionMode.content
Instances For
Whether the background class encodes an information source.
Equations
Instances For
Whether the speaker can disbelieve the prejacent under this class. Only content-mode backgrounds allow speaker disbelief — factual modes commit the speaker to the prejacent being compatible with reality.
Equations
Instances For
The traditional epistemic/circumstantial classification that the three-way split refines.
Equations
- Core.Modality.BackgroundClass.factualCircumstantial.traditionalFlavor = Core.Modality.ModalFlavor.circumstantial
- Core.Modality.BackgroundClass.factualEvidential.traditionalFlavor = Core.Modality.ModalFlavor.epistemic
- Core.Modality.BackgroundClass.contentEvidential.traditionalFlavor = Core.Modality.ModalFlavor.epistemic
Instances For
Traditional circumstantial modals are always factual.
Content-mode backgrounds always encode an information source.
Speaker disbelief distinguishes the two epistemic subtypes.
How a modal's quantificational force is determined.
Distinguishes three mechanisms that the List ForceFlavor encoding conflates:
- fixed: The modal lexically specifies a single force value. English must (necessity), can (possibility).
- variableForce: The modal is semantically compatible with both necessity and possibility contexts without being ambiguous. Gitksan ima('a), gat (@cite{matthewson-2013}).
- strengthened: The modal has a fixed base force (typically possibility) but can receive strengthened readings in the absence of a contrasting dual. Nez Perce o'qa (@cite{deal-2011}): a possibility modal acceptable in necessity contexts because no contrasting necessity modal triggers scalar implicature.
- fixed : ModalForce → ForceAnalysis
- variableForce : ForceAnalysis
- strengthened : ModalForce → ForceAnalysis
Instances For
Equations
- Core.Modality.instDecidableEqForceAnalysis.decEq (Core.Modality.ForceAnalysis.fixed a) (Core.Modality.ForceAnalysis.fixed b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Core.Modality.instDecidableEqForceAnalysis.decEq (Core.Modality.ForceAnalysis.fixed a) Core.Modality.ForceAnalysis.variableForce = isFalse ⋯
- Core.Modality.instDecidableEqForceAnalysis.decEq (Core.Modality.ForceAnalysis.fixed a) (Core.Modality.ForceAnalysis.strengthened a_1) = isFalse ⋯
- Core.Modality.instDecidableEqForceAnalysis.decEq Core.Modality.ForceAnalysis.variableForce (Core.Modality.ForceAnalysis.fixed a) = isFalse ⋯
- Core.Modality.instDecidableEqForceAnalysis.decEq Core.Modality.ForceAnalysis.variableForce Core.Modality.ForceAnalysis.variableForce = isTrue ⋯
- Core.Modality.instDecidableEqForceAnalysis.decEq Core.Modality.ForceAnalysis.variableForce (Core.Modality.ForceAnalysis.strengthened a) = isFalse ⋯
- Core.Modality.instDecidableEqForceAnalysis.decEq (Core.Modality.ForceAnalysis.strengthened a) (Core.Modality.ForceAnalysis.fixed a_1) = isFalse ⋯
- Core.Modality.instDecidableEqForceAnalysis.decEq (Core.Modality.ForceAnalysis.strengthened a) Core.Modality.ForceAnalysis.variableForce = isFalse ⋯
- Core.Modality.instDecidableEqForceAnalysis.decEq (Core.Modality.ForceAnalysis.strengthened a) (Core.Modality.ForceAnalysis.strengthened b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Core.Modality.instReprForceAnalysis = { reprPrec := Core.Modality.instReprForceAnalysis.repr }
Whether the modal has a necessity reading (semantically or pragmatically).
Equations
Instances For
Whether the modal has a possibility reading.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Whether the modal has a lexical dual (contrasting force partner). @cite{matthewson-2016} (UNVERIFIED §18.3.2): modals without duals do not come in necessity–possibility pairs.
Equations
- (Core.Modality.ForceAnalysis.fixed a).HasDual = True
- Core.Modality.ForceAnalysis.variableForce.HasDual = False
- (Core.Modality.ForceAnalysis.strengthened a).HasDual = False
Instances For
Equations
- One or more equations did not get rendered due to their size.