  In functional programming, point-free relation calculi have been fruitful for
general theories of program construction, but for specific applications
pointwise expressions can be more convenient and comprehensible. In imperative
programming, refinement calculi have been tied to pointwise expression in terms
of state variables, with the curious exception of the ubiquitous but invisible
heap. To integrate pointwise with point-free, de Moor and Gibbons extended
lambda calculus with non-injective pattern matching interpreted using
relations. This article gives a semantics of that language using ``ideal
relations'' between partial orders, and a second semantics using predicate
transformers. The second semantics is motivated by its potential use with
separation algebra, for pattern matching in programs acting on the heap. Laws
including lax beta and eta are proved in these models and a number of open
problems are posed.
