let data_separated (t1, d1) (t2, d2) =
    let r1 = assigned_of_data t1 [] d1 in
    let r2 = assigned_of_data t2 [] d2 in
    let p = ref F.p_true in
    List.iter
      (fun a ->
         List.iter
           (fun b ->
              p := F.p_and !p (M.separated a b)
           ) r2
      ) r1 ;
    !p