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
Instances For
Find n such that for all m β₯ n, m is not in an the variables of the proof.
Equations
- π.freeVar = Sequent.freshVar π.Sequent
Instances For
Given n which is in the range of the free variables, unencode n back to its node in the proof.
Equations
- 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.
Extend a substitution specific to encoded variables to all formulas.
Equations
- extend Y_sub Ο Formula.bottom = β₯
- extend Y_sub Ο Formula.top = β€
- extend Y_sub Ο (at n) = if h : n β Finset.image encodeVar Y then Ο β¨unencodeVar n β―, β―β© else at n
- extend Y_sub Ο (na n) = if h : n β Finset.image encodeVar Y then ~Ο β¨unencodeVar n β―, β―β© else na n
- extend Y_sub Ο (A&B) = (extend Y_sub Ο A&extend Y_sub Ο B)
- extend Y_sub Ο (A v B) = (extend Y_sub Ο A v extend Y_sub Ο B)
- extend Y_sub Ο (β‘A) = β‘extend Y_sub Ο A
- extend Y_sub Ο (βA) = β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 interpolant_strong satisfies the necessary properties.
Equations
- interpolant π = partial_ (interpolant_strong β―)