From winning strategies to model graphs (Section 6.3) #
BuildTree #
Specification that PdlRule.all is complete, almost: we demand X.basic here which is not
part of the PdlRule type, but demanded by Tableau.pdl.
Tree data type to keep track of choices made by Builder. Might still need to be tweaked.
- Choices should be labelled with the choices made by prover? TODO: i.e. we need to keep track of which rule is used.
- Maybe we also need to carry proofs in here?
- Leaf {pos : GamePos} (rp : rep pos.fst pos.snd.fst) : BuildTree pos
- Step {pos : GamePos} (YS : List GamePos) (next : (newPos : GamePos) → newPos ∈ YS → BuildTree newPos) : BuildTree pos
Instances For
Matches #
WORRY: Where in the below is it okay/safe to work with the BuildTree type and
where should we insist on the (more specific) buildTree result value?
Path inside a BuildTree. Analogous to PathIn for Tableau.
- stop {pos : GamePos} {bt : BuildTree pos} : Match bt
- move {pos : GamePos} {YS : List GamePos} {Y : GamePos} {next : (newPos : GamePos) → newPos ∈ YS → BuildTree newPos} (Y_in : Y ∈ YS) (tail : Match (next Y Y_in)) : Match (BuildTree.Step YS next)
Instances For
Equations
- Match.stop.append m2 = m2
- (Match.move Y_in tail).append m2 = Match.move Y_in (tail.append m2)
Instances For
Go back up inside bt by k steps.
FIXME: instead of Nat, use Fin like we do in PathIn.rewind.
Equations
- Match.stop.rewind x✝ = Match.stop
- (Match.move Y_in tail).rewind 0 = Match.move Y_in tail
- (Match.move Y_in tail).rewind k.succ = (Match.move Y_in tail).rewind k
Instances For
Pre-states (Def 6.13) #
As possible worlds for the model graph we want to define maximal paths inside the build tree
that do not contain (M) steps.
In the paper pre-states are allowed to be of the form π;π' when π ends at a repeat and π' is a maximal prefix of the path from the companion to that repeat. Here we only store the π part of such pre-states, because the π' is then uniquely determined by π.
A pre-state-part is any path in a BuildTree consisting of non-(M) edges and ending at a leaf
or just before an (M) application. (There are no Match.companion steps here, see note above.)
PROBLEM / QUESTION: do we also need leafs given by empty prMoves???
- edge {pos : GamePos} {bt : BuildTree pos} {m n : Match bt} (e : m.edge n) : e.not_mod → PreStateP bt n → PreStateP bt m
- stopLeaf {pos : GamePos} {bt : BuildTree pos} {m : Match bt} : Match.isLeaf → PreStateP bt m
- stopAtM {pos : GamePos} {bt : BuildTree pos} {m : Match bt} : Match.isJustBeforeM → PreStateP bt m
Instances For
Equations
- PreState.all bt = sorry
Instances For
Collect formulas in a pre-state.
TODO: If the pre-state ends in a repeat, also include formulas in the path from companion to (M).
Equations
- PreState.forms = sorry
Instances For
Equations
- PreState.last = sorry
Instances For
Definition 6.17 to get model graph from strategy tree.
Equations
- One or more equations did not get rendered due to their size.