Flipping a tableau (for section 7) #
Like the paper, we only prove interpolation for clusters with a loaded formulas on the right side. For the case where the loaded formula is on the left, we flip the tableau left-to-right.
The lemmas here then allow us to prove clusterInterpolation from clusterInterpolation_right.
Flipping all sequents in a Finset twice gives back the same set.
Note: is it possible and useful to rewrite this in more term and less tactic mode?
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- (LocalTableau.byLocalRule lra X_def next).flip = LocalTableau.byLocalRule lra.flip ⋯ fun (Y : Sequent) (Y_in : Y ∈ lra.flip.C) => ⋯ ▸ (next Y.flip ⋯).flip
- (LocalTableau.sim Xbas).flip = LocalTableau.sim ⋯
Instances For
Instances For
(┛ಠ_ಠ)┛彡┻━┻
Equations
- (Tableau.loc nflprep nbas lt next).flip = Tableau.loc ⋯ ⋯ lt.flip fun (Y : Sequent) (Y_in : Y ∈ endNodesOf lt.flip) => ⋯ ▸ (next Y.flip ⋯).flip
- (Tableau.pdl nflprep bas r next).flip = Tableau.pdl ⋯ ⋯ r.flip next.flip
- (Tableau.lrep lpr).flip = Tableau.lrep lpr.flip
Instances For
Equations
- PathIn.nil.flip = PathIn.nil
- (PathIn.loc Y_in tail).flip = PathIn.loc ⋯ (have this := tail.flip; ⋯.mpr this)
- tail.pdl.flip = tail.flip.pdl
Instances For
Flipping a local tableau twice gives back (heterogeneously) the original one.
End nodes are invariant under flipping a local tableau twice.
A child of a loc path is again a loc path with the same first step.
The edge relation only depends on paths up to heterogeneous equality.
Variant of nil_edge_loc_nil where the tail is only known to have length zero.
Rewinding only depends on the path up to heterogeneous equality, and on the index only via its value.
If a path ends in a loaded-path-repeat, then so does the flipped path, with a repeat at the same position in the history.