Concurrency plays an important role in programming language
design. Logic variables in the form of futures and promises
provide a means of synchronization and communication in
concurrent computation. Futures and promises, which differ from
general logic variables in that a distinction is made between
reading and writing them, have been introduced
previously. However, no formal operational semantics has been
provided for promises.
In order to formally investigate properties of futures and
promises in a functional setting, a concurrent $lambda$-calculus
extended with futures and promises is presented. It is intended
to provide a computation model for the programming language
Alice. We prove the calculus confluent, and give a proof
showing strong normalization in the simply typed case without
promises. Further, we introduce a type system so as to statically
enforce proper use of promises in the calculus.
Awarded the Günter Hotz-Medal for outstanding Computer Science graduates.