let merge m1 m2 = 
     match m1,m2 with
       | T.SpareT.Spare -> m1
       | T.SpareT.Cav _ -> if is_bottom m2 then m1 else m2
       | T.Cav _,  T.Spare -> if is_bottom m1 then m2 else m1
       | T.Cav d1, T.Cav d2 -> mk_mark (D.combine d1 d2)