This page presents the formal theory given in my thesis. This presentation is only scarcely documented; for explanation I refer to my thesis. The theory is given in the format of Yarrow script files, i.e. files which can serve as input to Yarrow. In fact, the Yarrow distribution comes with all these script files.
A Yarrow script file consists of a sequence of commands. The main commands are:
Var x:T
x
of type T
to the context. These variable declarations are printed in
red.
Def x:=t:T
x
as t
of type T
to the context (the :T
part is optional).
These definitions are printed in
blue.
Prove x:T
T
which will be given name x
.
This command is printed in blue.
After such a command, Yarrow files contain several commands to construct this
inhabitant. These commands are printed in black.
Load
Infix
, Implicit
and Binder
--
The Yarrow syntax of terms is as follows:
\x:T.e
@x:T.e
let x:=e:T.f
f e
(e)
Precedence goes from lowest to highest, so \x:T.x x
means
\x:T.(x x)
and not (\x:T.x) x
.
The lambda, pi and let terms do extend to right as far as possible.
We use the following shorthands:
\x1,x2,..xn:T.e
@x1,x2,..xn:T.e
T->U
@x:T.U
if U
(the ->
is right-assoc
iative)
Now for the theory itself. It is structured here according to my thesis. For a better overview, many script files come also in a version without the commands that form the proofs.
lambdaL
logic
full or
without proofs.
bool
full or
without proofs.
nat
full or
without proofs.
list
full or
without proofs.
sort
full or
without proofs.
logic2
full or
without proofs.
bool2
full or
without proofs.
nat2
full or
without proofs.
list2
full or
without proofs.
lambdaLplus
full
or without proofs.
LOLP_Axioms
full
or without proofs.
stack
full or
without proofs.
prelims
full or
without proofs.
bag1
full or
without proofs.
bag2
full or
without proofs.
bag3
full or
without proofs.
parametricity
full or
without proofs.
library
full or
without proofs.
axiomatizing
full or
without proofs.
lambdaLsubplus
subLibrary
full or
without proofs.
sortId
full or
without proofs.
pointDevelop1
pointDevelop2
pointDevelop3