Generating all Local Tableaux #
def
OneSidedLocalRule.all
(L : List Formula)
:
Option ((B : List (List Formula)) × OneSidedLocalRule L B)
Equations
- OneSidedLocalRule.all [Formula.bottom] = some ⟨∅, OneSidedLocalRule.bot⟩
- OneSidedLocalRule.all [φ1, ~φ2] = if h : φ1 = φ2 then h ▸ some ⟨∅, OneSidedLocalRule.not φ1⟩ else none
- OneSidedLocalRule.all [~~φ] = some ⟨[[φ]], OneSidedLocalRule.neg φ⟩
- OneSidedLocalRule.all [φ⋀ψ] = some ⟨[[φ, ψ]], OneSidedLocalRule.con φ ψ⟩
- OneSidedLocalRule.all [~(φ⋀ψ)] = some ⟨[[~φ], [~ψ]], OneSidedLocalRule.nCo φ ψ⟩
- OneSidedLocalRule.all [⌈α⌉φ] = if notAtm : ¬α.isAtomic then some ⟨unfoldBox α φ, OneSidedLocalRule.box α φ notAtm⟩ else none
- OneSidedLocalRule.all [~⌈α⌉φ] = if notAtm : ¬α.isAtomic then some ⟨unfoldDiamond α φ, OneSidedLocalRule.dia α φ notAtm⟩ else none
- OneSidedLocalRule.all x✝ = none
Instances For
Given a negated loaded formula, is there a LoadRule applicable to it?
Equations
- LoadRule.the (~'⌊α⌋AnyFormula.loaded a) = if notAtom : ¬α.isAtomic then some ⟨unfoldDiamondLoaded α a, LoadRule.dia notAtom⟩ else none
- LoadRule.the (~'⌊α⌋AnyFormula.normal a) = if notAtom : ¬α.isAtomic then some ⟨unfoldDiamondLoaded' α a, LoadRule.dia' notAtom⟩ else none
Instances For
Given a sequent, return a list of all possible local rule applications.
Equations
- One or more equations did not get rendered due to their size.
Instances For
At most finitely many local rule applications lead from X
and to B
. Note this is weaker
than "only finitely many local rules apply to X
, because each B
gives a different type.
Equations
- One or more equations did not get rendered due to their size.
def
combo
{α : Type}
[DecidableEq α]
{q : α → Type}
{L : List α}
(f : (x : α) → x ∈ L → List (q x))
:
Convert a function returning lists into a list of functions. Helper for LocalTableau.all
.
Equations
Instances For
@[irreducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- LocalTableau.fintype = { elems := (LocalTableau.all X).toFinset, complete := ⋯ }