A bilateral denotation: positive and negative update functions.
In bilateral semantics, a sentence φ denotes a pair of update functions:
positive: s[φ]⁺ - the result of asserting φ in state snegative: s[φ]⁻ - the result of denying φ in state s
Standard dynamic semantics only has positive updates. The negative dimension is what enables DNE and proper treatment of cross-disjunct anaphora.
Positive update: result of asserting the sentence
Negative update: result of denying the sentence
Instances For
Atomic proposition: lift a classical proposition to bilateral form.
For an atomic proposition p:
- s[p]⁺ = { w ∈ s | p(w) } (keep worlds where p holds)
- s[p]⁻ = { w ∈ s | ¬p(w) } (keep worlds where p fails)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Atomic positive update is eliminative.
Atomic negative update is eliminative.
Negation: swap positive and negative updates.
This is the key insight of bilateral semantics. Negation doesn't "push in" - it simply swaps which update is positive and which is negative.
s[¬φ]⁺ = s[φ]⁻ s[¬φ]⁻ = s[φ]⁺
Instances For
Notation for negation
Equations
- One or more equations did not get rendered due to their size.
Instances For
Double negation is identity (DNE).
DNE for positive updates
DNE for negative updates
Negation is involutive
Unknown update: possibilities in s that subsist in neither the positive nor the negative update.
This is the dynamic analog of the third truth value (#) in Strong Kleene logic. For atomic propositions, the unknown update is always empty. For existential statements, it captures possibilities where variable definedness introduces a gap.
Equation (53) of @cite{elliott-sudo-2025}.
Equations
- φ.unknownUpdate s = {p : Semantics.Dynamic.Core.Possibility W E | p ∈ s ∧ ¬p ∈ φ.positive s ∧ ¬p ∈ φ.negative s}
Instances For
The unknown update of a negation equals the unknown update of the original.
For atomic propositions, the unknown update is empty.
Assertability condition: φ is assertable at context c iff the unknown update is empty — every possibility is accounted for by either the positive or negative update.
Definition (54) of @cite{elliott-sudo-2025}.
Equations
- φ.assertable c = (φ.unknownUpdate c = ∅)
Instances For
Every possibility in s is either verified, falsified, or unknown. This is the partition property of the Strong Kleene truth table.
Assertability implies the positive and negative updates cover the state.
Conjunction: sequence positive updates, combine negative updates following the Strong Kleene truth table.
For conjunction φ ∧ ψ:
- s[φ ∧ ψ]⁺ = s[φ]⁺[ψ]⁺ (the (1,1) cell: both verified)
- s[φ ∧ ψ]⁻ = s[φ]⁻ (the (0,*) row: φ falsified) ∪ s[φ]⁺[ψ]⁻ (the (1,0) cell: φ verified, ψ falsified) ∪ s[φ]?[ψ]⁻ (the (#,0) cell: φ unknown, ψ falsified)
Equation (61) of @cite{elliott-sudo-2025}.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Notation for conjunction
Equations
- One or more equations did not get rendered due to their size.
Instances For
Standard disjunction: dynamic Strong Kleene semantics.
For disjunction φ ∨ ψ, the positive update covers two verification routes:
- Verification via φ: s[φ]⁺ (φ is true, ψ is anything)
- Verification via ψ: s[φ]⁻[ψ]⁺ ∪ s[φ]?[ψ]⁺ (φ is false or unknown, ψ is true)
The negative update is sequential: s[φ ∨ ψ]⁻ = s[φ]⁻[ψ]⁻ (both must be denied in sequence, passing state dynamically).
The dynamic state-passing in the positive update is what makes bathroom disjunctions work: s[¬∃xP(x)]⁻[Q(x)]⁺ = s[∃xP(x)]⁺[Q(x)]⁺ (by DNE), introducing the discourse referent x for cross-disjunct anaphora.
Equations (64)/(67) of @cite{elliott-sudo-2025}.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Notation for disjunction
Equations
- One or more equations did not get rendered due to their size.
Instances For
Existential quantification: introduce a discourse referent.
For ∃x.φ:
- s[∃x.φ]⁺ = s[x:=?][φ]⁺ (introduce x, then assert φ)
- s[∃x.φ]⁻ = { p ∈ s | ∀e, p[x↦e] ∉ s[x:=?][φ]⁺ } (no witness makes φ true)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Existential with full domain
Equations
- One or more equations did not get rendered due to their size.
Instances For
Universal quantification: ∀x.φ = ¬∃x.¬φ
In bilateral semantics, universal quantification is defined via de Morgan duality. This ensures proper interaction with negation.
Equations
- Semantics.Dynamic.Core.BilateralDen.forall_ x domain φ = ~(Semantics.Dynamic.Core.BilateralDen.exists_ x domain ~φ)
Instances For
Bilateral support: state s supports φ iff positive update is non-empty and s subsists in s[φ]⁺.
Equations
- Semantics.Dynamic.Core.BilateralDen.supports s φ = ((φ.positive s).consistent ∧ s ⪯ φ.positive s)
Instances For
Bilateral entailment: φ entails ψ iff for all consistent states s, s[φ]⁺ supports ψ.
Equations
- (φ ⊨ᵇ ψ) = ∀ (s : Semantics.Dynamic.Core.InfoState W E), (φ.positive s).consistent → Semantics.Dynamic.Core.BilateralDen.supports (φ.positive s) ψ
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Egli's theorem: ∃x.φ ∧ ψ ⊨ ∃x[φ ∧ ψ]
When an existential takes wide scope over conjunction, the variable it introduces is accessible in the second conjunct. This is the key property for cross-sentential anaphora.
In bilateral semantics, this follows from the sequencing of updates.
Create bilateral from predicate over entities.
The predicate is Prop-valued (with per-point Decidable), following the
project-wide migration of propositional positions from Bool to Prop.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Create bilateral from binary predicate.
Equations
- One or more equations did not get rendered due to their size.
Instances For
pred1 positive update is eliminative.
pred1 negative update is eliminative.
pred2 positive update is eliminative.
pred2 negative update is eliminative.
Unilateral denotation: single update function
Equations
Instances For
Construct bilateral from pair
Equations
- Semantics.Dynamic.Core.BilateralDen.ofPair p = { positive := p.fst, negative := p.snd }
Instances For
Negation = swap on pairs
DNE follows from swap ∘ swap = id
Projection: bilateral → unilateral (forgets negative)
Equations
- φ.toUnilateral = φ.positive
Instances For
Equations
- Semantics.Dynamic.Core.BilateralDen.instInvolutiveNeg = { neg := Semantics.Dynamic.Core.BilateralDen.neg, neg_neg := ⋯ }
BUS's BilateralDen is itself a paraconsistent bilateral logic
(Core.Logic.Bilateral.IsBilateral): the BilateralDen value IS the
formula; positive and negative are the field projections; neg
swaps them by definition. Both axioms reduce to rfl.
Pointwise partial order on bilateral denotations: φ ≤ ψ iff both
φ.positive s ⊆ ψ.positive s and φ.negative s ⊆ ψ.negative s for all s.
Equations
- One or more equations did not get rendered due to their size.
Negation is monotone: swapping dimensions preserves the pointwise order.
~φ ≤ ~ψ ↔ φ ≤ ψ because the pointwise order checks both components
independently, and swap just rearranges them.
Negation reflects and preserves order: ~φ ≤ ~ψ ↔ φ ≤ ψ.