diff --git a/iris/algebra/functions.v b/iris/algebra/functions.v index 7f7bb44779fd81fbb335fbc53e009798619791c4..210c1bffe24c9e27e0b54a92c2a498acdad7fca0 100644 --- a/iris/algebra/functions.v +++ b/iris/algebra/functions.v @@ -162,21 +162,22 @@ Section cmra. eauto using discrete_fun_singleton_updateP_empty with subst. Qed. - Lemma discrete_fun_updateP `{Hfin: Finite A} f P : - (∀ a, f a ~~>: P a) → f ~~>: (λ f', ∀ a, P a (f' a)). + Lemma discrete_fun_updateP `{!Finite A} f P Q : + (∀ a, f a ~~>: P a) → (∀ f', (∀ a, P a (f' a)) → Q f') → f ~~>: Q. Proof. - rewrite cmra_total_updateP. setoid_rewrite cmra_total_updateP. - intros Hf n z Hfz. + repeat setoid_rewrite cmra_total_updateP. intros Hf HP n h Hh. destruct (finite_choice - (λ a y, P a y ∧ ✓{n} (y ⋅ (z a))) - ltac:(naive_solver)) as [f' Hf']. + (λ a y, P a y ∧ ✓{n} (y ⋅ (h a)))) as [f' Hf']; first naive_solver. naive_solver. Qed. + Lemma discrete_fun_updateP' `{!Finite A} f P : + (∀ a, f a ~~>: P a) → f ~~>: λ f', ∀ a, P a (f' a). + Proof. eauto using discrete_fun_updateP. Qed. Lemma discrete_fun_update f g : (∀ a, f a ~~> g a) → f ~~> g. Proof. - rewrite cmra_total_update. setoid_rewrite cmra_total_update. - intros Hfg n zf Hz a. apply (Hfg a), Hz. + repeat setoid_rewrite cmra_total_update. + intros Hfg n h Hh a. apply (Hfg a), Hh. Qed. End cmra.