Soundness (Section 6) #
Soundness of the PDL rules #
The PDL rules are sound.
Companion, cEdge, etc. #
To get the companion of a LoadedPathRepeat we rewind the path with the lpr value.
The succ is there because the lpr values are indices of the history starting with 0, but
PathIn.rewind 0 would do nothing.
Equations
- PDL.companionOf s lpr x✝ = s.rewind (Fin.cast ⋯ ↑lpr).succ
Instances For
s ♥ t means s is a LoadedPathRepeat and the companionOf s is t.
Equations
- PDL.companion s t = ∃ (lpr : PDL.LoadedPathRepeat (PDL.tabAt s).fst (PDL.tabAt s).snd.fst) (h : (PDL.tabAt s).snd.snd = PDL.Tableau.lrep lpr), t = PDL.companionOf s lpr h
Instances For
The companion relation connecting a loaded repeat to its earlier node.
Equations
- PDL.«term_♥_» = Lean.ParserDescr.trailingNode `PDL.«term_♥_» 1022 1023 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ♥ ") (Lean.ParserDescr.cat `term 1023))
Instances For
Not using ♥ here because we need to refer to the lpr.
One ordinary or companion edge.
Equations
- PDL.«term_◃_» = Lean.ParserDescr.trailingNode `PDL.«term_◃_» 1022 1023 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ◃ ") (Lean.ParserDescr.cat `term 1023))
Instances For
A nonempty path of ordinary or companion edges.
Equations
- PDL.«term_◃⁺_» = Lean.ParserDescr.trailingNode `PDL.«term_◃⁺_» 1022 1023 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ◃⁺ ") (Lean.ParserDescr.cat `term 1023))
Instances For
A possibly empty path of ordinary or companion edges.
Equations
- PDL.«term_◃*_» = Lean.ParserDescr.trailingNode `PDL.«term_◃*_» 1022 1023 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ◃* ") (Lean.ParserDescr.cat `term 1023))
Instances For
Equations
≡ᶜ and Clusters #
Nodes are c-equivalent iff there are ◃ paths both ways.
Note that this is not a closure, so we do not want Relation.EqvGen here.
Equations
- PDL.cEquiv s t = (Relation.ReflTransGen PDL.cEdge s t ∧ Relation.ReflTransGen PDL.cEdge t s)
Instances For
Membership in the same cluster.
Equations
- PDL.«term_≡ᶜ_» = Lean.ParserDescr.trailingNode `PDL.«term_≡ᶜ_» 1022 1023 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ≡ᶜ ") (Lean.ParserDescr.cat `term 1023))
Instances For
Given a tableau node, return its cluster as an element in the cEquiv quotient.
Suffices for Soundness, but for Interpolation we need something "more constructive".
Equations
Instances For
We have before s t iff there is a path from s to t but not from t to s.
This means the cluster of s comes before the cluster of t in tab.
NB: The notes use ◃* here but we use ◃⁺. The definitions are equivalent.
Equations
- PDL.before s t = (Relation.TransGen PDL.cEdge s t ∧ ¬Relation.TransGen PDL.cEdge t s)
Instances For
s <ᶜ t means there is a ◃-path from s to t but not from t to s.
This means t is simpler to deal with first.
Equations
- PDL.«term_<ᶜ_» = Lean.ParserDescr.trailingNode `PDL.«term_<ᶜ_» 1022 1023 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " <ᶜ ") (Lean.ParserDescr.cat `term 1023))
Instances For
The <ᶜ relation is irreflexive.
The transitive closure of <ᶜ (which in fact is the same as <ᶜ) is irreflexive.
The before relation in a tableau is well-founded.
The converse of <ᶜ is irreflexive.
The transtive closure of the converse of <ᶜ is irreflexive.
The before relation in a tableau is converse well-founded.
Soundness #
Specific case of loadedDiamondPaths for Tableau.pdl.
Key helper lemma to show the soundness of loading and repeats. Intutively, it says that a tableau starting with a loaded diamond can immitate all possible ways in which a Kripke model can satisfy that diamond.
The lemma statement differs slightly from the paper version:
- Our paths cannot stop "inside" a
LocalTableauand they may take apart more than one loaded box, hence we need access to all of the boxesαsin front of the normal formulaφ. - We do not say that the path from
ttoshas to be satisfiable. - We only demand
sto be satisfiable in the free case. For the other disjunct this is implied.
The paper proof uses three nested induction levels, one of them only in the star case.
Instead of that here we use recursive calls and show that they terminate via the lexicographic order
on the ℕ∞ × Nat × Nat triple ⟨distanceList M v w (α :: αs), lengthOfProgram α, t.length⟩.
The star case is then actually handled just like the other connectives.
All provable formulas are semantic tautologies.
See tableauThenNotSat for what the notes call soundness.