Concurrent Kleene Algebra (CKA) extends basic Kleene algebra with a parallel composition operator, which enables reasoning about concurrent programs. However, CKA fundamentally misses tests, which are needed to model standard programming constructs such as conditionals and while-loops. It turns out that integrating tests in CKA is subtle, due to their interaction with parallelism. In this paper we provide a solution in the form of Concurrent Kleene Algebra with Observations (CKAO). Our main contribution is a completeness theorem for CKAO. Our result resorts on a more general study of CKA "with hypotheses", of which CKAO turns out to be an instance: this analysis is of independent interest, as it can be applied to extensions of CKA other than CKAO.
PreliminariesWe recall basic definitions on pomset languages, used in the semantics of CKA, which generalise languages to allow letters in words to be partially ordered. We fix a (possibly infinite) alphabet Σ. When defining sets parametrised by Σ, say S(Σ), if Σ is clear from the context we use S to refer to S(Σ). Pomsets [9,10] are labelled posets, up to isomorphism.
Posets and PomsetsDefinition 2.1 (Labellet poset). A labelled poset over Σ is a tuple u = S, ≤, λ , where S is a finite set (the carrier of u), ≤ u is a partial order on S (the order of u), and λ : S → Σ is a function (the labelling of u).