Local Tableaux (Section 3) #
Local tableau for X, maximal by definition.
- byLocalRule {X : Sequent} (lra : LocalRuleApp) (X_def : X = lra.X) (next : (Y : Sequent) → Y ∈ lra.C → LocalTableau Y) : LocalTableau X
- sim {X : Sequent} : X.basic → LocalTableau X
Instances For
Equations
- One or more equations did not get rendered due to their size.
Termination of LocalTableau #
The local measure which together with D-M can be used to show that LocalTableau are finite.
Note that different from the paper here we also add lmOfFormula (~φ) in the ~⌈α⌉φ case.
This is needed to get lmOfFormula_lt_dia_of_nonAtom.
Equations
- lmOfFormula Formula.bottom = 0
- lmOfFormula (~Formula.bottom) = 0
- lmOfFormula (·a) = 0
- lmOfFormula (~·a) = 0
- lmOfFormula (~~φ) = 1 + lmOfFormula φ
- lmOfFormula (φ ⋀ ψ) = 1 + lmOfFormula φ + lmOfFormula ψ
- lmOfFormula (~(φ ⋀ ψ)) = 1 + lmOfFormula (~φ) + lmOfFormula (~ψ)
- lmOfFormula (⌈·a⌉a_1) = 0
- lmOfFormula (~⌈·a⌉a_1) = 0
- lmOfFormula (⌈α⌉φ) = 1 + lmOfFormula φ + (List.map (fun (τ : { x : Formula // x ∈ testsOfProgram α }) => lmOfFormula (~↑τ)) (testsOfProgram α).attach).sum
- lmOfFormula (~⌈α⌉φ) = 1 + lmOfFormula (~φ) + (List.map (fun (τ : { x : Formula // x ∈ testsOfProgram α }) => lmOfFormula ↑τ) (testsOfProgram α).attach).sum
Instances For
This is a helper for measureProp parts (d) and (e).
If each element of a list X is either a, belongs to a list bs, or has f value 0,
then the sum of f over X.toFinset is at most f a + (bs.map f).sum.
This is a summary lemma and not used as a whole anywhere.
Note that parts (d) and (e) are about the measure sum over X and not single formulas, so
for example (e) is not the same as unfoldDiamond.decreases_lmOf_nonAtomic.
Also note that we use List.toFinset here to ignore duplicates in the list X.
Equations
- One or more equations did not get rendered due to their size.
- endNodesOf (LocalTableau.sim a) = {x✝}
Instances For
An open local tableau has at least one end node.
Equations
- OpenLocalTableau X = { lt : LocalTableau X // endNodesOf lt ≠ ∅ }
Instances For
The Dershowitz-Manna ordering on sequents #
The multiset of the local measures of all formulas in a sequent.
Equations
Instances For
The Dershowitz-Manna ordering on sequents: X is smaller than Y iff the multiset of
the lmOfFormula measures of the formulas of X is smaller than the one of Y.
Equations
- lt_Sequent X Y = (nodeMeasure X).IsDershowitzMannaLT (nodeMeasure Y)
Instances For
Local rules decrease the Dershowitz-Manna measure #
The reuslts here are used for the construction of the canonical local tableau
uniLocalTab.
The key facts are:
OneSidedLocalRule.lmOfFormula_lt: every formula in a result of a one-sided local rule is smaller — in the local measurelmOfFormula— than one of the formulas the rule is applied to;LoadRule.lmOfFormula_lt: the same for the loaded rules, viaLoadRule.unload;localRuleApp.decreases_DM: hence each child of a local rule application is strictly smaller than its parent in the Dershowitz-Manna orderinglt_Sequent.
The well-founded relation on sequents used for the termination of the recursive
definitions of local tableaux. This would also better belong to Pdl/Local/Tableau.lean,
where the commented-out termination_by of endNodesOf refers to it.
Equations
- instWellFoundedRelationSequent = { rel := lt_Sequent, wf := ⋯ }
Every formula in a result of a one-sided local rule is smaller than one of the formulas the rule is applied to.
Every formula in a result of a loaded rule — including the new loaded formula — is smaller than the formula the rule is applied to.
A sufficient criterion for the Dershowitz-Manna ordering on sequents: the formulas of
Y are those of X, with a non-empty part B replaced by formulas that are smaller.
Local rules decrease the Dershowitz-Manna measure.
Helper functions, relating end nodes and children #
Equations
- One or more equations did not get rendered due to their size.
Instances For
Membership in the end nodes of a local tableau given by a local rule application.
Overall Soundness and Invertibility of LocalTableau #
Local Tableaux make progress #
These lemmas are used to show soundness, in particular loadedDiamondPaths.
End nodes of any local tableau are basic.
If X is not basic, then for all end nodes Y of a
local tableau lt for X we have that Y ≠ X.