Documentation

Pdl.StayingInFL

Staying inside the Fischer-Ladner closure #

Here we define what it means for a Sequent to be inside the FL closure of another, and then prove several helper lemmas to show that all rules of our tableau system stay in the closure.

The main two results are LocalTableau.stays_in_FL and PdlRule.stays_in_FL.

Intuitively, we want to say that each step from (L,R,O) in a tableau to (L',R',O') stays in the FL of (L,R,O). To be precise, each side left/right stays within its own FL closure. However, this does not mean that L' must be in the FL of L, because the O may also contribute to the left part. This makes Sequent.subseteq_FL tricky to define.

Sequent Y is a component-wise subset of the FL-closure of X. Note that by component we mean left and right (and not L, R, O).

WORRY: Is using Sequent.O.L here a problem because it might not be injective? (Because it calls unload where both ⌊a⌋⌊b⌋p and ⌊a⌋⌈b⌉p become ⌈a⌉⌈b⌉p.)

Equations
Instances For
    @[simp]
    theorem testsOfProgram_in_FLb {φ : Formula} {α : Program} (φ_in : φ testsOfProgram α) (ψ : Formula) :
    φ FLb α ψ
    theorem neg_testsOfProgram_in_FLb {φ : Formula} {α : Program} (φ_in : φ testsOfProgram α) (ψ : Formula) :
    ~φ FLb α ψ
    theorem Dset_tests_in_FL (α : Program) (F : List Formula) (δ : List Program) (in_D : (F, δ) Dset α) (ψ : Formula) :
    F FLb α ψ
    theorem Dset_progs_in_FL (F : List Formula) (δ : List Program) (α : Program) (in_D : (F, δ) Dset α) (ψ : Formula) :
    δ [] → (~⌈⌈δ⌉⌉ψ) FLb α ψ
    theorem unfoldDiamond_in_FL (α : Program) (ψ : Formula) (X : List Formula) :
    X unfoldDiamond α ψφX, φ FL (αψ)
    theorem P_in_FL (α : Program) (δ : List Program) ( : TP α) (ψ : Formula) :
    δ P α → (⌈⌈δ⌉⌉ψ) FL (αψ)
    theorem unfoldBox_in_FL (α : Program) (ψ : Formula) (X : List Formula) :
    X unfoldBox α ψφX, φ FL (αψ)
    theorem OneSidedLocalRule.stays_in_FL {precond : Finset Formula} {ress : Finset (Finset Formula)} (rule : OneSidedLocalRule precond ress) (res : Finset Formula) :
    res ressresprecond.FL

    Helper for LocalRule.stays_in_FL

    theorem LocalRule.stays_in_FL {X : Sequent} {B : Finset Sequent} (rule : LocalRule X B) (Y : Sequent) :
    Y BY.subseteq_FL X

    Helper for LocalTableau.stays_in_FL

    theorem Olf.sdiff_L_sub (O Ocond : Olf) :
    (O \ Ocond).LO.L

    Removing something from an Olf can only remove formulas on the left.

    theorem Olf.sdiff_R_sub (O Ocond : Olf) :
    (O \ Ocond).RO.R

    Removing something from an Olf can only remove formulas on the right.

    theorem Olf.L_sub_of_sub {O Ocond : Olf} (h : Ocond O) :
    Ocond.LO.L

    If Ocond ⊆ O then the left part of Ocond is included in that of O.

    theorem Olf.R_sub_of_sub {O Ocond : Olf} (h : Ocond O) :
    Ocond.RO.R

    If Ocond ⊆ O then the right part of Ocond is included in that of O.

    theorem LocalRuleApp.stays_in_FL (lra : LocalRuleApp) (W : Sequent) :
    W lra.CW.subseteq_FL lra.X

    Helper for LocalTableau.stays_in_FL: applying a local rule stays in the FL closure.

    theorem LocalTableau.stays_in_FL {X : Sequent} (ltX : LocalTableau X) (Y : Sequent) :
    Y endNodesOf ltXY.subseteq_FL X

    End nodes of a local tableau are FischerLadner-subsets of the root. This is used for move_inside_FL.

    theorem Finset.mem_FL_of_mem {X : Finset Formula} {ψ x : Formula} ( : ψ X) (hx : x _root_.FL ψ) :
    x X.FL

    Anything in the FL closure of a member of X is in the FL closure of X.

    theorem PdlRule.stays_in_FL {X Y : Sequent} (rule : PdlRule X Y) :

    Making a PDL rule step stays in the Fischer-Ladner closure. This is used for move_inside_FL.