Documentation

Pdl.PartInterpolation

Interpolants for Partitions (big part of Section 7) #

Joint vocabulary #

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) :

    Partition Interpolants #

    This is like Olf.voc but without the ⊕ inside.

    Equations
    Instances For
      Equations
      Instances For

        Interpolants for local rules #

        theorem LoadRule_voc {χ : LoadFormula} {ress : List (List Formula × Option NegLoadFormula)} (lr : LoadRule (~'χ) ress) :
        lfovoc ress χ.voc
        theorem localRule_does_not_increase_vocab_L {Cond : Sequent} {B : List Sequent} (rule : LocalRule Cond B) (res : Sequent) :
        res Bres.left.fvoc Cond.left.fvoc
        theorem localRule_does_not_increase_vocab_R {Cond : Sequent} {B : List Sequent} (rule : LocalRule Cond B) (res : Sequent) :
        res Bres.right.fvoc Cond.right.fvoc
        theorem localRuleApp_does_not_increase_jvoc {X : Sequent} {C : List Sequent} (ruleA : LocalRuleApp X C) (Y : Sequent) :
        Y Cjvoc Y jvoc X
        def localInterpolantStep (L R : List Formula) (o : Olf) (C : List Sequent) (ruleA : LocalRuleApp (L, R, o) C) (subθs : (c : Sequent) → c CPartInterpolant c) :

        Maehara's method for single-step local rule applications. This covers easy cases without any loaded path repeats. We do not use localRuleTruth to prove this, but the more specific lemmas oneSidedL_sat_down and oneSidedL_sat_down.

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

          Interpolants for proper clusters #

          def exitsOf {Hist : History} {L R : List Formula} {nlf : NegLoadFormula NegLoadFormula} (tab : Tableau Hist (L, R, some nlf)) :
          List (PathIn tab)

          The exits of a cluster: (C \ C+).

          Equations
          Instances For
            def PathIn.children {a✝ : History} {a✝¹ : Sequent} {tab : Tableau a✝ a✝¹} (p : PathIn tab) :
            List (PathIn tab)
            Equations
            Instances For
              def plus_exits {X : Sequent} {tab : Tableau [] X} (C : List (PathIn tab)) :
              List (PathIn tab)

              C+

              Equations
              Instances For
                def clusterInterpolation_right {Hist : History} {L R : List Formula} {nlf : NegLoadFormula} (tab : Tableau Hist (L, R, some (Sum.inr nlf))) (exitIPs : (e : PathIn tab) → e exitsOf tabPartInterpolant (nodeAt e)) :

                W.l.o.g version of clusterInterpolation.

                Equations
                Instances For
                  def clusterInterpolation {Hist : History} {L R : List Formula} {snlf : NegLoadFormula NegLoadFormula} (tab : Tableau Hist (L, R, some snlf)) (exitIPs : (e : PathIn tab) → e exitsOf tabPartInterpolant (nodeAt e)) :

                  Given a tableau where the root is loaded, and exit interpolants, interpolate the root.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    def tabToInt {X : Sequent} (tab : Tableau [] X) :
                    Equations
                    Instances For