Documentation

Pdl.LocalTableauPaths

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.

@[irreducible]
Equations
Instances For
    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} :
    List.map (fun (x : { x : List Sequent // 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
    @[irreducible]
    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 (List.map Sequent.bothSides L).flattenf (L.getLast ).bothSides

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

    @[irreducible]

    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.

    @[irreducible]

    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.

    @[irreducible]

    A basic formula anywhere in a local tableau path still occurs at the end of the path. Analogous to LocalTableau.paths_local_atom_mem_last, but for all basic formulas.

    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.

      @[irreducible]
      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.

      @[irreducible]

      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.