let equal v1 v2 = match v1, v2 with
    | VarT(x,c,_,_) , VarT(y,d,_,_) -> c=d && x=y
    | VarL (v1, _), VarL (v2, _) -> Logic_var.equal v1 v2
    | _ -> false