filters
let A = (try X with {})|(try A with {})
let P = M \ A
let WW(r) = r & (W * W)
and WR(r) = r & (W * R)
and RW(r) = r & (R * W)
and RR(r) = r & (R * R)
and RM(r) = r & (R * M)
and MR(r) = r & (M * R)
and WM(r) = r & (W * M)
and MW(r) = r & (M * W)
and MM(r) = r & (M * M)
and AA(r) = r & (A * A)
and AP(r) = r & (A * P)
and PA(r) = r & (P * A)
and PP(r) = r & (P * P)
and AM(r) = r & (A * M)
and MA(r) = r & (M * A)
let noid(r)= r \ id
let invrf = rf^-1
let atom = [A]