[Show abstract][Hide abstract]ABSTRACT: We describe the implementation of a high-level language based on first order logic for expressing synchronization in multi-threaded
Java programs. The language allows the programmer to declaratively state the system safety properties as temporal constraints on specific pro- gram points of interest (events). The constraints are enforced by the run- time environment, i.e. the program points of interest are traversed only in the
order specified by the constraints. The implementation is based on the incremental and lazy generation of partial orders among events. Although the implementation reported in this paper is concerned only with the
synchronization of Java programs, the general underlying syn- chronization model we present is language independent in that it allows the programmer to glue together separate concurrent threads regardless of their implementation language
and application code.