From winning strategies to model graphs, part 2: the model graph (Section 6.3) #
This continues Pdl/BuildTree.lean. Here we define the model graph BuildTree.toModel
obtained from a BuildTree (Definition 6.17) and provide the infrastructure that is used
in Pdl/BuildTreeExistence.lean to prove the existence lemmas.
Defining The Model Graph #
Definition 6.17 to get model graph from strategy tree.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Infrastructure for the existence lemmas #
The existence lemmas 6.18, 6.19 and 6.20 all have the same shape: given a pre-state π and a
(possibly loaded) diamond in it, find another pre-state ρ that is reached from π by the
corresponding Q relation. All of them are proven by walking through the BuildTree:
we go to the last node of π (which is basic), apply some PdlRules there, and then pick a
pre-state collected at the node we arrive at. The lemmas in this section provide the tools
for these steps.
Set-equal sequents #
Set-equal sequents contain the same AnyNegFormulas.
Formulas of a pre-state #
A pre-state "has" an AnyNegFormula if one of its sequents contains it.
Equations
- π.hasAnf anf = ∃ Z ∈ ↑π, AnyNegFormula.mem_Sequent Z anf
Instances For
If a PdlRule is applicable at the root of a BuildTree that is basic and not a free
repeat, then the tree has a corresponding child, reached by a one-step Match.
Making a PdlRule step at the end of a Match: we get a longer Match that ends at the
child sequent, and the sub-BuildTree we reach is strictly smaller.
At the end of a Match that is not a free repeat we find a pre-state that starts with the
sequent we are at, and whose own last sequent is reached by a Match that goes no higher up.
Free pre-states #
Version of BuildTree.collect_contains_root_of_not_freeRepeat saying that the root sequent
is the first sequent of the collected pre-state.
Version of Match.exists_preState_of_not_freeRepeat where the pre-state starts at the
sequent we are at.
The modal rule #
What the modal rule (M) gives us on the left: the child contains ~''ξ and all
a-successors of the boxes in the parent, and it is loaded whenever ξ is.
What the modal rule (M) gives us on the right. Mirrors PdlRule.exists_modL.
An atomic loaded diamond in a pre-state occurs already in its last sequent.
This is the loaded analogue of PreState.mem_bothSides_getLast_of_basic and the reason why
the modal rule is applicable at the end of the pre-state.
(Generalised from bt : BuildTree [] X to an arbitrary history H, as needed for the
recursion into sub-BuildTrees.)
A normal formula in π.wForms is also in π.forms.
The modal step #
The modal step at the end of a Match: if the sequent we are at is basic and loaded with
an atomic diamond ~'⌊·a⌋ξ, then we can go one step down, arriving at a sequent that
contains ~''ξ and all a-successors of the boxes we had. Formal version of the base case
of Lemma 6.18.
After any Match there is a pre-state containing a sequent set-equal to the sequent we
are at. If that sequent is loaded then the pre-state is found without going back up, so its
last node is not higher up than where we are.
Lemma 6.18 for an atomic program: the base case of the induction.
If the last sequent of the pre-state π is loaded with ~'⌊·a⌋ξ, then there is a pre-state
ρ with (Λ⁻(π), Λ⁻(ρ)) ∈ Rₐ that has ~''ξ. Unless ξ is a normal formula (in which case
we may have to go back to a companion) the new pre-state also ends strictly below π.
Unfolding a loaded diamond in a pre-state #
Unified version of the loaded case of Lemma 6.15, for an arbitrary AnyFormula xi:
if ~'⌊α⌋ξ occurs in the pre-state π and α is not atomic, then for one of the unfoldings
(F,δ) ∈ Dset α all test formulas in F occur in π and π also has ~''⌊⌊δ⌋⌋ξ.
The Q relation for pre-states #
A negated loaded formula is in Z.wForms iff it is "in" the sequent Z.
If all test formulas of F are in the pre-state π, then Qsteps from π gives Qcombo.