primitive pres_2(in i, out o) { sync { put(o, get(i)); } } primitive together(in ia, in ib, out oa, out ob){ while(true) sync { if(fires(ia)) { put(oa, get(ia)); put(ob, get(ib)); } } } primitive alt_round_merger(in a, in b, out c){ while(true) { sync { put(c, get(a)); } sync { put(c, get(b)); } } }