diff --git a/Lebesgue/Subset_R.v b/Lebesgue/Subset_R.v
index c8068178f0b52d92b233ff4c88a9620acc33e21f..85d5d2b586f7833d23546b73a1f31e8b0d7ebf6f 100644
--- a/Lebesgue/Subset_R.v
+++ b/Lebesgue/Subset_R.v
@@ -568,24 +568,24 @@ destruct HA as [a [b HA]]; rewrite HA.
 unfold union_seq; apply open_or_count; intros n; apply open_intoo.
 (* *)
 destruct (R_second_countable_alt A HA) as [P HP].
-destruct (keep_useful P) as [phi [optN HB]].
-pose (a := get_useful (fun n => fst (bij_NQ2 n)) 0 phi optN).
-pose (b := get_useful (fun n => snd (bij_NQ2 n)) 0 phi optN).
-exists a, b.
-rewrite HP; clear HP; unfold a, b, get_useful; clear a b.
-apply subset_ext_equiv; split.
-(* . *)
-intros x [p [Hx1 [Hx2 Hx3]]].
-destruct optN as [N | ], HB as [HB1 HB2], (HB2 p Hx1) as [n Hn].
-destruct Hn as [Hn1 Hn2]; exists n; case (lt_dec n (S N)); intros Hn;
-    try easy; split; rewrite <- Hn2; easy.
-exists n; split; rewrite <- Hn; easy.
-(* . *)
-intros x [n [Hx1 Hx2]].
-exists (phi n); generalize Hx1, Hx2; clear Hx1 Hx2.
-destruct optN as [N | ], HB as [HB1 HB2].
-case (lt_dec n (S N)); intros Hn Hx1 Hx2; try lra; split; try apply HB1; easy.
-intros Hx1 Hx2; split; try apply HB1; easy.
+unfold R_subset_open.
+pose (a := fun n =>
+    match (in_dec P n) with
+    | left _ => fst (bij_NQ2 n)
+    | right _ => 0%Q
+    end).
+pose (b := fun n =>
+    match (in_dec P n) with
+    | left _ => snd (bij_NQ2 n)
+    | right _ => 0%Q
+    end).
+exists a, b; rewrite HP; f_equal.
+apply subset_seq_ext.
+intros n; unfold a, b; destruct (in_dec P n) as [Hn | Hn].
+rewrite (subset_ext (Prop_cst (P n)) fullset); try easy.
+rewrite inter_full_l; easy.
+rewrite (subset_ext (Prop_cst (P n)) emptyset); try easy.
+rewrite inter_empty_l, R_oo_diag_is_empty; easy.
 Qed.
 
 End R_subset_open_Facts.