diff --git a/Lebesgue/measurable_fun-new.v b/Lebesgue/measurable_fun-new.v
new file mode 100644
index 0000000000000000000000000000000000000000..45266031777c4541f774f127fa68dc5d9bcfe174
--- /dev/null
+++ b/Lebesgue/measurable_fun-new.v
@@ -0,0 +1,217 @@
+(**
+This file is part of the Elfic library
+
+Copyright (C) Boldo, Clément, Faissole, Martin, Mayero, Mouhcine
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 3 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+COPYING file for more details.
+*)
+
+(** References to pen-and-paper statements are from RR-9386,
+ https://hal.inria.fr/hal-03105815/
+
+ In version 2 (v2), this file refers to Section 9.2 (pp. 93-94).
+ In version 3 (v3), this file refers to Section 9.2 (pp. 130-132).
+
+ Some proof paths may differ. *)
+
+(*From Coquelicot Require Import Coquelicot.*)
+
+Require Import Subset Subset_dec Subset_system_base measurable.
+
+Open Scope nat_scope.
+
+
+Section compl1.
+
+Context {E F : Type}. (* Universes. *)
+
+Variable f : E -> F. (* Function. *)
+Variable AE : E -> Prop. (* Subset. *)
+Variable AF : F -> Prop. (* Subset. *)
+
+Inductive image : F -> Prop := Im : forall x, AE x -> image (f x).
+
+Definition preimage : E -> Prop := fun x => AF (f x).
+
+End compl1.
+
+
+Section compl2.
+
+Context {E F : Type}. (* Universes. *)
+
+Variable f : E -> F. (* Function. *)
+Variable PE : (E -> Prop) -> Prop. (* Subset system. *)
+Variable PF : (F -> Prop) -> Prop. (* Subset system. *)
+
+(* From Lemma 524 p. 93 (v2) *)
+Definition Image : (F -> Prop) -> Prop := fun AF => PE (preimage f AF).
+
+(* From Lemma 523 p. 93 (v2) *)
+Definition Preimage : (E -> Prop) -> Prop := image (preimage f) PF.
+
+End compl2.
+
+
+Section Measurable_fun_Def.
+
+Context {E F : Type}.
+Variable genE : (E -> Prop) -> Prop.
+Variable genF : (F -> Prop) -> Prop.
+
+(* Definition 522 p. 93 (v2) *)
+Definition measurable_fun : (E -> F) -> Prop :=
+  fun f => Incl (Preimage f (measurable genF)) (measurable genE).
+
+Lemma measurable_fun_ext :
+  forall f g, same_fun f g -> measurable_fun f -> measurable_fun g.
+Proof.
+intros f g H Hf AE HAE; induction HAE as [AF HAF].
+rewrite <- (preimage_ext_fun f); try easy.
+
+
+intros f g H Hf A [B HB]; rewrite (proj2 HB); apply Hf.
+exists B; split; try easy.
+apply preimage_ext_fun; easy.
+Qed.
+
+(* Lemma 526 p. 93 (v2) *)
+Lemma measurable_fun_cst : forall y, measurable_fun (fun _ => y).
+Proof.
+intros y A [B HB]; destruct (in_dec B y). ; apply measurable_Prop.
+Qed.
+
+(* Lemma 528 p. 94 *)
+Lemma measurable_fun_gen :
+  forall f,
+    measurable_fun f <->
+    (forall A, genF A -> measurable genE (fun x => A (f x))).
+Proof.
+intros f; split; intros H1.
+intros A HA.
+apply H1; apply measurable_gen; easy.
+intros A HA.
+induction HA.
+apply H1; easy.
+apply measurable_empty.
+apply measurable_compl; easy.
+apply measurable_union_countable; easy.
+Qed.
+End Measurable_fun_def.
+
+Section Measurable_fun_equiv.
+
+Context {E : Type}.
+Context {F : Type}.
+Variable genE : (E -> Prop) -> Prop.
+Variable genF : (F -> Prop) -> Prop.
+
+Lemma measurable_fun_gen_ext1 :
+  forall genE' : (E -> Prop) -> Prop,
+    (forall A, genE A -> measurable genE' A) ->
+    (forall A, genE' A -> measurable genE A) ->
+    forall f, measurable_fun genE genF f <-> measurable_fun genE' genF f.
+Proof.
+intros genE' H1 H2 f; split; intros Hf A HA.
+rewrite <- (measurable_gen_ext _ _ H1 H2).
+now apply Hf.
+rewrite (measurable_gen_ext _ _ H1 H2).
+now apply Hf.
+Qed.
+
+Lemma measurable_fun_gen_ext2 :
+  forall genF' : (F -> Prop) -> Prop,
+    (forall A, genF A -> measurable genF' A) ->
+    (forall A, genF' A -> measurable genF A) ->
+    forall f, measurable_fun genE genF f <-> measurable_fun genE genF' f.
+Proof.
+intros genF' H1 H2 f.
+generalize (measurable_gen_ext _ _ H1 H2); intros H.
+split; intros Hf A HA.
+rewrite <- H in HA; now apply Hf.
+rewrite H in HA; now apply Hf.
+Qed.
+
+End Measurable_fun_equiv.
+
+
+Section Measurable_fun_composition.
+
+Context {E F G : Type}.
+Variable genE : (E -> Prop) -> Prop.
+Variable genF : (F -> Prop) -> Prop.
+Variable genG : (G -> Prop) -> Prop.
+
+(* Lemma 530 p. 94 *)
+Lemma measurable_fun_composition :
+  forall (f1 : E -> F) (f2 : F -> G),
+    measurable_fun genE genF f1 ->
+    measurable_fun genF genG f2 ->
+    measurable_fun genE genG (fun x => f2 (f1 x)).
+Proof.
+intros f1 f2 H1 H2 A HA.
+apply H1 with (A:= fun x => A (f2 x)).
+now apply H2.
+Qed.
+
+End Measurable_fun_composition.
+
+
+Section Measurable_fun_swap.
+
+Context {E1 E2 F : Type}.
+
+Context {genE1 : (E1 -> Prop) -> Prop}.
+Context {genE2 : (E2 -> Prop) -> Prop}.
+Context {genF : (F -> Prop) -> Prop}.
+
+Let genE1xE2 := Gen_Product genE1 genE2.
+Let genE2xE1 := Gen_Product genE2 genE1.
+
+Let swap_var := swap (fun x : E1 * E2 => x).
+
+Lemma measurable_fun_swap_var :
+  measurable_fun genE2xE1 genE1xE2 swap_var.
+Proof.
+intros A HA; apply measurable_swap; easy.
+Qed.
+
+Lemma measurable_fun_swap :
+  forall f, measurable_fun genE1xE2 genF f -> measurable_fun genE2xE1 genF (swap f).
+Proof.
+intros f Hf.
+apply measurable_fun_composition with (2:= Hf).
+apply measurable_fun_swap_var.
+Qed.
+
+End Measurable_fun_swap.
+
+
+Section Measurable_fun_continuous.
+
+Context {E F : UniformSpace}.
+
+(* Lemma 529 p. 94 *)
+Lemma measurable_fun_continuous :
+  forall (f : E -> F),
+    (forall x, continuous f x) ->
+    measurable_fun open open f.
+Proof.
+intros f H.
+apply measurable_fun_gen.
+intros A HA.
+apply measurable_gen.
+intros x Hx.
+apply H.
+now apply HA.
+Qed.
+
+End Measurable_fun_continuous.