A type expression may be used as the conclusion of a sequent, and the sequent is considered true just when there is some "witness" expression, say
1. x :
2. y :
3. x+1<y
{z:| x<z & z<y }
is true because, for example,
1. x :
2. y :
3. x+1<y
y-1 {z:| x<z & z<y }
While there is a proof rule for providing such a witness explicitly to justify such a sequent, it is common to defer or avoid explicitly supplying such witnesses. For example, one may infer
x:AB(x) from
A Type , and
1. x : A B(x)
since we can construct a witness
Thm* x:( List){y:| y greater-bounds x }
The proof proceeds by induction on lists, specifying witnesses explicitly at three key points. It provides
The proof does
not explicitly show a member of
There are three lines of further elaboration at this point, and there is some interaction between them.
Proof Witness Extraction is a method for actually extracting a witness from the proof of a type-conclusioned sequent.
Sequents with Restricted Declarations are introduced to allow us to assert the independence of witnesses from certain variables.(1. x : A [not for witness] <sequent>)
Propositional Proof Witness Extraction is extracting from proofs of propositions certain kinds of witnesses inherent in their constructive meaning, this being effected by representingPropositions as Types
About: