Doxastic accessibility relation type (Prop-valued, mathlib convention).
R agent evalWorld accessibleWorld holds iff accessibleWorld is compatible
with what agent believes/knows in evalWorld. For computational evaluation
add [DecidableRel (R agent)] instances at use sites.
Equations
- Semantics.Attitudes.Doxastic.AccessRel W E = (E → W → W → Prop)
Instances For
Universal modal: holds at w iff p holds at all accessible worlds.
⟦□p⟧(w) = ∀w' ∈ worlds. R(agent, w, w') → p(w')
Equations
- Semantics.Attitudes.Doxastic.boxAt R agent w worlds p = ∀ w' ∈ worlds, R agent w w' → p w'
Instances For
Existential modal: holds at w iff p holds at some accessible world.
⟦◇p⟧(w) = ∃w' ∈ worlds. R(agent, w, w') ∧ p(w')
Equations
- Semantics.Attitudes.Doxastic.diaAt R agent w worlds p = ∃ w' ∈ worlds, R agent w w' ∧ p w'
Instances For
Equations
- Semantics.Attitudes.Doxastic.boxAt_decidable R agent w worlds p = Semantics.Attitudes.Doxastic.boxAt_decidable._aux_1 R agent w worlds p
Equations
- Semantics.Attitudes.Doxastic.diaAt_decidable R agent w worlds p = Semantics.Attitudes.Doxastic.diaAt_decidable._aux_1 R agent w worlds p
Presuppositional Classification of Doxastic Verbs #
@cite{glass-2025} proposes a typology of belief verbs based on their presuppositional profile — what they require of the Common Ground:
- Factive (know): presupposes p — CG must entail p
- Nonfactive (think): no presupposition — no CG requirement
- Contrafactive (hypothetical contra): would presuppose ¬p — UNATTESTED
- Weak contrafactive (Mandarin yǐwéi): postsupposition ◇¬p — CG compatible with ¬p
The key insight: this classification is DERIVED from the PrProp produced by
DoxasticPredicate.toPrProp, not stipulated as a separate type. The presup
field of the PrProp determines the classification.
Postsuppositions (yǐwéi's ◇¬p) are output-context constraints, formalized
separately in Core.Postsupposition.
Classification of a doxastic verb's presuppositional profile.
This emerges from the presup field of the PrProp produced by
DoxasticPredicate.toPrProp. Not a primitive — a derived label.
- factive : PresupClass
- contrafactive : PresupClass
- nonfactive : PresupClass
- other : PresupClass
Instances For
Equations
- Semantics.Attitudes.Doxastic.instDecidableEqPresupClass 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 doxastic verb by its veridicality.
Equations
Instances For
Veridical verbs are factive.
Non-veridical verbs are nonfactive.
Causal Explanation of the Contrafactive Gap #
Roberts & Özyıldız (2025) propose that the contrafactive gap follows from a general constraint on lexicalization: presupposed content must be causally upstream of at-issue content.
The Predicate Lexicalization Constraint (PLC) #
A verbal predicate V with at-issue content α can have presupposition π iff in the normative world wₙ, a causal chain from π(wₙ) to α(wₙ) can be constructed for any assignment of the arguments of V.
Why Factives Work (know) #
For "Delilah knows that Konstanz is in Germany":
- Presupposition: p (Konstanz is in Germany)
- At-issue: B(d)(p) (Delilah believes Konstanz is in Germany)
Causal chain: p → indic(p) → acq(d)(iₚ) → B(d)(p)
- The fact p generates indicators (evidence) for p
- Delilah can become acquainted with these indicators
- This acquaintance leads to belief formation
Why Strong Contrafactives Don't Work (contra) #
For hypothetical "Marianne contras that the Earth is flat":
- Presupposition: ¬p (Earth is round, i.e., ¬flat)
- At-issue: B(m)(p) (Marianne believes Earth is flat)
NO causal chain: ¬p (ROUND) does NOT generate indicators for p (FLAT)
- ROUND generates indicators for ROUND
- There's no typical causal path from ¬p to B(x)(p)
This asymmetry DERIVES the gap from independent causal-cognitive principles.
The belief formation causal model uses Core.Causal — the V2 SEM
substrate (PMF-canonical Mechanism, BoolSEM specialization for the
deterministic-binary case). The PLC predicate is defined via
SEM.developDetOn with an explicit vertex list so kernel reduction
works structurally (no native_decide; mathlib-quality rfl/decide
proofs).
Equations
- Semantics.Attitudes.Doxastic.instDecidableEqBeliefVar 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.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
The causal graph for belief formation. Chain structure:
p → indic(p) → acq(a)(iₚ) → B(a)(p) (parallel chain for ¬p).
Each derived vertex has its single causal predecessor as parent.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The belief-formation BoolSEM. Roots (p, ¬p) get Mechanism.const false
(default; the input valuation overrides). Each derived vertex's mechanism
is "true iff its sole parent is true" — the chain copies values forward.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Explicit vertex list for developDetOn. Topological order ensures one
stepOnceDetOn pass propagates the entire chain.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Predicate Lexicalization Constraint (PLC) (@cite{roberts-ozyildiz-2025}).
A verbal predicate with at-issue content α can have presupposition π iff
setting π to true and running the belief-formation SEM's developDetOn
produces α at the at-issue vertex.
Defined via developDetOn with the explicit beliefVarList so kernel
reduction works structurally (no native_decide). One iteration of
stepOnceDetOn over a topologically-ordered list propagates the entire
chain; we use 8 = beliefVarList.length iterations conservatively.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Semantics.Attitudes.Doxastic.instDecidableSatisfiesPLC presup atIssue = Classical.dec (Semantics.Attitudes.Doxastic.satisfiesPLC presup atIssue)
Theorem: Factives satisfy the PLC
For "x knows p":
- Presupposition: p
- At-issue: B(a)(p)
- Causal chain: p → indic(p) → acq(a)(iₚ) → B(a)(p) ✓
Theorem: Strong contrafactives VIOLATE the PLC
For hypothetical "x contras p":
- Presupposition: ¬p
- At-issue: B(a)(p)
- NO causal chain from ¬p to B(a)(p) ✗
The fact that the Earth is round does not generate evidence that the Earth is flat.
The Contrafactive Gap Theorem
The asymmetry between factives and strong contrafactives follows from the Predicate Lexicalization Constraint:
- Factives (know): presup p → at-issue B(a)(p) — PLC SATISFIED
- Strong contrafactives (contra): presup ¬p → at-issue B(a)(p) — PLC VIOLATED
This DERIVES the gap from the independently motivated causal constraint.
Corollary: The asymmetry is structural, not stipulated
The contrafactive gap emerges from the structure of belief formation:
- Beliefs are formed based on evidence
- Evidence for p comes from p being true
- Evidence for p does NOT come from ¬p being true
Therefore any predicate trying to presuppose ¬p while asserting B(x)(p) is describing a causally incoherent eventuality.
Weak Contrafactives (yǐwéi) and the PLC #
Weak contrafactives like Mandarin yǐwéi don't violate the PLC because their projective content is fundamentally different:
Not a presupposition: @cite{glass-2025} argues yǐwéi's falsity inference is a postsupposition (about output context) not presupposition (input). Postsuppositions are formalized in
Core.Postsupposition.Different requirement: yǐwéi requires CG ◇ ¬p (CG compatible with ¬p), not CG ⊨ ¬p (CG entails ¬p)
No causal incoherence: "p is unsettled in CG" is compatible with "there's evidence for p that x acquired" — these are about different epistemic states (communal knowledge vs individual belief)
The PLC only constrains the relationship between presupposition and at-issue content within the SAME eventuality. Postsuppositions about discourse context update are not subject to this constraint.
Map a PresupClass to the corresponding causal variables for PLC checking.
- Factive: presup = p, at-issue = B(a)(p)
- Contrafactive: presup = ¬p, at-issue = B(a)(p)
For nonfactive (no presupposition) and other, the PLC doesn't apply.
Equations
- One or more equations did not get rendered due to their size.
- Semantics.Attitudes.Doxastic.presupClassToCausalVars Semantics.Attitudes.Doxastic.PresupClass.factive = some (Semantics.Attitudes.Doxastic.BeliefVar.p, Semantics.Attitudes.Doxastic.BeliefVar.B_a_p)
- Semantics.Attitudes.Doxastic.presupClassToCausalVars Semantics.Attitudes.Doxastic.PresupClass.nonfactive = none
- Semantics.Attitudes.Doxastic.presupClassToCausalVars Semantics.Attitudes.Doxastic.PresupClass.other = none
Instances For
Check if a PresupClass satisfies the Predicate Lexicalization Constraint.
Returns none if the PLC doesn't apply (nonfactive, postsuppositions).
Returns some true if it satisfies PLC, some false if it violates PLC.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Is this presuppositional profile valid (attestable)?
Valid means: either satisfies PLC (factives) or not subject to PLC (nonfactives, postsuppositions). Invalid = violates PLC (contrafactives).
Direct (computable) classification. The PLC-derivation chain
(via presupClassSatisfiesPLC) is given as
presupClassIsValid_eq_via_plc below.
Equations
- Semantics.Attitudes.Doxastic.presupClassIsValid Semantics.Attitudes.Doxastic.PresupClass.factive = true
- Semantics.Attitudes.Doxastic.presupClassIsValid Semantics.Attitudes.Doxastic.PresupClass.nonfactive = true
- Semantics.Attitudes.Doxastic.presupClassIsValid Semantics.Attitudes.Doxastic.PresupClass.contrafactive = false
- Semantics.Attitudes.Doxastic.presupClassIsValid Semantics.Attitudes.Doxastic.PresupClass.other = true
Instances For
The PLC derivation: presupClassIsValid agrees with running the
presupClassSatisfiesPLC chain (taking none as true). This
bridges the direct classifier to the @cite{roberts-ozyildiz-2025}
causal account.
Factive presuppositions are valid (satisfy PLC).
Contrafactive presuppositions are invalid (violate PLC).
Nonfactive verbs are trivially valid (no presupposition to check).
Veridicality constraint: if veridical, p must hold at the evaluation world.
For "know", we require p(w) at the evaluation world w.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
A doxastic attitude predicate.
Bundles the accessibility relation with veridicality and other properties.
- name : String
Name of the predicate
- access : AccessRel W E
Accessibility relation
- veridicality : Veridicality
Veridicality (veridical or not)
- createsOpaqueContext : Bool
Does it create an opaque context? (substitution failures)
Instances For
Semantics for a doxastic predicate taking a proposition.
⟦x V that p⟧(w) = (veridicalityHolds V p w) ∧ ∀w'. R(x,w,w') → p(w')
For veridical predicates, we also require p(w).
Equations
- V.holdsAt agent p w worlds = (Semantics.Attitudes.Doxastic.veridicalityHolds V.veridicality p w ∧ Semantics.Attitudes.Doxastic.boxAt V.access agent w worlds p)
Instances For
Equations
- V.holdsAt_decidable agent p w worlds = Semantics.Attitudes.Doxastic.DoxasticPredicate.holdsAt_decidable._aux_1 V agent p w worlds
Convert a doxastic predicate application to a PrProp.
The decomposition makes the presuppositional structure explicit:
presup= veridicality check (for veridical: p(w); for non-veridical: true)assertion= universal modal (∀w'. R(x,w,w') → p(w'))
holdsAt computes presup(w) && assertion(w) — the same as PrProp.holds.
Equations
- One or more equations did not get rendered due to their size.
Instances For
toPrProp decomposes holdsAt: the presup field is the veridicality
check and the assertion field is the modal.
PrProp for a hypothetical contrafactive verb: presupposes ¬p, asserts agent believes p. UNATTESTED — see @cite{glass-2025}.
Equations
- Semantics.Attitudes.Doxastic.contrafactivePrProp R agent p worlds = { presup := fun (w : W) => ¬p w, assertion := fun (w : W) => Semantics.Attitudes.Doxastic.boxAt R agent w worlds p }
Instances For
Semantics for doxastic predicate taking a Hamblin question.
Following @cite{karttunen-1977}, "know Q" means knowing the true answer: ⟦x knows Q⟧(w) = ∃p ∈ Q. p(w) ∧ x knows p
For non-veridical predicates, we drop the p(w) requirement: ⟦x believes Q⟧(w) = ∃p ∈ Q. x believes p
Equations
- One or more equations did not get rendered due to their size.
Instances For
Abstract "believe" predicate template.
Users instantiate with their specific accessibility relation.
Equations
- Semantics.Attitudes.Doxastic.believeTemplate R = { name := "believe", access := R, veridicality := Features.Veridicality.nonVeridical }
Instances For
Abstract "know" predicate template.
Veridical: knowing p requires p to be true.
Equations
- Semantics.Attitudes.Doxastic.knowTemplate R = { name := "know", access := R, veridicality := Features.Veridicality.veridical }
Instances For
Abstract "think" predicate template.
Non-veridical, typically less commitment than "believe".
Equations
- Semantics.Attitudes.Doxastic.thinkTemplate R = { name := "think", access := R, veridicality := Features.Veridicality.nonVeridical }
Instances For
Veridical predicates entail their complement.
If x knows p at w, then p is true at w.
Non-veridical predicates don't entail their complement.
There exist cases where x believes p but p is false.
Doxastic predicates are closed under known implication.
If x knows p and x knows (p → q), then x knows q. (This is the K axiom of modal logic)
Substitution and Opacity #
Opaque contexts block substitution of co-referential terms.
Even if a = b (extensionally), "x believes Fa" may differ from "x believes Fb" because the agent may not know a = b.
This is formalized by the createsOpaqueContext field: when true, the predicate
operates on intensions (functions from worlds), not extensions.
For opaque predicates, substitution failure is possible.
This is a statement that the predicate distinguishes intensions that happen to have the same extension at the evaluation world.
Equations
- One or more equations did not get rendered due to their size.
Instances For
De dicto reading: quantifier under the attitude.
"John believes someone is a spy" (de dicto) = John believes ∃x. spy(x)
Equations
- Semantics.Attitudes.Doxastic.deDicto V agent p w worlds = V.holdsAt agent p w worlds
Instances For
De re reading: quantifier over the attitude.
"John believes someone is a spy" (de re) = ∃x. John believes spy(x)
Here we need a domain of individuals to quantify over.
Equations
- Semantics.Attitudes.Doxastic.deRe V agent predicate domain w worlds = ∃ x ∈ domain, V.holdsAt agent (predicate x) w worlds
Instances For
Attitude Embedding and Scalar Implicature #
When scalar expressions are embedded under attitudes, the implicature can be computed locally (inside the attitude) or globally (about speaker):
Global: Speaker implicates ¬(speaker believes all) Local: x believes (some ∧ ¬all) [apparent local reading]
@cite{goodman-stuhlmuller-2013} show the "local" reading arises from pragmatic inference about speaker knowledge, not true local computation.
See Phenomena/ScalarImplicatures/Studies/GoodmanStuhlmuller2013PMF.lean
for the RSA treatment.
Map veridicality to @cite{searle-1983}'s psychological mode.
Veridical attitudes (know, realize) are like perception: the world must cause the mental state (you can only know p if p is the case and your epistemic state is appropriately caused by p's being the case). Non-veridical attitudes (believe, think) are like belief: satisfaction depends only on whether p obtains, not on the causal chain.
Equations
Instances For
Veridical attitudes are causally self-referential (world→state); non-veridical attitudes are not. This connects the linguistic veridicality distinction to @cite{searle-1983}'s metaphysics: knowledge requires the world to cause the knowing, while belief requires only that the content match reality.