diff --git a/theories/program_logic/language.v b/theories/program_logic/language.v index 162ac66ba73e30af4def6a05ee82382c38761c8e..9efd4250d8369dc2525c98f74c10de560a69520d 100644 --- a/theories/program_logic/language.v +++ b/theories/program_logic/language.v @@ -116,11 +116,16 @@ Section language. Definition erased_step (Ï1 Ï2 : cfg Λ) := ∃ κ, step Ï1 κ Ï2. + (** [rtc erased_step] and [nsteps] encode the same thing, just packaged + in a different way. *) Lemma erased_steps_nsteps Ï1 Ï2 : - rtc erased_step Ï1 Ï2 → + rtc erased_step Ï1 Ï2 ↔ ∃ n κs, nsteps n Ï1 κs Ï2. Proof. - induction 1; firstorder; eauto. (* FIXME: [naive_solver eauto] should be able to handle this *) + split. + - induction 1; firstorder; eauto. (* FIXME: [naive_solver eauto] should be able to handle this *) + - intros (n & κs & Hsteps). induction Hsteps; first done. econstructor; last done. + eexists. done. Qed. Lemma of_to_val_flip v e : of_val v = e → to_val e = Some v.