Documentation

Pdl.Sequent

Sequents #

Optional loaded formulas (Olfs) #

@[reducible, inline]
abbrev Olf :

In nodes we optionally have a negated loaded formula on the left or right.

Equations
Instances For
    def Olf.voc :
    Equations
    Instances For
      Equations
      Instances For
        @[simp]
        theorem Olf.L_none :
        @[simp]
        theorem Olf.L_inr {lf : NegLoadFormula} :
        L (some (Sum.inr lf)) = []
        @[simp]
        theorem Olf.L_inl {lf : NegLoadFormula} :
        L (some (Sum.inl lf)) = [~lf.1.unload]
        Equations
        Instances For
          @[simp]
          theorem Olf.R_none :
          @[simp]
          theorem Olf.R_inl {lf : NegLoadFormula} :
          R (some (Sum.inl lf)) = []
          @[simp]
          theorem Olf.R_inr {lf : NegLoadFormula} :
          R (some (Sum.inr lf)) = [~lf.1.unload]
          Equations
          @[simp]
          theorem Option.some_subseteq {α : Type u_1} {x : α} {O : Option α} :
          some x O some x = O
          instance Option.insHasSdiff {α : Type u_1} [DecidableEq α] :

          Instance that is used to say (O : Olf) \ (O' : Olf).

          Equations
          • One or more equations did not get rendered due to their size.
          @[simp]
          theorem Option.insHasSdiff_none {α : Type u_1} {o : Option α} [DecidableEq α] :
          @[simp]
          theorem Option.insHasSdiff_remove_none_cancel {α : Type u_1} {o : Option α} [DecidableEq α] :
          o \ none = o
          @[simp]
          theorem Option.insHasSdiff_remove_sem_eq_none {α : Type u_1} {x : α} [DecidableEq α] :
          def Option.overwrite {α : Type u_1} :
          Option αOption αOption α
          Equations
          Instances For
            def Olf.change (oldO Ocond newO : Olf) :
            Equations
            Instances For
              @[simp]
              theorem Olf.change_old_none_none {oldO : Olf} :
              oldO.change none none = oldO
              @[simp]
              theorem Olf.change_none_none_new {newO : Olf} :
              change none none newO = newO
              @[simp]
              theorem Olf.change_some {oldO whatever : Olf} {wnlf : NegLoadFormula NegLoadFormula} :
              oldO.change whatever (some wnlf) = some wnlf
              @[simp]
              theorem Olf.change_some_some_eq { : NegLoadFormula NegLoadFormula} {Onew : Olf} :
              change (some ) (some ) Onew = Onew

              Sequents and their (multi)set quality #

              A tableau node is labelled with two lists of formulas and an Olf. Each formula is placed on the left or right and up to one formula may be loaded.

              Equations
              Instances For

                Two Sequents are set-equal when their components are finset-equal. That is, we do not care about the order of the lists, but we do care about the side of the formula and what formual is loaded. Hint: use List.toFinset.ext_iff with this.

                Equations
                Instances For
                  instance Sequent.instDecidableSetEqTo (x✝ x✝¹ : Sequent) :
                  Decidable (x✝.setEqTo x✝¹)
                  Equations
                  Equations
                  • One or more equations did not get rendered due to their size.
                  @[reducible, inline]
                  abbrev Seqt :

                  Yes, it's a pun. A Sequent modulo Sequent.setEqTo.

                  Equations
                  Instances For

                    Needed to make List.toFinset work for List Seqt. Strange that this is not inferred from instDecidableRelSequentSetEqTo automatically.

                    Equations

                    Two Sequents are multiset-equal when their components are multiset-equal. That is, we do not care about the order of the lists, but we do care about the side on which the formula is, whether it is loaded or not, and how often it occurs.

                    Equations
                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem Sequent.setEqTo_trans (X Y Z : Sequent) :
                      X.setEqTo YY.setEqTo ZX.setEqTo Z

                      Components and sides of sequents #

                      Equations
                      Instances For
                        Equations
                        Instances For
                          Equations
                          Instances For
                            @[simp]
                            theorem Sequent.L_eq {L R : List Formula} {O : Olf} :
                            @[simp]
                            theorem Sequent.R_eq {L R : List Formula} {O : Olf} :
                            @[simp]
                            theorem Sequent.O_eq {L R : List Formula} {O : Olf} :
                            Equations
                            Instances For
                              Equations
                              Instances For
                                Equations
                                Instances For
                                  @[simp]
                                  theorem Sequent.left_eq {L R : List Formula} {O : Olf} :
                                  left (L, R, O) = L ++ O.L
                                  @[simp]
                                  def Sequent.right_eq {L R : List Formula} {O : Olf} :
                                  right (L, R, O) = R ++ O.R
                                  Equations
                                  • =
                                  Instances For
                                    @[simp]
                                    def Sequent.bothSides_eq {L R : List Formula} {O : Olf} :
                                    bothSides (L, R, O) = L ++ O.L ++ R ++ O.R
                                    Equations
                                    • =
                                    Instances For

                                      (Joint) vocabulary of sequents #

                                      Like Olf.voc but without the ⊕ inside.

                                      Equations
                                      Instances For
                                        Equations
                                        Instances For
                                          def jvoc (X : Sequent) :

                                          The joint vocabulary occurring on both the left and the right side.

                                          Equations
                                          Instances For
                                            theorem jvoc_sub_of_voc_sub {Y X : Sequent} (hl : Y.left.fvoc X.left.fvoc) (hr : Y.right.fvoc X.right.fvoc) :

                                            Formulas as elements of sequents #

                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Equations
                                            Instances For

                                              Closed, basic, loaded and free sequents #

                                              A sequent is closed iff it contains or contains a formula and its negation.

                                              Equations
                                              Instances For

                                                A sequent is basic iff it only contains basic formulas and is not closed.

                                                Equations
                                                Instances For
                                                  instance Fintype.decidableExistsConjFintype {α : Type u_1} {p q : αProp} [DecidablePred q] [Fintype (Subtype p)] :
                                                  Decidable (∃ (a : α), p a q a)

                                                  A variant of Fintype.decidableExistsFintype, used by instDecidableClosed.

                                                  Equations
                                                  Equations
                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Equations
                                                  Instances For
                                                    theorem Sequent.mem_iff_of_setEqTo {X Y : Sequent} (h : X.setEqTo Y) (f : Formula) :
                                                    f X f Y

                                                    Set-equal sequents have the same members.

                                                    Set-equal sequents are closed together.

                                                    Set-equal sequents are basic together.

                                                    Semantics of sequents #

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Equations
                                                    theorem vDash_setEqTo_iff {W : Type} {X Y : Sequent} (h : X.setEqTo Y) (M : KripkeModel W) (w : W) :
                                                    (M, w) X (M, w) Y
                                                    theorem vDash_multisetEqTo_iff {W : Type} {X Y : Sequent} (h : X.multisetEqTo Y) (M : KripkeModel W) (w : W) :
                                                    (M, w) X (M, w) Y

                                                    Removing loaded formulas from sequents #

                                                    @[simp]
                                                    theorem Sequent.isFree_then_without_isFree (LRO : Sequent) :
                                                    LRO.isFree = true∀ (anf : AnyNegFormula), (LRO.without anf).isFree = true
                                                    inductive Side :
                                                    Instances For
                                                      def sideOf {α : Type u_1} :
                                                      α αSide
                                                      Equations
                                                      Instances For
                                                        Equations
                                                        Instances For
                                                          theorem AnyNegFormula.in_side_of_setEqTo {side : Side} {X Y : Sequent} (h : X.setEqTo Y) {anf : AnyNegFormula} :
                                                          anf.in_side side X anf.in_side side Y
                                                          theorem AnyNegFormula.in_side_of_multisetEqTo {side : Side} {X Y : Sequent} (h : X.multisetEqTo Y) {anf : AnyNegFormula} :
                                                          anf.in_side side X anf.in_side side Y
                                                          theorem Sequent.isLoaded_of_negAnyFormula_loaded {α : Program} {ξ : AnyFormula} {side : Side} {X : Sequent} (negLoad_in : (~''(AnyFormula.loaded (αξ))).in_side side X) :

                                                          Whatever formulas #

                                                          A type to describe all formulas that can occur in a sequent, without losing information about whether they are loaded or not.

                                                          Unfortunately our AnyFormula type does not include negated loaded formulas, so this is yet another type to describe "whatever formula" can be in a sequent, without losing information.

                                                          Instances For
                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            Instances For

                                                              A normal formula is in X.wForms iff it is on the left or on the right of X. (Note that the Olf part of X only contributes negated loaded formulas.)

                                                              In a basic sequent all free diamonds are atomic.

                                                              A negated loaded formula is in X.wForms iff it is the loaded formula of X.

                                                              In a basic sequent all loaded diamonds are atomic.