Documentation

Pdl.Interpolation.ClusterRho

The region formulas and the left half of the correctness of θ_r #

This file continues the development of Pdl.ClusterItp with

theorem mem_inits_dropLast_of_prefix_ne {α : Type u_1} {z x : List α} (h : z <+: x) (hne : z x) :

A proper prefix of x is one of the addresses searched by QuasiTab.companion?.

Two semantic lemmas #

theorem evaluate_boxes_star {α : Program} {φ ψ : Formula} (h : ∀ (W : Type) (M : KripkeModel W) (v : W), evaluate M v φ(∀ (u : W), relate M α v uevaluate M u φ) evaluate M v ψ) {W : Type} {M : KripkeModel W} {w : W} (hw : evaluate M w φ) :

stepToStar in the form used in the companion case of Lemma 10.3: if φ is preserved along α and implies ψ, then φ implies [α*]ψ.

theorem QFormula.subst_congr {Var : Type} {σ τ : VarFormula} (ι : QFormula Var) :
(∀ vι.vars, σ v = τ v)subst σ ι = subst τ ι

Two substitutions that agree on the internal variables of a Q-formula give the same formula.

@[simp]
theorem QuasiTab.build_label {inC : Finset Sequent} {step : SequentList Sequent} {Hist : List Sequent} {Δ : Sequent} :
(build inC step Hist Δ).label = Δ

The label of a node built by QuasiTab.build.

@[simp]
theorem QuasiTab.build_typ {inC : Finset Sequent} {step : SequentList Sequent} {Hist : List Sequent} {Δ : Sequent} :
(build inC step Hist Δ).typ = Typ.one

Every node built by QuasiTab.build has type 1.

Definition 10.2: the region formulas #

noncomputable def LoadedCluster.rho {X : Sequent} {tab : Tableau [] X} (C : LoadedCluster tab) (x : List ) :

Def 10.2: the formula ρ_x = ⋁ { ⋀ Λ₁(t) | t ∈ R_x } for a node x of the quasi-tableau, where R_x is the region of x (Def 9.10). When there is no node at address x we return , the empty disjunction.

Equations
Instances For
    theorem LoadedCluster.rho_of_at? {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {x : List } {n : QuasiTab} (h : C.Q.at? x = some n) :
    C.rho x = (Finset.image (fun (t : FinePathIn tab) => con t.label.left.fsort) (C.regionOf n)).dis
    theorem LoadedCluster.evaluate_rho_iff {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {x : List } {W : Type} {M : KripkeModel W} {w : W} {n : QuasiTab} (h : C.Q.at? x = some n) :
    evaluate M w (C.rho x) tC.regionOf n, φt.label.left, evaluate M w φ

    ρ_x holds iff some node of the region R_x has all its left formulas true.

    theorem LoadedCluster.rho_eq_of_typ_label {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {x : List } {n m : QuasiTab} {y : List } (hx : C.Q.at? x = some n) (hy : C.Q.at? y = some m) (htyp : n.typ = m.typ) (hlab : n.label = m.label) :
    C.rho x = C.rho y

    The region, and hence ρ_x, only depends on the type and the label of the node.

    theorem LoadedCluster.rho_eq_of_regionOf {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {x : List } {n m : QuasiTab} {y : List } (hx : C.Q.at? x = some n) (hy : C.Q.at? y = some m) (h : C.regionOf n = C.regionOf m) :
    C.rho x = C.rho y

    A variant of rho_eq_of_typ_label for nodes with the same region.

    theorem LoadedCluster.regionOf_one_eq_two {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {Δ : Sequent} {next next' : List QuasiTab} :

    Nodes of type 1 and of type 2 with the same label have the same region (Def 9.10).

    Lemma 10.3: Γ₁ ⊨ θ_r #

    The proof of Lemma 10.3 in the paper goes through the claim that ρ_x ⊨ σ(ι_x) for every node x of the quasi-tableau, where σ sends the internal variable q_x to the region formula ρ_x. We call this claim LoadedCluster.RhoSat.

    def LoadedCluster.RhoSat {X : Sequent} {tab : Tableau [] X} (C : LoadedCluster tab) (θ : FinePathIn tabFormula) (x : List ) :

    The claim ρ_x ⊨ ι_x⟨σ⟩ of the proof of Lemma 10.3, where the substitution σ sends each internal variable q_z to the region formula ρ_z.

    Equations
    Instances For

      The cases of the claim #

      Each case of the leaf-to-root induction in the proof of Lemma 10.3 is a separate lemma. Where the paper uses that the child of a node of type k has type k+1 and the same label — which is part of the construction in Def 9.8 but not of the data type QuasiTab — this is an explicit hypothesis.

      theorem LoadedCluster.rhoSat_one_leaf_repeat {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {θ : FinePathIn tabFormula} {x : List } {Δ : Sequent} {c : List } (hx : C.Q.at? x = some (QuasiTab.QNode Typ.one Δ [])) (hc : C.Q.companion? x = some c) :
      C.RhoSat θ x

      Case k(x) = 1 and x a repeat: ι_x = q_{c(x)} and ρ_x = ρ_{c(x)}.

      theorem LoadedCluster.rhoSat_one_inner {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {θ : FinePathIn tabFormula} {x : List } {Δ : Sequent} {y : QuasiTab} {ys : List QuasiTab} (hx : C.Q.at? x = some (QuasiTab.QNode Typ.one Δ (y :: ys))) (hcomp : xC.Q.companions) (hy : y = QuasiTab.QNode Typ.two Δ y.children) (IH : C.RhoSat θ (x ++ [0])) :
      C.RhoSat θ x

      Case k(x) = 1 where x is neither a leaf nor a companion: ι_x = ι_y and ρ_x = ρ_y, because the unique child y has type 2 and the same label.

      Entailment from the left component of a node #

      The claim of the proof of Lemma 10.3 is often used in the equivalent form ρ_x ⊨ ι_x⟨σ⟩ iff Λ₁(t) ⊨ ι_x⟨σ⟩ for all t ∈ R_x, see rhoSat_iff.

      theorem LoadedCluster.mem_exitsWithFine_of_notMem_lambdaTwo {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {Δ : Sequent} {f : FinePathIn tab} (hf : f C.plusNodesWithFine Δ) ( : ΔC.lambdaTwo) :

      A node of C⁺ whose right component is not in Λ₂[C] is an exit node.

      theorem LoadedCluster.rhoSat_iff {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {θ : FinePathIn tabFormula} {x : List } {n : QuasiTab} (h : C.Q.at? x = some n) :
      C.RhoSat θ x tC.regionOf n, t.leftEntails (QFormula.subst C.rho (C.iitp θ x))

      The claim RhoSat in the form used in the proof: Λ₁(t) ⊨ ι_x⟨σ⟩ for all t ∈ R_x.

      theorem LoadedCluster.leftEntails_thetaOf {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {θ : FinePathIn tabFormula} ( : fC.fineExits, isPartInterpolant f.label (θ f)) {Δ : Sequent} {t : FinePathIn tab} (ht : t C.exitsWithFine Δ) :
      t.leftEntails (C.thetaOf θ Δ)

      Λ₁(t) ⊨ θ_Δ for all exit nodes t with right component Δ, i.e. Lemma 9.14 (a) in the form of an entailment.

      theorem LoadedCluster.rhoSat_one_leaf_exit {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {θ : FinePathIn tabFormula} {x : List } {Δ : Sequent} (hx : C.Q.at? x = some (QuasiTab.QNode Typ.one Δ [])) (hc : C.Q.companion? x = none) ( : ΔC.lambdaTwo) ( : fC.fineExits, isPartInterpolant f.label (θ f)) :
      C.RhoSat θ x

      Case k(x) = 1 where x is a leaf that is not a repeat: ι_x = θ_{Δ_x} and every node of the region is an exit node, so Lemma 9.14 (a) applies.

      theorem LoadedCluster.rhoSat_two {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {θ : FinePathIn tabFormula} {x : List } {Δ : Sequent} {y : QuasiTab} {ys : List QuasiTab} (hF : C.PaperFacts) ( : Δ C.lambdaTwo) ( : fC.fineExits, isPartInterpolant f.label (θ f)) (hx : C.Q.at? x = some (QuasiTab.QNode Typ.two Δ (y :: ys))) (hy : y = QuasiTab.QNode Typ.three Δ y.children) (IH : C.RhoSat θ (x ++ [0])) :
      C.RhoSat θ x

      Case k(x) = 2: the unique child y has type 3 and the same label Δ, and ι_x = [¬θ_Δ?]ι_y. Here R_x = C⁺_Δ but R_y = C^R_Δ, so we use the inner induction of the paper, which is PaperFacts.leftPropagation.

      theorem LoadedCluster.rhoSat_three_basic {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {θ : FinePathIn tabFormula} {x : List } {Δ : Sequent} {y : QuasiTab} {ys : List QuasiTab} (hF : C.PaperFacts) ( : Δ C.lambdaTwo) (hb : Δ.basic) (hx : C.Q.at? x = some (QuasiTab.QNode Typ.three Δ (y :: ys))) (hy1 : y.typ = Typ.one) (hy2 : y.label C.stepOf Δ) (IH : C.RhoSat θ (x ++ [0])) :
      C.RhoSat θ x

      Case k(x) = 3 with Δ_x basic: the unique child y has type 1 and its label is the sequent obtained by applying the modal rule, and ι_x = [a]ι_y.

      theorem LoadedCluster.rhoSat_three_not_basic {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {θ : FinePathIn tabFormula} {x : List } {Δ : Sequent} {next : List QuasiTab} (hF : C.PaperFacts) ( : Δ C.lambdaTwo) (hb : ¬Δ.basic) (hx : C.Q.at? x = some (QuasiTab.QNode Typ.three Δ next)) (hnext : nnext, n.typ = Typ.one n.label C.stepOf Δ) (IH : i < next.length, C.RhoSat θ (x ++ [i])) :
      C.RhoSat θ x

      Case k(x) = 3 with Δ_x not basic: the children y_i have type 1 and are labelled with the sequents Π_i of the right rule applied at Δ_x, and ι_x = ⋀ᵢ ι_{y_i}.

      theorem LoadedCluster.rhoSat_one_companion {X : Sequent} {tab : Tableau [] X} {C : LoadedCluster tab} {θ : FinePathIn tabFormula} {x : List } {Δ : Sequent} {y : QuasiTab} {ys : List QuasiTab} (hx : C.Q.at? x = some (QuasiTab.QNode Typ.one Δ (y :: ys))) (hcomp : x C.Q.companions) (hy : y = QuasiTab.QNode Typ.two Δ y.children) (IH : C.RhoSat θ (x ++ [0])) :
      C.RhoSat θ x

      Case k(x) = 1 where x is a companion: the unique child y has type 2 and the same label, so ρ_x = ρ_y, and ι_x = gfp x ι_y. Writing the normal form of ι_y as ⋀ᵢ[αᵢ]q_x ∧ ⋀ⱼ[βⱼ]q_{zⱼ} ∧ ψ the induction hypothesis says that ρ implies [α]ρ ∧ ⋀ⱼ[βⱼ]σ(q_{zⱼ}) ∧ ψ where α = ⋃ᵢαᵢ, so stepToStar gives the claim.

      The claim for all nodes of the quasi-tableau #

      The leaf-to-root induction of the proof of Lemma 10.3 follows the recursion of QuasiTab.build, i.e. of Definition 9.8.

      theorem LoadedCluster.prefix_append_ne {α : Type u_1} {z x : List α} (hz : z <+: x) {l : List α} (hl : l []) :
      z <+: x ++ l z x ++ l

      Descending in the tree preserves being a proper prefix.

      theorem LoadedCluster.rhoSat_build {X : Sequent} {tab : Tableau [] X} {θ : FinePathIn tabFormula} (C : LoadedCluster tab) (hF : C.PaperFacts) ( : fC.fineExits, isPartInterpolant f.label (θ f)) (Hist : List Sequent) (Δ : Sequent) (x : List ) :
      C.Q.at? x = some (QuasiTab.build C.lambdaTwo C.stepOfL Hist Δ)(∀ ZHist, ∃ (z : List ), z <+: x z x C.Q.labelAt z = some Z C.Q.typAt z = some Typ.one)C.RhoSat θ x

      The claim ρ_x ⊨ ι_x⟨σ⟩ for all nodes of the quasi-tableau, by leaf-to-root induction. The hypothesis on the history is the invariant of Definition 9.8: every sequent in the history of the construction is the label of a node of type 1 strictly above x, which is what makes a leaf whose label is in the history a repeat.

      theorem LoadedCluster.rhoSat_root {X : Sequent} {tab : Tableau [] X} {θ : FinePathIn tabFormula} (C : LoadedCluster tab) (hF : C.PaperFacts) ( : fC.fineExits, isPartInterpolant f.label (θ f)) :

      The claim ρ_x ⊨ ι_x⟨σ⟩ at the root of the quasi-tableau.

      Lemma 10.3 #

      theorem LoadedCluster.left_unsat_neg_itp {X : Sequent} {tab : Tableau [] X} {θ : FinePathIn tabFormula} (C : LoadedCluster tab) (hF : C.PaperFacts) ( : fC.fineExits, isPartInterpolant f.label (θ f)) :

      Lemma 10.3: Γ₁ ⊨ θ_r, i.e. the left component of the root of the cluster together with the negation of the interpolant of Definition 9.20 is unsatisfiable.