Documentation

Linglib.Core.Logic.Trivalent.Prop3

Trivalent propositions #

Prop3 W is a proposition valued in Trivalent: at each world it is true, false, or undefined. Its worlds split into the positive extension, the negative extension, and the extension gap; Prop3.metaAssert β€” the Beaver-Krahmer π’œ operator lifted pointwise β€” collapses the gap into the negative extension. As a Pi type, Prop3 W inherits its lattice structure pointwise (βŠ“/βŠ” via Pi.instLattice).

References #

[BK01] [Kri16]

@[reducible, inline]
abbrev Trivalent.Prop3 (W : Type u_1) :
Type u_1

Three-valued propositions: functions from worlds to Trivalent.

Equations
Instances For

    Prop3 W := W β†’ Trivalent is a Pi type: Lattice (W β†’ Trivalent) auto-derives from Pi.instLattice, so (p βŠ” q) w = p w βŠ” q w and (p βŠ“ q) w = p w βŠ“ q w come for free from Pi.sup_apply/Pi.inf_apply β€” use βŠ”/βŠ“ directly rather than bespoke wrappers. The only Trivalent-specific operation needing a pointwise lift is metaAssert: there is no Pi analogue of a unary collapsing operator.

    def Trivalent.Prop3.metaAssert {W : Type u_1} (p : Prop3 W) :

    Pointwise meta-assertion (Beaver-Krahmer π’œ operator).

    Equations
    Instances For
      @[simp]
      theorem Trivalent.Prop3.metaAssert_apply {W : Type u_1} (p : Prop3 W) (w : W) :

      Extensions #

      def Trivalent.Prop3.posExt {W : Type u_1} (p : Prop3 W) :
      Set W

      Positive extension: worlds where the proposition is true.

      Equations
      Instances For
        def Trivalent.Prop3.negExt {W : Type u_1} (p : Prop3 W) :
        Set W

        Negative extension: worlds where the proposition is false.

        Equations
        Instances For
          def Trivalent.Prop3.gapExt {W : Type u_1} (p : Prop3 W) :
          Set W

          Extension gap: worlds where the proposition is neither true nor false.

          Equations
          Instances For
            @[simp]
            theorem Trivalent.Prop3.mem_posExt {W : Type u_1} {p : Prop3 W} {w : W} :
            w ∈ p.posExt ↔ p w = true
            @[simp]
            theorem Trivalent.Prop3.mem_negExt {W : Type u_1} {p : Prop3 W} {w : W} :
            w ∈ p.negExt ↔ p w = false
            @[simp]
            theorem Trivalent.Prop3.mem_gapExt {W : Type u_1} {p : Prop3 W} {w : W} :
            w ∈ p.gapExt ↔ p w = indet
            theorem Trivalent.Prop3.posExt_union_negExt_union_gapExt {W : Type u_1} (p : Prop3 W) :
            p.posExt βˆͺ p.negExt βˆͺ p.gapExt = Set.univ

            The three extensions cover the world space.

            theorem Trivalent.Prop3.disjoint_posExt_negExt {W : Type u_1} (p : Prop3 W) :
            Disjoint p.posExt p.negExt

            The positive and negative extensions are disjoint.

            def Trivalent.Prop3.isBivalent {W : Type u_1} (p : Prop3 W) :

            A proposition is bivalent if it takes no .indet value.

            Equations
            Instances For

              Extensions under meta-assertion #

              @[simp]
              theorem Trivalent.Prop3.negExt_metaAssert {W : Type u_1} (p : Prop3 W) :
              @[simp]
              theorem Trivalent.Prop3.gapExt_metaAssert {W : Type u_1} (p : Prop3 W) :
              p.metaAssert.gapExt = βˆ…

              Meta-assertion produces a bivalent proposition.