Documentation

Linglib.Theories.Semantics.Dynamic.Effects.Bilateral.Basic

structure Semantics.Dynamic.Core.BilateralDen (W : Type u_1) (E : Type u_2) :
Type (max u_1 u_2)

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 s
  • negative: 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 : InfoState W EInfoState W E

    Positive update: result of asserting the sentence

  • negative : InfoState W EInfoState W E

    Negative update: result of denying the sentence

Instances For
    theorem Semantics.Dynamic.Core.BilateralDen.ext {W : Type u_1} {E : Type u_2} {φ ψ : BilateralDen W E} (hp : φ.positive = ψ.positive) (hn : φ.negative = ψ.negative) :
    φ = ψ
    def Semantics.Dynamic.Core.BilateralDen.atom {W : Type u_1} {E : Type u_2} (pred : WBool) :

    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
      theorem Semantics.Dynamic.Core.BilateralDen.atom_complementary {W : Type u_1} {E : Type u_2} (pred : WBool) (s : InfoState W E) :
      (atom pred).positive s (atom pred).negative s = s

      Atomic positive and negative are complementary

      theorem Semantics.Dynamic.Core.BilateralDen.atom_disjoint {W : Type u_1} {E : Type u_2} (pred : WBool) (s : InfoState W E) :
      (atom pred).positive s (atom pred).negative s =

      Atomic positive and negative are disjoint

      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[φ]⁺

      Equations
      Instances For

        Notation for negation

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem Semantics.Dynamic.Core.BilateralDen.neg_neg {W : Type u_1} {E : Type u_2} (φ : BilateralDen W E) :
          ~~φ = φ

          Double negation is identity (DNE).

          theorem Semantics.Dynamic.Core.BilateralDen.dne_positive {W : Type u_1} {E : Type u_2} (φ : BilateralDen W E) (s : InfoState W E) :
          (~~φ).positive s = φ.positive s

          DNE for positive updates

          theorem Semantics.Dynamic.Core.BilateralDen.dne_negative {W : Type u_1} {E : Type u_2} (φ : BilateralDen W E) (s : InfoState W E) :
          (~~φ).negative s = φ.negative s

          DNE for negative updates

          Conjunction: sequence positive updates, combine negative updates.

          For conjunction φ ∧ ψ:

          • s[φ ∧ ψ]⁺ = s[φ]⁺[ψ]⁺ (sequence: first assert φ, then ψ)
          • s[φ ∧ ψ]⁻ = s[φ]⁻ ∪ (s[φ]⁺ ∩ s[ψ]⁻) (fail if φ fails OR φ succeeds but ψ fails)

          The negative update reflects: a conjunction is denied if either conjunct could be denied.

          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
              theorem Semantics.Dynamic.Core.BilateralDen.conj_assoc_positive {W : Type u_1} {E : Type u_2} (φ ψ χ : BilateralDen W E) (s : InfoState W E) :
              (φ ψ χ).positive s = (φ (ψ χ)).positive s

              Conjunction associates (for positive updates)

              Standard disjunction: choice between updates.

              For standard disjunction φ ∨ ψ:

              • s[φ ∨ ψ]⁺ = s[φ]⁺ ∪ s[ψ]⁺ (either disjunct holds)
              • s[φ ∨ ψ]⁻ = s[φ]⁻ ∩ s[ψ]⁻ (both must fail to deny)
              Equations
              Instances For

                Notation for disjunction

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem Semantics.Dynamic.Core.BilateralDen.de_morgan_disj {W : Type u_1} {E : Type u_2} (φ ψ : BilateralDen W E) (s : InfoState W E) :
                  (~(φ ψ)).positive s = φ.negative s ψ.negative s

                  De Morgan: negated disjunction swaps to conjunction of negations

                  def Semantics.Dynamic.Core.BilateralDen.exists_ {W : Type u_1} {E : Type u_2} (x : ) (domain : Set E) (φ : BilateralDen W E) :

                  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
                      def Semantics.Dynamic.Core.BilateralDen.forall_ {W : Type u_1} {E : Type u_2} (x : ) (domain : Set E) (φ : BilateralDen W E) :

                      Universal quantification: ∀x.φ = ¬∃x.¬φ

                      In bilateral semantics, universal quantification is defined via de Morgan duality. This ensures proper interaction with negation.

                      Equations
                      Instances For

                        Bilateral support: state s supports φ iff positive update is non-empty and s subsists in s[φ]⁺.

                        Equations
                        Instances For

                          Bilateral entailment: φ entails ψ iff for all consistent states s, s[φ]⁺ supports ψ.

                          Equations
                          Instances For
                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              theorem Semantics.Dynamic.Core.BilateralDen.egli {W : Type u_1} {E : Type u_2} (x : ) (domain : Set E) (φ ψ : BilateralDen W E) (s : InfoState W E) :
                              (exists_ x domain φ ψ).positive s (exists_ x domain (φ ψ)).positive s

                              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.

                              def Semantics.Dynamic.Core.BilateralDen.pred1 {W : Type u_1} {E : Type u_2} (p : EWBool) (t : ) :

                              Create bilateral from predicate over entities

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                def Semantics.Dynamic.Core.BilateralDen.pred2 {W : Type u_1} {E : Type u_2} (p : EEWBool) (t₁ t₂ : ) :

                                Create bilateral from binary predicate

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  def Semantics.Dynamic.Core.BilateralDen.UnilateralDen (W : Type u_3) (E : Type u_4) :
                                  Type (max u_4 u_3)

                                  Unilateral denotation: single update function

                                  Equations
                                  Instances For
                                    def Semantics.Dynamic.Core.BilateralDen.toPair {W : Type u_1} {E : Type u_2} (φ : BilateralDen W E) :
                                    (InfoState W EInfoState W E) × (InfoState W EInfoState W E)

                                    View bilateral as pair of updates

                                    Equations
                                    Instances For
                                      def Semantics.Dynamic.Core.BilateralDen.ofPair {W : Type u_1} {E : Type u_2} (p : (InfoState W EInfoState W E) × (InfoState W EInfoState W E)) :

                                      Construct bilateral from pair

                                      Equations
                                      Instances For
                                        theorem Semantics.Dynamic.Core.BilateralDen.toPair_ofPair {W : Type u_1} {E : Type u_2} (p : (InfoState W EInfoState W E) × (InfoState W EInfoState W E)) :

                                        Negation = swap on pairs

                                        DNE follows from swap ∘ swap = id

                                        Projection: bilateral → unilateral (forgets negative)

                                        Equations
                                        Instances For