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.