  Programs with control are usually modeled using lambda calculus extended with
control operators. Instead of modifying lambda calculus, we consider a
different model of computation. We introduce continuation calculus, or CC, a
deterministic model of computation that is evaluated using only head reduction,
and argue that it is suitable for modeling programs with control. It is
demonstrated how to define programs, specify them, and prove them correct. This
is shown in detail by presenting in CC a list multiplication program that
prematurely returns when it encounters a zero. The correctness proof includes
termination of the program. In continuation calculus we can model both
call-by-name and call-by-value. In addition, call-by-name functions can be
applied to call-by-value results, and conversely.
