Progressive Aspect and Causal Structure #
The progressive picks out type-level causal processes rather than token-level completed events. This module formalizes the distinction using V2 SEMs, following [NBS24]'s reframing of the imperfective paradox through causal models.
Type-Level vs Token-Level #
[BS26b]: SEM models distinguish two levels:
- Type-level: General causal structure (graph + mechanisms).
- Token-level: A specific causal trajectory completed in the actual world.
The Imperfective Paradox #
"Mary was opening the door" (progressive) vs "Mary opened the door" (perfective). The progressive entails the process is underway but NOT that it completed. "Mary was opening the door (when it got stuck)" is coherent — type-level process in progress, token-level result never obtained.
V2 substrate #
CausalProcess V is polymorphic over the vertex type. progressiveTrue
checks type-level sufficiency (BoolSEM.causallySufficient);
perfectiveTrue adds token-level but-for completion
(CCSelection.completesForEffect).
A causal process for telic predicates, parameterized over a vertex type V.
Bundles a BoolSEM V (the type-level causal model), an explicit
vertex list (proof-side only: feeds developDetOn computations in
decide-based proofs), the initiating action vertex, the result
vertex, and any enabling-condition valuation.
- M : BoolSEM V
The type-level causal model.
- vertexList : List V
Topologically-ordered vertex list. Proof-side only: not consumed by the semantic predicates, but useful for
developDetOn-baseddecideproofs about concrete processes. - initiator : V
The initiating action vertex.
- result : V
The result-state vertex.
- enablingConditions : Valuation fun (x : V) => Bool
Background enabling conditions (default: empty).
Instances For
Type-level sufficiency: the causal trajectory from initiator to result exists. The progressive asserts this — no commitment to the result actually obtaining in the actual world.
Equations
- proc.typeLevelHolds = proc.M.causallySufficient proc.enablingConditions proc.initiator proc.result
Instances For
Equations
- proc.instDecidableTypeLevelHolds = Classical.dec proc.typeLevelHolds
Progressive semantics: type-level process underway, completion open.
Equations
- proc.progressiveTrue = proc.typeLevelHolds
Instances For
Equations
- proc.instDecidableProgressiveTrue = Classical.dec proc.progressiveTrue
But-for completion test (CCSelection.completesForEffect): cause
being true → effect; cause being false → ¬ effect.
Equations
- proc.completesForEffect = Causation.CCSelection.completesForEffect proc.M proc.enablingConditions proc.initiator true false proc.result true
Instances For
Equations
- proc.instDecidableCompletesForEffect = Classical.dec proc.completesForEffect
Perfective semantics: token-level causation completed.
Holds when the causal chain ran to completion AND the initiator was necessary (removing it would prevent the result). This captures "Mary opened the door."
Equations
- proc.perfectiveTrue = proc.completesForEffect
Instances For
Equations
- proc.instDecidablePerfectiveTrue = Classical.dec proc.perfectiveTrue
Example: "Mary was opening the door" / "Mary opened the door." Simple model: Mary's action → door opens.
Vertex type for the door-opening example.
Instances For
Equations
- Causation.Progressive.instDecidableEqMaryVar 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
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Door-opening graph: doorOpen ← action.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Door-opening SEM: doorOpen := action.
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.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The progressive is true: Mary's action is type-level sufficient.
The perfective is true: Mary's action completed the process.
Perfective entails progressive (for the same process).
Witness for progressive ∧ ¬ perfective: an overdetermination model
where the type-level process exists but the actual outcome would
obtain regardless of the initiator.
Equations
- Causation.Progressive.instDecidableEqOdVar 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
- Causation.Progressive.instReprOdVar = { reprPrec := Causation.Progressive.instReprOdVar.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
R := A ∨ B (disjunctive overdetermination).
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.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Progressive holds for the overdetermination witness.
Perfective FAILS for the overdetermination witness — even with
initiator = false, the backup B in enablingConditions produces
the result, so the but-for half of completesForEffect fails.
Imperfective paradox: progressive does NOT entail perfective. Witnessed by the overdetermination scenario.
[Dow79]: the progressive is true iff the outcome holds in all inertia worlds (normal continuations). The causal model account refines this: "normal continuation" means "the SEM develops the initiator into the result" — i.e., type-level sufficiency.
A causally grounded telic event: bridges CausalProcess (causal
explanation) with SubeventPhases (temporal realization).
[NBS24]: telic predicates encode structured causal models. The activity phase corresponds to the initiating action; the result phase corresponds to the effect variable. The causal model explains WHY the activity leads to the result: the initiator is type-level sufficient.
- process : CausalProcess V
The causal process underlying the event
IsDAG instance for process.M.graph (carried explicitly).
- detInst : SEM.IsDeterministic self.process.M
IsDeterministic instance for proc.M (carried explicitly).
- phases : Semantics.Aspect.SubeventStructure.SubeventPhases Time
The temporal phases: activity and result with ordering
- causallyViable : self.process.typeLevelHolds
The causal trajectory is viable: initiator is type-level sufficient.