diff --git a/theories/base.v b/theories/base.v
index 6872ec7f0780ad8dc1228c0ca6ec97fce5b47b53..fc03e031f598d2131524c7b9e6fad0a2314b1c85 100644
--- a/theories/base.v
+++ b/theories/base.v
@@ -466,10 +466,8 @@ Instance fst_proper `{Equiv A, Equiv B} : Proper ((≡) ==> (≡)) (@fst A B) :=
 Instance snd_proper `{Equiv A, Equiv B} : Proper ((≡) ==> (≡)) (@snd A B) := _.
 Typeclasses Opaque prod_equiv.
 
-Instance prod_leibniz `{LeibnizEquiv A, !Equivalence ((≡) : relation A),
-                        LeibnizEquiv B, !Equivalence ((≡) : relation B)}
-  : LeibnizEquiv (A * B).
-Proof. intros [] [] []; fold_leibniz; simpl; congruence. Qed.
+Instance prod_leibniz `{LeibnizEquiv A, LeibnizEquiv B} : LeibnizEquiv (A * B).
+Proof. intros [??] [??] [??]; f_equal; apply leibniz_equiv; auto. Qed.
 
 (** ** Sums *)
 Definition sum_map {A A' B B'} (f: A → A') (g: B → B') (xy : A + B) : A' + B' :=