Documentation

Pdl.Flip

Flipping a tableau (for section 7) #

Like the paper, we only prove interpolation for clusters with a loaded formulas on the right side. For the case where the loaded formula is on the left, we flip the tableau left-to-right.

The lemmas here then allow us to prove clusterInterpolation from clusterInterpolation_right.

def Olf.flip :
OlfOlf
Equations
Instances For
    @[simp]
    theorem Olf.flip_inj {O1 O2 : Olf} :
    O1.flip = O2.flip O1 = O2
    @[simp]
    theorem Olf.flip_flip {O : Olf} :
    O.flip.flip = O
    Equations
    Instances For
      @[simp]
      @[simp]
      @[simp]
      theorem Sequent.flip_flip {X : Sequent} :
      X.flip.flip = X
      theorem Sequent.flip_eq_off {X Y : Sequent} :
      (X.flip = Y) = (X = Y.flip)
      @[simp]
      @[simp]
      theorem basic_flip {X : Sequent} :
      theorem nrep_flip {Hist : History} {X : Sequent} (nrep : ¬rep Hist X) :
      def LocalRule.flip {Lcond Rcond : List Formula} {Ocond : Olf} {ress : List Sequent} (lr : LocalRule (Lcond, Rcond, Ocond) ress) :
      LocalRule (Rcond, Lcond, Ocond.flip) (List.map Sequent.flip ress)
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem LocalRule.flip_flip {Lcond Rcond : List Formula} {Ocond : Olf} {ress : List Sequent} (lr : LocalRule (Lcond, Rcond, Ocond) ress) :
        lr.flip.flip = lr

        Note: is it possible and useful to rewrite this in more term and less tactic mode?

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Equations
          Instances For
            theorem LocalTableau.flip_flip {X : Sequent} {lt : LocalTableau X} :
            lt.flip.flip = lt
            theorem LocalTableau.flip_inj {X : Sequent} {lt : LocalTableau X} :
            lt.flip.flip = lt
            def PdlRule.flip {X Y : Sequent} (r : PdlRule X Y) :
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem PdlRule.flip_flip {X Y : Sequent} (r : PdlRule X Y) :
              r.flip.flip = r
              theorem LoadedPathRepeat.ext {Hist : History} {X : Sequent} (lprA lprB : LoadedPathRepeat Hist X) :
              lprA = lprBlprA = lprB
              theorem LoadedPathRepeat.flip_flip {Hist : History} {X : Sequent} (lpr : LoadedPathRepeat Hist X) :
              lpr.flip.flip = lpr
              def Tableau.flip {Hist : History} {X : Sequent} :

              (┛ಠ_ಠ)┛彡┻━┻

              Equations
              Instances For
                @[simp]
                @[simp]
                theorem Tableau.flip_flip {Hist : History} {X : Sequent} {tab : Tableau Hist X} :
                tab.flip.flip = tab
                def PathIn.flip {Hist : History} {X : Sequent} {tab : Tableau Hist X} :
                PathIn tabPathIn tab.flip
                Equations
                Instances For
                  theorem PathIn_helper {HistA : History} {XA : Sequent} {HistB : History} {XB : Sequent} {tabA : Tableau HistA XA} {tabB : Tableau HistB XB} (hHist : HistA = HistB) (hX : XA = XB) :
                  tabA = tabBPathIn tabA = PathIn tabB
                  @[simp]
                  theorem PathIn_type_flip_flip {Hist : History} {X : Sequent} {tab : Tableau Hist X} :
                  theorem PathIn.nodeAt_flip {Hist : History} {X : Sequent} {tab : Tableau Hist X} {e : PathIn tab} :