Definition loop1_ret_assert (Inv: assert) (R: ret_assert) : ret_assert :=
 match R with 
  {| RA_normal := n; RA_break := b; RA_continue := c; RA_return := r |} =>
  {| RA_normal := Inv;
     RA_break := n; 
     RA_continue := Inv;
     RA_return := r |}
 end.Definition loop2_ret_assert (Inv: assert) (R: ret_assert) : ret_assert :=
 match R with 
  {| RA_normal := n; RA_break := b; RA_continue := c; RA_return := r |} =>
  {| RA_normal := Inv;
     RA_break := n;
     RA_continue := seplog.FF;
     RA_return := r |}
 end.

(* Specifications: *)
Lemma frame_for1: forall Q R F, frame_ret_assert (loop1_ret_assert Q R) F = loop1_ret_assert (fun rho => Q rho * F rho) (frame_ret_assert R F).
Lemma frame_loop1: forall Q R F, frame_ret_assert (loop2_ret_assert Q R) F = loop2_ret_assert (fun rho => Q rho * F rho) (frame_ret_assert R F).
Lemma overridePost_normal: forall P Q, overridePost P (normal_ret_assert Q) = normal_ret_assert P.