let mvalue_of_value = function
    | V_int (i,t) -> M.V_int (i,t)
    | V_float (f,t) -> M.V_float (f,t)
    | V_array (a,t) -> M.V_array(a,t)
    | V_record (c,t) -> M.V_record (c,t)
    | V_union (c,t) -> M.V_union (c,t)
    | V_pointer (te,Mloc l) -> M.V_pointer (te, l)
    | V_pointer (_,Path _) 
    | V_pointer (_,PRef _ )
    | V_pointer (_,PRpar _)
    | V_pointer (_,ARef _ )
    | V_pointer (_,ARpar _) -> 
        WpLog.fatal "[mvalue_of_value] of logical pointer"