"Generate co's"
let invrf = rf^-1
let obsco =
let ww = po-loc & (W * W)
and rw = rf ; (po-loc & (R * W))
and wr = ((po-loc & (W * R)) ; invrf) \ id
and rr = (rf ; (po-loc & (R * R)) ; invrf) \ id
in
(ww|rw|wr|rr)
let rmwco =
let _RMW = R & W
in
rf & (W * _RMW)
let cobase = obsco|rmwco|co0
acyclic cobase
as ConsCo
include "cross.cat"
with co
from generate_cos(cobase)
let coi = co & int
let coe = co \ coi
let fr = (invrf ; co) \ id
let fri = fr & int
let fre = fr \ fri
show co,fr