diff --git a/algebra/auth.v b/algebra/auth.v
index e8d25bfd6b0c65fb87aedbbc6fc4a48d3c2cd9ba..9449dd74c1135a477e8e7ce03263ea2e48549581 100644
--- a/algebra/auth.v
+++ b/algebra/auth.v
@@ -111,6 +111,8 @@ Proof.
   destruct x as [[[?|]|] ?]; simpl; try done.
   setoid_rewrite <-cmra_discrete_included_iff; naive_solver eauto using 0.
 Qed.
+Lemma auth_valid_discrete_2 `{CMRADiscrete A} a b : ✓ (● a ⋅ ◯ b) ↔ b ≼ a ∧ ✓ a.
+Proof. by rewrite auth_valid_discrete /= left_id. Qed.
 
 Lemma authoritative_valid  x : ✓ x → ✓ authoritative x.
 Proof. by destruct x as [[[]|]]. Qed.
@@ -189,6 +191,10 @@ Lemma auth_frag_op a b : ◯ (a ⋅ b) ≡ ◯ a ⋅ ◯ b.
 Proof. done. Qed.
 Lemma auth_both_op a b : Auth (Excl' a) b ≡ ● a ⋅ ◯ b.
 Proof. by rewrite /op /auth_op /= left_id. Qed.
+Lemma auth_frag_mono a b : a ≼ b → ◯ a ≼ ◯ b.
+Proof. intros [c ->]. rewrite auth_frag_op. apply cmra_included_l. Qed.
+Lemma auth_auth_valid a : ✓ a → ✓ (● a).
+Proof. intros; split; simpl; auto using ucmra_unit_leastN. Qed.
 
 Lemma auth_update a af b :
   a ~l~> b @ Some af → ● (a ⋅ af) ⋅ ◯ a ~~> ● (b ⋅ af) ⋅ ◯ b.