import Mathlib set_option autoImplicit false set_option maxHeartbeats 1600000 set_option synthInstance.maxHeartbeats 600000 open CategoryTheory CategoryTheory.Limits AlgebraicGeometry RingHom noncomputable section universe u namespace AlgebraicGeometry namespace KwSmoothIrredRelDimConstantEngine theorem kwSmoothIrredRelDimConstantEngine_axiomAnchor : True := have _h₁ : True = True := propext Iff.rfl have _h₂ : ℕ := Classical.choice ⟨0⟩ have _h₃ : Quot.mk (fun (_ _ : ℕ) => True) 0 = Quot.mk (fun (_ _ : ℕ) => True) 1 := Quot.sound trivial trivial theorem kw_isStandardSmoothOfRelativeDimension_finrank {R : Type*} {S : Type*} [CommRing R] [CommRing S] [Algebra R S] [Algebra.IsStandardSmooth R S] [Nontrivial S] : Algebra.IsStandardSmoothOfRelativeDimension (Module.finrank S (Ω[S⁄R])) R S := by rw [Algebra.IsStandardSmoothOfRelativeDimension.iff_of_isStandardSmooth, Module.finrank, Cardinal.cast_toNat_of_lt_aleph0] exact Module.rank_lt_aleph0 S (Ω[S⁄R]) theorem kw_isStandardSmoothOfRelativeDimension_unique {R : Type*} {S : Type*} [CommRing R] [CommRing S] [Algebra R S] [Nontrivial S] {n m : ℕ} (hn : Algebra.IsStandardSmoothOfRelativeDimension n R S) (hm : Algebra.IsStandardSmoothOfRelativeDimension m R S) : n = m := by have h1 := @Algebra.IsStandardSmoothOfRelativeDimension.rank_kaehlerDifferential R S _ _ _ _ n hn have h2 := @Algebra.IsStandardSmoothOfRelativeDimension.rank_kaehlerDifferential R S _ _ _ _ m hm exact Nat.cast_injective (h1.symm.trans h2) section SchemeLevel variable {X Y : Scheme.{u}} theorem kw_isStandardSmoothOfRelDim_basicOpen {g : X ⟶ Y} [IsAffine Y] {V : X.Opens} (hV : IsAffineOpen V) {n : ℕ} (h : (g.appLE ⊤ V le_top).hom.IsStandardSmoothOfRelativeDimension n) (s : Γ(X, V)) : (g.appLE ⊤ (X.basicOpen s) le_top).hom.IsStandardSmoothOfRelativeDimension n := by haveI := hV.isLocalization_basicOpen s have hfac : g.appLE ⊤ V le_top ≫ X.presheaf.map (homOfLE (X.basicOpen_le s)).op = g.appLE ⊤ (X.basicOpen s) le_top := g.appLE_map _ _ rw [← hfac, CommRingCat.hom_comp] exact (isStandardSmoothOfRelativeDimension_stableUnderCompositionWithLocalizationAway n).right _ s _ h theorem kw_exists_relDim_appLE_top_of_relDim (g : X ⟶ Y) [IsAffine Y] (n : ℕ) [hg : SmoothOfRelativeDimension n g] (x : X) : ∃ (V : X.Opens) (_ : IsAffineOpen V), x ∈ V ∧ (g.appLE ⊤ V le_top).hom.IsStandardSmoothOfRelativeDimension n := by obtain ⟨_, ⟨V₀, hV₀, rfl⟩, hxV₀, -⟩ := X.isBasis_affineOpens.exists_subset_of_mem_open (Set.mem_univ x) isOpen_univ have hloc : RingHom.Locally (RingHom.IsStandardSmoothOfRelativeDimension n) (g.appLE ⊤ V₀ le_top).hom := HasRingHomProperty.appLE (@SmoothOfRelativeDimension n) g hg ⟨⊤, isAffineOpen_top Y⟩ ⟨V₀, hV₀⟩ le_top obtain ⟨T, hTspan, hT⟩ := hloc have hcov : V₀ ≤ ⨆ t : T, X.basicOpen (t : Γ(X, V₀)) := (hV₀.self_le_iSup_basicOpen_iff).mpr hTspan obtain ⟨t, hxt⟩ : ∃ t : T, x ∈ X.basicOpen (t : Γ(X, V₀)) := by have := hcov hxV₀ simpa [TopologicalSpace.Opens.mem_iSup] using this refine ⟨X.basicOpen (t : Γ(X, V₀)), hV₀.basicOpen _, hxt, ?_⟩ haveI := hV₀.isLocalization_basicOpen (t : Γ(X, V₀)) have hfac : g.appLE ⊤ V₀ le_top ≫ X.presheaf.map (homOfLE (X.basicOpen_le _)).op = g.appLE ⊤ (X.basicOpen (t : Γ(X, V₀))) le_top := g.appLE_map _ _ rw [← hfac, CommRingCat.hom_comp] have hres := isStandardSmoothOfRelativeDimension_respectsIso.left _ (IsLocalization.algEquiv (.powers (t : Γ(X, V₀))) (Localization.Away (t : Γ(X, V₀))) Γ(X, X.basicOpen (t : Γ(X, V₀)))).toRingEquiv (hT t t.2) convert hres using 2 rw [← RingHom.comp_assoc]; congr 1 exact ((IsLocalization.algEquiv (.powers (t : Γ(X, V₀))) (Localization.Away (t : Γ(X, V₀))) Γ(X, X.basicOpen (t : Γ(X, V₀)))).toAlgHom.comp_algebraMap).symm theorem kw_exists_relDim_appLE_top (g : X ⟶ Y) [IsAffine Y] [Smooth g] (x : X) : ∃ (V : X.Opens) (_ : IsAffineOpen V) (_ : x ∈ V) (r : ℕ), (g.appLE ⊤ V le_top).hom.IsStandardSmoothOfRelativeDimension r := by obtain ⟨_, ⟨V₀, hV₀, rfl⟩, hxV₀, -⟩ := X.isBasis_affineOpens.exists_subset_of_mem_open (Set.mem_univ x) isOpen_univ have hloc : RingHom.Locally RingHom.IsStandardSmooth (g.appLE ⊤ V₀ le_top).hom := by rw [← smooth_iff_locally_isStandardSmooth] exact g.smooth_appLE (isAffineOpen_top Y) hV₀ le_top obtain ⟨T, hTspan, hT⟩ := hloc have hcov : V₀ ≤ ⨆ t : T, X.basicOpen (t : Γ(X, V₀)) := (hV₀.self_le_iSup_basicOpen_iff).mpr hTspan obtain ⟨t, hxt⟩ : ∃ t : T, x ∈ X.basicOpen (t : Γ(X, V₀)) := by have := hcov hxV₀ simpa [TopologicalSpace.Opens.mem_iSup] using this haveI := hV₀.isLocalization_basicOpen (t : Γ(X, V₀)) haveI : Nontrivial Γ(X, X.basicOpen (t : Γ(X, V₀))) := @Scheme.component_nontrivial X _ ⟨⟨x, hxt⟩⟩ have hfac : g.appLE ⊤ V₀ le_top ≫ X.presheaf.map (homOfLE (X.basicOpen_le _)).op = g.appLE ⊤ (X.basicOpen (t : Γ(X, V₀))) le_top := g.appLE_map _ _ have hstd : (g.appLE ⊤ (X.basicOpen (t : Γ(X, V₀))) le_top).hom.IsStandardSmooth := by rw [← hfac, CommRingCat.hom_comp] have hres := isStandardSmooth_respectsIso.left _ (IsLocalization.algEquiv (.powers (t : Γ(X, V₀))) (Localization.Away (t : Γ(X, V₀))) Γ(X, X.basicOpen (t : Γ(X, V₀)))).toRingEquiv (hT t t.2) convert hres using 2 rw [← RingHom.comp_assoc]; congr 1 exact ((IsLocalization.algEquiv (.powers (t : Γ(X, V₀))) (Localization.Away (t : Γ(X, V₀))) Γ(X, X.basicOpen (t : Γ(X, V₀)))).toAlgHom.comp_algebraMap).symm algebraize [(g.appLE ⊤ (X.basicOpen (t : Γ(X, V₀))) le_top).hom] exact ⟨X.basicOpen (t : Γ(X, V₀)), hV₀.basicOpen _, hxt, _, kw_isStandardSmoothOfRelativeDimension_finrank⟩ theorem kw_relDim_eq_of_mem_both {g : X ⟶ Y} [IsAffine Y] {V₁ V₂ : X.Opens} (hV₁ : IsAffineOpen V₁) (hV₂ : IsAffineOpen V₂) {n₁ n₂ : ℕ} (h₁ : (g.appLE ⊤ V₁ le_top).hom.IsStandardSmoothOfRelativeDimension n₁) (h₂ : (g.appLE ⊤ V₂ le_top).hom.IsStandardSmoothOfRelativeDimension n₂) {z : X} (hz₁ : z ∈ V₁) (hz₂ : z ∈ V₂) : n₁ = n₂ := by obtain ⟨s₁, hs₁le, hzs₁⟩ := hV₁.exists_basicOpen_le ⟨z, hz₂⟩ hz₁ have h₁' := kw_isStandardSmoothOfRelDim_basicOpen hV₁ h₁ s₁ obtain ⟨s₂, hs₂le, hzs₂⟩ := hV₂.exists_basicOpen_le ⟨z, show z ∈ X.basicOpen s₁ from hzs₁⟩ hz₂ have h₂' := kw_isStandardSmoothOfRelDim_basicOpen hV₂ h₂ s₂ let s₂' : Γ(X, X.basicOpen s₁) := X.presheaf.map (homOfLE (hs₁le : X.basicOpen s₁ ≤ V₂)).op s₂ have hEq : X.basicOpen s₂' = X.basicOpen s₂ := by have := X.basicOpen_res s₂ (homOfLE hs₁le).op simp only [s₂', this]; exact inf_eq_right.mpr hs₂le have h₁'' : (g.appLE ⊤ (X.basicOpen s₂) le_top).hom.IsStandardSmoothOfRelativeDimension n₁ := by have := kw_isStandardSmoothOfRelDim_basicOpen (hV₁.basicOpen s₁) h₁' s₂' rwa [hEq] at this haveI : Nontrivial Γ(X, X.basicOpen s₂) := @Scheme.component_nontrivial X _ ⟨⟨z, hzs₂⟩⟩ algebraize [(g.appLE ⊤ (X.basicOpen s₂) le_top).hom] exact kw_isStandardSmoothOfRelativeDimension_unique h₁'' h₂' theorem kw_appLE_top_opensImage {W : X.Opens} {g : X ⟶ Y} [IsAffine Y] {V : (W : Scheme.{u}).Opens} {n : ℕ} (h : ((W.ι ≫ g).appLE ⊤ V le_top).hom.IsStandardSmoothOfRelativeDimension n) : (g.appLE ⊤ (W.ι ''ᵁ V) le_top).hom.IsStandardSmoothOfRelativeDimension n := by have hle : V ≤ W.ι ⁻¹ᵁ (W.ι ''ᵁ V) := (Scheme.Hom.preimage_image_eq W.ι V).ge have hcomp : g.appLE ⊤ (W.ι ''ᵁ V) le_top ≫ W.ι.appLE (W.ι ''ᵁ V) V hle = (W.ι ≫ g).appLE ⊤ V le_top := Scheme.Hom.appLE_comp_appLE _ _ _ _ _ _ _ haveI hiso : IsIso (W.ι.appLE (W.ι ''ᵁ V) V hle) := by have heq : W.ι.appLE (W.ι ''ᵁ V) V hle = W.ι.app (W.ι ''ᵁ V) ≫ (W : Scheme.{u}).presheaf.map (eqToHom (Scheme.Hom.preimage_image_eq W.ι V).symm).op := by simp only [Scheme.Hom.appLE]; congr 1 rw [heq]; exact IsIso.comp_isIso have heq2 : g.appLE ⊤ (W.ι ''ᵁ V) le_top = (W.ι ≫ g).appLE ⊤ V le_top ≫ inv (W.ι.appLE (W.ι ''ᵁ V) V hle) := by rw [← hcomp, Category.assoc, IsIso.hom_inv_id, Category.comp_id] rw [heq2, CommRingCat.hom_comp] exact isStandardSmoothOfRelativeDimension_respectsIso.left _ (asIso (W.ι.appLE (W.ι ''ᵁ V) V hle)).symm.commRingCatIsoToRingEquiv h theorem kw_smoothOfRelativeDimension_of_irreducible_of_nonempty_open (g : X ⟶ Y) [IsAffine Y] [Smooth g] [IrreducibleSpace X] (n : ℕ) (W : X.Opens) (hWne : (W : Set X).Nonempty) (hWg : SmoothOfRelativeDimension n (W.ι ≫ g)) : SmoothOfRelativeDimension n g := by have _ := kwSmoothIrredRelDimConstantEngine_axiomAnchor obtain ⟨w₀, hw₀W⟩ := hWne obtain ⟨Vw, hVw, hw₀Vw, hVwn⟩ := kw_exists_relDim_appLE_top_of_relDim (X := (W : Scheme.{u})) (W.ι ≫ g) n ⟨w₀, hw₀W⟩ have hVwX : IsAffineOpen (W.ι ''ᵁ Vw) := hVw.image_of_isOpenImmersion W.ι have hw₀VwX : w₀ ∈ (W.ι ''ᵁ Vw : X.Opens) := ⟨⟨w₀, hw₀W⟩, hw₀Vw, rfl⟩ have hVwXn : (g.appLE ⊤ (W.ι ''ᵁ Vw) le_top).hom.IsStandardSmoothOfRelativeDimension n := kw_appLE_top_opensImage hVwn constructor intro x obtain ⟨Vx, hVx, hxVx, r, hVxr⟩ := kw_exists_relDim_appLE_top g x obtain ⟨z, hzVx, hzVw⟩ : ((Vx : Set X) ∩ (W.ι ''ᵁ Vw : Set X)).Nonempty := by have := (IrreducibleSpace.isIrreducible_univ X).2 Vx (W.ι ''ᵁ Vw) Vx.2 (W.ι ''ᵁ Vw).2 (by exact ⟨x, Set.mem_univ x, hxVx⟩) (by exact ⟨w₀, Set.mem_univ w₀, hw₀VwX⟩) simpa using this have hreq : r = n := kw_relDim_eq_of_mem_both hVx hVwX hVxr hVwXn hzVx hzVw exact ⟨⊤, isAffineOpen_top Y, Vx, hVx, hxVx, le_top, hreq ▸ hVxr⟩ theorem kw_of_comp_isOpenImmersion (P : MorphismProperty Scheme.{u}) [IsZariskiLocalAtTarget P] {Z : Scheme.{u}} (f : X ⟶ Y) (i : Y ⟶ Z) [IsOpenImmersion i] (h : P (f ≫ i)) : P f := by have hr := IsZariskiLocalAtTarget.restrict h i.opensRange have hpre : (f ≫ i) ⁻¹ᵁ i.opensRange = ⊤ := by ext x; simp [Scheme.Hom.opensRange] let α : X ≅ ((f ≫ i) ⁻¹ᵁ i.opensRange : X.Opens) := X.topIso.symm ≪≫ X.isoOfEq hpre.symm have hα : α.hom ≫ ((f ≫ i) ⁻¹ᵁ i.opensRange).ι = 𝟙 X := by simp [α, ← Scheme.topIso_hom] have harr : Arrow.mk f ≅ Arrow.mk ((f ≫ i) ∣_ i.opensRange) := Arrow.isoMk α i.isoOpensRange <| by dsimp only [Arrow.mk_left, Arrow.mk_right, Arrow.mk_hom] rw [← cancel_mono i.opensRange.ι, Category.assoc, morphismRestrict_ι, ← Category.assoc, hα, Category.id_comp, Category.assoc, Scheme.Hom.isoOpensRange_hom_ι] exact (P.arrow_mk_iso_iff harr).mpr hr theorem kw_smoothOfRelativeDimension_of_irreducible_of_isOpenImmersion (g : X ⟶ Y) [IsAffine Y] [Smooth g] [IrreducibleSpace X] (n : ℕ) {W : Scheme.{u}} (i : W ⟶ X) [IsOpenImmersion i] [Nonempty W] (hig : SmoothOfRelativeDimension n (i ≫ g)) : SmoothOfRelativeDimension n g := by haveI := smoothOfRelativeDimension_isStableUnderBaseChange (n := n) refine kw_smoothOfRelativeDimension_of_irreducible_of_nonempty_open g n i.opensRange ⟨i (Classical.arbitrary W), ⟨_, rfl⟩⟩ ?_ rw [← MorphismProperty.cancel_left_of_respectsIso (P := @SmoothOfRelativeDimension n) i.isoOpensRange.hom (i.opensRange.ι ≫ g), ← Category.assoc, Scheme.Hom.isoOpensRange_hom_ι] exact hig end SchemeLevel end KwSmoothIrredRelDimConstantEngine end AlgebraicGeometry namespace AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine theorem kw_not_isStandardSmoothOfRelDim_succ_of_finite {k : Type*} [Field k] [PerfectField k] {A : Type*} [CommRing A] [Algebra k A] [Nontrivial A] [Module.Finite k A] [_root_.IsReduced A] (n : ℕ) : ¬ Algebra.IsStandardSmoothOfRelativeDimension (n + 1) k A := by intro hsm obtain ⟨ι, σ, _, _, P, hPdim⟩ := hsm have hne : Nonempty ((Set.range P.map)ᶜ : Set ι) := by haveI : _root_.Finite ((Set.range P.map)ᶜ : Set ι) := Subtype.finite have hcard : Nat.card ((Set.range P.map)ᶜ : Set ι) = n + 1 := by have := Module.finrank_eq_nat_card_basis P.basisKaehler rw [Module.finrank, P.rank_kaehlerDifferential, hPdim, Cardinal.toNat_natCast] at this exact this.symm exact Nat.card_pos_iff.mp (hcard ▸ Nat.succ_pos n) |>.1 obtain ⟨⟨i₀, hi₀⟩⟩ := hne set a : A := P.val i₀ with ha have hDa_free : ∀ x : A, x • (KaehlerDifferential.D k A) a = 0 → x = 0 := by intro x hx rw [(P.basisKaehler_apply ⟨i₀, hi₀⟩).symm] at hx have hrepr : P.basisKaehler.repr (x • P.basisKaehler ⟨i₀, hi₀⟩) ⟨i₀, hi₀⟩ = 0 := by rw [hx]; simp rw [map_smul, Module.Basis.repr_self, Finsupp.smul_single, smul_eq_mul, mul_one, Finsupp.single_eq_same] at hrepr exact hrepr haveI hAint : Algebra.IsIntegral k A := Algebra.IsIntegral.of_finite k A have hint : _root_.IsIntegral k a := hAint.isIntegral a set p := minpoly k a with hp have hpdeg : 0 < p.natDegree := minpoly.natDegree_pos hint have hpa : Polynomial.aeval a p = 0 := minpoly.aeval k a have hD0 : Polynomial.aeval a p.derivative • (KaehlerDifferential.D k A) a = 0 := by rw [← Derivation.map_aeval, hpa, map_zero] have hp'a : Polynomial.aeval a p.derivative = 0 := hDa_free _ hD0 have hp'ker : p.derivative ∈ RingHom.ker (Polynomial.aeval a : Polynomial k →ₐ[k] A) := hp'a rw [minpoly.ker_aeval_eq_span_minpoly k a, ← hp] at hp'ker have hp'0 : p.derivative = 0 := by rcases Submodule.mem_span_singleton.mp hp'ker with ⟨q, hq⟩ by_contra hne0 have hdeg : p.derivative.natDegree < p.natDegree := Polynomial.natDegree_derivative_lt hpdeg.ne' rw [← hq, smul_eq_mul] at hdeg hne0 have hqne : q ≠ 0 := left_ne_zero_of_mul (by simpa using hne0) have hpne : p ≠ 0 := minpoly.ne_zero hint rw [Polynomial.natDegree_mul hqne hpne] at hdeg omega have hnotsep : ¬ p.Separable := by rw [Polynomial.separable_def, hp'0, isCoprime_zero_right] exact fun hu ↦ (minpoly.degree_pos hint).ne' (hp ▸ Polynomial.isUnit_iff_degree_eq_zero.mp hu) refine hnotsep (PerfectField.separable_iff_squarefree.mpr ?_) intro q hq2 obtain ⟨c, hc⟩ := hq2 have hqc0 : (Polynomial.aeval a (q * c)) ^ 2 = 0 := by have heq : (q * c) ^ 2 = p * c := by rw [hc]; ring rw [← map_pow, heq, map_mul, hpa, zero_mul] have hqcmem : q * c ∈ RingHom.ker (Polynomial.aeval a : Polynomial k →ₐ[k] A) := (IsNilpotent.eq_zero ⟨2, hqc0⟩ : _) rw [minpoly.ker_aeval_eq_span_minpoly, ← hp, Ideal.mem_span_singleton, hc] at hqcmem rcases eq_or_ne (q * c) 0 with hqc | hqcne · have : p = 0 := by rw [hc, show q * q * c = q * (q * c) from by ring, hqc, mul_zero] exact absurd this (minpoly.ne_zero hint) · have hcan : q * (q * c) ∣ 1 * (q * c) := by rw [one_mul, ← mul_assoc]; exact hqcmem exact isUnit_of_dvd_one ((mul_dvd_mul_iff_right hqcne).mp hcan) end AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine end /-- info: 'AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kwSmoothIrredRelDimConstantEngine_axiomAnchor' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs (whitespace := lax) in #print axioms AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kwSmoothIrredRelDimConstantEngine_axiomAnchor /-- info: 'AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_isStandardSmoothOfRelativeDimension_unique' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs (whitespace := lax) in #print axioms AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_isStandardSmoothOfRelativeDimension_unique /-- info: 'AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_smoothOfRelativeDimension_of_irreducible_of_nonempty_open' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs (whitespace := lax) in #print axioms AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_smoothOfRelativeDimension_of_irreducible_of_nonempty_open /-- info: 'AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_of_comp_isOpenImmersion' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs (whitespace := lax) in #print axioms AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_of_comp_isOpenImmersion /-- info: 'AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_not_isStandardSmoothOfRelDim_succ_of_finite' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs (whitespace := lax) in #print axioms AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_not_isStandardSmoothOfRelDim_succ_of_finite /-- info: 'AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_isStandardSmoothOfRelativeDimension_finrank' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs (whitespace := lax) in #print axioms AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_isStandardSmoothOfRelativeDimension_finrank /-- info: 'AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_isStandardSmoothOfRelDim_basicOpen' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs (whitespace := lax) in #print axioms AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_isStandardSmoothOfRelDim_basicOpen /-- info: 'AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_exists_relDim_appLE_top_of_relDim' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs (whitespace := lax) in #print axioms AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_exists_relDim_appLE_top_of_relDim /-- info: 'AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_exists_relDim_appLE_top' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs (whitespace := lax) in #print axioms AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_exists_relDim_appLE_top /-- info: 'AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_relDim_eq_of_mem_both' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs (whitespace := lax) in #print axioms AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_relDim_eq_of_mem_both /-- info: 'AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_appLE_top_opensImage' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs (whitespace := lax) in #print axioms AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_appLE_top_opensImage /-- info: 'AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_smoothOfRelativeDimension_of_irreducible_of_isOpenImmersion' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs (whitespace := lax) in #print axioms AlgebraicGeometry.KwSmoothIrredRelDimConstantEngine.kw_smoothOfRelativeDimension_of_irreducible_of_isOpenImmersion