PDL Tableau (Section 4) #
Projections #
Equations
- projection x✝¹ x✝ = (List.map (fun (x : Formula) => formProjection x✝¹ x) x✝).reduceOption
Instances For
Loading and Loaded Histories #
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
- LoadedPathRepeat Hist X = { k : Fin (List.length Hist) // (List.get Hist k).setEqTo X ∧ ∀ m ≤ k, (List.get Hist m).isLoaded = true }
Instances For
theorem
LoadedPathRepeat_comp_isLoaded
{Hist : History}
{X : Sequent}
(lpr : LoadedPathRepeat Hist X)
:
theorem
LoadedPathRepeat_rep_isLoaded
{Hist : History}
{X : Sequent}
(lpr : LoadedPathRepeat Hist X)
:
The PDL rules #
A rule to go from Γ to Δ. Note the four variants of the modal rule.
- loadL {L : List Formula} {δ : List Program} {α : Program} {φ : Formula} {R : List Formula} : (~⌈⌈δ⌉⌉⌈α⌉φ) ∈ L → PdlRule (L, R, none) (L.erase (~⌈⌈δ⌉⌉⌈α⌉φ), R, some (Sum.inl (~'⌊⌊δ⌋⌋⌊α⌋AnyFormula.normal φ)))
- loadR {R : List Formula} {δ : List Program} {α : Program} {φ : Formula} {L : List Formula} : (~⌈⌈δ⌉⌉⌈α⌉φ) ∈ R → PdlRule (L, R, none) (L, R.erase (~⌈⌈δ⌉⌉⌈α⌉φ), some (Sum.inr (~'⌊⌊δ⌋⌋⌊α⌋AnyFormula.normal φ)))
- freeL {L R : List Formula} {δ : List Program} {α : Program} {φ : Formula} : PdlRule (L, R, some (Sum.inl (~'⌊⌊δ⌋⌋⌊α⌋AnyFormula.normal φ))) (List.insert (~⌈⌈δ⌉⌉⌈α⌉φ) L, R, none)
- freeR {L R : List Formula} {δ : List Program} {α : Program} {φ : Formula} : PdlRule (L, R, some (Sum.inr (~'⌊⌊δ⌋⌋⌊α⌋AnyFormula.normal φ))) (L, List.insert (~⌈⌈δ⌉⌉⌈α⌉φ) R, none)
- modL {L R : List Formula} {A : ℕ} {X : Sequent} {ξ : AnyFormula} : X = (L, R, some (Sum.inl (~'⌊·A⌋ξ))) → isBasic X = true → PdlRule X (match ξ with | AnyFormula.normal φ => ((~φ) :: projection A L, projection A R, none) | AnyFormula.loaded χ => (projection A L, projection A R, some (Sum.inl (~'χ))))
- modR {L R : List Formula} {A : ℕ} {X : Sequent} {ξ : AnyFormula} : X = (L, R, some (Sum.inr (~'⌊·A⌋ξ))) → isBasic X = true → PdlRule X (match ξ with | AnyFormula.normal φ => (projection A L, (~φ) :: projection A R, none) | AnyFormula.loaded χ => (projection A L, projection A R, some (Sum.inr (~'χ))))
Instances For
The Tableau [parent, grandparent, ...] child
type.
A closed tableau for X is either of:
- a local tableau for X followed by closed tableaux for all end nodes,
- a PDL rule application
- a successful loaded repeat (MB condition six)
- loc {Hist : List Sequent} {X : Sequent} (lt : LocalTableau X) : ((Y : Sequent) → Y ∈ endNodesOf lt → Tableau (X :: Hist) Y) → Tableau Hist X
- pdl {Hist : List Sequent} {Δ Γ : Sequent} : PdlRule Γ Δ → Tableau (Γ :: Hist) Δ → Tableau Hist Γ
- rep {X : Sequent} {Hist : History} (lpr : LoadedPathRepeat Hist X) : Tableau Hist X
Instances For
A Sequent is inconsistent if there exists a closed tableau for it.
Equations
- inconsistent x✝ = Nonempty (Tableau [] x✝)
Instances For
A Sequent
is consistent iff it is not inconsistent.
Equations
- consistent x✝ = ¬inconsistent x✝