Concurrent Kleene Algebra (CKA) was introduced by Hoare, Moeller, Struth and Wehrman in 2009 as a framework to reason about concurrent programs. We prove that the axioms for CKA with bounded parallelism are complete for the semantics proposed in the original paper; consequently, these semantics are the free model for this fragment. This result settles a conjecture of Hoare and collaborators. Moreover, the technique developed to this end allows us to establish a Kleene Theorem for CKA, extending an earlier Kleene Theorem for a fragment of CKA. ments.The notion of N-freeness for pomsets is useful for proving the lemmas to come.Definition A.1. Let U = [u] be a pomset. We say that U is N-free if there are no u 0 , u 1 , u 2 , u 3 ∈ S u such that u 0 ≤ u u 1 , u 2 ≤ u u 3 and u 0 ≤ u u 3 and no other relation between them, i.e., the graph of these elements has the shape of an N.Note that N-freeness is well-defined for pomsets, for the presence of an Nshape does not depend on the particular representative u. It is not hard to see that all series-parallel pomsets are N-free. Perhaps surprisingly, this N-freeness provides a complete characterisation of series-parallel pomsets [6].It is also useful to restrict a labelled poset to a part of its carrier, as follows.Definition A.2. Let u be a labelled poset, and let S ⊆ S u . We write u ↾ S for the restriction of u to S, i.e., labelled poset given by S u↾S = S, ≤ u↾S = ≤ u ∩ S × S, and λ u↾S (z) = λ u (z).A.1 Subsumption of empty or primitive pomsets Lemma A.2. Let u be a labelled poset such that u ⊑ 1 or 1 ⊑ u. Then u = 1.Proof. We treat the case where u ⊑ 1; the case where 1 ⊑ u is similar. Let h : 1 → u witness that u ⊑ 1. Then h is a bijection from S 1 = ∅ to S u ; accordingly, S u = ∅. But then u = 1, because the labelled poset with empty carrier is unique.Proof. First, suppose that U = 1. We then have that U = [1] and V = [v] such that u ⊑ 1 or 1 ⊑ u. By Lemma A.2, we find that v = 1 and thus V = [1] = 1.Second, suppose that U = a for some a ∈ Σ. Then U = [u] for some pomset with singleton carrier S u , with λ u (u) = a for all u ∈ S u . Since V = [v] and u ⊑ v or v ⊑ u, we find that u ≃ v by Lemma A.3. This establishes that U = V .
A.2 The factorisation lemmaLemma 3.3 (Factorisation). Let U , V 0 , and V 1 be pomsets such that U is subsumed by V 0 · V 1 . Then there exist pomsets U 0 and U 1 such that:Also, if U 0 , U 1 and V are pomsets such that U 0 U 1 ⊑ V , then there exist pomsets V 0 and V 1 such that:Proof. We start with the first claim. Let U , V 0 and V 1 be as in the premise, and write U = [u], V 0 = [v 0 ] and V 1 = [v 1 ]. Without loss of generality, we can assume that v 0 and v 1 are disjoint, that S v0 ∪ S v1 = S u , and that the identity function S v0 ∪ S v1 → S u is the subsumption witnessing that u ⊑ v 0 · v 1 .We then choose u i = u ↾ vi for i ∈ 2, and claim that u 0 · u 1 = u.-For the carrier, we already know that