diff --git a/theories/base_logic/upred.v b/theories/base_logic/upred.v
index b1ade65d7c62778aefd4e83a04c0b122281ecdd9..01f98884dfb55a0129aaa3c052fa24c0986f1686 100644
--- a/theories/base_logic/upred.v
+++ b/theories/base_logic/upred.v
@@ -451,21 +451,13 @@ Proof.
     by unseal.
   - (* P ⊢ □ emp (ADMISSIBLE) *)
     intros P. unfold uPred_emp; unseal; by split=> n x ? _.
-  - (* emp ∧ □ P ⊢ P *)
-    intros P. unseal; split=> n x ? [_ ?]; simpl in *.
-    eauto using uPred_mono, @cmra_included_core, cmra_included_includedN.
   - (* □ P ∗ Q ⊢ □ P (ADMISSIBLE) *)
     intros P Q. move: (uPred_persistently P)=> P'.
     unseal; split; intros n x ? (x1&x2&?&?&_); ofe_subst;
       eauto using uPred_mono, cmra_includedN_l.
-  - (* □ P ∧ (Q ∗ R) ⊢ (□ P ∧ Q) ∗ R (ADMISSIBLE) *)
-    intros P Q R. unseal; split; intros n x ? [? (x1&x2&Hx&?&?)]; simpl in *.
-    exists (core (x1 â‹… x2) â‹… x1), x2. split_and!.
-    + by rewrite -assoc cmra_core_l.
-    + eapply uPred_mono; first done. rewrite -{1}cmra_core_idemp Hx.
-      eapply cmra_core_monoN, cmra_includedN_l.
-    + eauto using uPred_mono, cmra_includedN_r.
-    + done.
+  - (* □ P ∧ Q ⊢ (emp ∧ P) ∗ Q *)
+    intros P Q. unseal; split=> n x ? [??]; simpl in *.
+    exists (core x), x; rewrite ?cmra_core_l; auto.
 Qed.
 
 Lemma uPred_sbi_mixin (M : ucmraT) : SBIMixin
diff --git a/theories/bi/derived.v b/theories/bi/derived.v
index 75359fd75b2fdf5ef99cfe9690d6eeeb54f1747c..7e2b43b7ca965ed99ecd498eb1901787005ed523 100644
--- a/theories/bi/derived.v
+++ b/theories/bi/derived.v
@@ -872,6 +872,15 @@ Proof. intros P Q; apply persistently_mono. Qed.
 Global Instance persistently_absorbing P : Absorbing (â–¡ P).
 Proof. rewrite /Absorbing=> R. apply persistently_absorbing. Qed.
 
+Lemma persistently_and_sep_assoc_1 P Q R : □ P ∧ (Q ∗ R) ⊢ (□ P ∧ Q) ∗ R.
+Proof.
+  rewrite {1}persistently_idemp_2 persistently_and_sep_elim assoc.
+  apply sep_mono_l, and_intro.
+  - by rewrite and_elim_r absorbing.
+  - by rewrite and_elim_l left_id.
+Qed.
+Lemma persistently_and_emp_elim P : emp ∧ □ P ⊢ P.
+Proof. by rewrite comm persistently_and_sep_elim right_id and_elim_r. Qed.
 Lemma persistently_elim P : □ P ⊢ P ∗ True.
 Proof.
   rewrite -(right_id True%I _ (â–¡ _)%I) -{1}(left_id emp%I _ True%I).
diff --git a/theories/bi/interface.v b/theories/bi/interface.v
index 17ebac6b647e90d327b9d171c7e8d8dcc8f1f4e3..524aaf83128218fe1fdf502acebfea8e3b71f3e0 100644
--- a/theories/bi/interface.v
+++ b/theories/bi/interface.v
@@ -111,10 +111,8 @@ Section bi_mixin.
       □ (∃ a, Ψ a) ⊢ ∃ a, □ Ψ a;
 
     bi_mixin_persistently_emp_intro P : P ⊢ □ emp;
-    bi_mixin_persistently_and_emp_elim P : emp ∧ □ P ⊢ P;
-
     bi_mixin_persistently_absorbing P Q : □ P ∗ Q ⊢ □ P;
-    bi_mixin_persistently_and_sep_assoc_1 P Q R : □ P ∧ (Q ∗ R) ⊢ (□ P ∧ Q) ∗ R;
+    bi_mixin_persistently_and_sep_elim P Q : □ P ∧ Q ⊢ (emp ∧ P) ∗ Q;
   }.
 
   Record SBIMixin := {
@@ -420,12 +418,10 @@ Proof. eapply bi_mixin_persistently_exist_1, bi_bi_mixin. Qed.
 
 Lemma persistently_emp_intro P : P ⊢ □ emp.
 Proof. eapply bi_mixin_persistently_emp_intro, bi_bi_mixin. Qed.
-Lemma persistently_and_emp_elim P : emp ∧ □ P ⊢ P.
-Proof. eapply bi_mixin_persistently_and_emp_elim, bi_bi_mixin. Qed.
 Lemma persistently_absorbing P Q : □ P ∗ Q ⊢ □ P.
 Proof. eapply (bi_mixin_persistently_absorbing bi_entails), bi_bi_mixin. Qed.
-Lemma persistently_and_sep_assoc_1 P Q R : □ P ∧ (Q ∗ R) ⊢ (□ P ∧ Q) ∗ R.
-Proof. eapply bi_mixin_persistently_and_sep_assoc_1, bi_bi_mixin. Qed.
+Lemma persistently_and_sep_elim P Q : □ P ∧ Q ⊢ (emp ∧ P) ∗ Q.
+Proof. eapply bi_mixin_persistently_and_sep_elim, bi_bi_mixin. Qed.
 End bi_laws.
 
 Section sbi_laws.