(* For every store satisfying the addition precondition, calling the addition function will halt with a store satisfing the postcondition. *)

Lemma addition_totally_correct :
forall r n m,
add_P' n m r ->
exists n', exists p', exists r',
stepstar add_term_measure (K.squash (n',add_phi)) p'
r ((instr_getlabel (L 0) (V 0) ;; instr_call (L 0) ;; instr_return ;; instr_nil _)::nil)
r' nil /\
add_Q' n m r'.