There are two somewhat contradictory ways of looking at modules in a given programming language. On the one hand, module systems are largely independent of the particulars of progr...
In this paper we present the theory and practice of co-logic programming (co-LP for brevity), a paradigm that combines both inductive and coinductive logic programming. Co-LP is a ...
Reasoning about object-oriented programs is hard, due to , dynamic binding and the need for data abstraction and framing. Reasoning about concurrent object-oriented programs is eve...
Haskell has a rich set of synchronization primitives for implemented-state concurrency abstractions, ranging from the very high level (Software Transactional Memory) to the very l...
Concurrency bugs are becoming increasingly important due to the prevalence of concurrent programs. A fundamental problem of concurrent program bug detection and testing is that th...