proposition: Lemma terminates_reflection {s s'} : sync s s' -> terminates step2 s' -> terminates step1 s.
proof: Proof. Proof using step2_det step1_intro fstep. intros Hss' Hs'%terminating_Acc%(Acc_clos_trans Y). revert s Hss'. induction Hs' as [s' _ IH]. intros s. destruct (step1_intro s) as [[t Hst] | Hs]. - intros [t' [Hs't' Htt']]%(fstep Hst). apply (terminates_extend _ (t := t)); [now apply rt_step|]. eapply (IH t'); [|now apply Htt']. now eapply clos_trans_transp_permute. - intros _. exists s. eauto using clos_refl_trans. Qed.
imports: Relations Transitive_Closure