Theorem: FractionalIdeal.mem_canonicalEquiv_apply
File: Mathlib/RingTheory/FractionalIdeal.lean

tactic: rw [canonicalEquiv, mapEquiv_apply, mem_map]
state_before: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
P' : Type u_3
inst✝³ : CommRing P'
inst✝² : Algebra R P'
loc' : IsLocalization S P'
P'' : Type ?u.803106
inst✝¹ : CommRing P''
inst✝ : Algebra R P''
loc'' : IsLocalization S P''
I✝ J : FractionalIdeal S P
g : P →ₐ[R] P'
I : FractionalIdeal S P
x : P'
⊢ x ∈ ↑(canonicalEquiv S P P') I ↔
    ∃ y, y ∈ I ∧ ↑(IsLocalization.map P' (RingHom.id R) (_ : ∀ (y : R), y ∈ S → ↑(RingHom.id R) y ∈ S)) y = x

tactic: exact ⟨fun ⟨y, mem, Eq⟩ => ⟨y, mem, Eq⟩, fun ⟨y, mem, Eq⟩ => ⟨y, mem, Eq⟩⟩
state_before: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
P' : Type u_3
inst✝³ : CommRing P'
inst✝² : Algebra R P'
loc' : IsLocalization S P'
P'' : Type ?u.803106
inst✝¹ : CommRing P''
inst✝ : Algebra R P''
loc'' : IsLocalization S P''
I✝ J : FractionalIdeal S P
g : P →ₐ[R] P'
I : FractionalIdeal S P
x : P'
⊢ (∃ x_1,
      x_1 ∈ I ∧
        ↑↑(let src :=
                  ringEquivOfRingEquiv P P' (RingEquiv.refl R)
                    (_ : Submonoid.map (RingEquiv.toMonoidHom (RingEquiv.refl R)) S = S);
                { toEquiv := src.toEquiv,
                  map_mul' :=
                    (_ :
                      ∀ (x y : P),
                        Equiv.toFun
                            (ringEquivOfRingEquiv P P' (RingEquiv.refl R)
                                (_ : Submonoid.map (RingEquiv.toMonoidHom (RingEquiv.refl R)) S = S)).toEquiv
                            (x * y) =
                          Equiv.toFun
                              (ringEquivOfRingEquiv P P' (RingEquiv.refl R)
                                  (_ : Submonoid.map (RingEquiv.toMonoidHom (RingEquiv.refl R)) S = S)).toEquiv
                              x *
                            Equiv.toFun
                              (ringEquivOfRingEquiv P P' (RingEquiv.refl R)
                                  (_ : Submonoid.map (RingEquiv.toMonoidHom (RingEquiv.refl R)) S = S)).toEquiv
                              y),
                  map_add' :=
                    (_ :
                      ∀ (x y : P),
                        Equiv.toFun
                            (ringEquivOfRingEquiv P P' (RingEquiv.refl R)
                                (_ : Submonoid.map (RingEquiv.toMonoidHom (RingEquiv.refl R)) S = S)).toEquiv
                            (x + y) =
                          Equiv.toFun
                              (ringEquivOfRingEquiv P P' (RingEquiv.refl R)
                                  (_ : Submonoid.map (RingEquiv.toMonoidHom (RingEquiv.refl R)) S = S)).toEquiv
                              x +
                            Equiv.toFun
                              (ringEquivOfRingEquiv P P' (RingEquiv.refl R)
                                  (_ : Submonoid.map (RingEquiv.toMonoidHom (RingEquiv.refl R)) S = S)).toEquiv
                              y),
                  commutes' :=
                    (_ :
                      ∀ (r : R),
                        ↑(ringEquivOfRingEquiv P P' (RingEquiv.refl R)
                                (_ : Submonoid.map (RingEquiv.toMonoidHom (RingEquiv.refl R)) S = S))
                            (↑(algebraMap R P) r) =
                          ↑(algebraMap R P') (↑(RingEquiv.refl R) r)) })
            x_1 =
          x) ↔
    ∃ y, y ∈ I ∧ ↑(IsLocalization.map P' (RingHom.id R) (_ : ∀ (y : R), y ∈ S → ↑(RingHom.id R) y ∈ S)) y = x