(* Lemma needs_of_addressing_64_sound: forall sp addr args v nv args', eval_addressing64 ge (Vptr sp Ptrofs.zero) addr args = Some v -> vagree_list args args' (needs_of_addressing_64 addr nv) -> exists v', eval_addressing64 ge (Vptr sp Ptrofs.zero) addr args' = Some v' /\ vagree v v' nv. *)

(* Specifications: *)
Lemma needs_of_operation_sound:
forall op args v nv args',
eval_operation ge (Vptr sp Ptrofs.zero) op args m = Some v ->
vagree_list args args' (needs_of_operation op nv) ->
nv <> Nothing ->
exists v',
eval_operation ge (Vptr sp Ptrofs.zero) op args' m' = Some v'
/\ vagree v v' nv.
Lemma operation_is_redundant_sound:
forall op nv arg1 args v arg1' args',
operation_is_redundant op nv = true ->
eval_operation ge (Vptr sp Ptrofs.zero) op (arg1 :: args) m = Some v ->
vagree_list (arg1 :: args) (arg1' :: args') (needs_of_operation op nv) ->
vagree v arg1' nv.