Skip to content

Commit f13b367

Browse files
committed
Presupposition refactor, Schlenker2003/PersonFeatures/ContextQuantification, bib cleanup
1 parent 4ca54a1 commit f13b367

15 files changed

Lines changed: 718 additions & 209 deletions

File tree

Linglib.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,6 +1033,7 @@ import Linglib.Phenomena.Presupposition.ForgetPresuppositions
10331033
import Linglib.Phenomena.Presupposition.Studies.White2014
10341034
import Linglib.Phenomena.Presupposition.Studies.GiorgoloAsudeh2012
10351035
import Linglib.Phenomena.Presupposition.Studies.Grove2022
1036+
import Linglib.Phenomena.Presupposition.Studies.Beaver2001
10361037
import Linglib.Phenomena.Modality.OutlookMarkers
10371038
import Linglib.Phenomena.Classifiers.Typology
10381039
import Linglib.Phenomena.Classifiers.Studies.Chierchia1998
@@ -1089,6 +1090,7 @@ import Linglib.Phenomena.Reference.Studies.GilesEtAl2026
10891090
import Linglib.Phenomena.Reference.Studies.KehlerRohde2013
10901091
import Linglib.Phenomena.Reference.Studies.RonderosEtAl2024
10911092
import Linglib.Phenomena.Reference.Studies.RosaArnold2017
1093+
import Linglib.Phenomena.Reference.Studies.Schlenker2003
10921094
import Linglib.Phenomena.Reference.Studies.SedivyEtAl1999
10931095
import Linglib.Phenomena.Reference.Studies.Krifka2026
10941096
import Linglib.Phenomena.ScalarImplicatures.Basic
@@ -1515,6 +1517,7 @@ import Linglib.Theories.Semantics.Presupposition.LocalContext
15151517
import Linglib.Theories.Semantics.Presupposition.OntologicalPreconditions
15161518
import Linglib.Theories.Semantics.Presupposition.TonhauserDerivation
15171519
import Linglib.Theories.Semantics.Presupposition.Transparency
1520+
import Linglib.Theories.Semantics.Presupposition.Accommodation
15181521
import Linglib.Theories.Semantics.Tense.Compositional
15191522
import Linglib.Theories.Semantics.Tense.TenseAspectComposition
15201523
import Linglib.Theories.Semantics.Tense.TemporalAdverbials
@@ -1564,6 +1567,7 @@ import Linglib.Theories.Semantics.Intensional.Basic
15641567
import Linglib.Theories.Semantics.Attitudes.BuilderProperties
15651568
import Linglib.Theories.Semantics.Attitudes.CDistributivity
15661569
import Linglib.Theories.Semantics.Attitudes.ContentComposition
1570+
import Linglib.Theories.Semantics.Attitudes.ContextQuantification
15671571
import Linglib.Theories.Semantics.Attitudes.ContrafactiveGap
15681572
import Linglib.Theories.Semantics.Attitudes.Doxastic
15691573
import Linglib.Theories.Semantics.Attitudes.Intensional
@@ -1635,6 +1639,7 @@ import Linglib.Theories.Semantics.Reference.Almog2014
16351639
import Linglib.Theories.Semantics.Reference.Demonstratives
16361640
import Linglib.Theories.Semantics.Reference.KaplanLD
16371641
import Linglib.Theories.Semantics.Reference.Monsters
1642+
import Linglib.Theories.Semantics.Reference.PersonFeatures
16381643
import Linglib.Theories.Semantics.Reference.ShiftedIndexicals
16391644
import Linglib.Theories.Semantics.Reference.FreeIndirectDiscourse
16401645
import Linglib.Theories.Semantics.Reference.Kripke

Linglib/Core/Semantics/Presupposition.lean

Lines changed: 51 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,59 @@ import Linglib.Core.Semantics.Proposition
66
@cite{heim-1983} @cite{schlenker-2009} @cite{von-fintel-1999} @cite{geurts-2005} @cite{belnap-1970}
77
88
`PrProp W` is linglib's canonical representation of **partial propositions**
9-
propositions that may be undefined at some worlds. The two fields are:
10-
- `presup` (= defined/assertive): whether the proposition says anything at w
9+
propositions that may be undefined at some evaluation points. The type
10+
parameter `W` is the evaluation domain: worlds, possibilities, events,
11+
world-assignment pairs, or any other type. The two fields are:
12+
- `presup` (= definedness): whether the proposition says anything at this point
1113
- `assertion` (= content): what it says when defined
1214
13-
This general type has multiple linguistic interpretations:
15+
## Domain generality
16+
17+
`PrProp W` is parametric over `W`. Common instantiations:
18+
- `PrProp World` — classical presupposition over possible worlds
19+
- `PrProp (Possibility W E)` — dynamic presupposition over world-assignment pairs
20+
- `PrProp (W × Event)` — event presuppositions (preconditions on events)
21+
- `PrProp (W × Time)` — temporal presuppositions
22+
23+
All operations (filtering connectives, `eval`, accommodation) work
24+
uniformly across domains because they are pointwise over `W`.
25+
26+
## Satisfaction relations
27+
28+
Two satisfaction relations connect PrProp to CCP's `updateFromSat`:
29+
- `PrProp.defined w p` — presupposition holds at w (definedness test)
30+
- `PrProp.holds w p` — both presupposition and assertion hold (full satisfaction)
31+
32+
These enable structural integration with the dynamic semantics layer:
33+
`updateFromSat PrProp.holds p` produces a `CCP W` that is eliminative,
34+
distributive, and supports the Galois connection — all by construction.
35+
36+
## Linguistic interpretations
37+
1438
- **Presupposition**: `presup` = presupposition holds; failure = undefined
1539
(@cite{heim-1983}, @cite{schlenker-2009})
1640
- **Conditional assertion**: `presup` = assertive; failure = nonassertive
1741
(@cite{belnap-1970}: "(A/B) is assertive_w just in case A is true_w")
1842
- **Homogeneity**: `presup` = all atoms agree; failure = truth-value gap
1943
(@cite{kriz-2016})
2044
21-
The choice of **connective system** (how gaps behave under ∧/∨) is
22-
orthogonal to `PrProp` itself — see `Truth3.GapPolicy`:
45+
## Connective systems
46+
47+
The choice of connective system (how gaps behave under ∧/∨) is orthogonal
48+
to `PrProp` itself — see `Truth3.GapPolicy`:
2349
- Classical (`PrProp.and`): both must be defined
2450
- Filtering (`PrProp.andFilter`): one can satisfy the other's presupposition
2551
- Belnap (`PrProp.andBelnap`): gaps are skipped, defined operands contribute
2652
53+
## Structural joints
54+
55+
Everything in the presupposition system derives from `.presup` and `.assertion`:
56+
- Heritage function for `p → q` = `(impFilter p q).presup` (by construction)
57+
- CCP update = `updateFromSat PrProp.holds p` (from CCP infrastructure)
58+
- Presupposition test = `updateFromSat PrProp.defined p`
59+
- Accommodation = intersect context with `{w | PrProp.defined w p}`
60+
- Local context satisfaction = `supportOf PrProp.defined s p`
61+
2762
-/
2863

2964
namespace Core.Presupposition
@@ -46,11 +81,18 @@ variable {W : Type*}
4681
def eval (p : PrProp W) : Prop3 W := λ w =>
4782
if p.presup w then Truth3.ofBool (p.assertion w) else .indet
4883

49-
/-- A PrProp is defined at w iff its presupposition holds at w. -/
50-
def isDefinedAt (p : PrProp W) (w : W) : Prop := p.presup w = true
84+
/-- Definedness relation: presupposition holds at the evaluation point.
85+
86+
Argument order `(w : W) (p : PrProp W)` matches `updateFromSat`:
87+
`updateFromSat PrProp.defined p` gives the presupposition test CCP. -/
88+
def defined (w : W) (p : PrProp W) : Prop := p.presup w = true
89+
90+
/-- Full satisfaction relation: both presupposition and assertion hold.
5191
52-
/-- The set of worlds where p is defined. -/
53-
def definedWorlds (p : PrProp W) : W -> Prop := λ w => p.presup w = true
92+
`updateFromSat PrProp.holds p` gives the full CCP (presupposition
93+
test + assertion filter). This CCP is automatically eliminative and
94+
distributive via CCP's `updateFromSat` infrastructure. -/
95+
def holds (w : W) (p : PrProp W) : Prop := p.presup w = true ∧ p.assertion w = true
5496

5597
/-- Evaluation is defined iff presupposition holds. -/
5698
theorem eval_isDefined (p : PrProp W) (w : W) :

Linglib/Phenomena/Quantification/Typology.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import Linglib.Fragments.Japanese.Determiners
44

55
/-!
66
# Cross-Linguistic Quantifier Typology
7-
@cite{barwise-cooper-1981} @cite{peters-westerstahl-2006} @cite{cheng-sybesma-1999} @cite{shimoyama-2006} @cite{nakanishi-2007}
7+
@cite{barwise-cooper-1981} @cite{peters-westerstahl-2006} @cite{shimoyama-2006} @cite{nakanishi-2007}
88
99
Empirical quantifier inventories from three languages (three families) mapped to
1010
a common `QuantifierInventory` structure, following the pattern established in
@@ -19,7 +19,7 @@ a common `QuantifierInventory` structure, following the pattern established in
1919
## Data sources
2020
2121
- English: @cite{barwise-cooper-1981}
22-
- Mandarin: @cite{li-1998}, @cite{cheng-sybesma-1999}
22+
- Mandarin: general knowledge (no single source)
2323
- Japanese: @cite{shimoyama-2006}, @cite{nakanishi-2007}
2424
2525
-/
@@ -83,7 +83,7 @@ open Fragments.Mandarin.Determiners in
8383
def mandarin : QuantifierInventory :=
8484
{ language := "Mandarin"
8585
, family := "Sino-Tibetan"
86-
, source := "Li (1998), Cheng & Sybesma (1999)"
86+
, source := "general knowledge"
8787
, entries := Fragments.Mandarin.Determiners.allQuantifiers.map λ q =>
8888
{ form := q.pinyin
8989
, qforce := q.qforce
Lines changed: 186 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,186 @@
1+
import Linglib.Theories.Semantics.Attitudes.ContextQuantification
2+
import Linglib.Theories.Semantics.Reference.ShiftedIndexicals
3+
import Linglib.Theories.Semantics.Reference.Kaplan
4+
import Linglib.Theories.Semantics.Reference.Monsters
5+
import Linglib.Theories.Semantics.Reference.PersonFeatures
6+
7+
/-!
8+
# Schlenker (2003): A Plea for Monsters
9+
@cite{schlenker-2003}
10+
11+
End-to-end verification of @cite{schlenker-2003}'s core argument:
12+
13+
1. Kaplan's thesis (no monsters) holds for English: "I" always refers
14+
to the actual speaker, even under attitude verbs
15+
2. Amharic violates the thesis: "I" shifts to the attitude holder
16+
3. Context quantification (`ctxBox`) captures both patterns:
17+
- With world-only meaning → reduces to standard `boxAt` (Fixity holds)
18+
- With agent-reading meaning → strictly more expressive (Fixity fails)
19+
4. Person features as presuppositions derive logophoric pronouns
20+
21+
## Derivation Chain
22+
23+
```
24+
Core.Context.Tower (ContextTower, push, origin, innermost)
25+
26+
Core.Context.Shifts (attitudeShift)
27+
28+
Theories.Semantics.Reference.Kaplan (pronI_access, origin-reading)
29+
30+
Theories.Semantics.Reference.ShiftedIndexicals (amharic_pronI, local-reading)
31+
32+
Theories.Semantics.Attitudes.ContextQuantification (ctxBox, Fixity)
33+
34+
Theories.Semantics.Reference.PersonFeatures (logophoric pronouns)
35+
36+
This file: concrete end-to-end verification
37+
```
38+
-/
39+
40+
namespace Phenomena.Reference.Studies.Schlenker2003
41+
42+
open Core.Context
43+
open Semantics.Attitudes.ContextQuantification
44+
open Semantics.Attitudes.Doxastic (AccessRel boxAt)
45+
open Semantics.Reference.ShiftedIndexicals (amharic_pronI)
46+
open Semantics.Reference.Kaplan (pronI_access)
47+
48+
-- ════════════════════════════════════════════════════════════════
49+
-- § Concrete Setup
50+
-- ════════════════════════════════════════════════════════════════
51+
52+
inductive Person | alice | bob
53+
deriving DecidableEq, BEq, Repr
54+
55+
inductive World | w0 | w1
56+
deriving DecidableEq, BEq, Repr
57+
58+
abbrev Ctx := KContext World Person Unit Unit
59+
60+
/-- Speech-act context: Alice speaking to Bob at world w0. -/
61+
def speechCtx : Ctx :=
62+
{ agent := .alice, addressee := .bob, world := .w0,
63+
time := (), position := () }
64+
65+
def rootT : ContextTower Ctx := ContextTower.root speechCtx
66+
67+
/-- Bob's doxastic accessibility: both worlds are compatible with
68+
what Bob believes. -/
69+
def bobBel : AccessRel World Person
70+
| .bob, _, _ => true
71+
| .alice, _, w' => w' == .w0
72+
73+
/-- Tower after attitude shift: "Bob said that ..." pushes Bob as
74+
agent and w1 as the attitude world. -/
75+
def shiftedT : ContextTower Ctx :=
76+
rootT.push (attitudeShift .bob .w1)
77+
78+
-- ════════════════════════════════════════════════════════════════
79+
-- § English vs Amharic "I" Under Attitude Shift
80+
-- ════════════════════════════════════════════════════════════════
81+
82+
/-- English "I" = Alice (actual speaker), even under Bob's attitude verb. -/
83+
theorem english_I_is_speaker :
84+
pronI_access.resolve shiftedT = .alice := rfl
85+
86+
/-- Amharic "I" = Bob (attitude holder), shifted by the attitude verb. -/
87+
theorem amharic_I_is_holder :
88+
amharic_pronI.resolve shiftedT = .bob := rfl
89+
90+
/-- English and Amharic "I" diverge under the same attitude shift. -/
91+
theorem indexicals_diverge :
92+
pronI_access.resolve shiftedT ≠ amharic_pronI.resolve shiftedT := by
93+
decide
94+
95+
-- ════════════════════════════════════════════════════════════════
96+
-- § Context Quantification: English vs Amharic Truth Conditions
97+
-- ════════════════════════════════════════════════════════════════
98+
99+
/-- Happiness predicate: Alice is happy in w0 only; Bob is happy in both. -/
100+
def isHappy : Person → World → Bool
101+
| .alice, .w0 => true
102+
| .alice, .w1 => false
103+
| .bob, _ => true
104+
105+
/-- English: "Bob said that I am happy" = "Bob said that Alice is happy."
106+
The meaning is world-only (Alice is fixed by origin-reading "I"),
107+
so context quantification reduces to standard world quantification. -/
108+
theorem english_reduces_to_boxAt :
109+
ctxBox bobBel .bob (fun c => isHappy .alice c.world) rootT .w0 [.w0, .w1] =
110+
boxAt bobBel .bob .w0 [.w0, .w1] (isHappy .alice) := by
111+
simp only [ctxBox_world_only]
112+
113+
/-- English version is false: Alice is NOT happy in all of Bob's
114+
belief worlds (she's unhappy in w1). -/
115+
theorem english_result :
116+
ctxBox bobBel .bob (fun c => isHappy .alice c.world)
117+
rootT .w0 [.w0, .w1] = false := by
118+
native_decide
119+
120+
/-- Amharic: "Bob said that I am happy" = "Bob said that Bob is happy."
121+
The meaning reads the agent from the shifted context (Bob),
122+
so ctxBox does NOT reduce to boxAt. -/
123+
theorem amharic_result :
124+
ctxBox bobBel .bob (fun c => isHappy c.agent c.world)
125+
rootT .w0 [.w0, .w1] = true := by
126+
native_decide
127+
128+
/-- The English and Amharic versions have different truth values:
129+
English is false, Amharic is true. This is the formal content of
130+
@cite{schlenker-2003}'s argument that context quantification is
131+
strictly more expressive than world quantification. -/
132+
theorem english_amharic_differ :
133+
ctxBox bobBel .bob (fun c => isHappy .alice c.world)
134+
rootT .w0 [.w0, .w1] ≠
135+
ctxBox bobBel .bob (fun c => isHappy c.agent c.world)
136+
rootT .w0 [.w0, .w1] := by
137+
native_decide
138+
139+
-- ════════════════════════════════════════════════════════════════
140+
-- § Fixity Thesis
141+
-- ════════════════════════════════════════════════════════════════
142+
143+
/-- World-only meanings satisfy Fixity (Claim 2): the truth value of
144+
"Alice is happy" is tower-independent. -/
145+
theorem fixity_english :
146+
SatisfiesFixity (W := World) (E := Person) (P := Unit) (T := Unit)
147+
(fun _ w => isHappy .alice w) :=
148+
fixity_world_only (isHappy .alice)
149+
150+
-- ════════════════════════════════════════════════════════════════
151+
-- § Context Quantification ↔ Shifted Indexicals Bridge
152+
-- ════════════════════════════════════════════════════════════════
153+
154+
/-- The agent of the accessible context (from `ctxFromShift`) is exactly
155+
what Amharic "I" (`amharic_pronI`) resolves to. -/
156+
theorem bridge_ctxFromShift_amharic :
157+
(ctxFromShift rootT .bob .w1).agent =
158+
amharic_pronI.resolve shiftedT := by
159+
native_decide
160+
161+
/-- English "I" gives the same result with or without the shift:
162+
both return Alice (the origin agent). -/
163+
theorem bridge_english_invariant :
164+
pronI_access.resolve shiftedT =
165+
pronI_access.resolve rootT :=
166+
english_I_invariant rootT .bob .w1
167+
168+
-- ════════════════════════════════════════════════════════════════
169+
-- § Person Features: Logophoric Pronouns
170+
-- ════════════════════════════════════════════════════════════════
171+
172+
open Semantics.Reference.PersonFeatures
173+
174+
/-- Bob is logophoric under the attitude shift: he is +author(local)
175+
(agent of the embedded context) but −author* (not the actual
176+
speaker Alice). -/
177+
theorem bob_is_logophoric :
178+
isLogophoric .bob shiftedT .local = true := by
179+
native_decide
180+
181+
/-- Alice (the speaker) is never logophoric: +author* blocks it. -/
182+
theorem alice_not_logophoric :
183+
isLogophoric .alice shiftedT .local = false := by
184+
native_decide
185+
186+
end Phenomena.Reference.Studies.Schlenker2003

Linglib/Theories/Pragmatics/Implicature/Constraints/Wang2025.lean

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ assertion — the sentence is semantically defective.
7474
@cite{wang-2025}: IC is NON-VIOLABLE.
7575
-/
7676
def satisfiesIC (p : PrProp W) : Prop :=
77-
∃ w, p.presup w = true ∧ p.assertion w = true
77+
∃ w, PrProp.holds w p
7878

7979
/--
8080
FP (Felicity Presupposition): the common ground entails the presupposition.
@@ -83,7 +83,7 @@ Standard Stalnakerian presupposition satisfaction. When the CG only partially
8383
entails the presupposition, FP is violated but may be tolerated.
8484
-/
8585
def satisfiesFP (cg : ContextSet W) (p : PrProp W) : Prop :=
86-
∀ w, cg w → p.presup w = true
86+
∀ w, cg w → PrProp.defined w p
8787

8888
/--
8989
Partial FP satisfaction: the presupposition is compatible with the CG
@@ -93,7 +93,7 @@ but not fully entailed.
9393
while others don't (jiu, zhidao).
9494
-/
9595
def partialFP (cg : ContextSet W) (p : PrProp W) : Prop :=
96-
(∃ w, cg w ∧ p.presup w = true) ∧ ¬satisfiesFP cg p
96+
(∃ w, cg w ∧ PrProp.defined w p) ∧ ¬satisfiesFP cg p
9797

9898
/--
9999
MP (Maximize Presupposition): prefer S_p over S when the presuppositional
@@ -174,7 +174,7 @@ theorem no_cg_blocks (alt : AltStructure) :
174174
IC satisfaction is necessary for felicity.
175175
-/
176176
def icNecessary (p : PrProp W) (h : satisfiesIC p) :
177-
∃ w, p.presup w = true ∧ p.assertion w = true := h
177+
∃ w, PrProp.holds w p := h
178178

179179

180180
-- ============================================================================

0 commit comments

Comments
 (0)