@@ -684,8 +684,8 @@ end constructions
684
684
/-- Equivalences between measurable spaces. Main application is the simplification of measurability
685
685
statements along measurable equivalences. -/
686
686
structure measurable_equiv (α β : Type *) [measurable_space α] [measurable_space β] extends α ≃ β :=
687
- (measurable_to_fun : measurable to_fun )
688
- (measurable_inv_fun : measurable inv_fun )
687
+ (measurable_to_fun : measurable to_equiv )
688
+ (measurable_inv_fun : measurable to_equiv.symm )
689
689
690
690
infix ` ≃ᵐ `:25 := measurable_equiv
691
691
@@ -698,7 +698,7 @@ instance : has_coe_to_fun (α ≃ᵐ β) :=
698
698
699
699
variables {α β}
700
700
701
- lemma coe_eq (e : α ≃ᵐ β) : (e : α → β) = e.to_equiv := rfl
701
+ @[simp] lemma coe_to_equiv (e : α ≃ᵐ β) : (e.to_equiv : α → β) = e := rfl
702
702
703
703
@[measurability]
704
704
protected lemma measurable (e : α ≃ᵐ β) : measurable (e : α → β) :=
@@ -715,25 +715,60 @@ def refl (α : Type*) [measurable_space α] : α ≃ᵐ α :=
715
715
instance : inhabited (α ≃ᵐ α) := ⟨refl α⟩
716
716
717
717
/-- The composition of equivalences between measurable spaces. -/
718
- @[simps] def trans (ab : α ≃ᵐ β) (bc : β ≃ᵐ γ) :
718
+ def trans (ab : α ≃ᵐ β) (bc : β ≃ᵐ γ) :
719
719
α ≃ᵐ γ :=
720
720
{ to_equiv := ab.to_equiv.trans bc.to_equiv,
721
721
measurable_to_fun := bc.measurable_to_fun.comp ab.measurable_to_fun,
722
722
measurable_inv_fun := ab.measurable_inv_fun.comp bc.measurable_inv_fun }
723
723
724
724
/-- The inverse of an equivalence between measurable spaces. -/
725
- @[simps] def symm (ab : α ≃ᵐ β) : β ≃ᵐ α :=
725
+ def symm (ab : α ≃ᵐ β) : β ≃ᵐ α :=
726
726
{ to_equiv := ab.to_equiv.symm,
727
727
measurable_to_fun := ab.measurable_inv_fun,
728
728
measurable_inv_fun := ab.measurable_to_fun }
729
729
730
- @[simp] lemma coe_symm_mk (e : α ≃ β) (h1 : measurable e) (h2 : measurable e.symm) :
731
- ((⟨e, h1, h2⟩ : α ≃ᵐ β).symm : β → α) = e.symm := rfl
730
+ @[simp] lemma coe_to_equiv_symm (e : α ≃ᵐ β) : (e.to_equiv.symm : β → α) = e.symm := rfl
731
+
732
+ /-- See Note [custom simps projection]. We need to specify this projection explicitly in this case,
733
+ because it is a composition of multiple projections. -/
734
+ def simps.apply (h : α ≃ᵐ β) : α → β := h
735
+ /-- See Note [custom simps projection] -/
736
+ def simps.symm_apply (h : α ≃ᵐ β) : β → α := h.symm
737
+
738
+ initialize_simps_projections measurable_equiv
739
+ (to_equiv_to_fun → apply, to_equiv_inv_fun → symm_apply)
740
+
741
+ lemma to_equiv_injective : injective (to_equiv : (α ≃ᵐ β) → (α ≃ β)) :=
742
+ by { rintro ⟨e₁, _, _⟩ ⟨e₂, _, _⟩ (rfl : e₁ = e₂), refl }
743
+
744
+ @[ext] lemma ext {e₁ e₂ : α ≃ᵐ β} (h : (e₁ : α → β) = e₂) : e₁ = e₂ :=
745
+ to_equiv_injective $ equiv.coe_fn_injective h
746
+
747
+ @[simp] lemma symm_mk (e : α ≃ β) (h1 : measurable e) (h2 : measurable e.symm) :
748
+ (⟨e, h1, h2⟩ : α ≃ᵐ β).symm = ⟨e.symm, h2, h1⟩ := rfl
749
+
750
+ attribute [simps apply to_equiv] trans refl
751
+
752
+ @[simp] lemma symm_refl (α : Type *) [measurable_space α] : (refl α).symm = refl α := rfl
732
753
733
754
@[simp] theorem symm_comp_self (e : α ≃ᵐ β) : e.symm ∘ e = id := funext e.left_inv
734
755
735
756
@[simp] theorem self_comp_symm (e : α ≃ᵐ β) : e ∘ e.symm = id := funext e.right_inv
736
757
758
+ @[simp] theorem apply_symm_apply (e : α ≃ᵐ β) (y : β) : e (e.symm y) = y := e.right_inv y
759
+
760
+ @[simp] theorem symm_apply_apply (e : α ≃ᵐ β) (x : α) : e.symm (e x) = x := e.left_inv x
761
+
762
+ @[simp] theorem symm_trans_self (e : α ≃ᵐ β) : e.symm.trans e = refl β :=
763
+ ext e.self_comp_symm
764
+
765
+ @[simp] theorem self_trans_symm (e : α ≃ᵐ β) : e.trans e.symm = refl α :=
766
+ ext e.symm_comp_self
767
+
768
+ protected theorem surjective (e : α ≃ᵐ β) : surjective e := e.to_equiv.surjective
769
+ protected theorem bijective (e : α ≃ᵐ β) : bijective e := e.to_equiv.bijective
770
+ protected theorem injective (e : α ≃ᵐ β) : injective e := e.to_equiv.injective
771
+
737
772
/-- Equal measurable spaces are equivalent. -/
738
773
protected def cast {α β} [i₁ : measurable_space α] [i₂ : measurable_space β]
739
774
(h : α = β) (hi : i₁ == i₂) : α ≃ᵐ β :=
@@ -746,7 +781,7 @@ protected lemma measurable_coe_iff {f : β → γ} (e : α ≃ᵐ β) :
746
781
iff.intro
747
782
(assume hfe,
748
783
have measurable (f ∘ (e.symm.trans e).to_equiv) := hfe.comp e.symm.measurable,
749
- by rwa [trans_to_equiv, symm_to_equiv, equiv.symm_trans ] at this )
784
+ by rwa [coe_to_equiv, symm_trans_self ] at this )
750
785
(λ h, h.comp e.measurable)
751
786
752
787
/-- Products of equivalent measurable spaces are equivalent. -/
@@ -911,6 +946,7 @@ def Pi_congr_right (e : Π a, π a ≃ᵐ π' a) : (Π a, π a) ≃ᵐ (Π a, π
911
946
measurable_pi_lambda _ (λ i, (e i).measurable_inv_fun.comp (measurable_pi_apply i)) }
912
947
913
948
/-- Pi-types are measurably equivalent to iterated products. -/
949
+ @[simps {fully_applied := ff}]
914
950
noncomputable def pi_measurable_equiv_tprod {l : list δ'} (hnd : l.nodup) (h : ∀ i, i ∈ l) :
915
951
(Π i, π i) ≃ᵐ list.tprod π l :=
916
952
{ to_equiv := list.tprod.pi_equiv_tprod hnd h,
0 commit comments