Finding interpolants #
Here we show that given a finite GL-split proof, we can always find suitable interpolants.
Get the entire underlying sequent of a finite proof.
Equations
- π.Sequent = Fintype.elems.biUnion fun (x : π.X) => Finset.image (Sum.elim id id) (Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.r π.Ξ± x))
Instances For
Find n such that for all m β₯ n, m is not in an the variables of the proof.
Equations
- π.freeVar = Lean4GlCoalgebras.Sequent.freshVar π.Sequent
Instances For
For each x in a finite proof, find a free variable.
Equations
- Lean4GlCoalgebras.encodeVar x = π.freeVar + β((Fintype.equivFin π.X) x)
Instances For
Given n in the range of the free variables, unencode it back to its proof node.
Equations
- Lean4GlCoalgebras.unencodeVar n h1 = (Fintype.equivFin π.X).symm β¨n - π.freeVar, h1β©
Instances For
The encodeVar function is injective.
The encodeVar function is injective.
This version works better with simp than encodeVar_inj.
unencodeVar is a left inverse of encodeVar.
encodeVar is a left inverse of unencodeVar.
Auxiliary declaration used in the GL coalgebra development.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extend a substitution specific to encoded variables to all formulas.
Equations
- Lean4GlCoalgebras.extend Y_sub Ο Lean4GlCoalgebras.Formula.bottom = β₯
- Lean4GlCoalgebras.extend Y_sub Ο Lean4GlCoalgebras.Formula.top = β€
- Lean4GlCoalgebras.extend Y_sub Ο (at n) = if h : n β Finset.image Lean4GlCoalgebras.encodeVar Y then Ο β¨Lean4GlCoalgebras.unencodeVar n β―, β―β© else at n
- Lean4GlCoalgebras.extend Y_sub Ο (na n) = if h : n β Finset.image Lean4GlCoalgebras.encodeVar Y then ~Ο β¨Lean4GlCoalgebras.unencodeVar n β―, β―β© else na n
- Lean4GlCoalgebras.extend Y_sub Ο (A&B) = (Lean4GlCoalgebras.extend Y_sub Ο A&Lean4GlCoalgebras.extend Y_sub Ο B)
- Lean4GlCoalgebras.extend Y_sub Ο (A v B) = (Lean4GlCoalgebras.extend Y_sub Ο A v Lean4GlCoalgebras.extend Y_sub Ο B)
- Lean4GlCoalgebras.extend Y_sub Ο (β‘A) = β‘Lean4GlCoalgebras.extend Y_sub Ο A
- Lean4GlCoalgebras.extend Y_sub Ο (βA) = βLean4GlCoalgebras.extend Y_sub Ο A
Instances For
From the paper: If py β Οx then x β y.
From the paper: If p β Οx then p β Voc(fΛ‘(x)) β© Voc(fΚ³(x)) or p = py and x β y.
Helper for Solution strong, gives interaction between single substitution and partial substitution.
Strong solution towards finding interpolants.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Proves that interpolantStrong satisfies the necessary properties.
Auxiliary declaration used in the GL coalgebra development.