|
| 1 | +/- |
| 2 | +Copyright (c) 2025 Christian Merten. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Christian Merten |
| 5 | +-/ |
| 6 | +module |
| 7 | + |
| 8 | +public import Mathlib.RingTheory.Extension.Cotangent.Basis |
| 9 | +public import Mathlib.RingTheory.Extension.Cotangent.Free |
| 10 | + |
| 11 | +/-! |
| 12 | +# Standard smooth of free Kaehler differentials |
| 13 | +
|
| 14 | +In this file we show a presentation independent characterization of being |
| 15 | +standard smooth: An `R`-algebra `S` of finite presentation is standard smooth if and only if |
| 16 | +`H¹(S/R) = 0` and `Ω[S⁄R]` is free on `{d sᵢ}ᵢ` for some `sᵢ : S`. |
| 17 | +
|
| 18 | +From this we deduce relations of standard smooth with other local properties. |
| 19 | +
|
| 20 | +## Main results |
| 21 | +
|
| 22 | +- `IsStandardSmooth.iff_exists_basis_kaehlerDifferential`: An `R`-algebra `S` of finite |
| 23 | + presentation is standard smooth if and only if `H¹(S/R) = 0` and `Ω[S⁄R]` is free on |
| 24 | + `{d sᵢ}ᵢ` for some `sᵢ : S`. |
| 25 | +- `Etale.iff_isStandardSmoothOfRelativeDimension_zero`: An `R`-algebra `S` is |
| 26 | + étale if and only if it is standard smooth of relative dimension zero. |
| 27 | +
|
| 28 | +## Notes |
| 29 | +
|
| 30 | +For an example of an algebra with `H¹(S/R) = 0` and `Ω[S⁄R]` finite and free, but |
| 31 | +`S` not standard smooth over `R`, consider `R = ℝ` and `S = R[x,y]/(x² + y² - 1)` the |
| 32 | +coordinate ring of the circle. One can show that then `Ω[S⁄R]` is `S`-free on `ω = xdy - ydx`, |
| 33 | +but there are no `f g : S` such that `ω = g df`. |
| 34 | +
|
| 35 | +## TODOs |
| 36 | +
|
| 37 | +- Deduce from this that smooth is equivalent to locally standard smooth (TODO @chrisflav). |
| 38 | +-/ |
| 39 | + |
| 40 | +@[expose] public section |
| 41 | + |
| 42 | +namespace Algebra |
| 43 | + |
| 44 | +open KaehlerDifferential |
| 45 | + |
| 46 | +variable {R S : Type*} [CommRing R] [CommRing S] [Algebra R S] |
| 47 | + |
| 48 | +/-- If `H¹(S/R) = 0` and `Ω[S⁄R]` is free on `{d sᵢ}ᵢ` for some `sᵢ : S`, then `S` |
| 49 | +is `R`-standard smooth. -/ |
| 50 | +theorem IsStandardSmooth.of_basis_kaehlerDifferential [FinitePresentation R S] |
| 51 | + [Subsingleton (H1Cotangent R S)] |
| 52 | + {I : Type*} (b : Module.Basis I S (Ω[S⁄R])) (hb : Set.range b ⊆ Set.range (D R S)) : |
| 53 | + IsStandardSmooth R S := by |
| 54 | + nontriviality S |
| 55 | + obtain ⟨n, ⟨P⟩⟩ := (FiniteType.iff_exists_generators (R := R) (S := S)).mp inferInstance |
| 56 | + choose f' hf' using hb |
| 57 | + let P := P.extend fun i ↦ f' ⟨i, rfl⟩ |
| 58 | + have hb (i : I) : b i = D R S (P.val (Sum.inr i)) := by simp [P, hf'] |
| 59 | + have : Function.Bijective (P.cotangentRestrict _) := |
| 60 | + P.cotangentRestrict_bijective_of_basis_kaehlerDifferential Sum.inl_injective |
| 61 | + Set.isCompl_range_inl_range_inr.symm b hb |
| 62 | + let bcot' : Module.Basis (Fin n) S P.toExtension.Cotangent := |
| 63 | + .ofRepr (.ofBijective (P.cotangentRestrict _) this) |
| 64 | + have : Finite I := Module.Finite.finite_basis b |
| 65 | + obtain ⟨Q, bcot, hcomp, hbcot⟩ := P.exists_presentation_of_basis_cotangent bcot' |
| 66 | + let P' : PreSubmersivePresentation R S (Unit ⊕ Fin n ⊕ I) (Unit ⊕ Fin n) := |
| 67 | + { __ := Q |
| 68 | + map := Sum.map _root_.id Sum.inl |
| 69 | + map_inj := Sum.map_injective.mpr ⟨fun _ _ h ↦ h, Sum.inl_injective⟩ } |
| 70 | + have hcompl : IsCompl (Set.range (Sum.inr ∘ Sum.inr)) (Set.range P'.map) := by |
| 71 | + simp [P', ← eq_compl_iff_isCompl, Set.ext_iff, Set.mem_compl_iff] |
| 72 | + have hbij : Function.Bijective (P'.cotangentRestrict P'.map_inj) := by |
| 73 | + apply P'.cotangentRestrict_bijective_of_basis_kaehlerDifferential P'.map_inj hcompl b |
| 74 | + intro k |
| 75 | + simp only [hb, ← hcomp, P', Function.comp_def] |
| 76 | + let P'' : SubmersivePresentation R S _ _ := |
| 77 | + ⟨P', P'.isUnit_jacobian_of_cotangentRestrict_bijective bcot hbcot hbij⟩ |
| 78 | + exact P''.isStandardSmooth |
| 79 | + |
| 80 | +/-- An `R`-algebra `S` of finite presentation is standard smooth if and only if |
| 81 | +`H¹(S/R) = 0` and `Ω[S⁄R]` is free on `{d sᵢ}ᵢ` for some `sᵢ : S`. -/ |
| 82 | +theorem IsStandardSmooth.iff_exists_basis_kaehlerDifferential [FinitePresentation R S] : |
| 83 | + IsStandardSmooth R S ↔ Subsingleton (H1Cotangent R S) ∧ |
| 84 | + ∃ (I : Type) (b : Module.Basis I S (Ω[S⁄R])), Set.range b ⊆ Set.range (D R S) := by |
| 85 | + refine ⟨fun h ↦ ⟨inferInstance, ?_⟩, fun ⟨h, ⟨_, b, hb⟩⟩ ↦ .of_basis_kaehlerDifferential b hb⟩ |
| 86 | + obtain ⟨ι, σ, _, _, ⟨P⟩⟩ := Algebra.IsStandardSmooth.out (R := R) (S := S) |
| 87 | + exact ⟨_, P.basisKaehler, by simp [Set.range_subset_iff]⟩ |
| 88 | + |
| 89 | +/-- `S` is an étale `R`-algebra if and only if it is standard smooth of relative dimension `0`. -/ |
| 90 | +theorem Etale.iff_isStandardSmoothOfRelativeDimension_zero : |
| 91 | + Etale R S ↔ IsStandardSmoothOfRelativeDimension 0 R S := by |
| 92 | + refine ⟨fun h ↦ ?_, fun _ ↦ inferInstance⟩ |
| 93 | + nontriviality S |
| 94 | + suffices h : IsStandardSmooth R S by |
| 95 | + simp [IsStandardSmoothOfRelativeDimension.iff_of_isStandardSmooth] |
| 96 | + rw [IsStandardSmooth.iff_exists_basis_kaehlerDifferential] |
| 97 | + refine ⟨inferInstance, ⟨Empty, Module.Basis.empty Ω[S⁄R], ?_⟩⟩ |
| 98 | + simp [Set.range_subset_iff] |
| 99 | + |
| 100 | +end Algebra |
0 commit comments