The interpolant of a cluster root and its correctness #
This file continues the development of Pdl.PreInterpolant with
- Definition 9.20: the interpolant
θ_rof the rootrof the clusterC, and - Lemma 10.1: the vocabulary of the pre-interpolants.
Definition 10.2 and Lemma 10.3 are in Pdl.ClusterRho.
Two small vocabulary lemmas #
Entailment from the left component of a node #
Λ₁(t) ⊨ φ: the formula φ follows from the left component of the fine node t.
Equations
- t.leftEntails φ = ∀ (W : Type) (M : KripkeModel W) (w : W), (∀ ψ ∈ t.label.left, evaluate M w ψ) → evaluate M w φ
Instances For
The vocabulary of a Q-formula #
The pre-interpolants of Definition 9.18 are QFormulas, i.e. they contain the internal
variables q_x as a separate constructor. Their vocabulary therefore splits into two
parts: the ordinary vocabulary QFormula.voc, made up of the proposition letters and
atomic programs occurring in the formula, and the internal variables QFormula.vars.
Lemma 10.1 below bounds the two parts separately, which is exactly the statement
voc(ι_x) ⊆ (voc(Γ₁) ∩ voc(Γ₂)) ∪ { q_{c(z)} | z ∈ cycs(x) } of the paper.
The ordinary vocabulary of a Q-formula, i.e. the proposition letters and atomic
programs occurring in it. The internal variables are not included; they are given by
QFormula.vars.
Equations
Instances For
The vocabulary of conjunctions, of Spl and of the fixpoint gfp #
The fixpoint used at companion nodes does not add anything to the vocabulary.
The fixpoint used at companion nodes does not add internal variables.
More facts about the nodes of a quasi-tableau #
The companion of a node is a proper ancestor of it.
A repeat leaf is one of its own cycles.
A generalisation of QuasiTab.cycs_subset_of_qedge: a cycle of a child y of x is a
cycle of x, unless its companion is x itself.
Two more unfolding lemmas for Definition 9.18 #
These are the two cases where the data type allows a node without children although the definition of the quasi-tableau provides one; see Remark 9.9.
Definition 9.20: the interpolant of the root of the cluster #
Def 9.20: the interpolant θ_r of the root r of the cluster C.
If the left component Γ₁ of the root is empty then θ_r := ⊤ (see Remark 9.19),
and otherwise θ_r is the pre-interpolant ι_{r_Q} of the root of the quasi-tableau.
The latter is a QFormula, i.e. it may still contain internal variables; by Lemma 10.1
(iitp_vars) it does not, so it does not matter which substitution we use to read it as a
Formula, and we simply substitute ⊤.
Equations
Instances For
Facts about the cluster that are used but not yet formalised #
Facts about the cluster C that the paper establishes elsewhere, but that are not
available in this Lean development yet. They are collected here so that the results below
can list them as a single hypothesis.
propersays that the cluster is proper, as assumed throughout Section 9.exists_rightis Lemma 9.7 (d): ifC_Δis non-empty then so isC^R_Δ.vocLandvocRare instances of the fact that the vocabulary of both components only shrinks along a tableau; here applied to the nodes ofC⁺, all of which are below the rootrof the cluster.loadedProgVocsays that the leading atomic programaof the loaded formula of a basicΔ ∈ Λ₂[C]is in the joint vocabulary of the root. Thata ∈ voc(Γ₂)is again vocabulary preservation. Thata ∈ voc(Γ₁)— which the paper does not mention, but which its Lemma 10.1 needs — holds whenΓ₁ ≠ ∅because by Lemma 9.7 (e) the modal rule is applied at somet ∈ C^R_Δand its childuis again inC, so thatΛ₁(u) = (Λ₁(t))_ais non-empty by Lemma 9.5 (b), which forces a box⌈a⌉ψinΛ₁(t). Note that forΓ₁ = ∅the claim is false, which is why Definition 9.20 treats that case separately.
Lemma 9.7 (d): if
C_Δ ≠ ∅thenC^R_Δ ≠ ∅.- vocL (f : FinePathIn tab) : f ∈ C.fineCLplus → f.label.left.fvoc ⊆ (nodeAt C.root).left.fvoc
The vocabulary of the left component only shrinks below the root of the cluster.
- vocR (f : FinePathIn tab) : f ∈ C.fineCLplus → f.label.right.fvoc ⊆ (nodeAt C.root).right.fvoc
The vocabulary of the right component only shrinks below the root of the cluster.
- loadedProgVoc : (nodeAt C.root).left ≠ ∅ → ∀ Δ ∈ C.lambdaTwo, Δ.basic → Δ.loadedProg.voc ⊆ jvoc (nodeAt C.root)
The leading atomic program of a basic label of
Λ₂[C]is in the joint vocabulary. - leftPropagation (Δ : Sequent) : Δ ∈ C.lambdaTwo → ∀ (φ : Formula), (∀ u ∈ C.nodesWithFineRight Δ, u.leftEntails φ) → (∀ u ∈ C.exitsWithFine Δ, u.leftEntails φ) → ∀ t ∈ C.plusNodesWithFine Δ, t.leftEntails φ
The conclusion of the inner induction in the proof of Lemma 10.3: if a formula follows from the left component of every node of
C^R_Δand of every exit node with right componentΔ, then it follows from the left component of every node ofC⁺_Δ. This packages Lemma 9.7 (a) — every node ofC_Δis inC^L_Δor inC^R_Δ— with the local invertibility of the rules applied at the nodes ofC^L_Δ. - rightRuleChildren (Δ : Sequent) : Δ ∈ C.lambdaTwo → ¬Δ.basic → ∀ t ∈ C.nodesWithFineRight Δ, ∀ Pi ∈ C.stepOf Δ, ∃ u ∈ C.plusNodesWithFine Pi, u.label.left = t.label.left
For a non-basic
Δ ∈ Λ₂[C]and everyt ∈ C^R_Δ, the children oftin the tableau are the nodesΛ₁(t);ΠforΠ ∈ stepOf Δ, and they are inC⁺_Π. We only record what is used in the proof of Lemma 10.3: the existence of a node ofC⁺_Πwith the same left component ast. - modalStep (Δ : Sequent) : Δ ∈ C.lambdaTwo → Δ.basic → ∀ t ∈ C.nodesWithFineRight Δ, ∀ Pi ∈ C.stepOf Δ, ∃ u ∈ C.plusNodesWithFine Pi, ∀ (W : Type) (M : KripkeModel W) (w v : W), (∀ ψ ∈ t.label.left, evaluate M w ψ) → relate M Δ.loadedProg w v → ∀ ψ ∈ u.label.left, evaluate M v ψ
For a basic
Δ ∈ Λ₂[C]the modal rule is applied at everyt ∈ C^R_Δ, and its unique childuis inCand satisfiesΛ₁(u) = (Λ₁(t))_awhereais the leading atomic program of the loaded formula ofΔ. We only record the semantic consequence used in the proof of Lemma 10.3: fromΛ₁(t)at a statewwe getΛ₁(u)at everya-successor ofw.
Instances For
The vocabulary of θ_Δ is inside the joint vocabulary of the root of the cluster.
This is Lemma 9.14 (c) together with vocabulary preservation.
Lemma 10.1: the vocabulary of the pre-interpolants #
The conjuncts in the case k(x) = 3 with Δ_x not basic are the pre-interpolants of
the children of x.
Lemma 10.1: the vocabulary of the pre-interpolant of a node x of the quasi-tableau
consists of the joint vocabulary of the root of the cluster and of internal variables
q_{c(z)} for cycles z ∈ cycs(x).
Here the two parts are stated separately: voc(ι_x) ⊆ voc(Γ₁) ∩ voc(Γ₂) for the ordinary
vocabulary, and the internal variables of ι_x are companions of elements of cycs(x).
The hypothesis Γ₁ ≠ ∅ is needed: for Γ₁ = ∅ the claim would say that ι_x has no
ordinary vocabulary at all, which fails at nodes of type 3 with a basic label. Definition
9.20 covers that case separately, see Remark 9.19.
Lemma 10.1, first part: for every node x of the quasi-tableau, the ordinary
vocabulary of the pre-interpolant ι_x is inside voc(Γ₁) ∩ voc(Γ₂).
See LoadedCluster.iitp_voc_aux for the hypothesis Γ₁ ≠ ∅.
Lemma 10.1, second part: the internal variables occurring in the pre-interpolant ι_x
are the companions q_{c(z)} of cycles z ∈ cycs(x).
The pre-interpolant of the root of the quasi-tableau contains no internal variables,
because cycs(r_Q) = ∅ (Lemma 9.12 (b)).
Lemma 10.1, the corollary: the interpolant of the root of the cluster only uses the
joint vocabulary of Γ₁ and Γ₂.