diff --git a/algebra/ofe.v b/algebra/ofe.v index 06ca77883ceb17e45c582660d33849531c95afd5..0419aa3d72ad05e9bceab1cd5e9e115c565ba43d 100644 --- a/algebra/ofe.v +++ b/algebra/ofe.v @@ -871,13 +871,18 @@ Section later. Global Instance Later_inj n : Inj (dist n) (dist (S n)) (@Next A). Proof. by intros x y. Qed. - Lemma contractive_alt {B : ofeT} (f : A → B) : - Contractive f ↔ (∀ n x y, Next x ≡{n}≡ Next y → f x ≡{n}≡ f y). - Proof. done. Qed. + Instance later_car_anti_contractive n : + Proper (dist n ==> dist_later n) later_car. + Proof. move=> [x] [y] /= Hxy. done. Qed. - Lemma later_car_anti_contractive : - ∀ n, Proper (dist n ==> dist_later n) later_car. - Proof. move=> n [x] [y] /= Hxy. done. Qed. + Lemma contractive_alt {B : ofeT} (f : A → B) : + Contractive f ↔ ∃ g : later A → B, + (∀ n, Proper (dist n ==> dist n) g) ∧ (∀ x, f x ≡ g (Next x)). + Proof. + split. + - intros Hf. exists (f ∘ later_car); split=> // n x y ?. by f_equiv. + - intros (g&Hg&Hf) n x y Hxy. rewrite !Hf. by apply Hg. + Qed. End later. Arguments laterC : clear implicits.