theorem
L38 ↗proj_of_ringEquiv
AlgebraicCurves.Geometry.Sheaves.Proofs.Scheme_Modules_IsInvertible_nonempty_iso_unit_of_pullback_squareZero.proj_of_ringEquiv
Source context 6 commands
Surrounding namespaces, section variables, and local commands at this declaration.
section ProofImplementation
namespace AlgebraicCurves.Geometry.Sheaves.Proofs
namespace Scheme_Modules_IsInvertible_nonempty_iso_unit_of_pullback_squareZero
universe u
open CategoryTheory CategoryTheory.Limits AlgebraicGeometry TensorProduct
noncomputable sectionLean source · full declaration
theorem proj_of_ringEquiv {R S : Type u} [CommRing R] [CommRing S] (e : R ≃+* S)
(M : Type u) [AddCommGroup M] [Module S M] [Module.Projective S M] :
letI : Module R M := Module.compHom M e.toRingHom
Module.Projective R M := by
let : Module R M := Module.compHom M e.toRingHom
have : RingHomInvPair (e.symm : S →+* R) (e : R →+* S) := RingHomInvPair.of_ringEquiv e.symm
have : RingHomInvPair (e : R →+* S) (e.symm : S →+* R) := RingHomInvPair.of_ringEquiv e
have slEq : M ≃ₛₗ[(e.symm : S →+* R)] M :=
{ toFun := id, invFun := id, left_inv := fun _ => rfl, right_inv := fun _ => rfl,
map_add' := fun _ _ => rfl,
map_smul' := fun s m => by
simp only [id]
change s • m = (e (e.symm s)) • m
rw [e.apply_symm_apply] }
exact Module.Projective.of_equiv slEq