Charlow (2025): Staged updates #
This file formalizes the lifted interpretations of [Cha25]. A dynamic substrate whose negation is externally static, [GS91a]'s DPL, is lifted into a richer type by an embedding, a retraction and a negation obeying three laws, and the lifted interpretation they determine validates double-negation elimination and is conservative over the substrate (Facts 1 and 2). Every lawful lift of one substrate factors through a canonical form, a substrate value with a parity bit (Fact 4), which the canonical lift, an update tagged with one bit, realizes exactly (Fact 3). Over DPL the file gives four lifts: [KM95]'s pairs of an update and its negation, [Got19]'s decomposition into a static closure and a dynamic tautology, whose involution law holds only on the image of the lifted interpretation, the paper's staged updates, a static proposition beside a dynamic tautology, and the canonical lift.
Implementation notes #
- The data of a lift and its laws are separate classes, after
MonadandLawfulMonad, so the decomposed lift carries the data while its involution law is refuted on the whole carrier and proved on the image. - Fact 4 is stated as factorization through the canonical form rather than as the paper's bijection between images; the corollary that lawful lifts lower alike follows from it.
- Fact 3 takes the paper's right identity for conjunction as a hypothesis.
References #
Substrates, lifts and interpretations (Definitions 3 and 4) #
A dynamic substrate, the paper's δ: a carrier with conjunction and negation.
- conj : δ → δ → δ
- neg : δ → δ
Instances
The language: atoms, bare existentials, conjunction and negation; ∃x φ abbreviates
∃x ∧ φ.
- atom {Atom : Type u_1} : Atom → Formula Atom
- exi {Atom : Type u_1} : ℕ → Formula Atom
- conj {Atom : Type u_1} : Formula Atom → Formula Atom → Formula Atom
- neg {Atom : Type u_1} : Formula Atom → Formula Atom
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Charlow2025.instReprFormula = { reprPrec := Charlow2025.instReprFormula.repr }
The laws of a lift: Emb, down ∘ up = id; Inv, the lifted negation is an involution; and
Neg, conjugating the lifted negation by the lift recovers the substrate negation.
- down_neg_up (m : δ) : Lift.down (Lift.neg (Lift.up m)) = Substrate.neg m
Instances
The substrate interpretation [·], from the primitive meanings of atoms and existentials.
Equations
- Charlow2025.interp ia ie (Charlow2025.Formula.atom a) = ia a
- Charlow2025.interp ia ie (Charlow2025.Formula.exi n) = ie n
- Charlow2025.interp ia ie (φ.conj ψ) = Charlow2025.Substrate.conj (Charlow2025.interp ia ie φ) (Charlow2025.interp ia ie ψ)
- Charlow2025.interp ia ie φ.neg = Charlow2025.Substrate.neg (Charlow2025.interp ia ie φ)
Instances For
The lifted interpretation ⟨·⟩: primitives lift, conjuncts lower, sequence and lift again,
and negation is the lifted negation.
Equations
- One or more equations did not get rendered due to their size.
- Charlow2025.liftInterp ia ie (Charlow2025.Formula.atom a) = Charlow2025.Lift.up (ia a)
- Charlow2025.liftInterp ia ie (Charlow2025.Formula.exi n) = Charlow2025.Lift.up (ie n)
- Charlow2025.liftInterp ia ie φ.neg = Charlow2025.Lift.neg (Charlow2025.liftInterp ia ie φ)
Instances For
Facts 1 and 2 #
Fact 1: a lawful lifted interpretation validates double-negation elimination.
A formula without a doubly negated subformula.
- atom {Atom : Type u_1} (a : Atom) : DoubleNegFree (Formula.atom a)
- exi {Atom : Type u_1} (n : ℕ) : DoubleNegFree (Formula.exi n)
- conj {Atom : Type u_1} {φ ψ : Formula Atom} : DoubleNegFree φ → DoubleNegFree ψ → DoubleNegFree (φ.conj ψ)
- neg_atom {Atom : Type u_1} (a : Atom) : DoubleNegFree (Formula.atom a).neg
- neg_exi {Atom : Type u_1} (n : ℕ) : DoubleNegFree (Formula.exi n).neg
- neg_conj {Atom : Type u_1} {φ ψ : Formula Atom} : DoubleNegFree φ → DoubleNegFree ψ → DoubleNegFree (φ.conj ψ).neg
Instances For
Fact 2.i: a negation-free formula's lifted meaning is the lift of its substrate meaning.
Fact 2.ii: a double-negation-free formula's lifted meaning lowers to its substrate meaning.
The canonical form and Fact 4 #
The canonical form of a formula's lifted meaning: a substrate value with a parity bit,
Sum.inl for an even and Sum.inr for an odd number of residual negations; it depends on the
substrate alone.
Equations
- One or more equations did not get rendered due to their size.
- Charlow2025.canonicalize ia ie (Charlow2025.Formula.atom a) = Sum.inl (ia a)
- Charlow2025.canonicalize ia ie (Charlow2025.Formula.exi n) = Sum.inl (ie n)
- Charlow2025.canonicalize ia ie φ.neg = (Charlow2025.canonicalize ia ie φ).swap
Instances For
A negation-free formula's canonical form is its substrate meaning, positive.
Every canonical form carries the substrate meaning of some formula.
Encoding a canonical form into a lift: a positive value lifts, a negative one lifts and is negated.
Equations
- Charlow2025.encodeCanonical Δ (Sum.inl m) = Charlow2025.Lift.up m
- Charlow2025.encodeCanonical Δ (Sum.inr m) = Charlow2025.Lift.neg (Charlow2025.Lift.up m)
Instances For
An encoded canonical form lowers to its value, negated when odd.
Flipping the parity encodes as the lifted negation.
Fact 4 as factorization: every lawful lifted interpretation is the encoding of the canonical form, which depends on the substrate alone.
Formulas with one canonical form are identified by every lawful lift.
The corollary of Fact 4: two lawful lifts of one substrate lower every formula alike.
Program disjunction and truth (Definitions 2, 5 and 6) #
A substrate with the union of two updates, the externally dynamic program disjunction.
- pdisj : δ → δ → δ
Instances
A substrate whose meanings have propositional content over indices i, the indices where
they succeed, and can be restricted to a proposition.
Instances
DPL as a substrate #
Equations
- Charlow2025.instSubstrateUpdateAssignment = { conj := SetRel.comp, neg := fun (φ : DynamicSemantics.Update (Assignment E)) => DynamicSemantics.Update.test φ.neg }
Program disjunction on DPL relations is the union of the outputs.
Equations
- Charlow2025.instProgramDisjUpdateAssignment = { pdisj := fun (φ ψ : DynamicSemantics.Update (Assignment E)) => φ ∪ ψ }
Equations
- One or more equations did not get rendered due to their size.
Instance 1: two-dimensional DPL #
[KM95]'s pairs of an update and its anti-extension, recast as a lift on the
diagonal product δ ⊙ δ: up pairs an update with its substrate negation, down forgets the
anti-extension, and the lifted negation is the product's swap ᶜ.
Equations
- One or more equations did not get rendered due to their size.
Instance 2: decomposed updates #
Equations
- One or more equations did not get rendered due to their size.
Emb over DPL: conjoining the static closure with the dynamic tautology reconstitutes the update.
Neg over DPL.
The hiccup with Inv: on the whole carrier the lifted negation is not an involution, since a bare existential is no test and its double negation is not itself.
On the image of the lifted interpretation the at-issue coordinate is a negation, hence static.
Inv on the image: the lifted negation is an involution on every lifted meaning, a static at-issue coordinate being restored by its double negation.
Instance 3: staged updates #
Equations
- One or more equations did not get rendered due to their size.
Over DPL the staged lift obeys all three laws.
Instance 4: the canonical lift and Fact 3 #
The canonical lift: an update tagged with a bit that says whether to negate it on lowering; the lifted negation toggles the bit.
- flag : Bool
- update : δ
Instances For
Fact 3, one inclusion: every lifted meaning is a tagged substrate meaning.
The paper's φ̃: every negation conjoined with a right identity one, so that no double
negation remains.
Equations
- Charlow2025.Canonical.guard one (Charlow2025.Formula.atom a) = Charlow2025.Formula.atom a
- Charlow2025.Canonical.guard one (Charlow2025.Formula.exi n) = Charlow2025.Formula.exi n
- Charlow2025.Canonical.guard one (φ.conj ψ) = (Charlow2025.Canonical.guard one φ).conj (Charlow2025.Canonical.guard one ψ)
- Charlow2025.Canonical.guard one φ.neg = (Charlow2025.Canonical.guard one φ).neg.conj one
Instances For
A guarded formula's canonical form is the formula's substrate meaning, positive.
Fact 3, the other inclusion: with a right identity for conjunction, every tagged substrate meaning is a lifted meaning, of the guarded formula or its negation.