Dynamic Predicate Logic #
The DPL substrate: meanings are relations between total assignments
(DPLRel, the paper's Definition 2), truth is having an output
(Definition 3), and ♦ closes a meaning to its test (Definition 17).
Conjunction is relational composition and the existential is random
reassignment — the two externally dynamic constants; negation,
implication, disjunction, and the universal are tests. The paper's
results about the system (scope extension, donkey equivalence, the
restricted double-negation laws, interdefinability) are proved in
Studies/GroenendijkStokhof1991.lean.
Main definitions #
DPLRelwith Definition 2's clauses:atom,conj,exists_,neg,impl,disj,forall_;close(Definition 17).trueAt,satisfactionSet,productionSet(Definitions 3, 6, 9).toDRS/ofDRS: a DPL relation is anUpdateover assignments — DPL embeds in dynamic Ty2 atS = Assignment E, each connective matching its spine combinator (conj_eq_dseq,neg_eq_test_dneg, ...).
DPL semantic type (Definition 2): ⟦φ⟧ g h means that starting from
input assignment g, the formula φ can update to output h.
Equations
- DPL.DPLRel E = ((ℕ → E) → (ℕ → E) → Prop)
Instances For
Atomic predicate (clauses 1–2): test the input without changing it.
Equations
- DPL.DPLRel.atom p g h = (g = h ∧ p g)
Instances For
Existential quantification (clause 7): random assignment at x,
then the scope — ⟦∃x φ⟧ g h iff ∃d, ⟦φ⟧ g[x↦d] h.
Equations
- DPL.DPLRel.exists_ x φ g h = ∃ (d : E), φ (fun (n : ℕ) => if n = x then d else g n) h
Instances For
Negation (clause 3): the test that no output is reachable —
⟦¬φ⟧ g h iff g = h ∧ ¬∃k, ⟦φ⟧ g k. Not DNE-valid: see
Studies/GroenendijkStokhof1991.lean.
Equations
- φ.neg g h = (g = h ∧ ¬∃ (k : ℕ → E), φ g k)
Instances For
Implication (clause 6): internally dynamic, externally static — every output of the antecedent can be extended by the consequent. The antecedent passes bindings to the consequent, giving its existentials universal force (donkey sentences).
Equations
- φ.impl ψ g h = (g = h ∧ ∀ (k : ℕ → E), φ g k → ∃ (j : ℕ → E), ψ k j)
Instances For
Universal quantification (clause 8): a test — for every value at
x, the scope can be processed. Externally static.
Equations
- DPL.DPLRel.forall_ x φ g h = (g = h ∧ ∀ (d : E), ∃ (m : ℕ → E), φ (fun (n : ℕ) => if n = x then d else g n) m)
Instances For
Semantic notions (Definitions 3, 6, 9) #
Satisfaction set (Definition 6): inputs from which φ succeeds.
Equations
- φ.satisfactionSet = {g : ℕ → E | ∃ (h : ℕ → E), φ g h}
Instances For
Production set (Definition 9): possible outputs of φ.
Equations
- φ.productionSet = {h : ℕ → E | ∃ (g : ℕ → E), φ g h}
Instances For
DPL as dynamic Ty2 #
DPL embeds directly into dynamic Ty2 at S = Assignment E: DPL
assignments are Ty2 states, DPL relations are Update meanings, and
each connective matches its spine combinator.
DPL extend is Function.update.
Equations
- DPL.extend g n e = Function.update g n e
Instances For
DPL implication is the test of dynamic implication.
DPL disjunction is the test of dynamic disjunction.
DPL closure is the test of existential closure.
DPL truth is existential closure.