Docs / Semantics / Dynamic / Partial

Partial updates

import Linglib.Semantics.Dynamic.Partial

A partial update PartialUpdate α := α →. α is a partial function on states, and a state admits the update when the update is defined there. Heim's context change potentials are the partial updates of sets of worlds (CCP.Partial), whose domain condition is the presupposition, so that Karttunen's satisfaction law for conjunction is the domain condition of composition and holds by construction. A trivalent proposition gives the update defined on the contexts where it is defined throughout, and under this update the filtering connectives, Peters' Middle Kleene connectives, are the admittance conditions of the dynamic connectives. More strongly, the update map is an isomorphism from trivalent propositions to the updates it reaches, carrying the constant truth, Peters' conjunction and the Weak Kleene difference, disjunction and conjunction to the null update, sequencing, difference, union and intersection (George 2014 §2). Every update built from these operations out of trivalentisable ones is therefore trivalentisable, and Heim's connectives are Peters'.

Main definitions

Main results

Implementation notes

The partiality is of the update and not of the points. The partial assignments of Dynamic/State.lean encode referential growth rather than presupposition, the sense of partial dynamic semantics in Haug's work, and the two kinds compose in Dynamic/FileChange.lean. Heim gives context change potentials for negation, conjunction and the conditional only, and the disjunction follows Beaver. George 2014's error context # is the undefinedness of a Part, so every update sends # to #; updates that recover from #, such as his (6a), are not representable, but every trivalentisable update is of this kind.

References

Declarations

A partial update of states of type α. The domain condition is the presupposition; Part.Dom is Heim 1983's admittance.

@[reducible, inline] abbrev DynamicSemantics.PartialUpdateL87–89
(α : Type u_1) :
Type u_1

Used by DynamicSemantics.PartialUpdate.Admits, DynamicSemantics.PartialUpdate.ofTotal, DynamicSemantics.PartialUpdate.seq, DynamicSemantics.PartialUpdate.IsEliminative, DynamicSemantics.PartialUpdate.IsEliminative.seq, DynamicSemantics.PartialUpdate.supports, DynamicSemantics.PartialUpdate.supports_iff_mem, DynamicSemantics.PartialUpdate.supports_iff_eq_some, DynamicSemantics.PartialUpdate.supports.seq_apply, DynamicSemantics.PartialUpdate.supports_iff_isFixedPt, DynamicSemantics.PartialUpdate.entails_bind_iff_seq_eq, DynamicSemantics.PartialUpdate.entails_bind_iff, DynamicSemantics.PartialUpdate.Presupposes, DynamicSemantics.PartialUpdate.supports.admits, DynamicSemantics.PartialUpdate.Presupposes.trans, DynamicSemantics.PartialUpdate.Presupposes.seq_left, DynamicSemantics.PartialUpdate.admits_seq, DynamicSemantics.PartialUpdate.admits_seq_iff, DynamicSemantics.PartialUpdate.image_seq, DynamicSemantics.CCP.Partial

Used in Semantics/Dynamic/FileChange

L95–97
L102–103

Sequencing, dynamic conjunction, is s[φ ∧ ψ] = s[φ][ψ]. This is PFun.comp; the projection behavior of conjunction is the composition law of partial functions.

def DynamicSemantics.PartialUpdate.seqL105–108
{α : Type u_1} (φ ψ : PartialUpdate α) :
  • φ.seq ψ = PFun.comp ψ φ

Built from

Used by DynamicSemantics.PartialUpdate.seq_eq_kleisliComp, DynamicSemantics.PartialUpdate.IsEliminative.seq, DynamicSemantics.PartialUpdate.supports.seq_apply, DynamicSemantics.PartialUpdate.entails_bind_iff_seq_eq, DynamicSemantics.PartialUpdate.Presupposes.seq_left, DynamicSemantics.PartialUpdate.admits_seq, DynamicSemantics.PartialUpdate.admits_seq_iff, DynamicSemantics.PartialUpdate.image_seq, DynamicSemantics.CCP.Partial.cond_eq_diff, DynamicSemantics.CCP.Partial.cond_eq_neg_seq_neg, DynamicSemantics.CCP.Partial.admits_seq_ofTrivalent_iff, DynamicSemantics.CCP.Partial.admits_seq_ofTrivalent, DynamicSemantics.CCP.Partial.ofTrivalent_meetMiddle, DynamicSemantics.CCP.Partial.ofTrivalent_joinMiddle_eq_neg_seq_neg, DynamicSemantics.CCP.Partial.disj_ofTrivalent, DynamicSemantics.CCP.Partial.IsTrivalentisable.seq, DynamicSemantics.PartialUpdate.Presupposes.seq_right

Used in Semantics/Dynamic/FileChange, Semantics/Presupposition/Formula, Beaver2001, BeaverKrahmer2001, Heim1982 and 3 more

Sequencing is Kleisli composition for the Part monad, since a partial update is definitionally a Kleisli arrow α → Part α. This is the partiality column of the effect view of dynamic semantics, beside the powerset column in Collapse.lean (Moggi 1991, Shan 2001).

theorem DynamicSemantics.PartialUpdate.seq_eq_kleisliCompL110–115
{α : Type u_1} (φ ψ : α → Part α) :
seq φ ψ = φ >=> ψ

Built from

Eliminativity

A partial update is eliminative if its defined outputs are at least as informative as the input (Heim 1982's Principle (A); Groenendijk & Stokhof 1990's ↓-direction).

def DynamicSemantics.PartialUpdate.IsEliminativeL119–121
{α : Type u_1} [LE α] (φ : PartialUpdate α) :

Built from

Used by DynamicSemantics.PartialUpdate.isEliminative_id, DynamicSemantics.PartialUpdate.IsEliminative.seq, DynamicSemantics.CCP.Partial.isEliminative_ofTrivalent, DynamicSemantics.CCP.Partial.isEliminative_neg, DynamicSemantics.CCP.Partial.isEliminative_cond

Used in Semantics/Dynamic/FileChange, Heim1982

L123–124

Support and entailment

s supports φ when the update changes nothing (Heim 1992's c + φ = c, Veltman 1996's acceptance).

def DynamicSemantics.PartialUpdate.supportsL133–135
{α : Type u_1} (s : α) (φ : PartialUpdate α) :

Built from

Used by DynamicSemantics.PartialUpdate.supports_iff_mem, DynamicSemantics.PartialUpdate.supports_iff_eq_some, DynamicSemantics.PartialUpdate.supports.seq_apply, DynamicSemantics.PartialUpdate.supports_iff_isFixedPt, DynamicSemantics.PartialUpdate.entails_bind_iff, DynamicSemantics.PartialUpdate.Presupposes, DynamicSemantics.PartialUpdate.supports.admits

Used in Semantics/Dynamic/FileChange, Beaver2001, Heim1982

L137
L139
L141–142
L144–146

Dynamic entailment between partial updates, every defined update with φ supporting ψ (Veltman 1996's acceptance consequence; Heim 1982's entailment between file change potentials), is Entails of their extensions along Part.bind. It is absorption, sequencing ψ after φ changing nothing.

theorem DynamicSemantics.PartialUpdate.entails_bind_iff_seq_eqL148–157
{α : Type u_1} {φ ψ : PartialUpdate α} :
(Entails [fun (x : Part α) => x >>= φ] fun (x : Part α) => x >>= ψ) ↔ φ.seq ψ = φ

Built from ,

L159–168

Presupposition

φ presupposes ψ when every state admitting φ supports ψ. This is Heim 1983's presupposition when ψ is the update of a plain proposition (presupposes_ofProp_iff), and Beaver 2001's presupposition between sentences.

def DynamicSemantics.PartialUpdate.PresupposesL172–175
{α : Type u_1} (φ ψ : PartialUpdate α) :

Built from , ,

Used by DynamicSemantics.PartialUpdate.Presupposes.trans, DynamicSemantics.PartialUpdate.Presupposes.seq_left, DynamicSemantics.CCP.Partial.presupposes_ofProp_iff, DynamicSemantics.CCP.Partial.presupposes_ofTrivalent, DynamicSemantics.PartialUpdate.Presupposes.neg, DynamicSemantics.PartialUpdate.Presupposes.cond_left, DynamicSemantics.PartialUpdate.Presupposes.seq_right, DynamicSemantics.PartialUpdate.Presupposes.cond_right

Used in Beaver2001, Heim1983

L177
L183–184

The satisfaction law

L195–198
L200–208
L210–214

Heim's partial context change potentials

A partial context change potential is a partial update of sets of possibilities, the partial variant of the CCP API.

@[reducible, inline] abbrev DynamicSemantics.CCP.PartialL220–222
(S : Type u_1) :
Type u_1

Built from

Used by DynamicSemantics.CCP.Partial.ofTrivalent, DynamicSemantics.CCP.Partial.neg, DynamicSemantics.CCP.Partial.cond, DynamicSemantics.CCP.Partial.disj, DynamicSemantics.CCP.Partial.diff, DynamicSemantics.CCP.Partial.union, DynamicSemantics.CCP.Partial.inter, DynamicSemantics.CCP.Partial.admits_diff, DynamicSemantics.CCP.Partial.admits_union, DynamicSemantics.CCP.Partial.admits_inter, DynamicSemantics.CCP.Partial.neg_eq_diff, DynamicSemantics.CCP.Partial.cond_eq_diff, DynamicSemantics.CCP.Partial.cond_eq_neg_seq_neg, DynamicSemantics.CCP.Partial.isEliminative_neg, DynamicSemantics.CCP.Partial.isEliminative_cond, DynamicSemantics.CCP.Partial.admits_neg, DynamicSemantics.CCP.Partial.admits_cond, DynamicSemantics.CCP.Partial.admits_disj, DynamicSemantics.CCP.Partial.admits_seq_ofTrivalent_iff, DynamicSemantics.CCP.Partial.admits_cond_ofTrivalent_iff, DynamicSemantics.CCP.Partial.admits_disj_ofTrivalent_iff, DynamicSemantics.CCP.Partial.IsTrivalentisable, DynamicSemantics.CCP.Partial.IsTrivalentisable.seq, DynamicSemantics.CCP.Partial.IsTrivalentisable.diff, DynamicSemantics.CCP.Partial.IsTrivalentisable.union, DynamicSemantics.CCP.Partial.IsTrivalentisable.inter, DynamicSemantics.CCP.Partial.IsTrivalentisable.neg, DynamicSemantics.CCP.Partial.IsTrivalentisable.cond, DynamicSemantics.CCP.Partial.IsTrivalentisable.disj, DynamicSemantics.CCP.Partial.presupposes_ofProp_iff, DynamicSemantics.PartialUpdate.Presupposes.neg, DynamicSemantics.PartialUpdate.Presupposes.cond_left, DynamicSemantics.PartialUpdate.Presupposes.seq_right, DynamicSemantics.PartialUpdate.Presupposes.cond_right

Used in Semantics/Presupposition/Formula, Beaver2001, Heim1983, Heim1992, WangDavidson2026 and 1 more

The Heimian update of a trivalent proposition is defined iff the proposition is defined throughout the context, and keeps the worlds where it is true. This is the update relation of Beaver & Krahmer 2001 §5.3 read as a partial function (mem_ofTrivalent), and the context update of Coppock & Beaver 2015.

The whole-state domain condition is what separates admittance from per-world filtering (the static update CCP.up). A context containing a single presupposition-failing world admits nothing, rather than silently discarding the world.

def DynamicSemantics.CCP.Partial.ofTrivalentL230–239
{W : Type u_2} (p : W → SignType) :

Built from

Used by DynamicSemantics.CCP.Partial.admits_ofTrivalent, DynamicSemantics.CCP.Partial.admits_ofTrivalent_iff_disjoint_gapExt, DynamicSemantics.CCP.Partial.ofTrivalent_get, DynamicSemantics.CCP.Partial.mem_ofTrivalent, DynamicSemantics.CCP.Partial.mem_ofTrivalent_self, DynamicSemantics.CCP.Partial.ofTrivalent_congr, DynamicSemantics.CCP.Partial.isEliminative_ofTrivalent, DynamicSemantics.CCP.Partial.admits_seq_ofTrivalent_iff, DynamicSemantics.CCP.Partial.admits_cond_ofTrivalent_iff, DynamicSemantics.CCP.Partial.admits_disj_ofTrivalent_iff, DynamicSemantics.CCP.Partial.admits_seq_ofTrivalent, DynamicSemantics.CCP.Partial.admits_cond_ofTrivalent, DynamicSemantics.CCP.Partial.admits_disj_ofTrivalent, DynamicSemantics.CCP.Partial.IsTrivalentisable, DynamicSemantics.CCP.Partial.isTrivalentisable_ofTrivalent, DynamicSemantics.CCP.Partial.ofTrivalent_injective, DynamicSemantics.CCP.Partial.ofTrivalent_one, DynamicSemantics.CCP.Partial.ofTrivalent_meetMiddle, DynamicSemantics.CCP.Partial.admits_ofTrivalent_weak, DynamicSemantics.CCP.Partial.ofTrivalent_diff, DynamicSemantics.CCP.Partial.ofTrivalent_joinWeak, DynamicSemantics.CCP.Partial.ofTrivalent_meetWeak, DynamicSemantics.CCP.Partial.ofTrivalent_neg, DynamicSemantics.CCP.Partial.ofTrivalent_cond, DynamicSemantics.CCP.Partial.ofTrivalent_joinMiddle, DynamicSemantics.CCP.Partial.ofTrivalent_joinMiddle_eq_neg_seq_neg, DynamicSemantics.CCP.Partial.disj_ofTrivalent, DynamicSemantics.CCP.Partial.ofTrivalentEquiv, DynamicSemantics.CCP.Partial.presupposes_ofProp_iff, DynamicSemantics.CCP.Partial.presupposes_ofTrivalent

Used in Semantics/Presupposition/Formula, Beaver2001, BeaverKrahmer2001, CoppockBeaver2015, Heim1983 and 4 more

L241–242
L248–249
L251–253
L255–259
L261–265

Connectives

Heim negation is s[¬φ] = s \ s[φ], defined iff s[φ] is.

def DynamicSemantics.CCP.Partial.negL269–270
{P : Type u_1} (φ : Partial P) :
  • φ.neg s = Part.map (fun (x : Set P) => s \ x) (φ s)

Built from

Used by DynamicSemantics.CCP.Partial.neg_eq_diff, DynamicSemantics.CCP.Partial.cond_eq_neg_seq_neg, DynamicSemantics.CCP.Partial.isEliminative_neg, DynamicSemantics.CCP.Partial.admits_neg, DynamicSemantics.CCP.Partial.ofTrivalent_neg, DynamicSemantics.CCP.Partial.ofTrivalent_joinMiddle_eq_neg_seq_neg, DynamicSemantics.CCP.Partial.disj_ofTrivalent, DynamicSemantics.CCP.Partial.IsTrivalentisable.neg, DynamicSemantics.PartialUpdate.Presupposes.neg

Used in Semantics/Dynamic/FileChange, Semantics/Presupposition/Formula, Beaver2001, Heim1983, Heim1992 and 2 more

The Heim conditional is s[if φ, ψ] = s \ (s[φ] \ s[φ][ψ]), defined iff s[φ] and s[φ][ψ] are.

def DynamicSemantics.CCP.Partial.condL272–275
{P : Type u_1} (φ ψ : Partial P) :
  • φ.cond ψ s = (φ s).bind fun (sφ : Set P) => Part.map (fun (sφψ : Set P) => s \ (sφ \ sφψ)) (ψ sφ)

Built from

Used by DynamicSemantics.CCP.Partial.cond_eq_diff, DynamicSemantics.CCP.Partial.cond_eq_neg_seq_neg, DynamicSemantics.CCP.Partial.isEliminative_cond, DynamicSemantics.CCP.Partial.admits_cond, DynamicSemantics.CCP.Partial.admits_cond_ofTrivalent_iff, DynamicSemantics.CCP.Partial.admits_cond_ofTrivalent, DynamicSemantics.CCP.Partial.ofTrivalent_cond, DynamicSemantics.CCP.Partial.IsTrivalentisable.cond, DynamicSemantics.PartialUpdate.Presupposes.cond_left, DynamicSemantics.PartialUpdate.Presupposes.seq_right, DynamicSemantics.PartialUpdate.Presupposes.cond_right

Used in Semantics/Presupposition/Formula, Beaver2001

Disjunction, after Beaver 2001, is s[φ ∨ ψ] = s[φ] ∪ (s \ s[φ])[ψ], evaluating its second disjunct in the ¬φ local context.

def DynamicSemantics.CCP.Partial.disjL277–280
{P : Type u_1} (φ ψ : Partial P) :
  • φ.disj ψ s = (φ s).bind fun (sφ : Set P) => Part.map (fun (sψ : Set P) => sφ ∪ sψ) (ψ (s \ sφ))

Built from

Used by DynamicSemantics.CCP.Partial.admits_disj, DynamicSemantics.CCP.Partial.admits_disj_ofTrivalent_iff, DynamicSemantics.CCP.Partial.admits_disj_ofTrivalent, DynamicSemantics.CCP.Partial.ofTrivalent_joinMiddle, DynamicSemantics.CCP.Partial.disj_ofTrivalent, DynamicSemantics.CCP.Partial.IsTrivalentisable.disj

Used in Semantics/Presupposition/Formula, WangDavidson2026, Yagi2025

The difference of updates is s[φ \ ψ] = s[φ] \ s[ψ], defined iff both updates are (George 2014, Definition 7).

def DynamicSemantics.CCP.Partial.diffL282–284
{P : Type u_1} (φ ψ : Partial P) :
  • φ.diff ψ s = φ s \ ψ s

Built from

Used by DynamicSemantics.CCP.Partial.admits_diff, DynamicSemantics.CCP.Partial.neg_eq_diff, DynamicSemantics.CCP.Partial.cond_eq_diff, DynamicSemantics.CCP.Partial.ofTrivalent_diff, DynamicSemantics.CCP.Partial.IsTrivalentisable.diff

L303–305
L307–312
L314–318

Eliminativity

L329–332

Local contexts

The connectives evaluate their second argument in Karttunen 1974's local context (Presupposition.Connective.localContext): conjunction and the conditional in the context updated with the first argument, disjunction in the context updated with its negation.

Filtering connectives, derived

Under ofTrivalent, the admittance conditions of the dynamic connectives are exactly the definedness conditions of the filtering connectives, Peters' Middle Kleene connectives: both are satisfaction in the local contexts (Presupposition.subset_support_meetMiddle_iff and its siblings), so Karttunen filtering is the composition law of partial updates, not a stipulation.

Dynamic disjunction admits s iff the Middle Kleene disjunction is defined throughout it, the ¬φ local context being Karttunen's negative-antecedent filtering.

theorem DynamicSemantics.CCP.Partial.admits_disj_ofTrivalentL395–400
{W : Type u_2} (p q : W → SignType) (s : Set W) :
PartialUpdate.Admits ((ofTrivalent p).disj (ofTrivalent q)) s ↔ s ⊆ Function.support fun (w : W) => (p w).joinMiddle (q w)

Built from , ,

The update isomorphism

George 2014's Proposition 1: the update map is injective (Remark 1) and carries the constant truth, Peters' conjunction and the Weak Kleene difference meetWeak p (-q), disjunction and conjunction to the null update, sequencing, difference, union and intersection. The trivalentisable updates are therefore closed under these operations (Corollary 1), and reading Heim's connectives off their isomorphic images shows that they are Peters' (footnote 15).

The trivalentisable updates contain the null update and are closed under the operations of the toolbox (George 2014, Corollary 1) and Heim's connectives (Proposition 2).

An update is trivalentisable when it is the update of a trivalent proposition (George 2014, Definition 11).

def DynamicSemantics.CCP.Partial.IsTrivalentisableL410–412
{W : Type u_2} (φ : Partial W) :

Built from ,

Used by DynamicSemantics.CCP.Partial.isTrivalentisable_ofTrivalent, DynamicSemantics.CCP.Partial.isTrivalentisable_id, DynamicSemantics.CCP.Partial.IsTrivalentisable.seq, DynamicSemantics.CCP.Partial.IsTrivalentisable.diff, DynamicSemantics.CCP.Partial.IsTrivalentisable.union, DynamicSemantics.CCP.Partial.IsTrivalentisable.inter, DynamicSemantics.CCP.Partial.IsTrivalentisable.neg, DynamicSemantics.CCP.Partial.IsTrivalentisable.cond, DynamicSemantics.CCP.Partial.IsTrivalentisable.disj

L414–415
L446–453
L542–547
L560

Presupposition

Projection

Negation and the first argument of the conjunction and the conditional pass a presupposition on unchanged; the second argument passes it on conditionalised on the first.

L620
L622–623
L630–632