PDL-Tableaux (Section 4) #
Projections #
Equations
- projection x✝¹ x✝ = (List.map (fun (x : Formula) => formProjection x✝¹ x) x✝).reduceOption
Instances For
Histories and Repeats #
Loaded Path Repeats #
A lpr means we can go k steps back in the history to
reach an equal node, and all nodes on the way are loaded.
Note: k=0 means the first element of Hist is the companion.
Equations
Instances For
If there is any loaded path repeat, then we can compute one.
FIXME There is probably a more elegant way, avoiding Nonempty and Fin.find?.
Something like: def getLPR (H : History) (X : Sequent) : Option ... := ...
that might also give us uniqueness of LPRs?
Equations
- One or more equations did not get rendered due to their size.
Instances For
Free, forbidden and allowed repeats #
In Tableau we only want to allow the application of a rule
when there is no loaded-path repeat and there is no free repeat.
For this we introduce FreeRepeat and the flprep abbreviation.
A free repeat is a non-loaded sequent that occured before. Values of this type are pairs: the number of steps to go back in the history and a proof that we then find the same set.
Equations
Instances For
The PDL rules #
A rule to go from X to Y. Note the four variants of the modal rule.
- loadL {L : List Formula} {δ : List Program} {α : Program} {φ : Formula} {Y : List Formula × List Formula × Option (NegLoadFormula ⊕ NegLoadFormula)} {R : List Formula} : (~⌈⌈δ⌉⌉⌈α⌉φ) ∈ L → ¬φ.isBox → Y = (L.erase (~⌈⌈δ⌉⌉⌈α⌉φ), R, some (Sum.inl (~'⌊⌊δ⌋⌋⌊α⌋AnyFormula.normal φ))) → PdlRule (L, R, none) Y
- loadR {R : List Formula} {δ : List Program} {α : Program} {φ : Formula} {Y : List Formula × List Formula × Option (NegLoadFormula ⊕ NegLoadFormula)} {L : List Formula} : (~⌈⌈δ⌉⌉⌈α⌉φ) ∈ R → ¬φ.isBox → Y = (L, R.erase (~⌈⌈δ⌉⌉⌈α⌉φ), some (Sum.inr (~'⌊⌊δ⌋⌋⌊α⌋AnyFormula.normal φ))) → PdlRule (L, R, none) Y
- freeL {X : List Formula × List Formula × Option (NegLoadFormula ⊕ NegLoadFormula)} {L R : List Formula} {δ : List Program} {α : Program} {φ : Formula} {Y : List Formula × List Formula × Option (NegLoadFormula ⊕ NegLoadFormula)} : X = (L, R, some (Sum.inl (~'⌊⌊δ⌋⌋⌊α⌋AnyFormula.normal φ))) → Y = (List.insert (~⌈⌈δ⌉⌉⌈α⌉φ) L, R, none) → PdlRule X Y
- freeR {X : List Formula × List Formula × Option (NegLoadFormula ⊕ NegLoadFormula)} {L R : List Formula} {δ : List Program} {α : Program} {φ : Formula} {Y : List Formula × List Formula × Option (NegLoadFormula ⊕ NegLoadFormula)} : X = (L, R, some (Sum.inr (~'⌊⌊δ⌋⌋⌊α⌋AnyFormula.normal φ))) → Y = (L, List.insert (~⌈⌈δ⌉⌉⌈α⌉φ) R, none) → PdlRule X Y
- modL {Y : Sequent} {L R : List Formula} {A : ℕ} {X : Sequent} {ξ : AnyFormula} : X = (L, R, some (Sum.inl (~'⌊·A⌋ξ))) → (Y = match ξ with | AnyFormula.normal φ => (~φ :: projection A L, projection A R, none) | AnyFormula.loaded χ => (projection A L, projection A R, some (Sum.inl (~'χ)))) → PdlRule X Y
- modR {Y : Sequent} {L R : List Formula} {A : ℕ} {X : Sequent} {ξ : AnyFormula} : X = (L, R, some (Sum.inr (~'⌊·A⌋ξ))) → (Y = match ξ with | AnyFormula.normal φ => (projection A L, ~φ :: projection A R, none) | AnyFormula.loaded χ => (projection A L, projection A R, some (Sum.inr (~'χ)))) → PdlRule X Y
Instances For
Equations
- (PdlRule.loadL a a_1 a_2).isModal = False
- (PdlRule.loadR a a_1 a_2).isModal = False
- (PdlRule.freeL a a_1).isModal = False
- (PdlRule.freeR a a_1).isModal = False
- (PdlRule.modL a a_1).isModal = True
- (PdlRule.modR a a_1).isModal = True
Instances For
The Tableau [parent, grandparent, ...] child type.
This represents a closed tableau for X, constructed by either of:
- a local tableau for X followed by
Tableaufor all end nodes, - a PDL rule application followed by
Tableaufor all results, or - a loaded-path repeat (also called successful, see [Bor88] condition 6 in Def 14 on page 25).
- loc {Hist : History} {X : Sequent} (nflprep : ¬flprep Hist X) (nbas : ¬X.basic) (lt : LocalTableau X) (next : (Y : Sequent) → Y ∈ endNodesOf lt → Tableau (X :: Hist) Y) : Tableau Hist X
- pdl {Hist : History} {X Y : Sequent} (nflprep : ¬flprep Hist X) (bas : X.basic) (r : PdlRule X Y) (next : Tableau (X :: Hist) Y) : Tableau Hist X
- lrep {Hist : History} {X : Sequent} (lpr : LoadedPathRepeat Hist X) : Tableau Hist X
Instances For
Equations
- One or more equations did not get rendered due to their size.
- (Tableau.pdl nflprep bas r next).size = 1 + next.size
- (Tableau.lrep lpr).size = 1
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- (Tableau.loc nflprep nbas lt next).isLrep = False
- (Tableau.pdl nflprep bas r next).isLrep = False
- (Tableau.lrep lpr).isLrep = True
Instances For
A Sequent is inconsistent if there exists a closed tableau for it.
Instances For
A Sequent is consistent iff it is not inconsistent.
Equations
- consistent x✝ = ¬inconsistent x✝