Constraint Imperative Programming (CIP) languages integrate declarativ
e constraints with imperative state and destructive assignment, yieldi
ng a powerful new programming paradigm. However, CIP languages are dif
ficult to implement efficiently due to complex interactions between th
e two donor paradigms. Neither the virtual machines for classical obje
ct-oriented languages, nor those for existing constraint languages, ar
e suitable for implementing CIP languages, as each assumes a purely im
perative or a purely declarative computation model. We have developed
a new virtual machine for CIP languages, the K-machine, an imperative
machine with an incremental constraint solver and a constraint-based,
rather than value-based, data store. This virtual machine allows user-
defined constraints to be defined using constraint constructor definit
ions which are the CIP analog to method definitions. Similar to method
s, these constructors are able to reference variables indirectly throu
gh many levels of pointers. The K-machine maintains relations between
objects in the presence of state change to these indirectly referenced
objects. The K-machine is capable of supporting a wide variety of CIP
languages, including our most recent: Kaleidoscope '93.