Documentation

Pdl.Local.Path

Paths in Local Tableaux #

Here we collect the paths of sequents within a LocalTableau, i.e. the lists of sequents from the root to an end node, and show that they are saturated and locally consistent.

This is used for the pre-states in the completeness proof, see BuildTree.lean.

Formulas occurring along a list of sequents #

All formulas occurring in the sequents of a list, as a Finset.

Equations
Instances For
    @[simp]
    theorem mem_pathForms {L : List Sequent} {f : Formula} :
    f pathForms L ZL, f Z.toFinset
    @[simp]

    All WhateverFormulas occurring in the sequents of a list, as a Finset.

    Equations
    Instances For
      @[simp]
      theorem mem_pathWForms {L : List Sequent} {f : WhateverFormula} :
      f pathWForms L ZL, f Z.wForms
      @[simp]

      Paths #

      Equations
      Instances For
        theorem LocalTableau.mem_paths_byLocalRule {X : Sequent} {lra : LocalRuleApp} {X_def : X = lra.X} {next : (Y : Sequent) → Y lra.CLocalTableau Y} {L : List Sequent} :
        L (byLocalRule lra X_def next).paths ∃ (Y : Sequent) (h : Y lra.C), L'(next Y h).paths, L = X :: L'

        Characterisation of membership in paths for the byLocalRule case.

        @[simp]
        theorem LocalTableau.mem_paths_sim {X : Sequent} {bas : X.basic} {L : List Sequent} :
        L (sim bas).paths L = [X]
        theorem LocalTableau.pathsHead_eq_self {X : Sequent} {lt : LocalTableau X} {L : List Sequent} (h : L lt.paths) :
        L.head = X
        theorem LocalTableau.pathsLast_eq_endNodes {X : Sequent} {lt : LocalTableau X} :
        Finset.image (fun (x : lt.paths) => match x with | L, h => L.getLast ) lt.paths.attach = endNodesOf lt

        Any open local tableau has at least one path (from root to some end node). Does not hold for LocalTableau which might end with "contradiction/closing" rule applications.

        theorem LocalTableau.paths_last_basic {X : Sequent} {lt : LocalTableau X} (L : List Sequent) (h : L lt.paths) :
        (L.getLast ).basic

        Formulas that survive to the end of a path #

        theorem LocalTableau.mem_last_of_preserved {α : Type u_1} {X : Sequent} {lt : LocalTableau X} (κ : SequentFinset α) (f : α) (pres : ∀ (lra : LocalRuleApp), Ylra.C, f κ lra.Xf κ Y) (L : List Sequent) (h : L lt.paths) :
        (∃ ZL, f κ Z)f κ (L.getLast )

        General helper: anything that is preserved by all local rule applications and occurs somewhere along a path also occurs at the end of the path.

        theorem LocalTableau.paths_local_atom_mem_last {X : Sequent} {lt : LocalTableau X} {L : List Sequent} (L_in : L lt.paths) (f : Formula) :
        (f = ∃ (p : ), f = ·p f = ~·p) → f pathForms Lf (L.getLast ).toFinset

        An atomic formula anywhere in a local tableau path still occurs at the end of the path.

        theorem LocalTableau.paths_basic_mem_last {X : Sequent} {lt : LocalTableau X} {L : List Sequent} (L_in : L lt.paths) (f : Formula) :
        f.basic = truef pathForms Lf (L.getLast ).toFinset

        A basic formula anywhere in a local tableau path still occurs at the end of the path.

        Unfolding of diamonds along paths #

        theorem LocalTableau.paths_freeUnfoldDia {X : Sequent} {lt : LocalTableau X} {α : Program} {φ : Formula} (notAtom : ¬α.isAtomic) (L : List Sequent) :

        Along any path in a local tableau, a non-atomic free diamond must be unfolded: if ~⌈α⌉φ occurs (unloaded) somewhere on the path and α is not atomic, then all formulas of one of the unfoldings Yset Fδ φ occur (unloaded) on the path as well. Analogous to LocalTableau.paths_saturated, but for Sequent.wForms.

        theorem LocalTableau.paths_loadUnfoldDia {X : Sequent} {lt : LocalTableau X} {α : Program} {ξ : AnyFormula} (notAtom : ¬α.isAtomic) (L : List Sequent) :

        Along any path in a local tableau, a non-atomic loaded diamond must be unfolded: if ~'⌊α⌋ξ occurs (loaded) somewhere on the path and α is not atomic, then the results of one application of the corresponding LoadRule occur on the path as well. This is the loaded analogue of LocalTableau.paths_freeUnfoldDia.

        Paths ending at a given end node #

        In the completeness proof (see Pdl/BuildTree.lean) Builder picks one end node of a local tableau, and only the paths ending at that end node should be used as pre-states.

        The paths of a local tableau that end at a given node.

        Equations
        Instances For
          @[simp]
          theorem LocalTableau.mem_pathsTo {X : Sequent} {lt : LocalTableau X} {Y : Sequent} {p : List Sequent} :
          theorem LocalTableau.pathsTo_ne_nil {X : Sequent} {lt : LocalTableau X} {Y : Sequent} (h : Y endNodesOf lt) :

          There is at least one path to each end node.

          theorem LocalTableau.endNodesOf_free {X : Sequent} (lt : LocalTableau X) (hfree : X.O = none) (Y : Sequent) :
          Y endNodesOf ltY.O = none

          All end nodes of a local tableau for a free sequent are free. Consequence of LocalRuleApp.preserve_free.

          Atomic loaded diamonds are preserved #

          A loaded diamond ~'⌊·a⌋ξ with an atomic program cannot be "used up" by a local rule: the only LoadRule applicable to it gives back the very same loaded formula. This is the counterpart of LocalTableau.paths_loadUnfoldDia for atomic programs.

          The only LoadRule result for an atomic loaded diamond is the loaded diamond itself.

          A local rule application preserves an atomic loaded diamond.

          An atomic loaded diamond anywhere in a local tableau path still occurs at the end of it. Analogous to LocalTableau.paths_basic_mem_last, but for the loaded formula.

          theorem LocalTableau.paths_last_free {X : Sequent} {lt : LocalTableau X} (hfree : X.O = none) {L : List Sequent} (L_in : L lt.paths) :
          (L.getLast ).O = none

          The last node of a path in a local tableau for a free sequent is free. Consequence of LocalTableau.endNodesOf_free.