From 204e5f8f8a301d647f4bea76a5834e04fd2399ff Mon Sep 17 00:00:00 2001 From: dr-openai <169832560+dr-openai@users.noreply.github.com> Date: Thu, 29 Oct 2026 16:29:22 -0700 Subject: [PATCH] Align CM Hodge comparator declarations with the Lean solution --- history.md | 6 + .../HodgeConjectureCMAbelianVarieties/CM.lean | 29 +- .../Challenge.lean | 14 +- .../Definitions/Algebra/DeRham/Basic.lean | 173 +-- .../MappingCoconeShortExact.lean | 22 +- .../MappingCoconeShortExactNaturality.lean | 34 +- .../Algebra/Homology/LinearDual.lean | 87 +- .../ClosedImmersion/AnalyticLeftInverse.lean | 31 +- .../ClosedImmersion/HolomorphicCharts.lean | 58 +- .../ClosedImmersion/NormalCoordinates.lean | 231 +-- .../ClosedImmersion/SourceOpen.lean | 24 +- .../AmbientInjectiveResolution.lean | 93 +- .../Cohomology/GlobalSections.lean | 90 +- .../Cohomology/SupportedSingularModel.lean | 65 +- .../Cohomology/WithSupport.lean | 120 +- .../ComplexPoint/AnalyticSheaf.lean | 59 +- .../AlgebraicGeometry/ComplexPoint/Basic.lean | 131 +- .../Component/SingularClosedFiltration.lean | 67 +- .../Cycle/Component/SmoothClosedLift.lean | 52 +- .../SmoothSupportCoclassSection.lean | 124 +- .../Cycle/Component/SmoothSupportPurity.lean | 191 +-- .../Cycle/Component/SupportExtension.lean | 163 ++- .../Cycle/FundamentalClass.lean | 120 +- .../AlgebraicGeometry/Cycle/Local/Purity.lean | 28 +- .../Cycle/SmoothPair/CoclassOverlap.lean | 47 +- .../Cycle/SmoothPair/CoclassSection.lean | 206 +-- .../AlgebraicGeometry/Cycle/Support.lean | 37 +- .../Cycle/Transport/CohomologySheaf.lean | 47 +- .../Hodge/AnalyticDifferentialForms.lean | 1105 +++++++------- .../AlgebraicGeometry/Hodge/Filtration.lean | 845 ++++++----- .../Hodge/HolomorphicDeRham.lean | 497 +++---- .../AlgebraicGeometry/ProjectiveSpace.lean | 33 +- .../Stratification/Analytification.lean | 29 +- .../Stratification/Basic.lean | 27 +- .../LocalHomology/ComplexClass.lean | 45 +- .../LocalHomology/FundamentalClass.lean | 43 +- .../NormalProjectionCoclass.lean | 38 +- .../Sheaf/CohomologySection.lean | 36 +- .../Sheaf/CohomologyStalkVanishing.lean | 35 +- .../AlgebraicTopology/Sheaf/Constant.lean | 47 +- .../Sheaf/FlasqueBoundedBelow.lean | 33 +- .../Sheaf/FlasqueLowestCohomology.lean | 57 +- .../Sheaf/MapOfLocalStalks.lean | 33 +- .../Sheaf/OpenInjectiveResolution.lean | 31 +- .../Sheaf/OpenRestrictedLowestCohomology.lean | 41 +- .../Singular/Cohomology.lean | 49 +- .../Singular/RelativeCochainCone.lean | 49 +- .../RelativeCochainConeNaturality.lean | 46 +- .../Singular/Sheaf/Cochain.lean | 47 +- .../Singular/Sheaf/CochainOpenCone.lean | 107 +- .../Singular/Sheaf/CochainOpenSections.lean | 35 +- .../AlgebraicTopology/Support/Cohomology.lean | 58 +- .../Support/CohomologyFlasqueModel.lean | 63 +- .../Support/CohomologyInjectiveModel.lean | 101 +- .../Support/DerivedSections.lean | 35 +- .../Support/DerivedSectionsLocalization.lean | 56 +- .../Support/NeighborhoodPairImage.lean | 38 +- .../RelativeCohomologyOpenTransport.lean | 65 +- .../Support/RelativeCohomologySheaf.lean | 58 +- .../Support/SectionRestrictionCone.lean | 71 +- .../SingularCohomologySheafComparison.lean | 85 +- .../Support/SingularFlasqueModel.lean | 87 +- .../Support/SingularSectionCohomology.lean | 56 +- .../Definitions/Topology/Dimension/Basic.lean | 18 +- .../Lemmas/Algebra/DeRham/Basic.lean | 85 +- .../Lemmas/Algebra/FieldToComplex.lean | 19 +- .../MappingCoconeShortExact.lean | 30 +- .../MappingCoconeShortExactNaturality.lean | 40 +- .../MappingConeMapNaturality.lean | 27 +- .../RightDerivedFunctorPlusNaturality.lean | 74 +- .../RightDerivedFunctorPlusShift.lean | 77 +- ...ightDerivedFunctorPlusShiftNaturality.lean | 61 +- .../DerivedCategory/ShortExactQuasiIso.lean | 18 +- .../Lemmas/Algebra/Homology/LinearDual.lean | 54 +- .../Homology/LinearDualNaturality.lean | 107 +- .../Algebra/Homology/MapExtendNaturality.lean | 39 +- .../Algebra/Homology/MappingConeQuasiIso.lean | 40 +- .../ClosedImmersion/AnalyticLeftInverse.lean | 137 +- .../ClosedImmersion/HolomorphicCharts.lean | 242 ++-- .../ClosedImmersion/NormalCoordinates.lean | 121 +- .../ClosedImmersion/ResidueField.lean | 24 +- .../ClosedImmersion/SourceOpen.lean | 31 +- .../Cohomology/SingularComparison.lean | 107 +- .../Cohomology/SingularSheafComparison.lean | 87 +- .../Cohomology/SupportSingularGlobal.lean | 39 +- .../Cohomology/SupportedSingularModel.lean | 65 +- .../ComplexPoint/AffineScheme.lean | 223 +-- .../ComplexPoint/AffineSpace.lean | 229 +-- .../ComplexPoint/AnalyticMap.lean | 101 +- .../ComplexPoint/AnalyticSheaf.lean | 33 +- .../AlgebraicGeometry/ComplexPoint/Basic.lean | 57 +- .../ComplexPoint/ClosedImmersion.lean | 145 +- .../AlgebraicGeometry/ComplexPoint/Etale.lean | 239 ++-- .../ComplexPoint/LocalHomologyVanishing.lean | 36 +- .../ComplexPoint/Localization.lean | 39 +- .../ComplexPoint/Manifold.lean | 281 ++-- .../AlgebraicGeometry/ComplexPoint/Open.lean | 189 +-- .../ComplexPoint/Projective.lean | 123 +- .../ComplexPoint/ProjectiveCompact.lean | 57 +- .../ComplexPoint/ProjectiveHausdorff.lean | 219 +-- .../ComplexPoint/ProjectiveParacompact.lean | 39 +- .../ComplexPoint/SmoothCoordinates.lean | 296 ++-- .../ComplexPoint/StandardEtale.lean | 35 +- .../Cycle/Component/ClosedPointDimension.lean | 73 +- .../Cycle/Component/Dimension.lean | 46 +- .../Cycle/Component/LocalGenerator.lean | 78 +- .../Cycle/Component/NormalCoordinates.lean | 53 +- .../Cycle/Component/NormalGeometry.lean | 57 +- .../Component/SingularClosedFiltration.lean | 175 +-- .../Cycle/Component/SmoothClosedLift.lean | 89 +- .../Cycle/Component/SmoothSupportPurity.lean | 49 +- .../Cycle/Component/SupportExtension.lean | 31 +- .../Cycle/Local/LocalHomology.lean | 226 +-- .../AlgebraicGeometry/Cycle/Local/Purity.lean | 77 +- .../Cycle/SmoothPair/CoclassOverlap.lean | 81 +- .../Cycle/SmoothPair/CoclassSection.lean | 43 +- .../Cycle/SmoothPair/OpenTransport.lean | 175 +-- .../AlgebraicGeometry/Cycle/Support.lean | 115 +- .../Cycle/Transport/CohomologySheaf.lean | 47 +- .../Hodge/AnalyticDifferentialForms.lean | 111 +- .../AlgebraicGeometry/Hodge/Filtration.lean | 143 +- .../Hodge/HolomorphicDeRham.lean | 399 +++--- .../Hodge/HolomorphicPoincare.lean | 807 +++++------ .../Smooth/AffineRelativeDimension.lean | 21 +- .../Smooth/CatenaryDimension.lean | 26 +- .../Smooth/DimensionFormula.lean | 39 +- .../Smooth/Equidimensional.lean | 61 +- .../AlgebraicGeometry/Smooth/Locus.lean | 21 +- .../Smooth/PointwiseDimension.lean | 53 +- .../Smooth/SingularLocusDimension.lean | 83 +- .../Stratification/Analytification.lean | 61 +- .../Stratification/Basic.lean | 81 +- .../Stratification/ClosedFiltration.lean | 63 +- .../Stratification/LocalSupportVanishing.lean | 185 +-- .../CenteredComplexOrientation.lean | 53 +- .../LocalHomology/ChartFundamentalClass.lean | 23 +- .../ChartFundamentalClassGenerator.lean | 51 +- .../ChartFundamentalClassInvariance.lean | 45 +- .../ComplexClassDifferentiableInvariance.lean | 95 +- .../ComplexClassLinearInvariance.lean | 88 +- .../LocalHomology/Euclidean.lean | 199 +-- .../LocalHomology/EuclideanVanishing.lean | 99 +- .../LocalHomology/FlattenedSupport.lean | 59 +- .../LocalHomology/FundamentalClass.lean | 33 +- .../FundamentalClassGenerator.lean | 155 +- .../HolomorphicNormalTransition.lean | 45 +- .../NormalProjectionCoclass.lean | 141 +- .../NormalProjectionOverlap.lean | 145 +- .../LocalHomology/NormalSlicePurity.lean | 57 +- .../LocalHomology/PuncturedEuclidean.lean | 1264 +++++++++-------- .../LocalHomology/SphereAffineBoundary.lean | 79 +- .../SphereSimplicialHomology.lean | 27 +- .../Sheaf/CohomologyStalkVanishing.lean | 76 +- .../Sheaf/FlasqueAcyclic.lean | 28 +- .../Sheaf/FlasqueBoundedBelow.lean | 59 +- .../Sheaf/FlasqueCokernel.lean | 32 +- .../Sheaf/FlasqueExtendNat.lean | 41 +- .../Sheaf/FlasqueLowerVanishing.lean | 51 +- .../Sheaf/FlasqueLowestCohomology.lean | 29 +- .../Sheaf/FlasqueQuasiIso.lean | 79 +- .../Sheaf/HomologySection.lean | 21 +- .../Sheaf/InjectiveFlasque.lean | 27 +- .../Sheaf/OpenInjectiveResolution.lean | 158 ++- .../Sheaf/OpenRestrictedVanishing.lean | 48 +- .../Sheaf/OpenRestriction.lean | 53 +- .../Sheaf/OpenSheafification.lean | 43 +- .../Singular/Cohomology.lean | 151 +- .../Singular/Contractible.lean | 33 +- .../Singular/Excision/CoverSmall.lean | 46 +- .../Excision/CoverSmallProjective.lean | 47 +- .../Singular/Excision/CoverSmallQuasiIso.lean | 64 +- .../Singular/Excision/Field.lean | 39 +- .../Singular/Excision/Lebesgue.lean | 24 +- .../Singular/Excision/OpenCover.lean | 40 +- .../Singular/GlobalRestriction.lean | 66 +- .../Singular/HomologyZeroNaturality.lean | 26 +- .../Singular/RelativeCochainCone.lean | 107 +- .../RelativeCochainConeNaturality.lean | 121 +- .../Singular/RelativeHomotopyInvariance.lean | 156 +- .../Singular/RelativePairExcision.lean | 241 ++-- .../Singular/Sheaf/Chain.lean | 45 +- .../Singular/Sheaf/ChainStalk.lean | 25 +- .../Singular/Sheaf/Cochain.lean | 201 +-- .../Singular/Sheaf/CochainDescent.lean | 107 +- .../Singular/Sheaf/CochainFlasque.lean | 51 +- .../Sheaf/CochainOpenConeNaturality.lean | 171 +-- .../Sheaf/CochainOpenRestriction.lean | 88 +- .../Singular/Sheaf/CochainOpenSections.lean | 91 +- .../Singular/Sheaf/CochainResolution.lean | 41 +- .../Singular/Sheaf/CochainRestriction.lean | 129 +- .../Singular/Sheaf/SubdivisionCochain.lean | 343 ++--- .../Singular/StandardSimplexCone.lean | 237 ++-- .../Singular/Subdivision/Affine.lean | 164 ++- .../Singular/Subdivision/AffineIteration.lean | 106 +- .../Singular/Subdivision/AffineMesh.lean | 80 +- .../Singular/Subdivision/AffinePrism.lean | 258 ++-- .../Subdivision/AffineRelativeMesh.lean | 226 +-- .../Singular/Subdivision/AffineSmall.lean | 151 +- .../Subdivision/AffineSmallPrism.lean | 180 +-- .../Singular/Subdivision/AffineSupport.lean | 288 ++-- .../Subdivision/BarycentricAllDegrees.lean | 78 +- .../Subdivision/BarycentricChains.lean | 60 +- .../Subdivision/BarycentricHomotopy.lean | 108 +- .../Subdivision/BarycentricOuterFaces.lean | 168 +-- .../Singular/Subdivision/Basic.lean | 54 +- .../Singular/SubsetChains.lean | 43 +- .../Support/CohomologyFlasqueModel.lean | 123 +- .../Support/CohomologyInjectiveModel.lean | 145 +- .../Support/DerivedSections.lean | 82 +- .../Support/DerivedSectionsLocalization.lean | 41 +- .../Support/DerivedSectionsNaturality.lean | 95 +- .../Support/DerivedSectionsShift.lean | 45 +- .../Support/FiniteFiltrationVanishing.lean | 93 +- .../Support/FlasqueComparison.lean | 85 +- .../Support/FlasqueSections.lean | 79 +- .../Support/NestedLocalization.lean | 99 +- .../Support/NestedOnOpen.lean | 126 +- .../Support/RelativeCohomologySheaf.lean | 89 +- .../Support/SectionRestrictionCone.lean | 33 +- .../SectionRestrictionConeNaturality.lean | 131 +- .../Support/SheafCohomology.lean | 29 +- .../Support/SingularFlasqueModel.lean | 43 +- .../Support/SingularSectionNaturality.lean | 112 +- .../Calculus/DifferentialForm/ExactWedge.lean | 41 +- .../DifferentialForm/HolomorphicPoincare.lean | 33 +- .../LinearAlgebra/ComplexOrientation.lean | 24 +- .../Lemmas/LinearAlgebra/HodgeStructure.lean | 21 +- .../TranscendenceDegreeKrullDimension.lean | 33 +- .../Lemmas/Topology/Dimension/Basic.lean | 20 +- .../Topology/Dimension/ClosedSubset.lean | 15 +- .../DerivedCategory/KInjectiveHom.lean | 30 +- .../Algebra/Homology/HomComplexPrecomp.lean | 31 +- .../Algebra/Homology/HomComplexSingle.lean | 29 +- .../Algebra/Homology/KernelAcyclic.lean | 20 +- .../Algebra/Homology/LiftToInjective.lean | 39 +- .../Mathlib/Algebra/Homology/MapExtend.lean | 20 +- .../Mathlib/Algebra/Homology/Notation.lean | 13 +- .../Algebra/Homology/StupidTruncation.lean | 18 +- .../Mathlib/Algebra/PolynomialCatenary.lean | 25 +- .../Mathlib/Algebra/Ring/Basic.lean | 16 +- .../AlgebraicGeometry/GenericPoint.lean | 21 +- .../Mathlib/AlgebraicGeometry/Over/Basic.lean | 21 +- .../SimplicialSet/ChainComplexSplit.lean | 27 +- .../Calculus/DifferentialForm/Poincare.lean | 23 +- .../Calculus/SplitDerivativeNormalChart.lean | 60 +- .../Analysis/NormedSpace/WedgeCovectors.lean | 22 +- .../Abelian/KernelCompositionShortExact.lean | 23 +- .../ConcreteCategory/Notation.lean | 10 +- .../Sites/SheafCohomology/Pair.lean | 46 +- .../Geometry/Convex/StdSimplexMetric.lean | 40 +- .../Mathlib/LinearAlgebra/Dual/Defs.lean | 14 +- .../Mathlib/LinearAlgebra/Quotient/Basic.lean | 17 +- .../RingTheory/SmoothKrullDimension.lean | 48 +- .../Mathlib/Topology/Algebra/IsOpenUnits.lean | 17 +- .../Mathlib/Topology/Category/TopPair.lean | 18 +- .../Topology/ChartedSpaceParacompact.lean | 18 +- .../Mathlib/Topology/KrullDimension.lean | 13 +- .../Mathlib/Topology/Sheaves/StalkExact.lean | 31 +- .../HodgeConjecture/Statement.lean | 21 +- .../HodgeConjecture/Variants.lean | 33 +- lean/OAI/Algebra/DeRham/Basic.lean | 20 +- .../ClosedImmersion/HolomorphicChartsAt.lean | 4 +- .../ClosedImmersion/NormalCoordinates.lean | 2 +- .../AlgebraicGeometry/ComplexPoint/Basic.lean | 4 +- .../Cycle/ComponentSmoothSupportPurity.lean | 2 +- .../Cycle/ComponentSupportExtension.lean | 10 +- .../Cycle/SmoothPairCoclassSection.lean | 4 +- .../Hodge/AnalyticDifferentialForms.lean | 18 +- .../AlgebraicGeometry/Hodge/Filtration.lean | 34 +- .../Hodge/HolomorphicDeRham.lean | 10 +- .../Smooth/Equidimensional.lean | 2 +- .../ChartFundamentalClassInvariance.lean | 2 +- .../LocalHomology/FlattenedSupport.lean | 4 +- .../LocalHomology/PuncturedEuclidean.lean | 24 +- .../Sheaf/FlasqueLowestCohomology.lean | 6 +- .../Singular/RelativeCochainG.lean | 2 +- .../Singular/SheafCochain.lean | 4 +- .../Singular/SheafCochainOpenCone.lean | 2 +- .../Singular/SheafSubdivisionCochain.lean | 12 +- .../Singular/StandardSimplexCone.lean | 11 +- .../Singular/SubdivisionAffinePrism.lean | 18 +- 281 files changed, 13793 insertions(+), 10742 deletions(-) diff --git a/history.md b/history.md index ff52ee4dba..ce3d4ca015 100644 --- a/history.md +++ b/history.md @@ -2,6 +2,12 @@ For any withdrawn papers, their README files explain the gap and link to the retracted manuscript. For any updated papers, previously published editions remain accessible through the version notes in their README. +## October 29, 2026 + +**Formalization Fix** + +- *The rational Hodge conjecture for CM abelian varieties.* Diverging namespaces in the Comparator challenge and solution were adjusted. + ## October 26, 2026 **New Results Added** diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/CM.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/CM.lean index 13e75059c5..431efba8c1 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/CM.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/CM.lean @@ -1,8 +1,11 @@ -module -public import HodgeConjecture.Variants -public import Mathlib.NumberTheory.NumberField.CMField -public import Mathlib.LinearAlgebra.TensorProduct.Tower +import HodgeConjecture.Variants +import Mathlib.NumberTheory.NumberField.CMField +import Mathlib.LinearAlgebra.TensorProduct.Tower + +namespace OAI.AlgebraicGeometry.ComplexMultiplication.Definitions + +open scoped OAI.AlgebraicGeometry.Hodge.Filtration.ComplexPoint /-! # Complex multiplication on geometric rational H¹ @@ -11,12 +14,12 @@ The Hodge filtration and cohomology are those of `HodgeConjecture`. Each CM-field factor acts on its own rank-one summand of rational H¹. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory AlgebraicGeometry ComplexPoint +open _root_.CategoryTheory _root_.AlgebraicGeometry OAI.AlgebraicGeometry.ComplexPoint open scoped TensorProduct -namespace HodgeCM +section /-- Coordinatewise multiplication, transported to a rational vector space. -/ def diagonalAction {V : Type*} [AddCommGroup V] [Module ℚ V] @@ -30,7 +33,7 @@ variable (X : Over (Spec ↧ℂ)) [IsIntegral X.left] [Smooth X.hom] def h1Comparison : ℂ ⊗[ℚ] H^1(X; ℚ) →ₗ[ℚ] H_dR^1(X) := TensorProduct.lift ((Algebra.lsmul ℚ ℚ H_dR^1(X)).toLinearMap.compl₂ - (fieldToDeRhamCohomologyLinear ℚ X 1)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToDeRhamCohomologyLinear ℚ X 1)) /-- Complex multiplication means that rational H¹ is a finite direct sum of rank-one spaces over CM number fields, whose diagonal action preserves the @@ -44,14 +47,18 @@ structure CMH1Data where model : H^1(X; ℚ) ≃ₗ[ℚ] ((i : Fin factors) → field i) preserves_hodgeFiltration : ∀ (a : (i : Fin factors) → field i) (z : ℂ ⊗[ℚ] H^1(X; ℚ)), - h1Comparison X z ∈ hodgeFiltrationComplexSubmodule X 1 1 → + h1Comparison X z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFiltrationComplexSubmodule X 1 1 → h1Comparison X (TensorProduct.map LinearMap.id (diagonalAction field model a) z) ∈ - hodgeFiltrationComplexSubmodule X 1 1 + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFiltrationComplexSubmodule X 1 1 attribute [instance] CMH1Data.fieldStructure CMH1Data.numberField CMH1Data.cmField /-- The existence of geometric H¹ complex-multiplication data. -/ def HasComplexMultiplication : Prop := Nonempty (CMH1Data X) -end HodgeCM +end + +end + +end OAI.AlgebraicGeometry.ComplexMultiplication.Definitions diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/Challenge.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/Challenge.lean index 8e99b5004f..8c17262684 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/Challenge.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/Challenge.lean @@ -15,9 +15,8 @@ limitations under the License. This file has been modified. -/ -module -public import ComparatorChallenges.HodgeConjectureCMAbelianVarieties.CM +import ComparatorChallenges.HodgeConjectureCMAbelianVarieties.CM /-! # Comparator challenge: the Hodge conjecture for CM abelian varieties @@ -26,9 +25,10 @@ The conclusion is the literal conclusion of the upstream abelian-variety special case. The only added condition is complex multiplication on H¹. -/ -@[expose] public section +section -open CategoryTheory AlgebraicGeometry ComplexPoint +open CategoryTheory AlgebraicGeometry OAI.AlgebraicGeometry.ComplexPoint +open scoped OAI.AlgebraicGeometry.Hodge.Filtration.ComplexPoint namespace HodgeCM @@ -37,9 +37,9 @@ set_option warningAsError false in linear combination of classes of algebraic subvarieties. -/ theorem hodge_conjecture_for_cm_abelian_varieties (X : Over (Spec ↧ℂ)) [IsIntegral X.left] [Smooth X.hom] - [IsProjective X.hom] [GrpObj X] - (hCM : HasComplexMultiplication X) (p : ℕ) : - Hdg^p(X; ℚ) ≤ algebraicCycleClassSpan X p := by + [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] [GrpObj X] + (hCM : _root_.OAI.AlgebraicGeometry.ComplexMultiplication.Definitions.HasComplexMultiplication X) (p : ℕ) : + Hdg^p(X; ℚ) ≤ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.algebraicCycleClassSpan X p := by sorry end HodgeCM diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/DeRham/Basic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/DeRham/Basic.lean index 153258f600..a8951af8ce 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/DeRham/Basic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/DeRham/Basic.lean @@ -12,13 +12,18 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Algebra.TrivSqZeroExt.Basic -public import Mathlib.LinearAlgebra.CliffordAlgebra.Conjugation -public import Mathlib.LinearAlgebra.ExteriorPower.Basic -public import Mathlib.RingTheory.Kaehler.Basic +import Mathlib.Algebra.TrivSqZeroExt.Basic +import Mathlib.LinearAlgebra.CliffordAlgebra.Conjugation +import Mathlib.LinearAlgebra.ExteriorPower.Basic +import Mathlib.RingTheory.Kaehler.Basic + +namespace OAI.Algebra.DeRham.Basic + +open _root_.Algebra /-! # Algebraic de Rham forms @@ -59,11 +64,12 @@ one then follow by induction on the exterior algebra. * `Algebra.DeRham.map`: functoriality along an `R`-algebra homomorphism. -/ -@[expose] public noncomputable section +noncomputable section universe u -namespace Algebra.DeRham +section +section open CliffordAlgebra (involute involute_ι) open TrivSqZeroExt (fst snd) @@ -80,7 +86,7 @@ variable {R A} /-- A single differential anticommutes with every homogeneous factor, which globally reads as commuting past the grade involution. -/ -private lemma ι_mul_eq_involute_mul_ι (m : Ω[A⁄R]) (y : ExtAlg R A) : +lemma ι_mul_eq_involute_mul_ι (m : Ω[A⁄R]) (y : ExtAlg R A) : ExteriorAlgebra.ι A m * y = involute y * ExteriorAlgebra.ι A m := by induction y using ExteriorAlgebra.induction with @@ -101,28 +107,28 @@ opaque to typeclass synthesis to keep the twisted ring and scalar actions separa namespace Sq -instance instRing : Ring (Sq R A) := by +instance instRing : Ring (_root_.OAI.Algebra.DeRham.Basic.Sq R A) := by -- Only the left action is twisted; these instances stay local to the ring construction. - letI : SMul (ExtAlg R A) (ExtAlg R A) := ⟨fun x v => involute x * v⟩ - letI : Module (ExtAlg R A) (ExtAlg R A) := - Module.compHom (ExtAlg R A) (involute (R := A) (M := Ω[A⁄R])).toRingHom - letI : SMulCommClass (ExtAlg R A) (ExtAlg R A)ᵐᵒᵖ (ExtAlg R A) := + letI : SMul (_root_.OAI.Algebra.DeRham.Basic.ExtAlg R A) (_root_.OAI.Algebra.DeRham.Basic.ExtAlg R A) := ⟨fun x v => involute x * v⟩ + letI : Module (_root_.OAI.Algebra.DeRham.Basic.ExtAlg R A) (_root_.OAI.Algebra.DeRham.Basic.ExtAlg R A) := + Module.compHom (_root_.OAI.Algebra.DeRham.Basic.ExtAlg R A) (involute (R := A) (M := Ω[A⁄R])).toRingHom + letI : SMulCommClass (_root_.OAI.Algebra.DeRham.Basic.ExtAlg R A) (_root_.OAI.Algebra.DeRham.Basic.ExtAlg R A)ᵐᵒᵖ (_root_.OAI.Algebra.DeRham.Basic.ExtAlg R A) := ⟨fun x y u => (mul_assoc (involute x) u y.unop).symm⟩ - exact inferInstanceAs (Ring (TrivSqZeroExt (ExtAlg R A) (ExtAlg R A))) + exact inferInstanceAs (Ring (TrivSqZeroExt (_root_.OAI.Algebra.DeRham.Basic.ExtAlg R A) (_root_.OAI.Algebra.DeRham.Basic.ExtAlg R A))) variable {R A} -@[simp] lemma fst_add (s t : Sq R A) : fst (s + t) = fst s + fst t := rfl +@[simp] lemma fst_add (s t : _root_.OAI.Algebra.DeRham.Basic.Sq R A) : fst (s + t) = fst s + fst t := rfl -@[simp] lemma snd_add (s t : Sq R A) : snd (s + t) = snd s + snd t := rfl +@[simp] lemma snd_add (s t : _root_.OAI.Algebra.DeRham.Basic.Sq R A) : snd (s + t) = snd s + snd t := rfl -@[simp] lemma fst_mul (s t : Sq R A) : fst (s * t) = fst s * fst t := rfl +@[simp] lemma fst_mul (s t : _root_.OAI.Algebra.DeRham.Basic.Sq R A) : fst (s * t) = fst s * fst t := rfl -@[simp] lemma fst_one : fst (1 : Sq R A) = 1 := rfl +@[simp] lemma fst_one : fst (1 : _root_.OAI.Algebra.DeRham.Basic.Sq R A) = 1 := rfl -@[simp] lemma snd_one : snd (1 : Sq R A) = 0 := rfl +@[simp] lemma snd_one : snd (1 : _root_.OAI.Algebra.DeRham.Basic.Sq R A) = 0 := rfl -@[simp] lemma snd_mul (s t : Sq R A) : +@[simp] lemma snd_mul (s t : _root_.OAI.Algebra.DeRham.Basic.Sq R A) : snd (s * t) = involute (fst s) * snd t + snd s * fst t := rfl end Sq @@ -130,7 +136,7 @@ end Sq /-- For a commutative `R`-algebra `A`, let `E = ⋀_A Ω_{A/R}` be the exterior algebra of Kähler differentials. This ring homomorphism `A → Sq R A = E × E` sends `a` to `(a,da)`, with `a` in degree zero and its differential in degree one. It defines the `A`-algebra structure on `Sq`. -/ -def twist : A →+* Sq R A where +def twist : A →+* _root_.OAI.Algebra.DeRham.Basic.Sq R A where toFun a := (algebraMap A (ExtAlg R A) a, ExteriorAlgebra.ι A (KaehlerDifferential.D R A a)) map_one' := by apply TrivSqZeroExt.ext <;> simp @@ -154,42 +160,42 @@ def twist : A →+* Sq R A where @[simp] lemma snd_twist (a : A) : snd (twist R A a) = ExteriorAlgebra.ι A (KaehlerDifferential.D R A a) := rfl -lemma twist_commutes (a : A) (s : Sq R A) : twist R A a * s = s * twist R A a := by +lemma twist_commutes (a : A) (s : _root_.OAI.Algebra.DeRham.Basic.Sq R A) : twist R A a * s = s * twist R A a := by apply TrivSqZeroExt.ext · simpa using Algebra.commutes a (fst s) - · simp only [Sq.snd_mul, fst_twist, snd_twist, AlgHom.commutes, + · simp only [_root_.OAI.Algebra.DeRham.Basic.Sq.snd_mul, fst_twist, snd_twist, AlgHom.commutes, ι_mul_eq_involute_mul_ι (KaehlerDifferential.D R A a) (fst s)] rw [Algebra.commutes a (snd s)] abel -- This scalar action includes `d a`, so it is not the componentwise action on `TrivSqZeroExt`. -instance : Algebra A (Sq R A) := (twist R A).toAlgebra' (twist_commutes R A) +instance : Algebra A (_root_.OAI.Algebra.DeRham.Basic.Sq R A) := (twist R A).toAlgebra' (twist_commutes R A) -instance : Algebra R (Sq R A) := +instance : Algebra R (_root_.OAI.Algebra.DeRham.Basic.Sq R A) := ((twist R A).comp (algebraMap R A)).toAlgebra' fun _ s => twist_commutes R A _ s -instance : IsScalarTower R A (Sq R A) := .of_algebraMap_eq fun _ => rfl +instance : IsScalarTower R A (_root_.OAI.Algebra.DeRham.Basic.Sq R A) := .of_algebraMap_eq fun _ => rfl namespace Sq variable {R A} @[simp] lemma fst_algebraMap (a : A) : - fst (algebraMap A (Sq R A) a) = algebraMap A (ExtAlg R A) a := rfl + fst (algebraMap A (_root_.OAI.Algebra.DeRham.Basic.Sq R A) a) = algebraMap A (_root_.OAI.Algebra.DeRham.Basic.ExtAlg R A) a := rfl @[simp] lemma snd_algebraMap (a : A) : - snd (algebraMap A (Sq R A) a) = ExteriorAlgebra.ι A (KaehlerDifferential.D R A a) := rfl + snd (algebraMap A (_root_.OAI.Algebra.DeRham.Basic.Sq R A) a) = ExteriorAlgebra.ι A (KaehlerDifferential.D R A a) := rfl -@[simp] lemma fst_smul (a : A) (s : Sq R A) : fst (a • s) = a • fst s := rfl +@[simp] lemma fst_smul (a : A) (s : _root_.OAI.Algebra.DeRham.Basic.Sq R A) : fst (a • s) = a • fst s := rfl -lemma snd_smul (a : A) (s : Sq R A) : +lemma snd_smul (a : A) (s : _root_.OAI.Algebra.DeRham.Basic.Sq R A) : snd (a • s) = a • snd s + ExteriorAlgebra.ι A (KaehlerDifferential.D R A a) * fst s := by simp [Algebra.smul_def, snd_mul, fst_algebraMap, snd_algebraMap, AlgHom.commutes] -@[simp] lemma fst_smul_base (r : R) (s : Sq R A) : fst (r • s) = r • fst s := rfl +@[simp] lemma fst_smul_base (r : R) (s : _root_.OAI.Algebra.DeRham.Basic.Sq R A) : fst (r • s) = r • fst s := rfl -@[simp] lemma snd_smul_base (r : R) (s : Sq R A) : snd (r • s) = r • snd s := by +@[simp] lemma snd_smul_base (r : R) (s : _root_.OAI.Algebra.DeRham.Basic.Sq R A) : snd (r • s) = r • snd s := by rw [← algebraMap_smul A r s, snd_smul, algebraMap_smul] simp @@ -200,7 +206,7 @@ namespace Sq /-- For a commutative `R`-algebra `A`, let `E = ⋀_A Ω_{A/R}` be the exterior algebra of Kähler differentials. For the `A`-algebra structure `a ↦ (a,da)` on `Sq R A = E × E`, this is the first projection `(x,u) ↦ x` as an `A`-algebra homomorphism. -/ -def fstAlgHom : Sq R A →ₐ[A] ExtAlg R A where +def fstAlgHom : _root_.OAI.Algebra.DeRham.Basic.Sq R A →ₐ[A] _root_.OAI.Algebra.DeRham.Basic.ExtAlg R A where toFun := fst map_one' := rfl map_mul' _ _ := rfl @@ -208,24 +214,24 @@ def fstAlgHom : Sq R A →ₐ[A] ExtAlg R A where map_add' _ _ := rfl commutes' _ := rfl -@[simp] lemma fstAlgHom_apply (s : Sq R A) : fstAlgHom R A s = fst s := rfl +@[simp] lemma fstAlgHom_apply (s : _root_.OAI.Algebra.DeRham.Basic.Sq R A) : fstAlgHom R A s = fst s := rfl /-- For a commutative `R`-algebra `A`, let `E = ⋀_A Ω_{A/R}` be the exterior algebra of Kähler differentials. This is the second projection `(x,u) ↦ u` from `Sq R A = E × E` as an `R`-linear map. -/ -def sndLinear : Sq R A →ₗ[R] ExtAlg R A where +def sndLinear : _root_.OAI.Algebra.DeRham.Basic.Sq R A →ₗ[R] _root_.OAI.Algebra.DeRham.Basic.ExtAlg R A where toFun := snd map_add' _ _ := rfl map_smul' := snd_smul_base -@[simp] lemma sndLinear_apply (s : Sq R A) : sndLinear R A s = snd s := rfl +@[simp] lemma sndLinear_apply (s : _root_.OAI.Algebra.DeRham.Basic.Sq R A) : sndLinear R A s = snd s := rfl end Sq /-- For a commutative `R`-algebra `A`, let `E = ⋀_A Ω_{A/R}` be the exterior algebra of Kähler differentials. This `R`-derivation `A → Sq R A = E × E` sends `a` to `(da,0)`. The target uses the `A`-action defined by `a ↦ (a,da)`. -/ -def epsDerivation : Derivation R A (Sq R A) where +def epsDerivation : Derivation R A (_root_.OAI.Algebra.DeRham.Basic.Sq R A) where toFun a := TrivSqZeroExt.inl (ExteriorAlgebra.ι A (KaehlerDifferential.D R A a)) map_add' a b := by apply TrivSqZeroExt.ext <;> simp map_smul' r a := by apply TrivSqZeroExt.ext <;> simp @@ -233,12 +239,12 @@ def epsDerivation : Derivation R A (Sq R A) where leibniz' a b := by apply TrivSqZeroExt.ext · simp - · simp [Sq.snd_smul, ExteriorAlgebra.ι_add_mul_swap] + · simp [_root_.OAI.Algebra.DeRham.Basic.Sq.snd_smul, ExteriorAlgebra.ι_add_mul_swap] /-- For a commutative `R`-algebra `A`, let `E = ⋀_A Ω_{A/R}` be the exterior algebra of Kähler differentials. This `A`-linear map `Ω_{A/R} → Sq R A = E × E` sends `da` to `(da,0)`, using the target action `a ↦ (a,da)`. In particular, it sends `a db` to `(a db,da ∧ db)`. -/ -def phi : Ω[A⁄R] →ₗ[A] Sq R A := (epsDerivation R A).liftKaehlerDifferential +def phi : Ω[A⁄R] →ₗ[A] _root_.OAI.Algebra.DeRham.Basic.Sq R A := (epsDerivation R A).liftKaehlerDifferential @[simp] lemma phi_D (a : A) : phi R A (KaehlerDifferential.D R A a) = @@ -261,7 +267,7 @@ lemma D_induction {motive : Ω[A⁄R] → Prop} (ω : Ω[A⁄R]) | smul a x _ hx => exact smul a x hx @[simp] lemma fst_phi (ω : Ω[A⁄R]) : fst (phi R A ω) = ExteriorAlgebra.ι A ω := by - have h : (Sq.fstAlgHom R A).toLinearMap.comp (phi R A) = ExteriorAlgebra.ι A := by + have h : (_root_.OAI.Algebra.DeRham.Basic.Sq.fstAlgHom R A).toLinearMap.comp (phi R A) = ExteriorAlgebra.ι A := by refine LinearMap.ext_on (KaehlerDifferential.span_range_derivation R A) ?_ rintro _ ⟨a, rfl⟩ simp @@ -271,7 +277,7 @@ lemma snd_phi_smul (a : A) (ω : Ω[A⁄R]) : snd (phi R A (a • ω)) = a • snd (phi R A ω) + ExteriorAlgebra.ι A (KaehlerDifferential.D R A a) * ExteriorAlgebra.ι A ω := by - rw [map_smul, Sq.snd_smul, fst_phi] + rw [map_smul, _root_.OAI.Algebra.DeRham.Basic.Sq.snd_smul, fst_phi] /-- The exterior derivative of a differential is an even element, so it commutes with everything of degree one. -/ @@ -287,14 +293,14 @@ lemma involute_snd_phi (ω : Ω[A⁄R]) : lemma phi_mul_self (ω : Ω[A⁄R]) : phi R A ω * phi R A ω = 0 := by apply TrivSqZeroExt.ext · simp - · rw [Sq.snd_mul, fst_phi, involute_ι, neg_mul, TrivSqZeroExt.snd_zero, + · rw [_root_.OAI.Algebra.DeRham.Basic.Sq.snd_mul, fst_phi, involute_ι, neg_mul, TrivSqZeroExt.snd_zero, ι_mul_eq_involute_mul_ι, involute_snd_phi, neg_add_cancel] /-- For a commutative `R`-algebra `A`, let `E = ⋀_A Ω_{A/R}` be the exterior algebra of Kähler differentials. With `A` acting on `Sq R A = E × E` by `a ↦ (a,da)`, this `A`-algebra homomorphism sends `da` to `(da,0)`. On an arbitrary form `ω` its value is `(ω,dω)`; the second component defines the exterior derivative. -/ -def deRhamHom : ExtAlg R A →ₐ[A] Sq R A := +def deRhamHom : ExtAlg R A →ₐ[A] _root_.OAI.Algebra.DeRham.Basic.Sq R A := ExteriorAlgebra.lift A ⟨phi R A, phi_mul_self R A⟩ @[simp] lemma deRhamHom_ι (ω : Ω[A⁄R]) : @@ -302,7 +308,7 @@ def deRhamHom : ExtAlg R A →ₐ[A] Sq R A := ExteriorAlgebra.lift_ι_apply A _ _ ω @[simp] lemma fst_deRhamHom (x : ExtAlg R A) : fst (deRhamHom R A x) = x := by - have h : (Sq.fstAlgHom R A).comp (deRhamHom R A) = AlgHom.id A (ExtAlg R A) := by + have h : (_root_.OAI.Algebra.DeRham.Basic.Sq.fstAlgHom R A).comp (deRhamHom R A) = AlgHom.id A (ExtAlg R A) := by apply ExteriorAlgebra.hom_ext ext ω simp @@ -313,7 +319,7 @@ exterior algebra of Kähler differentials. The exterior derivative is the `R`-li E` determined by `d(a) = da`, `d(da) = 0`, and `d(ωη) = dω η + (-1)^p ω dη` for `ω` of degree `p`. It raises degree by one. -/ def extDeriv : ExtAlg R A →ₗ[R] ExtAlg R A := - (Sq.sndLinear R A).comp ((deRhamHom R A).toLinearMap.restrictScalars R) + (_root_.OAI.Algebra.DeRham.Basic.Sq.sndLinear R A).comp ((deRhamHom R A).toLinearMap.restrictScalars R) @[simp] lemma extDeriv_ι (ω : Ω[A⁄R]) : extDeriv R A (ExteriorAlgebra.ι A ω) = snd (phi R A ω) := by @@ -331,21 +337,21 @@ lemma extDeriv_mul (x y : ExtAlg R A) : extDeriv R A (x * y) = involute x * extDeriv R A y + extDeriv R A x * y := by show snd (deRhamHom R A (x * y)) = _ - simp only [map_mul, Sq.snd_mul, fst_deRhamHom] + simp only [map_mul, _root_.OAI.Algebra.DeRham.Basic.Sq.snd_mul, fst_deRhamHom] rfl /-- Multiplying forms adds their degrees. -/ -private lemma mul_mem_exteriorPower {m n : ℕ} {x y : ExtAlg R A} +lemma mul_mem_exteriorPower {m n : ℕ} {x y : ExtAlg R A} (hx : x ∈ ⋀[A]^m Ω[A⁄R]) (hy : y ∈ ⋀[A]^n Ω[A⁄R]) : x * y ∈ ⋀[A]^(m + n) Ω[A⁄R] := by rw [ExteriorAlgebra.exteriorPower, pow_add] exact Submodule.mul_mem_mul hx hy -private lemma ι_mem_exteriorPower (ω : Ω[A⁄R]) : +lemma ι_mem_exteriorPower (ω : Ω[A⁄R]) : ExteriorAlgebra.ι A ω ∈ ⋀[A]^1 Ω[A⁄R] := by simp -private lemma snd_phi_mem (ω : Ω[A⁄R]) : snd (phi R A ω) ∈ ⋀[A]^2 Ω[A⁄R] := by +lemma snd_phi_mem (ω : Ω[A⁄R]) : snd (phi R A ω) ∈ ⋀[A]^2 Ω[A⁄R] := by induction ω using D_induction with | D a => simp @@ -399,7 +405,7 @@ def differential (p : ℕ) : Form R A p →ₗ[R] Form R A (p + 1) where @[simp] lemma coe_differential (p : ℕ) (x : Form R A p) : (differential R A p x : ExtAlg R A) = extDeriv R A x := rfl -private lemma extDeriv_smul (a : A) (x : ExtAlg R A) : +lemma extDeriv_smul (a : A) (x : ExtAlg R A) : extDeriv R A (a • x) = a • extDeriv R A x + ExteriorAlgebra.ι A (KaehlerDifferential.D R A a) * x := by @@ -412,12 +418,12 @@ def exact (p : ℕ) (v : Fin p → A) : Form R A p := exteriorPower.ιMulti A p fun i => KaehlerDifferential.D R A (v i) @[simp] lemma coe_exact (p : ℕ) (v : Fin p → A) : - (exact R A p v : ExtAlg R A) = + (_root_.OAI.Algebra.DeRham.Basic.exact R A p v : ExtAlg R A) = ExteriorAlgebra.ιMulti A p fun i => KaehlerDifferential.D R A (v i) := rfl /-- Wedges of exact forms are closed. -/ -private lemma extDeriv_exact (p : ℕ) (v : Fin p → A) : - extDeriv R A (exact R A p v : ExtAlg R A) = 0 := by +lemma extDeriv_exact (p : ℕ) (v : Fin p → A) : + extDeriv R A (_root_.OAI.Algebra.DeRham.Basic.exact R A p v : ExtAlg R A) = 0 := by induction p with | zero => rw [coe_exact, ExteriorAlgebra.ιMulti_zero_apply, @@ -433,14 +439,14 @@ private lemma extDeriv_exact (p : ℕ) (v : Fin p → A) : /-- Let `R` be a commutative ring and `A` a commutative `R`-algebra. For `a₀ ∈ A` and a family `v₀, …, v_{p-1}` in `A`, this constructs the relative differential `p`-form `a₀ dv₀ ∧ ⋯ ∧ dv_{p-1}` in `⋀^p_A Ω_{A/R}`. -/ -def mk (p : ℕ) (a₀ : A) (v : Fin p → A) : Form R A p := a₀ • exact R A p v +def mk (p : ℕ) (a₀ : A) (v : Fin p → A) : Form R A p := a₀ • _root_.OAI.Algebra.DeRham.Basic.exact R A p v @[simp] lemma coe_mk (p : ℕ) (a₀ : A) (v : Fin p → A) : - (mk R A p a₀ v : ExtAlg R A) = + (_root_.OAI.Algebra.DeRham.Basic.mk R A p a₀ v : ExtAlg R A) = a₀ • ExteriorAlgebra.ιMulti A p fun i => KaehlerDifferential.D R A (v i) := rfl @[simp] lemma differential_mk (p : ℕ) (a₀ : A) (v : Fin p → A) : - differential R A p (mk R A p a₀ v) = mk R A (p + 1) 1 (Fin.cons a₀ v) := by + differential R A p (_root_.OAI.Algebra.DeRham.Basic.mk R A p a₀ v) = _root_.OAI.Algebra.DeRham.Basic.mk R A (p + 1) 1 (Fin.cons a₀ v) := by refine Subtype.ext ?_ rw [coe_differential, coe_mk, coe_mk, extDeriv_smul, ← coe_exact, extDeriv_exact, smul_zero, zero_add, one_smul, ExteriorAlgebra.ιMulti_succ_apply] @@ -449,11 +455,11 @@ def mk (p : ℕ) (a₀ : A) (v : Fin p → A) : Form R A p := a₀ • exact R A /-- Let `R` be a commutative ring and `A` a commutative `R`-algebra. This `R`-linear map sends `a ∈ A` to the corresponding degree-zero relative differential form in `⋀^0_A Ω_{A/R}`. -/ def ofFunction : A →ₗ[R] Form R A 0 where - toFun a := mk R A 0 a Fin.elim0 - map_add' a b := by simp [mk, add_smul] - map_smul' r a := by simp [mk, smul_assoc] + toFun a := _root_.OAI.Algebra.DeRham.Basic.mk R A 0 a Fin.elim0 + map_add' a b := by simp [_root_.OAI.Algebra.DeRham.Basic.mk, add_smul] + map_smul' r a := by simp [_root_.OAI.Algebra.DeRham.Basic.mk, smul_assoc] -lemma ofFunction_apply (a : A) : ofFunction R A a = mk R A 0 a Fin.elim0 := rfl +lemma ofFunction_apply (a : A) : ofFunction R A a = _root_.OAI.Algebra.DeRham.Basic.mk R A 0 a Fin.elim0 := rfl /-- Let `R` be a commutative ring and `A` a commutative `R`-algebra. This `R`-linear map sends `r ∈ R` to the zero-form given by its image in `A` under the algebra structure map. -/ @@ -477,8 +483,8 @@ lemma ofConstant_apply (r : R) : /-! ### Generators -/ /-- Exact forms span the differential forms of degree `p` over `A`. -/ -private lemma span_exact (p : ℕ) : - Submodule.span A (Set.range fun v : Fin p → A => exact R A p v) = ⊤ := by +lemma span_exact (p : ℕ) : + Submodule.span A (Set.range fun v : Fin p → A => _root_.OAI.Algebra.DeRham.Basic.exact R A p v) = ⊤ := by rw [← top_le_iff, ← exteriorPower.ιMulti_span_of_span A p Ω[A⁄R] (KaehlerDifferential.span_range_derivation R A), Submodule.span_le] rintro _ ⟨w, hw, rfl⟩ @@ -486,11 +492,11 @@ private lemma span_exact (p : ℕ) : exact Submodule.subset_span ⟨v, congrArg _ (funext hv)⟩ /-- Forms `a₀ * d a₁ ∧ ⋯ ∧ d aₚ` span the differential forms of degree `p` over the base ring. -/ -private lemma span_mk (p : ℕ) : - Submodule.span R (Set.range fun av : A × (Fin p → A) => mk R A p av.1 av.2) = ⊤ := by +lemma span_mk (p : ℕ) : + Submodule.span R (Set.range fun av : A × (Fin p → A) => _root_.OAI.Algebra.DeRham.Basic.mk R A p av.1 av.2) = ⊤ := by have key : ∀ x : Form R A p, - x ∈ Submodule.span A (Set.range fun v : Fin p → A => exact R A p v) → ∀ a : A, - a • x ∈ Submodule.span R (Set.range fun av : A × (Fin p → A) => mk R A p av.1 av.2) := by + x ∈ Submodule.span A (Set.range fun v : Fin p → A => _root_.OAI.Algebra.DeRham.Basic.exact R A p v) → ∀ a : A, + a • x ∈ Submodule.span R (Set.range fun av : A × (Fin p → A) => _root_.OAI.Algebra.DeRham.Basic.mk R A p av.1 av.2) := by intro x hx induction hx using Submodule.span_induction with | mem y hy => obtain ⟨v, rfl⟩ := hy; exact fun a => Submodule.subset_span ⟨(a, v), rfl⟩ @@ -501,26 +507,26 @@ private lemma span_mk (p : ℕ) : exact top_unique fun x _ => by simpa using key x (by rw [span_exact]; trivial) 1 /-- Two `R`-linear maps out of degree `p` forms agreeing on the generators are equal. -/ -private lemma linearMap_ext {M : Type*} [AddCommGroup M] [Module R M] {p : ℕ} - {F G : Form R A p →ₗ[R] M} (h : ∀ a₀ v, F (mk R A p a₀ v) = G (mk R A p a₀ v)) : F = G := +lemma linearMap_ext {M : Type*} [AddCommGroup M] [Module R M] {p : ℕ} + {F G : Form R A p →ₗ[R] M} (h : ∀ a₀ v, F (_root_.OAI.Algebra.DeRham.Basic.mk R A p a₀ v) = G (_root_.OAI.Algebra.DeRham.Basic.mk R A p a₀ v)) : F = G := LinearMap.ext_on (span_mk R A p) (by rintro _ ⟨⟨a₀, v⟩, rfl⟩; exact h a₀ v) @[simp] lemma mk_smul_coeff (p : ℕ) (r : R) (a₀ : A) (v : Fin p → A) : - mk R A p (r • a₀) v = r • mk R A p a₀ v := + _root_.OAI.Algebra.DeRham.Basic.mk R A p (r • a₀) v = r • _root_.OAI.Algebra.DeRham.Basic.mk R A p a₀ v := smul_assoc r a₀ _ -@[simp] lemma mk_zero_coeff (p : ℕ) (v : Fin p → A) : mk R A p 0 v = 0 := +@[simp] lemma mk_zero_coeff (p : ℕ) (v : Fin p → A) : _root_.OAI.Algebra.DeRham.Basic.mk R A p 0 v = 0 := zero_smul A _ /-- To prove a statement about every differential form of degree `p` it suffices to treat the generators `a₀ * d v₀ ∧ ... ∧ d vₚ₋₁` and to check closure under zero, sums, and scalars. -/ @[elab_as_elim] lemma mk_induction {p : ℕ} {motive : Form R A p → Prop} (x : Form R A p) - (mk : ∀ (a₀ : A) (v : Fin p → A), motive (_root_.Algebra.DeRham.mk R A p a₀ v)) + (mk : ∀ (a₀ : A) (v : Fin p → A), motive (_root_.OAI.Algebra.DeRham.Basic.mk R A p a₀ v)) (zero : motive 0) (add : ∀ x y, motive x → motive y → motive (x + y)) (smul : ∀ (r : R) x, motive x → motive (r • x)) : motive x := by have hx : x ∈ Submodule.span R - (Set.range fun av : A × (Fin p → A) => _root_.Algebra.DeRham.mk R A p av.1 av.2) := by + (Set.range fun av : A × (Fin p → A) => _root_.OAI.Algebra.DeRham.Basic.mk R A p av.1 av.2) := by rw [span_mk]; trivial induction hx using Submodule.span_induction with | mem y hy => obtain ⟨⟨a₀, v⟩, rfl⟩ := hy; exact mk a₀ v @@ -554,7 +560,7 @@ def extAlgMap : ExtAlg R A →ₐ[A] ExtAlg R B := extAlgMap R A B (algebraMap R (ExtAlg R A) r) = algebraMap R (ExtAlg R B) r := by simp -private lemma extAlgMap_ιMulti (p : ℕ) (w : Fin p → Ω[A⁄R]) : +lemma extAlgMap_ιMulti (p : ℕ) (w : Fin p → Ω[A⁄R]) : extAlgMap R A B (ExteriorAlgebra.ιMulti A p w) = ExteriorAlgebra.ιMulti B p fun i => KaehlerDifferential.map R R A B (w i) := by @@ -614,11 +620,11 @@ def map (f : A →ₐ[R] B) (p : ℕ) : Form R A p →ₗ[R] Form R B p := mapTower R A B p @[simp] lemma map_mk (f : A →ₐ[R] B) (p : ℕ) (a₀ : A) (v : Fin p → A) : - map R f p (mk R A p a₀ v) = mk R B p (f a₀) fun i => f (v i) := by + _root_.OAI.Algebra.DeRham.Basic.map R f p (_root_.OAI.Algebra.DeRham.Basic.mk R A p a₀ v) = _root_.OAI.Algebra.DeRham.Basic.mk R B p (f a₀) fun i => f (v i) := by let _ := f.toAlgebra refine Subtype.ext ?_ - show extAlgMap R A B (mk R A p a₀ v : ExtAlg R A) = - ((mk R B p (f a₀) fun i => f (v i) : Form R B p) : ExtAlg R B) + show extAlgMap R A B (_root_.OAI.Algebra.DeRham.Basic.mk R A p a₀ v : ExtAlg R A) = + ((_root_.OAI.Algebra.DeRham.Basic.mk R B p (f a₀) fun i => f (v i) : Form R B p) : ExtAlg R B) rw [coe_mk, coe_mk, map_smul, extAlgMap_ιMulti] have hfam : (fun i => KaehlerDifferential.map R R A B (KaehlerDifferential.D R A (v i))) = fun i => KaehlerDifferential.D R B (f (v i)) := by @@ -627,23 +633,28 @@ def map (f : A →ₐ[R] B) (p : ℕ) : Form R A p →ₗ[R] Form R B p := rw [hfam] exact (algebraMap_smul (R := A) B a₀ _).symm -@[simp] lemma map_id (p : ℕ) : map R (AlgHom.id R A) p = LinearMap.id := +@[simp] lemma map_id (p : ℕ) : _root_.OAI.Algebra.DeRham.Basic.map R (AlgHom.id R A) p = LinearMap.id := linearMap_ext R A fun a₀ v => by simp @[simp] lemma map_comp (f : A →ₐ[R] B) (g : B →ₐ[R] C) (p : ℕ) : - map R (g.comp f) p = (map R g p).comp (map R f p) := + _root_.OAI.Algebra.DeRham.Basic.map R (g.comp f) p = (_root_.OAI.Algebra.DeRham.Basic.map R g p).comp (_root_.OAI.Algebra.DeRham.Basic.map R f p) := linearMap_ext R A fun a₀ v => by simp @[simp] lemma map_ofFunction (f : A →ₐ[R] B) (a : A) : - map R f 0 (ofFunction R A a) = ofFunction R B (f a) := by + _root_.OAI.Algebra.DeRham.Basic.map R f 0 (ofFunction R A a) = ofFunction R B (f a) := by rw [ofFunction_apply, map_mk, ofFunction_apply] congr 1 exact funext fun i : Fin 0 => i.elim0 @[simp] lemma map_ofConstant (f : A →ₐ[R] B) (r : R) : - map R f 0 (ofConstant R A r) = ofConstant R B r := by + _root_.OAI.Algebra.DeRham.Basic.map R f 0 (ofConstant R A r) = ofConstant R B r := by rw [ofConstant_apply, map_ofFunction, f.commutes, ofConstant_apply] end AlgHomMap -end Algebra.DeRham +end +end + +end + +end OAI.Algebra.DeRham.Basic diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/Homology/DerivedCategory/MappingCoconeShortExact.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/Homology/DerivedCategory/MappingCoconeShortExact.lean index 1b98b6c971..e7f27fa95b 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/Homology/DerivedCategory/MappingCoconeShortExact.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/Homology/DerivedCategory/MappingCoconeShortExact.lean @@ -1,10 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.DerivedCategory.ShortExact +import Mathlib.Algebra.Homology.DerivedCategory.ShortExact + +namespace OAI.Algebra.Homology.MappingCoconeShortExact + +open _root_.CochainComplex /-! # The canonical homotopy fiber comparison for a short exact sequence @@ -15,16 +20,19 @@ The proof uses the explicit mapping-cone rotation homotopy equivalence and the canonical quasi-isomorphism from the cone of `A → B` to `C`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits CategoryTheory.Pretriangulated -open HomologicalComplex +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.CategoryTheory.Pretriangulated +open _root_.HomologicalComplex namespace CochainComplex +open _root_.CochainComplex variable {C : Type*} [Category* C] [Abelian C] namespace mappingCocone +open _root_.CochainComplex +open _root_.CochainComplex.mappingCocone variable (S : ShortComplex (CochainComplex C ℤ)) @@ -40,3 +48,7 @@ def shiftedLiftShortComplex : S.X₁⟦(1 : ℤ)⟧ ⟶ mappingCone S.g := end mappingCocone end CochainComplex + +end + +end OAI.Algebra.Homology.MappingCoconeShortExact diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/Homology/DerivedCategory/MappingCoconeShortExactNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/Homology/DerivedCategory/MappingCoconeShortExactNaturality.lean index 92f1012ccf..f06278a896 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/Homology/DerivedCategory/MappingCoconeShortExactNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/Homology/DerivedCategory/MappingCoconeShortExactNaturality.lean @@ -1,20 +1,29 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingCoconeShortExact +import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingCoconeShortExact + +namespace OAI.Algebra.Homology.CoconeShortExactNaturality + +open _root_.CochainComplex /-! # Naturality of the canonical short-exact-sequence cone comparison -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits +open _root_.CategoryTheory _root_.CategoryTheory.Limits -namespace CochainComplex.mappingCocone +namespace CochainComplex +open _root_.CochainComplex +namespace mappingCocone +open _root_.CochainComplex +open _root_.CochainComplex.mappingCocone variable {C : Type*} [Category* C] [Abelian C] {S T : ShortComplex (CochainComplex C ℤ)} @@ -26,10 +35,15 @@ this isomorphism `H^m(A) ≅ H^n(Cone(B → C))`. -/ def shortExactHomologyIsoCone (S : ShortComplex (CochainComplex C ℤ)) (hS : S.ShortExact) (n n' : ℤ) (h : 1 + n = n') : S.X₁.homology n' ≅ (mappingCone S.g).homology n := - letI : QuasiIso (shiftedLiftShortComplex S) := quasiIso_shiftedLiftShortComplex S hS - letI : IsIso (HomologicalComplex.homologyMap (shiftedLiftShortComplex S) n) := - (quasiIsoAt_iff_isIso_homologyMap (shiftedLiftShortComplex S) n).mp inferInstance + letI : QuasiIso (_root_.OAI.Algebra.Homology.MappingCoconeShortExact.CochainComplex.mappingCocone.shiftedLiftShortComplex S) := _root_.OAI.Algebra.Homology.DerivedCategoryMapOf.CochainComplex.mappingCocone.quasiIso_shiftedLiftShortComplex S hS + letI : IsIso (HomologicalComplex.homologyMap (_root_.OAI.Algebra.Homology.MappingCoconeShortExact.CochainComplex.mappingCocone.shiftedLiftShortComplex S) n) := + (quasiIsoAt_iff_isIso_homologyMap (_root_.OAI.Algebra.Homology.MappingCoconeShortExact.CochainComplex.mappingCocone.shiftedLiftShortComplex S) n).mp inferInstance (((HomologicalComplex.homologyFunctor C ℤᵘᵖ 0).shiftIso 1 n n' h).app S.X₁).symm ≪≫ - asIso (HomologicalComplex.homologyMap (shiftedLiftShortComplex S) n) + asIso (HomologicalComplex.homologyMap (_root_.OAI.Algebra.Homology.MappingCoconeShortExact.CochainComplex.mappingCocone.shiftedLiftShortComplex S) n) + +end mappingCocone +end CochainComplex + +end -end CochainComplex.mappingCocone +end OAI.Algebra.Homology.CoconeShortExactNaturality diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/Homology/LinearDual.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/Homology/LinearDual.lean index 7051e07261..7541bdceb9 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/Homology/LinearDual.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Algebra/Homology/LinearDual.lean @@ -12,16 +12,23 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.Homotopy -public import Mathlib.Algebra.Homology.ShortComplex.ModuleCat -public import HodgeConjecture.Mathlib.LinearAlgebra.Quotient.Basic -public import HodgeConjecture.Mathlib.LinearAlgebra.Dual.Defs +import Mathlib.Algebra.Homology.Homotopy +import Mathlib.Algebra.Homology.ShortComplex.ModuleCat +import HodgeConjecture.Mathlib.LinearAlgebra.Quotient.Basic +import HodgeConjecture.Mathlib.LinearAlgebra.Dual.Defs import Mathlib.LinearAlgebra.Dual.Lemmas +namespace OAI.Algebra.Homology.LinearDual + +open _root_.CategoryTheory +open _root_.CategoryTheory.ShortComplex +open _root_.HomologicalComplex + /-! # The linear dual of a complex of modules @@ -37,13 +44,17 @@ map `dualHomologyComparisonExplicit` still exists but need not be bijective. Eac is split into a `CommRing` section and a `Field` section accordingly. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits +open _root_.CategoryTheory Limits universe u -namespace CategoryTheory.ShortComplex +namespace CategoryTheory +open _root_.CategoryTheory +namespace ShortComplex +open _root_.CategoryTheory +open _root_.CategoryTheory.ShortComplex section CommRing variable {R : Type u} [CommRing R] @@ -72,15 +83,15 @@ def dualCycleToHomologyFunctional (S : ShortComplex (ModuleCat.{u} R)) : simpa [moduleCatToCycles, S.f.hom.codRestrict_apply S.g.hom.ker (h := moduleCat_zero_apply S)]) map_add' φ ψ := by generalize_proofs - simp [LinearMap.add_comp, Submodule.liftQ_add S.moduleCatToCycles.range, *] + simp [LinearMap.add_comp, _root_.OAI.LinearAlgebra.Foundations.QuotientBasic.Submodule.liftQ_add S.moduleCatToCycles.range, *] map_smul' a φ := by generalize_proofs - simp [LinearMap.smul_comp, Submodule.liftQ_smul S.moduleCatToCycles.range, *] + simp [LinearMap.smul_comp, _root_.OAI.LinearAlgebra.Foundations.QuotientBasic.Submodule.liftQ_smul S.moduleCatToCycles.range, *] lemma dualCycleToHomologyFunctional_vanishes_on_boundaries (S : ShortComplex (ModuleCat.{u} R)) : - LinearMap.range (S.linearDual.moduleCatToCycles) ≤ - LinearMap.ker S.dualCycleToHomologyFunctional := by + LinearMap.range ((linearDual S).moduleCatToCycles) ≤ + LinearMap.ker (dualCycleToHomologyFunctional S) := by rintro _ ⟨(ψ : Module.Dual R S.X₃), rfl⟩ simp [dualCycleToHomologyFunctional] ext z @@ -92,17 +103,17 @@ This linear map from the homology of the reversed dual to `Hom_R(H(S), R)` pairs functional `φ` with the class of a cycle `z` by `φ(z)`, using quotient modules for both homology groups. -/ def dualHomologyComparisonExplicit (S : ShortComplex (ModuleCat.{u} R)) : - S.linearDual.moduleCatLeftHomologyData.H →ₗ[R] + (linearDual S).moduleCatLeftHomologyData.H →ₗ[R] Module.Dual R S.moduleCatLeftHomologyData.H := - (LinearMap.range S.linearDual.moduleCatToCycles).liftQ - S.dualCycleToHomologyFunctional - S.dualCycleToHomologyFunctional_vanishes_on_boundaries + (LinearMap.range (linearDual S).moduleCatToCycles).liftQ + (dualCycleToHomologyFunctional S) + (dualCycleToHomologyFunctional_vanishes_on_boundaries S) @[simp] lemma dualHomologyComparisonExplicit_mk_apply_mk (S : ShortComplex (ModuleCat.{u} R)) (φ : LinearMap.ker S.f.hom.dualMap) (z : LinearMap.ker S.g.hom) : - S.dualHomologyComparisonExplicit (Submodule.Quotient.mk φ) + (dualHomologyComparisonExplicit S) (Submodule.Quotient.mk φ) (Submodule.Quotient.mk z) = φ.1 z.1 := rfl @@ -115,7 +126,7 @@ attribute [local implicit_reducible] ShortComplex.moduleCatMk ShortComplex.modul lemma dualHomologyComparisonExplicit_surjective (S : ShortComplex (ModuleCat.{u} R)) : - Function.Surjective S.dualHomologyComparisonExplicit := by + Function.Surjective (dualHomologyComparisonExplicit S) := by intro α let φ : Module.Dual R S.X₂ := Subspace.dualLift (LinearMap.ker S.g.hom) <| α.comp (LinearMap.range S.moduleCatToCycles).mkQ @@ -129,15 +140,15 @@ lemma dualHomologyComparisonExplicit_surjective lemma dualHomologyComparisonExplicit_injective (S : ShortComplex (ModuleCat.{u} R)) : - Function.Injective S.dualHomologyComparisonExplicit := by + Function.Injective (dualHomologyComparisonExplicit S) := by intro a b hab induction a using Submodule.Quotient.induction_on with | _ φ => induction b using Submodule.Quotient.induction_on with | _ ψ => rw [Submodule.Quotient.eq] - have hzero : S.dualCycleToHomologyFunctional (φ - ψ) = 0 := - (S.dualCycleToHomologyFunctional.map_sub φ ψ).trans (sub_eq_zero.2 hab) + have hzero : (dualCycleToHomologyFunctional S) (φ - ψ) = 0 := + ((dualCycleToHomologyFunctional S).map_sub φ ψ).trans (sub_eq_zero.2 hab) have hv : (φ - ψ).1 ∈ (LinearMap.ker S.g.hom).dualAnnihilator := by rw [Submodule.mem_dualAnnihilator] intro z hz @@ -150,18 +161,20 @@ lemma dualHomologyComparisonExplicit_injective Evaluation of a dual cocycle on a cycle gives this linear equivalence `H(S*) ≃ Hom_R(H(S), R)`, where `S*` is the reversed dual sequence. It holds without a finite-dimensionality assumption. -/ def linearDualHomologyEquiv (S : ShortComplex (ModuleCat.{u} R)) : - S.linearDual.homology ≃ₗ[R] Module.Dual R S.homology := - S.linearDual.moduleCatHomologyIso.toLinearEquiv.trans <| - (LinearEquiv.ofBijective S.dualHomologyComparisonExplicit - ⟨S.dualHomologyComparisonExplicit_injective, - S.dualHomologyComparisonExplicit_surjective⟩).trans <| + (linearDual S).homology ≃ₗ[R] Module.Dual R S.homology := + (linearDual S).moduleCatHomologyIso.toLinearEquiv.trans <| + (LinearEquiv.ofBijective (dualHomologyComparisonExplicit S) + ⟨(dualHomologyComparisonExplicit_injective S), + (dualHomologyComparisonExplicit_surjective S)⟩).trans <| S.moduleCatHomologyIso.toLinearEquiv.dualMap end Field -end CategoryTheory.ShortComplex +end ShortComplex +end CategoryTheory namespace HomologicalComplex +open _root_.HomologicalComplex section CommRing variable {R : Type u} [CommRing R] @@ -182,7 +195,7 @@ attribute [simp] HomologicalComplex.linearDualCochainComplex_X @[simp] lemma linearDualCochainComplex_d_succ (K : ChainComplex (ModuleCat.{u} R) ℕ) (n : ℕ) : - (K.linearDualCochainComplex).d n (n + 1) = + ((linearDualCochainComplex K)).d n (n + 1) = ModuleCat.ofHom (K.d (n + 1) n).hom.dualMap := rfl attribute [local implicit_reducible] shortComplexFunctor' shortComplexFunctor @@ -191,10 +204,10 @@ this identifies the three terms around degree `n` in the dual cochain complex wi linear duals of the three terms around `n` in `K`, including the adjacent differentials. -/ @[implicit_reducible] def linearDualCochainComplexScIso (K : ChainComplex (ModuleCat.{u} R) ℕ) (n : ℕ) : - K.linearDualCochainComplex.sc n ≅ (K.sc n).linearDual := + (linearDualCochainComplex K).sc n ≅ (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual (K.sc n)) := have hprev : (ComplexShape.up ℕ).prev n = (ComplexShape.down ℕ).next n := by cases n <;> simp have hnext : (ComplexShape.up ℕ).next n = (ComplexShape.down ℕ).prev n := by simp - K.linearDualCochainComplex.isoSc' (c := ComplexShape.up ℕ) _ _ _ hprev hnext --≪≫ + (linearDualCochainComplex K).isoSc' (c := ComplexShape.up ℕ) _ _ _ hprev hnext --≪≫ variable {K L M : ChainComplex (ModuleCat.{u} R) ℕ} @@ -203,7 +216,7 @@ variable {K L M : ChainComplex (ModuleCat.{u} R) ℕ} `φ ∘ f_n`. -/ @[implicit_reducible, simps f] def linearDualMap (f : K ⟶ L) : - L.linearDualCochainComplex ⟶ K.linearDualCochainComplex where + (linearDualCochainComplex L) ⟶ (linearDualCochainComplex K) where f n := ModuleCat.ofHom (f.f n).hom.dualMap comm' _ _ _ := by rw [linearDualCochainComplex_d, linearDualCochainComplex_d, ← ModuleCat.ofHom_comp, @@ -212,7 +225,7 @@ def linearDualMap (f : K ⟶ L) : @[simp] lemma linearDualMap_id (K : ChainComplex (ModuleCat.{u} R) ℕ) : - linearDualMap (𝟙 K) = 𝟙 K.linearDualCochainComplex := + linearDualMap (𝟙 K) = 𝟙 (linearDualCochainComplex K) := rfl @[simp] @@ -225,7 +238,7 @@ lemma linearDualMap_comp (f : K ⟶ L) (g : L ⟶ M) : with inverse given by precomposition with `e⁻¹`. -/ @[implicit_reducible] def linearDualIso (e : K ≅ L) : - L.linearDualCochainComplex ≅ K.linearDualCochainComplex where + (linearDualCochainComplex L) ≅ (linearDualCochainComplex K) where hom := linearDualMap e.hom inv := linearDualMap e.inv hom_inv_id := by rw [← linearDualMap_comp, e.inv_hom_id, linearDualMap_id] @@ -240,10 +253,14 @@ variable {R : Type u} [Field R] cocycles on cycles gives this linear equivalence `H^n(Hom_R(K,R)) ≃ Hom_R(H_n(K), R)`. It requires no finite-dimensionality assumption. -/ def linearDualHomologyEquiv (K : ChainComplex (ModuleCat.{u} R) ℕ) (n : ℕ) : - K.linearDualCochainComplex.homology n ≃ₗ[R] Module.Dual R (K.homology n) := + (linearDualCochainComplex K).homology n ≃ₗ[R] Module.Dual R (K.homology n) := (ShortComplex.homologyMapIso (linearDualCochainComplexScIso K n)).toLinearEquiv.trans - (K.sc n).linearDualHomologyEquiv + (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDualHomologyEquiv (K.sc n)) end Field end HomologicalComplex + +end + +end OAI.Algebra.Homology.LinearDual diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/AnalyticLeftInverse.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/AnalyticLeftInverse.lean index c201725c99..e1d45c7a5d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/AnalyticLeftInverse.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/AnalyticLeftInverse.lean @@ -1,11 +1,16 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AnalyticMap -public import Mathlib.AlgebraicGeometry.Morphisms.ClosedImmersion +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AnalyticMap +import Mathlib.AlgebraicGeometry.Morphisms.ClosedImmersion + +namespace OAI.AlgebraicGeometry.ClosedImmersion.AnalyticLeftInverse + +open _root_.AlgebraicGeometry /-! # Analytic local left inverses from section lifting @@ -15,11 +20,12 @@ ambient neighborhood. Their analytic evaluations give a local left inverse to th written in complex charts, and in particular the inclusion has injective derivative. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace Filter +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace Filter -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) @@ -28,9 +34,14 @@ variable (X Y : Over (Spec ↧ℂ)) /-- Let `i : Y → X` be a morphism of smooth complex schemes of respective dimensions `m` and `d`, and let `z ∈ Y(ℂ)`. If `eY` and `eX` are the chosen analytic charts at `z` and `i(z)`, this is the coordinate expression `eX ∘ i ∘ eY⁻¹ : ℂ^m → ℂ^d`, valid where both charts are defined. -/ -def inclusionInComplexCharts (z : ComplexPoint Y) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) : (Fin m → ℂ) → (Fin d → ℂ) := - fun v => localChart X d (Point.map i z) - (Point.map i ((localChart Y m z).symm v)) + fun v => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z).symm v)) + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.ClosedImmersion.AnalyticLeftInverse diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/HolomorphicCharts.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/HolomorphicCharts.lean index 73ae4f4f26..b5fbaa74e3 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/HolomorphicCharts.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/HolomorphicCharts.lean @@ -1,11 +1,17 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.NormalCoordinates -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition +import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.NormalCoordinates +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition + +namespace OAI.AlgebraicGeometry.ClosedImmersion.HolomorphicCharts + +open _root_.AlgebraicGeometry +open _root_.OpenPartialHomeomorph /-! # Holomorphic support-flattening charts @@ -15,9 +21,9 @@ upgrades centerwise analyticity to analyticity throughout each selected chart. A changes come from the smooth closed immersion constructed earlier. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology Filter +open _root_.CategoryTheory _root_.Topology Filter namespace OpenPartialHomeomorph @@ -31,58 +37,64 @@ inverse is complex analytic at `e(x)`. -/ def biAnalyticLocus : Set E := {x | AnalyticAt ℂ e x} ∩ (e.source ∩ e ⁻¹' {y | AnalyticAt ℂ e.symm y}) -theorem biAnalyticLocus_isOpen : IsOpen e.biAnalyticLocus := +theorem biAnalyticLocus_isOpen : IsOpen (biAnalyticLocus e) := (isOpen_analyticAt ℂ e).inter (e.isOpen_inter_preimage (isOpen_analyticAt ℂ e.symm)) /-- Let `E` and `F` be complex Banach spaces and `e` a homeomorphism between open subsets. Restrict its source to those `x` where both `e` at `x` and `e⁻¹` at `e(x)` are complex analytic. This is the resulting homeomorphism between open subsets, analytic in both directions. -/ def biAnalyticRestrict : OpenPartialHomeomorph E F := - e.restrOpen e.biAnalyticLocus e.biAnalyticLocus_isOpen + e.restrOpen (biAnalyticLocus e) (biAnalyticLocus_isOpen e) end OpenPartialHomeomorph -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) [SmoothOfRelativeDimension m Y.hom] [SmoothOfRelativeDimension d X.hom] - [IsClosedImmersion i.left] (z : ComplexPoint Y) + [IsClosedImmersion i.left] (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) /-- Let `i : Y → X` be a closed immersion of smooth schemes over `ℂ`, of respective dimensions `m` and `d`, and let `z ∈ Y(ℂ)`. Let `P` be the chosen left inverse of the coordinate derivative of `i`. This continuous complex linear equivalence `ℂ^m × ker P ≃ ℂ^m × ℂ^{d-m}` leaves the first coordinate fixed and uses a chosen basis on the normal space `ker P`. -/ -def closedImmersionNormalCoordinatesLinearEquiv : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinatesLinearEquiv : ((Fin m → ℂ) × - (closedImmersionDerivativeProjection X Y i m d z).ker) ≃L[ℂ] + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection X Y i m d z).ker) ≃L[ℂ] ((Fin m → ℂ) × (Fin (d - m) → ℂ)) := (ContinuousLinearEquiv.refl ℂ (Fin m → ℂ)).prodCongr - (closedImmersionNormalKernelEquiv X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalKernelEquiv X Y i m d z) /-- Let `i : Y → X` be a closed immersion of smooth complex schemes of dimensions `m,d`, and let `z ∈ Y(ℂ)`. In the chosen analytic charts write `g = e_X ∘ i ∘ e_Y⁻¹` and `a = e_Y(z)`. Choose a complex linear left inverse `P` of `Dg(a)`. This local homeomorphism from `ℂ^d` to `ℂ^m × ℂ^{d-m}` inverts `(v,w) ↦ g(v)+w` near `(a,0)` and identifies `ker P` with `ℂ^{d-m}` using a chosen basis. -/ -def closedImmersionNormalCoordinateChange : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange : OpenPartialHomeomorph (Fin d → ℂ) ((Fin m → ℂ) × (Fin (d - m) → ℂ)) := - (closedImmersionNormalChart X Y i m d z).symm.trans - (closedImmersionNormalCoordinatesLinearEquiv X Y i m d z).toHomeomorph.toOpenPartialHomeomorph + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z).symm.trans + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinatesLinearEquiv X Y i m d z).toHomeomorph.toOpenPartialHomeomorph /-- Let `i : Y → X` be a closed immersion of smooth schemes over `ℂ`, of respective dimensions `m` and `d`, and let `z ∈ Y(ℂ)`. This chart maps a neighborhood of `i(z)` in `X(ℂ)` into `ℂ^m × ℂ^{d-m}`, with the image of `Y(ℂ)` equal to the zero set of the normal coordinate on the source. The coordinate change from an ambient analytic chart and its inverse are holomorphic throughout their domains. -/ -def closedImmersionHolomorphicFlatteningChart : - OpenPartialHomeomorph (ComplexPoint X) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart : + OpenPartialHomeomorph (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) ((Fin m → ℂ) × (Fin (d - m) → ℂ)) := - ((localChart X d (Point.map i z)).trans - (closedImmersionNormalCoordinateChange X Y i m d z).biAnalyticRestrict).restrOpen - (closedImmersionStandardFlatteningChart X Y i m d z).source - (closedImmersionStandardFlatteningChart X Y i m d z).open_source + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z)).trans + (_root_.OAI.AlgebraicGeometry.ClosedImmersion.HolomorphicCharts.OpenPartialHomeomorph.biAnalyticRestrict (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z))).restrOpen + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart X Y i m d z).source + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart X Y i m d z).open_source + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.ClosedImmersion.HolomorphicCharts diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/NormalCoordinates.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/NormalCoordinates.lean index 9f56986588..a3d6d194ed 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/NormalCoordinates.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/NormalCoordinates.lean @@ -1,12 +1,17 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.AnalyticLeftInverse -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ClosedImmersion -public import HodgeConjecture.Mathlib.Analysis.Calculus.SplitDerivativeNormalChart +import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.AnalyticLeftInverse +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ClosedImmersion +import HodgeConjecture.Mathlib.Analysis.Calculus.SplitDerivativeNormalChart + +namespace OAI.AlgebraicGeometry.ClosedImmersion.NormalCoordinates + +open _root_.AlgebraicGeometry /-! # Normal coordinates for smooth closed immersions @@ -17,111 +22,112 @@ embedding theorem excludes remote branches and identifies the whole local analyt with zero normal coordinate. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology Filter +open _root_.CategoryTheory _root_.Topology Filter -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) [SmoothOfRelativeDimension m Y.hom] [SmoothOfRelativeDimension d X.hom] - [IsClosedImmersion i.left] (z : ComplexPoint Y) + [IsClosedImmersion i.left] (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) /-- Let `i : Y → X` be a closed immersion of smooth schemes over `ℂ`, of respective dimensions `m` and `d`, and let `z ∈ Y(ℂ)`. In the chosen analytic charts, the derivative of `i` is an injective complex linear map `ℂ^m → ℂ^d`. This chooses a continuous complex linear left inverse `P : ℂ^d → ℂ^m`, so `P ∘ D i = id`. -/ -def closedImmersionDerivativeProjection : (Fin d → ℂ) →L[ℂ] (Fin m → ℂ) := - (exists_leftInverse_fderiv_inclusionInComplexCharts +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection : (Fin d → ℂ) →L[ℂ] (Fin m → ℂ) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_leftInverse_fderiv_inclusionInComplexCharts X Y i m d z).choose -theorem closedImmersionDerivativeProjection_leftInverse : - (closedImmersionDerivativeProjection X Y i m d z).comp - (fderiv ℂ (inclusionInComplexCharts X Y i m d z) - (localChart Y m z z)) = ContinuousLinearMap.id ℂ (Fin m → ℂ) := - (exists_leftInverse_fderiv_inclusionInComplexCharts +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection_leftInverse : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection X Y i m d z).comp + (fderiv ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z)) = ContinuousLinearMap.id ℂ (Fin m → ℂ) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_leftInverse_fderiv_inclusionInComplexCharts X Y i m d z).choose_spec /-- Let `i : Y → X` be a closed immersion of smooth complex schemes of dimensions `m,d`, and let `z ∈ Y(ℂ)`. In the chosen charts write `g = e_X ∘ i ∘ e_Y⁻¹` and `a = e_Y(z)`. For the chosen complex-linear left inverse `P` of `Dg(a)`, this local homeomorphism `ℂ^m × ker P → ℂ^d` is `(v,w) ↦ g(v)+w` near `(a,0)`. -/ -def closedImmersionNormalChart : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart : OpenPartialHomeomorph ((Fin m → ℂ) × - (closedImmersionDerivativeProjection X Y i m d z).ker) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection X Y i m d z).ker) (Fin d → ℂ) := - (analyticAt_inclusionInComplexCharts X Y i m d z).hasStrictFDerivAt.normalChart - (closedImmersionDerivativeProjection X Y i m d z) - (closedImmersionDerivativeProjection_leftInverse X Y i m d z) + (_root_.OAI.Analysis.Foundations.SplitDerivativeNormalChart.HasStrictFDerivAt.normalChart (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_inclusionInComplexCharts X Y i m d z).hasStrictFDerivAt) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection_leftInverse X Y i m d z) -@[simp] theorem closedImmersionNormalChart_apply +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart_apply (v : (Fin m → ℂ) × - (closedImmersionDerivativeProjection X Y i m d z).ker) : - closedImmersionNormalChart X Y i m d z v = - inclusionInComplexCharts X Y i m d z v.1 + v.2 := rfl - -theorem closedImmersionNormalChart_mem_source : - (localChart Y m z z, 0) ∈ - (closedImmersionNormalChart X Y i m d z).source := - (analyticAt_inclusionInComplexCharts X Y i m d z).hasStrictFDerivAt.normalChart_mem_source _ _ - -theorem closedImmersionNormalChart_mem_target : - localChart X d (Point.map i z) (Point.map i z) ∈ - (closedImmersionNormalChart X Y i m d z).target := by - simpa only [closedImmersionNormalChart, inclusionInComplexCharts_at_center] using - (analyticAt_inclusionInComplexCharts X Y i m d z).hasStrictFDerivAt.normalChart_mem_target - (closedImmersionDerivativeProjection X Y i m d z) - (closedImmersionDerivativeProjection_leftInverse X Y i m d z) - -@[simp] theorem closedImmersionNormalChart_symm_center : - (closedImmersionNormalChart X Y i m d z).symm - (localChart X d (Point.map i z) (Point.map i z)) = - (localChart Y m z z, 0) := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection X Y i m d z).ker) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z v = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts X Y i m d z v.1 + v.2 := rfl + +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart_mem_source : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0) ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z).source := + (_root_.OAI.Analysis.Foundations.SplitDerivativeNormalChart.HasStrictFDerivAt.normalChart_mem_source (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_inclusionInComplexCharts X Y i m d z).hasStrictFDerivAt) _ _ + +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart_mem_target : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z).target := by + simpa only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts_at_center] using + (_root_.OAI.Analysis.Foundations.SplitDerivativeNormalChart.HasStrictFDerivAt.normalChart_mem_target (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_inclusionInComplexCharts X Y i m d z).hasStrictFDerivAt) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection_leftInverse X Y i m d z) + +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart_symm_center : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z).symm + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z)) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0) := by simpa using - (closedImmersionNormalChart X Y i m d z).left_inv - (closedImmersionNormalChart_mem_source X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z).left_inv + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart_mem_source X Y i m d z) /-- The normal space has complex dimension `d - m`. -/ -theorem closedImmersionNormalKernel_finrank : +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalKernel_finrank : Module.finrank ℂ - (closedImmersionDerivativeProjection X Y i m d z).ker = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection X Y i m d z).ker = d - m := by have hdim := - ((fderiv ℂ (inclusionInComplexCharts X Y i m d z) - (localChart Y m z z)).splitKernelEquiv - (closedImmersionDerivativeProjection X Y i m d z) - (closedImmersionDerivativeProjection_leftInverse X Y i m d z)).toLinearEquiv.finrank_eq + ((_root_.OAI.Analysis.Foundations.SplitDerivativeNormalChart.ContinuousLinearMap.splitKernelEquiv (fderiv ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z))) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection_leftInverse X Y i m d z)).toLinearEquiv.finrank_eq simp only [Module.finrank_prod, Module.finrank_pi, Fintype.card_fin] at hdim omega /-- Near the selected ambient point, membership in the entire image is equivalent to having zero normal coordinate. The forward direction uses the induced topology to exclude image points whose intrinsic parameters are outside the coordinate neighborhood. -/ -private theorem eventually_mem_range_iff_normal_eq_zero : - ∀ᶠ y in 𝓝 (Point.map i z), - y ∈ Set.range (Point.map i) ↔ - ((closedImmersionNormalChart X Y i m d z).symm - (localChart X d (Point.map i z) y)).2 = 0 := by - let eY := localChart Y m z - let eX := localChart X d (Point.map i z) - let eN := closedImmersionNormalChart X Y i m d z - let g := Point.map i - have hzY : z ∈ eY.source := mem_localChart_source Y m z - have hzX : g z ∈ eX.source := mem_localChart_source X d (g z) +theorem eventually_mem_range_iff_normal_eq_zero : + ∀ᶠ y in 𝓝 (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z), + y ∈ Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) ↔ + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z).symm + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) y)).2 = 0 := by + let eY := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z + let eX := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) + let eN := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z + let g := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i + have hzY : z ∈ eY.source := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source Y m z + have hzX : g z ∈ eX.source := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source X d (g z) have hzN : (eY z, 0) ∈ eN.source := - closedImmersionNormalChart_mem_source X Y i m d z + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart_mem_source X Y i m d z have hzNt : eX (g z) ∈ eN.target := - closedImmersionNormalChart_mem_target X Y i m d z + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart_mem_target X Y i m d z have hcenter : eN.symm (eX (g z)) = (eY z, 0) := - closedImmersionNormalChart_symm_center X Y i m d z + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart_symm_center X Y i m d z have hparam : ∀ᶠ w in 𝓝 z, w ∈ eY.source ∧ (eY w, 0) ∈ eN.source := by filter_upwards [eY.open_source.mem_nhds hzY, ((eY.continuousAt hzY).prodMk continuousAt_const) (eN.open_source.mem_nhds hzN)] with w hwY hwN exact ⟨hwY, hwN⟩ - rw [(isInducing_map_of_closedImmersion i).nhds_eq_comap z, eventually_comap] at hparam + rw [(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isInducing_map_of_closedImmersion i).nhds_eq_comap z, eventually_comap] at hparam have hN : ∀ᶠ y in 𝓝 (g z), eX y ∈ eN.target := (eX.continuousAt hzX) (eN.open_target.mem_nhds hzNt) have hc : ContinuousAt (fun y => (eN.symm (eX y)).1) (g z) := @@ -129,7 +135,7 @@ private theorem eventually_mem_range_iff_normal_eq_zero : have hback : ∀ᶠ y in 𝓝 (g z), g (eY.symm (eN.symm (eX y)).1) ∈ eX.source := by have hcont : ContinuousAt (fun y => g (eY.symm (eN.symm (eX y)).1)) (g z) := by - apply (Point.continuous_map i).continuousAt.comp + apply (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.continuous_map i).continuousAt.comp apply ContinuousAt.comp _ hc change ContinuousAt eY.symm (eN.symm (eX (g z))).1 rw [hcenter] @@ -159,11 +165,11 @@ private theorem eventually_mem_range_iff_normal_eq_zero : /-- An open ambient neighborhood on which normal coordinates detect the full closed-immersion image, extracted from the neighborhood assertion. -/ -theorem exists_open_normalCriterion : - ∃ W : Set (ComplexPoint X), IsOpen W ∧ Point.map i z ∈ W ∧ - ∀ y ∈ W, y ∈ Set.range (Point.map i) ↔ - ((closedImmersionNormalChart X Y i m d z).symm - (localChart X d (Point.map i z) y)).2 = 0 := by +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_open_normalCriterion : + ∃ W : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X), IsOpen W ∧ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z ∈ W ∧ + ∀ y ∈ W, y ∈ Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) ↔ + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z).symm + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) y)).2 = 0 := by obtain ⟨W, hWsub, hWopen, hzW⟩ := mem_nhds_iff.mp (eventually_mem_range_iff_normal_eq_zero X Y i m d z) exact ⟨W, hWopen, hzW, hWsub⟩ @@ -172,61 +178,66 @@ theorem exists_open_normalCriterion : and `d`, and let `z ∈ Y(ℂ)`. This chart maps a neighborhood of `i(z)` in `X(ℂ)` to `ℂ^m × ker P`, where `P` is a chosen left inverse of the coordinate derivative of `i`. Throughout its source, membership in `i(Y(ℂ))` is equivalent to the second coordinate being zero. -/ -def closedImmersionFlatteningChart : - OpenPartialHomeomorph (ComplexPoint X) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart : + OpenPartialHomeomorph (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) ((Fin m → ℂ) × - (closedImmersionDerivativeProjection X Y i m d z).ker) := - ((localChart X d (Point.map i z)).trans - (closedImmersionNormalChart X Y i m d z).symm).restrOpen - (exists_open_normalCriterion X Y i m d z).choose - (exists_open_normalCriterion X Y i m d z).choose_spec.1 - -@[simp] theorem closedImmersionFlatteningChart_apply (y : ComplexPoint X) : - closedImmersionFlatteningChart X Y i m d z y = - (closedImmersionNormalChart X Y i m d z).symm - (localChart X d (Point.map i z) y) := rfl - -@[simp] theorem closedImmersionFlatteningChart_center : - closedImmersionFlatteningChart X Y i m d z (Point.map i z) = - (localChart Y m z z, 0) := - closedImmersionNormalChart_symm_center X Y i m d z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection X Y i m d z).ker) := + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z)).trans + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z).symm).restrOpen + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_open_normalCriterion X Y i m d z).choose + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_open_normalCriterion X Y i m d z).choose_spec.1 + +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart_apply (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart X Y i m d z y = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z).symm + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) y) := rfl + +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart_center : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart X Y i m d z (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart_symm_center X Y i m d z /-- Let `i : Y → X` be a closed immersion of smooth schemes over `ℂ`, of respective dimensions `m` and `d`, and let `z ∈ Y(ℂ)`. Let `P : ℂ^d → ℂ^m` be the chosen left inverse of the derivative of `i` in analytic coordinates. Since `ker P` has complex dimension `d-m`, this chooses a continuous complex linear equivalence `ker P ≃ ℂ^{d-m}`. -/ -def closedImmersionNormalKernelEquiv : - (closedImmersionDerivativeProjection X Y i m d z).ker ≃L[ℂ] +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalKernelEquiv : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection X Y i m d z).ker ≃L[ℂ] (Fin (d - m) → ℂ) := (LinearEquiv.ofFinrankEq _ _ (by simpa only [Module.finrank_pi, Fintype.card_fin] using - closedImmersionNormalKernel_finrank X Y i m d z)).toContinuousLinearEquiv + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalKernel_finrank X Y i m d z)).toContinuousLinearEquiv /-- Let `i : Y → X` be a closed immersion of smooth schemes over `ℂ`, of respective dimensions `m` and `d`, and let `z ∈ Y(ℂ)`. This chart maps a neighborhood of `i(z)` in `X(ℂ)` to `ℂ^m × ℂ^{d-m}`. Its second coordinate is normal to `Y`, and its zero set throughout the source is exactly the image of `Y(ℂ)` there. -/ -def closedImmersionStandardFlatteningChart : - OpenPartialHomeomorph (ComplexPoint X) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart : + OpenPartialHomeomorph (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) ((Fin m → ℂ) × (Fin (d - m) → ℂ)) := - (closedImmersionFlatteningChart X Y i m d z).trans + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart X Y i m d z).trans (((ContinuousLinearEquiv.refl ℂ (Fin m → ℂ)).prodCongr - (closedImmersionNormalKernelEquiv X Y i m d z)).toHomeomorph.toOpenPartialHomeomorph) - -@[simp] theorem closedImmersionStandardFlatteningChart_apply (y : ComplexPoint X) : - closedImmersionStandardFlatteningChart X Y i m d z y = - ((closedImmersionFlatteningChart X Y i m d z y).1, - closedImmersionNormalKernelEquiv X Y i m d z - (closedImmersionFlatteningChart X Y i m d z y).2) := rfl - -@[simp] theorem closedImmersionStandardFlatteningChart_source : - (closedImmersionStandardFlatteningChart X Y i m d z).source = - (closedImmersionFlatteningChart X Y i m d z).source := by - simp only [closedImmersionStandardFlatteningChart, OpenPartialHomeomorph.trans_source, + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalKernelEquiv X Y i m d z)).toHomeomorph.toOpenPartialHomeomorph) + +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_apply (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart X Y i m d z y = + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart X Y i m d z y).1, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalKernelEquiv X Y i m d z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart X Y i m d z y).2) := rfl + +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_source : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart X Y i m d z).source = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart X Y i m d z).source := by + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart, OpenPartialHomeomorph.trans_source, Homeomorph.toOpenPartialHomeomorph_source, Set.preimage_univ, Set.inter_univ] -@[simp] theorem closedImmersionStandardFlatteningChart_center : - closedImmersionStandardFlatteningChart X Y i m d z - (Point.map i z) = (localChart Y m z z, 0) := by simp +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_center : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart X Y i m d z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) = (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0) := by simp + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.ClosedImmersion.NormalCoordinates diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/SourceOpen.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/SourceOpen.lean index 697267c0c5..e1e7e5f8e6 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/SourceOpen.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ClosedImmersion/SourceOpen.lean @@ -1,11 +1,17 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.AlgebraicGeometry.Morphisms.Immersion -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Stratification.Analytification +import Mathlib.AlgebraicGeometry.Morphisms.Immersion +import HodgeConjecture.Lemmas.AlgebraicGeometry.Stratification.Analytification + +namespace OAI.AlgebraicGeometry.ClosedImmersion.SourceOpen + +open _root_.AlgebraicGeometry + /-! # Restricting the source of a closed immersion without losing closedness @@ -15,11 +21,11 @@ image is exactly the restriction of the original image. This allows a smooth source of varying local dimensions to be treated on fixed-dimensional opens. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section variable {X Y : Scheme} (i : Y ⟶ X) [IsClosedImmersion i] (A : Y.Opens) @@ -84,4 +90,8 @@ instance closedImmersionSourceOpenLift_isClosedImmersion : exact i.isClosedEmbedding.isClosed_range.preimage (closedImmersionSourceOpenTarget i A).ι.continuous -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.ClosedImmersion.SourceOpen diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/AmbientInjectiveResolution.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/AmbientInjectiveResolution.lean index 49c10a04f4..b1383ebace 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/AmbientInjectiveResolution.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/AmbientInjectiveResolution.lean @@ -12,15 +12,20 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.OpenInjectiveResolution -public import HodgeConjecture.Definitions.AlgebraicGeometry.Hodge.Filtration -public import Mathlib.Algebra.Homology.DerivedCategory.KInjective +import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.OpenInjectiveResolution +import HodgeConjecture.Definitions.AlgebraicGeometry.Hodge.Filtration +import Mathlib.Algebra.Homology.DerivedCategory.KInjective import HodgeConjecture.Mathlib.Algebra.Homology.Notation +namespace OAI.AlgebraicGeometry.Cohomology.AmbientInjectiveResolution + +open _root_.AlgebraicGeometry + /-! # The chosen injective resolution of the constant rational sheaf @@ -28,73 +33,77 @@ import HodgeConjecture.Mathlib.Algebra.Homology.Notation `X(ℂ)`, indexed by integers. It is K-injective. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X : Over (Spec ↧ℂ)) /-- Let `X` be a scheme over `ℂ`. This is the complex `I^•` of sheaves of abelian groups in a chosen injective resolution `ℚ → I^•` on the analytic space `X(ℂ)`. It is indexed by integers and is zero in negative degrees. -/ -def ambientRationalInjectiveComplex : - CochainComplex (AnalyticAdditiveSheaf X) ℤ := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex : + CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ := -- An injective resolution `ℚ_{X(ℂ)} → I^•`. - (TopCat.Sheaf.ambientConstantInjectiveResolution - (TopCat.of (ComplexPoint X)) (AddCommGrpCat.of ℚ)).cocomplex.extend + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (AddCommGrpCat.of ℚ)).cocomplex.extend ComplexShape.embeddingUpNat /-- Let `X` be a scheme over `ℂ`. This is the augmentation `ℚ[0] → I^•` of the chosen injective resolution of the constant rational sheaf on the analytic space `X(ℂ)`, with both complexes indexed by integers. -/ -def ambientRationalInjectiveAugmentation : - constantFieldSheafComplexInt ℚ X ⟶ - ambientRationalInjectiveComplex X := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveAugmentation : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt ℚ X ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X := HomologicalComplex.extendMap - (TopCat.Sheaf.ambientConstantInjectiveResolution - (TopCat.of (ComplexPoint X)) (AddCommGrpCat.of ℚ)).ι + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (AddCommGrpCat.of ℚ)).ι ComplexShape.embeddingUpNat -instance ambientRationalInjectiveAugmentation_quasiIso : - QuasiIso (ambientRationalInjectiveAugmentation X) := by - let I := TopCat.Sheaf.ambientConstantInjectiveResolution - (TopCat.of (ComplexPoint X)) (AddCommGrpCat.of ℚ) +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveAugmentation_quasiIso : + QuasiIso (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveAugmentation X) := by + let I := _root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (AddCommGrpCat.of ℚ) let : QuasiIso I.ι := I.quasiIso exact (HomologicalComplex.quasiIso_extendMap_iff I.ι _).mpr inferInstance -instance ambientRationalInjectiveComplex_injective (q : ℤ) : - Injective ((ambientRationalInjectiveComplex X).X q) := - CochainComplex.injective_extend_nat _ - (TopCat.Sheaf.ambientConstantInjectiveResolution - (TopCat.of (ComplexPoint X)) (AddCommGrpCat.of ℚ)).injective q +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex_injective (q : ℤ) : + Injective ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X).X q) := + _root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.injective_extend_nat _ + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (AddCommGrpCat.of ℚ)).injective q -instance ambientRationalInjectiveComplex_isStrictlyGE : - (ambientRationalInjectiveComplex X).IsStrictlyGE 0 := by - dsimp only [ambientRationalInjectiveComplex] +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex_isStrictlyGE : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X).IsStrictlyGE 0 := by + dsimp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex] infer_instance -local instance rationalConeForgetSheafDerivedCategory : - HasDerivedCategory (AnalyticAdditiveSheaf X) := - HasDerivedCategory.standard (AnalyticAdditiveSheaf X) +local instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalConeForgetSheafDerivedCategory : + HasDerivedCategory (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) := + HasDerivedCategory.standard (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) -instance ambientRationalInjectiveComplex_isKInjective : - (ambientRationalInjectiveComplex X).IsKInjective := +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex_isKInjective : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X).IsKInjective := CochainComplex.isKInjective_of_injective _ 0 /-- The augmentation `ℚ[0] → I^•`, with the source the constant sheaf placed in degree zero. -/ -def ambientRationalInjectiveSingleAugmentation : - (CochainComplex.singleFunctor (AnalyticAdditiveSheaf X) 0).obj 𝓒(↧(ComplexPoint X); ℚ) ⟶ - ambientRationalInjectiveComplex X := - (constantFieldSheafComplexIntIsoSingle ℚ X).inv ≫ ambientRationalInjectiveAugmentation X - -instance ambientRationalInjectiveSingleAugmentation_quasiIso : - QuasiIso (ambientRationalInjectiveSingleAugmentation X) := by - dsimp only [ambientRationalInjectiveSingleAugmentation] +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveSingleAugmentation : + (CochainComplex.singleFunctor (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) 0).obj 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℚ) ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexIntIsoSingle ℚ X).inv ≫ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveAugmentation X + +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveSingleAugmentation_quasiIso : + QuasiIso (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveSingleAugmentation X) := by + dsimp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveSingleAugmentation] infer_instance -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end end + +end OAI.AlgebraicGeometry.Cohomology.AmbientInjectiveResolution diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/GlobalSections.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/GlobalSections.lean index 2bd41c3bdf..30e7bf32b2 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/GlobalSections.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/GlobalSections.lean @@ -12,23 +12,30 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.Constant -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cohomology.SingularSheafComparison -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueQuasiIso -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.InjectiveFlasque -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.SubdivisionCochain -public import HodgeConjecture.Mathlib.Algebra.Homology.MapExtend -public import Mathlib.Algebra.Homology.DerivedCategory.KInjective -public import Mathlib.Algebra.Homology.Factorizations.CM5a -public import HodgeConjecture.Mathlib.Algebra.Homology.HomComplexSingle +import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.Constant +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cohomology.SingularSheafComparison +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueQuasiIso +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.InjectiveFlasque +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.SubdivisionCochain +import HodgeConjecture.Mathlib.Algebra.Homology.MapExtend +import Mathlib.Algebra.Homology.DerivedCategory.KInjective +import Mathlib.Algebra.Homology.Factorizations.CM5a +import HodgeConjecture.Mathlib.Algebra.Homology.HomComplexSingle import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.Cohomology.GlobalSections + +open _root_.AlgebraicGeometry +open _root_.TopCat +open _root_.TopCat.Sheaf + /-! # Singular cohomology and global sections @@ -41,12 +48,16 @@ argument in `Sheaf.FlasqueQuasiIso` proves that its quasi-isomorphism remains a quasi-isomorphism after taking global sections. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf section @@ -58,10 +69,10 @@ equivalence `Hom(ℤ_Y, F) ≃ Γ(Y, F)` evaluates a sheaf morphism at the const corresponding multiple of `s`. -/ def integerConstantHomAddEquivGlobalSections (F : TopCat.Sheaf AddCommGrpCat Y) : - letI : AddCommGroup ((constantFunctor Y).obj (AddCommGrpCat.of ℤ) ⟶ F) := + letI : AddCommGroup ((_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor Y).obj (AddCommGrpCat.of ℤ) ⟶ F) := (inferInstance : Preadditive (TopCat.Sheaf AddCommGrpCat Y)).homGroup _ _ - ((constantFunctor Y).obj (AddCommGrpCat.of ℤ) ⟶ F) ≃+ F.presheaf.obj (.op (⊤ : Opens Y)) := by - letI : AddCommGroup ((constantFunctor Y).obj (AddCommGrpCat.of ℤ) ⟶ F) := + ((_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor Y).obj (AddCommGrpCat.of ℤ) ⟶ F) ≃+ F.presheaf.obj (.op (⊤ : Opens Y)) := by + letI : AddCommGroup ((_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor Y).obj (AddCommGrpCat.of ℤ) ⟶ F) := (inferInstance : Preadditive (TopCat.Sheaf AddCommGrpCat Y)).homGroup _ _ exact ((constantSheafAdj (Opens.grothendieckTopology Y) AddCommGrpCat isTerminalTop).homAddEquiv (AddCommGrpCat.of ℤ) F).trans <| @@ -70,7 +81,7 @@ def integerConstantHomAddEquivGlobalSections /-- The constant-integer/global-sections equivalence is natural in the sheaf. -/ lemma integerConstantHomAddEquivGlobalSections_naturality {F G : TopCat.Sheaf AddCommGrpCat Y} (f : F ⟶ G) - (g : (constantFunctor Y).obj (AddCommGrpCat.of ℤ) ⟶ F) : + (g : (_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor Y).obj (AddCommGrpCat.of ℤ) ⟶ F) : integerConstantHomAddEquivGlobalSections G (g ≫ f) = f.hom.app (.op (⊤ : Opens Y)) (integerConstantHomAddEquivGlobalSections F g) := rfl @@ -83,7 +94,7 @@ zero differentials. -/ def integerConstantSingleComplex (Y : TopCat.{0}) : CochainComplex (TopCat.Sheaf AddCommGrpCat Y) ℤ := (CochainComplex.singleFunctor (TopCat.Sheaf AddCommGrpCat Y) 0).obj - ((constantFunctor Y).obj (AddCommGrpCat.of ℤ)) + ((_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor Y).obj (AddCommGrpCat.of ℤ)) /-- Let `Y` be a topological space and `K` an integer-indexed complex of sheaves of abelian groups on `Y`. The complex `Γ(Y, K)` has `Γ(Y, K^n)` in degree `n`; its differentials are the maps on @@ -92,7 +103,7 @@ def globalSectionsComplexInt (Y : TopCat.{0}) (K : CochainComplex (TopCat.Sheaf AddCommGrpCat Y) ℤ) : -- `Γ(Y, K^•)`. CochainComplex AddCommGrpCat ℤ := - IsFlasque.BoundedBelowComplex.globalSectionsComplex K + _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsComplex K set_option backward.isDefEq.respectTransparency.types false in set_option backward.isDefEq.respectTransparency false in @@ -100,8 +111,8 @@ set_option backward.isDefEq.respectTransparency false in F)` and `F ↦ Γ(Y, F)` on sheaves of abelian groups, by evaluating each morphism at the constant section `1`. -/ def integerConstantHomIsoGlobalSectionsFunctor (Y : TopCat.{0}) : - preadditiveCoyoneda.obj (.op ((constantFunctor Y).obj (AddCommGrpCat.of ℤ))) ≅ - IsFlasque.BoundedBelowComplex.globalSectionsFunctor Y := + preadditiveCoyoneda.obj (.op ((_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor Y).obj (AddCommGrpCat.of ℤ))) ≅ + _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsFunctor Y := NatIso.ofComponents (fun F ↦ (integerConstantHomAddEquivGlobalSections F).toAddCommGrpIso) (fun {F G} f ↦ by @@ -122,33 +133,40 @@ def homComplexSingleIntegerIsoGlobalSections globalSectionsComplexInt Y K := let pre := (inferInstance : Preadditive (TopCat.Sheaf AddCommGrpCat Y)) letI : Preadditive (TopCat.Sheaf AddCommGrpCat Y) := pre - letI : (IsFlasque.BoundedBelowComplex.globalSectionsFunctor Y).PreservesZeroMorphisms := + letI : (_root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsFunctor Y).PreservesZeroMorphisms := Functor.preservesZeroMorphisms_of_additive _ - CochainComplex.HomComplex.fromSingleZeroIsoPreadditiveCoyoneda - ((constantFunctor Y).obj (AddCommGrpCat.of ℤ)) K ≪≫ + _root_.OAI.Algebra.Homology.HomComplexSingle.CochainComplex.HomComplex.fromSingleZeroIsoPreadditiveCoyoneda + ((_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor Y).obj (AddCommGrpCat.of ℤ)) K ≪≫ (NatIso.mapHomologicalComplex (integerConstantHomIsoGlobalSectionsFunctor Y) ℤᵘᵖ).app K -end TopCat.Sheaf +end Sheaf +end TopCat -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X : Over (Spec ↧ℂ)) -local instance bettiGlobalSectionsHasDerivedCategory : - HasDerivedCategory (AnalyticAdditiveSheaf X) := - HasDerivedCategory.standard (AnalyticAdditiveSheaf X) +local instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.bettiGlobalSectionsHasDerivedCategory : + HasDerivedCategory (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) := + HasDerivedCategory.standard (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) /-- Let `X` be a scheme over `ℂ`. This identifies two complexes on its analytic space: the constant integer sheaf in degree zero first indexed by natural numbers and then extended by zero, and the same sheaf placed directly in degree zero of an integer-indexed complex. -/ -def constantIntegerSheafComplexIntIsoSingle : - constantIntegerSheafComplexInt X ≅ - TopCat.Sheaf.integerConstantSingleComplex - (TopCat.of (ComplexPoint X)) := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantIntegerSheafComplexIntIsoSingle : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantIntegerSheafComplexInt X ≅ + _root_.OAI.AlgebraicGeometry.Cohomology.GlobalSections.TopCat.Sheaf.integerConstantSingleComplex + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) := HomologicalComplex.extendSingleIso ComplexShape.embeddingUpNat - 𝓒(↧(ComplexPoint X); ℤ) 0 0 rfl + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℤ) 0 0 rfl + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.Cohomology.GlobalSections diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/SupportedSingularModel.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/SupportedSingularModel.lean index 302acc15e3..3a2341a2c4 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/SupportedSingularModel.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/SupportedSingularModel.lean @@ -1,15 +1,20 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SingularFlasqueModel -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.AmbientInjectiveResolution -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ProjectiveHausdorff -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ProjectiveParacompact +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SingularFlasqueModel +import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.AmbientInjectiveResolution +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ProjectiveHausdorff +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ProjectiveParacompact + +namespace OAI.AlgebraicGeometry.Cohomology.SupportedSingularModel + +open _root_.AlgebraicGeometry /-! # Supported singular models on smooth projective complex varieties @@ -20,12 +25,13 @@ Only the geometric scheme hypotheses remain. The target is the ambient injective the derived rational support comparison. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory TopologicalSpace -open AlgebraicTopology.Singular +open _root_.CategoryTheory _root_.TopologicalSpace +open _root_.OAI.AlgebraicTopology.Singular -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X : Over (Spec ↧ℂ)) [IsIntegral X.left] [Smooth X.hom] @@ -34,28 +40,33 @@ variable (X : Over (Spec ↧ℂ)) sheafified rational singular cochains and `ℚ → I^•` for the chosen injective resolution. This map `Γ_{X(ℂ) \ U}(C^•) → Γ_{X(ℂ) \ U}(I^•)` restricts the augmentation-preserving resolution comparison to subsheaves of sections vanishing on `U`. -/ -def complexSupportedSingularToAmbientInjective - (U : Opens (ComplexPoint X)) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportedSingularToAmbientInjective + (U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : -- `Γ_{X(ℂ) \ U}` of the singular-cochain model, mapping to `Γ_{X(ℂ) \ U}(I^•)`. - supportedRationalSingularCochainComplex (TopCat.of (ComplexPoint X)) U ⟶ - ((TopCat.Sheaf.sheafSectionsSupportedOutside + _root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) U ⟶ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside -- `X(ℂ)`. - (TopCat.of (ComplexPoint X)) U).mapHomologicalComplex ℤᵘᵖ).obj + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) U).mapHomologicalComplex ℤᵘᵖ).obj -- The injective resolution `I^•` of `ℚ` on `X(ℂ)`. - (ambientRationalInjectiveComplex X) := - supportedSingularToInjectiveComplex (TopCat.of (ComplexPoint X)) - (exists_contractibleOpen_le X) U + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X) := + _root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedSingularToInjectiveComplex (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_contractibleOpen_le X) U -variable [IsProjective X.hom] +variable [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] /-- The supported comparison is a sheaf quasi-isomorphism under the usual smooth projective geometry hypotheses alone. -/ -instance complexSupportedSingularToAmbientInjective_quasiIso - (U : Opens (ComplexPoint X)) : - QuasiIso (complexSupportedSingularToAmbientInjective X U) := by - let : ∀ V : Opens (ComplexPoint X), ParacompactSpace V := - openParacompactSpace X - exact supportedSingularToInjectiveComplex_quasiIso - (TopCat.of (ComplexPoint X)) (exists_contractibleOpen_le X) U - -end AlgebraicGeometry.ComplexPoint +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportedSingularToAmbientInjective_quasiIso + (U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : + QuasiIso (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportedSingularToAmbientInjective X U) := by + let : ∀ V : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X), ParacompactSpace V := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openParacompactSpace X + exact _root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedSingularToInjectiveComplex_quasiIso + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_contractibleOpen_le X) U + +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Cohomology.SupportedSingularModel diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/WithSupport.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/WithSupport.lean index 3a80a7dc62..ed0b97d1c8 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/WithSupport.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cohomology/WithSupport.lean @@ -12,16 +12,23 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.CohomologyFlasqueModel -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.AmbientInjectiveResolution -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.SupportedSingularModel -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Transport.CohomologySheaf +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.CohomologyFlasqueModel +import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.AmbientInjectiveResolution +import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.SupportedSingularModel +import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Transport.CohomologySheaf import HodgeConjecture.Mathlib.Algebra.Homology.Notation +namespace OAI.AlgebraicGeometry.Cohomology.WithSupport + +open scoped OAI.AlgebraicGeometry.Hodge.Filtration.ComplexPoint + +open _root_.AlgebraicGeometry + /-! # Cohomology of the analytic space with support in a closed set @@ -31,13 +38,14 @@ rational coefficients the group is computed by the sections supported in `Z` of injective resolution of `ℚ`, or of the sheafified singular cochains. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (K : Type) [Field K] (X : Over (Spec ↧ℂ)) @@ -45,89 +53,95 @@ set_option quotPrecheck false in /-- `H_[Z]^n(X; K)` is the sheaf cohomology of the analytic space `X(ℂ)` with support in the closed set `Z ⊆ X(ℂ)` and coefficients in the constant sheaf `K`, in degree `n`. -/ scoped notation:max "H_[" Z "]^" n:max "(" X "; " K ")" => - TopCat.Sheaf.supportH (TopCat.of (ComplexPoint X)) Z - ((TopCat.Sheaf.constantFunctor (TopCat.of (ComplexPoint X))).obj (AddCommGrpCat.of K)) n + _root_.OAI.AlgebraicTopology.Support.Cohomology.TopCat.Sheaf.supportH + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) Z + ((_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))).obj + (AddCommGrpCat.of K)) n -variable (Z : Closeds (ComplexPoint X)) +variable (Z : Closeds (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) /-- `H^n_Z(X(ℂ); K) → H^n(X(ℂ); K)`, forgetting the support. -/ -def forgetSupport (n : ℕ) : H_[Z]^n(X; K) →+ H^n(X; K) := - (Sheaf.H'.addEquivTerminal isTerminalTop _ n).toAddMonoidHom.comp - (Sheaf.relH.forget _ (homOfLE (le_top : Z.compl ≤ ⊤)) n) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.forgetSupport (n : ℕ) : H_[Z]^n(X; K) →+ H^n(X; K) := + (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.H'.addEquivTerminal isTerminalTop _ n).toAddMonoidHom.comp + (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH.forget _ (homOfLE (le_top : Z.compl ≤ ⊤)) n) /-- Forgetting the support `X(ℂ)` itself is injective. -/ -lemma forgetSupport_injective_of_eq_top (hZ : Z = ⊤) (n : ℕ) : - Function.Injective (forgetSupport K X Z n) := - (Sheaf.H'.addEquivTerminal isTerminalTop _ n).injective.comp - (TopCat.Sheaf.relH.forget_injective_of_eq_bot (TopCat.of (ComplexPoint X)) _ _ +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.forgetSupport_injective_of_eq_top (hZ : Z = ⊤) (n : ℕ) : + Function.Injective (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.forgetSupport K X Z n) := + (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.H'.addEquivTerminal isTerminalTop _ n).injective.comp + (_root_.OAI.AlgebraicTopology.Support.Cohomology.TopCat.Sheaf.relH.forget_injective_of_eq_bot (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) _ _ (by rw [hZ]; ext; simp) n) set_option linter.auxLemma false in attribute [local implicit_reducible] TopCat.Sheaf TopCat.instCategorySheaf._aux_1 TopCat.instCategorySheaf._aux_3 TopCat.instCategorySheaf._aux_5 in /-- `H^n_Z(X(ℂ); ℚ) ≃ H^n(Γ_Z(X(ℂ), I))` for the chosen injective resolution `ℚ → I`. -/ -def rationalSupportAddEquivSupportedInjectiveHomology (n : ℕ) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalSupportAddEquivSupportedInjectiveHomology (n : ℕ) : H_[Z]^n(X; ℚ) ≃+ - (((TopCat.Sheaf.supportEvaluation ↧(ComplexPoint X) ⊤).mapHomologicalComplex ℤᵘᵖ).obj - (complexSupportInjectiveComplex X Z)).homology n := - @TopCat.Sheaf.relHAddEquivSupportedSectionsHomology (TopCat.of (ComplexPoint X)) Z.compl ⊤ - Z.compl (top_inf_eq _) (analyticHasExt X) _ (ambientRationalInjectiveComplex X) - (ambientRationalInjectiveComplex_isKInjective X) - (ambientRationalInjectiveSingleAugmentation X) - (ambientRationalInjectiveSingleAugmentation_quasiIso X) n + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation ↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) ⊤).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X Z)).homology n := + @_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.relHAddEquivSupportedSectionsHomology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) Z.compl ⊤ + Z.compl (top_inf_eq _) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticHasExt X) _ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex_isKInjective X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveSingleAugmentation X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveSingleAugmentation_quasiIso X) n section Singular -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable [IsIntegral X.left] [Smooth X.hom] /-- The augmentation `ℚ[0] → C^•` of the sheafified rational singular cochains on `X(ℂ)`, indexed by integers. -/ -def rationalSingularAugmentation : - (CochainComplex.singleFunctor (AnalyticAdditiveSheaf X) 0).obj 𝓒(↧(ComplexPoint X); ℚ) ⟶ - rationalSingularCochainComplex (TopCat.of (ComplexPoint X)) := - (constantFieldSheafComplexIntIsoSingle ℚ X).inv ≫ +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalSingularAugmentation : + (CochainComplex.singleFunctor (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) 0).obj 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℚ) ⟶ + _root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.rationalSingularCochainComplex (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexIntIsoSingle ℚ X).inv ≫ HomologicalComplex.extendMap - (constantsToSingularCochainSheafComplex ℚ (TopCat.of (ComplexPoint X))) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex ℚ (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) ComplexShape.embeddingUpNat -instance rationalSingularAugmentation_mono : Mono (rationalSingularAugmentation X) := by - dsimp only [rationalSingularAugmentation] +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalSingularAugmentation_mono : Mono (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalSingularAugmentation X) := by + dsimp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalSingularAugmentation] exact @mono_comp _ _ _ _ _ _ inferInstance _ - (constantsToSingularCochainComplexInt_mono ℚ (TopCat.of (ComplexPoint X))) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainResolution.constantsToSingularCochainComplexInt_mono ℚ (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) -instance rationalSingularAugmentation_quasiIso : QuasiIso (rationalSingularAugmentation X) := by - dsimp only [rationalSingularAugmentation] +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalSingularAugmentation_quasiIso : QuasiIso (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalSingularAugmentation X) := by + dsimp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalSingularAugmentation] have : QuasiIso (HomologicalComplex.extendMap - (constantsToSingularCochainSheafComplex ℚ (TopCat.of (ComplexPoint X))) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex ℚ (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) ComplexShape.embeddingUpNat) := (HomologicalComplex.quasiIso_extendMap_iff _ _).mpr - (constantsToSingularCochainSheafComplex_quasiIso_of_contractibleOpenBasis ℚ - (exists_contractibleOpen_le X)) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainResolution.constantsToSingularCochainSheafComplex_quasiIso_of_contractibleOpenBasis ℚ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_contractibleOpen_le X)) exact quasiIso_comp _ _ (hφ := quasiIso_of_isIso _) (hφ' := this) -variable [IsProjective X.hom] +variable [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] set_option linter.auxLemma false in attribute [local implicit_reducible] TopCat.Sheaf TopCat.instCategorySheaf._aux_1 TopCat.instCategorySheaf._aux_3 TopCat.instCategorySheaf._aux_5 in /-- `H^n_Z(X(ℂ); ℚ) ≃ H^n(Γ_Z(X(ℂ), C^•))` for the sheafified rational singular cochains `C^•`. -/ -def rationalSupportAddEquivSupportedSingularHomology (n : ℕ) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalSupportAddEquivSupportedSingularHomology (n : ℕ) : H_[Z]^n(X; ℚ) ≃+ - (((TopCat.Sheaf.supportEvaluation ↧(ComplexPoint X) ⊤).mapHomologicalComplex ℤᵘᵖ).obj - (supportedRationalSingularCochainComplex (TopCat.of (ComplexPoint X)) Z.compl)).homology n := - letI : ∀ V : Opens (ComplexPoint X), ParacompactSpace V := openParacompactSpace X - @TopCat.Sheaf.relHAddEquivSupportedSectionsHomologyOfFlasque (TopCat.of (ComplexPoint X)) - 𝓒(↧(ComplexPoint X); ℚ) (rationalSingularCochainComplex (TopCat.of (ComplexPoint X))) - (rationalSingularCochainComplex_isStrictlyGE _) (rationalSingularAugmentation X) - (rationalSingularAugmentation_mono X) (rationalSingularAugmentation_quasiIso X) + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation ↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) ⊤).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) Z.compl)).homology n := + letI : ∀ V : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X), ParacompactSpace V := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openParacompactSpace X + @_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.relHAddEquivSupportedSectionsHomologyOfFlasque (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℚ) (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.rationalSingularCochainComplex (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.rationalSingularCochainComplex_isStrictlyGE _) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalSingularAugmentation X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalSingularAugmentation_mono X) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalSingularAugmentation_quasiIso X) Z.compl ⊤ Z.compl (top_inf_eq _) - (fun n => rationalSingularCochainComplex_isFlasque (TopCat.of (ComplexPoint X)) n) - (analyticHasExt X) n + (fun n => _root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.rationalSingularCochainComplex_isFlasque (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) n) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticHasExt X) n end Singular -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end end + +end OAI.AlgebraicGeometry.Cohomology.WithSupport diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ComplexPoint/AnalyticSheaf.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ComplexPoint/AnalyticSheaf.lean index 6389bc9ebd..2679897bef 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ComplexPoint/AnalyticSheaf.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ComplexPoint/AnalyticSheaf.lean @@ -12,12 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Manifold -public import Mathlib.Geometry.Manifold.Algebra.SmoothFunctions -public import Mathlib.Geometry.Manifold.Sheaf.Basic +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Manifold +import Mathlib.Geometry.Manifold.Algebra.SmoothFunctions +import Mathlib.Geometry.Manifold.Sheaf.Basic + +namespace OAI.AlgebraicGeometry.ComplexPoint.AnalyticSheaf + +open _root_.AlgebraicGeometry /-! # Holomorphic functions on complex points @@ -31,14 +36,15 @@ differentiability of order `ω`. The sheaf and its ring operations are built by the local-predicate sheaf machinery. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory TopologicalSpace Topology -open scoped ContDiff Manifold +open _root_.CategoryTheory _root_.TopologicalSpace _root_.Topology +open scoped ContDiff _root_.Manifold -namespace AlgebraicGeometry.ComplexPoint +section +section -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X : Over (Spec ↧ℂ)) (d : ℕ) @@ -46,24 +52,24 @@ variable (X : Over (Spec ↧ℂ)) (d : ℕ) this sheaf assigns to an open `U` the complex-valued functions on `U` that are analytic in the chosen étale coordinate charts. Restriction is restriction of functions; the values here are sets. -/ -def holomorphicFunctionSheafToTypes [SmoothOfRelativeDimension d X.hom] : - TopCat.Sheaf (Type) (TopCat.of (ComplexPoint X)) := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionSheafToTypes [SmoothOfRelativeDimension d X.hom] : + TopCat.Sheaf (Type) (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) := (contDiffWithinAt_localInvariantProp (I := 𝓘(ℂ, Fin d → ℂ)) - (I' := 𝓘(ℂ)) ω).sheaf (ComplexPoint X) ℂ + (I' := 𝓘(ℂ)) ω).sheaf (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) ℂ -instance holomorphicFunctionSheafToTypes.commRing [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) : - CommRing ((holomorphicFunctionSheafToTypes X d).presheaf.obj U) := +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionSheafToTypes.commRing [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) : + CommRing ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionSheafToTypes X d).presheaf.obj U) := inferInstanceAs <| CommRing - C^ω⟮𝓘(ℂ, Fin d → ℂ), (Opposite.unop U : Opens (ComplexPoint X)); ℂ⟯ + C^ω⟮𝓘(ℂ, Fin d → ℂ), (Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)); ℂ⟯ /-- Let `X` be a smooth scheme over `ℂ` of relative dimension `d`. This presheaf of commutative rings on the analytic space `X(ℂ)` assigns to each open `U` the ring of holomorphic functions `U → ℂ`, with pointwise operations and restriction of functions. -/ -def holomorphicFunctionPresheaf [SmoothOfRelativeDimension d X.hom] : - TopCat.Presheaf CommRingCat (TopCat.of (ComplexPoint X)) where +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionPresheaf [SmoothOfRelativeDimension d X.hom] : + TopCat.Presheaf CommRingCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) where obj U := CommRingCat.of - ((holomorphicFunctionSheafToTypes X d).presheaf.obj U) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionSheafToTypes X d).presheaf.obj U) map h := CommRingCat.ofHom <| ContMDiffMap.restrictRingHom 𝓘(ℂ, Fin d → ℂ) 𝓘(ℂ) ℂ <| CategoryTheory.leOfHom h.unop @@ -73,12 +79,17 @@ def holomorphicFunctionPresheaf [SmoothOfRelativeDimension d X.hom] : /-- Let `X` be a smooth scheme over `ℂ` of relative dimension `d`. This is the sheaf of commutative rings `𝒪` on `X(ℂ)`: its sections on an analytic open `U` are functions `U → ℂ` that are analytic in the chosen étale charts, with pointwise ring operations. -/ -def holomorphicFunctionSheaf [SmoothOfRelativeDimension d X.hom] : - TopCat.Sheaf CommRingCat (TopCat.of (ComplexPoint X)) where - obj := holomorphicFunctionPresheaf X d +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionSheaf [SmoothOfRelativeDimension d X.hom] : + TopCat.Sheaf CommRingCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) where + obj := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionPresheaf X d property := by rw [CategoryTheory.Presheaf.isSheaf_iff_isSheaf_forget _ _ (CategoryTheory.forget CommRingCat)] - exact (holomorphicFunctionSheafToTypes X d).property + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionSheafToTypes X d).property + +end +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.ComplexPoint.AnalyticSheaf diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ComplexPoint/Basic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ComplexPoint/Basic.lean index 3171b5ebc4..ea30b10bb0 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ComplexPoint/Basic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ComplexPoint/Basic.lean @@ -12,19 +12,24 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.ProjectiveSpace -public import Mathlib.Algebra.Category.Ring.Topology -public import Mathlib.AlgebraicGeometry.Noetherian -public import Mathlib.Analysis.Complex.Basic -public import Mathlib.RingTheory.Valuation.ValuationRing -public import Mathlib.Topology.Algebra.IsOpenUnits +import HodgeConjecture.Definitions.AlgebraicGeometry.ProjectiveSpace +import Mathlib.Algebra.Category.Ring.Topology +import Mathlib.AlgebraicGeometry.Noetherian +import Mathlib.Analysis.Complex.Basic +import Mathlib.RingTheory.Valuation.ValuationRing +import Mathlib.Topology.Algebra.IsOpenUnits import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import HodgeConjecture.Mathlib.Topology.Algebra.IsOpenUnits +namespace OAI.AlgebraicGeometry.ComplexPoint.Basic + +open _root_.AlgebraicGeometry + /-! # Points over a commutative ring, and analytification @@ -56,12 +61,12 @@ singular (co)homology of the resulting space. `isNoetherian_of_isProjective` records that a projective complex scheme is Noetherian. -/ -@[expose] public section +section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology open scoped CommRingCat.HomTopology -namespace AlgebraicGeometry +section variable (R : Type) [CommRing R] @@ -80,17 +85,17 @@ variable {X Y Z : Over (Spec ↧R)} /-- Let `R` be a commutative ring and `f : X → Y` a morphism of schemes over `Spec R`. This sends an `R`-point `z : Spec R → X` to the composite `f ∘ z : Spec R → Y`. -/ -noncomputable def map (f : X ⟶ Y) : Point R X → Point R Y := +noncomputable def map (f : X ⟶ Y) : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X → _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R Y := fun z ↦ z ≫ f /-- The identity scheme morphism induces the identity on `R`-points. -/ @[simp] -lemma map_id (z : Point R X) : map (𝟙 X) z = z := rfl +lemma map_id (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (𝟙 X) z = z := rfl /-- Composition of scheme morphisms agrees with composition on `R`-points. -/ @[simp] -lemma map_comp_apply (f : X ⟶ Y) (g : Y ⟶ Z) (z : Point R X) : - map (f ≫ g) z = map g (map f z) := rfl +lemma map_comp_apply (f : X ⟶ Y) (g : Y ⟶ Z) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (f ≫ g) z = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map g (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z) := rfl end Functoriality @@ -101,32 +106,32 @@ variable [IsLocalRing R] {X : Over (Spec ↧R)} /-- Let `R` be a commutative local ring and `X` a scheme over `Spec R`. An `R`-point `z : Spec R → X` determines the image `x` of the unique closed point of `Spec R` and a local ring homomorphism `𝒪_{X,x} → R`. This is that pair, with the assertion that the homomorphism is local. -/ -noncomputable def stalkData (z : Point R X) : +noncomputable def stalkData (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) : Σ x : X.left, {f : X.left.presheaf.stalk x ⟶ ↧R // IsLocalHom f.hom} := SpecToEquivOfLocalRing X.left ↧R z.left /-- Let `R` be a commutative local ring and `X` a scheme over `Spec R`. For an `R`-point `z : Spec R → X`, this is the image in `X` of the unique closed point of `Spec R`. -/ -noncomputable def underlying (z : Point R X) : X.left := z.stalkData.1 +noncomputable def underlying (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) : X.left := z.stalkData.1 /-- Let `R` be a commutative local ring and `X` a scheme over `Spec R`. For an `R`-point `z : Spec R → X`, let `x` be the image of the closed point of `Spec R`. This is the induced local homomorphism `𝒪_{X,x} → R` from the stalk of the structure sheaf. -/ -noncomputable def stalkHom (z : Point R X) : +noncomputable def stalkHom (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) : X.left.presheaf.stalk z.underlying ⟶ ↧R := z.stalkData.2.1 -instance (z : Point R X) : IsLocalHom z.stalkHom.hom := z.stalkData.2.2 +instance (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) : IsLocalHom z.stalkHom.hom := z.stalkData.2.2 /-- Let `R` be a commutative local ring and `X` a scheme over `Spec R`. For a Zariski open `U ⊆ X`, this is the set of `R`-points `z : Spec R → X` that send the unique closed point of `Spec R` into `U`. -/ -noncomputable def overOpen (U : X.left.Opens) : Set (Point R X) := +noncomputable def overOpen (U : X.left.Opens) : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) := {z | z.underlying ∈ U} /-- Let `R` be a commutative local ring and `X` a scheme over `Spec R`. For a Zariski open `U ⊆ X`, this is the type of `R`-points together with the condition that the image of the closed point of `Spec R` lies in `U`. -/ -abbrev OverOpen (U : X.left.Opens) := {z : Point R X // z.underlying ∈ U} +abbrev OverOpen (U : X.left.Opens) := {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X // z.underlying ∈ U} open scoped Classical in /-- Let `R` be a commutative local ring and `X` a scheme over `Spec R`. For a regular function `s` @@ -134,12 +139,12 @@ on a Zariski open `U` and an `R`-point `z`, evaluate the germ of `s` using the s homomorphism `𝒪_{X,x} → R` induced by `z` if its underlying point `x` is in `U`. The value is defined to be zero when `x ∉ U`. -/ noncomputable def evaluate (U : X.left.Opens) (s : Γ(X.left, U)) - (z : Point R X) : R := + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) : R := if hz : z.underlying ∈ U then z.stalkHom (X.left.presheaf.germ U z.underlying hz s) else 0 /-- Restricting a regular function does not change its value at a point in the smaller open. -/ lemma evaluate_res {U V : X.left.Opens} (hVU : V ≤ U) (s : Γ(X.left, U)) - (z : Point R X) (hz : z ∈ overOpen V) : + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) (hz : z ∈ overOpen V) : evaluate U s z = evaluate V (X.left.presheaf.map (homOfLE hVU).op s) z := by rw [evaluate, dite_eq_left (show z.underlying ∈ U from hVU hz), evaluate, dite_eq_left (show z.underlying ∈ V from hz)] @@ -151,7 +156,7 @@ unit there. Over a field this is nonvanishing; see `mem_overOpen_basicOpen_iff_evaluate_ne_zero`. -/ lemma mem_overOpen_basicOpen_iff_isUnit_evaluate {U : X.left.Opens} (s : Γ(X.left, U)) - (z : Point R X) (hz : z ∈ overOpen U) : + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) (hz : z ∈ overOpen U) : z ∈ overOpen (X.left.basicOpen s) ↔ IsUnit (evaluate U s z) := by rw [evaluate, dite_eq_left (show z.underlying ∈ U from hz)] rw [isUnit_map_iff z.stalkHom.hom] @@ -177,7 +182,7 @@ function. Over a field this reads as an honest quotient; see `exists_evaluate_basicOpen_eq_div`. -/ lemma exists_evaluate_basicOpen_eq_inverse_mul {U : X.left.Opens} (hU : IsAffineOpen U) (f : Γ(X.left, U)) (t : Γ(X.left, X.left.basicOpen f)) : - ∃ (k : ℕ) (a : Γ(X.left, U)), ∀ z : Point R X, + ∃ (k : ℕ) (a : Γ(X.left, U)), ∀ z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X, z ∈ overOpen (X.left.basicOpen f) → evaluate (X.left.basicOpen f) t z = Ring.inverse (evaluate U f z ^ k) * evaluate U a z := by @@ -199,32 +204,32 @@ lemma exists_evaluate_basicOpen_eq_inverse_mul {U : X.left.Opens} (hU : IsAffine Ring.inverse_mul_cancel _ (hunit.pow k), one_mul] @[simp] -lemma underlying_map {Y : Over (Spec ↧R)} (f : X ⟶ Y) (z : Point R X) : - (map f z).underlying = f.left z.underlying := rfl +lemma underlying_map {Y : Over (Spec ↧R)} (f : X ⟶ Y) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z).underlying = f.left z.underlying := rfl /-- The stalk homomorphism of the image of an `R`-point is obtained functorially. -/ -private lemma stalkHom_map {Y : Over (Spec ↧R)} (f : X ⟶ Y) (z : Point R X) : - (map f z).stalkHom = f.left.stalkMap z.underlying ≫ z.stalkHom := +lemma stalkHom_map {Y : Over (Spec ↧R)} (f : X ⟶ Y) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z).stalkHom = f.left.stalkMap z.underlying ≫ z.stalkHom := Scheme.stalkClosedPointTo_comp _ _ /-- Pulling back a scheme open commutes with passage to `R`-points. -/ lemma mem_overOpen_map_iff {Y : Over (Spec ↧R)} (f : X ⟶ Y) - (z : Point R X) (U : Y.left.Opens) : - map f z ∈ overOpen U ↔ z ∈ overOpen (f.left ⁻¹ᵁ U) := by + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) (U : Y.left.Opens) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z ∈ overOpen U ↔ z ∈ overOpen (f.left ⁻¹ᵁ U) := by simp [overOpen] /-- Evaluation of a pulled-back regular function agrees with evaluation after mapping the point. -/ lemma evaluate_map {Y : Over (Spec ↧R)} (f : X ⟶ Y) - (U : Y.left.Opens) (s : Γ(Y.left, U)) (z : Point R X) : - evaluate U s (map f z) = evaluate (f.left ⁻¹ᵁ U) (f.left.app U s) z := by + (U : Y.left.Opens) (s : Γ(Y.left, U)) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) : + evaluate U s (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z) = evaluate (f.left ⁻¹ᵁ U) (f.left.app U s) z := by by_cases hx : z.underlying ∈ f.left ⁻¹ᵁ U · have hy : f.left z.underlying ∈ U := hx - rw [evaluate, dite_eq_left (show (map f z).underlying ∈ U from hy), evaluate, + rw [evaluate, dite_eq_left (show (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z).underlying ∈ U from hy), evaluate, dite_eq_left (show z.underlying ∈ f.left ⁻¹ᵁ U from hx), stalkHom_map] exact congrArg (CommRingCat.Hom.hom z.stalkHom) (f.left.germ_stalkMap_apply U z.underlying hy s) · have hy : f.left z.underlying ∉ U := hx - rw [evaluate, dite_eq_right (show ¬ (map f z).underlying ∈ U from hy), evaluate, + rw [evaluate, dite_eq_right (show ¬ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z).underlying ∈ U from hy), evaluate, dite_eq_right (show ¬ z.underlying ∈ f.left ⁻¹ᵁ U from hx)] section Topology @@ -244,7 +249,7 @@ noncomputable def chartTopology (U : X.left.Opens) : consists of sets `{z | underlying(z) ∈ U and s(z) ∈ V}`, where `U` is Zariski open in `X`, `s` a regular function on `U`, and `V` open in `R`. These sets specify local conditions on values of regular functions. -/ -noncomputable def analyticSubbasis : Set (Set (Point R X)) := +noncomputable def analyticSubbasis : Set (Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X)) := {W | ∃ (U : X.left.Opens) (s : Γ(X.left, U)) (V : Set R), IsOpen V ∧ W = overOpen U ∩ evaluate U s ⁻¹' V} @@ -254,13 +259,13 @@ evaluations. This is the topology on all `R`-points obtained by taking the supre topologies coinduced by those chart inclusions. For `R = ℂ`, it is the analytic topology on complex points. -/ @[instance_reducible] -noncomputable instance analyticTopology : TopologicalSpace (Point R X) := +noncomputable instance analyticTopology : TopologicalSpace (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) := ⨆ U : X.left.affineOpens, .coinduced (Subtype.val : OverOpen (X := X) U.1 → _) (chartTopology U.1) /-- A set of `R`-points is analytically open exactly when, in every affine chart, it is cut out by an open set of ring homomorphisms `Γ(X.left, U) ⟶ ↧R`. -/ -private lemma isOpen_analyticTopology_iff {W : Set (Point R X)} : +lemma isOpen_analyticTopology_iff {W : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X)} : IsOpen W ↔ ∀ U : X.left.affineOpens, ∃ O : Set (Γ(X.left, U.1) ⟶ ↧R), IsOpen O ∧ evaluationHom U.1 ⁻¹' O = Subtype.val ⁻¹' W := by rw [isOpen_iSup_iff] @@ -271,11 +276,11 @@ variable [ContinuousMul R] [IsOpenUnits R] /-- A defining subbasic set is open in the analytic topology. -/ lemma isOpen_overOpen_inter_preimage (U : X.left.Opens) (s : Γ(X.left, U)) (V : Set R) (hV : IsOpen V) : - IsOpen (overOpen U ∩ evaluate U s ⁻¹' V : Set (Point R X)) := by + IsOpen (overOpen U ∩ evaluate U s ⁻¹' V : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X)) := by rw [isOpen_analyticTopology_iff] rintro ⟨W, hW⟩ refine ⟨⋃ (g : Γ(X.left, W)) (k : ℕ) (a : Γ(X.left, W)) (_ : X.left.basicOpen g ≤ U ⊓ W) - (_ : ∀ y : Point R X, y ∈ overOpen (X.left.basicOpen g) → + (_ : ∀ y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X, y ∈ overOpen (X.left.basicOpen g) → evaluate U s y = Ring.inverse (evaluate W g y ^ k) * evaluate W a y), {φ : Γ(X.left, W) ⟶ ↧R | IsUnit (φ g)} ∩ (fun φ : Γ(X.left, W) ⟶ ↧R ↦ Ring.inverse (φ g ^ k) * φ a) ⁻¹' V, @@ -288,9 +293,9 @@ lemma isOpen_overOpen_inter_preimage (U : X.left.Opens) (s : Γ(X.left, U)) CommRingCat.HomTopology.continuous_apply (R := ↧R) a have hinv : ContinuousOn (fun φ : Γ(X.left, W) ⟶ ↧R ↦ Ring.inverse (φ g ^ k)) {φ : Γ(X.left, W) ⟶ ↧R | IsUnit (φ g)} := - continuousOn_ringInverse.comp (hg.pow k).continuousOn fun _ hφ ↦ hφ.pow k + _root_.OAI.Topology.Algebra.IsOpenUnits.continuousOn_ringInverse.comp (hg.pow k).continuousOn fun _ hφ ↦ hφ.pow k exact (hinv.mul ha.continuousOn).isOpen_inter_preimage - ((isOpen_setOf_isUnit _).preimage hg) hV + ((_root_.OAI.Topology.Algebra.IsOpenUnits.isOpen_setOf_isUnit _).preimage hg) hV · ext z have key : ∀ t : Γ(X.left, W), evaluationHom W z t = evaluate W t z.1 := fun t ↦ evaluationHom_apply W z t @@ -308,7 +313,7 @@ lemma isOpen_overOpen_inter_preimage (U : X.left.Opens) (s : Γ(X.left, U)) obtain ⟨k, a, hka⟩ := exists_evaluate_basicOpen_eq_inverse_mul (X := X) hW g (X.left.presheaf.map (homOfLE hgU).op s) - have hdiv : ∀ y : Point R X, y ∈ overOpen (X.left.basicOpen g) → + have hdiv : ∀ y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X, y ∈ overOpen (X.left.basicOpen g) → evaluate U s y = Ring.inverse (evaluate W g y ^ k) * evaluate W a y := fun y hy ↦ by rw [evaluate_res hgU s y hy]; exact hka y hy refine ⟨g, k, a, hgle, hdiv, ?_, ?_⟩ @@ -320,7 +325,7 @@ lemma isOpen_overOpen_inter_preimage (U : X.left.Opens) (s : Γ(X.left, U)) This is the original description of the topology: it is generated by the sets on which a local regular function takes values in a prescribed open subset of `R`. -/ lemma analyticTopology_eq_generateFrom : - (analyticTopology : TopologicalSpace (Point R X)) = + (analyticTopology : TopologicalSpace (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X)) = .generateFrom analyticSubbasis := by refine le_antisymm (le_generateFrom ?_) ?_ · rintro W ⟨U, s, V, hV, rfl⟩ @@ -358,7 +363,7 @@ lemma analyticTopology_eq_generateFrom : /-- Continuity of a map into the `R`-points is tested on the defining subbasis. -/ lemma continuous_iff_analyticSubbasis {Z : Type*} [TopologicalSpace Z] - {g : Z → Point R X} : + {g : Z → _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X} : Continuous g ↔ ∀ W ∈ analyticSubbasis (X := X), IsOpen (g ⁻¹' W) := by rw [analyticTopology_eq_generateFrom] exact continuous_generateFrom_iff @@ -366,14 +371,14 @@ lemma continuous_iff_analyticSubbasis {Z : Type*} [TopologicalSpace Z] /-- Every morphism over `Spec R` induces a continuous map on `R`-points for the topology generated by regular-function evaluations. -/ lemma continuous_map {Y : Over (Spec ↧R)} (f : X ⟶ Y) : - @Continuous (Point R X) (Point R Y) - analyticTopology analyticTopology (map f) := by + @Continuous (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R Y) + analyticTopology analyticTopology (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f) := by rw [continuous_iff_analyticSubbasis] rintro W ⟨U, s, V, hV, rfl⟩ rw [Set.preimage_inter, Set.preimage_preimage] - have hover : map f ⁻¹' overOpen U = overOpen (f.left ⁻¹ᵁ U) := + have hover : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f ⁻¹' overOpen U = overOpen (f.left ⁻¹ᵁ U) := Set.ext fun z ↦ mem_overOpen_map_iff f z U - have heval : (fun z ↦ evaluate U s (map f z)) = + have heval : (fun z ↦ evaluate U s (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z)) = evaluate (f.left ⁻¹ᵁ U) (f.left.app U s) := funext fun z ↦ evaluate_map f U s z rw [hover, heval] @@ -383,29 +388,29 @@ lemma continuous_map {Y : Over (Spec ↧R)} (f : X ⟶ Y) : X → Y` be a morphism of schemes over `R`. This is the continuous map on `R`-points `z ↦ f ∘ z`, for the topologies defined by local regular-function evaluations. -/ noncomputable def continuousMap {Y : Over (Spec ↧R)} (f : X ⟶ Y) : - @ContinuousMap (Point R X) (Point R Y) + @ContinuousMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R Y) analyticTopology analyticTopology := - @ContinuousMap.mk _ _ analyticTopology analyticTopology (map f) (continuous_map f) + @ContinuousMap.mk _ _ analyticTopology analyticTopology (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f) (continuous_map f) /-- Let `R` be a commutative local ring with continuous multiplication and open units, and let `e : X ≅ Y` be an isomorphism of schemes over `R`. Composition with `e` and `e⁻¹` gives this homeomorphism of `R`-point spaces with their regular-function evaluation topologies. -/ noncomputable def isoMapHomeomorph {Y : Over (Spec ↧R)} (e : X ≅ Y) : - @Homeomorph (Point R X) (Point R Y) + @Homeomorph (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R Y) analyticTopology analyticTopology := - letI : TopologicalSpace (Point R X) := analyticTopology - letI : TopologicalSpace (Point R Y) := analyticTopology - { toFun := map e.hom - invFun := map e.inv - left_inv z := by simp [map, Category.assoc] - right_inv z := by simp [map, Category.assoc] + letI : TopologicalSpace (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) := analyticTopology + letI : TopologicalSpace (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R Y) := analyticTopology + { toFun := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map e.hom + invFun := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map e.inv + left_inv z := by simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map, Category.assoc] + right_inv z := by simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map, Category.assoc] continuous_toFun := continuous_map e.hom continuous_invFun := continuous_map e.inv } @[simp] lemma isoMapHomeomorph_apply {Y : Over (Spec ↧R)} (e : X ≅ Y) - (z : Point R X) : - isoMapHomeomorph e z = map e.hom z := + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X) : + isoMapHomeomorph e z = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map e.hom z := rfl end Topology @@ -416,6 +421,10 @@ end Point /-- Let `X` be a scheme over `ℂ`. A complex point is a scheme morphism `Spec ℂ → X` over `Spec ℂ`, equivalently a point with a compatible complex-valued homomorphism from its residue field. -/ -abbrev ComplexPoint (X : Over (Spec ↧ℂ)) := Point ℂ X +abbrev ComplexSchemePoint (X : Over (Spec ↧ℂ)) := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point ℂ X + +end + +end -end AlgebraicGeometry +end OAI.AlgebraicGeometry.ComplexPoint.Basic diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SingularClosedFiltration.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SingularClosedFiltration.lean index a14d89d05f..23a3cabf0c 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SingularClosedFiltration.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SingularClosedFiltration.lean @@ -1,19 +1,24 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Stratification.ClosedFiltration -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.SingularLocusDimension -public import HodgeConjecture.Lemmas.Topology.Dimension.ClosedSubset -public import Mathlib.Topology.NoetherianSpace -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Stratification.Analytification -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.AffineRelativeDimension -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Open +import HodgeConjecture.Lemmas.AlgebraicGeometry.Stratification.ClosedFiltration +import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.SingularLocusDimension +import HodgeConjecture.Lemmas.Topology.Dimension.ClosedSubset +import Mathlib.Topology.NoetherianSpace +import HodgeConjecture.Lemmas.AlgebraicGeometry.Stratification.Analytification +import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.AffineRelativeDimension +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Open import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration + +open _root_.AlgebraicGeometry + /-! # Ambient closed supports for singular-component localization induction @@ -24,30 +29,30 @@ closed strata. Their local relative dimensions are strictly below `d - p`, so th normal codimensions are at least `p + 1`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) /-- Let `X` be a smooth integral projective scheme over `ℂ` and let `Z` be the reduced closure of the scheme point `x`. Start with `S₀ = Z_sing` and obtain `S_{k+1}` by removing the smooth locus of the reduced scheme on `S_k`. This is the closed subset `S_k` of `Z`, for a natural number `k`. -/ -abbrev cycleComponentSingularClosedFiltration (k : ℕ) : Closeds (cycleComponent X.left x) := - reducedSmoothClosedFiltration (cycleComponentι X.left x ≫ X.hom) - (singularLocusClosed (cycleComponentι X.left x ≫ X.hom)) k +abbrev cycleComponentSingularClosedFiltration (k : ℕ) : Closeds (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x) := + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom) + (_root_.OAI.AlgebraicGeometry.Stratification.Basic.singularLocusClosed (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom)) k /-- Let `X` be a smooth integral projective scheme over `ℂ` and let `Z` be the reduced closure of the scheme point `x`. Start with `S₀ = Z_sing` and obtain `S_{k+1}` by removing the smooth locus of the reduced scheme on `S_k`. This is the image of `S_k` as a closed subset of the ambient scheme `X`. -/ def cycleComponentSingularAmbientClosedFiltration (k : ℕ) : Closeds X.left := - ⟨cycleComponentι X.left x '' (cycleComponentSingularClosedFiltration X x k : Set _), - (cycleComponentι X.left x).isClosedEmbedding.isClosedMap _ + ⟨_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x '' (cycleComponentSingularClosedFiltration X x k : Set _), + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x).isClosedEmbedding.isClosedMap _ (cycleComponentSingularClosedFiltration X x k).isClosed⟩ namespace ComplexPoint @@ -56,25 +61,29 @@ namespace ComplexPoint the scheme point `x`. Start with `S₀ = Z_sing` and obtain `S_{k+1}` by removing the smooth locus of the reduced scheme on `S_k`. This is the analytically closed subset `S_k(ℂ) ⊆ X(ℂ)`, formed by taking complex points whose underlying scheme points lie in `S_k`. -/ -def cycleComponentSingularAnalyticClosedFiltration (k : ℕ) : Closeds (ComplexPoint X) := - ⟨Point.underlying ⁻¹' (cycleComponentSingularAmbientClosedFiltration X x k : Set X.left), - (cycleComponentSingularAmbientClosedFiltration X x k).isClosed.preimage - (continuous_underlying_to_zariski X)⟩ +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration (k : ℕ) : Closeds (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := + ⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying ⁻¹' (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularAmbientClosedFiltration X x k : Set X.left), + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularAmbientClosedFiltration X x k).isClosed.preimage + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_underlying_to_zariski X)⟩ /-- Let `X` be a smooth integral projective scheme over `ℂ` and let `Z` be the reduced closure of the scheme point `x`. This is the smooth locus `Z_reg` as a scheme over `ℂ`, with structure morphism induced by its inclusion in `Z` and then in `X`. -/ -abbrev cycleComponentSmoothLocusOver : Over (Spec ↧ℂ) := - Over.mk (((cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ - cycleComponentι X.left x) ≫ X.hom) +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusOver : Over (Spec ↧ℂ) := + Over.mk (((_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ + _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x) ≫ X.hom) -instance cycleComponentSmoothLocusOver_locallyOfFiniteType : - LocallyOfFiniteType (cycleComponentSmoothLocusOver X x).hom := by +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusOver_locallyOfFiniteType : + LocallyOfFiniteType (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusOver X x).hom := by change LocallyOfFiniteType - (((cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ - cycleComponentι X.left x) ≫ X.hom) + (((_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ + _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x) ≫ X.hom) rw [Category.assoc] infer_instance end ComplexPoint -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SmoothClosedLift.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SmoothClosedLift.lean index 2e3eed31a0..5f176068aa 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SmoothClosedLift.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SmoothClosedLift.lean @@ -1,12 +1,18 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.SingularClosedFiltration -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.SourceOpen -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.ClosedPointDimension +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.SingularClosedFiltration +import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.SourceOpen +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.ClosedPointDimension +import Mathlib.RingTheory.DedekindDomain.Basic + +namespace OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift + +open _root_.AlgebraicGeometry /-! # The smooth-locus closed lift of an integral cycle component @@ -17,26 +23,26 @@ equidimensionality together with the coheight formula for a closed point of the component. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) /-- Let `X` be a smooth integral projective scheme over `ℂ`, let `x` be a scheme point, and let `Z` be its reduced closure in `X`. This is the Zariski open subset `X \ Z_sing`, obtained by removing the singular locus of `Z`, viewed as a closed subset of `X`. -/ def cycleComponentSmoothLocusAmbientOpen : X.left.Opens := - (cycleComponentSingularAmbientClosedFiltration X x 0).compl + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularAmbientClosedFiltration X x 0).compl /-- Let `X` be a smooth integral projective scheme over `ℂ`, let `x` be a scheme point, and let `Z` be its reduced closure in `X`. This is the open subscheme `X \ Z_sing` together with its structure morphism to `Spec ℂ`, restricted from that of `X`. -/ abbrev cycleComponentSmoothLocusAmbientOpenOver : Over (Spec ↧ℂ) := - ComplexPoint.openScheme X (cycleComponentSmoothLocusAmbientOpen X x) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X (cycleComponentSmoothLocusAmbientOpen X x) instance cycleComponentSmoothLocusAmbientOpenOver_locallyOfFiniteType : LocallyOfFiniteType (cycleComponentSmoothLocusAmbientOpenOver X x).hom := by @@ -45,7 +51,7 @@ instance cycleComponentSmoothLocusAmbientOpenOver_locallyOfFiniteType : instance cycleComponentSmoothLocusAmbientOpenInclusion_isImmersion : IsImmersion - (ComplexPoint.openInclusion X (cycleComponentSmoothLocusAmbientOpen X x)).left := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X (cycleComponentSmoothLocusAmbientOpen X x)).left := by change IsImmersion (cycleComponentSmoothLocusAmbientOpen X x).ι infer_instance @@ -53,9 +59,9 @@ instance cycleComponentSmoothLocusAmbientOpenInclusion_isImmersion : be its reduced closure in `X`. The smooth locus `Z_reg` is closed in `X \ Z_sing`. This is its closed immersion into that open subscheme, obtained by restricting the inclusion `Z → X`. -/ def cycleComponentSmoothLocusClosedLift : - (cycleComponentι X.left x ≫ X.hom).smoothLocus.toScheme ⟶ + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus.toScheme ⟶ (cycleComponentSmoothLocusAmbientOpen X x).toScheme := - closedImmersionSourceOpenLift (cycleComponentι X.left x) (cycleComponentι X.left x ≫ X.hom).smoothLocus + _root_.OAI.AlgebraicGeometry.ClosedImmersion.SourceOpen.closedImmersionSourceOpenLift (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x) (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus set_option backward.isDefEq.respectTransparency false in set_option backward.defeqAttrib.useBackward true in @@ -68,20 +74,20 @@ omit [IsIntegral X.left] [Smooth X.hom] in @[reassoc (attr := simp)] theorem cycleComponentSmoothLocusClosedLift_ι : cycleComponentSmoothLocusClosedLift X x ≫ (cycleComponentSmoothLocusAmbientOpen X x).ι = - (cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ cycleComponentι X.left x := - closedImmersionSourceOpenLift_ι _ _ + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x := + _root_.OAI.AlgebraicGeometry.ClosedImmersion.SourceOpen.closedImmersionSourceOpenLift_ι _ _ /-- Let `X` be a smooth integral projective scheme over `ℂ`, let `x` be a scheme point, and let `Z` be its reduced closure in `X`. This is the closed immersion `Z_reg → X \ Z_sing` as a morphism of schemes over `ℂ`; both structure maps are induced by that of `X`. -/ def cycleComponentSmoothLocusClosedLiftOver : - ComplexPoint.cycleComponentSmoothLocusOver X x ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusOver X x ⟶ cycleComponentSmoothLocusAmbientOpenOver X x := Over.homMk (cycleComponentSmoothLocusClosedLift X x) (by change cycleComponentSmoothLocusClosedLift X x ≫ ((cycleComponentSmoothLocusAmbientOpen X x).ι ≫ X.hom) = - ((cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ - cycleComponentι X.left x) ≫ X.hom + ((_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ + _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x) ≫ X.hom rw [← Category.assoc, cycleComponentSmoothLocusClosedLift_ι]) instance cycleComponentSmoothLocusClosedLiftOver_isClosedImmersion : @@ -110,8 +116,12 @@ namespace ComplexPoint /-- Let `X` be a smooth integral projective scheme over `ℂ`, let `x` be a scheme point, and let `Z` be its reduced closure in `X`. This is `Z(ℂ)` as a closed subset of the analytic space `X(ℂ)`, namely the complex points whose underlying scheme points lie in `Z`. -/ -def cycleComponentAnalyticClosedSupport : Closeds (ComplexPoint X) := - ⟨cycleComponentSupport X x, isClosed_cycleComponentSupport X x⟩ +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport : Closeds (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := + ⟨_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x, _root_.OAI.AlgebraicGeometry.Cycle.SupportEq.isClosed_cycleComponentSupport X x⟩ end ComplexPoint -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SmoothSupportCoclassSection.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SmoothSupportCoclassSection.lean index c7775d5433..dc6c53c4d4 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SmoothSupportCoclassSection.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SmoothSupportCoclassSection.lean @@ -1,12 +1,20 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.SmoothPair.CoclassSection -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.SmoothSupportPurity -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.RelativeCohomologyOpenTransport +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.SmoothPair.CoclassSection +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.SmoothSupportPurity +import HodgeConjecture.Definitions.AlgebraicTopology.Support.RelativeCohomologyOpenTransport + +namespace OAI.AlgebraicGeometry.Cycle.SmoothSupportCoclassSection + +open scoped OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular + +open _root_.AlgebraicGeometry + /-! # The normalized component coclass on the original ambient smooth-support open @@ -16,33 +24,34 @@ giving a section of the original ambient relative-cohomology sheaf on the singul complement. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Topology Opposite -open AlgebraicTopology.Singular +open _root_.CategoryTheory Limits _root_.TopologicalSpace _root_.Topology Opposite +open _root_.OAI.AlgebraicTopology.Singular -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint section Component variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) {p : ℕ} (hx : Order.coheight x = p) include hx in /-- The dimension of the smooth locus, bundled over `Spec ℂ`. -/ -theorem cycleComponentSmoothLocusOver_hom_smoothOfRelativeDimension : - SmoothOfRelativeDimension (dim X.left - p) (cycleComponentSmoothLocusOver X x).hom := - cycleComponentSmoothLocus_smoothOfRelativeDimension X x hx +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusOver_hom_smoothOfRelativeDimension : + SmoothOfRelativeDimension (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - p) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusOver X x).hom := + _root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothCoe.cycleComponentSmoothLocus_smoothOfRelativeDimension X x hx include X hx in -omit [IsProjective X.hom] in +omit [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] in /-- The codimension arithmetic, from the coheight bound. -/ -theorem cycleComponentSmoothClosedLift_codimension : - dim X.left - (dim X.left - p) = p := by - have h := SmoothOfRelativeDimension.coheight_le_complex (f := X.hom) (d := dim X.left) x +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLift_codimension : + _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - p) = p := by + have h := _root_.OAI.AlgebraicGeometry.Smooth.DimensionFormula.SmoothOfRelativeDimension.coheight_le_complex (f := X.hom) (d := _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) x rw [hx] at h - have hpd : p ≤ dim X.left := by exact_mod_cast h + have hpd : p ≤ _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left := by exact_mod_cast h omega /-- Let `X` be a smooth integral projective scheme over `ℂ` and let `Z` be the codimension-`p` @@ -50,49 +59,49 @@ integral subvariety with generic point `x`. On the analytic space of the open sc Z_sing`, this is the global section of the sheafification of `V ↦ H^{2p}(V, V \ Z_reg(ℂ); ℚ)` obtained by gluing local normal orientation coclasses. The local class is normalized to pair to `1` with the orientation class of the complex normal space. -/ -def cycleComponentSmoothClosedLiftCoclassSection : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftCoclassSection : -- The support is the image of `Z_reg`; if `Z ⊆ X` is the variety, the ambient space is the -- `X \ Z_sing` open, as a complex manifold. - (𝓗_[Set.range (Point.map (cycleComponentSmoothLocusClosedLiftOver X x))]^(2 * p) - (TopCat.of (ComplexPoint (cycleComponentSmoothLocusAmbientOpenOver X x)); ℚ)).presheaf.obj + (𝓗_[Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusClosedLiftOver X x))]^(2 * p) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpenOver X x)); ℚ)).presheaf.obj (op ⊤) := - letI := cycleComponentSmoothLocusOver_hom_smoothOfRelativeDimension X x hx - have hdeg := cycleComponentSmoothClosedLift_codimension X x hx - hdeg ▸ smoothClosedSupportCoclassSection - (cycleComponentSmoothLocusAmbientOpenOver X x) - (cycleComponentSmoothLocusOver X x) - (cycleComponentSmoothLocusClosedLiftOver X x) (dim X.left - p) (dim X.left) + letI := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusOver_hom_smoothOfRelativeDimension X x hx + have hdeg := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLift_codimension X x hx + hdeg ▸ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassSection + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpenOver X x) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusOver X x) + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusClosedLiftOver X x) (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - p) (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) /-- Let `X` be a smooth integral projective scheme over `ℂ`, let `x` be a scheme point, and let `Z` be its reduced closure in `X`. This is the continuous map `(X \ Z_sing)(ℂ) → X(ℂ)` induced by inclusion of the open subscheme. It identifies its source with the analytic open subset `X(ℂ) \ Z_sing(ℂ)`. -/ -def cycleComponentSmoothClosedLiftAmbientMap : - TopCat.of (ComplexPoint (cycleComponentSmoothLocusAmbientOpenOver X x)) ⟶ - TopCat.of (ComplexPoint X) := - TopCat.ofHom (Point.continuousMap - (openInclusion X (cycleComponentSmoothLocusAmbientOpen X x))) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftAmbientMap : + TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpenOver X x)) ⟶ + TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := + TopCat.ofHom (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.continuousMap + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpen X x))) omit [IsIntegral X.left] [Smooth X.hom] in -theorem cycleComponentSmoothClosedLiftAmbientMap_isOpenEmbedding : - IsOpenEmbedding (cycleComponentSmoothClosedLiftAmbientMap X x) := - isOpenEmbedding_map_open X (cycleComponentSmoothLocusAmbientOpen X x) +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftAmbientMap_isOpenEmbedding : + IsOpenEmbedding (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftAmbientMap X x) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpenEmbedding_map_open X (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpen X x) /-- Support membership is transported by the lift-image theorem. -/ -theorem cycleComponentSmoothClosedLiftAmbientMap_support : - cycleComponentSmoothClosedLiftAmbientMap X x ⁻¹' cycleComponentSupport X x = - Set.range (Point.map (cycleComponentSmoothLocusClosedLiftOver X x)) := - (cycleComponentSmoothLocusClosedLift_complexPoints_range X x).symm +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftAmbientMap_support : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftAmbientMap X x ⁻¹' _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x = + Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusClosedLiftOver X x)) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusClosedLift_complexPoints_range X x).symm omit [IsIntegral X.left] [Smooth X.hom] in /-- The image open is exactly the complement of the canonical first singular boundary. -/ -theorem cycleComponentSmoothClosedLiftAmbientMap_imageOpen : - (cycleComponentSmoothClosedLiftAmbientMap_isOpenEmbedding X x).functor.obj ⊤ = - cycleComponentSmoothSupportAmbientOpen X x := by +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftAmbientMap_imageOpen : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftAmbientMap_isOpenEmbedding X x).functor.obj ⊤ = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x := by apply Opens.ext - change (cycleComponentSmoothClosedLiftAmbientMap X x) '' Set.univ = _ + change (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftAmbientMap X x) '' Set.univ = _ rw [Set.image_univ] - exact cycleComponentSmoothLocusAmbientOpen_analytic_image X x + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusAmbientOpen_analytic_image X x /-- Let `X` be a smooth integral projective scheme over `ℂ` and let `Z` be the codimension-`p` integral subvariety with generic point `x`. Write `S = Z(ℂ)`, `U = X(ℂ) \ Z_sing(ℂ)`, and @@ -100,20 +109,25 @@ integral subvariety with generic point `x`. Write `S = Z(ℂ)`, `U = X(ℂ) \ Z_ `U` is obtained by gluing the local coclasses defined by complex normal coordinates along `Z_reg(ℂ)`. The local class is normalized to pair to `1` with the orientation class of the complex normal space. -/ -def cycleComponentSmoothSupportCoclassSection : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportCoclassSection : -- The support is `Z(ℂ)`, the complex points of the subvariety, inside `X(ℂ)`. - (𝓗_[cycleComponentSupport X x]^(2 * p)(TopCat.of (ComplexPoint X); ℚ)).presheaf.obj + (𝓗_[_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x]^(2 * p)(TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℚ)).presheaf.obj -- The open set of complex points of the complement of the singular boundary, i.e. `X(ℂ) \ Z_sing(ℂ)`. - (op (cycleComponentSmoothSupportAmbientOpen X x)) := - supportRelativeCohomologySectionOnOpen (cycleComponentSmoothClosedLiftAmbientMap X x) - (cycleComponentSmoothClosedLiftAmbientMap_isOpenEmbedding X x) - (cycleComponentSupport X x) - (Set.range (Point.map (cycleComponentSmoothLocusClosedLiftOver X x))) - (cycleComponentSmoothClosedLiftAmbientMap_support X x) - (2 * p) (cycleComponentSmoothSupportAmbientOpen X x) - (cycleComponentSmoothClosedLiftAmbientMap_imageOpen X x) - (cycleComponentSmoothClosedLiftCoclassSection X x hx) + (op (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x)) := + _root_.OAI.AlgebraicTopology.Support.RelativeCohomologyOpenTransport.Singular.supportRelativeCohomologySectionOnOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftAmbientMap X x) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftAmbientMap_isOpenEmbedding X x) + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x) + (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusClosedLiftOver X x))) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftAmbientMap_support X x) + (2 * p) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftAmbientMap_imageOpen X x) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothClosedLiftCoclassSection X x hx) end Component -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Cycle.SmoothSupportCoclassSection diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SmoothSupportPurity.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SmoothSupportPurity.lean index 2c114566b9..2c75ab0f4d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SmoothSupportPurity.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SmoothSupportPurity.lean @@ -1,16 +1,21 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.SmoothClosedLift -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.SmoothPair.OpenTransport -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Transport.CohomologySheaf -public import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.OpenRestrictedLowestCohomology -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.DimensionFormula +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.SmoothClosedLift +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.SmoothPair.OpenTransport +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Transport.CohomologySheaf +import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.OpenRestrictedLowestCohomology +import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.DimensionFormula + +namespace OAI.AlgebraicGeometry.Cycle.ComponentSmoothSupportPurity + +open _root_.AlgebraicGeometry /-! # Purity along the smooth locus of an integral cycle component @@ -21,60 +26,61 @@ neighborhoods of the smooth-locus closed lift show its cohomology sheaves are co in degree `2p`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits Topology TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.Topology _root_.TopologicalSpace Opposite -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) {p : ℕ} (hx : Order.coheight x = p) /-- Let `X` be a smooth integral projective scheme over `ℂ`, let `x` be a scheme point, and let `Z` be its reduced closure in `X`. This is the analytic open subset `X(ℂ) \ Z_sing(ℂ)`, on which the remaining support is the complex manifold `Z_reg(ℂ)`. -/ -abbrev cycleComponentSmoothSupportAmbientOpen : Opens (ComplexPoint X) := +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := -- `X(ℂ) \ Z_sing(ℂ)`. - (cycleComponentSingularAnalyticClosedFiltration X x 0).compl + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x 0).compl include hx in /-- Every `y ∈ Z(ℂ) \ Z_sing(ℂ)` has arbitrarily small open neighborhoods `W` in `X(ℂ)` with `H^n(W, W \ Z(ℂ); ℚ) = 0` for `n ≠ 2p`. -/ -private theorem cycleComponentSmoothSupport_exists_relativeCohomology_vanishing - (y : ComplexPoint X) (hy : y ∈ cycleComponentSupport X x) - (hyU : y ∈ cycleComponentSmoothSupportAmbientOpen X x) - (V : Opens (ComplexPoint X)) (hyV : y ∈ V) : - ∃ W : Opens (ComplexPoint X), W ≤ V ∧ y ∈ W ∧ +theorem cycleComponentSmoothSupport_exists_relativeCohomology_vanishing + (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hy : y ∈ _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x) + (hyU : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x) + (V : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (hyV : y ∈ V) : + ∃ W : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X), W ≤ V ∧ y ∈ W ∧ ∀ n : ℕ, n ≠ 2 * p → -- `H^n(W, W \ Z(ℂ); ℚ)` vanishes away from degree `2p`. - IsZero (ModuleCat.of ℚ (RelativeCohomology ℚ - (neighborhoodSupportComplementPair (W : Set (ComplexPoint X)) + IsZero (ModuleCat.of ℚ (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (W : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -- `Z(ℂ)`. - (cycleComponentSupport X x)) n)) := by - let O := cycleComponentSmoothLocusAmbientOpen X x - let OX := cycleComponentSmoothLocusAmbientOpenOver X x - let Y := cycleComponentSmoothLocusOver X x - let i : Y ⟶ OX := cycleComponentSmoothLocusClosedLiftOver X x - let : SmoothOfRelativeDimension (dim X.left - p) Y.hom := - cycleComponentSmoothLocus_smoothOfRelativeDimension X x hx - have : SmoothOfRelativeDimension (dim X.left) OX.hom := by - change SmoothOfRelativeDimension (dim X.left) (O.ι ≫ X.hom) - simpa only [Nat.zero_add] using smoothOfRelativeDimension_comp 0 (dim X.left) O.ι X.hom - let f := Point.map (openInclusion X O) - have hS : f ⁻¹' cycleComponentSupport X x = Set.range (Point.map i) := - (cycleComponentSmoothLocusClosedLift_complexPoints_range X x).symm - obtain ⟨w, rfl⟩ := (cycleComponentSmoothLocusAmbientOpen_analytic_image X x).ge hyU + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x)) n)) := by + let O := _root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpen X x + let OX := _root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpenOver X x + let Y := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusOver X x + let i : Y ⟶ OX := _root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusClosedLiftOver X x + let : SmoothOfRelativeDimension (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - p) Y.hom := + _root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothCoe.cycleComponentSmoothLocus_smoothOfRelativeDimension X x hx + have : SmoothOfRelativeDimension (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) OX.hom := by + change SmoothOfRelativeDimension (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) (O.ι ≫ X.hom) + simpa only [Nat.zero_add] using smoothOfRelativeDimension_comp 0 (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) O.ι X.hom + let f := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X O) + have hS : f ⁻¹' _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x = Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusClosedLift_complexPoints_range X x).symm + obtain ⟨w, rfl⟩ := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusAmbientOpen_analytic_image X x).ge hyU obtain ⟨z, rfl⟩ := hS.le hy - have hpd : p ≤ dim X.left := by - have h := SmoothOfRelativeDimension.coheight_le_complex (f := X.hom) (d := dim X.left) x + have hpd : p ≤ _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left := by + have h := _root_.OAI.AlgebraicGeometry.Smooth.DimensionFormula.SmoothOfRelativeDimension.coheight_le_complex (f := X.hom) (d := _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) x rw [hx] at h exact_mod_cast h - obtain ⟨W, hWV, hzW, hW⟩ := exists_smoothClosedSupportImageNeighborhood - OX Y i (dim X.left - p) (dim X.left) f (isOpenEmbedding_map_open X O) - (cycleComponentSupport X x) hS z V hyV + obtain ⟨W, hWV, hzW, hW⟩ := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_smoothClosedSupportImageNeighborhood + OX Y i (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - p) (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) f (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpenEmbedding_map_open X O) + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x) hS z V hyV refine ⟨W, hWV, hzW, ?_⟩ intro n hn exact hW n (by omega) @@ -83,114 +89,119 @@ include hx in /-- For each `n ≠ 2p`, every `y ∈ X(ℂ) \ Z_sing(ℂ)` has arbitrarily small open neighborhoods `W` (depending on `n`) with `H^n_{Z(ℂ)}(W; ℚ) = 0`, where `H^n_{Z(ℂ)}(W; ℚ) = H^n(Γ(W, RΓ_{Z(ℂ)}(ℚ)))` is computed in the fixed injective resolution. -/ -theorem cycleComponentSmoothSupport_exists_supportedInjectiveSection_vanishing +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupport_exists_supportedInjectiveSection_vanishing (n : ℤ) (hn : n ≠ 2 * (p : ℤ)) - (y : ComplexPoint X) (hyU : y ∈ cycleComponentSmoothSupportAmbientOpen X x) - (V : Opens (ComplexPoint X)) (hyV : y ∈ V) : - ∃ W : Opens (ComplexPoint X), W ≤ V ∧ y ∈ W ∧ + (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hyU : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x) + (V : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (hyV : y ∈ V) : + ∃ W : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X), W ≤ V ∧ y ∈ W ∧ -- `H^n_{Z(ℂ)}(W; ℚ)` vanishes away from degree `2p`. - IsZero ((((TopCat.Sheaf.supportEvaluation + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation -- `X(ℂ)`. - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -- Sections over the open `W`. W).mapHomologicalComplex ℤᵘᵖ).obj -- `RΓ_{Z(ℂ)}(ℚ)`. - (complexSupportInjectiveComplex X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X -- `Z(ℂ)`, as a closed subset of `X(ℂ)`. - (cycleComponentAnalyticClosedSupport X x))).homology n) := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x))).homology n) := by by_cases hneg : n < 0 · refine ⟨V, le_rfl, hyV, ?_⟩ apply ShortComplex.isZero_homology_of_isZero_X₂ - exact (TopCat.Sheaf.supportEvaluation (TopCat.of (ComplexPoint X)) V).map_isZero - ((complexSupportInjectiveComplex X - (cycleComponentAnalyticClosedSupport X x)).isZero_of_isStrictlyGE 0 n hneg) + exact (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) V).map_isZero + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x)).isZero_of_isStrictlyGE 0 n hneg) · obtain ⟨q, rfl⟩ := Int.eq_ofNat_of_zero_le (le_of_not_gt hneg) - by_cases hy : y ∈ cycleComponentSupport X x + by_cases hy : y ∈ _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x · obtain ⟨W, hWV, hyW, hW⟩ := cycleComponentSmoothSupport_exists_relativeCohomology_vanishing X x hx y hy hyU V hyV refine ⟨W, hWV, hyW, ?_⟩ - let : Subsingleton (RelativeCohomology ℚ - (neighborhoodSupportComplementPair (W : Set (ComplexPoint X)) - (cycleComponentAnalyticClosedSupport X x : Set (ComplexPoint X))) q) := + let : Subsingleton (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (W : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) q) := ModuleCat.subsingleton_of_isZero (hW q (by exact_mod_cast hn)) - let e := complexSupportInjectiveSectionCohomologyEquiv X - (cycleComponentAnalyticClosedSupport X x) W q - let : Subsingleton ((((TopCat.Sheaf.supportEvaluation - (TopCat.of (ComplexPoint X)) W).mapHomologicalComplex ℤᵘᵖ).obj - (complexSupportInjectiveComplex X (cycleComponentAnalyticClosedSupport X x))).homology + let e := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveSectionCohomologyEquiv X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x) W q + let : Subsingleton ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) W).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x))).homology (q : ℤ)) := e.injective.subsingleton exact AddCommGrpCat.isZero_of_subsingleton _ - · let W := V ⊓ (cycleComponentAnalyticClosedSupport X x).compl + · let W := V ⊓ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x).compl refine ⟨W, inf_le_left, ⟨hyV, hy⟩, ?_⟩ apply ShortComplex.isZero_homology_of_isZero_X₂ - exact TopCat.Sheaf.supportedOutsideSections_isZero_of_le - (TopCat.of (ComplexPoint X)) (cycleComponentAnalyticClosedSupport X x).compl W - ((ambientRationalInjectiveComplex X).X (q : ℤ)) inf_le_right + exact _root_.OAI.AlgebraicTopology.Support.SectionRestrictionIs.TopCat.Sheaf.supportedOutsideSections_isZero_of_le + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x).compl W + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X).X (q : ℤ)) inf_le_right /-- Let `X` be a smooth integral projective scheme over `ℂ`, let `x` be a scheme point, and let `Z` be its reduced closure in `X`. Take the subsheaves of sections supported in `Z(ℂ)` of a chosen injective resolution of `ℚ` on `X(ℂ)`, then restrict the resulting complex to `X(ℂ) \ Z_sing(ℂ)`. This is the resulting integer-indexed sheaf complex. -/ -def cycleComponentSmoothRestrictedInjectiveComplex : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothRestrictedInjectiveComplex : CochainComplex (TopCat.Sheaf AddCommGrpCat - (TopCat.of (cycleComponentSmoothSupportAmbientOpen X x))) ℤ := + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x))) ℤ := -- `RΓ_{Z(ℂ)}(ℚ)`, restricted to the open `X(ℂ) \ Z_sing(ℂ)`. - let U : Opens (TopCat.of (ComplexPoint X)) := cycleComponentSmoothSupportAmbientOpen X x + let U : Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x -- Restriction of sheaves to the open `U = X(ℂ) \ Z_sing(ℂ)`. ((U.isOpenEmbedding.sheafPullback AddCommGrpCat).mapHomologicalComplex ℤᵘᵖ).obj -- `RΓ_{Z(ℂ)}(ℚ)` on `X(ℂ)`. - (complexSupportInjectiveComplex X (cycleComponentAnalyticClosedSupport X x)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x)) set_option backward.isDefEq.respectTransparency false in set_option backward.defeqAttrib.useBackward true in -instance cycleComponentSmoothRestrictedInjectiveComplex_isStrictlyGE : - (cycleComponentSmoothRestrictedInjectiveComplex X x).IsStrictlyGE 0 := by - dsimp [cycleComponentSmoothRestrictedInjectiveComplex] +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothRestrictedInjectiveComplex_isStrictlyGE : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothRestrictedInjectiveComplex X x).IsStrictlyGE 0 := by + dsimp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothRestrictedInjectiveComplex] infer_instance include hx in /-- Purity: on `X(ℂ) \ Z_sing(ℂ)`, the cohomology sheaves `𝓗^n(RΓ_{Z(ℂ)}(ℚ))` vanish for `n ≠ 2p`. -/ -theorem cycleComponentSmoothRestrictedInjective_homology_isZero_of_ne +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothRestrictedInjective_homology_isZero_of_ne (n : ℤ) (hn : n ≠ 2 * (p : ℤ)) : -- The cohomology sheaf `𝓗^n(RΓ_{Z(ℂ)}(ℚ))` on `X(ℂ) \ Z_sing(ℂ)` is zero for `n ≠ 2p`. - IsZero ((cycleComponentSmoothRestrictedInjectiveComplex X x).homology n) := - TopCat.Sheaf.openRestriction_homology_isZero_of_cofinal_sections - (TopCat.of (ComplexPoint X)) _ _ n - (cycleComponentSmoothSupport_exists_supportedInjectiveSection_vanishing X x hx n hn) + IsZero ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothRestrictedInjectiveComplex X x).homology n) := + _root_.OAI.AlgebraicTopology.Sheaf.OpenRestrictedVanishing.TopCat.openRestriction_homology_isZero_of_cofinal_sections + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) _ _ n + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupport_exists_supportedInjectiveSection_vanishing X x hx n hn) /-- Let `X` be a smooth integral projective scheme over `ℂ` and let `Z` be the codimension-`p` integral subvariety with generic point `x`. Put `U = X(ℂ) \ Z_sing(ℂ)` and let `K` be the subsheaf complex of a rational injective resolution consisting of sections supported in `Z(ℂ)`. Purity implies `𝓗^j(K)|_U = 0` for `j < 2p`, giving this isomorphism `H^{2p}(Γ(U, K)) ≅ Γ(U, 𝓗^{2p}(K))`. -/ -def cycleComponentSmoothSupportLowestSectionCohomologyIso : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportLowestSectionCohomologyIso : -- `H^{2p}_{Z(ℂ)}(X(ℂ) \ Z_sing(ℂ); ℚ)`. - ((((TopCat.Sheaf.supportEvaluation + ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation -- `X(ℂ)`. - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -- Sections over the open `X(ℂ) \ Z_sing(ℂ)`. - (cycleComponentSmoothSupportAmbientOpen X x)).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x)).mapHomologicalComplex ℤᵘᵖ).obj -- `RΓ_{Z(ℂ)}(ℚ)`. - (complexSupportInjectiveComplex X (cycleComponentAnalyticClosedSupport X x))).homology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x))).homology -- Degree `2p`. (2 * (p : ℤ))) ≅ -- Sections of the cohomology sheaf `𝓗^{2p}(RΓ_{Z(ℂ)}(ℚ))` over `X(ℂ) \ Z_sing(ℂ)`. - ((complexSupportInjectiveComplex X (cycleComponentAnalyticClosedSupport X x)).homology + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x)).homology -- Degree `2p`. (2 * (p : ℤ))).presheaf.obj -- The open `X(ℂ) \ Z_sing(ℂ)`. - (op (cycleComponentSmoothSupportAmbientOpen X x)) := - TopCat.Sheaf.openRestrictedLowestSectionCohomologyIso - (TopCat.of (ComplexPoint X)) (cycleComponentSmoothSupportAmbientOpen X x) - (complexSupportInjectiveComplex X (cycleComponentAnalyticClosedSupport X x)) + (op (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x)) := + _root_.OAI.AlgebraicTopology.Sheaf.OpenRestrictedLowestCohomology.TopCat.openRestrictedLowestSectionCohomologyIso + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x)) 0 (2 * (p : ℤ)) - (fun j hj => cycleComponentSmoothRestrictedInjective_homology_isZero_of_ne + (fun j hj => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothRestrictedInjective_homology_isZero_of_ne X x hx j (ne_of_lt hj)) - (fun j => TopCat.Sheaf.sheafSectionsSupportedOutside_isFlasque - (TopCat.of (ComplexPoint X)) (cycleComponentAnalyticClosedSupport X x).compl - ((ambientRationalInjectiveComplex X).X j)) + (fun j => _root_.OAI.AlgebraicTopology.Support.FlasqueSections.TopCat.Sheaf.sheafSectionsSupportedOutside_isFlasque + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x).compl + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X).X j)) + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.Cycle.ComponentSmoothSupportPurity diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SupportExtension.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SupportExtension.lean index e7a2a420f2..924669e195 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SupportExtension.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Component/SupportExtension.lean @@ -1,14 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Stratification.LocalSupportVanishing -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.SmoothSupportPurity -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FiniteFiltrationVanishing +import HodgeConjecture.Lemmas.AlgebraicGeometry.Stratification.LocalSupportVanishing +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.SmoothSupportPurity +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FiniteFiltrationVanishing + +namespace OAI.AlgebraicGeometry.Cycle.ComponentSupportExtension + +open _root_.AlgebraicGeometry /-! # Unique extension across a cycle component's singular boundary @@ -20,135 +25,136 @@ component support to its smooth-locus ambient open an isomorphism in degree `2p` inverse is the unique extension operation. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) {p : ℕ} (hx : Order.coheight x = p) include hx in /-- `H^n_{Z_sing,k(ℂ)}(X(ℂ); ℚ) = 0` for `n < 2(p + 1)`, where `Z_sing,k` is the `k`-th stage of the finite smooth filtration of `Z_sing` (so `Z_sing,0 = Z_sing`). -/ -private theorem cycleComponentSingularFiltrationSectionCohomology_isZero_of_lt - (k : ℕ) (hk : k ≤ cycleComponentSingularFiltrationLength X x) +theorem cycleComponentSingularFiltrationSectionCohomology_isZero_of_lt + (k : ℕ) (hk : k ≤ _root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularFiltrationLength X x) (n : ℤ) (hn : n < 2 * ((p : ℤ) + 1)) : -- `H^n_{Z_sing,k(ℂ)}(X(ℂ); ℚ)`, for the `k`-th stage of the singular filtration. - IsZero ((((TopCat.Sheaf.supportEvaluation + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation -- `X(ℂ)`. - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -- Global sections. ⊤).mapHomologicalComplex ℤᵘᵖ).obj -- `RΓ_{Z_sing,k(ℂ)}(ℚ)`. - (complexSupportInjectiveComplex X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X -- `Z_sing,k(ℂ)`, as a closed subset of `X(ℂ)`. - (cycleComponentSingularAnalyticClosedFiltration X x k))).homology n) := by - let O (j : ℕ) := (cycleComponentSingularAnalyticClosedFiltration X x j).compl + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k))).homology n) := by + let O (j : ℕ) := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x j).compl have hO : Monotone O := fun _ _ hab _ hy hyb ↦ - hy (cycleComponentSingularAnalyticClosedFiltration_antitone X x hab hyb) - have hN : O (cycleComponentSingularFiltrationLength X x) = ⊤ := by + hy (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration_antitone X x hab hyb) + have hN : O (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularFiltrationLength X x) = ⊤ := by dsimp only [O] - rw [cycleComponentSingularAnalyticClosedFiltration_length] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration_length] ext y - change (y ∉ (∅ : Set (ComplexPoint X))) ↔ y ∈ Set.univ + change (y ∉ (∅ : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) ↔ y ∈ Set.univ simp - exact TopCat.Sheaf.finiteNestedSupport_homology_isZero - (TopCat.of (ComplexPoint X)) O hO (cycleComponentSingularFiltrationLength X x) hN - (ambientRationalInjectiveComplex X) - (fun j => TopCat.Sheaf.injective_isFlasque _ _) n - (fun j _ => cycleComponentSingularLayerSectionCohomology_isZero_of_lt + exact _root_.OAI.AlgebraicTopology.Support.FiniteFiltrationVanishing.TopCat.Sheaf.finiteNestedSupport_homology_isZero + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) O hO (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularFiltrationLength X x) hN + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X) + (fun j => _root_.OAI.AlgebraicTopology.Sheaf.InjectiveFlasque.TopCat.injective_isFlasque _ _) n + (fun j _ => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularLayerSectionCohomology_isZero_of_lt X x hx j n hn) k hk include hx in /-- `H^n_{Z_sing(ℂ)}(X(ℂ); ℚ) = 0` for `n < 2(p + 1)`. -/ -private theorem cycleComponentSingularBoundarySectionCohomology_isZero_of_lt +theorem cycleComponentSingularBoundarySectionCohomology_isZero_of_lt (n : ℤ) (hn : n < 2 * ((p : ℤ) + 1)) : -- `H^n_{Z_sing(ℂ)}(X(ℂ); ℚ)`. - IsZero ((((TopCat.Sheaf.supportEvaluation + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation -- `X(ℂ)`. - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -- Global sections. ⊤).mapHomologicalComplex ℤᵘᵖ).obj -- `RΓ_{Z_sing(ℂ)}(ℚ)`. - (complexSupportInjectiveComplex X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X -- `Z_sing(ℂ)`, as a closed subset of `X(ℂ)`. - (cycleComponentSingularAnalyticClosedFiltration X x 0))).homology n) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x 0))).homology n) := cycleComponentSingularFiltrationSectionCohomology_isZero_of_lt X x hx 0 (Nat.zero_le _) n hn include hx in /-- `H^{2p}_{Z_sing(ℂ)}(X(ℂ); ℚ) = 0`. -/ -theorem cycleComponentSingularBoundarySectionCohomology_isZero_cycleDegree : +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularBoundarySectionCohomology_isZero_cycleDegree : -- `H^{2p}_{Z_sing(ℂ)}(X(ℂ); ℚ)`. - IsZero ((((TopCat.Sheaf.supportEvaluation + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation -- `X(ℂ)`. - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -- Global sections. ⊤).mapHomologicalComplex ℤᵘᵖ).obj -- `RΓ_{Z_sing(ℂ)}(ℚ)`. - (complexSupportInjectiveComplex X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X -- `Z_sing(ℂ)`, as a closed subset of `X(ℂ)`. - (cycleComponentSingularAnalyticClosedFiltration X x 0))).homology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x 0))).homology -- Degree `2p`. (2 * (p : ℤ))) := cycleComponentSingularBoundarySectionCohomology_isZero_of_lt X x hx _ (by omega) include hx in /-- `H^{2p+1}_{Z_sing(ℂ)}(X(ℂ); ℚ) = 0`. -/ -private theorem cycleComponentSingularBoundarySectionCohomology_isZero_cycleDegree_succ : +theorem cycleComponentSingularBoundarySectionCohomology_isZero_cycleDegree_succ : -- `H^{2p+1}_{Z_sing(ℂ)}(X(ℂ); ℚ)`. - IsZero ((((TopCat.Sheaf.supportEvaluation + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation -- `X(ℂ)`. - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -- Global sections. ⊤).mapHomologicalComplex ℤᵘᵖ).obj -- `RΓ_{Z_sing(ℂ)}(ℚ)`. - (complexSupportInjectiveComplex X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X -- `Z_sing(ℂ)`, as a closed subset of `X(ℂ)`. - (cycleComponentSingularAnalyticClosedFiltration X x 0))).homology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x 0))).homology -- Degree `2p + 1`. (2 * (p : ℤ) + 1)) := cycleComponentSingularBoundarySectionCohomology_isZero_of_lt X x hx _ (by omega) /-- Every point of the singular boundary belongs to the full component support. -/ -private theorem cycleComponentSingularBoundary_le_support : - cycleComponentSingularAnalyticClosedFiltration X x 0 ≤ cycleComponentAnalyticClosedSupport X x := by +theorem cycleComponentSingularBoundary_le_support : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x 0 ≤ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x := by intro y hy obtain ⟨z, _, hz⟩ := hy change y.underlying ∈ closure ({x} : Set X.left) - rw [← range_cycleComponentι X.left x] + rw [← _root_.OAI.AlgebraicGeometry.Cycle.SupportEq.range_cycleComponentι X.left x] exact ⟨z, hz⟩ /-- The complement inclusion determining the localization sequence. -/ -private theorem cycleComponentSupportComplement_le_smoothAmbientOpen : - (cycleComponentAnalyticClosedSupport X x).compl ≤ cycleComponentSmoothSupportAmbientOpen X x := +theorem cycleComponentSupportComplement_le_smoothAmbientOpen : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x).compl ≤ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x := fun _ hy hyS ↦ hy (cycleComponentSingularBoundary_le_support X x hyS) /-- Let `X` be a smooth integral projective scheme over `ℂ`, let `x` be a scheme point, and let `Z` be its reduced closure in `X`. Let `I^•` be the chosen injective resolution of `ℚ` on `X(ℂ)`. This restricts sections of its subsheaves supported in `Z(ℂ)` from all of `X(ℂ)` to `X(ℂ) \ Z_sing(ℂ)`, degree by degree. -/ -def cycleComponentSupportSectionRestriction : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportSectionRestriction : -- Restriction `RΓ_{Z(ℂ)}(X(ℂ)) → RΓ_{Z(ℂ)}(X(ℂ) \ Z_sing(ℂ))`. - ((TopCat.Sheaf.supportEvaluation + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation -- `X(ℂ)`. - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -- Global sections. ⊤).mapHomologicalComplex ℤᵘᵖ).obj -- `RΓ_{Z(ℂ)}(ℚ)`. - (complexSupportInjectiveComplex X (cycleComponentAnalyticClosedSupport X x)) ⟶ - ((TopCat.Sheaf.supportEvaluation + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x)) ⟶ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation -- `X(ℂ)`. - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -- Sections over the open `X(ℂ) \ Z_sing(ℂ)`. - (cycleComponentSmoothSupportAmbientOpen X x)).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x)).mapHomologicalComplex ℤᵘᵖ).obj -- `RΓ_{Z(ℂ)}(ℚ)`. - (complexSupportInjectiveComplex X (cycleComponentAnalyticClosedSupport X x)) := - TopCat.Sheaf.sectionComplexRestriction (TopCat.of (ComplexPoint X)) ℤᵘᵖ - (complexSupportInjectiveComplex X (cycleComponentAnalyticClosedSupport X x)) (homOfLE le_top) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x)) := + _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) ℤᵘᵖ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x)) (homOfLE le_top) set_option backward.isDefEq.respectTransparency false in set_option backward.defeqAttrib.useBackward true in @@ -156,23 +162,23 @@ include hx in /-- Restriction `H^{2p}_{Z(ℂ)}(X(ℂ); ℚ) → H^{2p}_{Z(ℂ)}(X(ℂ) \ Z_sing(ℂ); ℚ)` is an isomorphism: in the localization sequence for `Z_sing(ℂ) ⊆ Z(ℂ)`, the neighbouring terms `H^{2p}_{Z_sing(ℂ)}(X(ℂ); ℚ)` and `H^{2p+1}_{Z_sing(ℂ)}(X(ℂ); ℚ)` vanish. -/ -theorem cycleComponentSupportSectionRestriction_homology_isIso : - IsIso (HomologicalComplex.homologyMap (cycleComponentSupportSectionRestriction X x) (2 * (p : ℤ))) := by - let T := TopCat.of (ComplexPoint X) +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportSectionRestriction_homology_isIso : + IsIso (HomologicalComplex.homologyMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportSectionRestriction X x) (2 * (p : ℤ))) := by + let T := TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) let h := cycleComponentSupportComplement_le_smoothAmbientOpen X x - let K := ambientRationalInjectiveComplex X - let S := TopCat.Sheaf.nestedSupportRestrictionSectionsComplexShortComplex T h ⊤ K - let := TopCat.Sheaf.nestedSupportRestriction_homologyMap_isIso_of_vanishing T h ⊤ K + let K := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X + let S := _root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.nestedSupportRestrictionSectionsComplexShortComplex T h ⊤ K + let := _root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.nestedSupportRestriction_homologyMap_isIso_of_vanishing T h ⊤ K (2 * (p : ℤ)) - (cycleComponentSingularBoundarySectionCohomology_isZero_cycleDegree X x hx) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularBoundarySectionCohomology_isZero_cycleDegree X x hx) (cycleComponentSingularBoundarySectionCohomology_isZero_cycleDegree_succ X x hx) have he : HomologicalComplex.homologyMap S.g (2 * (p : ℤ)) ≫ HomologicalComplex.homologyMap - (TopCat.Sheaf.nestedSupportRestrictionLastComplexIso T h K).hom (2 * (p : ℤ)) = - HomologicalComplex.homologyMap (cycleComponentSupportSectionRestriction X x) (2 * (p : ℤ)) := by + (_root_.OAI.AlgebraicTopology.Support.NestedOnOpen.TopCat.Sheaf.nestedSupportRestrictionLastComplexIso T h K).hom (2 * (p : ℤ)) = + HomologicalComplex.homologyMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportSectionRestriction X x) (2 * (p : ℤ)) := by rw [← HomologicalComplex.homologyMap_comp] exact congrArg (fun f => HomologicalComplex.homologyMap f (2 * (p : ℤ))) - (TopCat.Sheaf.nestedSupportRestrictionLastComplexIso_g T h K) + (_root_.OAI.AlgebraicTopology.Support.NestedOnOpen.TopCat.Sheaf.nestedSupportRestrictionLastComplexIso_g T h K) rw [← he] infer_instance @@ -181,30 +187,35 @@ integral subvariety with generic point `x`. Restriction to `U = X(ℂ) \ Z_sing( isomorphism `H^{2p}_{Z(ℂ)}(X(ℂ); ℚ) ≅ H^{2p}_{Z(ℂ) ∩ U}(U; ℚ)`. Its inverse extends a class uniquely across the singular locus, whose supported cohomology vanishes in degrees `2p` and `2p+1`. -/ -def cycleComponentSupportExtensionIso : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportExtensionIso : -- `H^{2p}_{Z(ℂ)}(X(ℂ); ℚ)`. - ((((TopCat.Sheaf.supportEvaluation + ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation -- `X(ℂ)`. - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -- Global sections. ⊤).mapHomologicalComplex ℤᵘᵖ).obj -- `RΓ_{Z(ℂ)}(ℚ)`. - (complexSupportInjectiveComplex X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X -- `Z(ℂ)`, as a closed subset of `X(ℂ)`. - (cycleComponentAnalyticClosedSupport X x))).homology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x))).homology -- Degree `2p`. (2 * (p : ℤ))) ≅ -- `H^{2p}_{Z(ℂ)}(X(ℂ) \ Z_sing(ℂ); ℚ)`. - ((((TopCat.Sheaf.supportEvaluation + ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation -- `X(ℂ)`. - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -- Sections over the open `X(ℂ) \ Z_sing(ℂ)`. - (cycleComponentSmoothSupportAmbientOpen X x)).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x)).mapHomologicalComplex ℤᵘᵖ).obj -- `RΓ_{Z(ℂ)}(ℚ)`. - (complexSupportInjectiveComplex X (cycleComponentAnalyticClosedSupport X x))).homology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x))).homology -- Degree `2p`. (2 * (p : ℤ))) := - letI := cycleComponentSupportSectionRestriction_homology_isIso X x hx - asIso (HomologicalComplex.homologyMap (cycleComponentSupportSectionRestriction X x) (2 * (p : ℤ))) + letI := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportSectionRestriction_homology_isIso X x hx + asIso (HomologicalComplex.homologyMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportSectionRestriction X x) (2 * (p : ℤ))) + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.Cycle.ComponentSupportExtension diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/FundamentalClass.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/FundamentalClass.lean index 3a32bfcbec..76768ea94b 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/FundamentalClass.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/FundamentalClass.lean @@ -1,15 +1,25 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.WithSupport -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.SupportExtension -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Component.SmoothSupportCoclassSection -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.SingularCohomologySheafComparison +import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.WithSupport +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.SupportExtension +import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Component.SmoothSupportCoclassSection +import HodgeConjecture.Definitions.AlgebraicTopology.Support.SingularCohomologySheafComparison + +namespace OAI.AlgebraicGeometry.Cycle.FundamentalClass + +open scoped OAI.AlgebraicGeometry.Hodge.Filtration.ComplexPoint +open scoped OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular +open scoped OAI.AlgebraicGeometry.Cohomology.WithSupport.ComplexPoint + +open _root_.AlgebraicGeometry + /-! # Sheaf cycle classes in arbitrary codimension @@ -23,33 +33,34 @@ duality for the ambient chain sheaf. Compactification independence and rational- invariance are separate statements. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite -open AlgebraicTopology.Singular +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite +open _root_.OAI.AlgebraicTopology.Singular -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] -local instance cycleComponentSheafClassAnalyticTopology : - TopologicalSpace (ComplexPoint X) := Point.analyticTopology +local instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSheafClassAnalyticTopology : + TopologicalSpace (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology /-- Let `X` be a smooth integral projective scheme over `ℂ` and `S ⊆ X(ℂ)` closed. For a natural number `n`, this identifies the degree-`n` cohomology sheaf of `Γ_S(I^•)` with the sheafification of `V ↦ H^n(V, V \ S; ℚ)`. Here `ℚ → I^•` is an injective resolution and `Γ_S` takes sections vanishing off `S`. -/ -def complexSupportInjectiveCohomologySheafIsoRelative - (S : Closeds (ComplexPoint X)) (n : ℕ) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveCohomologySheafIsoRelative + (S : Closeds (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (n : ℕ) : -- The `n`-th cohomology sheaf of `RΓ_S(ℚ)`. - (complexSupportInjectiveComplex X S).homology (n : ℤ) ≅ - 𝓗_[S]^n(TopCat.of (ComplexPoint X); ℚ) := - letI : ∀ V : Opens (ComplexPoint X), ParacompactSpace V := openParacompactSpace X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X S).homology (n : ℤ) ≅ + 𝓗_[S]^n(TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℚ) := + letI : ∀ V : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X), ParacompactSpace V := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openParacompactSpace X (asIso (HomologicalComplex.homologyMap - (complexSupportedSingularToAmbientInjective X S.compl) (n : ℤ))).symm ≪≫ - supportedSingularCohomologySheafIsoRelative - (TopCat.of (ComplexPoint X)) S S.isClosed n + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportedSingularToAmbientInjective X S.compl) (n : ℤ))).symm ≪≫ + _root_.OAI.AlgebraicTopology.Support.SingularCohomologySheafComparison.Singular.supportedSingularCohomologySheafIsoRelative + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) S S.isClosed n section @@ -59,17 +70,17 @@ variable (x : X.left) {p : ℕ} (hx : Order.coheight x = p) be its reduced closure in `X`. For a natural number `p`, this is `H^{2p}_{Z(ℂ)}(X(ℂ); ℚ)`, computed from global sections of the subsheaves supported in `Z(ℂ)` of a chosen injective resolution of the constant rational sheaf. -/ -abbrev CycleComponentSupportedCohomology (p : ℕ) : AddCommGrpCat := +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.CycleComponentSupportedCohomology (p : ℕ) : AddCommGrpCat := -- `H^{2p}_{Z(ℂ)}(X(ℂ); ℚ)`, with `Z` the subvariety with generic point `x`. - (((TopCat.Sheaf.supportEvaluation + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation -- `X(ℂ)`. - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -- Global sections, i.e. sections over all of `X(ℂ)`. ⊤).mapHomologicalComplex ℤᵘᵖ).obj -- `RΓ_{Z(ℂ)}(ℚ)`. - (complexSupportInjectiveComplex X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X -- `Z(ℂ)`, as a closed subset of `X(ℂ)`. - (cycleComponentAnalyticClosedSupport X x))).homology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x))).homology -- Degree `2p`. (2 * (p : ℤ)) @@ -78,11 +89,11 @@ be its reduced closure in `X`. Write `S = Z(ℂ)`, `U = X(ℂ) \ Z_sing(ℂ)`, a sheafification of `V ↦ H^{2p}(V, V \ S; ℚ)`. For a natural number `p`, this is the abelian group `Γ(U, 𝓗^{2p}_S)` of sections of the local relative-cohomology sheaf away from the singular locus of `Z`. -/ -abbrev CycleComponentSmoothCoclassSections (p : ℕ) : AddCommGrpCat := +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.CycleComponentSmoothCoclassSections (p : ℕ) : AddCommGrpCat := -- Sections of `𝓗^{2p}_{Z(ℂ)}` over `X(ℂ) \ Z_sing(ℂ)`, with support `Z(ℂ)` and degree `2p`. - (𝓗_[cycleComponentSupport X x]^(2 * p)(TopCat.of (ComplexPoint X); ℚ)).presheaf.obj + (𝓗_[_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x]^(2 * p)(TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℚ)).presheaf.obj -- The open `X(ℂ) \ Z_sing(ℂ)`. - (op (cycleComponentSmoothSupportAmbientOpen X x)) + (op (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x)) /-- Let `X` be a smooth integral projective scheme over `ℂ` and let `Z` be the codimension-`p` integral subvariety with generic point `x`. Write `S = Z(ℂ)`, `U = X(ℂ) \ Z_sing(ℂ)`, and @@ -90,52 +101,52 @@ integral subvariety with generic point `x`. Write `S = Z(ℂ)`, `U = X(ℂ) \ Z_ `H^{2p}_S(X(ℂ); ℚ) ≅ Γ(U, 𝓗^{2p}_S)`. It restricts a supported class to `U` and takes its local relative classes. Purity on the smooth locus and vanishing of cohomology supported on the singular locus make the map invertible. -/ -def cycleComponentSupportedClassNormalizationIso : - CycleComponentSupportedCohomology X x p ≅ CycleComponentSmoothCoclassSections X x p := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportedClassNormalizationIso : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.CycleComponentSupportedCohomology X x p ≅ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.CycleComponentSmoothCoclassSections X x p := have he : ((2 * p : ℕ) : ℤ) = 2 * (p : ℤ) := by omega - cycleComponentSupportExtensionIso X x hx ≪≫ - cycleComponentSmoothSupportLowestSectionCohomologyIso X x hx ≪≫ - (he ▸ (TopCat.Sheaf.supportEvaluation (TopCat.of (ComplexPoint X)) - (cycleComponentSmoothSupportAmbientOpen X x)).mapIso - (complexSupportInjectiveCohomologySheafIsoRelative X - (cycleComponentAnalyticClosedSupport X x) (2 * p))) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportExtensionIso X x hx ≪≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportLowestSectionCohomologyIso X x hx ≪≫ + (he ▸ (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x)).mapIso + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveCohomologySheafIsoRelative X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x) (2 * p))) /-- Let `X` be a smooth integral projective scheme over `ℂ` and let `Z` be the codimension-`p` integral subvariety with generic point `x`. Write `S = Z(ℂ)`, `U = X(ℂ) \ Z_sing(ℂ)`, and `𝓗^{2p}_S` for the sheafification of `V ↦ H^{2p}(V, V \ S; ℚ)`. This additive map `Γ(U, 𝓗^{2p}_S) → H^{2p}_S(X(ℂ); ℚ)` assigns to a section its unique supported class on all of `X(ℂ)`. It inverts restriction followed by passage to local relative-cohomology classes. -/ -def cycleComponentExtendSmoothCoclass : - CycleComponentSmoothCoclassSections X x p →+ CycleComponentSupportedCohomology X x p := - (cycleComponentSupportedClassNormalizationIso X x hx).inv.hom +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentExtendSmoothCoclass : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.CycleComponentSmoothCoclassSections X x p →+ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.CycleComponentSupportedCohomology X x p := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportedClassNormalizationIso X x hx).inv.hom /-- Let `X` be a smooth integral projective scheme over `ℂ` and `Z` the codimension-`p` integral subvariety with generic point `x`. This is the class in `H^{2p}_{Z(ℂ)}(X(ℂ);ℚ)` computed from sections supported on `Z(ℂ)` of an injective resolution of the constant rational sheaf. Its local classes along the smooth locus of `Z` evaluate to `1` on the complex orientation classes of the normal spaces. -/ -def cycleComponentSupportedInjectiveClass : CycleComponentSupportedCohomology X x p := - cycleComponentExtendSmoothCoclass X x hx - (cycleComponentSmoothSupportCoclassSection X x hx) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportedInjectiveClass : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.CycleComponentSupportedCohomology X x p := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentExtendSmoothCoclass X x hx + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportCoclassSection X x hx) /-- Let `X` be a smooth integral projective scheme over `ℂ` and `Z` the codimension-`p` integral subvariety with generic point `x`. This is the class in `H^{2p}_{Z(ℂ)}(X(ℂ);ℚ)` whose local classes along the smooth locus of `Z` evaluate to `1` on the complex orientation classes of the normal spaces. -/ -def cycleComponentSheafSupportedClass : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSheafSupportedClass : -- `H^{2p}_{Z(ℂ)}(X(ℂ); ℚ)`. - H_[cycleComponentAnalyticClosedSupport X x]^(2 * p)(X; ℚ) := + H_[_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x]^(2 * p)(X; ℚ) := have he : 2 * (p : ℤ) = ((2 * p : ℕ) : ℤ) := by omega - (rationalSupportAddEquivSupportedInjectiveHomology X (cycleComponentAnalyticClosedSupport X x) - (2 * p)).symm (he ▸ cycleComponentSupportedInjectiveClass X x hx) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalSupportAddEquivSupportedInjectiveHomology X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x) + (2 * p)).symm (he ▸ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportedInjectiveClass X x hx) /-- Let `X` be a smooth integral projective scheme over `ℂ` and `Z` the codimension-`p` integral subvariety with generic point `x`. The fundamental cohomology class `[Z] ∈ H^{2p}(X(ℂ);ℚ)` is obtained by forgetting the support of the class in `H^{2p}_{Z(ℂ)}(X(ℂ);ℚ)` whose local classes along the smooth locus evaluate to `1` on the complex orientation classes of the normal spaces. -/ -def cycleComponentSheafClass : H^(2 * p)(X; ℚ) := - forgetSupport ℚ X (cycleComponentAnalyticClosedSupport X x) (2 * p) - (cycleComponentSheafSupportedClass X x hx) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSheafClass : H^(2 * p)(X; ℚ) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.forgetSupport ℚ X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x) (2 * p) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSheafSupportedClass X x hx) end @@ -143,8 +154,13 @@ end rational subspace of `H^{2p}(X(ℂ); ℚ)` spanned by the fundamental cohomology classes of all codimension-`p` integral closed subvarieties of `X`. Their classes are normalized by the complex orientations of their normal spaces on their smooth loci. -/ -def algebraicCycleClassSpan (p : ℕ) : Submodule ℚ (H^(2 * p)(X; ℚ)) := - sSup {Submodule.span ℚ {cycleComponentSheafClass X x hx} | +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.algebraicCycleClassSpan (p : ℕ) : Submodule ℚ (H^(2 * p)(X; ℚ)) := + sSup {Submodule.span ℚ {_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSheafClass X x hx} | (x : X.left) (hx : Order.coheight x = p) } -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Cycle.FundamentalClass diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Local/Purity.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Local/Purity.lean index 1d7480ec79..5fcabdd2e4 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Local/Purity.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Local/Purity.lean @@ -12,10 +12,11 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.LocalGenerator +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.LocalGenerator import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.ClosedPointDimension import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ProjectiveHausdorff @@ -23,6 +24,8 @@ import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalCl import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FundamentalClassGenerator import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.PuncturedEuclidean +namespace OAI.AlgebraicGeometry.Cycle.LocalPurity + /-! # Local dual classes on cycle components @@ -37,11 +40,15 @@ homology in degree `2 * (d - p)` and ambient cohomology supported on the compone `2 * p`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicTopology.Singular +namespace AlgebraicTopology +open _root_.AlgebraicTopology +namespace Singular +open _root_.AlgebraicTopology +open _root_.OAI.AlgebraicTopology.Singular variable {R M : Type*} [Field R] [AddCommGroup M] [Module R M] @@ -56,7 +63,12 @@ homology `H_n(X, A; R)`. Choose a linear functional on this homology group takin and use the universal-coefficient equivalence to obtain a class in `H^n(X, A; R)`. This is the resulting coclass; the normalization alone is unique when the homology is one-dimensional. -/ def normalizedRelativeCoclass {R : Type*} [Field R] {X : TopPair} {n : ℕ} - (z : RelativeHomology R X n) (hz : z ≠ 0) : RelativeCohomology R X n := - (relativeCohomologyEquivDualHomology R X n).symm (normalizedDual z hz) + (z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R X n) (hz : z ≠ 0) : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology R X n := + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology R X n).symm (normalizedDual z hz) + +end Singular +end AlgebraicTopology + +end -end AlgebraicTopology.Singular +end OAI.AlgebraicGeometry.Cycle.LocalPurity diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/SmoothPair/CoclassOverlap.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/SmoothPair/CoclassOverlap.lean index 78497f74ff..973ff31153 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/SmoothPair/CoclassOverlap.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/SmoothPair/CoclassOverlap.lean @@ -1,12 +1,17 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Local.LocalHomology -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.HolomorphicCharts -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.NormalProjectionOverlap +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Local.LocalHomology +import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.HolomorphicCharts +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.NormalProjectionOverlap + +namespace OAI.AlgebraicGeometry.Cycle.SmoothPairCoclassOverlap + +open _root_.AlgebraicGeometry /-! # Exactly normalized smooth-support coclasses on overlaps @@ -17,33 +22,39 @@ closed-immersion charts prove that these coclasses agree on sufficiently small c neighborhoods. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace -open AlgebraicTopology.Singular +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace +open _root_.OAI.AlgebraicTopology.Singular -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) [SmoothOfRelativeDimension m Y.hom] [SmoothOfRelativeDimension d X.hom] - [IsClosedImmersion i.left] (z : ComplexPoint Y) + [IsClosedImmersion i.left] (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) /-- Let `i : Y → X` be a closed immersion of smooth complex schemes of dimensions `m,d`. Put `S = i(Y(ℂ))` and `c = d-m`. For `z ∈ Y(ℂ)` and a subset `W` of the chosen normal chart at `i(z)`, this class in `H^{2c}(W,W \ S;ℚ)` is the pullback of the class in `H^{2c}(ℂ^c,ℂ^c \ {0};ℚ)` evaluating to `1` on the complex orientation class. The map of pairs uses the normal coordinate, whose zero set is `S`. -/ -def smoothClosedSupportChartCoclass (W : Set (ComplexPoint X)) - (hW : W ⊆ (closedImmersionHolomorphicFlatteningChart X Y i m d z).source) : - RelativeCohomology ℚ (neighborhoodSupportComplementPair W +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclass (W : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (hW : W ⊆ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).source) : + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair W -- `Y(ℂ) ⊆ X(ℂ)`, the image of the closed immersion `i`. - (Set.range (Point.map i))) + (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i))) -- Twice the codimension of `Y` in `X`. (2 * (d - m)) := - chartNormalProjectionCoclass (Fin m → ℂ) (d - m) - (closedImmersionHolomorphicFlatteningChart X Y i m d z) - (Set.range (Point.map i)) - (closedImmersionHolomorphicFlatteningChart_mem_range_iff X Y i m d z) W hW + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionCoclass (Fin m → ℂ) (d - m) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z) + (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart_mem_range_iff X Y i m d z) W hW + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.Cycle.SmoothPairCoclassOverlap diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/SmoothPair/CoclassSection.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/SmoothPair/CoclassSection.lean index fdad874e01..818dee2ab9 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/SmoothPair/CoclassSection.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/SmoothPair/CoclassSection.lean @@ -1,11 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.SmoothPair.CoclassOverlap -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.RelativeCohomologySheaf +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.SmoothPair.CoclassOverlap +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.RelativeCohomologySheaf + +namespace OAI.AlgebraicGeometry.Cycle.SmoothPairCoclassSection + +open scoped OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular + +open _root_.AlgebraicGeometry + /-! # The global normalized smooth-support coclass section @@ -15,13 +23,14 @@ relative complexes do. Unique sheaf gluing then produces the global section, wit complex normalization. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite -open AlgebraicTopology.Singular -open TopCat.Presheaf +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite +open _root_.OAI.AlgebraicTopology.Singular +open _root_.TopCat.Presheaf -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) @@ -32,82 +41,82 @@ variable (X Y : Over (Spec ↧ℂ)) `d`, and put `S = i(Y(ℂ))` and `c = d-m`. For `z ∈ Y(ℂ)`, this is the source of a chosen holomorphic chart near `i(z)` with coordinates in `ℂ^m × ℂ^c` in which `S` is the zero set of the normal coordinate. -/ -def smoothClosedSupportChartOpen (z : ComplexPoint Y) : - Opens (ComplexPoint X) := - ⟨(closedImmersionHolomorphicFlatteningChart X Y i m d z).source, - (closedImmersionHolomorphicFlatteningChart X Y i m d z).open_source⟩ +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) : + Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := + ⟨(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).source, + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).open_source⟩ -theorem mem_smoothClosedSupportChartOpen (z : ComplexPoint Y) : - Point.map i z ∈ smoothClosedSupportChartOpen X Y i m d z := - closedImmersionHolomorphicFlatteningChart_mem_source X Y i m d z +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_smoothClosedSupportChartOpen (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart_mem_source X Y i m d z /-- Let `i : Y → X` be a closed immersion of smooth complex schemes of dimensions `m,d`. Put `S = i(Y(ℂ))` and `c = d-m`. This is the sheafification on `X(ℂ)` of the relative singular cohomology presheaf `V ↦ H^{2c}(V,V \ S;ℚ)`, considered as abelian groups. -/ -abbrev smoothClosedSupportCoclassSheaf : TopCat.Sheaf AddCommGrpCat - (TopCat.of (ComplexPoint X)) := +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassSheaf : TopCat.Sheaf AddCommGrpCat + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) := -- The support is `Y(ℂ) ⊆ X(ℂ)`, the image of the closed immersion `i`; the degree is twice -- the codimension of `Y` in `X`. - 𝓗_[Set.range (Point.map i)]^(2 * (d - m))(TopCat.of (ComplexPoint X); ℚ) + 𝓗_[Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)]^(2 * (d - m))(TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℚ) /-- Let `i : Y → X` be a closed immersion of smooth complex schemes of dimensions `m,d`. Put `S = i(Y(ℂ))` and `c = d-m`. On the chosen normal chart at `i(z)`, with `z ∈ Y(ℂ)`, this is a section of the sheafification of `V ↦ H^{2c}(V,V \ S;ℚ)`. It is obtained by pulling back the class in `H^{2c}(ℂ^c,ℂ^c \ {0};ℚ)` evaluating to `1` on the complex orientation class along the normal coordinate and sheafifying. -/ -def smoothClosedSupportChartSheafSection (z : ComplexPoint Y) : - (smoothClosedSupportCoclassSheaf X Y i m d).presheaf.obj - (op (smoothClosedSupportChartOpen X Y i m d z)) := - (supportRelativeCohomologyToSheaf (TopCat.of (ComplexPoint X)) - (Set.range (Point.map i)) (2 * (d - m))).app _ - (smoothClosedSupportChartCoclass X Y i m d z - (smoothClosedSupportChartOpen X Y i m d z) (le_refl _)) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartSheafSection (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassSheaf X Y i m d).presheaf.obj + (op (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z)) := + (_root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyToSheaf (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) (2 * (d - m))).app _ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclass X Y i m d z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z) (le_refl _)) /-- Let `i : Y → X` be a closed immersion of smooth complex schemes of dimensions `m,d`. Put `S = i(Y(ℂ))` and `c = d-m`. For `z ∈ Y(ℂ)` and `x` in the chosen normal chart at `i(z)`, this is a germ in the sheafification of `V ↦ H^{2c}(V,V \ S;ℚ)`. It is the germ at `x` of the pullback along the normal coordinate of the class in `H^{2c}(ℂ^c,ℂ^c \ {0};ℚ)` evaluating to `1` on the complex orientation class. -/ -def smoothClosedSupportChartCoclassGerm (z : ComplexPoint Y) - (x : ComplexPoint X) - (hx : x ∈ smoothClosedSupportChartOpen X Y i m d z) : - (smoothClosedSupportCoclassSheaf X Y i m d).presheaf.stalk x := - supportRelativeCohomologyGerm (TopCat.of (ComplexPoint X)) - (Set.range (Point.map i)) (2 * (d - m)) - (smoothClosedSupportChartOpen X Y i m d z) x hx - (smoothClosedSupportChartCoclass X Y i m d z - (smoothClosedSupportChartOpen X Y i m d z) (le_refl _)) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclassGerm (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) + (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hx : x ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassSheaf X Y i m d).presheaf.stalk x := + _root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyGerm (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) (2 * (d - m)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z) x hx + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclass X Y i m d z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z) (le_refl _)) set_option backward.isDefEq.respectTransparency false in /-- The ambient overlap theorem proves equality of chart germs on support. -/ -private theorem smoothClosedSupportChartCoclassGerm_eq - (z z' : ComplexPoint Y) (x : ComplexPoint X) - (hxS : x ∈ Set.range (Point.map i)) - (hx : x ∈ smoothClosedSupportChartOpen X Y i m d z) - (hx' : x ∈ smoothClosedSupportChartOpen X Y i m d z') : - smoothClosedSupportChartCoclassGerm X Y i m d z x hx = - smoothClosedSupportChartCoclassGerm X Y i m d z' x hx' := by - obtain ⟨W, hW, hW', hxW, heq⟩ := exists_open_smoothClosedSupportChartCoclass_eq +theorem smoothClosedSupportChartCoclassGerm_eq + (z z' : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hxS : x ∈ Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) + (hx : x ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z) + (hx' : x ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z') : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclassGerm X Y i m d z x hx = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclassGerm X Y i m d z' x hx' := by + obtain ⟨W, hW, hW', hxW, heq⟩ := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_open_smoothClosedSupportChartCoclass_eq X Y i m d z z' x hxS hx hx' - apply supportRelativeCohomologyGerm_eq_of_restrict_eq - (TopCat.of (ComplexPoint X)) (Set.range (Point.map i)) (2 * (d - m)) - (U := smoothClosedSupportChartOpen X Y i m d z) - (V := smoothClosedSupportChartOpen X Y i m d z') + apply _root_.OAI.AlgebraicTopology.Support.RelativeCohomologyEq.Singular.supportRelativeCohomologyGerm_eq_of_restrict_eq + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) (2 * (d - m)) + (U := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z) + (V := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z') hW hW' x hxW - simpa only [smoothClosedSupportChartCoclass_restrict] using heq + simpa only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclass_restrict] using heq /-- Away from the closed image, the chart coclass germ is zero. -/ -private theorem smoothClosedSupportChartCoclassGerm_eq_zero - (z : ComplexPoint Y) (x : ComplexPoint X) - (hx : x ∈ smoothClosedSupportChartOpen X Y i m d z) - (hxS : x ∉ Set.range (Point.map i)) : - smoothClosedSupportChartCoclassGerm X Y i m d z x hx = 0 := - supportRelativeCohomologyGerm_eq_zero_of_not_mem - (TopCat.of (ComplexPoint X)) (Set.range (Point.map i)) (2 * (d - m)) - (isClosed_range_map_of_closedImmersion i) - (smoothClosedSupportChartOpen X Y i m d z) x hx hxS - (smoothClosedSupportChartCoclass X Y i m d z - (smoothClosedSupportChartOpen X Y i m d z) (le_refl _)) +theorem smoothClosedSupportChartCoclassGerm_eq_zero + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hx : x ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z) + (hxS : x ∉ Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclassGerm X Y i m d z x hx = 0 := + _root_.OAI.AlgebraicTopology.Support.RelativeCohomologyEq.Singular.supportRelativeCohomologyGerm_eq_zero_of_not_mem + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) (2 * (d - m)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isClosed_range_map_of_closedImmersion i) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z) x hx hxS + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclass X Y i m d z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z) (le_refl _)) open scoped Classical in /-- Let `i : Y → X` be a closed immersion of smooth complex schemes of dimensions `m,d`. Put `S = @@ -115,66 +124,71 @@ i(Y(ℂ))` and `c = d-m`. This element of the stalk at `x` of the sheafification H^{2c}(V,V \ S;ℚ)` is zero off `S`. On `S`, it is the germ of the pullback, in a chosen normal chart at `x`, of the class in `H^{2c}(ℂ^c,ℂ^c \ {0};ℚ)` evaluating to `1` on the complex orientation class. -/ -def smoothClosedSupportCoclassStalk (x : ComplexPoint X) : - (smoothClosedSupportCoclassSheaf X Y i m d).presheaf.stalk x := - if hxS : x ∈ Set.range (Point.map i) then - smoothClosedSupportChartCoclassGerm X Y i m d hxS.choose x +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassSheaf X Y i m d).presheaf.stalk x := + if hxS : x ∈ Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) then + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclassGerm X Y i m d hxS.choose x (by simpa only [hxS.choose_spec] using - mem_smoothClosedSupportChartOpen X Y i m d hxS.choose) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_smoothClosedSupportChartOpen X Y i m d hxS.choose) else 0 /-- The normalized germ family agrees with every chart, including at points outside the support. -/ -theorem smoothClosedSupportCoclassStalk_eq_chartGerm - (z : ComplexPoint Y) (x : ComplexPoint X) - (hx : x ∈ smoothClosedSupportChartOpen X Y i m d z) : - smoothClosedSupportCoclassStalk X Y i m d x = - smoothClosedSupportChartCoclassGerm X Y i m d z x hx := by - by_cases hxS : x ∈ Set.range (Point.map i) - · rw [smoothClosedSupportCoclassStalk, dite_eq_left hxS] +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk_eq_chartGerm + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hx : x ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk X Y i m d x = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclassGerm X Y i m d z x hx := by + by_cases hxS : x ∈ Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) + · rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk, dite_eq_left hxS] exact smoothClosedSupportChartCoclassGerm_eq X Y i m d hxS.choose z x hxS _ hx - · rw [smoothClosedSupportCoclassStalk, dite_eq_right hxS] + · rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk, dite_eq_right hxS] exact (smoothClosedSupportChartCoclassGerm_eq_zero X Y i m d z x hx hxS).symm -@[simp] theorem smoothClosedSupportCoclassStalk_eq_zero - (x : ComplexPoint X) (hxS : x ∉ Set.range (Point.map i)) : - smoothClosedSupportCoclassStalk X Y i m d x = 0 := by - rw [smoothClosedSupportCoclassStalk, dite_eq_right hxS] +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk_eq_zero + (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hxS : x ∉ Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk X Y i m d x = 0 := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk, dite_eq_right hxS] /-- The charts and the open support complement prove local representability of the entire normalized stalk family. -/ -theorem smoothClosedSupportCoclassStalk_locallyRepresentable : - ∀ x : ComplexPoint X, - ∃ (U : Opens (ComplexPoint X)) (_ : x ∈ U) - (s : (smoothClosedSupportCoclassSheaf X Y i m d).presheaf.obj (op U)), - ∀ (y : ComplexPoint X) (hy : y ∈ U), - (smoothClosedSupportCoclassSheaf X Y i m d).presheaf.germ U y hy s = - smoothClosedSupportCoclassStalk X Y i m d y := by +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk_locallyRepresentable : + ∀ x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X, + ∃ (U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (_ : x ∈ U) + (s : (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassSheaf X Y i m d).presheaf.obj (op U)), + ∀ (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hy : y ∈ U), + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassSheaf X Y i m d).presheaf.germ U y hy s = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk X Y i m d y := by intro x - by_cases hxS : x ∈ Set.range (Point.map i) + by_cases hxS : x ∈ Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) · obtain ⟨z, rfl⟩ := hxS - refine ⟨smoothClosedSupportChartOpen X Y i m d z, - mem_smoothClosedSupportChartOpen X Y i m d z, - smoothClosedSupportChartSheafSection X Y i m d z, ?_⟩ - exact fun y hy ↦ (smoothClosedSupportCoclassStalk_eq_chartGerm X Y i m d z y hy).symm - · let U : Opens (ComplexPoint X) := - ⟨(Set.range (Point.map i))ᶜ, (isClosed_range_map_of_closedImmersion i).isOpen_compl⟩ + refine ⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_smoothClosedSupportChartOpen X Y i m d z, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartSheafSection X Y i m d z, ?_⟩ + exact fun y hy ↦ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk_eq_chartGerm X Y i m d z y hy).symm + · let U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := + ⟨(Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i))ᶜ, (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isClosed_range_map_of_closedImmersion i).isOpen_compl⟩ refine ⟨U, hxS, 0, ?_⟩ intro y hy - rw [map_zero, smoothClosedSupportCoclassStalk_eq_zero X Y i m d y hy] + rw [map_zero, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk_eq_zero X Y i m d y hy] /-- Let `i : Y → X` be a closed immersion of smooth complex schemes of dimensions `m,d`. Put `S = i(Y(ℂ))` and `c = d-m`. This global section of the sheafification of `V ↦ H^{2c}(V,V \ S;ℚ)` glues the zero section off `S` with pullbacks in normal charts of the class in `H^{2c}(ℂ^c,ℂ^c \ {0};ℚ)` evaluating to `1` on the complex orientation class. -/ -def smoothClosedSupportCoclassSection : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassSection : -- A global section of `𝓗^{2(d-m)}_{Y(ℂ)}` on `X(ℂ)`. - (smoothClosedSupportCoclassSheaf X Y i m d).presheaf.obj + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassSheaf X Y i m d).presheaf.obj -- All of `X(ℂ)`. (op ⊤) := - TopCat.Sheaf.sectionOfLocallyRepresentable _ - (smoothClosedSupportCoclassStalk X Y i m d) - (smoothClosedSupportCoclassStalk_locallyRepresentable X Y i m d) + _root_.OAI.AlgebraicTopology.Sheaf.MapOfLocalStalks.TopCat.sectionOfLocallyRepresentable _ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk X Y i m d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk_locallyRepresentable X Y i m d) + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.Cycle.SmoothPairCoclassSection diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Support.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Support.lean index 9bf8833bc7..1b30ed73c1 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Support.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Support.lean @@ -12,18 +12,23 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic -public import Mathlib.AlgebraicGeometry.AlgebraicCycle.Basic -public import Mathlib.AlgebraicGeometry.Morphisms.Smooth +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic +import Mathlib.AlgebraicGeometry.AlgebraicCycle.Basic +import Mathlib.AlgebraicGeometry.Morphisms.Smooth import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Locus import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import Mathlib.AlgebraicGeometry.AlgClosed.Basic import Mathlib.Analysis.Complex.Polynomial.Basic +namespace OAI.AlgebraicGeometry.Cycle.Support + +open _root_.AlgebraicGeometry + /-! # Geometric support of algebraic cycles @@ -33,11 +38,11 @@ corresponding closed subset of complex points. It also constructs the geometric whole cycle as the union of the closures of the generic points with nonzero coefficient. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section variable (X : Over (Spec ↧ℂ)) @@ -80,9 +85,9 @@ instance (X : Scheme) (x : X) : IsIntegral (cycleComponent X x) := /-- A cycle component of a projective variety is projective over `ℂ`. -/ instance cycleComponent_projective - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) : - IsProjective (cycleComponentι X.left x ≫ X.hom) := by - rcases ‹IsProjective X.hom›.nonempty_presentation with ⟨P⟩ + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) : + _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective (cycleComponentι X.left x ≫ X.hom) := by + rcases ‹_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom›.nonempty_presentation with ⟨P⟩ exact ⟨⟨ { ambientDimension := P.ambientDimension immersion := cycleComponentι X.left x ≫ P.immersion @@ -96,8 +101,12 @@ instance cycleComponent_projective be its reduced closure in `X`. This is the subset `Z(ℂ) ⊆ X(ℂ)`, consisting of complex points whose underlying scheme point belongs to `closure {x}`. -/ def cycleComponentSupport - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) : - Set (ComplexPoint X) := - Point.underlying ⁻¹' closure {x} + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) : + Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying ⁻¹' closure {x} + +end + +end -end AlgebraicGeometry +end OAI.AlgebraicGeometry.Cycle.Support diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Transport/CohomologySheaf.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Transport/CohomologySheaf.lean index a60613a6e8..c78a13ab37 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Transport/CohomologySheaf.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Cycle/Transport/CohomologySheaf.lean @@ -1,14 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cohomology.SupportedSingularModel -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Local.LocalHomology -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.SingularSectionCohomology +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cohomology.SupportedSingularModel +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Local.LocalHomology +import HodgeConjecture.Definitions.AlgebraicTopology.Support.SingularSectionCohomology + +namespace OAI.AlgebraicGeometry.Cycle.TransportCohomologySheaf + +open _root_.AlgebraicGeometry /-! # Cohomology-sheaf concentration for smooth closed supports @@ -20,35 +25,41 @@ stalkwise and sheafwise concentration in degree twice the complex codimension. I the surviving cohomology sheaf with rational constants on the support is left to a later file. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits Topology TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.Topology _root_.TopologicalSpace Opposite -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] /-- Let `X` be a smooth integral projective scheme over `ℂ` and `S` a closed subset of its analytic space `X(ℂ)`. For the chosen injective resolution `ℚ → I^•`, this complex has in each degree the subsheaf of `I^n` consisting of sections that vanish off `S`. Its differentials are induced by those of `I^•`, and it represents the derived sheaf of sections with support in `S`. -/ -def complexSupportInjectiveComplex (S : Closeds (ComplexPoint X)) : - CochainComplex (TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X))) ℤ := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex (S : Closeds (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : + CochainComplex (TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) ℤ := -- `RΓ_S(ℚ)`: the `S`-supported subsheaves of an injective resolution of `ℚ` on `X(ℂ)`. - ((TopCat.Sheaf.sheafSectionsSupportedOutside + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside -- `X(ℂ)`. - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -- The open `X(ℂ) \ S`; sections supported outside it are the sections supported on `S`. S.compl).mapHomologicalComplex ℤᵘᵖ).obj -- The injective resolution `I^•` of `ℚ` on `X(ℂ)`. - (ambientRationalInjectiveComplex X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X) -instance complexSupportInjectiveComplex_isStrictlyGE (S : Closeds (ComplexPoint X)) : - (complexSupportInjectiveComplex X S).IsStrictlyGE 0 := by - dsimp [complexSupportInjectiveComplex] +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex_isStrictlyGE (S : Closeds (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X S).IsStrictlyGE 0 := by + dsimp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex] infer_instance -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Cycle.TransportCohomologySheaf diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Hodge/AnalyticDifferentialForms.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Hodge/AnalyticDifferentialForms.lean index 657ada7ca3..8ba4c724a8 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Hodge/AnalyticDifferentialForms.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Hodge/AnalyticDifferentialForms.lean @@ -12,12 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.Algebra.DeRham.Basic -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AnalyticSheaf -public import HodgeConjecture.Lemmas.Analysis.Calculus.DifferentialForm.ExactWedge +import HodgeConjecture.Lemmas.Algebra.DeRham.Basic +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AnalyticSheaf +import HodgeConjecture.Lemmas.Analysis.Calculus.DifferentialForm.ExactWedge + +namespace OAI.AlgebraicGeometry.Hodge.AnalyticDifferentialForms + +open _root_.AlgebraicGeometry /-! # Analytic differential forms @@ -43,143 +48,144 @@ In degrees above the complex dimension the evaluation target is zero, so the res vanish. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory DifferentialForm TopologicalSpace -open scoped ContDiff Manifold +open _root_.CategoryTheory _root_.OAI.Analysis.DifferentialForms.ExactWedge.DifferentialForm _root_.TopologicalSpace +open scoped ContDiff _root_.Manifold -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X : Over (Spec ↧ℂ)) (d : ℕ) -noncomputable instance holomorphicFunctionPresheafAlgebra +noncomputable instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionPresheafAlgebra [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) : - Algebra ℂ ((holomorphicFunctionPresheaf X d).obj U) := + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) : + Algebra ℂ ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionPresheaf X d).obj U) := inferInstanceAs (Algebra ℂ - C^ω⟮𝓘(ℂ, Fin d → ℂ), (Opposite.unop U : Opens (ComplexPoint X)); ℂ⟯) + C^ω⟮𝓘(ℂ, Fin d → ℂ), (Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)); ℂ⟯) /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. For analytic opens `V ⊆ U`, this `ℂ`-algebra homomorphism sends a holomorphic function on `U` to its restriction to `V`. -/ -def holomorphicRestrictionAlgHom [SmoothOfRelativeDimension d X.hom] - {U V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} (i : U ⟶ V) : - ((holomorphicFunctionPresheaf X d).obj U : Type) →ₐ[ℂ] - ((holomorphicFunctionPresheaf X d).obj V : Type) where - toRingHom := ((holomorphicFunctionSheaf X d).presheaf.map i).hom +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom [SmoothOfRelativeDimension d X.hom] + {U V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) : + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionPresheaf X d).obj U : Type) →ₐ[ℂ] + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionPresheaf X d).obj V : Type) where + toRingHom := ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionSheaf X d).presheaf.map i).hom commutes' _ := rfl -@[simp] lemma holomorphicRestrictionAlgHom_id [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) : - holomorphicRestrictionAlgHom X d (𝟙 U) = AlgHom.id ℂ _ := rfl +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom_id [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom X d (𝟙 U) = AlgHom.id ℂ _ := rfl -@[simp] lemma holomorphicRestrictionAlgHom_comp [SmoothOfRelativeDimension d X.hom] - {U V W : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom_comp [SmoothOfRelativeDimension d X.hom] + {U V W : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) (j : V ⟶ W) : - holomorphicRestrictionAlgHom X d (i ≫ j) = - (holomorphicRestrictionAlgHom X d j).comp - (holomorphicRestrictionAlgHom X d i) := rfl + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom X d (i ≫ j) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom X d j).comp + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom X d i) := rfl /-- Let `X` be a smooth complex scheme of dimension `d` and `U` an analytic open in `X(ℂ)`. This is the complex algebra of holomorphic functions `U → ℂ`, with pointwise operations, defined using the chosen analytic charts. -/ -abbrev OpenHolomorphicFunctions [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) := - ((holomorphicFunctionPresheaf X d).obj U : Type) +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) := + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionPresheaf X d).obj U : Type) /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. For an analytic open `U` and the chosen chart `e` at `z`, this is the set of coordinates `y` in the chart target such that `e.symm(y) ∈ U`. It is an open subset of `ℂ^d`. -/ -def chartSectionDomain [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : Set (Fin d → ℂ) := (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).target ∩ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).symm ⁻¹' - ((Opposite.unop U : Opens (ComplexPoint X)) : - Set (ComplexPoint X)) + ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : + Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -lemma isOpen_chartSectionDomain [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) : - IsOpen (chartSectionDomain X d U z) := by - simpa [chartSectionDomain, extChartAt_target, extChartAt_coe_symm] using +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + IsOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) := by + simpa [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain, extChartAt_target, extChartAt_coe_symm] using (chartAt (Fin d → ℂ) z).isOpen_inter_preimage_symm (Opposite.unop U).isOpen /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. For an analytic open `U` and a holomorphic function `f : U → ℂ`, this total function on `X(ℂ)` equals `f` on `U` and zero outside `U`. -/ -def extendedSection [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (f : OpenHolomorphicFunctions X d U) : - ComplexPoint X → ℂ := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendedSection [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X → ℂ := Function.extend Subtype.val f.1 0 -private lemma extendedSection_contMDiffWithinAt [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (f : OpenHolomorphicFunctions X d U) {x : ComplexPoint X} - (hx : x ∈ (Opposite.unop U : Opens (ComplexPoint X))) : +lemma extendedSection_contMDiffWithinAt [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) {x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X} + (hx : x ∈ (Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) : ContMDiffWithinAt (modelWithCornersSelf ℂ (Fin d → ℂ)) (modelWithCornersSelf ℂ ℂ) ω - (extendedSection X d U f) - ((Opposite.unop U : Opens (ComplexPoint X)) : - Set (ComplexPoint X)) x := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendedSection X d U f) + ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : + Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) x := by apply ContMDiffAt.contMDiffWithinAt apply (contMDiffAt_subtype_iff - (U := (Opposite.unop U : Opens (ComplexPoint X))) + (U := (Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) (x := ⟨x, hx⟩)).mp - simpa only [extendedSection, Subtype.val_injective.extend_apply] using - (holomorphicFunctionSheaf_section_analytic X d f).contMDiffAt + simpa only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendedSection, Subtype.val_injective.extend_apply] using + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionSheaf_section_analytic X d f).contMDiffAt (x := ⟨x, hx⟩) /-- Let `X` be a smooth complex scheme of dimension `d`, `U ⊆ X(ℂ)` open, and `e` the chosen chart at `z`. Its coordinate domain over `U` is `D = {y ∈ e.target | e.symm y ∈ U}`. For a holomorphic function `f` on `U`, this is its coordinate expression `f ∘ e.symm` on `D`, defined as a total function by first extending `f` by zero outside `U`. -/ -def chartSection [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (f : OpenHolomorphicFunctions X d U) : (Fin d → ℂ) → ℂ := - extendedSection X d U f ∘ +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) : (Fin d → ℂ) → ℂ := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendedSection X d U f ∘ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).symm -lemma chartSection_contDiffWithinAt [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (f : OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} - (hy : y ∈ chartSectionDomain X d U z) : - ContDiffWithinAt ℂ ω (chartSection X d U z f) - (chartSectionDomain X d U z) y := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffWithinAt [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} + (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + ContDiffWithinAt ℂ ω (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) y := by have hsymm : ContMDiffWithinAt (modelWithCornersSelf ℂ (Fin d → ℂ)) (modelWithCornersSelf ℂ (Fin d → ℂ)) ω (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).symm - (chartSectionDomain X d U z) y := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) y := by exact (contMDiffOn_extChartAt_symm (I := modelWithCornersSelf ℂ (Fin d → ℂ)) z y hy.1).mono Set.inter_subset_left have hext : ContMDiffWithinAt (modelWithCornersSelf ℂ (Fin d → ℂ)) (modelWithCornersSelf ℂ ℂ) ω - (extendedSection X d U f) - ((Opposite.unop U : Opens (ComplexPoint X)) : - Set (ComplexPoint X)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendedSection X d U f) + ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : + Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).symm y) := extendedSection_contMDiffWithinAt X d U f hy.2 exact (hext.comp y hsymm (fun _ h ↦ h.2)).contDiffWithinAt -lemma chartSection_contDiffOn [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (f : OpenHolomorphicFunctions X d U) : - ContDiffOn ℂ ω (chartSection X d U z f) - (chartSectionDomain X d U z) := - fun _ hy ↦ chartSection_contDiffWithinAt X d U z f hy - -@[simp] lemma chartSection_apply_of_mem [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (f : OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} - (hy : y ∈ chartSectionDomain X d U z) : - chartSection X d U z f y = +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffOn [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) : + ContDiffOn ℂ ω (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) := + fun _ hy ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffWithinAt X d U z f hy + +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} + (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f y = f.1 ⟨(extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).symm y, hy.2⟩ := by change Function.extend Subtype.val f.1 0 (Subtype.val ⟨(extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).symm y, @@ -190,85 +196,85 @@ lemma chartSection_contDiffOn [SmoothOfRelativeDimension d X.hom] at `z`. Its coordinate domain over `U` is `D = {y ∈ e.target | e.symm y ∈ U}`. For a holomorphic function `f` on `U`, this is the complex Fréchet derivative of `f ∘ e.symm` within `D` at `y`. Its value is a continuous complex linear functional on `ℂ^d`. -/ -def chartSectionDifferential [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (f : OpenHolomorphicFunctions X d U) (y : Fin d → ℂ) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (y : Fin d → ℂ) : (Fin d → ℂ) →L[ℂ] ℂ := - fderivWithin ℂ (chartSection X d U z f) - (chartSectionDomain X d U z) y - -lemma chartSectionDifferential_add [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (f g : OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} - (hy : y ∈ chartSectionDomain X d U z) : - chartSectionDifferential X d U z (f + g) y = - chartSectionDifferential X d U z f y + - chartSectionDifferential X d U z g y := by - let S := chartSectionDomain X d U z - have hEq : Set.EqOn (chartSection X d U z (f + g)) - (chartSection X d U z f + chartSection X d U z g) S := by + fderivWithin ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) y + +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_add [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f g : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} + (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z (f + g) y = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z f y + + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z g y := by + let S := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z + have hEq : Set.EqOn (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z (f + g)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z g) S := by intro w hw - simp only [Pi.add_apply, chartSection_apply_of_mem X d U z _ hw] + simp only [Pi.add_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U z _ hw] rfl - rw [chartSectionDifferential, fderivWithin_congr' hEq hy] - exact fderivWithin_add ((isOpen_chartSectionDomain X d U z).uniqueDiffWithinAt hy) - ((chartSection_contDiffWithinAt X d U z f hy).differentiableWithinAt (by simp)) - ((chartSection_contDiffWithinAt X d U z g hy).differentiableWithinAt (by simp)) - -lemma chartSectionDifferential_smul [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) (c : ℂ) - (f : OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} - (hy : y ∈ chartSectionDomain X d U z) : - chartSectionDifferential X d U z (c • f) y = - c • chartSectionDifferential X d U z f y := by - let S := chartSectionDomain X d U z - have hEq : Set.EqOn (chartSection X d U z (c • f)) - (c • chartSection X d U z f) S := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential, fderivWithin_congr' hEq hy] + exact fderivWithin_add ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z).uniqueDiffWithinAt hy) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffWithinAt X d U z f hy).differentiableWithinAt (by simp)) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffWithinAt X d U z g hy).differentiableWithinAt (by simp)) + +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_smul [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (c : ℂ) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} + (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z (c • f) y = + c • _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z f y := by + let S := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z + have hEq : Set.EqOn (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z (c • f)) + (c • _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f) S := by intro w hw - simp only [Pi.smul_apply, chartSection_apply_of_mem X d U z _ hw] + simp only [Pi.smul_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U z _ hw] rfl - rw [chartSectionDifferential, fderivWithin_congr' hEq hy] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential, fderivWithin_congr' hEq hy] exact fderivWithin_const_smul_field c - ((isOpen_chartSectionDomain X d U z).uniqueDiffWithinAt hy) - -lemma chartSectionDifferential_mul [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (f g : OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} - (hy : y ∈ chartSectionDomain X d U z) : - chartSectionDifferential X d U z (f * g) y = - chartSection X d U z f y • chartSectionDifferential X d U z g y + - chartSection X d U z g y • - chartSectionDifferential X d U z f y := by - let S := chartSectionDomain X d U z - have hEq : Set.EqOn (chartSection X d U z (f * g)) - (chartSection X d U z f * chartSection X d U z g) S := by + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z).uniqueDiffWithinAt hy) + +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_mul [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f g : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} + (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z (f * g) y = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f y • _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z g y + + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z g y • + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z f y := by + let S := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z + have hEq : Set.EqOn (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z (f * g)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f * _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z g) S := by intro w hw - simp only [Pi.mul_apply, chartSection_apply_of_mem X d U z _ hw] + simp only [Pi.mul_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U z _ hw] rfl - rw [chartSectionDifferential, fderivWithin_congr' hEq hy] - exact fderivWithin_mul ((isOpen_chartSectionDomain X d U z).uniqueDiffWithinAt hy) - ((chartSection_contDiffWithinAt X d U z f hy).differentiableWithinAt (by simp)) - ((chartSection_contDiffWithinAt X d U z g hy).differentiableWithinAt (by simp)) - -lemma chartSectionDifferential_algebraMap [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) (c : ℂ) {y : Fin d → ℂ} - (hy : y ∈ chartSectionDomain X d U z) : - chartSectionDifferential X d U z - (algebraMap ℂ (OpenHolomorphicFunctions X d U) c) y = 0 := by - let S := chartSectionDomain X d U z + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential, fderivWithin_congr' hEq hy] + exact fderivWithin_mul ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z).uniqueDiffWithinAt hy) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffWithinAt X d U z f hy).differentiableWithinAt (by simp)) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffWithinAt X d U z g hy).differentiableWithinAt (by simp)) + +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_algebraMap [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (c : ℂ) {y : Fin d → ℂ} + (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z + (algebraMap ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) c) y = 0 := by + let S := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z have hEq : Set.EqOn - (chartSection X d U z - (algebraMap ℂ (OpenHolomorphicFunctions X d U) c)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z + (algebraMap ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) c)) (fun _ ↦ c) S := by intro w hw - simp only [chartSection_apply_of_mem X d U z _ hw] + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U z _ hw] rfl - rw [chartSectionDifferential, fderivWithin_congr' hEq hy] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential, fderivWithin_congr' hEq hy] exact congrFun (fderivWithin_const (𝕜 := ℂ) (E := Fin d → ℂ) (s := S) c) y @@ -278,92 +284,92 @@ lemma chartSectionDifferential_algebraMap [SmoothOfRelativeDimension d X.hom] at `z`. Its coordinate domain over `U` is `D = {y ∈ e.target | e.symm y ∈ U}`. This `ℂ`-algebra homomorphism sends each holomorphic function `f` on `U` to the function `y ↦ f(e.symm(y))` on `D`. -/ -def chartSectionAlgHom [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) : - OpenHolomorphicFunctions X d U →ₐ[ℂ] (↥(chartSectionDomain X d U z) → ℂ) where - toFun f y := chartSection X d U z f y.1 - map_one' := by funext y; simp only [chartSection_apply_of_mem X d U z _ y.2]; rfl +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionAlgHom [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U →ₐ[ℂ] (↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) → ℂ) where + toFun f y := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f y.1 + map_one' := by funext y; simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U z _ y.2]; rfl map_mul' f g := by funext y - simp only [Pi.mul_apply, chartSection_apply_of_mem X d U z _ y.2] + simp only [Pi.mul_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U z _ y.2] rfl - map_zero' := by funext y; simp only [chartSection_apply_of_mem X d U z _ y.2]; rfl + map_zero' := by funext y; simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U z _ y.2]; rfl map_add' f g := by funext y - simp only [Pi.add_apply, chartSection_apply_of_mem X d U z _ y.2] + simp only [Pi.add_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U z _ y.2] rfl - commutes' c := by funext y; simp only [chartSection_apply_of_mem X d U z _ y.2]; rfl + commutes' c := by funext y; simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U z _ y.2]; rfl -@[simp] lemma chartSectionAlgHom_apply [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) - (f : OpenHolomorphicFunctions X d U) (y : ↥(chartSectionDomain X d U z)) : - chartSectionAlgHom X d U z f y = chartSection X d U z f y.1 := rfl +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionAlgHom_apply [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (y : ↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionAlgHom X d U z f y = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f y.1 := rfl /-- Let `X` be a smooth complex scheme of dimension `d`, `U ⊆ X(ℂ)` open, and `e` the chosen chart at `z`. Its coordinate domain over `U` is `D = {y ∈ e.target | e.symm y ∈ U}`. For a complex vector space `V`, functions `D → V` form a module over `𝒪(U)`, the holomorphic functions on `U`, by `(f • v)(y) = f(e.symm(y)) • v(y)`. This is that module structure. -/ -abbrev chartFieldModule [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartFieldModule [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (V : Type) [AddCommGroup V] [Module ℂ V] : - Module (OpenHolomorphicFunctions X d U) (↥(chartSectionDomain X d U z) → V) := - Module.compHom _ (chartSectionAlgHom X d U z).toRingHom + Module (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) → V) := + Module.compHom _ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionAlgHom X d U z).toRingHom -attribute [local instance] chartFieldModule +attribute [local instance] _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartFieldModule -lemma chartFieldModule_smul_apply [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartFieldModule_smul_apply [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (V : Type) [AddCommGroup V] [Module ℂ V] - (f : OpenHolomorphicFunctions X d U) (F : ↥(chartSectionDomain X d U z) → V) - (y : ↥(chartSectionDomain X d U z)) : - (f • F) y = chartSection X d U z f y.1 • F y := rfl + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (F : ↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) → V) + (y : ↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) : + (f • F) y = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f y.1 • F y := rfl /-- The scalar actions of `ℂ` and of the holomorphic functions on chart fields are compatible. -/ -theorem chartFieldTower [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartFieldTower [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (V : Type) [AddCommGroup V] [Module ℂ V] : - IsScalarTower ℂ (OpenHolomorphicFunctions X d U) - (↥(chartSectionDomain X d U z) → V) := by + IsScalarTower ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) + (↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) → V) := by refine ⟨fun c f F => ?_⟩ funext y - have h : chartSection X d U z (c • f) y.1 = c * chartSection X d U z f y.1 := by - simp only [chartSection_apply_of_mem X d U z _ y.2]; rfl - rw [chartFieldModule_smul_apply, Pi.smul_apply, chartFieldModule_smul_apply, h, mul_smul] + have h : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z (c • f) y.1 = c * _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f y.1 := by + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U z _ y.2]; rfl + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartFieldModule_smul_apply, Pi.smul_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartFieldModule_smul_apply, h, mul_smul] -attribute [local instance] chartFieldTower +attribute [local instance] _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartFieldTower /-- Let `X` be a smooth complex scheme of dimension `d`, `U ⊆ X(ℂ)` open, and `e` the chosen chart at `z`. Its coordinate domain over `U` is `D = {y ∈ e.target | e.symm y ∈ U}`. This `ℂ`-derivation sends a holomorphic function `f` on `U` to the covector field `y ↦ D(f ∘ e.symm)(y)` on `D`. Multiplication by holomorphic functions is evaluated in these coordinates, so the derivative obeys the Leibniz rule. -/ -def chartDerivation [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) : - Derivation ℂ (OpenHolomorphicFunctions X d U) - (↥(chartSectionDomain X d U z) → ((Fin d → ℂ) →L[ℂ] ℂ)) where - toFun f y := chartSectionDifferential X d U z f y.1 +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartDerivation [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + Derivation ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) + (↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) → ((Fin d → ℂ) →L[ℂ] ℂ)) where + toFun f y := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z f y.1 map_add' f g := by funext y - exact chartSectionDifferential_add X d U z f g y.2 + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_add X d U z f g y.2 map_smul' c f := by funext y - exact chartSectionDifferential_smul X d U z c f y.2 + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_smul X d U z c f y.2 map_one_eq_zero' := by funext y - show chartSectionDifferential X d U z 1 y.1 = 0 - rw [show (1 : OpenHolomorphicFunctions X d U) = - algebraMap ℂ (OpenHolomorphicFunctions X d U) 1 by simp] - exact chartSectionDifferential_algebraMap X d U z 1 y.2 + show _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z 1 y.1 = 0 + rw [show (1 : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) = + algebraMap ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) 1 by simp] + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_algebraMap X d U z 1 y.2 leibniz' f g := by funext y - exact chartSectionDifferential_mul X d U z f g y.2 + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_mul X d U z f g y.2 -@[simp] lemma chartDerivation_apply [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) - (f : OpenHolomorphicFunctions X d U) (y : ↥(chartSectionDomain X d U z)) : - chartDerivation X d U z f y = chartSectionDifferential X d U z f y.1 := rfl +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartDerivation_apply [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (y : ↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartDerivation X d U z f y = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z f y.1 := rfl -private lemma update_eval {p : ℕ} {V W : Type*} (L : Fin p → V → W) (i : Fin p) +lemma update_eval {p : ℕ} {V W : Type*} (L : Fin p → V → W) (i : Fin p) (a : V → W) (y : V) : (fun j => Function.update L i a j y) = Function.update (fun j => L j y) i (a y) := by funext j @@ -373,88 +379,88 @@ private lemma update_eval {p : ℕ} {V W : Type*} (L : Fin p → V → W) (i : F at `z`. Its coordinate domain over `U` is `D = {y ∈ e.target | e.symm y ∈ U}`. For a natural number `p`, this alternating multilinear map sends `p` covector fields on `D` to their pointwise exterior product. At `y`, it gives an alternating continuous `p`-linear form on `ℂ^d`. -/ -def chartWedge [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) : - (↥(chartSectionDomain X d U z) → ((Fin d → ℂ) →L[ℂ] ℂ)) - [⋀^Fin p]→ₗ[OpenHolomorphicFunctions X d U] - (↥(chartSectionDomain X d U z) → ((Fin d → ℂ) [⋀^Fin p]→L[ℂ] ℂ)) where - toFun L y := ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) fun i => L i y +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartWedge [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) : + (↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) → ((Fin d → ℂ) →L[ℂ] ℂ)) + [⋀^Fin p]→ₗ[_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U] + (↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) → ((Fin d → ℂ) [⋀^Fin p]→L[ℂ] ℂ)) where + toFun L y := _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) fun i => L i y map_update_add' := by intro instDec L i a b obtain rfl : instDec = instDecidableEqFin p := Subsingleton.elim _ _ funext y - show ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) (fun j => Function.update L i (a + b) j y) = - ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) (fun j => Function.update L i a j y) + - ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) (fun j => Function.update L i b j y) - rw [update_eval, update_eval, update_eval, Pi.add_apply, ContinuousAlternatingMap.wedgeCovectors_update_add] + show _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) (fun j => Function.update L i (a + b) j y) = + _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) (fun j => Function.update L i a j y) + + _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) (fun j => Function.update L i b j y) + rw [update_eval, update_eval, update_eval, Pi.add_apply, _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors_update_add] map_update_smul' := by intro instDec L i f a obtain rfl : instDec = instDecidableEqFin p := Subsingleton.elim _ _ funext y - show ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) (fun j => Function.update L i (f • a) j y) = - chartSection X d U z f y.1 • - ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) (fun j => Function.update L i a j y) - rw [update_eval, update_eval, chartFieldModule_smul_apply, - ContinuousAlternatingMap.wedgeCovectors_update_smul] + show _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) (fun j => Function.update L i (f • a) j y) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f y.1 • + _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) (fun j => Function.update L i a j y) + rw [update_eval, update_eval, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartFieldModule_smul_apply, + _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors_update_smul] map_eq_zero_of_eq' L i j h hij := by funext y - exact ContinuousAlternatingMap.wedgeCovectors_eq_zero_of_eq _ i j (congrFun h y) hij + exact _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors_eq_zero_of_eq _ i j (congrFun h y) hij -@[simp] lemma chartWedge_apply [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) - (L : Fin p → ↥(chartSectionDomain X d U z) → ((Fin d → ℂ) →L[ℂ] ℂ)) - (y : ↥(chartSectionDomain X d U z)) : - chartWedge X d U z p L y = ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) fun i => L i y := rfl +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartWedge_apply [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (L : Fin p → ↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) → ((Fin d → ℂ) →L[ℂ] ℂ)) + (y : ↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartWedge X d U z p L y = _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) fun i => L i y := rfl /-- Let `X` be a smooth complex scheme of dimension `d`, `U ⊆ X(ℂ)` open, and `e` the chosen chart at `z`. Its coordinate domain over `U` is `D = {y ∈ e.target | e.symm y ∈ U}`. Let `𝒪(U)` be the algebra of holomorphic functions. This `𝒪(U)`-linear map evaluates algebraic Kähler `p`-forms as alternating-form fields on `D`: it sends `a₀ da₁ ∧ ⋯ ∧ daₚ` to the coordinate value of `a₀` times the wedge of the coordinate derivatives of the `a_j`. -/ -def chartEvaluationHolo [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) : - Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p →ₗ[OpenHolomorphicFunctions X d U] - (↥(chartSectionDomain X d U z) → ((Fin d → ℂ) [⋀^Fin p]→L[ℂ] ℂ)) := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationHolo [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) : + _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p →ₗ[_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U] + (↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) → ((Fin d → ℂ) [⋀^Fin p]→L[ℂ] ℂ)) := exteriorPower.alternatingMapLinearEquiv - ((chartWedge X d U z p).compLinearMap - (chartDerivation X d U z).liftKaehlerDifferential) - -private lemma chartEvaluationHolo_mk [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) - (a₀ : OpenHolomorphicFunctions X d U) (v : Fin p → OpenHolomorphicFunctions X d U) - (y : ↥(chartSectionDomain X d U z)) : - chartEvaluationHolo X d U z p - (Algebra.DeRham.mk ℂ (OpenHolomorphicFunctions X d U) p a₀ v) y = - chartSection X d U z a₀ y.1 • - ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) - fun i => chartSectionDifferential X d U z (v i) y.1 := by - show chartEvaluationHolo X d U z p - (a₀ • Algebra.DeRham.exact ℂ (OpenHolomorphicFunctions X d U) p v) y = _ - rw [map_smul, chartFieldModule_smul_apply, chartEvaluationHolo, Algebra.DeRham.exact, + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartWedge X d U z p).compLinearMap + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartDerivation X d U z).liftKaehlerDifferential) + +lemma chartEvaluationHolo_mk [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (a₀ : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (v : Fin p → _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) + (y : ↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationHolo X d U z p + (_root_.OAI.Algebra.DeRham.Basic.mk ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p a₀ v) y = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z a₀ y.1 • + _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) + fun i => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z (v i) y.1 := by + show _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationHolo X d U z p + (a₀ • _root_.OAI.Algebra.DeRham.Basic.exact ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p v) y = _ + rw [map_smul, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartFieldModule_smul_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationHolo, _root_.OAI.Algebra.DeRham.Basic.exact, exteriorPower.alternatingMapLinearEquiv_apply_ιMulti] simp /-- Let `X` be a smooth complex scheme of dimension `d`, `U ⊆ X(ℂ)` open, and `e` the chosen chart at `z`. Its coordinate domain over `U` is `D = {y ∈ e.target | e.symm y ∈ U}`. For any type `V` with zero, this extends a function `D → V` to `ℂ^d` by assigning zero outside `D`. -/ -def extendByZero [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) - {V : Type} [Zero V] (F : ↥(chartSectionDomain X d U z) → V) : (Fin d → ℂ) → V := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZero [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + {V : Type} [Zero V] (F : ↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) → V) : (Fin d → ℂ) → V := Function.extend Subtype.val F 0 -@[simp] lemma extendByZero_apply_of_mem [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) - {V : Type} [Zero V] (F : ↥(chartSectionDomain X d U z) → V) - {y : Fin d → ℂ} (hy : y ∈ chartSectionDomain X d U z) : - extendByZero X d U z F y = F ⟨y, hy⟩ := +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZero_apply_of_mem [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + {V : Type} [Zero V] (F : ↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) → V) + {y : Fin d → ℂ} (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZero X d U z F y = F ⟨y, hy⟩ := Subtype.val_injective.extend_apply F 0 ⟨y, hy⟩ -lemma extendByZero_apply_of_notMem [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) - {V : Type} [Zero V] (F : ↥(chartSectionDomain X d U z) → V) - {y : Fin d → ℂ} (hy : y ∉ chartSectionDomain X d U z) : - extendByZero X d U z F y = 0 := by - rw [extendByZero, Function.extend_apply' _ _ _ ?_] +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZero_apply_of_notMem [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + {V : Type} [Zero V] (F : ↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) → V) + {y : Fin d → ℂ} (hy : y ∉ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZero X d U z F y = 0 := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZero, Function.extend_apply' _ _ _ ?_] · rfl · rintro ⟨⟨w, hw⟩, rfl⟩ exact hy hw @@ -463,444 +469,449 @@ lemma extendByZero_apply_of_notMem [SmoothOfRelativeDimension d X.hom] at `z`. Its coordinate domain over `U` is `D = {y ∈ e.target | e.symm y ∈ U}`. For a complex vector space `V`, this is the complex linear map from functions `D → V` to functions `ℂ^d → V` that extends by zero off `D`. -/ -def extendByZeroLinear [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZeroLinear [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (V : Type) [AddCommGroup V] [Module ℂ V] : - (↥(chartSectionDomain X d U z) → V) →ₗ[ℂ] ((Fin d → ℂ) → V) where - toFun := extendByZero X d U z + (↥(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) → V) →ₗ[ℂ] ((Fin d → ℂ) → V) where + toFun := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZero X d U z map_add' F G := by funext y - by_cases hy : y ∈ chartSectionDomain X d U z - · simp [extendByZero_apply_of_mem X d U z _ hy] - · simp [extendByZero_apply_of_notMem X d U z _ hy] + by_cases hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z + · simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZero_apply_of_mem X d U z _ hy] + · simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZero_apply_of_notMem X d U z _ hy] map_smul' c F := by funext y - by_cases hy : y ∈ chartSectionDomain X d U z - · simp [extendByZero_apply_of_mem X d U z _ hy] - · simp [extendByZero_apply_of_notMem X d U z _ hy] + by_cases hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z + · simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZero_apply_of_mem X d U z _ hy] + · simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZero_apply_of_notMem X d U z _ hy] /-- Let `X` be a smooth complex scheme of dimension `d`, `U ⊆ X(ℂ)` open, and `e` the chosen chart at `z`. Its coordinate domain over `U` is `D = {y ∈ e.target | e.symm y ∈ U}`. This complex linear map evaluates algebraic Kähler `p`-forms of `𝒪(U)` as alternating continuous `p`-linear forms on `ℂ^d` at each point of `D`, using coordinate derivatives. The resulting field is extended by zero off `D`. -/ -def chartEvaluation [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) : - Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p →ₗ[ℂ] +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) : + _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p →ₗ[ℂ] ((Fin d → ℂ) → (Fin d → ℂ) [⋀^Fin p]→L[ℂ] ℂ) := - (extendByZeroLinear X d U z _).comp - ((chartEvaluationHolo X d U z p).restrictScalars ℂ) - -private lemma chartEvaluation_apply_of_mem [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) - (θ : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) - {y : Fin d → ℂ} (hy : y ∈ chartSectionDomain X d U z) : - chartEvaluation X d U z p θ y = chartEvaluationHolo X d U z p θ ⟨y, hy⟩ := - extendByZero_apply_of_mem X d U z _ hy - -@[simp] lemma chartEvaluation_zero [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) : - chartEvaluation X d U z p 0 = 0 := - map_zero (chartEvaluation X d U z p) - -@[simp] lemma chartEvaluation_add [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) - (a b : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) : - chartEvaluation X d U z p (a + b) = - chartEvaluation X d U z p a + chartEvaluation X d U z p b := - map_add (chartEvaluation X d U z p) a b - -@[simp] lemma chartEvaluation_smul [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) (c : ℂ) - (a : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) : - chartEvaluation X d U z p (c • a) = c • chartEvaluation X d U z p a := - map_smul (chartEvaluation X d U z p) c a - -@[simp] lemma chartEvaluation_neg [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) - (a : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) : - chartEvaluation X d U z p (-a) = -chartEvaluation X d U z p a := - map_neg (chartEvaluation X d U z p) a - -@[simp] lemma chartEvaluation_sub [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) - (a b : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) : - chartEvaluation X d U z p (a - b) = - chartEvaluation X d U z p a - chartEvaluation X d U z p b := - map_sub (chartEvaluation X d U z p) a b + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZeroLinear X d U z _).comp + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationHolo X d U z p).restrictScalars ℂ) + +lemma chartEvaluation_apply_of_mem [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (θ : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) + {y : Fin d → ℂ} (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ y = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationHolo X d U z p θ ⟨y, hy⟩ := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendByZero_apply_of_mem X d U z _ hy + +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_zero [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p 0 = 0 := + map_zero (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p) + +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_add [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (a b : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p (a + b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p a + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p b := + map_add (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p) a b + +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_smul [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) (c : ℂ) + (a : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p (c • a) = c • _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p a := + map_smul (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p) c a + +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_neg [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (a : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p (-a) = -_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p a := + map_neg (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p) a + +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_sub [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (a b : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p (a - b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p a - _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p b := + map_sub (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p) a b /-- Let `X` be a smooth complex scheme of dimension `d`, `U ⊆ X(ℂ)` open, and `e` the chosen chart at `z`. Its coordinate domain over `U` is `D = {y ∈ e.target | e.symm y ∈ U}`. For holomorphic functions `a₀, v₀, …, v_{p-1}` on `U`, this field evaluates the generator `a₀ dv₀ ∧ ⋯ ∧ dv_{p-1}` as `a₀(e.symm(y))` times the wedge of the coordinate derivatives of the `v_j` at `y`. -/ -def chartGeneratorEvaluation [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) - (a₀ : OpenHolomorphicFunctions X d U) (v : Fin p → OpenHolomorphicFunctions X d U) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (a₀ : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (v : Fin p → _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) : (Fin d → ℂ) → (Fin d → ℂ) [⋀^Fin p]→L[ℂ] ℂ := - fun y => chartSection X d U z a₀ y • - ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) fun i => chartSectionDifferential X d U z (v i) y - -lemma chartEvaluation_mk [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) - (a₀ : OpenHolomorphicFunctions X d U) (v : Fin p → OpenHolomorphicFunctions X d U) - {y : Fin d → ℂ} (hy : y ∈ chartSectionDomain X d U z) : - chartEvaluation X d U z p - (Algebra.DeRham.mk ℂ (OpenHolomorphicFunctions X d U) p a₀ v) y = - chartGeneratorEvaluation X d U z p a₀ v y := by + fun y => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z a₀ y • + _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) fun i => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z (v i) y + +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_mk [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (a₀ : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (v : Fin p → _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) + {y : Fin d → ℂ} (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p + (_root_.OAI.Algebra.DeRham.Basic.mk ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p a₀ v) y = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation X d U z p a₀ v y := by rw [chartEvaluation_apply_of_mem X d U z p _ hy, chartEvaluationHolo_mk] rfl -private lemma chartEvaluation_mk_eqOn [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (z : ComplexPoint X) (p : ℕ) - (a₀ : OpenHolomorphicFunctions X d U) (v : Fin p → OpenHolomorphicFunctions X d U) : - Set.EqOn (chartEvaluation X d U z p - (Algebra.DeRham.mk ℂ (OpenHolomorphicFunctions X d U) p a₀ v)) - (chartGeneratorEvaluation X d U z p a₀ v) (chartSectionDomain X d U z) := - fun _ hy => chartEvaluation_mk X d U z p a₀ v hy +lemma chartEvaluation_mk_eqOn [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (a₀ : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (v : Fin p → _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) : + Set.EqOn (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p + (_root_.OAI.Algebra.DeRham.Basic.mk ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p a₀ v)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation X d U z p a₀ v) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) := + fun _ hy => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_mk X d U z p a₀ v hy /-- Exterior differentiation of `a₀ * d v₀ ∧ ⋯ ∧ d vₚ₋₁` inserts the coefficient as the first differential. -/ -private lemma extDerivWithin_chartGeneratorEvaluation +lemma extDerivWithin_chartGeneratorEvaluation [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) (p : ℕ) - (a₀ : OpenHolomorphicFunctions X d U) (v : Fin p → OpenHolomorphicFunctions X d U) - {y : Fin d → ℂ} (hy : y ∈ chartSectionDomain X d U z) : - extDerivWithin (chartGeneratorEvaluation X d U z p a₀ v) - (chartSectionDomain X d U z) y = - chartGeneratorEvaluation X d U z (p + 1) 1 (Fin.cons a₀ v) y := by - have h := extDerivWithin_smul_exactWedgeWithin (Fin d → ℂ) p - (chartSection X d U z a₀) - (fun i ↦ chartSection X d U z (v i)) - (chartSectionDomain X d U z) y - (isOpen_chartSectionDomain X d U z) hy - (chartSection_contDiffOn X d U z a₀) - (fun i ↦ chartSection_contDiffOn X d U z (v i)) - rw [show chartGeneratorEvaluation X d U z p a₀ v = - (fun w ↦ chartSection X d U z a₀ w • - exactWedgeWithin (Fin d → ℂ) p - (fun i ↦ chartSection X d U z (v i)) - (chartSectionDomain X d U z) w) from rfl] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (a₀ : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (v : Fin p → _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) + {y : Fin d → ℂ} (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + extDerivWithin (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation X d U z p a₀ v) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) y = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation X d U z (p + 1) 1 (Fin.cons a₀ v) y := by + have h := _root_.OAI.Analysis.DifferentialForms.ExactWedge.DifferentialForm.extDerivWithin_smul_exactWedgeWithin (Fin d → ℂ) p + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z a₀) + (fun i ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z (v i)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) y + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z) hy + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffOn X d U z a₀) + (fun i ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffOn X d U z (v i)) + rw [show _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation X d U z p a₀ v = + (fun w ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z a₀ w • + _root_.OAI.Analysis.DifferentialForms.ExactWedge.DifferentialForm.exactWedgeWithin (Fin d → ℂ) p + (fun i ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z (v i)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) w) from rfl] rw [h] - simp only [chartGeneratorEvaluation, chartSectionDifferential] - rw [show chartSection X d U z (1 : OpenHolomorphicFunctions X d U) y = 1 by - simp only [chartSection_apply_of_mem X d U z _ hy] + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential] + rw [show _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z (1 : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) y = 1 by + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U z _ hy] rfl, one_smul] congr 1 funext i refine Fin.cases ?_ (fun j ↦ ?_) i <;> rfl -private lemma chartGeneratorEvaluation_differentiableWithinAt +lemma chartGeneratorEvaluation_differentiableWithinAt [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) (p : ℕ) - (a₀ : OpenHolomorphicFunctions X d U) (v : Fin p → OpenHolomorphicFunctions X d U) - {y : Fin d → ℂ} (hy : y ∈ chartSectionDomain X d U z) : - DifferentiableWithinAt ℂ (chartGeneratorEvaluation X d U z p a₀ v) - (chartSectionDomain X d U z) y := by + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (a₀ : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (v : Fin p → _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) + {y : Fin d → ℂ} (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + DifferentiableWithinAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation X d U z p a₀ v) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) y := by exact DifferentiableWithinAt.smul - ((chartSection_contDiffWithinAt X d U z a₀ hy).differentiableWithinAt (by simp)) - (exactWedgeWithin_differentiableWithinAt (Fin d → ℂ) p - (fun i ↦ chartSection X d U z (v i)) - (chartSectionDomain X d U z) y - (isOpen_chartSectionDomain X d U z) hy - (fun i ↦ chartSection_contDiffOn X d U z (v i))) - -private lemma chartEvaluation_differentiableWithinAt + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffWithinAt X d U z a₀ hy).differentiableWithinAt (by simp)) + (_root_.OAI.Analysis.DifferentialForms.ExactWedge.DifferentialForm.exactWedgeWithin_differentiableWithinAt (Fin d → ℂ) p + (fun i ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z (v i)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) y + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z) hy + (fun i ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffOn X d U z (v i))) + +lemma chartEvaluation_differentiableWithinAt [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) (p : ℕ) - (θ : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) - {y : Fin d → ℂ} (hy : y ∈ chartSectionDomain X d U z) : - DifferentiableWithinAt ℂ (chartEvaluation X d U z p θ) - (chartSectionDomain X d U z) y := by - induction θ using Algebra.DeRham.mk_induction with + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (θ : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) + {y : Fin d → ℂ} (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + DifferentiableWithinAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) y := by + induction θ using _root_.OAI.Algebra.DeRham.Basic.mk_induction with | mk a₀ v => exact ((chartGeneratorEvaluation_differentiableWithinAt X d U z p a₀ v hy).congr - (fun w hw => chartEvaluation_mk X d U z p a₀ v hw) - (chartEvaluation_mk X d U z p a₀ v hy)) + (fun w hw => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_mk X d U z p a₀ v hw) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_mk X d U z p a₀ v hy)) | zero => - rw [chartEvaluation_zero] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_zero] exact differentiableWithinAt_const (c := (0 : (Fin d → ℂ) [⋀^Fin p]→L[ℂ] ℂ)) - | add a b ha hb => rw [chartEvaluation_add]; exact ha.add hb - | smul c a ha => rw [chartEvaluation_smul]; exact ha.const_smul c + | add a b ha hb => rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_add]; exact ha.add hb + | smul c a ha => rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_smul]; exact ha.const_smul c -private lemma extDerivWithin_zero {E : Type*} [NormedAddCommGroup E] [NormedSpace ℂ E] {p : ℕ} +lemma extDerivWithin_zero {E : Type*} [NormedAddCommGroup E] [NormedSpace ℂ E] {p : ℕ} (s : Set E) (x : E) : extDerivWithin (0 : E → E [⋀^Fin p]→L[ℂ] ℂ) s x = 0 := by refine ContinuousAlternatingMap.ext fun v ↦ ?_ simp [extDerivWithin, ContinuousAlternatingMap.alternatizeUncurryFin_apply, fderivWithin_zero] /-- Fixed-chart evaluation intertwines the algebraic and the analytic exterior derivative. -/ -lemma chartEvaluation_differential +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_differential [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) (p : ℕ) - (θ : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) - {y : Fin d → ℂ} (hy : y ∈ chartSectionDomain X d U z) : - chartEvaluation X d U z (p + 1) - (Algebra.DeRham.differential ℂ (OpenHolomorphicFunctions X d U) p θ) y = - extDerivWithin (chartEvaluation X d U z p θ) - (chartSectionDomain X d U z) y := by - induction θ using Algebra.DeRham.mk_induction with + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (θ : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) + {y : Fin d → ℂ} (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z (p + 1) + (_root_.OAI.Algebra.DeRham.Basic.differential ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p θ) y = + extDerivWithin (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) y := by + induction θ using _root_.OAI.Algebra.DeRham.Basic.mk_induction with | mk a₀ v => - rw [Algebra.DeRham.differential_mk, chartEvaluation_mk X d U z (p + 1) _ _ hy, + rw [_root_.OAI.Algebra.DeRham.Basic.differential_mk, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_mk X d U z (p + 1) _ _ hy, extDerivWithin_congr' (chartEvaluation_mk_eqOn X d U z p a₀ v) hy, extDerivWithin_chartGeneratorEvaluation X d U z p a₀ v hy] | zero => simp [extDerivWithin_zero] | add a b ha hb => - rw [map_add, chartEvaluation_add, chartEvaluation_add, Pi.add_apply, ha, hb, - extDerivWithin_add ((isOpen_chartSectionDomain X d U z).uniqueDiffWithinAt hy) + rw [map_add, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_add, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_add, Pi.add_apply, ha, hb, + extDerivWithin_add ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z).uniqueDiffWithinAt hy) (chartEvaluation_differentiableWithinAt X d U z p a hy) (chartEvaluation_differentiableWithinAt X d U z p b hy)] | smul c a ha => - rw [map_smul, chartEvaluation_smul, chartEvaluation_smul, Pi.smul_apply, ha, + rw [map_smul, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_smul, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_smul, Pi.smul_apply, ha, extDerivWithin_smul c _ - ((isOpen_chartSectionDomain X d U z).uniqueDiffWithinAt hy)] + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z).uniqueDiffWithinAt hy)] /-- Let `X` be a smooth complex scheme of dimension `d`, `U ⊆ X(ℂ)` open, and `e` the chosen chart at `z`. Its coordinate domain over `U` is `D = {y ∈ e.target | e.symm y ∈ U}`. For a natural number `p` and a coordinate point `y`, this complex linear map evaluates an algebraic Kähler `p`-form of `𝒪(U)` at `y` using coordinate derivatives, producing an alternating continuous `p`-linear form on `ℂ^d`. Its value is zero off `D`. -/ -def chartEvaluationAt [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) (p : ℕ) (y : Fin d → ℂ) : - Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p →ₗ[ℂ] +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationAt [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) (y : Fin d → ℂ) : + _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p →ₗ[ℂ] (Fin d → ℂ) [⋀^Fin p]→L[ℂ] ℂ := - (LinearMap.proj y).comp (chartEvaluation X d U z p) + (LinearMap.proj y).comp (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p) /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. For an analytic open `U`, this is the complex subspace of algebraic Kähler `p`-forms of `𝒪(U)` whose evaluations by coordinate derivatives vanish at every point in every chosen analytic chart. These are the relations imposed to obtain analytic differential forms. -/ -def chartEvaluationKernel [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (p : ℕ) : - Submodule ℂ (Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) := - ⨅ (z : ComplexPoint X), ⨅ (y : Fin d → ℂ), - ⨅ (_ : y ∈ chartSectionDomain X d U z), - LinearMap.ker (chartEvaluationAt X d U z p y) - -lemma mem_chartEvaluationKernel_iff [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (p : ℕ) - (θ : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) : - θ ∈ chartEvaluationKernel X d U p ↔ - ∀ z y, y ∈ chartSectionDomain X d U z → - chartEvaluation X d U z p θ y = 0 := by - simp [chartEvaluationKernel, Submodule.mem_iInf, LinearMap.mem_ker, chartEvaluationAt] +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (p : ℕ) : + Submodule ℂ (_root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) := + ⨅ (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X), ⨅ (y : Fin d → ℂ), + ⨅ (_ : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z), + LinearMap.ker (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationAt X d U z p y) + +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_chartEvaluationKernel_iff [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (p : ℕ) + (θ : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) : + θ ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U p ↔ + ∀ z y, y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z → + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ y = 0 := by + simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel, Submodule.mem_iInf, LinearMap.mem_ker, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationAt] /-- Coordinate-zero identities remain coordinate-zero after exterior differentiation. -/ -lemma differential_mem_chartEvaluationKernel +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.differential_mem_chartEvaluationKernel [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (p : ℕ) - {θ : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p} - (hθ : θ ∈ chartEvaluationKernel X d U p) : - Algebra.DeRham.differential ℂ (OpenHolomorphicFunctions X d U) p θ ∈ - chartEvaluationKernel X d U (p + 1) := by - have hθ' := (mem_chartEvaluationKernel_iff X d U p θ).1 hθ - refine (mem_chartEvaluationKernel_iff X d U (p + 1) _).2 fun z y hy ↦ ?_ - have hEq : Set.EqOn (chartEvaluation X d U z p θ) 0 - (chartSectionDomain X d U z) := fun w hw ↦ hθ' z w hw - rw [chartEvaluation_differential X d U z p θ hy, extDerivWithin_congr' hEq hy, + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (p : ℕ) + {θ : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p} + (hθ : θ ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U p) : + _root_.OAI.Algebra.DeRham.Basic.differential ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p θ ∈ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U (p + 1) := by + have hθ' := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_chartEvaluationKernel_iff X d U p θ).1 hθ + refine (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_chartEvaluationKernel_iff X d U (p + 1) _).2 fun z y hy ↦ ?_ + have hEq : Set.EqOn (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ) 0 + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) := fun w hw ↦ hθ' z w hw + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_differential X d U z p θ hy, extDerivWithin_congr' hEq hy, extDerivWithin_zero] /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. For analytic opens `V ⊆ U` and a natural number `p`, restriction `𝒪(U) → 𝒪(V)` induces this map on algebraic Kähler `p`-forms, sending `a₀ da₁ ∧ ⋯ ∧ daₚ` to the form obtained by restricting each function to `V`. -/ -def formRestriction [SmoothOfRelativeDimension d X.hom] - {U V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} (i : U ⟶ V) (p : ℕ) : - Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p →ₗ[ℂ] - Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d V) p := - Algebra.DeRham.map ℂ (holomorphicRestrictionAlgHom X d i) p - -@[simp] lemma formRestriction_id [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (p : ℕ) : - formRestriction X d (𝟙 U) p = LinearMap.id := by - rw [formRestriction, holomorphicRestrictionAlgHom_id, Algebra.DeRham.map_id] - -@[simp] lemma formRestriction_comp [SmoothOfRelativeDimension d X.hom] - {U V W : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction [SmoothOfRelativeDimension d X.hom] + {U V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) (p : ℕ) : + _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p →ₗ[ℂ] + _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d V) p := + _root_.OAI.Algebra.DeRham.Basic.map ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom X d i) p + +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_id [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (p : ℕ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d (𝟙 U) p = LinearMap.id := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom_id, _root_.OAI.Algebra.DeRham.Basic.map_id] + +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_comp [SmoothOfRelativeDimension d X.hom] + {U V W : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) (j : V ⟶ W) (p : ℕ) : - formRestriction X d (i ≫ j) p = - (formRestriction X d j p).comp (formRestriction X d i p) := by - rw [formRestriction, formRestriction, formRestriction, - holomorphicRestrictionAlgHom_comp, Algebra.DeRham.map_comp] - -@[simp] lemma formRestriction_mk [SmoothOfRelativeDimension d X.hom] - {U V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} (i : U ⟶ V) (p : ℕ) - (a₀ : OpenHolomorphicFunctions X d U) (v : Fin p → OpenHolomorphicFunctions X d U) : - formRestriction X d i p (Algebra.DeRham.mk ℂ (OpenHolomorphicFunctions X d U) p a₀ v) = - Algebra.DeRham.mk ℂ (OpenHolomorphicFunctions X d V) p - (holomorphicRestrictionAlgHom X d i a₀) - fun k => holomorphicRestrictionAlgHom X d i (v k) := - Algebra.DeRham.map_mk ℂ (holomorphicRestrictionAlgHom X d i) p a₀ v + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d (i ≫ j) p = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d j p).comp (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d i p) := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom_comp, _root_.OAI.Algebra.DeRham.Basic.map_comp] + +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_mk [SmoothOfRelativeDimension d X.hom] + {U V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) (p : ℕ) + (a₀ : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (v : Fin p → _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d i p (_root_.OAI.Algebra.DeRham.Basic.mk ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p a₀ v) = + _root_.OAI.Algebra.DeRham.Basic.mk ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d V) p + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom X d i a₀) + fun k => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom X d i (v k) := + _root_.OAI.Algebra.DeRham.Basic.map_mk ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom X d i) p a₀ v /-- Fixed-chart values of holomorphic functions commute with restriction. -/ -lemma chartSection_holomorphicRestrictionAlgHom +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_holomorphicRestrictionAlgHom [SmoothOfRelativeDimension d X.hom] - {U V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} (i : U ⟶ V) - (z : ComplexPoint X) - (f : OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} - (hy : y ∈ chartSectionDomain X d V z) : - chartSection X d V z (holomorphicRestrictionAlgHom X d i f) y = - chartSection X d U z f y := by - have hyU : y ∈ chartSectionDomain X d U z := + {U V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} + (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d V z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d V z (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom X d i f) y = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f y := by + have hyU : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z := ⟨hy.1, leOfHom i.unop hy.2⟩ - rw [chartSection_apply_of_mem X d V z _ hy, - chartSection_apply_of_mem X d U z _ hyU] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d V z _ hy, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U z _ hyU] rfl /-- Fixed-chart derivatives of holomorphic functions commute with restriction. -/ -lemma chartSectionDifferential_holomorphicRestrictionAlgHom +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_holomorphicRestrictionAlgHom [SmoothOfRelativeDimension d X.hom] - {U V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} (i : U ⟶ V) - (z : ComplexPoint X) - (f : OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} - (hy : y ∈ chartSectionDomain X d V z) : - chartSectionDifferential X d V z - (holomorphicRestrictionAlgHom X d i f) y = - chartSectionDifferential X d U z f y := by - have hyU : y ∈ chartSectionDomain X d U z := + {U V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} + (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d V z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d V z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom X d i f) y = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z f y := by + have hyU : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z := ⟨hy.1, leOfHom i.unop hy.2⟩ have heq : Filter.EventuallyEq (nhds y) - (chartSection X d V z - (holomorphicRestrictionAlgHom X d i f)) - (chartSection X d U z f) := by - filter_upwards [(isOpen_chartSectionDomain X d V z).mem_nhds hy] with w hw - exact chartSection_holomorphicRestrictionAlgHom X d i z f hw - rw [chartSectionDifferential, chartSectionDifferential, - fderivWithin_of_isOpen (isOpen_chartSectionDomain X d V z) hy, - fderivWithin_of_isOpen (isOpen_chartSectionDomain X d U z) hyU] + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d V z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom X d i f)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f) := by + filter_upwards [(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d V z).mem_nhds hy] with w hw + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_holomorphicRestrictionAlgHom X d i z f hw + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential, + fderivWithin_of_isOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d V z) hy, + fderivWithin_of_isOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z) hyU] exact heq.fderiv_eq /-- Fixed-chart evaluation of a differential form commutes with restriction. -/ -lemma chartEvaluation_formRestriction +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_formRestriction [SmoothOfRelativeDimension d X.hom] - {U V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} (i : U ⟶ V) - (z : ComplexPoint X) (p : ℕ) - (θ : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) - {y : Fin d → ℂ} (hy : y ∈ chartSectionDomain X d V z) : - chartEvaluation X d V z p (formRestriction X d i p θ) y = - chartEvaluation X d U z p θ y := by - have hyU : y ∈ chartSectionDomain X d U z := ⟨hy.1, leOfHom i.unop hy.2⟩ - induction θ using Algebra.DeRham.mk_induction with + {U V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (θ : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) + {y : Fin d → ℂ} (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d V z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d V z p (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d i p θ) y = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ y := by + have hyU : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z := ⟨hy.1, leOfHom i.unop hy.2⟩ + induction θ using _root_.OAI.Algebra.DeRham.Basic.mk_induction with | mk a₀ v => - rw [formRestriction_mk, chartEvaluation_mk X d V z p _ _ hy, - chartEvaluation_mk X d U z p a₀ v hyU] - simp only [chartGeneratorEvaluation] - rw [chartSection_holomorphicRestrictionAlgHom X d i z a₀ hy] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_mk, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_mk X d V z p _ _ hy, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_mk X d U z p a₀ v hyU] + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_holomorphicRestrictionAlgHom X d i z a₀ hy] have hd : - (fun j ↦ chartSectionDifferential X d V z - (holomorphicRestrictionAlgHom X d i (v j)) y) = - (fun j ↦ chartSectionDifferential X d U z (v j) y) := by + (fun j ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d V z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom X d i (v j)) y) = + (fun j ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z (v j) y) := by funext j - exact chartSectionDifferential_holomorphicRestrictionAlgHom X d i z (v j) hy + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_holomorphicRestrictionAlgHom X d i z (v j) hy rw [hd] | zero => simp | add a b ha hb => simp [ha, hb] | smul c a ha => simp [ha] /-- Restriction preserves forms that vanish in every chart. -/ -lemma formRestriction_mem_chartEvaluationKernel +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_mem_chartEvaluationKernel [SmoothOfRelativeDimension d X.hom] - {U V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} (i : U ⟶ V) (p : ℕ) - {θ : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p} - (hθ : θ ∈ chartEvaluationKernel X d U p) : - formRestriction X d i p θ ∈ chartEvaluationKernel X d V p := by - refine (mem_chartEvaluationKernel_iff X d V p _).2 fun z y hy ↦ ?_ - rw [chartEvaluation_formRestriction X d i z p θ hy] - exact (mem_chartEvaluationKernel_iff X d U p θ).1 hθ z y + {U V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) (p : ℕ) + {θ : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p} + (hθ : θ ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U p) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d i p θ ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d V p := by + refine (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_chartEvaluationKernel_iff X d V p _).2 fun z y hy ↦ ?_ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_formRestriction X d i z p θ hy] + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_chartEvaluationKernel_iff X d U p θ).1 hθ z y ⟨hy.1, leOfHom i.unop hy.2⟩ /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. For an analytic open `U` and a natural number `p`, holomorphic `p`-forms are defined as `⋀^p_{𝒪(U)} Ω_{𝒪(U)/ℂ}` modulo the forms whose evaluations by coordinate derivatives vanish everywhere in every chosen chart. Here `𝒪(U)` is the algebra of holomorphic functions on `U`. -/ -abbrev HolomorphicForm [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (p : ℕ) := - Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p ⧸ - chartEvaluationKernel X d U p +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (p : ℕ) := + _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p ⧸ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U p /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. For an analytic open `U`, this complex linear map sends `c ∈ ℂ` to the zero-form represented by the constant holomorphic function `c` in the quotient of algebraic forms by those vanishing in all charts. -/ -def holomorphicFormOfConstant [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) : - ℂ →ₗ[ℂ] HolomorphicForm X d U 0 := - (chartEvaluationKernel X d U 0).mkQ.comp - (Algebra.DeRham.ofConstant ℂ (OpenHolomorphicFunctions X d U)) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormOfConstant [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) : + ℂ →ₗ[ℂ] _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d U 0 := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U 0).mkQ.comp + (_root_.OAI.Algebra.DeRham.Basic.ofConstant ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U)) /-- Let `X` be a smooth complex scheme of dimension `d` and `U` an analytic open in `X(ℂ)`. This complex linear exterior derivative sends holomorphic `p`-forms to `(p+1)`-forms. It descends the Kähler exterior derivative to the quotient by forms whose coordinate derivative evaluations vanish everywhere. -/ -def holomorphicFormDifferential [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (p : ℕ) : - HolomorphicForm X d U p →ₗ[ℂ] HolomorphicForm X d U (p + 1) := - (chartEvaluationKernel X d U p).liftQ - ((chartEvaluationKernel X d U (p + 1)).mkQ.comp - (Algebra.DeRham.differential ℂ (OpenHolomorphicFunctions X d U) p)) (by +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (p : ℕ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d U p →ₗ[ℂ] _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d U (p + 1) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U p).liftQ + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U (p + 1)).mkQ.comp + (_root_.OAI.Algebra.DeRham.Basic.differential ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p)) (by intro θ hθ rw [LinearMap.mem_ker, LinearMap.comp_apply, Submodule.mkQ_apply, Submodule.Quotient.mk_eq_zero] - exact differential_mem_chartEvaluationKernel X d U p hθ) + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.differential_mem_chartEvaluationKernel X d U p hθ) /-- Let `X` be a smooth complex scheme of dimension `d` and `V ⊆ U` analytic opens. This complex linear map restricts holomorphic `p`-forms from `U` to `V`, by restricting their coefficient functions and passing to the quotient by forms whose coordinate evaluations vanish. -/ -def holomorphicFormRestriction [SmoothOfRelativeDimension d X.hom] - {U V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} (i : U ⟶ V) (p : ℕ) : - HolomorphicForm X d U p →ₗ[ℂ] HolomorphicForm X d V p := - (chartEvaluationKernel X d U p).liftQ - ((chartEvaluationKernel X d V p).mkQ.comp (formRestriction X d i p)) (by +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction [SmoothOfRelativeDimension d X.hom] + {U V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) (p : ℕ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d U p →ₗ[ℂ] _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d V p := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U p).liftQ + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d V p).mkQ.comp (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d i p)) (by intro θ hθ rw [LinearMap.mem_ker, LinearMap.comp_apply, Submodule.mkQ_apply, Submodule.Quotient.mk_eq_zero] - exact formRestriction_mem_chartEvaluationKernel X d i p hθ) + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_mem_chartEvaluationKernel X d i p hθ) -@[simp] lemma holomorphicFormRestriction_ofConstant +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction_ofConstant [SmoothOfRelativeDimension d X.hom] - {U V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} (i : U ⟶ V) (c : ℂ) : - holomorphicFormRestriction X d i 0 - (holomorphicFormOfConstant X d U c) = - holomorphicFormOfConstant X d V c := by + {U V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) (c : ℂ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d i 0 + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormOfConstant X d U c) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormOfConstant X d V c := by change Submodule.Quotient.mk - (formRestriction X d i 0 (Algebra.DeRham.ofConstant ℂ _ c)) = _ - rw [formRestriction, Algebra.DeRham.map_ofConstant] + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d i 0 (_root_.OAI.Algebra.DeRham.Basic.ofConstant ℂ _ c)) = _ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction, _root_.OAI.Algebra.DeRham.Basic.map_ofConstant] rfl -@[simp] lemma holomorphicFormDifferential_ofConstant +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential_ofConstant [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (c : ℂ) : - holomorphicFormDifferential X d U 0 - (holomorphicFormOfConstant X d U c) = 0 := by + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (c : ℂ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential X d U 0 + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormOfConstant X d U c) = 0 := by change Submodule.Quotient.mk - (Algebra.DeRham.differential ℂ _ 0 (Algebra.DeRham.ofConstant ℂ _ c)) = 0 - rw [Algebra.DeRham.differential_ofConstant] + (_root_.OAI.Algebra.DeRham.Basic.differential ℂ _ 0 (_root_.OAI.Algebra.DeRham.Basic.ofConstant ℂ _ c)) = 0 + rw [_root_.OAI.Algebra.DeRham.Basic.differential_ofConstant] exact Submodule.Quotient.mk_zero _ -@[simp] lemma holomorphicFormRestriction_id [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (p : ℕ) : - holomorphicFormRestriction X d (𝟙 U) p = LinearMap.id := by +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction_id [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (p : ℕ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d (𝟙 U) p = LinearMap.id := by apply LinearMap.ext intro θ - obtain ⟨θ, rfl⟩ := Submodule.mkQ_surjective (chartEvaluationKernel X d U p) θ - change Submodule.Quotient.mk (formRestriction X d (𝟙 U) p θ) = _ - rw [formRestriction_id] + obtain ⟨θ, rfl⟩ := Submodule.mkQ_surjective (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U p) θ + change Submodule.Quotient.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d (𝟙 U) p θ) = _ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_id] rfl -@[simp] lemma holomorphicFormRestriction_comp [SmoothOfRelativeDimension d X.hom] - {U V W : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction_comp [SmoothOfRelativeDimension d X.hom] + {U V W : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) (j : V ⟶ W) (p : ℕ) : - holomorphicFormRestriction X d (i ≫ j) p = - (holomorphicFormRestriction X d j p).comp - (holomorphicFormRestriction X d i p) := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d (i ≫ j) p = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d j p).comp + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d i p) := by apply LinearMap.ext intro θ - obtain ⟨θ, rfl⟩ := Submodule.mkQ_surjective (chartEvaluationKernel X d U p) θ - change Submodule.Quotient.mk (formRestriction X d (i ≫ j) p θ) = _ - rw [formRestriction_comp] + obtain ⟨θ, rfl⟩ := Submodule.mkQ_surjective (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U p) θ + change Submodule.Quotient.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d (i ≫ j) p θ) = _ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_comp] rfl -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Hodge.AnalyticDifferentialForms diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Hodge/Filtration.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Hodge/Filtration.lean index 96a97fa14a..afa9523d26 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Hodge/Filtration.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Hodge/Filtration.lean @@ -12,25 +12,32 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.Algebra.FieldToComplex -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.HolomorphicDeRham -public import HodgeConjecture.Lemmas.LinearAlgebra.HodgeStructure -public import HodgeConjecture.Mathlib.Algebra.Homology.MapExtend -public import HodgeConjecture.Mathlib.Algebra.Homology.StupidTruncation -public import Mathlib.Algebra.Homology.DerivedCategory.Basic -public import Mathlib.Algebra.Homology.Embedding.CochainComplex -public import Mathlib.Algebra.Module.MinimalAxioms -public import Mathlib.CategoryTheory.Localization.SmallShiftedHom -public import Mathlib.CategoryTheory.Sites.SheafCohomology.Basic -public import Mathlib.Data.Int.Cast.Lemmas +import HodgeConjecture.Lemmas.Algebra.FieldToComplex +import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.HolomorphicDeRham +import HodgeConjecture.Lemmas.LinearAlgebra.HodgeStructure +import HodgeConjecture.Mathlib.Algebra.Homology.MapExtend +import HodgeConjecture.Mathlib.Algebra.Homology.StupidTruncation +import Mathlib.Algebra.Homology.DerivedCategory.Basic +import Mathlib.Algebra.Homology.Embedding.CochainComplex +import Mathlib.Algebra.Module.MinimalAxioms +import Mathlib.CategoryTheory.Localization.SmallShiftedHom +import Mathlib.CategoryTheory.Sites.SheafCohomology.Basic +import Mathlib.Data.Int.Cast.Lemmas import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.Hodge.Filtration + +open scoped OAI.AlgebraicGeometry.Hodge.HolomorphicDeRham.ComplexPoint + +open _root_.AlgebraicGeometry + /-! # The Hodge filtration @@ -45,246 +52,288 @@ the full complex. Its image on hypercohomology is the Hodge filtration `F^p`. A class is then a rational class whose de Rham image belongs to `F^p`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace open scoped TensorProduct -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (K : Type) [Field K] [Algebra K ℂ] variable (X : Over (Spec ↧ℂ)) -set_option linter.auxLemma false /- Sheaves on a space are sheaves on its site of opens; the category instance is looked up under that spelling by Mathlib's sheaf cohomology. -/ -attribute [local implicit_reducible] TopCat.Sheaf TopCat.instCategorySheaf._aux_1 - TopCat.instCategorySheaf._aux_3 TopCat.instCategorySheaf._aux_5 +attribute [local implicit_reducible] TopCat.Sheaf TopCat.instCategorySheaf + +def siteSheafHom {Y : TopCat} {F G : TopCat.Sheaf AddCommGrpCat Y} (f : F ⟶ G) : + (show CategoryTheory.Sheaf (Opens.grothendieckTopology Y) AddCommGrpCat from F) ⟶ + (show CategoryTheory.Sheaf (Opens.grothendieckTopology Y) AddCommGrpCat from G) := + f + +lemma siteSheafHom_comp {Y : TopCat} {F G H : TopCat.Sheaf AddCommGrpCat Y} + (f : F ⟶ G) (g : G ⟶ H) : + siteSheafHom (f ≫ g) = siteSheafHom f ≫ siteSheafHom g := by + rfl + +lemma siteSheafHom_id {Y : TopCat} {F : TopCat.Sheaf AddCommGrpCat Y} : + siteSheafHom (𝟙 F) = + 𝟙 (show CategoryTheory.Sheaf (Opens.grothendieckTopology Y) AddCommGrpCat from F) := by + rfl /-- Let `X` be a scheme over `ℂ`, and give `X(ℂ)` its analytic topology. This is the category of sheaves of abelian groups on `X(ℂ)`. -/ -abbrev AnalyticAdditiveSheaf := - TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X)) +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf := + TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) -local instance analyticHasDerivedCategory : - HasDerivedCategory (AnalyticAdditiveSheaf X) := - HasDerivedCategory.standard (AnalyticAdditiveSheaf X) +local instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticHasDerivedCategory : + HasDerivedCategory (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) := + HasDerivedCategory.standard (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) /-- Let `K` be a field with a specified embedding into `ℂ`, and let `X` be a scheme over `ℂ`. This morphism of constant sheaves on the analytic space `X(ℂ)` sends a locally constant `K`-valued function to the same function with values in `ℂ`. -/ -abbrev fieldToComplexConstantSheaf : - 𝓒(↧(ComplexPoint X); K) ⟶ 𝓒(↧(ComplexPoint X); ℂ) := - (TopCat.Sheaf.constantFunctor ↧(ComplexPoint X)).map +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheaf : + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); K) ⟶ 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) := + (_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor ↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)).map (AddCommGrpCat.ofHom (algebraMap K ℂ).toAddMonoidHom) /-- Let `K` be a field and `X` a scheme over `ℂ`. This integer-indexed complex on the analytic space `X(ℂ)` has the constant sheaf `K` in degree zero, zero sheaves in all other degrees, and zero differentials. -/ @[implicit_reducible] -def constantFieldSheafComplexInt : - CochainComplex (AnalyticAdditiveSheaf X) ℤ := - ((CochainComplex.single₀ (AnalyticAdditiveSheaf X)).obj - 𝓒(↧(ComplexPoint X); K)).extend ComplexShape.embeddingUpNat +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt : + CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ := + ((CochainComplex.single₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X)).obj + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); K)).extend ComplexShape.embeddingUpNat -instance : (constantFieldSheafComplexInt K X).IsStrictlyGE 0 := by - unfold constantFieldSheafComplexInt +instance : (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt K X).IsStrictlyGE 0 := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt infer_instance /-- Let `K` be a field with a specified embedding into `ℂ`, and let `X` be a scheme over `ℂ`. This map of integer-indexed complexes applies `K → ℂ` to the constant sheaves in degree zero. Both complexes are zero in every other degree. -/ -def fieldToComplexConstantSheafComplexInt : - constantFieldSheafComplexInt K X ⟶ - constantComplexSheafComplexInt X := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheafComplexInt : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt K X ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantComplexSheafComplexInt X := HomologicalComplex.extendMap - ((CochainComplex.single₀ (AnalyticAdditiveSheaf X)).map - (fieldToComplexConstantSheaf K X)) ComplexShape.embeddingUpNat + ((CochainComplex.single₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X)).map + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheaf K X)) ComplexShape.embeddingUpNat /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. For a field `K` embedded in `ℂ`, this map `K[0] → Ω^•` sends locally constant `K`-valued functions to holomorphic zero-forms via the embedding. Here `Ω^•` is the complex of sheaves of holomorphic differential forms with exterior derivative. -/ -def fieldToHolomorphicDeRhamComplexInt [IsIntegral X.left] [Smooth X.hom] : - constantFieldSheafComplexInt K X ⟶ Ω•(X) := - fieldToComplexConstantSheafComplexInt K X ≫ - constantsToHolomorphicDeRhamComplexInt X +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToHolomorphicDeRhamComplexInt [IsIntegral X.left] [Smooth X.hom] : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt K X ⟶ Ω•(X) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheafComplexInt K X ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt X /-- Let `X` be a scheme over `ℂ`, and give `X(ℂ)` its analytic topology. This integer-indexed complex has the constant integer sheaf in degree zero and zero sheaves in all other degrees, with zero differentials. -/ @[implicit_reducible] -def constantIntegerSheafComplexInt : - CochainComplex (AnalyticAdditiveSheaf X) ℤ := - ((CochainComplex.single₀ (AnalyticAdditiveSheaf X)).obj - 𝓒(↧(ComplexPoint X); ℤ)).extend ComplexShape.embeddingUpNat +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantIntegerSheafComplexInt : + CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ := + ((CochainComplex.single₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X)).obj + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℤ)).extend ComplexShape.embeddingUpNat /-- Let `K` be a field, `X` a scheme over `ℂ`, and `q ∈ K`. This endomorphism of the constant sheaf `K` on the analytic space `X(ℂ)` multiplies each locally constant function by `q`. -/ -abbrev fieldScalarSheaf (q : K) : - 𝓒(↧(ComplexPoint X); K) ⟶ 𝓒(↧(ComplexPoint X); K) := - (TopCat.Sheaf.constantFunctor ↧(ComplexPoint X)).map +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf (q : K) : + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); K) ⟶ 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); K) := + (_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor ↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)).map (AddCommGrpCat.ofHom (AddMonoidHom.mulLeft q)) omit [Algebra K ℂ] in -@[simp] lemma fieldScalarSheaf_one : fieldScalarSheaf K X 1 = 𝟙 _ := by +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf_one : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X 1 = 𝟙 _ := by have h : AddCommGrpCat.ofHom (AddMonoidHom.id K) = 𝟙 (AddCommGrpCat.of K) := by apply AddCommGrpCat.hom_ext rfl - change (TopCat.Sheaf.constantFunctor ↧(ComplexPoint X)).map + change (_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor ↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)).map (AddCommGrpCat.ofHom (AddMonoidHom.mulLeft 1)) = - 𝟙 𝓒(↧(ComplexPoint X); K) - rw [AddMonoidHom.mulLeft_one, h] - exact (TopCat.Sheaf.constantFunctor ↧(ComplexPoint X)).map_id (AddCommGrpCat.of K) + 𝟙 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); K) + rw [_root_.OAI.Algebra.Ring.Basic.AddMonoidHom.mulLeft_one, h] + exact (_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor ↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)).map_id (AddCommGrpCat.of K) omit [Algebra K ℂ] in -@[simp] lemma fieldScalarSheaf_add (a b : K) : - fieldScalarSheaf K X (a + b) = - fieldScalarSheaf K X a + fieldScalarSheaf K X b := by +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf_add (a b : K) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X (a + b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X a + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X b := by have h : AddCommGrpCat.ofHom (AddMonoidHom.mulLeft a + AddMonoidHom.mulLeft b) = AddCommGrpCat.ofHom (AddMonoidHom.mulLeft a) + AddCommGrpCat.ofHom (AddMonoidHom.mulLeft b) := AddCommGrpCat.hom_ext rfl - change (TopCat.Sheaf.constantFunctor ↧(ComplexPoint X)).map + change (_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor ↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)).map (AddCommGrpCat.ofHom (AddMonoidHom.mulLeft (a + b))) = _ - rw [AddMonoidHom.mulLeft_add, h, Functor.map_add] + rw [_root_.OAI.Algebra.Ring.Basic.AddMonoidHom.mulLeft_add, h, Functor.map_add] rfl omit [Algebra K ℂ] in -@[simp] lemma fieldScalarSheaf_mul (a b : K) : - fieldScalarSheaf K X (a * b) = - fieldScalarSheaf K X b ≫ fieldScalarSheaf K X a := by +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf_mul (a b : K) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X (a * b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X b ≫ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X a := by have h : AddCommGrpCat.ofHom ((AddMonoidHom.mulLeft a).comp (AddMonoidHom.mulLeft b)) = AddCommGrpCat.ofHom (AddMonoidHom.mulLeft b) ≫ AddCommGrpCat.ofHom (AddMonoidHom.mulLeft a) := AddCommGrpCat.hom_ext rfl - change (TopCat.Sheaf.constantFunctor ↧(ComplexPoint X)).map + change (_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor ↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)).map (AddCommGrpCat.ofHom (AddMonoidHom.mulLeft (a * b))) = _ - rw [AddMonoidHom.mulLeft_mul, h, Functor.map_comp] + rw [_root_.OAI.Algebra.Ring.Basic.AddMonoidHom.mulLeft_mul, h, Functor.map_comp] + rfl /-- Multiplying by `q` in `K` before including into `ℂ` agrees with including first and then multiplying by `algebraMap K ℂ q`. -/ -private lemma ofHom_algebraMap_comp_complexScalarSMul (q : K) : - AddCommGrpCat.ofHom (algebraMap K ℂ).toAddMonoidHom ≫ +lemma ofHom_algebraMap_comp_complexScalarSMul (q : K) : + AddCommGrpCat.ofHom ↑(algebraMap K ℂ) ≫ AddCommGrpCat.ofHom (DistribSMul.toAddMonoidHom ℂ (algebraMap K ℂ q)) = AddCommGrpCat.ofHom (AddMonoidHom.mulLeft q) ≫ - AddCommGrpCat.ofHom (@AddMonoidHomClass.toAddMonoidHom K ℂ (K →+* ℂ) Field.toSemifield.toNonAssocSemiring.toAddCommMonoidWithOne.toAddZeroClass.toAddZero - Complex.instSemiring.toNonAssocSemiring.toAddCommMonoidWithOne.toAddZeroClass.toAddZero RingHom.instFunLike _ - (algebraMap K ℂ)) := by + AddCommGrpCat.ofHom ↑(algebraMap K ℂ) := by ext r simp [map_mul] /-- The constant-presheaf map induced by the inclusion `K → ℂ`, followed by scalar multiplication by `algebraMap K ℂ q` on the constant complex presheaf, is the constant-presheaf map induced by the composite additive map. -/ -private lemma const_map_algebraMap_comp_complexScalarPresheaf (q : K) : (Functor.const (Opens (ComplexPoint X))ᵒᵖ).map (AddCommGrpCat.ofHom ↑(algebraMap K ℂ)) ≫ - complexScalarPresheaf X ((algebraMap K ℂ) q) = - (Functor.const (Opens (ComplexPoint X))ᵒᵖ).map +lemma const_map_algebraMap_comp_complexScalarPresheaf (q : K) : (Functor.const (Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))ᵒᵖ).map (AddCommGrpCat.ofHom ↑(algebraMap K ℂ)) ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarPresheaf X ((algebraMap K ℂ) q) = + (Functor.const (Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))ᵒᵖ).map (AddCommGrpCat.ofHom (algebraMap K ℂ : K →+ ℂ) ≫ AddCommGrpCat.ofHom (DistribSMul.toAddMonoidHom ℂ ((algebraMap K ℂ) q))) := rfl /-- The inclusion of `K`-valued constants into complex constants commutes with scalar multiplication. -/ -private lemma fieldToComplexConstantSheaf_scalar (q : K) : - fieldToComplexConstantSheaf K X ≫ - complexScalarSheaf X (algebraMap K ℂ q) = - fieldScalarSheaf K X q ≫ - fieldToComplexConstantSheaf K X := by - simp [fieldToComplexConstantSheaf, fieldScalarSheaf, complexScalarSheaf, constantSheaf, - TopCat.Sheaf.const, TopCat.Sheaf.constantFunctor, ← Functor.map_comp, - ← ofHom_algebraMap_comp_complexScalarSMul, - const_map_algebraMap_comp_complexScalarPresheaf] +lemma fieldToComplexConstantSheaf_scalar (q : K) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheaf K X ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarSheaf X (algebraMap K ℂ q) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X q ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheaf K X := by + change siteSheafHom + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheaf K X ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarSheaf X (algebraMap K ℂ q)) = + siteSheafHom + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X q ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheaf K X) + rw [siteSheafHom_comp, siteSheafHom_comp] + simp only [siteSheafHom, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheaf, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarSheaf, + constantSheaf, _root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.const, + _root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor] + let sheafify := presheafToSheaf + (Opens.grothendieckTopology (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + AddCommGrpCat + let constantPresheaf : + AddCommGrpCat ⥤ + (Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))ᵒᵖ ⥤ + AddCommGrpCat := + Functor.const (Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))ᵒᵖ + change sheafify.map + (constantPresheaf.map (AddCommGrpCat.ofHom ↑(algebraMap K ℂ))) ≫ + sheafify.map + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarPresheaf X + (algebraMap K ℂ q)) = + sheafify.map (constantPresheaf.map (AddCommGrpCat.ofHom (AddMonoidHom.mulLeft q))) ≫ + sheafify.map + (constantPresheaf.map (AddCommGrpCat.ofHom ↑(algebraMap K ℂ))) + rw [← sheafify.map_comp, + const_map_algebraMap_comp_complexScalarPresheaf, + ← sheafify.map_comp, ← constantPresheaf.map_comp, + ofHom_algebraMap_comp_complexScalarSMul] /-- Let `K` be a field, `X` a scheme over `ℂ`, and `q ∈ K`. This endomorphism of the integer-indexed complex `K[0]` on the analytic space `X(ℂ)` multiplies its degree-zero constant sheaf by `q`. -/ -def fieldScalarComplex (q : K) : - constantFieldSheafComplexInt K X ⟶ - constantFieldSheafComplexInt K X := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex (q : K) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt K X ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt K X := HomologicalComplex.extendMap - ((CochainComplex.single₀ (AnalyticAdditiveSheaf X)).map - (fieldScalarSheaf K X q)) ComplexShape.embeddingUpNat + ((CochainComplex.single₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X)).map + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X q)) ComplexShape.embeddingUpNat omit [Algebra K ℂ] in -@[simp] lemma fieldScalarComplex_one : fieldScalarComplex K X 1 = 𝟙 _ := by - unfold fieldScalarComplex constantFieldSheafComplexInt - rw [fieldScalarSheaf_one, (CochainComplex.single₀ (AnalyticAdditiveSheaf X)).map_id, +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex_one : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex K X 1 = 𝟙 _ := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf_one, (CochainComplex.single₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X)).map_id, HomologicalComplex.extendMap_id] omit [Algebra K ℂ] in -@[simp] lemma fieldScalarComplex_add (a b : K) : - fieldScalarComplex K X (a + b) = - fieldScalarComplex K X a + fieldScalarComplex K X b := by - unfold fieldScalarComplex - rw [fieldScalarSheaf_add, Functor.map_add, HomologicalComplex.extendMap_add] +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex_add (a b : K) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex K X (a + b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex K X a + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex K X b := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf_add, Functor.map_add, HomologicalComplex.extendMap_add] omit [Algebra K ℂ] in -@[simp] lemma fieldScalarComplex_mul (a b : K) : - fieldScalarComplex K X (a * b) = - fieldScalarComplex K X b ≫ fieldScalarComplex K X a := by - unfold fieldScalarComplex - rw [fieldScalarSheaf_mul, Functor.map_comp, HomologicalComplex.extendMap_comp] +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex_mul (a b : K) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex K X (a * b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex K X b ≫ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex K X a := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf_mul, Functor.map_comp, HomologicalComplex.extendMap_comp] /-- The integer-indexed inclusion of `K`-valued constants into complex constants commutes with scalar multiplication. -/ -private lemma fieldToComplexConstantSheafComplexInt_scalar (q : K) : - fieldToComplexConstantSheafComplexInt K X ≫ - complexScalarComplexInt X (algebraMap K ℂ q) = - fieldScalarComplex K X q ≫ - fieldToComplexConstantSheafComplexInt K X := by - rw [fieldToComplexConstantSheafComplexInt, complexScalarComplexInt, fieldScalarComplex, +lemma fieldToComplexConstantSheafComplexInt_scalar (q : K) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheafComplexInt K X ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt X (algebraMap K ℂ q) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex K X q ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheafComplexInt K X := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheafComplexInt, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex, ← HomologicalComplex.extendMap_comp, ← HomologicalComplex.extendMap_comp, ← Functor.map_comp, - complexScalarComplex, ← Functor.map_comp, fieldToComplexConstantSheaf_scalar] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplex, ← Functor.map_comp, fieldToComplexConstantSheaf_scalar] /-- The `K`-coefficient to de Rham comparison of complexes commutes with `K`-scalar multiplication. -/ -private lemma fieldToHolomorphicDeRhamComplexInt_scalar +lemma fieldToHolomorphicDeRhamComplexInt_scalar [IsIntegral X.left] [Smooth X.hom] (q : K) : - fieldToHolomorphicDeRhamComplexInt K X ≫ - scalarHolomorphicDeRhamComplexInt X (algebraMap K ℂ q) = - fieldScalarComplex K X q ≫ - fieldToHolomorphicDeRhamComplexInt K X := by - unfold fieldToHolomorphicDeRhamComplexInt - rw [Category.assoc, constantsToHolomorphicDeRhamComplexInt_scalar, ← Category.assoc, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToHolomorphicDeRhamComplexInt K X ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X (algebraMap K ℂ q) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex K X q ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToHolomorphicDeRhamComplexInt K X := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToHolomorphicDeRhamComplexInt + rw [Category.assoc, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt_scalar, ← Category.assoc, fieldToComplexConstantSheafComplexInt_scalar, Category.assoc] /-- Let `X` be a scheme over `ℂ`, and give `X(ℂ)` its analytic topology. This is the class of maps between integer-indexed complexes of sheaves of abelian groups that induce isomorphisms on every cohomology sheaf. -/ -abbrev analyticQuasiIsomorphisms := - HomologicalComplex.quasiIso (AnalyticAdditiveSheaf X) ℤᵘᵖ +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms := + HomologicalComplex.quasiIso (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤᵘᵖ -noncomputable instance analyticHasSmallLocalizedShiftedHom - (K L : CochainComplex (AnalyticAdditiveSheaf X) ℤ) : +noncomputable instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticHasSmallLocalizedShiftedHom + (K L : CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ) : Localization.HasSmallLocalizedShiftedHom.{1} - (analyticQuasiIsomorphisms X) ℤ K L := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) ℤ K L := by intro a b exact Localization.hasSmallLocalizedHom_of_isLocalization - (analyticQuasiIsomorphisms X) DerivedCategory.Q + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q /-- Let `X` be a scheme over `ℂ`, and give `X(ℂ)` its analytic topology. For an integer-indexed complex `F` of sheaves of abelian groups, its degree-`n` hypercohomology is `ℍ^n(X(ℂ); F) = Hom_D(ℤ[0], F[n])`. Here `D` is the derived category, obtained by inverting maps inducing isomorphisms on all cohomology sheaves, and `ℤ` is the constant integer sheaf. -/ @[implicit_reducible] -def Hypercohomology - (K : CochainComplex (AnalyticAdditiveSheaf X) ℤ) (n : ℤ) : Type 1 := - Localization.SmallShiftedHom.{1} (analyticQuasiIsomorphisms X) - (constantIntegerSheafComplexInt X) K n +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.Hypercohomology + (K : CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ) (n : ℤ) : Type 1 := + Localization.SmallShiftedHom.{1} (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantIntegerSheafComplexInt X) K n /-- `ℍ^n(X; 𝒦)` is the hypercohomology in integer degree `n` of a complex `𝒦` of sheaves on the analytic space `X(ℂ)`. The symbol `ℍ` follows page 51 of [P. Deligne, *The Hodge Conjecture*](https://www.claymath.org/wp-content/uploads/2022/02/MPPc.pdf). -/ -scoped notation:max "ℍ^" n:max "(" X "; " 𝒦 ")" => Hypercohomology X 𝒦 n +scoped notation:max "ℍ^" n:max "(" X "; " 𝒦 ")" => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.Hypercohomology X 𝒦 n /-- `Ext`-groups of analytic sheaves are computed in `Type 1`. The instance is stated on the site category, which is how Mathlib's sheaf cohomology looks it up. -/ -instance analyticHasExt : +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticHasExt : HasExt.{1} (CategoryTheory.Sheaf - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) AddCommGrpCat.{0}) := + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) AddCommGrpCat.{0}) := fun _ _ _ _ ↦ Localization.hasSmallLocalizedHom_of_isLocalization - (analyticQuasiIsomorphisms X) DerivedCategory.Q + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q /-- `H^n(X; K)` is the sheaf cohomology of the analytic space `X(ℂ)` with coefficients in the constant sheaf `K`, in degree `n`, as defined in Mathlib. @@ -292,263 +341,263 @@ constant sheaf `K`, in degree `n`, as defined in Mathlib. The literature writes `H^n(X; K)` for the variety `X.left` alone; here the variety is presented by its structure morphism `X`. -/ scoped notation3:max "H^" n:max "(" X "; " K ")" => - Sheaf.H ((TopCat.Sheaf.constantFunctor ↧(ComplexPoint X)).obj (AddCommGrpCat.of K)) n + Sheaf.H ((_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor ↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)).obj (AddCommGrpCat.of K)) n /-- Let `X` be a scheme over `ℂ`, and give `X(ℂ)` its analytic topology. Degree-`n` cohomology with coefficients in the constant complex sheaf is `H^n(X(ℂ); ℂ) = ℍ^n(X(ℂ); ℂ[0])`. It is the group of morphisms `ℤ[0] → ℂ[n]` in the derived category of sheaves of abelian groups. -/ -abbrev ComplexConstantCohomology (n : ℤ) : Type 1 := - ℍ^n(X; constantComplexSheafComplexInt X) +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ComplexConstantCohomology (n : ℤ) : Type 1 := + ℍ^n(X; _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantComplexSheafComplexInt X) -noncomputable instance hypercohomologyAddCommGroup - (K : CochainComplex (AnalyticAdditiveSheaf X) ℤ) (n : ℤ) : +noncomputable instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddCommGroup + (K : CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ) (n : ℤ) : AddCommGroup ℍ^n(X; K) := fast_instance% (Localization.SmallShiftedHom.equiv - (analyticQuasiIsomorphisms X) DerivedCategory.Q).addCommGroup + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q).addCommGroup -lemma hypercohomologyEquiv_zero - (K : CochainComplex (AnalyticAdditiveSheaf X) ℤ) (n : ℤ) : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyEquiv_zero + (K : CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ) (n : ℤ) : (Localization.SmallShiftedHom.equiv - (analyticQuasiIsomorphisms X) DerivedCategory.Q) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q) (0 : ℍ^n(X; K)) = 0 := by rw [Equiv.zero_def, Equiv.apply_symm_apply] -lemma hypercohomologyEquiv_add - (K : CochainComplex (AnalyticAdditiveSheaf X) ℤ) (n : ℤ) +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyEquiv_add + (K : CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ) (n : ℤ) (α β : ℍ^n(X; K)) : (Localization.SmallShiftedHom.equiv - (analyticQuasiIsomorphisms X) DerivedCategory.Q) (α + β) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q) (α + β) = (Localization.SmallShiftedHom.equiv - (analyticQuasiIsomorphisms X) DerivedCategory.Q) α + + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q) α + (Localization.SmallShiftedHom.equiv - (analyticQuasiIsomorphisms X) DerivedCategory.Q) β := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q) β := by simp [Equiv.add_def] /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. Holomorphic de Rham cohomology `H_dR^n(X)` is the degree-`n` hypercohomology of the sheaf complex `𝒪 → Ω¹ → Ω² → ⋯`, whose differential is exterior differentiation. The complex is zero in negative degrees. -/ -abbrev DeRhamHypercohomology [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : Type 1 := +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.DeRhamHypercohomology [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : Type 1 := ℍ^n(X; Ω•(X)) -@[inherit_doc DeRhamHypercohomology] -scoped notation:max "H_dR^" n:max "(" X ")" => DeRhamHypercohomology X n +@[inherit_doc _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.DeRhamHypercohomology] +scoped notation:max "H_dR^" n:max "(" X ")" => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.DeRhamHypercohomology X n /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. The inclusion of locally constant complex functions into holomorphic zero-forms gives this equivalence `H^n(X(ℂ); ℂ) ≃ ℍ^n(X(ℂ); Ω^•)`. The holomorphic Poincaré lemma makes the inclusion `ℂ[0] → Ω^•` a quasi-isomorphism. -/ -def complexConstantCohomologyDeRhamEquiv +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamEquiv [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : - ComplexConstantCohomology X n ≃ H_dR^n(X) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ComplexConstantCohomology X n ≃ H_dR^n(X) := Localization.SmallShiftedHom.postcompEquiv - (constantsToHolomorphicDeRhamComplexInt X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt X) (by - change QuasiIso (constantsToHolomorphicDeRhamComplexInt X) + change QuasiIso (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt X) infer_instance) /-- Let `X` be a scheme over `ℂ`, and give `X(ℂ)` its analytic topology. A map of sheaf complexes `f : K → L` induces this additive map `ℍ^n(X(ℂ); K) → ℍ^n(X(ℂ); L)`. In the derived category it sends `α : ℤ[0] → K[n]` to its composite with `f[n]`. -/ -def hypercohomologyMap - {K L : CochainComplex (AnalyticAdditiveSheaf X) ℤ} (f : K ⟶ L) (n : ℤ) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap + {K L : CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ} (f : K ⟶ L) (n : ℤ) : ℍ^n(X; K) →+ ℍ^n(X; L) where toFun α := α.comp - (Localization.SmallShiftedHom.mk₀ (analyticQuasiIsomorphisms X) 0 rfl f) + (Localization.SmallShiftedHom.mk₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) 0 rfl f) (zero_add n) map_zero' := by apply (Localization.SmallShiftedHom.equiv - (analyticQuasiIsomorphisms X) DerivedCategory.Q).injective + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q).injective simp only [Localization.SmallShiftedHom.equiv_comp, - hypercohomologyEquiv_zero, ShiftedHom.zero_comp] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyEquiv_zero, ShiftedHom.zero_comp] map_add' α β := by apply (Localization.SmallShiftedHom.equiv - (analyticQuasiIsomorphisms X) DerivedCategory.Q).injective + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q).injective simp only [Localization.SmallShiftedHom.equiv_comp, - hypercohomologyEquiv_add, ShiftedHom.add_comp] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyEquiv_add, ShiftedHom.add_comp] -lemma smallShiftedHomMkZero_comp - {K L M : CochainComplex (AnalyticAdditiveSheaf X) ℤ} +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smallShiftedHomMkZero_comp + {K L M : CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ} (f : K ⟶ L) (g : L ⟶ M) : Localization.SmallShiftedHom.mk₀ - (analyticQuasiIsomorphisms X) (0 : ℤ) rfl (f ≫ g) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) (0 : ℤ) rfl (f ≫ g) = (Localization.SmallShiftedHom.mk₀ - (analyticQuasiIsomorphisms X) (0 : ℤ) rfl f).comp + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) (0 : ℤ) rfl f).comp (Localization.SmallShiftedHom.mk₀ - (analyticQuasiIsomorphisms X) (0 : ℤ) rfl g) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) (0 : ℤ) rfl g) (zero_add (0 : ℤ)) := by let e : Localization.SmallShiftedHom - (analyticQuasiIsomorphisms X) K M (0 : ℤ) ≃ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) K M (0 : ℤ) ≃ ShiftedHom (DerivedCategory.Q.obj K) (DerivedCategory.Q.obj M) (0 : ℤ) := Localization.SmallShiftedHom.equiv - (analyticQuasiIsomorphisms X) DerivedCategory.Q + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q apply e.injective rw [Localization.SmallShiftedHom.equiv_comp] simp [e, Functor.map_comp] /-- Postcomposition on hypercohomology respects composition of complex maps. -/ -lemma hypercohomologyMap_comp_apply - {K L M : CochainComplex (AnalyticAdditiveSheaf X) ℤ} +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_comp_apply + {K L M : CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ} (f : K ⟶ L) (g : L ⟶ M) (n : ℤ) (α : ℍ^n(X; K)) : - hypercohomologyMap X (f ≫ g) n α = - hypercohomologyMap X g n - (hypercohomologyMap X f n α) := by - unfold hypercohomologyMap + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (f ≫ g) n α = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X g n + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X f n α) := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap dsimp - rw [smallShiftedHomMkZero_comp X] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smallShiftedHomMkZero_comp X] let β : Localization.SmallShiftedHom - (analyticQuasiIsomorphisms X) K L (0 : ℤ) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) K L (0 : ℤ) := Localization.SmallShiftedHom.mk₀ - (analyticQuasiIsomorphisms X) (0 : ℤ) rfl f + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) (0 : ℤ) rfl f let γ : Localization.SmallShiftedHom - (analyticQuasiIsomorphisms X) L M (0 : ℤ) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) L M (0 : ℤ) := Localization.SmallShiftedHom.mk₀ - (analyticQuasiIsomorphisms X) (0 : ℤ) rfl g + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) (0 : ℤ) rfl g simpa only using (Localization.SmallShiftedHom.comp_assoc - (analyticQuasiIsomorphisms X) α β γ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) α β γ (zero_add n) (zero_add (0 : ℤ)) (zero_add n)).symm /-- Postcomposition on hypercohomology is additive in the map of complexes. -/ -lemma hypercohomologyMap_add_apply - {C D : CochainComplex (AnalyticAdditiveSheaf X) ℤ} (f g : C ⟶ D) (n : ℤ) +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_add_apply + {C D : CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ} (f g : C ⟶ D) (n : ℤ) (α : ℍ^n(X; C)) : - hypercohomologyMap X (f + g) n α = - hypercohomologyMap X f n α + hypercohomologyMap X g n α := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (f + g) n α = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X f n α + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X g n α := by apply (Localization.SmallShiftedHom.equiv - (analyticQuasiIsomorphisms X) DerivedCategory.Q).injective - rw [hypercohomologyEquiv_add] - simp [hypercohomologyMap, Localization.SmallShiftedHom.equiv_comp, + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q).injective + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyEquiv_add] + simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap, Localization.SmallShiftedHom.equiv_comp, Functor.map_add] /-- The constant sheaf complex is the constant sheaf placed in degree zero. -/ -def constantFieldSheafComplexIntIsoSingle : - constantFieldSheafComplexInt K X ≅ - (CochainComplex.singleFunctor (AnalyticAdditiveSheaf X) 0).obj 𝓒(↧(ComplexPoint X); K) := - HomologicalComplex.extendSingleIso ComplexShape.embeddingUpNat 𝓒(↧(ComplexPoint X); K) 0 0 rfl +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexIntIsoSingle : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt K X ≅ + (CochainComplex.singleFunctor (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) 0).obj 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); K) := + HomologicalComplex.extendSingleIso ComplexShape.embeddingUpNat 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); K) 0 0 rfl /-- The integer constant sheaf complex is the source object of Mathlib's sheaf cohomology placed in degree zero. -/ -def constantIntegerSheafComplexIntIsoSingleULift : - constantIntegerSheafComplexInt X ≅ - (CochainComplex.singleFunctor (AnalyticAdditiveSheaf X) 0).obj - ((constantSheaf (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantIntegerSheafComplexIntIsoSingleULift : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantIntegerSheafComplexInt X ≅ + (CochainComplex.singleFunctor (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) 0).obj + ((constantSheaf (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) AddCommGrpCat).obj (AddCommGrpCat.of (ULift ℤ))) := HomologicalComplex.extendSingleIso ComplexShape.embeddingUpNat - 𝓒(↧(ComplexPoint X); ℤ) 0 0 rfl ≪≫ - (CochainComplex.singleFunctor (AnalyticAdditiveSheaf X) 0).mapIso - ((TopCat.Sheaf.constantFunctor ↧(ComplexPoint X)).mapIso + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℤ) 0 0 rfl ≪≫ + (CochainComplex.singleFunctor (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) 0).mapIso + ((_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor ↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)).mapIso (AddEquiv.ulift (α := ℤ)).toAddCommGrpIso).symm -local instance analyticSiteHasDerivedCategory : +local instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticSiteHasDerivedCategory : HasDerivedCategory (CategoryTheory.Sheaf - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) AddCommGrpCat.{0}) := - analyticHasDerivedCategory X + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) AddCommGrpCat.{0}) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticHasDerivedCategory X /-- The source comparison, as a small shifted morphism from the source object of Mathlib's sheaf cohomology to the integer constant sheaf complex. -/ -private def constantIntegerComparison := - Localization.SmallShiftedHom.mk₀Inv (W := analyticQuasiIsomorphisms X) (0 : ℤ) rfl - (constantIntegerSheafComplexIntIsoSingleULift X).hom +def constantIntegerComparison := + Localization.SmallShiftedHom.mk₀Inv (W := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) (0 : ℤ) rfl + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantIntegerSheafComplexIntIsoSingleULift X).hom ((HomologicalComplex.mem_quasiIso_iff _).mpr inferInstance) /-- The target comparison, as a small shifted morphism from the constant sheaf complex to the constant sheaf in degree zero. -/ -private def constantFieldComparison := - Localization.SmallShiftedHom.mk₀ (analyticQuasiIsomorphisms X) (0 : ℤ) rfl - (constantFieldSheafComplexIntIsoSingle K X).hom +def constantFieldComparison := + Localization.SmallShiftedHom.mk₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) (0 : ℤ) rfl + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexIntIsoSingle K X).hom /-- Precomposition with the source comparison commutes with postcomposition by a map of complexes. -/ -private lemma constantIntegerComparison_comp_comp_mk₀ - {L M : CochainComplex (AnalyticAdditiveSheaf X) ℤ} (n : ℤ) - (β : Localization.SmallShiftedHom (analyticQuasiIsomorphisms X) - (constantIntegerSheafComplexInt X) L n) (h : L ⟶ M) : +lemma constantIntegerComparison_comp_comp_mk₀ + {L M : CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ} (n : ℤ) + (β : Localization.SmallShiftedHom (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantIntegerSheafComplexInt X) L n) (h : L ⟶ M) : ((constantIntegerComparison X).comp β (add_zero n)).comp - (Localization.SmallShiftedHom.mk₀ (analyticQuasiIsomorphisms X) (0 : ℤ) rfl h) (zero_add n) = + (Localization.SmallShiftedHom.mk₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) (0 : ℤ) rfl h) (zero_add n) = (constantIntegerComparison X).comp - (β.comp (Localization.SmallShiftedHom.mk₀ (analyticQuasiIsomorphisms X) (0 : ℤ) rfl h) + (β.comp (Localization.SmallShiftedHom.mk₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) (0 : ℤ) rfl h) (zero_add n)) (add_zero n) := - Localization.SmallShiftedHom.comp_assoc (analyticQuasiIsomorphisms X) _ β _ + Localization.SmallShiftedHom.comp_assoc (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) _ β _ (add_zero n) (zero_add n) (by simp) /-- Hypercohomology of the constant sheaf complex is Mathlib's sheaf cohomology of the constant sheaf. -/ -def hypercohomologyAddEquivConstantCohomology (n : ℕ) : - Hypercohomology X (constantFieldSheafComplexInt K X) n ≃+ H^n(X; K) where +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology (n : ℕ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.Hypercohomology X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt K X) n ≃+ H^n(X; K) where toEquiv := - (Localization.SmallShiftedHom.precompEquiv.{1} (W := analyticQuasiIsomorphisms X) - (constantIntegerSheafComplexIntIsoSingleULift X).hom + (Localization.SmallShiftedHom.precompEquiv.{1} (W := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantIntegerSheafComplexIntIsoSingleULift X).hom ((HomologicalComplex.mem_quasiIso_iff _).mpr inferInstance) (a := (n : ℤ))).symm.trans - (Localization.SmallShiftedHom.postcompEquiv.{1} (W := analyticQuasiIsomorphisms X) - (constantFieldSheafComplexIntIsoSingle K X).hom + (Localization.SmallShiftedHom.postcompEquiv.{1} (W := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexIntIsoSingle K X).hom ((HomologicalComplex.mem_quasiIso_iff _).mpr inferInstance) (a := (n : ℤ))) map_add' α β := by apply Abelian.Ext.ext rw [Abelian.Ext.add_hom] - show Localization.SmallShiftedHom.equiv (analyticQuasiIsomorphisms X) DerivedCategory.Q + show Localization.SmallShiftedHom.equiv (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q (((constantIntegerComparison X).comp (α + β) _).comp (constantFieldComparison K X) _) = - Localization.SmallShiftedHom.equiv (analyticQuasiIsomorphisms X) DerivedCategory.Q + Localization.SmallShiftedHom.equiv (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q (((constantIntegerComparison X).comp α _).comp (constantFieldComparison K X) _) + - Localization.SmallShiftedHom.equiv (analyticQuasiIsomorphisms X) DerivedCategory.Q + Localization.SmallShiftedHom.equiv (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q (((constantIntegerComparison X).comp β _).comp (constantFieldComparison K X) _) - simp only [Localization.SmallShiftedHom.equiv_comp, hypercohomologyEquiv_add, + simp only [Localization.SmallShiftedHom.equiv_comp, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyEquiv_add, ShiftedHom.add_comp, ShiftedHom.comp_add] rfl omit [Algebra K ℂ] in /-- The comparison with Mathlib's sheaf cohomology is natural in maps of constant sheaves. -/ -lemma hypercohomologyAddEquivConstantCohomology_map {L : Type} [Field L] - (f : 𝓒(↧(ComplexPoint X); K) ⟶ 𝓒(↧(ComplexPoint X); L)) (n : ℕ) - (α : Hypercohomology X (constantFieldSheafComplexInt K X) n) : - hypercohomologyAddEquivConstantCohomology L X n - (hypercohomologyMap X (HomologicalComplex.extendMap - ((CochainComplex.single₀ (AnalyticAdditiveSheaf X)).map f) +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology_map {L : Type} [Field L] + (f : 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); K) ⟶ 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); L)) (n : ℕ) + (α : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.Hypercohomology X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt K X) n) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology L X n + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (HomologicalComplex.extendMap + ((CochainComplex.single₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X)).map f) ComplexShape.embeddingUpNat) n α) = - Sheaf.H.map f n (hypercohomologyAddEquivConstantCohomology K X n α) := by - show ((constantIntegerComparison X).comp (hypercohomologyMap X (HomologicalComplex.extendMap - ((CochainComplex.single₀ (AnalyticAdditiveSheaf X)).map f) + Sheaf.H.map f n (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology K X n α) := by + show ((constantIntegerComparison X).comp (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (HomologicalComplex.extendMap + ((CochainComplex.single₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X)).map f) ComplexShape.embeddingUpNat) n α) (add_zero _)).comp (constantFieldComparison L X) (zero_add _) = (((constantIntegerComparison X).comp α (add_zero _)).comp (constantFieldComparison K X) (zero_add _)).comp - (Localization.SmallShiftedHom.mk₀ (analyticQuasiIsomorphisms X) (0 : ℤ) rfl - ((CochainComplex.singleFunctor (AnalyticAdditiveSheaf X) 0).map f)) (zero_add _) + (Localization.SmallShiftedHom.mk₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) (0 : ℤ) rfl + ((CochainComplex.singleFunctor (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) 0).map f)) (zero_add _) refine (constantIntegerComparison_comp_comp_mk₀ X _ _ _).trans (Eq.trans ?_ - ((congrArg (fun γ => γ.comp (Localization.SmallShiftedHom.mk₀ (analyticQuasiIsomorphisms X) - (0 : ℤ) rfl ((CochainComplex.singleFunctor (AnalyticAdditiveSheaf X) 0).map f)) + ((congrArg (fun γ => γ.comp (Localization.SmallShiftedHom.mk₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) + (0 : ℤ) rfl ((CochainComplex.singleFunctor (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) 0).map f)) (zero_add _)) (constantIntegerComparison_comp_comp_mk₀ X _ α _)).trans (constantIntegerComparison_comp_comp_mk₀ X _ _ _)).symm) congr 1 - change hypercohomologyMap X _ n (hypercohomologyMap X _ n α) = - hypercohomologyMap X _ n (hypercohomologyMap X _ n α) - rw [← hypercohomologyMap_comp_apply, ← hypercohomologyMap_comp_apply] - exact congrArg (fun g => hypercohomologyMap X g n α) - (HomologicalComplex.extendSingleIso_hom_naturality ComplexShape.embeddingUpNat f 0 0 rfl) + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X _ n (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X _ n α) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X _ n (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X _ n α) + rw [← _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_comp_apply, ← _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_comp_apply] + exact congrArg (fun g => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X g n α) + (_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.extendSingleIso_hom_naturality ComplexShape.embeddingUpNat f 0 0 rfl) omit [Algebra K ℂ] in /-- The inverse comparison is natural in maps of constant sheaves. -/ -lemma hypercohomologyAddEquivConstantCohomology_symm_map {L : Type} [Field L] - (f : 𝓒(↧(ComplexPoint X); K) ⟶ 𝓒(↧(ComplexPoint X); L)) (n : ℕ) (β : H^n(X; K)) : - (hypercohomologyAddEquivConstantCohomology L X n).symm (Sheaf.H.map f n β) = - hypercohomologyMap X (HomologicalComplex.extendMap - ((CochainComplex.single₀ (AnalyticAdditiveSheaf X)).map f) +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology_symm_map {L : Type} [Field L] + (f : 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); K) ⟶ 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); L)) (n : ℕ) (β : H^n(X; K)) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology L X n).symm (Sheaf.H.map f n β) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (HomologicalComplex.extendMap + ((CochainComplex.single₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X)).map f) ComplexShape.embeddingUpNat) n - ((hypercohomologyAddEquivConstantCohomology K X n).symm β) := by - apply (hypercohomologyAddEquivConstantCohomology L X n).injective - rw [AddEquiv.apply_symm_apply, hypercohomologyAddEquivConstantCohomology_map, + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology K X n).symm β) := by + apply (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology L X n).injective + rw [AddEquiv.apply_symm_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology_map, AddEquiv.apply_symm_apply] /-- Let `X` be a scheme over `ℂ`, and give `X(ℂ)` its analytic topology. Let a semiring `R` act on a sheaf complex `C` through endomorphisms `s(r)` with `s(a+b) = s(a)+s(b)`, `s(1) = id`, and `s(ab) = s(a) ∘ s(b)`. If the specified scalar action on `ℍ^n(X(ℂ); C)` is induced by these maps, this construction supplies its `R`-module structure. -/ -noncomputable abbrev hypercohomologyModule {R : Type*} [Semiring R] - {C : CochainComplex (AnalyticAdditiveSheaf X) ℤ} (s : R → (C ⟶ C)) (n : ℤ) +noncomputable abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyModule {R : Type*} [Semiring R] + {C : CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ} (s : R → (C ⟶ C)) (n : ℤ) [SMul R ℍ^n(X; C)] (smul_eq : ∀ (r : R) (α : ℍ^n(X; C)), - r • α = hypercohomologyMap X (s r) n α) + r • α = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (s r) n α) (s_add : ∀ a b : R, s (a + b) = s a + s b) (s_one : s 1 = 𝟙 C) (s_mul : ∀ a b : R, s (a * b) = s b ≫ s a) : @@ -556,58 +605,87 @@ noncomputable abbrev hypercohomologyModule {R : Type*} [Semiring R] Module.ofMinimalAxioms (fun r α β => by rw [smul_eq, smul_eq, smul_eq] - exact (hypercohomologyMap X (s r) n).map_add α β) + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (s r) n).map_add α β) (fun a b α => by rw [smul_eq, smul_eq, smul_eq, s_add] - exact hypercohomologyMap_add_apply X (s a) (s b) n α) + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_add_apply X (s a) (s b) n α) (fun a b α => by rw [smul_eq, smul_eq, smul_eq, s_mul] - exact hypercohomologyMap_comp_apply X (s b) (s a) n α) + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_comp_apply X (s b) (s a) n α) (fun α => by rw [smul_eq, s_one] let e : ℍ^n(X; C) ≃ ShiftedHom - (DerivedCategory.Q.obj (constantIntegerSheafComplexInt X)) + (DerivedCategory.Q.obj (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantIntegerSheafComplexInt X)) (DerivedCategory.Q.obj C) n := Localization.SmallShiftedHom.equiv - (analyticQuasiIsomorphisms X) DerivedCategory.Q + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q apply e.injective - simp [e, hypercohomologyMap]) + simp [e, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap]) /-- The `K`-action on constant-sheaf cohomology, induced by scalar multiplication on the coefficient sheaf. -/ noncomputable instance (n : ℕ) : SMul K (H^n(X; K)) := - ⟨fun q α ↦ Sheaf.H.map (fieldScalarSheaf K X q) n α⟩ + ⟨fun q α ↦ Sheaf.H.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X q) n α⟩ + +omit [Algebra K ℂ] in +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.field_smul_eq (n : ℕ) (q : K) (α : H^n(X; K)) : + q • α = Sheaf.H.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X q) n α := rfl omit [Algebra K ℂ] in -lemma field_smul_eq (n : ℕ) (q : K) (α : H^n(X; K)) : - q • α = Sheaf.H.map (fieldScalarSheaf K X q) n α := rfl +lemma fieldScalarSheafCohomologyMap_comp_apply (a b : K) (n : ℕ) (α : H^n(X; K)) : + Sheaf.H.map + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X b ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X a) n α = + Sheaf.H.map + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X a) n + (Sheaf.H.map + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X b) n α) := by + change Sheaf.H.map + (siteSheafHom + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X b ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X a)) n α = + Sheaf.H.map + (siteSheafHom + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X a)) n + (Sheaf.H.map + (siteSheafHom + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X b)) n α) + rw [siteSheafHom_comp, Sheaf.H.map_comp_apply] + +omit [Algebra K ℂ] in +lemma fieldScalarSheafCohomologyMap_id_apply (n : ℕ) (α : H^n(X; K)) : + Sheaf.H.map (𝟙 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); K)) n α = α := by + change Sheaf.H.map + (siteSheafHom (𝟙 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); K))) n α = α + rw [siteSheafHom_id, Sheaf.H.map_id_apply] /-- For a scheme `X` over `ℂ` and a field `K`, constant-sheaf cohomology `H^n(X(ℂ); K)` is a `K`-vector space, with scalars acting on coefficient functions. -/ -noncomputable instance fieldCohomologyModule (n : ℕ) : +noncomputable instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldCohomologyModule (n : ℕ) : Module K (H^n(X; K)) := Module.ofMinimalAxioms (fun r α β => by - rw [field_smul_eq, field_smul_eq, field_smul_eq] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.field_smul_eq, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.field_smul_eq, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.field_smul_eq] exact map_add _ α β) (fun a b α => by - rw [field_smul_eq, field_smul_eq, field_smul_eq, fieldScalarSheaf_add] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.field_smul_eq, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.field_smul_eq, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.field_smul_eq, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf_add] exact Sheaf.H.map_add_apply _ _ α) (fun a b α => by - rw [field_smul_eq, field_smul_eq, field_smul_eq, fieldScalarSheaf_mul, - Sheaf.H.map_comp_apply]) + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.field_smul_eq, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.field_smul_eq, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.field_smul_eq, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf_mul] + exact fieldScalarSheafCohomologyMap_comp_apply K X a b n α) (fun α => by - rw [field_smul_eq, fieldScalarSheaf_one, Sheaf.H.map_id_apply]) + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.field_smul_eq, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf_one] + exact fieldScalarSheafCohomologyMap_id_apply K X n α) omit [Algebra K ℂ] in /-- The comparison with hypercohomology carries scalar multiplication to the action of the scalar complex. -/ -lemma hypercohomologyAddEquivConstantCohomology_symm_smul (n : ℕ) (q : K) (α : H^n(X; K)) : - (hypercohomologyAddEquivConstantCohomology K X n).symm (q • α) = - hypercohomologyMap X (fieldScalarComplex K X q) n - ((hypercohomologyAddEquivConstantCohomology K X n).symm α) := by - rw [field_smul_eq, hypercohomologyAddEquivConstantCohomology_symm_map] +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology_symm_smul (n : ℕ) (q : K) (α : H^n(X; K)) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology K X n).symm (q • α) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex K X q) n + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology K X n).symm α) := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.field_smul_eq, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology_symm_map] rfl /-- The complex action on holomorphic de Rham hypercohomology, induced by scalar multiplication @@ -615,37 +693,37 @@ on the holomorphic de Rham complex. -/ noncomputable instance [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : SMul ℂ H_dR^n(X) := - ⟨fun c α ↦ hypercohomologyMap X (scalarHolomorphicDeRhamComplexInt X c) n α⟩ + ⟨fun c α ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X c) n α⟩ -lemma deRham_complex_smul_eq [IsIntegral X.left] [Smooth X.hom] +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRham_complex_smul_eq [IsIntegral X.left] [Smooth X.hom] (n : ℤ) (c : ℂ) (α : H_dR^n(X)) : - c • α = hypercohomologyMap X - (scalarHolomorphicDeRhamComplexInt X c) n α := + c • α = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X c) n α := rfl /-- Holomorphic de Rham hypercohomology is canonically a complex vector space. -/ -noncomputable instance deRhamHypercohomologyComplexModule +noncomputable instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamHypercohomologyComplexModule [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : Module ℂ H_dR^n(X) := - hypercohomologyModule X (scalarHolomorphicDeRhamComplexInt X) n - (deRham_complex_smul_eq X n) (scalarHolomorphicDeRhamComplexInt_add X) - (scalarHolomorphicDeRhamComplexInt_one X) - (scalarHolomorphicDeRhamComplexInt_mul X) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyModule X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X) n + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRham_complex_smul_eq X n) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt_add X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt_one X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt_mul X) /-- De Rham hypercohomology as a vector space over `K`, by restriction of complex scalars. -/ -noncomputable instance deRhamHypercohomologyModule +noncomputable instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamHypercohomologyModule [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : Module K H_dR^n(X) := Module.restrictScalars K ℂ H_dR^n(X) -lemma deRham_field_smul_eq [IsIntegral X.left] [Smooth X.hom] +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRham_field_smul_eq [IsIntegral X.left] [Smooth X.hom] (n : ℤ) (q : K) (α : H_dR^n(X)) : - q • α = hypercohomologyMap X - (scalarHolomorphicDeRhamComplexInt X (algebraMap K ℂ q)) n α := + q • α = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X (algebraMap K ℂ q)) n α := rfl /-- Restriction of complex scalars gives the scalar tower on de Rham hypercohomology. -/ -noncomputable instance deRhamHypercohomologyIsScalarTower +noncomputable instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamHypercohomologyIsScalarTower [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : IsScalarTower K ℂ H_dR^n(X) := IsScalarTower.restrictScalars K ℂ H_dR^n(X) @@ -653,121 +731,121 @@ noncomputable instance deRhamHypercohomologyIsScalarTower /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. For a field `K` embedded in `ℂ`, this additive map `H^n(X(ℂ); K) → H_dR^n(X)` is induced by including locally constant `K`-valued functions as holomorphic zero-forms. -/ -def fieldToDeRhamCohomology [IsIntegral X.left] [Smooth X.hom] (n : ℕ) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToDeRhamCohomology [IsIntegral X.left] [Smooth X.hom] (n : ℕ) : H^n(X; K) →+ H_dR^n(X) := - (hypercohomologyMap X (fieldToHolomorphicDeRhamComplexInt K X) n).comp - (hypercohomologyAddEquivConstantCohomology K X n).symm.toAddMonoidHom + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToHolomorphicDeRhamComplexInt K X) n).comp + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology K X n).symm.toAddMonoidHom /-- The `K`-coefficient to de Rham comparison is compatible with `K`-scalar multiplication. -/ -lemma fieldToDeRhamCohomology_smul +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToDeRhamCohomology_smul [IsIntegral X.left] [Smooth X.hom] (n : ℕ) (q : K) (α : H^n(X; K)) : - fieldToDeRhamCohomology K X n (q • α) = - q • fieldToDeRhamCohomology K X n α := by - rw [deRham_field_smul_eq] - unfold fieldToDeRhamCohomology + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToDeRhamCohomology K X n (q • α) = + q • _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToDeRhamCohomology K X n α := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRham_field_smul_eq] + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToDeRhamCohomology simp only [AddMonoidHom.comp_apply, AddEquiv.toAddMonoidHom_eq_coe, AddMonoidHom.coe_coe] - rw [hypercohomologyAddEquivConstantCohomology_symm_smul, ← hypercohomologyMap_comp_apply, - ← hypercohomologyMap_comp_apply, fieldToHolomorphicDeRhamComplexInt_scalar] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology_symm_smul, ← _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_comp_apply, + ← _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_comp_apply, fieldToHolomorphicDeRhamComplexInt_scalar] /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. For a field `K` embedded in `ℂ`, the inclusion `K[0] → Ω^•` induces this `K`-linear map from constant-sheaf cohomology `H^n(X(ℂ); K)` to holomorphic de Rham cohomology `H_dR^n(X)`. -/ -def fieldToDeRhamCohomologyLinear +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToDeRhamCohomologyLinear [IsIntegral X.left] [Smooth X.hom] (n : ℕ) : H^n(X; K) →ₗ[K] H_dR^n(X) where - toFun := fieldToDeRhamCohomology K X n - map_add' := (fieldToDeRhamCohomology K X n).map_add - map_smul' := fieldToDeRhamCohomology_smul K X n + toFun := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToDeRhamCohomology K X n + map_add' := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToDeRhamCohomology K X n).map_add + map_smul' := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToDeRhamCohomology_smul K X n /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. For an integer `p`, the complex `F^p Ω^•` has the sheaf of holomorphic `q`-forms in degrees `q ≥ p` and zero in degrees `q < p`. Its remaining differentials are exterior derivatives; this is the truncation by form degree. -/ -def hodgeFilteredDeRhamComplex [IsIntegral X.left] [Smooth X.hom] (p : ℤ) : - CochainComplex (AnalyticAdditiveSheaf X) ℤ := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFilteredDeRhamComplex [IsIntegral X.left] [Smooth X.hom] (p : ℤ) : + CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ := Ω•(X).stupidTrunc (ComplexShape.embeddingUpIntGE p) -@[inherit_doc hodgeFilteredDeRhamComplex] -scoped notation:max "F^" p:max " Ω•" "(" X ")" => hodgeFilteredDeRhamComplex X p +@[inherit_doc _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFilteredDeRhamComplex] +scoped notation:max "F^" p:max " Ω•" "(" X ")" => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFilteredDeRhamComplex X p /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. For an integer `p`, this map `F^p Ω^• → Ω^•` is the identity on holomorphic forms in degrees at least `p` and the zero map below `p`, where the source is zero. -/ -def hodgeFilteredDeRhamInclusion [IsIntegral X.left] [Smooth X.hom] (p : ℤ) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFilteredDeRhamInclusion [IsIntegral X.left] [Smooth X.hom] (p : ℤ) : F^p Ω•(X) ⟶ Ω•(X) := - HomologicalComplex.stupidTruncInclusion Ω•(X) (ComplexShape.embeddingUpIntGE p) + _root_.OAI.Algebra.Homology.StupidTruncation.HomologicalComplex.stupidTruncInclusion Ω•(X) (ComplexShape.embeddingUpIntGE p) /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. For an integer `p` and a scalar `c ∈ ℂ`, this endomorphism multiplies forms by `c` in the complex `F^p Ω^•` of holomorphic forms in degrees at least `p`, which is zero in lower degrees. -/ -def hodgeFilteredDeRhamComplexScalar [IsIntegral X.left] [Smooth X.hom] +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFilteredDeRhamComplexScalar [IsIntegral X.left] [Smooth X.hom] (p : ℤ) (c : ℂ) : F^p Ω•(X) ⟶ F^p Ω•(X) := HomologicalComplex.stupidTruncMap - (scalarHolomorphicDeRhamComplexInt X c) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X c) (ComplexShape.embeddingUpIntGE p) /-- Complex scalar multiplication on the filtered complex commutes with inclusion into the full de Rham complex. -/ -private lemma hodgeFilteredDeRhamComplexScalar_comp_inclusion +lemma hodgeFilteredDeRhamComplexScalar_comp_inclusion [IsIntegral X.left] [Smooth X.hom] (p : ℤ) (c : ℂ) : - hodgeFilteredDeRhamComplexScalar X p c ≫ - hodgeFilteredDeRhamInclusion X p = - hodgeFilteredDeRhamInclusion X p ≫ - scalarHolomorphicDeRhamComplexInt X c := - HomologicalComplex.stupidTruncMap_comp_stupidTruncInclusion + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFilteredDeRhamComplexScalar X p c ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFilteredDeRhamInclusion X p = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFilteredDeRhamInclusion X p ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X c := + _root_.OAI.Algebra.Homology.StupidTruncation.HomologicalComplex.stupidTruncMap_comp_stupidTruncInclusion (ComplexShape.embeddingUpIntGE p) - (scalarHolomorphicDeRhamComplexInt X c) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X c) /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. For integers `p` and `n`, this is `ℍ^n(X(ℂ); F^p Ω^•)`, the hypercohomology of the holomorphic de Rham complex with terms below form degree `p` replaced by zero. -/ -abbrev FilteredDeRhamHypercohomology [IsIntegral X.left] [Smooth X.hom] +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.FilteredDeRhamHypercohomology [IsIntegral X.left] [Smooth X.hom] (p n : ℤ) : Type 1 := ℍ^n(X; F^p Ω•(X)) /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. For integers `p` and `n`, inclusion of holomorphic forms of degree at least `p` into the full de Rham complex induces this map `ℍ^n(X(ℂ); F^p Ω^•) → H_dR^n(X)`. -/ -def filteredToDeRhamCohomology [IsIntegral X.left] [Smooth X.hom] (p n : ℤ) : - FilteredDeRhamHypercohomology X p n →+ H_dR^n(X) := - hypercohomologyMap X (hodgeFilteredDeRhamInclusion X p) n +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.filteredToDeRhamCohomology [IsIntegral X.left] [Smooth X.hom] (p n : ℤ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.FilteredDeRhamHypercohomology X p n →+ H_dR^n(X) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFilteredDeRhamInclusion X p) n /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. The `p`-th Hodge filtration in degree `n` is the additive subgroup `F^p H_dR^n(X)` given by the image of `ℍ^n(X(ℂ); F^p Ω^•) → ℍ^n(X(ℂ); Ω^•)`. The source complex keeps holomorphic forms of degree at least `p` and is zero in lower degrees. -/ -def hodgeFiltration [IsIntegral X.left] [Smooth X.hom] (p n : ℤ) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFiltration [IsIntegral X.left] [Smooth X.hom] (p n : ℤ) : AddSubgroup H_dR^n(X) := - (filteredToDeRhamCohomology X p n).range + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.filteredToDeRhamCohomology X p n).range /-- The Hodge filtration is stable under arbitrary complex scalar multiplication. -/ -lemma hodgeFiltration_complex_smul_mem [IsIntegral X.left] [Smooth X.hom] +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFiltration_complex_smul_mem [IsIntegral X.left] [Smooth X.hom] (p n : ℤ) (c : ℂ) {α : H_dR^n(X)} - (hα : α ∈ hodgeFiltration X p n) : - c • α ∈ hodgeFiltration X p n := by + (hα : α ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFiltration X p n) : + c • α ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFiltration X p n := by rcases hα with ⟨β, rfl⟩ - refine ⟨hypercohomologyMap X - (hodgeFilteredDeRhamComplexScalar X p c) n β, ?_⟩ - rw [deRham_complex_smul_eq] - unfold filteredToDeRhamCohomology - rw [← hypercohomologyMap_comp_apply, ← hypercohomologyMap_comp_apply] + refine ⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFilteredDeRhamComplexScalar X p c) n β, ?_⟩ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRham_complex_smul_eq] + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.filteredToDeRhamCohomology + rw [← _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_comp_apply, ← _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_comp_apply] rw [hodgeFilteredDeRhamComplexScalar_comp_inclusion] /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. The complex subspace `F^p H_dR^n(X)` is the image on degree-`n` hypercohomology of the inclusion of holomorphic forms of degrees at least `p` into the full de Rham complex. -/ -def hodgeFiltrationComplexSubmodule [IsIntegral X.left] [Smooth X.hom] +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFiltrationComplexSubmodule [IsIntegral X.left] [Smooth X.hom] (p n : ℤ) : Submodule ℂ H_dR^n(X) where - carrier := hodgeFiltration X p n - zero_mem' := (hodgeFiltration X p n).zero_mem - add_mem' := (hodgeFiltration X p n).add_mem - smul_mem' := fun c _ h => hodgeFiltration_complex_smul_mem X p n c h + carrier := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFiltration X p n + zero_mem' := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFiltration X p n).zero_mem + add_mem' := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFiltration X p n).add_mem + smul_mem' := fun c _ h => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFiltration_complex_smul_mem X p n c h -@[inherit_doc hodgeFiltrationComplexSubmodule] +@[inherit_doc _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFiltrationComplexSubmodule] scoped notation:max "F^" p:max " H_dR^" n:max "(" X ")" => - hodgeFiltrationComplexSubmodule X p n + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFiltrationComplexSubmodule X p n /-! ### Complex conjugation and the `(p,p)` part @@ -779,39 +857,39 @@ is then *defined* as `F^p ⊓ conj F^q`, which needs no Hodge decomposition theo additive equivalence `H^n(X(ℂ); ℂ) ≃ H_dR^n(X)` is induced by the inclusion of the constant complex sheaf into the holomorphic de Rham complex. The inclusion is a quasi-isomorphism by the holomorphic Poincaré lemma. -/ -def complexConstantCohomologyDeRhamAddEquiv [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : - ComplexConstantCohomology X n ≃+ H_dR^n(X) := - { complexConstantCohomologyDeRhamEquiv X n with +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ComplexConstantCohomology X n ≃+ H_dR^n(X) := + { _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamEquiv X n with map_add' := fun α β ↦ by - change hypercohomologyMap X (constantsToHolomorphicDeRhamComplexInt X) n (α + β) = - hypercohomologyMap X (constantsToHolomorphicDeRhamComplexInt X) n α + - hypercohomologyMap X (constantsToHolomorphicDeRhamComplexInt X) n β + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt X) n (α + β) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt X) n α + + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt X) n β exact map_add _ α β } -private lemma complexConstantCohomologyDeRhamAddEquiv_apply [IsIntegral X.left] [Smooth X.hom] - (n : ℤ) (α : ComplexConstantCohomology X n) : - complexConstantCohomologyDeRhamAddEquiv X n α = - hypercohomologyMap X (constantsToHolomorphicDeRhamComplexInt X) n α := +lemma complexConstantCohomologyDeRhamAddEquiv_apply [IsIntegral X.left] [Smooth X.hom] + (n : ℤ) (α : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ComplexConstantCohomology X n) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv X n α = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt X) n α := rfl /-- The comparison equivalence carries the constant-sheaf scalar action to the de Rham one. -/ -private lemma complexConstantCohomologyDeRhamAddEquiv_scalar [IsIntegral X.left] [Smooth X.hom] - (n : ℤ) (c : ℂ) (β : ComplexConstantCohomology X n) : - complexConstantCohomologyDeRhamAddEquiv X n - (hypercohomologyMap X (complexScalarComplexInt X c) n β) = - c • complexConstantCohomologyDeRhamAddEquiv X n β := by +lemma complexConstantCohomologyDeRhamAddEquiv_scalar [IsIntegral X.left] [Smooth X.hom] + (n : ℤ) (c : ℂ) (β : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ComplexConstantCohomology X n) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv X n + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt X c) n β) = + c • _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv X n β := by rw [complexConstantCohomologyDeRhamAddEquiv_apply, complexConstantCohomologyDeRhamAddEquiv_apply, - ← hypercohomologyMap_comp_apply, ← constantsToHolomorphicDeRhamComplexInt_scalar, - hypercohomologyMap_comp_apply, deRham_complex_smul_eq] + ← _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_comp_apply, ← _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt_scalar, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_comp_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRham_complex_smul_eq] /-- The inverse comparison carries the de Rham scalar action back to the constant-sheaf one. -/ -private lemma complexConstantCohomologyDeRhamAddEquiv_symm_scalar [IsIntegral X.left] [Smooth X.hom] +lemma complexConstantCohomologyDeRhamAddEquiv_symm_scalar [IsIntegral X.left] [Smooth X.hom] (n : ℤ) (c : ℂ) (α : H_dR^n(X)) : - (complexConstantCohomologyDeRhamAddEquiv X n).symm (c • α) = - hypercohomologyMap X (complexScalarComplexInt X c) n - ((complexConstantCohomologyDeRhamAddEquiv X n).symm α) := by - apply (complexConstantCohomologyDeRhamAddEquiv X n).injective + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv X n).symm (c • α) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt X c) n + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv X n).symm α) := by + apply (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv X n).injective rw [AddEquiv.apply_symm_apply, complexConstantCohomologyDeRhamAddEquiv_scalar, AddEquiv.apply_symm_apply] @@ -819,52 +897,52 @@ private lemma complexConstantCohomologyDeRhamAddEquiv_symm_scalar [IsIntegral X. additive endomorphism of `H_dR^n(X)` is complex conjugation transported through `H^n(X(ℂ); ℂ) ≃ H_dR^n(X)`. On constant-sheaf cohomology, conjugation is induced by conjugating the locally constant coefficient functions. -/ -def deRhamConj [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConj [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : H_dR^n(X) →+ H_dR^n(X) := - ((complexConstantCohomologyDeRhamAddEquiv X n).toAddMonoidHom).comp - ((hypercohomologyMap X (conjConstantComplexSheafComplexInt X) n).comp - (complexConstantCohomologyDeRhamAddEquiv X n).symm.toAddMonoidHom) - -lemma deRhamConj_apply [IsIntegral X.left] [Smooth X.hom] (n : ℤ) (α : H_dR^n(X)) : - deRhamConj X n α = - complexConstantCohomologyDeRhamAddEquiv X n - (hypercohomologyMap X (conjConstantComplexSheafComplexInt X) n - ((complexConstantCohomologyDeRhamAddEquiv X n).symm α)) := + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv X n).toAddMonoidHom).comp + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexSheafComplexInt X) n).comp + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv X n).symm.toAddMonoidHom) + +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConj_apply [IsIntegral X.left] [Smooth X.hom] (n : ℤ) (α : H_dR^n(X)) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConj X n α = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv X n + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexSheafComplexInt X) n + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv X n).symm α)) := rfl /-- Conjugation on de Rham hypercohomology is conjugate-linear. -/ -lemma deRhamConj_smul [IsIntegral X.left] [Smooth X.hom] (n : ℤ) (c : ℂ) (α : H_dR^n(X)) : - deRhamConj X n (c • α) = (starRingEnd ℂ) c • deRhamConj X n α := by - rw [deRhamConj_apply, deRhamConj_apply, +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConj_smul [IsIntegral X.left] [Smooth X.hom] (n : ℤ) (c : ℂ) (α : H_dR^n(X)) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConj X n (c • α) = (starRingEnd ℂ) c • _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConj X n α := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConj_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConj_apply, complexConstantCohomologyDeRhamAddEquiv_symm_scalar, - ← hypercohomologyMap_comp_apply, complexScalarComplexInt_comp_conj, - hypercohomologyMap_comp_apply, complexConstantCohomologyDeRhamAddEquiv_scalar] + ← _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_comp_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt_comp_conj, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_comp_apply, complexConstantCohomologyDeRhamAddEquiv_scalar] /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. Conjugation of constant complex coefficients, transported through `H^n(X(ℂ); ℂ) ≃ H_dR^n(X)`, gives this conjugate-linear endomorphism of de Rham cohomology. It sends `c α` to `conj(c) conj(α)`. -/ -def deRhamConjSemilinear [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConjSemilinear [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : H_dR^n(X) →ₛₗ[starRingEnd ℂ] H_dR^n(X) where - toFun := deRhamConj X n - map_add' := (deRhamConj X n).map_add - map_smul' := deRhamConj_smul X n + toFun := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConj X n + map_add' := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConj X n).map_add + map_smul' := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConj_smul X n /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. The conjugate Hodge filtration in degree `n` consists of classes whose complex conjugates lie in `F^p H_dR^n(X)`. Here `F^p` is the image of the hypercohomology of holomorphic forms of degree at least `p`, and conjugation is transported from constant complex coefficients. -/ -def conjHodgeFiltrationComplexSubmodule [IsIntegral X.left] [Smooth X.hom] +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjHodgeFiltrationComplexSubmodule [IsIntegral X.left] [Smooth X.hom] (p n : ℤ) : Submodule ℂ H_dR^n(X) := - (F^p H_dR^n(X)).comap (deRhamConjSemilinear X n) + (F^p H_dR^n(X)).comap (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConjSemilinear X n) /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. This complex subspace of `H_dR^n(X)` is `F^p ∩ conjugate(F^q)`, where `F^r` is the image of the hypercohomology of holomorphic forms in degrees at least `r`. Conjugation comes from constant complex coefficients. When `X` is projective and `p + q = n`, this is the Hodge component of type `(p,q)`. -/ -def hodgePiece [IsIntegral X.left] [Smooth X.hom] (p q n : ℤ) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgePiece [IsIntegral X.left] [Smooth X.hom] (p q n : ℤ) : Submodule ℂ H_dR^n(X) := - F^p H_dR^n(X) ⊓ conjHodgeFiltrationComplexSubmodule X q n + F^p H_dR^n(X) ⊓ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjHodgeFiltrationComplexSubmodule X q n /-- Let `X` be a smooth integral scheme over `ℂ`, and give `X(ℂ)` its analytic topology. For a field `K` embedded in `ℂ` and a natural number `p`, these are the classes in `H^{2p}(X(ℂ); K)` whose @@ -872,15 +950,20 @@ de Rham images belong to `F^p ∩ conjugate(F^p)`. The filtration `F^p` is the i hypercohomology of holomorphic forms of degrees at least `p`. Conjugation is induced by conjugating constant complex coefficients; for projective `X`, the intersection is the Hodge component of type `(p,p)`. -/ -def hodgeClasses [IsIntegral X.left] [Smooth X.hom] (p : ℕ) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeClasses [IsIntegral X.left] [Smooth X.hom] (p : ℕ) : Submodule K (H^(2 * p)(X; K)) := - ((hodgePiece X p p (2 * p : ℕ)).restrictScalars K).comap - (fieldToDeRhamCohomologyLinear K X (2 * p)) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgePiece X p p (2 * p : ℕ)).restrictScalars K).comap + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldToDeRhamCohomologyLinear K X (2 * p)) /-- `Hdg^p(f; K)` is the space of Hodge classes of codimension `p` with coefficients in `K`. The literature writes `Hdg^p(X.left)` for the variety `X.left` alone; here the variety is presented by its structure morphism `f`, and the coefficient field is named. -/ -scoped notation:max "Hdg^" p:max "(" f "; " K ")" => hodgeClasses K f p +scoped notation:max "Hdg^" p:max "(" f "; " K ")" => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeClasses K f p + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.Hodge.Filtration diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Hodge/HolomorphicDeRham.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Hodge/HolomorphicDeRham.lean index cd67e309cd..0132769872 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Hodge/HolomorphicDeRham.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Hodge/HolomorphicDeRham.lean @@ -12,16 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.Constant -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.AnalyticDifferentialForms -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Equidimensional -public import Mathlib.Algebra.Homology.Embedding.CochainComplex -public import Mathlib.Algebra.Homology.Embedding.Extend -public import Mathlib.Algebra.Homology.SingleHomology -public import Mathlib.Topology.Sheaves.Abelian +import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.Constant +import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.AnalyticDifferentialForms +import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Equidimensional +import Mathlib.Algebra.Homology.Embedding.CochainComplex +import Mathlib.Algebra.Homology.Embedding.Extend +import Mathlib.Algebra.Homology.SingleHomology +import Mathlib.Topology.Sheaves.Abelian import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.HolomorphicPoincare @@ -30,6 +31,10 @@ import Mathlib.Algebra.Category.Grp.Zero import Mathlib.Algebra.Homology.Embedding.ExtendHomology import Mathlib.Topology.Sheaves.Sheafify +namespace OAI.AlgebraicGeometry.Hodge.HolomorphicDeRham + +open _root_.AlgebraicGeometry + /-! # The holomorphic de Rham complex @@ -42,14 +47,15 @@ the holomorphic de Rham complex. Both complexes are also extended by zero to int use in the derived category. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace -open scoped ContDiff Manifold +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace +open scoped ContDiff _root_.Manifold -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X : Over (Spec ↧ℂ)) (d : ℕ) @@ -58,34 +64,34 @@ forms are defined as Kähler forms of the algebra of holomorphic functions, modu coordinate derivative evaluations vanish in every chart. For a natural number `p`, this presheaf of abelian groups sends an analytic open `U` to its holomorphic `p`-forms, with restriction induced by restriction of functions. -/ -def holomorphicDeRhamPresheaf [SmoothOfRelativeDimension d X.hom] (p : ℕ) : - TopCat.Presheaf AddCommGrpCat (TopCat.of (ComplexPoint X)) where +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf [SmoothOfRelativeDimension d X.hom] (p : ℕ) : + TopCat.Presheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) where obj U := AddCommGrpCat.of - (HolomorphicForm X d U p) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d U p) map {U V} i := AddCommGrpCat.ofHom - (holomorphicFormRestriction X d i p).toAddMonoidHom + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d i p).toAddMonoidHom map_id U := by apply AddCommGrpCat.hom_ext - change (holomorphicFormRestriction X d (𝟙 U) p).toAddMonoidHom = _ - rw [holomorphicFormRestriction_id] + change (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d (𝟙 U) p).toAddMonoidHom = _ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction_id] rfl map_comp i j := by apply AddCommGrpCat.hom_ext - change (holomorphicFormRestriction X d (i ≫ j) p).toAddMonoidHom = _ - rw [holomorphicFormRestriction_comp] + change (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d (i ≫ j) p).toAddMonoidHom = _ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction_comp] rfl /-- Holomorphic differential forms vanish in degrees above the complex dimension, already before sheafification. -/ private lemma holomorphicDeRhamPresheaf_isZero_of_lt [SmoothOfRelativeDimension d X.hom] {p : ℕ} (hp : d < p) : - IsZero (holomorphicDeRhamPresheaf X d p) := by + IsZero (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d p) := by apply Functor.isZero intro U - let : Subsingleton ((holomorphicDeRhamPresheaf X d p).obj U) := + let : Subsingleton ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d p).obj U) := ⟨fun x y => by - rw [holomorphicForm_eq_zero_of_lt X d U hp x, - holomorphicForm_eq_zero_of_lt X d U hp y]⟩ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicForm_eq_zero_of_lt X d U hp x, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicForm_eq_zero_of_lt X d U hp y]⟩ exact AddCommGrpCat.isZero_of_subsingleton _ /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. Holomorphic @@ -93,77 +99,77 @@ forms are defined as Kähler forms of the algebra of holomorphic functions, modu coordinate derivative evaluations vanish in every chart. This presheaf morphism raises degree from `p` to `p+1` by exterior differentiation, sending `a₀ da₁ ∧ ⋯ ∧ daₚ` to `da₀ ∧ da₁ ∧ ⋯ ∧ daₚ`. -/ -def holomorphicDeRhamDifferential [SmoothOfRelativeDimension d X.hom] (p : ℕ) : - holomorphicDeRhamPresheaf X d p ⟶ - holomorphicDeRhamPresheaf X d (p + 1) where +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential [SmoothOfRelativeDimension d X.hom] (p : ℕ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d p ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d (p + 1) where app U := AddCommGrpCat.ofHom <| - (holomorphicFormDifferential X d U p).toAddMonoidHom + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential X d U p).toAddMonoidHom naturality {U V} i := by apply AddCommGrpCat.hom_ext ext x - exact (holomorphicFormRestriction_differential X d i p x).symm + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction_differential X d i p x).symm -lemma holomorphicDeRhamDifferential_comp [SmoothOfRelativeDimension d X.hom] (p : ℕ) : - holomorphicDeRhamDifferential X d p ≫ - holomorphicDeRhamDifferential X d (p + 1) = 0 := +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential_comp [SmoothOfRelativeDimension d X.hom] (p : ℕ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d p ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d (p + 1) = 0 := NatTrans.ext <| funext fun U => AddCommGrpCat.hom_ext <| AddMonoidHom.ext fun x => - holomorphicFormDifferential_squared X d U p x + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential_squared X d U p x /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. Holomorphic forms are defined as Kähler forms of the algebra of holomorphic functions, modulo forms whose coordinate derivative evaluations vanish in every chart. This is the nonnegative complex of presheaves assigning holomorphic `p`-forms to each open in degree `p`, with the exterior derivative as differential. -/ -def holomorphicDeRhamPresheafComplex [SmoothOfRelativeDimension d X.hom] : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheafComplex [SmoothOfRelativeDimension d X.hom] : CochainComplex - (TopCat.Presheaf AddCommGrpCat (TopCat.of (ComplexPoint X))) ℕ := + (TopCat.Presheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) ℕ := CochainComplex.of - (holomorphicDeRhamPresheaf X d) - (holomorphicDeRhamDifferential X d) - (holomorphicDeRhamDifferential_comp X d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential_comp X d) -@[simp] lemma holomorphicDeRhamPresheafComplex_d +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheafComplex_d [SmoothOfRelativeDimension d X.hom] (p : ℕ) : - (holomorphicDeRhamPresheafComplex X d).d p (p + 1) = - holomorphicDeRhamDifferential X d p := by - simp [holomorphicDeRhamPresheafComplex] + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheafComplex X d).d p (p + 1) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d p := by + simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheafComplex] /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. This morphism from the constant complex presheaf to holomorphic zero-forms assigns to `c ∈ ℂ` on each open `U` the class of the constant function `c` among Kähler zero-forms modulo forms with zero coordinate evaluations. -/ -def constantsToHolomorphicDeRhamZero [SmoothOfRelativeDimension d X.hom] : - 𝓒ᵖ(↧(ComplexPoint X); ℂ) ⟶ holomorphicDeRhamPresheaf X d 0 where +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero [SmoothOfRelativeDimension d X.hom] : + 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) ⟶ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d 0 where app U := AddCommGrpCat.ofHom - (holomorphicFormOfConstant X d U).toAddMonoidHom + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormOfConstant X d U).toAddMonoidHom naturality {U V} i := by apply AddCommGrpCat.hom_ext ext c - exact (holomorphicFormRestriction_ofConstant X d i c).symm + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction_ofConstant X d i c).symm /-- On a nonempty open set, distinct complex constants define distinct holomorphic zero-forms. -/ -private lemma holomorphicFormOfConstant_injective [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) [Nonempty U.unop] : - Function.Injective (holomorphicFormOfConstant X d U) := by +lemma holomorphicFormOfConstant_injective [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) [Nonempty U.unop] : + Function.Injective (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormOfConstant X d U) := by intro c c' hcc' - have hzero : holomorphicFormOfConstant X d U (c - c') = 0 := by + have hzero : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormOfConstant X d U (c - c') = 0 := by rw [map_sub, hcc', sub_self] - let a : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) 0 := - Algebra.DeRham.ofConstant ℂ (OpenHolomorphicFunctions X d U) (c - c') - have ha : a ∈ chartEvaluationKernel X d U 0 := by + let a : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) 0 := + _root_.OAI.Algebra.DeRham.Basic.ofConstant ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (c - c') + have ha : a ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U 0 := by change Submodule.Quotient.mk a = 0 at hzero rwa [Submodule.Quotient.mk_eq_zero] at hzero let x : U.unop := Classical.arbitrary U.unop let e := extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) x.1 have hxsource : x.1 ∈ e.source := mem_extChartAt_source x.1 - have hxe : e x.1 ∈ chartSectionDomain X d U x.1 := by + have hxe : e x.1 ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U x.1 := by refine ⟨mem_extChartAt_target x.1, ?_⟩ change e.symm (e x.1) ∈ U.unop rw [e.left_inv hxsource] exact x.2 - have heval := (mem_chartEvaluationKernel_iff X d U 0 a).1 ha + have heval := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_chartEvaluationKernel_iff X d U 0 a).1 ha x.1 (e x.1) hxe - rw [chartEvaluation_ofConstant X d U x.1 (c - c') hxe] at heval + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_ofConstant X d U x.1 (c - c') hxe] at heval have hcoeff := congrArg (fun f : (Fin d → ℂ) [⋀^Fin 0]→L[ℂ] ℂ ↦ f Fin.elim0) heval exact sub_eq_zero.mp (by simpa using hcoeff) @@ -171,167 +177,167 @@ private lemma holomorphicFormOfConstant_injective [SmoothOfRelativeDimension d X set_option backward.isDefEq.respectTransparency false in /-- The inclusion of complex constants into holomorphic zero-forms is a monomorphism on every stalk. -/ -private lemma constantsToHolomorphicDeRhamZero_stalk_mono - [SmoothOfRelativeDimension d X.hom] (x : ComplexPoint X) : +lemma constantsToHolomorphicDeRhamZero_stalk_mono + [SmoothOfRelativeDimension d X.hom] (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : Mono ((TopCat.Presheaf.stalkFunctor AddCommGrpCat x).map - (constantsToHolomorphicDeRhamZero X d)) := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d)) := by rw [AddCommGrpCat.mono_iff_injective] intro z z' h - obtain ⟨U, hxU, c, rfl⟩ := 𝓒ᵖ(↧(ComplexPoint X); ℂ).exists_germ_eq z - obtain ⟨V, hxV, c', rfl⟩ := 𝓒ᵖ(↧(ComplexPoint X); ℂ).exists_germ_eq z' + obtain ⟨U, hxU, c, rfl⟩ := 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ).exists_germ_eq z + obtain ⟨V, hxV, c', rfl⟩ := 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ).exists_germ_eq z' rw [TopCat.Presheaf.stalkFunctor_map_germ_apply, TopCat.Presheaf.stalkFunctor_map_germ_apply] at h obtain ⟨W, hxW, iWU, iWV, hW⟩ := - (holomorphicDeRhamPresheaf X d 0).germ_eq x hxU hxV - ((constantsToHolomorphicDeRhamZero X d).app (.op U) c) - ((constantsToHolomorphicDeRhamZero X d).app (.op V) c') h + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d 0).germ_eq x hxU hxV + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d).app (.op U) c) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d).app (.op V) c') h let : Nonempty W := ⟨⟨x, hxW⟩⟩ have hcc' : c = c' := by apply holomorphicFormOfConstant_injective X d (.op W) have hc := congrArg (fun k : - 𝓒ᵖ(↧(ComplexPoint X); ℂ).obj (.op U) ⟶ - (holomorphicDeRhamPresheaf X d 0).obj (.op W) ↦ k c) - ((constantsToHolomorphicDeRhamZero X d).naturality iWU.op) + 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ).obj (.op U) ⟶ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d 0).obj (.op W) ↦ k c) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d).naturality iWU.op) have hc' := congrArg (fun k : - 𝓒ᵖ(↧(ComplexPoint X); ℂ).obj (.op V) ⟶ - (holomorphicDeRhamPresheaf X d 0).obj (.op W) ↦ k c') - ((constantsToHolomorphicDeRhamZero X d).naturality iWV.op) - change holomorphicFormOfConstant X d (.op W) c = - (holomorphicDeRhamPresheaf X d 0).map iWU.op - ((constantsToHolomorphicDeRhamZero X d).app (.op U) c) at hc - change holomorphicFormOfConstant X d (.op W) c' = - (holomorphicDeRhamPresheaf X d 0).map iWV.op - ((constantsToHolomorphicDeRhamZero X d).app (.op V) c') at hc' + 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ).obj (.op V) ⟶ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d 0).obj (.op W) ↦ k c') + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d).naturality iWV.op) + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormOfConstant X d (.op W) c = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d 0).map iWU.op + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d).app (.op U) c) at hc + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormOfConstant X d (.op W) c' = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d 0).map iWV.op + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d).app (.op V) c') at hc' exact hc.trans (hW.trans hc'.symm) subst c' - rw [← 𝓒ᵖ(↧(ComplexPoint X); ℂ).germ_res_apply iWU x hxW, - ← 𝓒ᵖ(↧(ComplexPoint X); ℂ).germ_res_apply iWV x hxW] + rw [← 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ).germ_res_apply iWU x hxW, + ← 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ).germ_res_apply iWV x hxW] rfl -lemma constantsToHolomorphicDeRhamZero_comp_differential +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero_comp_differential [SmoothOfRelativeDimension d X.hom] : - constantsToHolomorphicDeRhamZero X d ≫ - holomorphicDeRhamDifferential X d 0 = 0 := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d 0 = 0 := NatTrans.ext <| funext fun U => AddCommGrpCat.hom_ext <| AddMonoidHom.ext fun c => - holomorphicFormDifferential_ofConstant X d U c + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential_ofConstant X d U c /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. Holomorphic forms are defined as Kähler forms of the algebra of holomorphic functions, modulo forms whose coordinate derivative evaluations vanish in every chart. For a natural number `p`, this is the sheafification, as abelian groups, of the presheaf of holomorphic `p`-forms on analytic opens. -/ -def holomorphicDeRhamSheaf [SmoothOfRelativeDimension d X.hom] (p : ℕ) : - TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X)) := - let J := Opens.grothendieckTopology (TopCat.of (ComplexPoint X)) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheaf [SmoothOfRelativeDimension d X.hom] (p : ℕ) : + TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) := + let J := Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (presheafToSheaf J AddCommGrpCat).obj - (holomorphicDeRhamPresheaf X d p) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d p) /-- The sheaf of holomorphic `p`-forms is zero for `p` above the complex dimension. -/ -lemma holomorphicDeRhamSheaf_isZero_of_lt +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheaf_isZero_of_lt [SmoothOfRelativeDimension d X.hom] {p : ℕ} (hp : d < p) : - IsZero (holomorphicDeRhamSheaf X d p) := by - let J := Opens.grothendieckTopology (TopCat.of (ComplexPoint X)) + IsZero (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheaf X d p) := by + let J := Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) exact (presheafToSheaf J AddCommGrpCat).map_isZero (holomorphicDeRhamPresheaf_isZero_of_lt X d hp) /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. This is the sheaf morphism `d : Ω^p → Ω^{p+1}` obtained by sheafifying exterior differentiation of holomorphic forms. On a local expression it sends `a₀ da₁ ∧ ⋯ ∧ daₚ` to `da₀ ∧ da₁ ∧ ⋯ ∧ daₚ`. -/ -def holomorphicDeRhamSheafDifferential [SmoothOfRelativeDimension d X.hom] (p : ℕ) : - holomorphicDeRhamSheaf X d p ⟶ - holomorphicDeRhamSheaf X d (p + 1) := - let J := Opens.grothendieckTopology (TopCat.of (ComplexPoint X)) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheafDifferential [SmoothOfRelativeDimension d X.hom] (p : ℕ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheaf X d p ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheaf X d (p + 1) := + let J := Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (presheafToSheaf J AddCommGrpCat).map - (holomorphicDeRhamDifferential X d p) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d p) /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. The holomorphic de Rham complex is `Ω⁰ → Ω¹ → Ω² → ⋯`, with exterior differentiation. Each term is obtained by sheafifying Kähler forms of holomorphic functions modulo forms whose coordinate derivative evaluations vanish in every chart. Degrees are natural numbers. -/ -def holomorphicDeRhamComplex [SmoothOfRelativeDimension d X.hom] : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex [SmoothOfRelativeDimension d X.hom] : CochainComplex - (TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X))) ℕ := + (TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) ℕ := CochainComplex.of - (holomorphicDeRhamSheaf X d) - (holomorphicDeRhamSheafDifferential X d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheaf X d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheafDifferential X d) (fun p => by - let J := Opens.grothendieckTopology (TopCat.of (ComplexPoint X)) + let J := Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) change (presheafToSheaf J AddCommGrpCat).map - (holomorphicDeRhamDifferential X d p) ≫ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d p) ≫ (presheafToSheaf J AddCommGrpCat).map - (holomorphicDeRhamDifferential X d (p + 1)) = 0 - rw [← Functor.map_comp, holomorphicDeRhamDifferential_comp, Functor.map_zero]) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d (p + 1)) = 0 + rw [← Functor.map_comp, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential_comp, Functor.map_zero]) -@[simp] lemma holomorphicDeRhamComplex_d [SmoothOfRelativeDimension d X.hom] (p : ℕ) : - (holomorphicDeRhamComplex X d).d p (p + 1) = - holomorphicDeRhamSheafDifferential X d p := by - simp [holomorphicDeRhamComplex] +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex_d [SmoothOfRelativeDimension d X.hom] (p : ℕ) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex X d).d p (p + 1) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheafDifferential X d p := by + simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex] set_option backward.isDefEq.respectTransparency false in /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. This map of complexes sends a holomorphic form on an analytic open to its section in the sheaf of such forms. It is the degreewise sheafification unit of the presheaf de Rham complex, and commutes with exterior differentiation. -/ -noncomputable def holomorphicDeRhamSheafificationUnit +noncomputable def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheafificationUnit [SmoothOfRelativeDimension d X.hom] : - holomorphicDeRhamPresheafComplex X d ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheafComplex X d ⟶ (TopCat.Sheaf.forget AddCommGrpCat - (TopCat.of (ComplexPoint X))).mapHomologicalComplex - (ComplexShape.up ℕ) |>.obj (holomorphicDeRhamComplex X d) where + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))).mapHomologicalComplex + (ComplexShape.up ℕ) |>.obj (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex X d) where f p := toSheafify - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) - (holomorphicDeRhamPresheaf X d p) + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d p) comm' i j hij := by obtain rfl := hij - rw [Functor.mapHomologicalComplex_obj_d, holomorphicDeRhamPresheafComplex_d, - holomorphicDeRhamComplex_d] - dsimp [holomorphicDeRhamSheafDifferential, holomorphicDeRhamSheaf] + rw [Functor.mapHomologicalComplex_obj_d, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheafComplex_d, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex_d] + dsimp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheafDifferential, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheaf] exact (toSheafify_naturality - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) - (holomorphicDeRhamDifferential X d i)).symm + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d i)).symm set_option backward.isDefEq.respectTransparency false in /-- The sheafified holomorphic de Rham complex is exact in every positive degree. -/ -private lemma holomorphicDeRhamComplex_exactAt_succ +lemma holomorphicDeRhamComplex_exactAt_succ [SmoothOfRelativeDimension d X.hom] (p : ℕ) : - (holomorphicDeRhamComplex X d).ExactAt (p + 1) := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex X d).ExactAt (p + 1) := by rw [HomologicalComplex.exactAt_iff' - (K := holomorphicDeRhamComplex X d) + (K := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex X d) (i := p) (j := p + 1) (k := (p + 1) + 1) (by simp) (by simp)] rw [TopCat.Sheaf.exact_iff_stalkFunctor_map_exact] intro x let stalk := TopCat.Presheaf.stalkFunctor AddCommGrpCat x - let P := holomorphicDeRhamPresheafComplex X d + let P := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheafComplex X d have hP : (P.sc' p (p + 1) ((p + 1) + 1)).map stalk |>.Exact := - TopCat.Presheaf.stalkExact_of_locallyPrimitive + _root_.OAI.Topology.Sheaves.StalkExact.TopCat.Presheaf.stalkExact_of_locallyPrimitive (P.sc' p (p + 1) ((p + 1) + 1)) (by intro y U hyU form hform dsimp [P, HomologicalComplex.sc', HomologicalComplex.shortComplexFunctor'] at hform ⊢ - rw [holomorphicDeRhamPresheafComplex_d] at hform - rw [holomorphicDeRhamPresheafComplex_d] - change holomorphicFormDifferential X d (.op U) (p + 1) form = 0 at hform + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheafComplex_d] at hform + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheafComplex_d] + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential X d (.op U) (p + 1) form = 0 at hform obtain ⟨W, k, θ, hyW, hθ⟩ := - exists_local_holomorphicForm_primitive X d (.op U) y hyU p form hform + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_local_holomorphicForm_primitive X d (.op U) y hyU p form hform exact ⟨W.unop, hyW, k.unop, θ, hθ⟩) x - let unit := holomorphicDeRhamSheafificationUnit X d + let unit := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheafificationUnit X d let stalkUnit := (stalk.mapHomologicalComplex (ComplexShape.up ℕ)).map unit let η := (HomologicalComplex.shortComplexFunctor' AddCommGrpCat (ComplexShape.up ℕ) p (p + 1) ((p + 1) + 1)).map stalkUnit let : IsIso η.τ₁ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat - (holomorphicDeRhamPresheaf X d p) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d p) let : IsIso η.τ₂ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat - (holomorphicDeRhamPresheaf X d (p + 1)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d (p + 1)) let : IsIso η.τ₃ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat - (holomorphicDeRhamPresheaf X d ((p + 1) + 1)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d ((p + 1) + 1)) let : IsIso η := ShortComplex.isIso_of_isIso η exact ShortComplex.exact_of_iso (asIso η) hP /-- Let `X` be a complex scheme. On its analytic space `X(ℂ)`, this endomorphism of the constant presheaf of abelian groups with value `ℂ` acts on each open by `c ↦ conj(c)`. -/ -def conjConstantComplexPresheaf : - 𝓒ᵖ(↧(ComplexPoint X); ℂ) ⟶ 𝓒ᵖ(↧(ComplexPoint X); ℂ) where +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexPresheaf : + 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) ⟶ 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) where app _ := AddCommGrpCat.ofHom (starRingEnd ℂ).toAddMonoidHom naturality {U V} i := by ext x @@ -340,138 +346,138 @@ def conjConstantComplexPresheaf : /-- Let `X` be a complex scheme. This endomorphism of the constant complex sheaf on `X(ℂ)` conjugates locally constant complex-valued functions pointwise. It is additive and conjugate-linear. -/ -def conjConstantComplexSheaf : - 𝓒(↧(ComplexPoint X); ℂ) ⟶ 𝓒(↧(ComplexPoint X); ℂ) := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexSheaf : + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) ⟶ 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) := let J := Opens.grothendieckTopology - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (presheafToSheaf J AddCommGrpCat).map - (conjConstantComplexPresheaf X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexPresheaf X) /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. This map from the constant complex sheaf to the sheaf `Ω⁰` of holomorphic zero-forms regards locally constant complex-valued functions as holomorphic zero-forms. -/ -def constantsToHolomorphicDeRhamZeroSheaf [SmoothOfRelativeDimension d X.hom] : - 𝓒(↧(ComplexPoint X); ℂ) ⟶ holomorphicDeRhamSheaf X d 0 := - let J := Opens.grothendieckTopology (TopCat.of (ComplexPoint X)) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZeroSheaf [SmoothOfRelativeDimension d X.hom] : + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) ⟶ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheaf X d 0 := + let J := Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (presheafToSheaf J AddCommGrpCat).map - (constantsToHolomorphicDeRhamZero X d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d) -lemma constantsToHolomorphicDeRhamZeroSheaf_comp_differential +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZeroSheaf_comp_differential [SmoothOfRelativeDimension d X.hom] : - constantsToHolomorphicDeRhamZeroSheaf X d ≫ - holomorphicDeRhamSheafDifferential X d 0 = 0 := by - let J := Opens.grothendieckTopology (TopCat.of (ComplexPoint X)) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZeroSheaf X d ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheafDifferential X d 0 = 0 := by + let J := Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) change (presheafToSheaf J AddCommGrpCat).map - (constantsToHolomorphicDeRhamZero X d) ≫ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d) ≫ (presheafToSheaf J AddCommGrpCat).map - (holomorphicDeRhamDifferential X d 0) = 0 - rw [← Functor.map_comp, constantsToHolomorphicDeRhamZero_comp_differential, + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d 0) = 0 + rw [← Functor.map_comp, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero_comp_differential, Functor.map_zero] /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. This is the sequence of presheaves `ℂ → Ω⁰ → Ω¹`, where the first arrow sends constants to holomorphic zero-forms and the second is exterior differentiation. The composite is zero because constants have zero derivative. -/ -noncomputable def constantsToHolomorphicDeRhamPresheafShortComplex +noncomputable def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamPresheafShortComplex [SmoothOfRelativeDimension d X.hom] : ShortComplex (TopCat.Presheaf AddCommGrpCat - (TopCat.of (ComplexPoint X))) := - ShortComplex.mk (constantsToHolomorphicDeRhamZero X d) - (holomorphicDeRhamDifferential X d 0) - (constantsToHolomorphicDeRhamZero_comp_differential X d) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) := + ShortComplex.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d 0) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero_comp_differential X d) /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. This is the sequence of sheaves `ℂ_X → Ω⁰ → Ω¹`, where `ℂ_X` consists of locally constant functions and the two arrows are inclusion as holomorphic zero-forms and exterior differentiation. The form sheaves are obtained by sheafifying the corresponding presheaves. -/ -noncomputable def constantsToHolomorphicDeRhamSheafShortComplex +noncomputable def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamSheafShortComplex [SmoothOfRelativeDimension d X.hom] : ShortComplex (TopCat.Sheaf AddCommGrpCat - (TopCat.of (ComplexPoint X))) := - ShortComplex.mk (constantsToHolomorphicDeRhamZeroSheaf X d) - (holomorphicDeRhamSheafDifferential X d 0) - (constantsToHolomorphicDeRhamZeroSheaf_comp_differential X d) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) := + ShortComplex.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZeroSheaf X d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheafDifferential X d 0) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZeroSheaf_comp_differential X d) set_option backward.isDefEq.respectTransparency false in /-- Let `X` be a smooth complex scheme of dimension `d`, with analytic space `X(ℂ)`. This morphism sends the presheaf sequence `ℂ → Ω⁰ → Ω¹` to the underlying presheaves of its sheafification. Each component sends a constant or a holomorphic form to the section represented by its local germs. -/ -noncomputable def constantsToHolomorphicDeRhamShortComplexSheafificationUnit +noncomputable def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamShortComplexSheafificationUnit [SmoothOfRelativeDimension d X.hom] : - constantsToHolomorphicDeRhamPresheafShortComplex X d ⟶ - (constantsToHolomorphicDeRhamSheafShortComplex X d).map + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamPresheafShortComplex X d ⟶ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamSheafShortComplex X d).map (TopCat.Sheaf.forget AddCommGrpCat - (TopCat.of (ComplexPoint X))) where + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) where τ₁ := toSheafify - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) - 𝓒ᵖ(↧(ComplexPoint X); ℂ) + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) + 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) τ₂ := toSheafify - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) - (holomorphicDeRhamPresheaf X d 0) + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d 0) τ₃ := toSheafify - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) - (holomorphicDeRhamPresheaf X d 1) + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d 1) comm₁₂ := (toSheafify_naturality - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) - (constantsToHolomorphicDeRhamZero X d)).symm + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d)).symm comm₂₃ := (toSheafify_naturality - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) - (holomorphicDeRhamDifferential X d 0)).symm + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d 0)).symm set_option backward.isDefEq.respectTransparency false in /-- The augmented holomorphic de Rham sheaf complex is exact. Thus the kernel of the exterior derivative on holomorphic functions is exactly the constant sheaf. -/ -private lemma constantsToHolomorphicDeRhamSheafShortComplex_exact +lemma constantsToHolomorphicDeRhamSheafShortComplex_exact [SmoothOfRelativeDimension d X.hom] : - (constantsToHolomorphicDeRhamSheafShortComplex X d).Exact := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamSheafShortComplex X d).Exact := by rw [TopCat.Sheaf.exact_iff_stalkFunctor_map_exact] intro x let stalk := TopCat.Presheaf.stalkFunctor AddCommGrpCat x - have hP : ((constantsToHolomorphicDeRhamPresheafShortComplex X d).map + have hP : ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamPresheafShortComplex X d).map stalk).Exact := - TopCat.Presheaf.stalkExact_of_locallyPrimitive - (constantsToHolomorphicDeRhamPresheafShortComplex X d) (by + _root_.OAI.Topology.Sheaves.StalkExact.TopCat.Presheaf.stalkExact_of_locallyPrimitive + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamPresheafShortComplex X d) (by intro y U hyU form hform - change holomorphicFormDifferential X d (.op U) 0 form = 0 at hform + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential X d (.op U) 0 form = 0 at hform obtain ⟨V, i, c, hyV, hi⟩ := - exists_local_holomorphicForm_eq_constant X d (.op U) y hyU form hform + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_local_holomorphicForm_eq_constant X d (.op U) y hyU form hform exact ⟨V.unop, hyV, i.unop, c, hi.symm⟩) x - let unit := constantsToHolomorphicDeRhamShortComplexSheafificationUnit X d + let unit := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamShortComplexSheafificationUnit X d let η := (stalk.mapShortComplex).map unit let : IsIso η.τ₁ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat - 𝓒ᵖ(↧(ComplexPoint X); ℂ) + 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) let : IsIso η.τ₂ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat - (holomorphicDeRhamPresheaf X d 0) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d 0) let : IsIso η.τ₃ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat - (holomorphicDeRhamPresheaf X d 1) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d 1) let : IsIso η := ShortComplex.isIso_of_isIso η exact ShortComplex.exact_of_iso (asIso η) hP set_option backward.isDefEq.respectTransparency false in /-- The sheafified inclusion of complex constants into holomorphic functions is a monomorphism. -/ -private lemma constantsToHolomorphicDeRhamZeroSheaf_mono +lemma constantsToHolomorphicDeRhamZeroSheaf_mono [SmoothOfRelativeDimension d X.hom] : - Mono (constantsToHolomorphicDeRhamZeroSheaf X d) := by + Mono (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZeroSheaf X d) := by rw [TopCat.Presheaf.mono_iff_stalk_mono] intro x let stalk := TopCat.Presheaf.stalkFunctor AddCommGrpCat x - let unit := constantsToHolomorphicDeRhamShortComplexSheafificationUnit X d - let S := (constantsToHolomorphicDeRhamPresheafShortComplex X d).map stalk - let T := (constantsToHolomorphicDeRhamSheafShortComplex X d).map + let unit := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamShortComplexSheafificationUnit X d + let S := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamPresheafShortComplex X d).map stalk + let T := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamSheafShortComplex X d).map (TopCat.Sheaf.forget AddCommGrpCat - (TopCat.of (ComplexPoint X)) ⋙ stalk) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) ⋙ stalk) let η : S ⟶ T := (stalk.mapShortComplex).map unit let : IsIso η.τ₁ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat - 𝓒ᵖ(↧(ComplexPoint X); ℂ) + 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) let : IsIso η.τ₂ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat - (holomorphicDeRhamPresheaf X d 0) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d 0) let : Mono S.f := constantsToHolomorphicDeRhamZero_stalk_mono X d x change Mono T.f have h : T.f = inv η.τ₁ ≫ S.f ≫ η.τ₂ := by @@ -484,23 +490,23 @@ private lemma constantsToHolomorphicDeRhamZeroSheaf_mono nonnegative sheaf complexes `ℂ_X[0] → Ω^•` includes locally constant functions as holomorphic zero-forms. The source is zero in every positive degree, and the target differential is exterior differentiation. -/ -def constantsToHolomorphicDeRhamComplex [SmoothOfRelativeDimension d X.hom] : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex [SmoothOfRelativeDimension d X.hom] : (CochainComplex.single₀ - (TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X)))).obj - 𝓒(↧(ComplexPoint X); ℂ) ⟶ - holomorphicDeRhamComplex X d := - (CochainComplex.fromSingle₀Equiv (holomorphicDeRhamComplex X d) - 𝓒(↧(ComplexPoint X); ℂ)).symm - ⟨constantsToHolomorphicDeRhamZeroSheaf X d, by - rw [holomorphicDeRhamComplex_d] - exact constantsToHolomorphicDeRhamZeroSheaf_comp_differential X d⟩ + (TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))).obj + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex X d := + (CochainComplex.fromSingle₀Equiv (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex X d) + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ)).symm + ⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZeroSheaf X d, by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex_d] + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZeroSheaf_comp_differential X d⟩ set_option backward.isDefEq.respectTransparency false in /-- The holomorphic Poincaré lemma identifies the degree-zero de Rham cohomology sheaf with the constant sheaf. -/ -lemma constantsToHolomorphicDeRhamComplex_quasiIsoAt_zero +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex_quasiIsoAt_zero [SmoothOfRelativeDimension d X.hom] : - QuasiIsoAt (constantsToHolomorphicDeRhamComplex X d) 0 := by + QuasiIsoAt (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex X d) 0 := by rw [CochainComplex.quasiIsoAt₀_iff, ShortComplex.quasiIso_iff_of_zeros] · exact ⟨constantsToHolomorphicDeRhamSheafShortComplex_exact X d, constantsToHolomorphicDeRhamZeroSheaf_mono X d⟩ @@ -509,108 +515,113 @@ lemma constantsToHolomorphicDeRhamComplex_quasiIsoAt_zero set_option backward.isDefEq.respectTransparency false in /-- The holomorphic Poincaré lemma makes the constant-to-de Rham comparison a quasi-isomorphism in every positive degree. -/ -lemma constantsToHolomorphicDeRhamComplex_quasiIsoAt_succ +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex_quasiIsoAt_succ [SmoothOfRelativeDimension d X.hom] (p : ℕ) : - QuasiIsoAt (constantsToHolomorphicDeRhamComplex X d) (p + 1) := by + QuasiIsoAt (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex X d) (p + 1) := by rw [quasiIsoAt_iff_exactAt _ _ - (CochainComplex.exactAt_succ_single_obj 𝓒(↧(ComplexPoint X); ℂ) p)] + (CochainComplex.exactAt_succ_single_obj 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) p)] exact holomorphicDeRhamComplex_exactAt_succ X d p /-- The constant sheaf resolves the holomorphic de Rham complex in all natural degrees. -/ -instance constantsToHolomorphicDeRhamComplex_quasiIso +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex_quasiIso [SmoothOfRelativeDimension d X.hom] : - QuasiIso (constantsToHolomorphicDeRhamComplex X d) where + QuasiIso (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex X d) where quasiIsoAt p := by rcases p with _ | p - · exact constantsToHolomorphicDeRhamComplex_quasiIsoAt_zero X d - · exact constantsToHolomorphicDeRhamComplex_quasiIsoAt_succ X d p + · exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex_quasiIsoAt_zero X d + · exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex_quasiIsoAt_succ X d p /-- Let `X` be a complex scheme. This integer-indexed complex of sheaves of abelian groups on `X(ℂ)` has the constant complex sheaf in degree zero, zero in every other degree, and zero differentials. -/ @[implicit_reducible] -def constantComplexSheafComplexInt : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantComplexSheafComplexInt : CochainComplex - (TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X))) ℤ := + (TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) ℤ := ((CochainComplex.single₀ - (TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X)))).obj - 𝓒(↧(ComplexPoint X); ℂ)).extend ComplexShape.embeddingUpNat + (TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))).obj + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ)).extend ComplexShape.embeddingUpNat /-- Let `X` be a complex scheme. This endomorphism of the nonnegative sheaf complex `ℂ_X[0]` conjugates locally constant functions in degree zero; every positive-degree term is zero. -/ -def conjConstantComplexComplex : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexComplex : (CochainComplex.single₀ - (TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X)))).obj - 𝓒(↧(ComplexPoint X); ℂ) ⟶ + (TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))).obj + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) ⟶ (CochainComplex.single₀ - (TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X)))).obj - 𝓒(↧(ComplexPoint X); ℂ) := - (CochainComplex.single₀ _).map (conjConstantComplexSheaf X) + (TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))).obj + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) := + (CochainComplex.single₀ _).map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexSheaf X) /-- Let `X` be a complex scheme. This endomorphism of the integer-indexed sheaf complex `ℂ_X[0]` conjugates locally constant functions in degree zero, with zero terms in all other degrees. It is additive and conjugate-linear. -/ -def conjConstantComplexSheafComplexInt : - constantComplexSheafComplexInt X ⟶ constantComplexSheafComplexInt X := - HomologicalComplex.extendMap (conjConstantComplexComplex X) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexSheafComplexInt : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantComplexSheafComplexInt X ⟶ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantComplexSheafComplexInt X := + HomologicalComplex.extendMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexComplex X) ComplexShape.embeddingUpNat /-- Let `X` be a smooth integral scheme over `ℂ`. This integer-indexed complex on `X(ℂ)` has the sheaf of holomorphic `p`-forms in each degree `p ≥ 0`, exterior differentiation as differential, and zero terms in negative degrees. Its charts use the dimension of `X`. -/ -def holomorphicDeRhamComplexInt [IsIntegral X.left] [Smooth X.hom] : - CochainComplex (TopCat.Sheaf AddCommGrpCat ↧(ComplexPoint X)) ℤ := - (holomorphicDeRhamComplex X (dim X.left)).extend ComplexShape.embeddingUpNat +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplexInt [IsIntegral X.left] [Smooth X.hom] : + CochainComplex (TopCat.Sheaf AddCommGrpCat ↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) ℤ := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex X (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left)).extend ComplexShape.embeddingUpNat /-- `Ω•(X)` is the holomorphic de Rham complex of `X(ℂ)`, indexed by the integers. -/ -scoped notation:max "Ω•" "(" X ")" => holomorphicDeRhamComplexInt X +scoped notation:max "Ω•" "(" X ")" => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplexInt X instance [IsIntegral X.left] [Smooth X.hom] : CochainComplex.IsStrictlyGE Ω•(X) 0 := by - unfold holomorphicDeRhamComplexInt + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplexInt infer_instance /-- The integer-indexed holomorphic de Rham complex vanishes in every degree above the complex dimension. -/ -lemma holomorphicDeRhamComplexInt_isZero_X_of_lt - [IsIntegral X.left] [Smooth X.hom] (n : ℤ) (hn : (dim X.left : ℤ) < n) : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplexInt_isZero_X_of_lt + [IsIntegral X.left] [Smooth X.hom] (n : ℤ) (hn : (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left : ℤ) < n) : IsZero (Ω•(X).X n) := by have hn0 : 0 ≤ n := by lia let p := n.toNat have hp : (p : ℤ) = n := by simp [p, Int.toNat_of_nonneg hn0] - have hdp : dim X.left < p := by lia - exact (holomorphicDeRhamSheaf_isZero_of_lt X (dim X.left) hdp).of_iso - ((holomorphicDeRhamComplex X (dim X.left)).extendXIso + have hdp : _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left < p := by lia + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamSheaf_isZero_of_lt X (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) hdp).of_iso + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex X (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left)).extendXIso ComplexShape.embeddingUpNat hp) /-- The integer-indexed holomorphic de Rham complex is strictly supported in degrees at most the complex dimension. -/ -noncomputable instance holomorphicDeRhamComplexInt_isStrictlyLE +noncomputable instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplexInt_isStrictlyLE [IsIntegral X.left] [Smooth X.hom] : Ω•(X).IsStrictlySupported - (ComplexShape.embeddingUpIntLE (dim X.left)) where + (ComplexShape.embeddingUpIntLE (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left)) where isZero n hn := by rw [ComplexShape.notMem_range_embeddingUpIntLE_iff] at hn - exact holomorphicDeRhamComplexInt_isZero_X_of_lt X n hn + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplexInt_isZero_X_of_lt X n hn /-- Let `X` be a smooth integral scheme over `ℂ`. This map `ℂ_X[0] → Ω^•` of integer-indexed sheaf complexes includes locally constant functions as holomorphic zero-forms. The source is concentrated in degree zero and the holomorphic de Rham complex is zero in negative degrees. -/ -def constantsToHolomorphicDeRhamComplexInt [IsIntegral X.left] [Smooth X.hom] : - constantComplexSheafComplexInt X ⟶ Ω•(X) := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt [IsIntegral X.left] [Smooth X.hom] : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantComplexSheafComplexInt X ⟶ Ω•(X) := HomologicalComplex.extendMap - (constantsToHolomorphicDeRhamComplex X (dim X.left)) ComplexShape.embeddingUpNat + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex X (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left)) ComplexShape.embeddingUpNat /-- Extending by zero gives the holomorphic de Rham quasi-isomorphism in every integer degree. -/ -instance constantsToHolomorphicDeRhamComplexInt_quasiIso +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt_quasiIso [IsIntegral X.left] [Smooth X.hom] : - QuasiIso (constantsToHolomorphicDeRhamComplexInt X) := by + QuasiIso (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt X) := by change QuasiIso (HomologicalComplex.extendMap - (constantsToHolomorphicDeRhamComplex X (dim X.left)) ComplexShape.embeddingUpNat) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex X (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left)) ComplexShape.embeddingUpNat) exact (HomologicalComplex.quasiIso_extendMap_iff - (constantsToHolomorphicDeRhamComplex X (dim X.left)) ComplexShape.embeddingUpNat).2 + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex X (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left)) ComplexShape.embeddingUpNat).2 inferInstance -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Hodge.HolomorphicDeRham diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ProjectiveSpace.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ProjectiveSpace.lean index 9273522c8b..4bef363a2a 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ProjectiveSpace.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/ProjectiveSpace.lean @@ -12,16 +12,21 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.AlgebraicGeometry.Morphisms.Proper -public import Mathlib.AlgebraicGeometry.ProjectiveSpectrum.Scheme -public import Mathlib.RingTheory.MvPolynomial.Homogeneous +import Mathlib.AlgebraicGeometry.Morphisms.Proper +import Mathlib.AlgebraicGeometry.ProjectiveSpectrum.Scheme +import Mathlib.RingTheory.MvPolynomial.Homogeneous import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import Mathlib.AlgebraicGeometry.ProjectiveSpectrum.Proper +namespace OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs + +open _root_.AlgebraicGeometry + /-! # Projective space and explicit projective presentations @@ -33,12 +38,12 @@ The original projective-space construction was contributed to Mathlib in [`mathlib4` pull request #26061](https://github.com/leanprover-community/mathlib4/pull/26061). -/ -@[expose] public section +section -- The contents of this file will be in mathlib as of #26061 universe u v -open CategoryTheory Limits MvPolynomial AlgebraicGeometry +open _root_.CategoryTheory Limits _root_.MvPolynomial _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs variable (n : Type v) (S : Scheme.{max u v}) @@ -54,7 +59,7 @@ noncomputable def ProjectiveSpace : Scheme.{max u v} := pullback (terminal.from S) (terminal.from (Proj ℤ[n].{u, v})) /-- `ℙ(n; S)` is projective space over `S` with homogeneous coordinates indexed by `n`. -/ -scoped [AlgebraicGeometry] notation "ℙ("n"; "S")" => ProjectiveSpace n S +scoped [AlgebraicGeometry] notation "ℙ("n"; "S")" => _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace n S namespace ProjectiveSpace @@ -134,9 +139,9 @@ structure Presentation (f : X ⟶ T) where end ProjectiveSpace -namespace AlgebraicGeometry +section -open ProjectiveSpace +open _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace universe w @@ -146,15 +151,19 @@ variable {X T : Scheme.{w}} closed immersion `X → ℙ^d_T` whose composite with the projection to `T` is `f`. -/ class IsProjective (f : X ⟶ T) : Prop where /-- A finite-dimensional projective presentation exists. -/ - nonempty_presentation : Nonempty (Presentation f) + nonempty_presentation : Nonempty (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.Presentation f) /-- A projective morphism in the explicit-presentation sense is proper. -/ instance IsProjective.isProper {f : X ⟶ T} [h : IsProjective f] : IsProper f := by obtain ⟨P⟩ := h.nonempty_presentation let : IsClosedImmersion P.immersion := P.isClosedImmersion have hcomp : IsProper - (P.immersion ≫ toBase (Fin (P.ambientDimension + 1)) T) := by + (P.immersion ≫ _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (P.ambientDimension + 1)) T) := by infer_instance rwa [P.immersion_toBase] at hcomp -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Stratification/Analytification.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Stratification/Analytification.lean index fbc6efa2bc..6f77ede582 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Stratification/Analytification.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Stratification/Analytification.lean @@ -1,14 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.SingularLocusDimension +import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.SingularLocusDimension import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import Mathlib.AlgebraicGeometry.AlgClosed.Basic import Mathlib.Analysis.Complex.Polynomial.Basic +namespace OAI.AlgebraicGeometry.Stratification.Analytification + +open _root_.AlgebraicGeometry + /-! # Complex points of the smooth decomposition @@ -20,19 +25,25 @@ Analytic triangulation, homology-dimension theorems, and frontier conditions are scope of this file. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X : Over (Spec ↧ℂ)) {Y : Over (Spec ↧ℂ)} variable [LocallyOfFiniteType X.hom] [NoetherianSpace X.left] -instance reducedClosedSmoothPiece_locallyOfFiniteType (T : Closeds X.left) : - LocallyOfFiniteType (Over.mk (reducedClosedSmoothPieceι X.hom T ≫ X.hom)).hom := by - change LocallyOfFiniteType (reducedClosedSmoothPieceι X.hom T ≫ X.hom) +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.reducedClosedSmoothPiece_locallyOfFiniteType (T : Closeds X.left) : + LocallyOfFiniteType (Over.mk (_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSmoothPieceι X.hom T ≫ X.hom)).hom := by + change LocallyOfFiniteType (_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSmoothPieceι X.hom T ≫ X.hom) infer_instance -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Stratification.Analytification diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Stratification/Basic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Stratification/Basic.lean index 62ed87f52c..c7e30a3b48 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Stratification/Basic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicGeometry/Stratification/Basic.lean @@ -1,13 +1,18 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Locus -public import Mathlib.AlgebraicGeometry.Morphisms.Immersion -public import Mathlib.AlgebraicGeometry.Morphisms.ClosedImmersion -public import Mathlib.AlgebraicGeometry.IdealSheaf.Subscheme +import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Locus +import Mathlib.AlgebraicGeometry.Morphisms.Immersion +import Mathlib.AlgebraicGeometry.Morphisms.ClosedImmersion +import Mathlib.AlgebraicGeometry.IdealSheaf.Subscheme + +namespace OAI.AlgebraicGeometry.Stratification.Basic + +open _root_.AlgebraicGeometry /-! # A finite smooth decomposition of reduced closed subschemes @@ -19,11 +24,11 @@ successive closed subsets, with their induced reduced scheme structures, are smo locally closed subschemes. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section universe u @@ -97,4 +102,8 @@ local instance reducedSmoothStratificationWellFoundedRelation [NoetherianSpace X WellFoundedRelation (Closeds X) := ⟨(· < ·), wellFounded_lt⟩ -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Stratification.Basic diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/LocalHomology/ComplexClass.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/LocalHomology/ComplexClass.lean index 503e38b48e..58ae017174 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/LocalHomology/ComplexClass.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/LocalHomology/ComplexClass.lean @@ -12,13 +12,16 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FundamentalClass -public import HodgeConjecture.Lemmas.LinearAlgebra.ComplexOrientation -public import HodgeConjecture.Mathlib.Topology.Category.TopPair -public import Mathlib.Analysis.Complex.Basic +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FundamentalClass +import HodgeConjecture.Lemmas.LinearAlgebra.ComplexOrientation +import HodgeConjecture.Mathlib.Topology.Category.TopPair +import Mathlib.Analysis.Complex.Basic + +namespace OAI.AlgebraicTopology.LocalHomology.ComplexClass /-! # The standard complex local class @@ -29,11 +32,12 @@ part of each complex coordinate consecutively. It transports the explicit standa rather than supplied as data. -/ -open CategoryTheory +open _root_.CategoryTheory -@[expose] public noncomputable section +noncomputable section -namespace AlgebraicTopology.Singular +section +namespace Singular variable (R : Type) [CommRing R] @@ -41,23 +45,23 @@ variable (R : Type) [CommRing R] real and imaginary parts, ordered consecutively as `(Re z₀, Im z₀, Re z₁, Im z₁, …)`. This ordering fixes the convention for complex orientation. -/ def complexRealHomeomorph (p : ℕ) : (Fin p → ℂ) ≃ₜ (Fin (p * 2) → ℝ) := - (Complex.piCoordCLE p).toHomeomorph + (_root_.OAI.LinearAlgebra.Foundations.ComplexOrientation.Complex.piCoordCLE p).toHomeomorph /-- For a natural number `p`, splitting each complex coordinate into consecutive real and imaginary parts gives this isomorphism of pairs `(ℂ^p, ℂ^p \ {0}) ≅ (ℝ^{2p}, ℝ^{2p} \ {0})`. -/ def standardComplexRealPairIso (p : ℕ) : - puncturedPair ℂ p ≅ puncturedPair ℝ (p * 2) := - TopPair.isoOfSubset (complexRealHomeomorph p) fun _ => - not_congr (Complex.piCoordCLE p).map_eq_zero_iff + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ p ≅ _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (p * 2) := + _root_.OAI.Topology.Category.TopPairOf.TopPair.isoOfSubset (complexRealHomeomorph p) fun _ => + not_congr (_root_.OAI.LinearAlgebra.Foundations.ComplexOrientation.Complex.piCoordCLE p).map_eq_zero_iff /-- Let `R` be a commutative ring and `p` a natural number. This isomorphism `H_{2p}(ℂ^p, ℂ^p \ {0}; R) ≅ H_{2p}(ℝ^{2p}, ℝ^{2p} \ {0}; R)` is induced by the coordinate map ordering the real and imaginary parts consecutively. -/ def standardComplexRealRelativeHomologyIso (p : ℕ) : -- `H_{2p}(ℂ^p, ℂ^p \ {0}; R) ≅ H_{2p}(ℝ^{2p}, ℝ^{2p} \ {0}; R)`. - RelativeHomology R (puncturedPair ℂ p) (p * 2) ≅ - RelativeHomology R (puncturedPair ℝ (p * 2)) (p * 2) := - (relativeHomologyFunctor R (p * 2)).mapIso (standardComplexRealPairIso p) + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ p) (p * 2) ≅ + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (p * 2)) (p * 2) := + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeHomologyFunctor R (p * 2)).mapIso (standardComplexRealPairIso p) /-- Let `R` be a commutative ring and `p` a natural number. This class in `H_{2p}(ℂ^p, ℂ^p \ {0}; R)` is transported from the affine simplex in `ℝ^{2p}` with ordered vertices the standard basis @@ -65,8 +69,13 @@ followed by `(-1, …, -1)`, with coefficient `1`. Transport uses consecutive re coordinates and fixes the normalization of the local complex class. -/ def standardComplexLocalClass (p : ℕ) : -- The complex-orientation generator of `H_{2p}(ℂ^p, ℂ^p \ {0}; R)`. - RelativeHomology R (puncturedPair ℂ p) (2 * p) := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ p) (2 * p) := (Nat.mul_comm p 2) ▸ - (standardComplexRealRelativeHomologyIso R p).inv.hom (standardLocalClass R (p * 2)) + (standardComplexRealRelativeHomologyIso R p).inv.hom (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass R (p * 2)) + +end Singular +end + +end -end AlgebraicTopology.Singular +end OAI.AlgebraicTopology.LocalHomology.ComplexClass diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/LocalHomology/FundamentalClass.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/LocalHomology/FundamentalClass.lean index 1c3a3236f5..3f841ad7d4 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/LocalHomology/FundamentalClass.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/LocalHomology/FundamentalClass.lean @@ -12,12 +12,15 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric +import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric + +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Cohomology -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Cohomology +namespace OAI.AlgebraicTopology.LocalHomology.FundamentalClass /-! # A standard local fundamental cycle @@ -31,12 +34,13 @@ This explicit cycle fixes the ordering and sign convention used to normalize loc fundamental classes. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits +open _root_.CategoryTheory Limits open scoped Simplicial -namespace AlgebraicTopology.Singular +section +namespace Singular variable (R : Type) [CommRing R] @@ -122,22 +126,22 @@ def standardFaceSimplex (n : ℕ) (i : Fin (n + 2)) : complex `C_*(ℝ^d; R)/C_*(ℝ^d \ {0}; R)` of the pair consisting of real coordinate space and its punctured subspace. -/ abbrev standardLocalRelativeChainComplex (d : ℕ) := - (relativeChainFunctor R).obj (puncturedPair ℝ d) + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).obj (puncturedPair ℝ d) /-- Let `R` be a commutative ring and `d` a natural number. This is the quotient map of chain complexes `C_*(ℝ^d; R) → C_*(ℝ^d, ℝ^d \ {0}; R)`, which sets chains contained in the punctured space equal to zero. -/ def standardLocalProjection (d : ℕ) : - ((chainPairFunctor R).obj (puncturedPair ℝ d)).right ⟶ + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj (puncturedPair ℝ d)).right ⟶ standardLocalRelativeChainComplex R d := - relativeChainProjection R (puncturedPair ℝ d) + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R (puncturedPair ℝ d) /-- Let `R` be a commutative ring and `d` a natural number. The chosen affine simplex in `ℝ^d` has ordered vertices `e₀, …, e_{d-1}, (-1, …, -1)`, where the `e_j` are standard basis vectors. This linear map `R → C_d(ℝ^d; R)` sends `r` to `r` times that singular simplex. -/ def standardAmbientSimplexChain (d : ℕ) : ModuleCat.of R R ⟶ - ((chainPairFunctor R).obj (puncturedPair ℝ d)).right.X d := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj (puncturedPair ℝ d)).right.X d := (TopCat.toSSet.obj (puncturedPair ℝ d).fst).ιChainComplex (standardSingularSimplex d) @@ -154,7 +158,7 @@ C_n(ℝ^{n+1}; R)` sends `1` to the `i`-th face of the affine simplex with order standard basis followed by `(-1, …, -1)`. -/ def standardAmbientFaceChain (n : ℕ) (i : Fin (n + 2)) : ModuleCat.of R R ⟶ - ((chainPairFunctor R).obj (puncturedPair ℝ (n + 1))).right.X n := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj (puncturedPair ℝ (n + 1))).right.X n := (TopCat.toSSet.obj (puncturedPair ℝ (n + 1)).fst).ιChainComplex ((TopCat.toSSet.obj (puncturedPair ℝ (n + 1)).fst).δ i (standardSingularSimplex (n + 1))) @@ -164,13 +168,13 @@ C_n(ℝ^{n+1} \ {0}; R)` sends `1` to the `i`-th face of the affine simplex with standard basis followed by `(-1, …, -1)`. Every such face avoids the origin. -/ def standardSubspaceFaceChain (n : ℕ) (i : Fin (n + 2)) : ModuleCat.of R R ⟶ - ((chainPairFunctor R).obj (puncturedPair ℝ (n + 1))).left.X n := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj (puncturedPair ℝ (n + 1))).left.X n := (TopCat.toSSet.obj (puncturedPair ℝ (n + 1)).snd).ιChainComplex (standardFaceSimplex n i) lemma standardFaceChain_inclusion (n : ℕ) (i : Fin (n + 2)) : standardSubspaceFaceChain R n i ≫ - ((chainPairFunctor R).obj (puncturedPair ℝ (n + 1))).hom.f n = + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj (puncturedPair ℝ (n + 1))).hom.f n = standardAmbientFaceChain R n i := by change (TopCat.toSSet.obj (puncturedPair ℝ (n + 1)).snd).ιChainComplex (standardFaceSimplex n i) ≫ @@ -182,7 +186,7 @@ lemma standardFaceChain_inclusion (n : ℕ) (i : Fin (n + 2)) : lemma standardAmbientSimplexChain_boundary (n : ℕ) : standardAmbientSimplexChain R (n + 1) ≫ - ((chainPairFunctor R).obj (puncturedPair ℝ (n + 1))).right.d (n + 1) n = + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj (puncturedPair ℝ (n + 1))).right.d (n + 1) n = ∑ i : Fin (n + 2), (-1) ^ i.val • standardAmbientFaceChain R n i := SSet.ιChainComplex_d (TopCat.toSSet.obj (puncturedPair ℝ (n + 1)).fst) @@ -191,7 +195,7 @@ lemma standardAmbientSimplexChain_boundary (n : ℕ) : lemma standardAmbientFaceChain_projection (n : ℕ) (i : Fin (n + 2)) : standardAmbientFaceChain R n i ≫ (standardLocalProjection R (n + 1)).f n = 0 := by rw [← standardFaceChain_inclusion, Category.assoc, ← HomologicalComplex.comp_f, - standardLocalProjection, subspaceChainMap_relativeChainProjection, + standardLocalProjection, _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.subspaceChainMap_relativeChainProjection, HomologicalComplex.zero_f, comp_zero] lemma standardLocalChain_boundary_succ (n : ℕ) : @@ -222,7 +226,12 @@ def standardLocalCycle (d : ℕ) : ordered vertices `e₀, …, e_{d-1}, (-1, …, -1)`, where the `e_j` are standard basis vectors. This is its class in `H_d(ℝ^d, ℝ^d \ {0}; R)`, with coefficient `1`. Its boundary vanishes in relative chains because all faces avoid the origin. -/ -def standardLocalClass (d : ℕ) : RelativeHomology R (puncturedPair ℝ d) d := +def standardLocalClass (d : ℕ) : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R (puncturedPair ℝ d) d := ((standardLocalCycle R d ≫ (standardLocalRelativeChainComplex R d).homologyπ d).hom) 1 -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.FundamentalClass diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/LocalHomology/NormalProjectionCoclass.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/LocalHomology/NormalProjectionCoclass.lean index abc3070733..9e736999f2 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/LocalHomology/NormalProjectionCoclass.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/LocalHomology/NormalProjectionCoclass.lean @@ -1,12 +1,16 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FlattenedSupport -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.CenteredComplexOrientation -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Local.Purity +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FlattenedSupport +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.CenteredComplexOrientation +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Local.Purity + +namespace OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass + /-! # Normal projections and the local support coclass @@ -15,18 +19,19 @@ its source, and pulling the fixed normal coclass back along it is compatible wit The radial-fiber factorization below identifies that coclass with the normalized local coclass. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicTopology.Singular +section +namespace Singular variable {M : Type} [TopologicalSpace M] /-- Let `M` be a topological space and `W ⊆ V` and `S` subsets of `M`. This is the map of pairs `(W, W \ S) → (V, V \ S)` given by inclusion on both subspaces. -/ def neighborhoodSupportInclusionPairMap {W V : Set M} (hWV : W ⊆ V) (S : Set M) : - neighborhoodSupportComplementPair W S ⟶ neighborhoodSupportComplementPair V S := + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair W S ⟶ _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair V S := TopPair.ofHom (TopCat.ofHom ⟨fun w => ⟨w.1, hWV w.2⟩, by fun_prop⟩) (TopCat.ofHom ⟨fun w => ⟨⟨w.1.1, hWV w.1.2⟩, w.2⟩, by fun_prop⟩) (by ext w; rfl) @@ -40,7 +45,7 @@ subset of `M` to `E × ℂ^c`. Suppose `S ⊆ M` agrees in this chart with the z coordinate. For `W` in the chart source, normal projection `w ↦ (e(w)).2` gives this map of pairs `(W, W \ S) → (ℂ^c, ℂ^c \ {0})`. -/ def chartNormalProjectionPair (W : Set M) (hW : W ⊆ e.source) : - neighborhoodSupportComplementPair W S ⟶ puncturedPair ℂ c := + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair W S ⟶ _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ c := TopPair.ofHom (TopCat.ofHom ⟨fun w => (e w.1).2, ((e.continuousOn.mono hW).domRestrict).snd⟩) (TopCat.ofHom ⟨fun w => ⟨(e w.1.1).2, fun h => w.2 ((hS _ (hW w.1.2)).mpr h)⟩, @@ -53,9 +58,14 @@ source, this class in `H^{2c}(W, W \ S; ℚ)` is the pullback under normal proje evaluating to `1` on the complex orientation class of `(ℂ^c, ℂ^c \ {0})`. -/ def chartNormalProjectionCoclass (W : Set M) (hW : W ⊆ e.source) : -- The pullback to `H^{2c}(W, W \ S; ℚ)` of the normalized class in `H^{2c}(ℂ^c, ℂ^c \ {0}; ℚ)`. - RelativeCohomology ℚ (neighborhoodSupportComplementPair W S) (2 * c) := - relativeCohomologyMap ℚ (2 * c) (chartNormalProjectionPair E c e S hS W hW) - (normalizedRelativeCoclass (standardComplexLocalClass ℚ c) - (standardComplexLocalClass_ne_zero_for_chart c)) + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair W S) (2 * c) := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ (2 * c) (chartNormalProjectionPair E c e S hS W hW) + (_root_.OAI.AlgebraicGeometry.Cycle.LocalPurity.AlgebraicTopology.Singular.normalizedRelativeCoclass (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ c) + (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassGenerator.Singular.standardComplexLocalClass_ne_zero_for_chart c)) + +end Singular +end + +end -end AlgebraicTopology.Singular +end OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/CohomologySection.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/CohomologySection.lean index 4a74461a2c..6ae9fcbb64 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/CohomologySection.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/CohomologySection.lean @@ -1,12 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.CohomologyStalkVanishing +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.CohomologyStalkVanishing + +namespace OAI.AlgebraicTopology.Sheaf.CohomologySection + +open _root_.TopCat +open _root_.TopCat.Sheaf + /-! # Canonical cohomology-sheaf sections from local section-complex classes @@ -19,13 +26,15 @@ The presheaf homology is taken before sheafification, and the counit is the shea counit on the original coefficient complex. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite HomologicalComplex +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite _root_.HomologicalComplex universe u -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable (X : TopCat.{u}) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) @@ -34,7 +43,7 @@ groups on `X`. For an integer `n`, this identifies the sheafification of `U ↦ the cohomology sheaf `𝓗^n(K) = ker(d^n)/im(d^{n-1})`, where the quotient is taken in sheaves. -/ def sectionCohomologyPresheafSheafificationIso (n : ℤ) : (presheafToSheaf (Opens.grothendieckTopology X) AddCommGrpCat.{u}).obj - (sectionCohomologyPresheaf X K n) ≅ K.homology n := + (_root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheaf X K n) ≅ K.homology n := let P : CochainComplex ((Opens X)ᵒᵖ ⥤ AddCommGrpCat.{u}) ℤ := ((forget AddCommGrpCat.{u} X).mapHomologicalComplex ℤᵘᵖ).obj K let S : ShortComplex ((Opens X)ᵒᵖ ⥤ AddCommGrpCat.{u}) := P.sc n @@ -50,7 +59,7 @@ groups on `X`. For an integer `n`, this morphism from the presheaf `U ↦ H^n(K( underlying presheaf of `𝓗^n(K)` sends a class of cocycle sections to its image in the quotient sheaf `ker(d^n)/im(d^{n-1})`. -/ def sectionCohomologyPresheafToSheaf (n : ℤ) : - sectionCohomologyPresheaf X K n ⟶ (K.homology n).obj := + _root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheaf X K n ⟶ (K.homology n).obj := toSheafify (Opens.grothendieckTopology X) _ ≫ (sectionCohomologyPresheafSheafificationIso X K n).hom.hom @@ -59,9 +68,9 @@ groups on `X`. For an open `U` and an integer `n`, this is the canonical map `H^ 𝓗^n(K))`: a cocycle section is sent to its class in the cohomology sheaf, the sheaf quotient of cycles by boundaries. -/ def sectionCohomologyToSheafSection (n : ℤ) (U : Opens X) : - (((supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj K).homology n ⟶ + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj K).homology n ⟶ (K.homology n).presheaf.obj (op U) := - (sectionCohomologyPresheafOnOpenIso X K n U).hom ≫ + (_root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheafOnOpenIso X K n U).hom ≫ (sectionCohomologyPresheafToSheaf X K n).app (op U) set_option backward.isDefEq.respectTransparency false in @@ -70,9 +79,14 @@ instance sectionCohomologyPresheafToSheaf_stalk_isIso (n : ℤ) (x : X) : IsIso ((Presheaf.stalkFunctor AddCommGrpCat.{u} x).map (sectionCohomologyPresheafToSheaf X K n)) := by let := Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat.{u} - (sectionCohomologyPresheaf X K n) + (_root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheaf X K n) dsimp only [sectionCohomologyPresheafToSheaf] rw [Functor.map_comp] infer_instance -end TopCat.Sheaf +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.CohomologySection diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/CohomologyStalkVanishing.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/CohomologyStalkVanishing.lean index 0e0810bd55..978afca845 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/CohomologyStalkVanishing.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/CohomologyStalkVanishing.lean @@ -1,15 +1,21 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.HomologySection -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsLocalization -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueQuasiIso -public import Mathlib.Algebra.Category.Grp.Zero +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.HomologySection +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsLocalization +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueQuasiIso +import Mathlib.Algebra.Category.Grp.Zero + +namespace OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Cohomology-sheaf stalk vanishing from cofinal local section calculations @@ -24,15 +30,17 @@ open set. This is the generic passage from the local normal-slice calculation to purity. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite HomologicalComplex +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite _root_.HomologicalComplex universe u -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable (X : TopCat.{u}) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) @@ -48,10 +56,15 @@ groups on `X`. For an open `U` and an integer `n`, this identifies `H^n(K(U))` w `U` of the presheaf `V ↦ H^n(K(V))`. It expresses that kernels and cokernels of presheaves are computed on each open set. -/ def sectionCohomologyPresheafOnOpenIso (n : ℤ) (U : Opens X) : - (((supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj K).homology n ≅ + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj K).homology n ≅ (sectionCohomologyPresheaf X K n).obj (op U) := let S : ShortComplex ((Opens X)ᵒᵖ ⥤ AddCommGrpCat.{u}) := ((((forget AddCommGrpCat.{u} X).mapHomologicalComplex ℤᵘᵖ).obj K).sc n) S.mapHomologyIso ((evaluation (Opens X)ᵒᵖ AddCommGrpCat.{u}).obj (op U)) -end TopCat.Sheaf +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/Constant.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/Constant.lean index d13956f036..b4e8f68d45 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/Constant.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/Constant.lean @@ -12,11 +12,18 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.CategoryTheory.Sites.ConstantSheaf -public import Mathlib.Topology.Sheaves.Abelian +import Mathlib.CategoryTheory.Sites.ConstantSheaf +import Mathlib.Topology.Sheaves.Abelian + +namespace OAI.AlgebraicTopology.Sheaf.Constant + +open _root_.TopCat +open _root_.TopCat.Presheaf +open _root_.TopCat.Sheaf /-! # Constant presheaves and sheaves of additive groups on a topological space @@ -28,13 +35,17 @@ is given: as an object `A : AddCommGrpCat`, written `𝓒ᵖ[X; A]` and `𝓒[X; carrying an `AddCommGroup` instance — a field, a ring, `ℤ` — written `𝓒ᵖ(X; R)` and `𝓒(X; R)`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory TopologicalSpace +open _root_.CategoryTheory _root_.TopologicalSpace universe u -namespace TopCat.Presheaf +namespace TopCat +open _root_.TopCat +namespace Presheaf +open _root_.TopCat +open _root_.TopCat.Presheaf variable (X : TopCat.{u}) @@ -44,15 +55,18 @@ inclusion. -/ abbrev const (A : AddCommGrpCat.{u}) : TopCat.Presheaf AddCommGrpCat.{u} X := (Functor.const (Opens X)ᵒᵖ).obj A -@[inherit_doc const] -notation3 "𝓒ᵖ[" X "; " A "]" => TopCat.Presheaf.const X A +@[inherit_doc _root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.Presheaf.const] +notation3 "𝓒ᵖ[" X "; " A "]" => _root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.Presheaf.const X A /-- The constant presheaf on `X` with value the additive group of `R`. -/ -notation3 "𝓒ᵖ(" X "; " R ")" => TopCat.Presheaf.const X (AddCommGrpCat.of R) +notation3 "𝓒ᵖ(" X "; " R ")" => _root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.Presheaf.const X (AddCommGrpCat.of R) -end TopCat.Presheaf +end Presheaf +end TopCat -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable (X : TopCat.{u}) @@ -69,12 +83,15 @@ restriction of functions. It is defined by sheafifying the constant presheaf. -/ abbrev const (A : AddCommGrpCat.{u}) : TopCat.Sheaf AddCommGrpCat.{u} X := (constantFunctor X).obj A -@[inherit_doc const] -notation3 "𝓒[" X "; " A "]" => TopCat.Sheaf.const X A +@[inherit_doc _root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.const] +notation3 "𝓒[" X "; " A "]" => _root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.const X A /-- The constant sheaf on `X` with value the additive group of `R`. -/ -notation3 "𝓒(" X "; " R ")" => TopCat.Sheaf.const X (AddCommGrpCat.of R) +notation3 "𝓒(" X "; " R ")" => _root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.const X (AddCommGrpCat.of R) -end TopCat.Sheaf +end TopCat +end end + +end OAI.AlgebraicTopology.Sheaf.Constant diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/FlasqueBoundedBelow.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/FlasqueBoundedBelow.lean index 4ee9474f03..6b0408cc2d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/FlasqueBoundedBelow.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/FlasqueBoundedBelow.lean @@ -12,13 +12,19 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import Mathlib.Algebra.Homology.Embedding.CochainComplex -public import Mathlib.Topology.Sheaves.Flasque +import Mathlib.Algebra.Homology.Embedding.CochainComplex +import Mathlib.Topology.Sheaves.Flasque + +namespace OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Global sections of bounded-below exact flasque complexes @@ -32,17 +38,24 @@ This is the acyclic-complex lemma needed to compare a bounded-below flasque reso termwise-injective replacement. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Opposite TopologicalSpace +open _root_.CategoryTheory Limits Opposite _root_.TopologicalSpace -namespace TopCat.Sheaf.IsFlasque +section +namespace TopCat +open _root_.TopCat +namespace IsFlasque +open _root_.TopCat +open _root_.TopCat.Sheaf.IsFlasque universe u variable {X : TopCat.{u}} namespace BoundedBelowComplex +open _root_.TopCat +open _root_.TopCat.Sheaf.IsFlasque variable (K : CochainComplex (TopCat.Sheaf AddCommGrpCat.{u} X) ℤ) @@ -79,4 +92,10 @@ def globalSectionsComplex end BoundedBelowComplex -end TopCat.Sheaf.IsFlasque +end IsFlasque +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/FlasqueLowestCohomology.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/FlasqueLowestCohomology.lean index 15e1a7edd9..6aea4a3bf2 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/FlasqueLowestCohomology.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/FlasqueLowestCohomology.lean @@ -1,14 +1,20 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.CohomologySection -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueLowerVanishing -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueCokernel +import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.CohomologySection +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueLowerVanishing +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueCokernel + +namespace OAI.AlgebraicTopology.Sheaf.FlasqueLowestCohomology + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Lowest-degree cohomology comparison for flasque complexes @@ -20,13 +26,15 @@ The proof shows the degree-`n` cohomology presheaf is already a sheaf, deriving of the preceding cycles from the lower vanishing and cokernel preservation from that. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite HomologicalComplex +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite _root_.HomologicalComplex universe u -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable (X : TopCat.{u}) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) @@ -45,54 +53,54 @@ def kernelBoundaryToCyclesIso (n : ℤ) : /-- In the first potentially nonzero cohomology degree, the forgetful functor preserves the left homology of this short complex. -/ -private theorem forget_preservesLeftHomologyOf_lowest (N n : ℤ) [K.IsStrictlyGE N] +theorem forget_preservesLeftHomologyOf_lowest (N n : ℤ) [K.IsStrictlyGE N] (hK : ∀ j, j < n → IsZero (K.homology j)) (hflasque : ∀ j, (K.X j).IsFlasque) : (forget AddCommGrpCat.{u} X).PreservesLeftHomologyOf (K.sc n) := by let F := forget AddCommGrpCat.{u} X let p := (ℤᵘᵖ).prev n have hp : p = n - 1 := (ℤᵘᵖ).prev_eq' (ComplexShape.up_mk _ _ (by omega)) let : (K.cycles p).IsFlasque := - IsFlasque.BoundedBelowComplex.cycles_isFlasque_of_exact_le K N (n - 1) + _root_.OAI.AlgebraicTopology.Sheaf.FlasqueLowerVanishing.TopCat.IsFlasque.BoundedBelowComplex.cycles_isFlasque_of_exact_le K N (n - 1) (fun j hj => (K.exactAt_iff_isZero_homology j).mpr (hK j (by omega))) hflasque p (by rw [hp]) let : (F.obj (K.cycles ((ℤᵘᵖ).prev n))).IsFlasque := inferInstanceAs ((K.cycles p).IsFlasque) let : (kernel (K.sc n).toCycles).IsFlasque := - TopCat.Presheaf.IsFlasque.of_iso (F.mapIso (kernelBoundaryToCyclesIso X K n)) + _root_.OAI.AlgebraicTopology.Sheaf.FlasqueQuasiIso.TopCat.Presheaf.IsFlasque.of_iso (F.mapIso (kernelBoundaryToCyclesIso X K n)) let : (K.sc n).X₁.IsFlasque := hflasque p let : (ShortComplex.LeftHomologyData.canonical (K.sc n)).IsPreservedBy F := { g := inferInstance - f' := IsFlasque.forget_preservesCokernel (K.sc n).toCycles } + f' := _root_.OAI.AlgebraicTopology.Sheaf.FlasqueCokernel.TopCat.IsFlasque.forget_preservesCokernel (K.sc n).toCycles } exact Functor.PreservesLeftHomologyOf.mk' F (ShortComplex.LeftHomologyData.canonical (K.sc n)) /-- The lowest-degree section-cohomology presheaf is a sheaf. -/ -private theorem sectionCohomologyPresheaf_isSheaf_lowest (N n : ℤ) [K.IsStrictlyGE N] +theorem sectionCohomologyPresheaf_isSheaf_lowest (N n : ℤ) [K.IsStrictlyGE N] (hK : ∀ j, j < n → IsZero (K.homology j)) (hflasque : ∀ j, (K.X j).IsFlasque) : CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology X) - (sectionCohomologyPresheaf X K n) := by + (_root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheaf X K n) := by let := forget_preservesLeftHomologyOf_lowest X K N n hK hflasque - let e : sectionCohomologyPresheaf X K n ≅ (K.homology n).obj := + let e : _root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheaf X K n ≅ (K.homology n).obj := (K.sc n).mapHomologyIso (forget AddCommGrpCat.{u} X) exact (CategoryTheory.Presheaf.isSheaf_of_iso_iff e).mpr (K.homology n).property set_option backward.isDefEq.respectTransparency false in /-- The presheaf-to-cohomology-sheaf comparison is an isomorphism, because its sheafification unit is an isomorphism in this degree. -/ -private theorem sectionCohomologyPresheafToSheaf_isIso_lowest (N n : ℤ) [K.IsStrictlyGE N] +theorem sectionCohomologyPresheafToSheaf_isIso_lowest (N n : ℤ) [K.IsStrictlyGE N] (hK : ∀ j, j < n → IsZero (K.homology j)) (hflasque : ∀ j, (K.X j).IsFlasque) : - IsIso (sectionCohomologyPresheafToSheaf X K n) := by + IsIso (_root_.OAI.AlgebraicTopology.Sheaf.CohomologySection.TopCat.sectionCohomologyPresheafToSheaf X K n) := by let := isIso_toSheafify (Opens.grothendieckTopology X) (sectionCohomologyPresheaf_isSheaf_lowest X K N n hK hflasque) - dsimp only [sectionCohomologyPresheafToSheaf] + dsimp only [_root_.OAI.AlgebraicTopology.Sheaf.CohomologySection.TopCat.sectionCohomologyPresheafToSheaf] infer_instance /-- Lowest-degree cohomology of sections equals sections of the cohomology sheaf on every open, via the already defined canonical comparison map. -/ theorem sectionCohomologyToSheafSection_isIso_lowest (N n : ℤ) [K.IsStrictlyGE N] (hK : ∀ j, j < n → IsZero (K.homology j)) (hflasque : ∀ j, (K.X j).IsFlasque) - (U : Opens X) : IsIso (sectionCohomologyToSheafSection X K n U) := by + (U : Opens X) : IsIso (_root_.OAI.AlgebraicTopology.Sheaf.CohomologySection.TopCat.sectionCohomologyToSheafSection X K n U) := by let := sectionCohomologyPresheafToSheaf_isIso_lowest X K N n hK hflasque - dsimp only [sectionCohomologyToSheafSection] + dsimp only [_root_.OAI.AlgebraicTopology.Sheaf.CohomologySection.TopCat.sectionCohomologyToSheafSection] infer_instance /-- Let `X` be a topological space and `K` an integer-indexed cochain complex of sheaves of abelian @@ -102,9 +110,14 @@ surjective), and `𝓗^j(K) = 0` for `j < n`. For every open `U`, this isomorphi def lowestSectionCohomologyIso (N n : ℤ) [K.IsStrictlyGE N] (hK : ∀ j, j < n → IsZero (K.homology j)) (hflasque : ∀ j, (K.X j).IsFlasque) (U : Opens X) : - (((supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj K).homology n ≅ + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj K).homology n ≅ (K.homology n).presheaf.obj (op U) := let := sectionCohomologyToSheafSection_isIso_lowest X K N n hK hflasque U - asIso (sectionCohomologyToSheafSection X K n U) + asIso (_root_.OAI.AlgebraicTopology.Sheaf.CohomologySection.TopCat.sectionCohomologyToSheafSection X K n U) + +end TopCat +end + +end -end TopCat.Sheaf +end OAI.AlgebraicTopology.Sheaf.FlasqueLowestCohomology diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/MapOfLocalStalks.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/MapOfLocalStalks.lean index ae8ef77618..769daa3014 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/MapOfLocalStalks.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/MapOfLocalStalks.lean @@ -9,14 +9,20 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Category.Grp.FilteredColimits -public import Mathlib.Algebra.Category.ModuleCat.Presheaf.Sheafification -public import Mathlib.CategoryTheory.Sites.ConstantSheaf -public import Mathlib.Topology.Sheaves.Sheafify -public import Mathlib.Topology.Sheaves.Stalks +import Mathlib.Algebra.Category.Grp.FilteredColimits +import Mathlib.Algebra.Category.ModuleCat.Presheaf.Sheafification +import Mathlib.CategoryTheory.Sites.ConstantSheaf +import Mathlib.Topology.Sheaves.Sheafify +import Mathlib.Topology.Sheaves.Stalks + +namespace OAI.AlgebraicTopology.Sheaf.MapOfLocalStalks + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Assembling constant-sheaf maps from locally represented stalk maps @@ -28,13 +34,15 @@ sheaf isomorphism. Local representability is a hypothesis, to be discharged by e application. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable {X : TopCat.{u}} (F : TopCat.Sheaf AddCommGrpCat.{u} X) @@ -87,4 +95,9 @@ theorem sectionOfLocallyRepresentable_germ F.presheaf.Γgerm x (sectionOfLocallyRepresentable F g hlocal) = g x := (existsUnique_section_of_locally_representable F g hlocal).exists.choose_spec x -end TopCat.Sheaf +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.MapOfLocalStalks diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/OpenInjectiveResolution.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/OpenInjectiveResolution.lean index f1bb8ec979..4a520a5e21 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/OpenInjectiveResolution.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/OpenInjectiveResolution.lean @@ -1,13 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenRestriction -public import HodgeConjecture.Mathlib.Algebra.Homology.LiftToInjective -public import Mathlib.CategoryTheory.Abelian.Injective.Resolution -public import Mathlib.CategoryTheory.Abelian.GrothendieckCategory.EnoughInjectives +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenRestriction +import HodgeConjecture.Mathlib.Algebra.Homology.LiftToInjective +import Mathlib.CategoryTheory.Abelian.Injective.Resolution +import Mathlib.CategoryTheory.Abelian.GrothendieckCategory.EnoughInjectives + +namespace OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Comparing an ambient resolution with a resolution on an open subspace @@ -17,12 +23,14 @@ augmentation. Exact open restriction and the normalized constant-sheaf comparison prove that this augmentation is a monic quasi-isomorphism. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable (X : TopCat.{0}) (U : Opens X) (A : AddCommGrpCat.{0}) @@ -35,4 +43,9 @@ def ambientConstantInjectiveResolution : 𝓒[X; A] := injectiveResolution (C := Sheaf AddCommGrpCat.{0} X) _ -end TopCat.Sheaf +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/OpenRestrictedLowestCohomology.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/OpenRestrictedLowestCohomology.lean index cd07356e17..f9b62b8634 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/OpenRestrictedLowestCohomology.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Sheaf/OpenRestrictedLowestCohomology.lean @@ -1,12 +1,18 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenRestrictedVanishing +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenRestrictedVanishing + +namespace OAI.AlgebraicTopology.Sheaf.OpenRestrictedLowestCohomology + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Canonical lowest-degree section comparison on an ambient open @@ -17,13 +23,15 @@ image identify the lowest-degree comparison on the restricted space with an isomorphism between ambient section cohomology and ambient cohomology-sheaf sections. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable (X : TopCat.{u}) (U : Opens X) @@ -31,8 +39,8 @@ variable (X : TopCat.{u}) (U : Opens X) global sections of `F|_U` are exactly sections of `F` over `U`. This is the resulting natural isomorphism `Γ(U, F|_U) ≅ F(U)`. -/ def openRestrictionTopSectionsIso : - U.isOpenEmbedding.sheafPullback AddCommGrpCat.{u} ⋙ supportEvaluation (TopCat.of U) ⊤ ≅ - supportEvaluation X U := + U.isOpenEmbedding.sheafPullback AddCommGrpCat.{u} ⋙ _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation (TopCat.of U) ⊤ ≅ + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U := NatIso.ofComponents (fun F => F.obj.mapIso (eqToIso (congrArg op (Opens.isOpenEmbedding_obj_top U)))) (fun f => (f.hom.naturality _).symm) @@ -45,10 +53,10 @@ set_option backward.defeqAttrib.useBackward true in groups on `X`. For an open `U`, this identifies the complex of global sections of `K|_U` with the complex `K(U)` obtained by evaluating the original sheaves on `U`. -/ def openRestrictionTopSectionComplexIso : - ((supportEvaluation (TopCat.of U) ⊤).mapHomologicalComplex ℤᵘᵖ).obj + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation (TopCat.of U) ⊤).mapHomologicalComplex ℤᵘᵖ).obj (((U.isOpenEmbedding.sheafPullback AddCommGrpCat.{u}).mapHomologicalComplex ℤᵘᵖ).obj K) ≅ - ((supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj K := + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj K := (NatIso.mapHomologicalComplex (openRestrictionTopSectionsIso X U) ℤᵘᵖ).app K /-- Let `X` be a topological space and `K` an integer-indexed cochain complex of sheaves of abelian @@ -58,7 +66,7 @@ def openRestrictionHomologyTopSectionsIso (n : ℤ) : (((((U.isOpenEmbedding.sheafPullback AddCommGrpCat.{u}).mapHomologicalComplex ℤᵘᵖ).obj K).homology n).presheaf.obj (op (⊤ : Opens (TopCat.of U)))) ≅ (K.homology n).presheaf.obj (op U) := - (supportEvaluation (TopCat.of U) ⊤).mapIso + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation (TopCat.of U) ⊤).mapIso ((K.sc n).mapHomologyIso (U.isOpenEmbedding.sheafPullback AddCommGrpCat.{u})) ≪≫ (openRestrictionTopSectionsIso X U).app (K.homology n) @@ -74,15 +82,20 @@ def openRestrictedLowestSectionCohomologyIso (N n : ℤ) [K.IsStrictlyGE N] ((((U.isOpenEmbedding.sheafPullback AddCommGrpCat.{u}).mapHomologicalComplex ℤᵘᵖ).obj K).homology j)) (hflasque : ∀ j, (K.X j).IsFlasque) : - (((supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj K).homology n ≅ + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj K).homology n ≅ (K.homology n).presheaf.obj (op U) := let L := ((U.isOpenEmbedding.sheafPullback AddCommGrpCat.{u}).mapHomologicalComplex ℤᵘᵖ).obj K have hLF (j : ℤ) : (L.X j).IsFlasque := by let := hflasque j - exact openSheafRestriction_isFlasque X U (K.X j) + exact _root_.OAI.AlgebraicTopology.Sheaf.OpenRestriction.TopCat.openSheafRestriction_isFlasque X U (K.X j) (HomologicalComplex.homologyMapIso (openRestrictionTopSectionComplexIso X U K) n).symm ≪≫ - lowestSectionCohomologyIso (TopCat.of U) L N n hK hLF ⊤ ≪≫ + _root_.OAI.AlgebraicTopology.Sheaf.FlasqueLowestCohomology.TopCat.lowestSectionCohomologyIso (TopCat.of U) L N n hK hLF ⊤ ≪≫ openRestrictionHomologyTopSectionsIso X U K n -end TopCat.Sheaf +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.OpenRestrictedLowestCohomology diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Cohomology.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Cohomology.lean index 115246b989..dfb3fb2a93 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Cohomology.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Cohomology.lean @@ -12,18 +12,23 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation -- shake: keep - -public import HodgeConjecture.Lemmas.Algebra.Homology.LinearDualNaturality -public import Mathlib.Algebra.Algebra.Rat -public import Mathlib.Algebra.Category.ModuleCat.Abelian -public import Mathlib.Algebra.Category.ModuleCat.Colimits -public import Mathlib.Algebra.Homology.HomologicalComplexLimits -- shake: keep -public import Mathlib.AlgebraicTopology.SingularHomology.Basic -public import Mathlib.LinearAlgebra.Complex.Module -public import Mathlib.Topology.Category.TopPair +import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation -- shake: keep + +import HodgeConjecture.Lemmas.Algebra.Homology.LinearDualNaturality +import Mathlib.Algebra.Algebra.Rat +import Mathlib.Algebra.Category.ModuleCat.Abelian +import Mathlib.Algebra.Category.ModuleCat.Colimits +import Mathlib.Algebra.Homology.HomologicalComplexLimits -- shake: keep +import Mathlib.AlgebraicTopology.SingularHomology.Basic +import Mathlib.LinearAlgebra.Complex.Module +import Mathlib.Topology.Category.TopPair + +namespace OAI.AlgebraicTopology.Singular.Cohomology + +open _root_.AlgebraicTopology /-! # Singular cohomology over a commutative ring @@ -37,13 +42,14 @@ Taking `A = X \ Z` defines singular cohomology with support in `Z`. Maps of pair pullback maps on these cochain complexes and their cohomology. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits +open _root_.CategoryTheory Limits universe u -namespace AlgebraicTopology.Singular +section +section /-- Let `R` be a commutative ring. This is the category of chain complexes of `R`-modules in nonnegative degrees, with differentials lowering degree by one and morphisms given by chain @@ -68,7 +74,7 @@ abbrev Homology (R : Type u) [CommRing R] (X : TopCat.{u}) (n : ℕ) : ModuleCat ((singularHomologyFunctor (ModuleCat.{u} R) n).obj (ModuleCat.of R R)).obj X /-- `H_[n](X; R)` is singular homology of `X` in degree `n` with coefficients in `R`. -/ -scoped notation:max "H_[" n "]" "(" Y "; " R ")" => Homology R Y n +scoped notation:max "H_[" n "]" "(" Y "; " R ")" => _root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology R Y n /-- Let `R` be a commutative ring and `f : X → Y` a continuous map. This linear map `H_n(X; R) → H_n(Y; R)` on singular homology sends the class of a cycle to the class obtained by composing @@ -118,7 +124,7 @@ Relative singular cochains are `C^n(X, A; R) = Hom_R(C_n(X; R)/C_n(A; R), R)`. E they are cochains on `X` vanishing on simplices in `A`. Their coboundary sends `φ` to `φ ∘ ∂`. -/ abbrev RelativeCochainComplex (R : Type u) [CommRing R] (X : TopPair.{u}) : CochainComplex (ModuleCat.{u} R) ℕ := - ((relativeChainFunctor R).obj X).linearDualCochainComplex + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex ((relativeChainFunctor R).obj X)) /-- `C^n(X, A; R)` is the module of relative singular `n`-cochains of the pair `(X, A)` given by a subset `A : Set X`, with coefficients in `R`. -/ @@ -130,7 +136,7 @@ pullback `C^*(Y, B; R) → C^*(X, A; R)` precomposes a relative cochain with the by `f`. -/ abbrev relativeCochainComplexMap (R : Type u) [CommRing R] {X Y : TopPair.{u}} (f : X ⟶ Y) : RelativeCochainComplex R Y ⟶ RelativeCochainComplex R X := - HomologicalComplex.linearDualMap ((relativeChainFunctor R).map f) + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((relativeChainFunctor R).map f) /-- Let `R` be a commutative ring and `(X, A)` a topological pair, with `A` embedded in `X`. Relative singular cohomology `H^n(X, A; R)` is the module of cocycles modulo coboundaries in @@ -156,7 +162,7 @@ relative cycles gives this linear equivalence `H^n(X, A; R) ≃ Hom_R(H_n(X, A; hypothesis makes linear duality exact. -/ def relativeCohomologyEquivDualHomology (R : Type u) [Field R] (X : TopPair.{u}) (n : ℕ) : RelativeCohomology R X n ≃ₗ[R] Module.Dual R (RelativeHomology R X n) := - ((relativeChainFunctor R).obj X).linearDualHomologyEquiv n + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualHomologyEquiv ((relativeChainFunctor R).obj X)) n /-- Let `R` be a commutative ring and `(X, A)` a topological pair, with `A` embedded in `X`. This quotient map `C_*(X; R) → C_*(X, A; R)` sends each singular chain to its class modulo chains in @@ -165,4 +171,9 @@ def relativeChainProjection (R : Type u) [CommRing R] (X : TopPair.{u}) : SingularChainComplex R X.fst ⟶ (relativeChainFunctor R).obj X := cokernel.π ((chainPairFunctor R).obj X).hom -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.Cohomology diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/RelativeCochainCone.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/RelativeCochainCone.lean index f39b24ac68..3f55243607 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/RelativeCochainCone.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/RelativeCochainCone.lean @@ -12,14 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.SubdivisionCochain -public import Mathlib.Algebra.Category.ModuleCat.Projective -public import Mathlib.Analysis.Normed.Group.Basic -public import Mathlib.LinearAlgebra.Dual.Lemmas -public import Mathlib.Topology.Algebra.InfiniteSum.Order +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.SubdivisionCochain +import Mathlib.Algebra.Category.ModuleCat.Projective +import Mathlib.Analysis.Normed.Group.Basic +import Mathlib.LinearAlgebra.Dual.Lemmas +import Mathlib.Topology.Algebra.InfiniteSum.Order + +namespace OAI.AlgebraicTopology.Singular.RelativeCochainCone /-! # Relative singular cohomology as a cochain mapping cone @@ -34,14 +37,15 @@ The proof dualizes the degreewise short exact sequence integer degrees, and compares its rotated triangle with Mathlib's mapping-cone triangle. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits -open CategoryTheory.Pretriangulated +open _root_.CategoryTheory Limits +open _root_.CategoryTheory.Pretriangulated universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] @@ -52,16 +56,16 @@ include cochains vanishing on `A` and restrict cochains to `A`; their composite def relativeDualCochainShortComplexNat (X : TopPair.{u}) : ShortComplex (CochainComplex (ModuleCat.{u} R) ℕ) := ShortComplex.mk - (HomologicalComplex.linearDualMap (relativeChainProjection R X)) - (HomologicalComplex.linearDualMap ((chainPairFunctor R).obj X).hom) + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X)) + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).hom) (by ext n φ - change Module.Dual R (((relativeChainFunctor R).obj X).X n) at φ + change Module.Dual R (((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).obj X).X n) at φ apply LinearMap.ext intro x - change φ (((((chainPairFunctor R).obj X).hom ≫ - relativeChainProjection R X).f n).hom x) = 0 - rw [subspaceChainMap_relativeChainProjection] + change φ (((((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).hom ≫ + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X).f n).hom x) = 0 + rw [_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.subspaceChainMap_relativeChainProjection] exact map_zero φ) /-- Let `R` be a commutative ring and `(X, A)` a topological pair, with `A` embedded in `X`. This is @@ -77,12 +81,17 @@ def relativeDualCochainShortComplexInt (X : TopPair.{u}) : map `C^*(X; R) → C^*(A; R)` restricts singular cochains along the embedding of `A`. Both complexes are indexed by integers and zero in negative degrees. -/ def relativeCochainRestrictionInt (X : TopPair.{u}) : - ((SingularChainComplex R X.fst).linearDualCochainComplex.extend + ((_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (_root_.OAI.AlgebraicTopology.Singular.Cohomology.SingularChainComplex R X.fst)).extend ComplexShape.embeddingUpNat) ⟶ - (((chainPairFunctor R).obj X).left.linearDualCochainComplex.extend + ((_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).left).extend ComplexShape.embeddingUpNat) := HomologicalComplex.extendMap - (HomologicalComplex.linearDualMap ((chainPairFunctor R).obj X).hom) + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).hom) ComplexShape.embeddingUpNat -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.RelativeCochainCone diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/RelativeCochainConeNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/RelativeCochainConeNaturality.lean index a3b7a27cb0..701da3b9ff 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/RelativeCochainConeNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/RelativeCochainConeNaturality.lean @@ -1,12 +1,16 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeCochainCone -public import HodgeConjecture.Lemmas.Algebra.Homology.LinearDualNaturality -public import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingCoconeShortExactNaturality +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeCochainCone +import HodgeConjecture.Lemmas.Algebra.Homology.LinearDualNaturality +import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingCoconeShortExactNaturality + +namespace OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality + /-! # Canonical natural relative-cochain cone comparison The explicit short-exact-sequence lift is natural already before passage to homology. @@ -18,13 +22,14 @@ Agreement with `relativeCochainConeCohomologyEquiv`, which is built from a compl is a separate comparison theorem. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits +open _root_.CategoryTheory _root_.CategoryTheory.Limits universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] @@ -33,21 +38,21 @@ identifies `H^n(C^*(X, A; R))` with `H^{n-1}(Cone(C^*(X; R) → C^*(A; R)))`. Th extended by zero to integer degrees before taking the cone. The comparison uses the map with components `(inclusion, 0)`, fixing its sign. -/ def relativeDualCochainHomologyIsoCone (X : TopPair.{u}) (n : ℕ) : - (relativeDualCochainShortComplexInt R X).X₁.homology (n : ℤ) ≅ - (CochainComplex.mappingCone (relativeCochainRestrictionInt R X)).homology + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt R X).X₁.homology (n : ℤ) ≅ + (CochainComplex.mappingCone (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R X)).homology ((n : ℤ) - 1) := - CochainComplex.mappingCocone.shortExactHomologyIsoCone - (relativeDualCochainShortComplexInt R X) - (relativeDualCochainShortComplexInt_shortExact R X) ((n : ℤ) - 1) n (by omega) + _root_.OAI.Algebra.Homology.CoconeShortExactNaturality.CochainComplex.mappingCocone.shortExactHomologyIsoCone + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt R X) + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainG.relativeDualCochainShortComplexInt_shortExact R X) ((n : ℤ) - 1) n (by omega) /-- Let `R` be a commutative ring and `(X, A)` a topological pair, with `A` embedded in `X`. Extending the relative cochain complex by zero to negative integer degrees leaves its degree-`n` cohomology unchanged. This is the resulting linear equivalence with relative singular cohomology `H^n(X, A; R)`. -/ def relativeDualCochainCohomologyEquiv (X : TopPair.{u}) (n : ℕ) : - (relativeDualCochainShortComplexInt R X).X₁.homology (n : ℤ) ≃ₗ[R] - RelativeCohomology R X n := - (((relativeChainFunctor R).obj X).linearDualCochainComplex.extendHomologyIso + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt R X).X₁.homology (n : ℤ) ≃ₗ[R] + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology R X n := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCochainComplex R X).extendHomologyIso ComplexShape.embeddingUpNat (j := n) (j' := (n : ℤ)) rfl).toLinearEquiv /-- Let `R` be a commutative ring and `(X, A)` a topological pair, with `A` embedded in `X`. This @@ -55,9 +60,14 @@ linear equivalence identifies `H^{n-1}(Cone(C^*(X; R) → C^*(A; R)))` with rela cohomology `H^n(X, A; R)`. It is inverse to the cohomology map induced by the relative-cochain inclusion with zero second cone component. -/ def relativeCochainConeCohomologyEquivCanonical (X : TopPair.{u}) (n : ℕ) : - (CochainComplex.mappingCone (relativeCochainRestrictionInt R X)).homology - ((n : ℤ) - 1) ≃ₗ[R] RelativeCohomology R X n := + (CochainComplex.mappingCone (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R X)).homology + ((n : ℤ) - 1) ≃ₗ[R] _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology R X n := (relativeDualCochainHomologyIsoCone R X n).symm.toLinearEquiv.trans (relativeDualCochainCohomologyEquiv R X n) -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Sheaf/Cochain.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Sheaf/Cochain.lean index c46f996738..51989753f4 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Sheaf/Cochain.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Sheaf/Cochain.lean @@ -12,24 +12,29 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module - -public import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.Constant -public import Mathlib.Algebra.Category.ModuleCat.Colimits -public import Mathlib.Algebra.Homology.QuasiIso -public import Mathlib.Algebra.Homology.SingleHomology -public import Mathlib.AlgebraicTopology.SimplicialSet.PiZero -public import Mathlib.AlgebraicTopology.SingularHomology.Basic -public import Mathlib.Topology.Connected.LocallyPathConnected -public import Mathlib.Topology.Homotopy.Contractible -public import Mathlib.Topology.Sheaves.Abelian + +import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.Constant +import Mathlib.Algebra.Category.ModuleCat.Colimits +import Mathlib.Algebra.Homology.QuasiIso +import Mathlib.Algebra.Homology.SingleHomology +import Mathlib.AlgebraicTopology.SimplicialSet.PiZero +import Mathlib.AlgebraicTopology.SingularHomology.Basic +import Mathlib.Topology.Connected.LocallyPathConnected +import Mathlib.Topology.Homotopy.Contractible +import Mathlib.Topology.Sheaves.Abelian import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Contractible import Mathlib.AlgebraicTopology.SimplicialSet.Homology.HomologyZero import Mathlib.Topology.Homotopy.TopCat.ZerothHomotopy import Mathlib.Topology.Sheaves.Sheafify +namespace OAI.AlgebraicTopology.Singular.SheafCochain + +open _root_.AlgebraicTopology + /-! # The singular-cochain sheaf @@ -44,13 +49,14 @@ cohomology. The comparison is proved in degree zero on locally path-connected sp positive degrees, an explicit neighborhood-wise primitive condition is shown to imply it. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] (X : TopCat.{u}) @@ -232,7 +238,7 @@ lemma simplicialZeroAugmentation_naturality {S T : SSet.{u}} (f : S ⟶ T) : ιChainComplex_comp_simplicialZeroAugmentation] /-- The simplicial boundary of a one-chain has augmentation zero. -/ -private lemma simplicialBoundary_comp_zeroAugmentation (S : SSet.{u}) : +lemma simplicialBoundary_comp_zeroAugmentation (S : SSet.{u}) : (S.chainComplex (ModuleCat.of R R)).d 1 0 ≫ simplicialZeroAugmentation R S = 0 := by apply SSet.chainComplex_hom_ext @@ -256,7 +262,7 @@ lemma openZeroAugmentation_naturality {U V : (Opens X)ᵒᵖ} (i : U ⟶ V) : (TopCat.toSSet.map ((Opens.toTopCat X).map i.unop)) /-- The boundary of an open singular one-chain has augmentation zero. -/ -private lemma openBoundary_comp_zeroAugmentation (U : (Opens X)ᵒᵖ) : +lemma openBoundary_comp_zeroAugmentation (U : (Opens X)ᵒᵖ) : ((openSingularChainComplexFunctor R X).obj U.unop).d 1 0 ≫ openZeroAugmentation R X U = 0 := simplicialBoundary_comp_zeroAugmentation R @@ -281,7 +287,7 @@ def constantsToSingularCochainZero : change R at r apply LinearMap.ext intro c - dsimp [TopCat.Presheaf.const, constantSingularZeroCochain, + dsimp [_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.Presheaf.const, constantSingularZeroCochain, singularCochainPresheaf] exact congrArg (r * ·) <| congrArg (fun f ↦ f.hom c) <| (openZeroAugmentation_naturality R X i).symm @@ -341,4 +347,9 @@ def constantsToSingularCochainSheafComplex : rw [singularCochainSheafComplex_d] exact constantsToSingularCochainZeroSheaf_comp_coboundary R X⟩ -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.SheafCochain diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Sheaf/CochainOpenCone.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Sheaf/CochainOpenCone.lean index cb21d50067..0aa6c64f87 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Sheaf/CochainOpenCone.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Sheaf/CochainOpenCone.lean @@ -1,17 +1,20 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainOpenSections -public import HodgeConjecture.Lemmas.Algebra.Homology.MappingConeQuasiIso -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeCochainCone -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeCochainConeNaturality -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cohomology.SupportSingularGlobal -public import HodgeConjecture.Lemmas.Algebra.Homology.MapExtendNaturality +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainOpenSections +import HodgeConjecture.Lemmas.Algebra.Homology.MappingConeQuasiIso +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeCochainCone +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeCochainConeNaturality +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cohomology.SupportSingularGlobal +import HodgeConjecture.Lemmas.Algebra.Homology.MapExtendNaturality + +namespace OAI.AlgebraicTopology.Singular.SheafCochainOpenCone /-! # Local singular-cochain restriction cones @@ -19,11 +22,12 @@ The comparison is the cone map of the sheafification units and restriction maps. Cone degree `n - 1` computes relative degree `n`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace -namespace AlgebraicTopology.Singular +section +section variable (R : Type) [CommRing R] (X : TopCat.{0}) @@ -37,7 +41,7 @@ term in degree `-1`. -/ def openRawSingularRestrictionCone {V W : Opens X} (i : W ⟶ V) : CochainComplex AddCommGrpCat ℤ := CochainComplex.mappingCone - (HomologicalComplex.extendMap (openRawSingularRestriction R X i) + (HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularRestriction R X i) ComplexShape.embeddingUpNat) /-- Let `R` be a commutative ring and `W ⊆ V` open subsets of a topological space `X`. Let `S^•` be @@ -46,21 +50,21 @@ after extending both section complexes by zero to negative integer degrees. -/ def openSingularSheafRestrictionCone {V W : Opens X} (i : W ⟶ V) : CochainComplex AddCommGrpCat ℤ := CochainComplex.mappingCone - (HomologicalComplex.extendMap (openSingularSheafRestriction R X i) + (HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openSingularSheafRestriction R X i) ComplexShape.embeddingUpNat) /-- The local sheafification restriction square, after extension by zero. -/ lemma openSingularSheafRestrictionInt_naturality {V W : Opens X} (i : W ⟶ V) : - HomologicalComplex.extendMap (openRawSingularRestriction R X i) + HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularRestriction R X i) ComplexShape.embeddingUpNat ≫ - HomologicalComplex.extendMap (openRawToSingularCochainSheafComplex R X W) + HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawToSingularCochainSheafComplex R X W) ComplexShape.embeddingUpNat = - HomologicalComplex.extendMap (openRawToSingularCochainSheafComplex R X V) + HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawToSingularCochainSheafComplex R X V) ComplexShape.embeddingUpNat ≫ - HomologicalComplex.extendMap (openSingularSheafRestriction R X i) + HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openSingularSheafRestriction R X i) ComplexShape.embeddingUpNat := by rw [← HomologicalComplex.extendMap_comp, ← HomologicalComplex.extendMap_comp, - openSingularSheafRestriction_naturality] + _root_.OAI.AlgebraicTopology.Singular.SheafCochainTop.openSingularSheafRestriction_naturality] /-- Let `R` be a commutative ring and `W ⊆ V` open subsets of a topological space `X`. The maps taking singular cochains to their sheafified sections on `V` and `W` commute with restriction. @@ -69,9 +73,9 @@ sheaf sections, in integer degrees. -/ def openRawToSingularSheafRestrictionCone {V W : Opens X} (i : W ⟶ V) : openRawSingularRestrictionCone R X i ⟶ openSingularSheafRestrictionCone R X i := CochainComplex.mappingCone.map _ _ - (HomologicalComplex.extendMap (openRawToSingularCochainSheafComplex R X V) + (HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawToSingularCochainSheafComplex R X V) ComplexShape.embeddingUpNat) - (HomologicalComplex.extendMap (openRawToSingularCochainSheafComplex R X W) + (HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawToSingularCochainSheafComplex R X W) ComplexShape.embeddingUpNat) (openSingularSheafRestrictionInt_naturality R X i) @@ -80,9 +84,9 @@ cone comparison to be a quasi-isomorphism. -/ theorem openRawToSingularSheafRestrictionCone_quasiIso {V W : Opens X} (i : W ⟶ V) [ParacompactSpace V] [T2Space V] [ParacompactSpace W] [T2Space W] : QuasiIso (openRawToSingularSheafRestrictionCone ℚ X i) := by - let := openRawToSingularCochainSheafComplex_quasiIso X V - let := openRawToSingularCochainSheafComplex_quasiIso X W - exact CochainComplex.mappingCone.map_quasiIso_of_vertical_quasiIso _ _ _ _ _ + let := _root_.OAI.AlgebraicTopology.Singular.SheafCochainTop.openRawToSingularCochainSheafComplex_quasiIso X V + let := _root_.OAI.AlgebraicTopology.Singular.SheafCochainTop.openRawToSingularCochainSheafComplex_quasiIso X W + exact _root_.OAI.Algebra.Homology.MappingConeQuasiIso.CochainComplex.mappingCone.map_quasiIso_of_vertical_quasiIso _ _ _ _ _ /-- Let `W ⊆ V` be open subsets of a topological space `X`. This is the topological pair `(V, W)`, consisting of the two subspaces and their inclusion. -/ @@ -96,42 +100,42 @@ set_option backward.isDefEq.respectTransparency false in evaluation at `V` of the singular cochain presheaf complex with `Hom_R(C_*(V; R), R)`, viewed as a complex of abelian groups. -/ def openRawSingularCochainComplexIsoDual (V : Opens X) : - openRawSingularCochainComplex R X V ≅ + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularCochainComplex R X V ≅ ((forget₂ (ModuleCat R) AddCommGrpCat).mapHomologicalComplex (.up ℕ)).obj - (SingularChainComplex R (TopCat.of V)).linearDualCochainComplex := + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (_root_.OAI.AlgebraicTopology.Singular.Cohomology.SingularChainComplex R (TopCat.of V))) := HomologicalComplex.Hom.isoOfComponents - (fun n => (AddEquiv.refl (OpenCochains R X (.op V) n)).toAddCommGrpIso) (by + (fun n => (AddEquiv.refl (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op V) n)).toAddCommGrpIso) (by intro n m h obtain rfl := h - dsimp only [openRawSingularCochainComplex] + dsimp only [_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularCochainComplex] rw [Functor.mapHomologicalComplex_obj_d, Functor.mapHomologicalComplex_obj_d, - singularCochainPresheafComplex_d, - HomologicalComplex.linearDualCochainComplex_d] + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex_d, + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex_d] ext φ rfl) /-- The preceding identification preserves the dual of the singular-chain inclusion of nested opens. -/ -private lemma openRawSingularRestriction_transport {V W : Opens X} (i : W ⟶ V) : - openRawSingularRestriction R X i ≫ (openRawSingularCochainComplexIsoDual R X W).hom = +lemma openRawSingularRestriction_transport {V W : Opens X} (i : W ⟶ V) : + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularRestriction R X i ≫ (openRawSingularCochainComplexIsoDual R X W).hom = (openRawSingularCochainComplexIsoDual R X V).hom ≫ ((forget₂ (ModuleCat R) AddCommGrpCat).mapHomologicalComplex (.up ℕ)).map - (HomologicalComplex.linearDualMap - ((chainPairFunctor R).obj (openInclusionPair X i)).hom) := rfl + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj (openInclusionPair X i)).hom) := rfl /-- Let `R` be a commutative ring and `V` an open subset of a topological space `X`. This identifies the integer-indexed extension of the singular cochains on `V` with the linear dual of its singular chain complex extended to integer degrees, after forgetting the module structure. -/ def openRawSingularCochainComplexIntIsoDual (V : Opens X) : - (openRawSingularCochainComplex R X V).extend ComplexShape.embeddingUpNat ≅ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularCochainComplex R X V).extend ComplexShape.embeddingUpNat ≅ ((forget₂ (ModuleCat R) AddCommGrpCat).mapHomologicalComplex ℤᵘᵖ).obj - ((SingularChainComplex R (TopCat.of V)).linearDualCochainComplex.extend + ((_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (_root_.OAI.AlgebraicTopology.Singular.Cohomology.SingularChainComplex R (TopCat.of V))).extend ComplexShape.embeddingUpNat) := (ComplexShape.embeddingUpNat.extendFunctor AddCommGrpCat).mapIso (openRawSingularCochainComplexIsoDual R X V) ≪≫ - (HomologicalComplex.mapExtendCanonicalIso (forget₂ (ModuleCat R) AddCommGrpCat) - (SingularChainComplex R (TopCat.of V)).linearDualCochainComplex + (_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso (forget₂ (ModuleCat R) AddCommGrpCat) + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (_root_.OAI.AlgebraicTopology.Singular.Cohomology.SingularChainComplex R (TopCat.of V))) ComplexShape.embeddingUpNat).symm set_option backward.defeqAttrib.useBackward true in @@ -139,25 +143,25 @@ set_option backward.isDefEq.respectTransparency false in set_option backward.isDefEq.respectTransparency.types false in /-- The integer comparison preserves the original pair's restriction map. -/ lemma openRawSingularRestrictionInt_transport {V W : Opens X} (i : W ⟶ V) : - HomologicalComplex.extendMap (openRawSingularRestriction R X i) + HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularRestriction R X i) ComplexShape.embeddingUpNat ≫ (openRawSingularCochainComplexIntIsoDual R X W).hom = (openRawSingularCochainComplexIntIsoDual R X V).hom ≫ ((forget₂ (ModuleCat R) AddCommGrpCat).mapHomologicalComplex ℤᵘᵖ).map - (relativeCochainRestrictionInt R (openInclusionPair X i)) := by + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R (openInclusionPair X i)) := by dsimp only [openRawSingularCochainComplexIntIsoDual, Iso.trans_hom, Functor.mapIso_hom, Iso.symm_hom] change (ComplexShape.embeddingUpNat.extendFunctor AddCommGrpCat).map - (openRawSingularRestriction R X i) ≫ _ = _ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularRestriction R X i) ≫ _ = _ rw [← Category.assoc, ← Functor.map_comp, openRawSingularRestriction_transport, Functor.map_comp, Category.assoc, Category.assoc] exact congrArg (fun f => HomologicalComplex.extendMap (openRawSingularCochainComplexIsoDual R X V).hom ComplexShape.embeddingUpNat ≫ f) - (HomologicalComplex.mapExtendCanonicalIso_inv_naturality + (_root_.OAI.Algebra.Homology.MapExtendNaturality.HomologicalComplex.mapExtendCanonicalIso_inv_naturality (forget₂ (ModuleCat R) AddCommGrpCat) - (HomologicalComplex.linearDualMap - ((chainPairFunctor R).obj (openInclusionPair X i)).hom) + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj (openInclusionPair X i)).hom) ComplexShape.embeddingUpNat) set_option backward.isDefEq.respectTransparency.types false in @@ -170,7 +174,7 @@ def openRawSingularRestrictionConeIsoRelative {V W : Opens X} (i : W ⟶ V) : openRawSingularRestrictionCone R X i ≅ CochainComplex.mappingCone (((forget₂ (ModuleCat R) AddCommGrpCat).mapHomologicalComplex ℤᵘᵖ).map - (relativeCochainRestrictionInt R (openInclusionPair X i))) := + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R (openInclusionPair X i))) := HomologicalComplex.homotopyCofiber.mapArrowIso _ _ (fun j => ⟨j - 1, ComplexShape.up_mk _ _ (by lia)⟩) (Arrow.isoMk (openRawSingularCochainComplexIntIsoDual R X V) @@ -183,20 +187,20 @@ relative singular cohomology and the cone uses integer degrees. -/ def openRawSingularRestrictionConeCohomologyEquivRelative {V W : Opens X} (i : W ⟶ V) (n : ℕ) : (openRawSingularRestrictionCone R X i).homology ((n : ℤ) - 1) ≃+ - RelativeCohomology R (openInclusionPair X i) n := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology R (openInclusionPair X i) n := (HomologicalComplex.homologyMapIso (openRawSingularRestrictionConeIsoRelative R X i) ((n : ℤ) - 1)).addCommGroupIsoToAddEquiv |>.trans <| (HomologicalComplex.homologyMapIso (CochainComplex.mappingCone.mapHomologicalComplexIso - (relativeCochainRestrictionInt R (openInclusionPair X i)) + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R (openInclusionPair X i)) (forget₂ (ModuleCat R) AddCommGrpCat)).symm ((n : ℤ) - 1)).addCommGroupIsoToAddEquiv |>.trans <| (ShortComplex.mapHomologyIso ((CochainComplex.mappingCone - (relativeCochainRestrictionInt R (openInclusionPair X i))).sc ((n : ℤ) - 1)) + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R (openInclusionPair X i))).sc ((n : ℤ) - 1)) (forget₂ (ModuleCat R) AddCommGrpCat)).addCommGroupIsoToAddEquiv - |>.trans (relativeCochainConeCohomologyEquivCanonical R (openInclusionPair X i) n).toAddEquiv + |>.trans (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeCochainConeCohomologyEquivCanonical R (openInclusionPair X i) n).toAddEquiv /-- Let `W ⊆ V` be open subsets of a topological space `X`, with both subspaces paracompact and Hausdorff. Let `S^•` be the sheafified rational singular cochain complex on `X`. This additive @@ -206,10 +210,15 @@ def openSingularSheafRestrictionConeCohomologyEquivRelative {V W : Opens X} (i : W ⟶ V) [ParacompactSpace V] [T2Space V] [ParacompactSpace W] [T2Space W] (n : ℕ) : (openSingularSheafRestrictionCone ℚ X i).homology ((n : ℤ) - 1) ≃+ - RelativeCohomology ℚ (openInclusionPair X i) n := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (openInclusionPair X i) n := letI := openRawToSingularSheafRestrictionCone_quasiIso X i (asIso (HomologicalComplex.homologyMap (openRawToSingularSheafRestrictionCone ℚ X i) ((n : ℤ) - 1))).symm.addCommGroupIsoToAddEquiv |>.trans (openRawSingularRestrictionConeCohomologyEquivRelative ℚ X i n) -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.SheafCochainOpenCone diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Sheaf/CochainOpenSections.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Sheaf/CochainOpenSections.lean index e8a32245e8..332359bc28 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Sheaf/CochainOpenSections.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Singular/Sheaf/CochainOpenSections.lean @@ -1,19 +1,23 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainOpenRestriction -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.GlobalRestriction +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainOpenRestriction +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.GlobalRestriction + +namespace OAI.AlgebraicTopology.Singular.SheafCochainOpenSections /-! # Singular cochains compute sheafified cochains on an arbitrary open -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite -namespace AlgebraicTopology.Singular +section +section variable (R : Type) [CommRing R] (X : TopCat.{0}) @@ -22,14 +26,14 @@ abelian groups `C^*(V; R)`, whose degree-`n` elements are `R`-linear functions o `n`-chains of `V` and whose differential is dual to the boundary. -/ def openRawSingularCochainComplex (V : Opens X) : CochainComplex AddCommGrpCat ℕ := (((evaluation (Opens X)ᵒᵖ AddCommGrpCat).obj (.op V)).mapHomologicalComplex (.up ℕ)).obj - (singularCochainPresheafComplex R X) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X) /-- Let `R` be a commutative ring, `X` a topological space, and `V ⊆ X` open. This is the complex of sections over `V` of the sheaves obtained by sheafifying `U ↦ C^n(U; R)` on `X`. The differential is induced by singular coboundaries. -/ def openSingularCochainSheafComplex (V : Opens X) : CochainComplex AddCommGrpCat ℕ := - ((TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex (.up ℕ)).obj - (singularCochainSheafComplex R X) + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex (.up ℕ)).obj + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex R X) /-- Let `R` be a commutative ring, `X` a topological space, and `V ⊆ X` open. This complex map sends each singular cochain on `V` to the section it represents in the sheafification of `U ↦ C^n(U; @@ -37,7 +41,7 @@ R)`. It commutes with the coboundary. -/ def openRawToSingularCochainSheafComplex (V : Opens X) : openRawSingularCochainComplex R X V ⟶ openSingularCochainSheafComplex R X V := (((evaluation (Opens X)ᵒᵖ AddCommGrpCat).obj (.op V)).mapHomologicalComplex (.up ℕ)).map - (singularCochainSheafificationUnit R X) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafificationUnit R X) /-- Let `R` be a commutative ring and `W ⊆ V` open subsets of a topological space `X`. This map `C^*(V; R) → C^*(W; R)` restricts a singular cochain to simplices whose images lie in `W`. -/ @@ -45,7 +49,7 @@ def openRawSingularRestriction {V W : Opens X} (i : W ⟶ V) : openRawSingularCochainComplex R X V ⟶ openRawSingularCochainComplex R X W := (NatTrans.mapHomologicalComplex ((evaluation (Opens X)ᵒᵖ AddCommGrpCat).map i.op) (.up ℕ)).app - (singularCochainPresheafComplex R X) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X) /-- Let `R` be a commutative ring and `W ⊆ V` open subsets of a topological space `X`. This map restricts sections of the sheafified singular cochain complex from `V` to `W` in every @@ -55,6 +59,11 @@ def openSingularSheafRestriction {V W : Opens X} (i : W ⟶ V) : (NatTrans.mapHomologicalComplex ((evaluation (Opens X)ᵒᵖ AddCommGrpCat).map i.op) (.up ℕ)).app (((TopCat.Sheaf.forget AddCommGrpCat X).mapHomologicalComplex (.up ℕ)).obj - (singularCochainSheafComplex R X)) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex R X)) + +end +end + +end -end AlgebraicTopology.Singular +end OAI.AlgebraicTopology.Singular.SheafCochainOpenSections diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/Cohomology.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/Cohomology.lean index 468a493b85..3b1c03f43f 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/Cohomology.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/Cohomology.lean @@ -12,12 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.CategoryTheory.Sites.SheafCohomology.Pair -public import Mathlib.Topology.Sheaves.Abelian -public import Mathlib.Topology.Sets.Closeds +import HodgeConjecture.Mathlib.CategoryTheory.Sites.SheafCohomology.Pair +import Mathlib.Topology.Sheaves.Abelian +import Mathlib.Topology.Sets.Closeds + +namespace OAI.AlgebraicTopology.Support.Cohomology + +open _root_.TopCat /-! # Sheaf cohomology with support in a closed set @@ -28,11 +33,15 @@ Forgetting the support is the map `H^n_Z(X; F) → H^n(X; F)` of the long exact pair. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Abelian Opposite TopologicalSpace +open _root_.CategoryTheory Limits Abelian Opposite _root_.TopologicalSpace -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf universe w u @@ -46,33 +55,33 @@ variable [HasExt.{w} (CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCom in `F`: the cohomology of the pair `(X, X \ Z)`. -/ abbrev supportH (Z : Closeds X) (F : CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat.{u}) (n : ℕ) : Type w := - CategoryTheory.Sheaf.relH F n (homOfLE (le_top : Z.compl ≤ ⊤)) + _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH F n (homOfLE (le_top : Z.compl ≤ ⊤)) @[inherit_doc supportH] -scoped notation:max "H_[" Z "]^" n:max "(" X "; " F ")" => supportH X Z F n +scoped notation:max "H_[" Z "]^" n:max "(" X "; " F ")" => _root_.OAI.AlgebraicTopology.Support.Cohomology.TopCat.Sheaf.supportH X Z F n omit [HasExt.{w} (CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat.{u})] in /-- `ℤ[U] = 0` for the empty open `U`: every sheaf has only the zero section on `U`. -/ lemma isZero_freeAbelianSheaf_of_eq_bot (U : Opens X) (hU : U = ⊥) : - IsZero ((CategoryTheory.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).obj U) := by + IsZero ((_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).obj U) := by subst hU rw [IsZero.iff_id_eq_zero] - apply (CategoryTheory.Sheaf.freeAbelianSheafHomAddEquiv ⊥ _).injective + apply (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.freeAbelianSheafHomAddEquiv ⊥ _).injective have : Subsingleton - (((CategoryTheory.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).obj ⊥).obj.obj + (((_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).obj ⊥).obj.obj (op ⊥)) := AddCommGrpCat.subsingleton_of_isZero (IsZero.of_iso (isZero_zero _) (HasZeroObject.zeroIsoIsTerminal (CategoryTheory.Sheaf.isTerminalOfBotCover - ((CategoryTheory.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).obj ⊥) + ((_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).obj ⊥) ⊥ (fun _ h => h.elim))).symm) exact Subsingleton.elim _ _ /-- For `W = ⊥`, the map `ℤ[V] ⟶ ℤ[V, W]` is an isomorphism. -/ instance {W V : Opens X} (f : W ⟶ V) [Fact (W = ⊥)] : - IsIso (cokernel.π ((CategoryTheory.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).map f)) := by - have hf : (CategoryTheory.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).map f = 0 := + IsIso (cokernel.π ((_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).map f)) := by + have hf : (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).map f = 0 := (isZero_freeAbelianSheaf_of_eq_bot X W Fact.out).eq_of_src _ _ - have : cokernel.π ((CategoryTheory.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).map f) = + have : cokernel.π ((_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).map f) = cokernel.π (0 : _ ⟶ _) ≫ (cokernelIsoOfEq hf).inv := by rw [← π_comp_cokernelIsoOfEq_hom hf, Category.assoc, Iso.hom_inv_id, Category.comp_id] rw [this] @@ -82,24 +91,27 @@ instance {W V : Opens X} (f : W ⟶ V) [Fact (W = ⊥)] : lemma relH.forget_injective_of_eq_bot (F : CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat.{u}) {W V : Opens X} (f : W ⟶ V) (hW : W = ⊥) (n : ℕ) : - Function.Injective (CategoryTheory.Sheaf.relH.forget F f n) := + Function.Injective (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH.forget F f n) := haveI : Fact (W = ⊥) := ⟨hW⟩ - (Ext.precompAddEquiv (asIso (cokernel.π - ((CategoryTheory.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).map f))) F n).injective + (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Abelian.Ext.precompAddEquiv (asIso (cokernel.π + ((_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.freeAbelianSheaf (Opens.grothendieckTopology X)).map f))) F n).injective variable {X} (Z : Closeds X) (F : CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat.{u}) /-- `H^n_Z(X; F) → H^n(X; F)`, forgetting the support. -/ def supportH.forget (n : ℕ) : H_[Z]^n(X; F) →+ F.H n := - (CategoryTheory.Sheaf.H'.addEquivTerminal isTerminalTop F n).toAddMonoidHom.comp - (CategoryTheory.Sheaf.relH.forget F _ n) + (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.H'.addEquivTerminal isTerminalTop F n).toAddMonoidHom.comp + (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH.forget F _ n) /-- The map on cohomology with support induced by a morphism of sheaves. -/ def supportH.map {F G : CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat.{u}} (g : F ⟶ G) (n : ℕ) : H_[Z]^n(X; F) →+ H_[Z]^n(X; G) := - CategoryTheory.Sheaf.relH.map _ g n + _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH.map _ g n -end TopCat.Sheaf +end Sheaf +end TopCat end + +end OAI.AlgebraicTopology.Support.Cohomology diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/CohomologyFlasqueModel.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/CohomologyFlasqueModel.lean index e9c0416b9d..56c654a996 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/CohomologyFlasqueModel.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/CohomologyFlasqueModel.lean @@ -12,19 +12,25 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.CohomologyInjectiveModel -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueComparison -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.InjectiveFlasque -public import HodgeConjecture.Mathlib.Algebra.Homology.LiftToInjective -public import Mathlib.CategoryTheory.Abelian.Injective.Resolution -public import Mathlib.CategoryTheory.Abelian.GrothendieckCategory.EnoughInjectives -public import Mathlib.Algebra.Homology.DerivedCategory.KInjective +import HodgeConjecture.Definitions.AlgebraicTopology.Support.CohomologyInjectiveModel +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueComparison +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.InjectiveFlasque +import HodgeConjecture.Mathlib.Algebra.Homology.LiftToInjective +import Mathlib.CategoryTheory.Abelian.Injective.Resolution +import Mathlib.CategoryTheory.Abelian.GrothendieckCategory.EnoughInjectives +import Mathlib.Algebra.Homology.DerivedCategory.KInjective import HodgeConjecture.Mathlib.Algebra.Homology.Notation +namespace OAI.AlgebraicTopology.Support.CohomologyFlasqueModel + +open _root_.TopCat +open _root_.TopCat.Sheaf + /-! # Cohomology with support computed by a flasque resolution @@ -33,11 +39,15 @@ of the supported sections `Γ_{X ∖ U}(V, K)`. The proof compares `K` with a ch resolution of `F`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Abelian Opposite TopologicalSpace +open _root_.CategoryTheory Limits Abelian Opposite _root_.TopologicalSpace -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{0}) (F : Sheaf AddCommGrpCat X) @@ -58,7 +68,7 @@ def injectiveResolutionAugmentation : set_option backward.isDefEq.respectTransparency false in instance injectiveResolutionComplex_injective (q : ℤ) : Injective ((injectiveResolutionComplex X F).X q) := - CochainComplex.injective_extend_nat _ + _root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.injective_extend_nat _ (injectiveResolution (C := Sheaf AddCommGrpCat.{0} X) F).injective q instance injectiveResolutionComplex_isStrictlyGE : @@ -87,11 +97,11 @@ variable (K : CochainComplex (Sheaf AddCommGrpCat X) ℤ) [K.IsStrictlyGE 0] /-- A chosen map `K → I` under `F[0]`. -/ def resolutionToInjective : K ⟶ injectiveResolutionComplex X F := - CochainComplex.liftToInjective ι (injectiveResolutionAugmentation X F) (fun _ => inferInstance) + _root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.liftToInjective ι (injectiveResolutionAugmentation X F) (fun _ => inferInstance) lemma comp_resolutionToInjective : ι ≫ resolutionToInjective X F K ι = injectiveResolutionAugmentation X F := - CochainComplex.comp_liftToInjective ι _ _ + _root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.comp_liftToInjective ι _ _ instance resolutionToInjective_quasiIso : QuasiIso (resolutionToInjective X F K ι) := by have : QuasiIso (ι ≫ resolutionToInjective X F K ι) := by @@ -103,11 +113,11 @@ variable (U V W : Opens X) (hW : V ⊓ U = W) (hK : ∀ n, IsFlasque (K.X n)) include hK in lemma supportedSections_map_resolutionToInjective_quasiIso : - QuasiIso (((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map - (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map + QuasiIso (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map (resolutionToInjective X F K ι))) := - supportedSections_map_quasiIso_of_flasque X U V (resolutionToInjective X F K ι) 0 0 hK - (fun _ => injective_isFlasque X _) + _root_.OAI.AlgebraicTopology.Support.FlasqueComparison.TopCat.Sheaf.supportedSections_map_quasiIso_of_flasque X U V (resolutionToInjective X F K ι) 0 0 hK + (fun _ => _root_.OAI.AlgebraicTopology.Sheaf.InjectiveFlasque.TopCat.injective_isFlasque X _) set_option linter.auxLemma false attribute [local implicit_reducible] TopCat.Sheaf TopCat.instCategorySheaf._aux_1 @@ -117,17 +127,20 @@ variable [HasExt.{1} (CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCom /-- `H^n(V, W; F) ≃ H^n(Γ_{X ∖ U}(V, K))` for a bounded-below flasque resolution `F[0] → K`. -/ def relHAddEquivSupportedSectionsHomologyOfFlasque (n : ℕ) : - CategoryTheory.Sheaf.relH F n (homOfLE (hW ▸ inf_le_left : W ≤ V)) ≃+ - (((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj - (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n := + _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH F n (homOfLE (hW ▸ inf_le_left : W ≤ V)) ≃+ + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n := haveI := supportedSections_map_resolutionToInjective_quasiIso X F K ι U V hK - (@relHAddEquivSupportedSectionsHomology X U V W hW _ F (injectiveResolutionComplex X F) + (@_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.relHAddEquivSupportedSectionsHomology X U V W hW _ F (injectiveResolutionComplex X F) (injectiveResolutionComplex_isKInjective X F) (injectiveResolutionAugmentation X F) (injectiveResolutionAugmentation_quasiIso X F) n).trans - (asIso (HomologicalComplex.homologyMap (((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map - (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map + (asIso (HomologicalComplex.homologyMap (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map (resolutionToInjective X F K ι))) n)).symm.addCommGroupIsoToAddEquiv -end TopCat.Sheaf +end Sheaf +end TopCat end + +end OAI.AlgebraicTopology.Support.CohomologyFlasqueModel diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/CohomologyInjectiveModel.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/CohomologyInjectiveModel.lean index e94ffef2b8..4993a6fc2d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/CohomologyInjectiveModel.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/CohomologyInjectiveModel.lean @@ -12,20 +12,26 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.Cohomology -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.DerivedSectionsLocalization -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.SectionRestrictionCone -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsNaturality -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueSections -public import HodgeConjecture.Mathlib.Algebra.Homology.DerivedCategory.KInjectiveHom -public import HodgeConjecture.Mathlib.Algebra.Homology.HomComplexSingle -public import Mathlib.Algebra.Homology.DerivedCategory.Ext.Basic +import HodgeConjecture.Definitions.AlgebraicTopology.Support.Cohomology +import HodgeConjecture.Definitions.AlgebraicTopology.Support.DerivedSectionsLocalization +import HodgeConjecture.Definitions.AlgebraicTopology.Support.SectionRestrictionCone +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsNaturality +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueSections +import HodgeConjecture.Mathlib.Algebra.Homology.DerivedCategory.KInjectiveHom +import HodgeConjecture.Mathlib.Algebra.Homology.HomComplexSingle +import Mathlib.Algebra.Homology.DerivedCategory.Ext.Basic import HodgeConjecture.Mathlib.Algebra.Homology.Notation +namespace OAI.AlgebraicTopology.Support.CohomologyInjectiveModel + +open _root_.TopCat +open _root_.TopCat.Sheaf + /-! # Cohomology with support computed by an injective resolution @@ -34,29 +40,33 @@ on `W`, that is `Γ_{X ∖ U}(V, G)`. For a K-injective resolution `F → I` thi cohomology of the pair `H^n(V, W; F)` with `H^n(Γ_{X ∖ U}(V, I))`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Abelian Opposite TopologicalSpace +open _root_.CategoryTheory Limits Abelian Opposite _root_.TopologicalSpace -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{0}) /-- `Γ_{X ∖ U}(V, G) ≅ ker(G(V) → G(W))` when `W = V ⊓ U`. -/ def supportedSectionsIsoKer (U V W : Opens X) (hW : V ⊓ U = W) (G : Sheaf AddCommGrpCat X) : - ((sheafSectionsSupportedOutside X U).obj G).obj.obj (op V) ≅ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).obj G).obj.obj (op V) ≅ AddCommGrpCat.of (G.obj.map (homOfLE (hW ▸ inf_le_left : W ≤ V)).op).hom.ker := by subst hW - exact sheafSectionsSupportedOutsideOnOpenIso X U V G ≪≫ - (kernelCompMono _ (supportedOutsideIntersectionIso X U V G).hom).symm ≪≫ - kernelIsoOfEq (toOpenRestrictionPushforward_intersection X U V G) ≪≫ + exact _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideOnOpenIso X U V G ≪≫ + (kernelCompMono _ (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.supportedOutsideIntersectionIso X U V G).hom).symm ≪≫ + kernelIsoOfEq (_root_.OAI.AlgebraicTopology.Support.FlasqueSections.TopCat.Sheaf.toOpenRestrictionPushforward_intersection X U V G) ≪≫ AddCommGrpCat.kernelIsoKer _ lemma supportedSectionsIsoKer_hom_subtype (U V W : Opens X) (hW : V ⊓ U = W) (G : Sheaf AddCommGrpCat X) : (supportedSectionsIsoKer X U V W hW G).hom ≫ AddCommGrpCat.ofHom (AddSubgroup.subtype _) = - ((sheafSectionsSupportedOutsideInclusion X U).app G).hom.app (op V) := by + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app G).hom.app (op V) := by subst hW simp [supportedSectionsIsoKer, kernelCompMono] @@ -65,13 +75,13 @@ lemma supportedSectionsIsoKer_hom_subtype (U V W : Opens X) (hW : V ⊓ U = W) restrict the sections. -/ def supportedSectionsRestriction {U U' V V' : Opens X} (hU : U' ≤ U) (hV : V' ≤ V) (K : CochainComplex (Sheaf AddCommGrpCat X) ℤ) : - ((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj - (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj K) ⟶ - ((supportEvaluation X V').mapHomologicalComplex ℤᵘᵖ).obj - (((sheafSectionsSupportedOutside X U').mapHomologicalComplex ℤᵘᵖ).obj K) := - ((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map - (((sheafSectionsSupportedOutsideMap X hU).mapHomologicalComplex ℤᵘᵖ).app K) ≫ - sectionComplexRestriction X ℤᵘᵖ _ (homOfLE hV) + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj K) ⟶ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V').mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U').mapHomologicalComplex ℤᵘᵖ).obj K) := + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.sheafSectionsSupportedOutsideMap X hU).mapHomologicalComplex ℤᵘᵖ).app K) ≫ + _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ _ (homOfLE hV) set_option linter.auxLemma false attribute [local implicit_reducible] TopCat.Sheaf TopCat.instCategorySheaf._aux_1 @@ -81,13 +91,13 @@ variable (U V W : Opens X) (hW : V ⊓ U = W) /-- The pair sheaf `ℤ[V, W]` for `W = V ⊓ U`, as an object of the site category. -/ abbrev pairSheaf' : CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat := - CategoryTheory.Sheaf.pairSheaf (homOfLE (hW ▸ inf_le_left : W ≤ V)) + _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.pairSheaf (homOfLE (hW ▸ inf_le_left : W ≤ V)) /-- Evaluation of a morphism `ℤ[V, W] ⟶ G` at the generator, as a section of `G` over `V`. -/ def pairSheafHomEvaluation (G : Sheaf AddCommGrpCat X) : (preadditiveCoyoneda.obj (op (pairSheaf' X U V W hW))).obj G ⟶ G.obj.obj (op V) := AddCommGrpCat.ofHom - ((CategoryTheory.Sheaf.freeAbelianSheafHomAddEquiv V G).toAddMonoidHom.comp + ((_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.freeAbelianSheafHomAddEquiv V G).toAddMonoidHom.comp (preadditiveCoyoneda.map (cokernel.π _).op |>.app G).hom) lemma pairSheafHomEvaluation_naturality {G G' : Sheaf AddCommGrpCat X} (g : G ⟶ G') : @@ -98,13 +108,13 @@ lemma pairSheafHomEvaluation_naturality {G G' : Sheaf AddCommGrpCat X} (g : G /-- `Hom(ℤ[V, W], G) ≅ Γ_{X ∖ U}(V, G)`. -/ def pairSheafHomIsoSupportedSections (G : Sheaf AddCommGrpCat X) : (preadditiveCoyoneda.obj (op (pairSheaf' X U V W hW))).obj G ≅ - ((sheafSectionsSupportedOutside X U).obj G).obj.obj (op V) := - (CategoryTheory.Sheaf.pairSheafHomAddEquiv _ G).toAddCommGrpIso ≪≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).obj G).obj.obj (op V) := + (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.pairSheafHomAddEquiv _ G).toAddCommGrpIso ≪≫ (supportedSectionsIsoKer X U V W hW G).symm lemma pairSheafHomIsoSupportedSections_hom_inclusion (G : Sheaf AddCommGrpCat X) : (pairSheafHomIsoSupportedSections X U V W hW G).hom ≫ - ((sheafSectionsSupportedOutsideInclusion X U).app G).hom.app (op V) = + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app G).hom.app (op V) = pairSheafHomEvaluation X U V W hW G := by rw [← supportedSectionsIsoKer_hom_subtype X U V W hW G, pairSheafHomIsoSupportedSections, Iso.trans_hom, @@ -112,38 +122,38 @@ lemma pairSheafHomIsoSupportedSections_hom_inclusion (G : Sheaf AddCommGrpCat X) rfl instance (G : Sheaf AddCommGrpCat X) : - Mono (((sheafSectionsSupportedOutsideInclusion X U).app G).hom.app (op V)) := by - rw [← sheafSectionsSupportedOutsideOnOpenIso_hom_ι] + Mono (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app G).hom.app (op V)) := by + rw [← _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideOnOpenIso_hom_ι] infer_instance lemma pairSheafHomIsoSupportedSections_naturality {G G' : Sheaf AddCommGrpCat X} (g : G ⟶ G') : (pairSheafHomIsoSupportedSections X U V W hW G).hom ≫ - ((sheafSectionsSupportedOutside X U).map g).hom.app (op V) = + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).map g).hom.app (op V) = (preadditiveCoyoneda.obj (op (pairSheaf' X U V W hW))).map g ≫ (pairSheafHomIsoSupportedSections X U V W hW G').hom := by - apply (cancel_mono (((sheafSectionsSupportedOutsideInclusion X U).app G').hom.app (op V))).1 + apply (cancel_mono (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app G').hom.app (op V))).1 rw [Category.assoc, Category.assoc, pairSheafHomIsoSupportedSections_hom_inclusion, ← pairSheafHomEvaluation_naturality, ← pairSheafHomIsoSupportedSections_hom_inclusion, Category.assoc] congr 1 exact (congrArg (fun h => h.hom.app (op V)) - ((sheafSectionsSupportedOutsideInclusion X U).naturality g)) + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).naturality g)) /-- `Hom^•(ℤ[V, W][0], K) ≅ Γ_{X ∖ U}(V, K)` for a complex of sheaves `K`. -/ def homComplexPairSheafIsoSupportedSections (K : CochainComplex (CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat) ℤ) : CochainComplex.HomComplex ((CochainComplex.singleFunctor _ 0).obj (pairSheaf' X U V W hW)) K ≅ - ((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj - (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj K) := - CochainComplex.HomComplex.fromSingleZeroIsoPreadditiveCoyoneda _ K ≪≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj K) := + _root_.OAI.Algebra.Homology.HomComplexSingle.CochainComplex.HomComplex.fromSingleZeroIsoPreadditiveCoyoneda _ K ≪≫ HomologicalComplex.Hom.isoOfComponents (fun n => pairSheafHomIsoSupportedSections X U V W hW (K.X n)) (fun i j _ => pairSheafHomIsoSupportedSections_naturality X U V W hW (K.d i j)) variable [HasExt.{1} (CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat)] -local instance : +local instance instHasDerivedCategorySheafOpensCarrierGrothendieckTopologyAddCommGrpCat_oAI : HasDerivedCategory (CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat) := HasDerivedCategory.standard _ @@ -151,9 +161,9 @@ local instance : def relHAddEquivSupportedSectionsHomology (F : CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat) (I : CochainComplex (CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat) ℤ) [I.IsKInjective] (ι : (CochainComplex.singleFunctor _ 0).obj F ⟶ I) [QuasiIso ι] (n : ℕ) : - CategoryTheory.Sheaf.relH F n (homOfLE (hW ▸ inf_le_left : W ≤ V)) ≃+ - (((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj - (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj + _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH F n (homOfLE (hW ▸ inf_le_left : W ≤ V)) ≃+ + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj I)).homology n := haveI : IsIso (DerivedCategory.Q.map ι) := (DerivedCategory.isIso_Q_map_iff_quasiIso (φ := ι)).2 inferInstance @@ -164,13 +174,16 @@ def relHAddEquivSupportedSectionsHomology (F : CategoryTheory.Sheaf (Opens.groth ShiftedHom (DerivedCategory.Q.obj ((CochainComplex.singleFunctor _ 0).obj (pairSheaf' X U V W hW))) (DerivedCategory.Q.obj I) (n : ℤ) from - isoHomCongrAddEquiv (Iso.refl _) + _root_.OAI.Algebra.Homology.DerivedCategoryInjectiveHom.CategoryTheory.isoHomCongrAddEquiv (Iso.refl _) ((shiftFunctor _ (n : ℤ)).mapIso (asIso (DerivedCategory.Q.map ι)))).trans <| - (CochainComplex.kInjectiveDerivedHomAddEquivCohomologyClass _ I n).trans <| + (_root_.OAI.Algebra.Homology.DerivedCategoryInjectiveHom.CochainComplex.kInjectiveDerivedHomAddEquivCohomologyClass _ I n).trans <| (CochainComplex.HomComplex.homologyAddEquiv _ I n).symm.trans (HomologicalComplex.homologyMapIso (homComplexPairSheafIsoSupportedSections X U V W hW I) n).addCommGroupIsoToAddEquiv -end TopCat.Sheaf +end Sheaf +end TopCat end + +end OAI.AlgebraicTopology.Support.CohomologyInjectiveModel diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/DerivedSections.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/DerivedSections.lean index 2e7551fa8e..811d9d3ffc 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/DerivedSections.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/DerivedSections.lean @@ -1,14 +1,20 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlus -public import Mathlib.CategoryTheory.Abelian.GrothendieckCategory.EnoughInjectives -public import Mathlib.Topology.Sheaves.Abelian -public import Mathlib.Topology.Sheaves.Functors -public import Mathlib.Topology.Sets.Closeds +import Mathlib.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlus +import Mathlib.CategoryTheory.Abelian.GrothendieckCategory.EnoughInjectives +import Mathlib.Topology.Sheaves.Abelian +import Mathlib.Topology.Sheaves.Functors +import Mathlib.Topology.Sets.Closeds + +namespace OAI.AlgebraicTopology.Support.DerivedSections + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Concrete sheaf sections with support and their right derived functor @@ -27,13 +33,17 @@ project's restriction mapping-cone model, and coherent commutation with shifts a theorems. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) @@ -117,4 +127,9 @@ local instance supportSheafHasDerivedCategory : local instance supportGroupsHasDerivedCategory : HasDerivedCategory AddCommGrpCat.{u} := HasDerivedCategory.standard AddCommGrpCat.{u} -end TopCat.Sheaf +end Sheaf +end TopCat + +end + +end OAI.AlgebraicTopology.Support.DerivedSections diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/DerivedSectionsLocalization.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/DerivedSectionsLocalization.lean index 050b85e62b..4ee9f16fc5 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/DerivedSectionsLocalization.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/DerivedSectionsLocalization.lean @@ -1,14 +1,21 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSections -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.InjectiveFlasque -public import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingCoconeShortExact +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSections +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.InjectiveFlasque +import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingCoconeShortExact + +namespace OAI.AlgebraicTopology.Support.DerivedSectionsLocalization + +open _root_.TopCat +open _root_.TopCat.Sheaf + /-! # The localization sequence on injective coefficient complexes @@ -26,28 +33,32 @@ comparison between restriction of the ambient injective model and an independent injective resolution on the complement. That comparison is a separate statement. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) (U : Opens X) /-- Restriction of a flasque coefficient sheaf is surjective on every open set. -/ instance toOpenRestrictionPushforward_app_epi (F : Sheaf AddCommGrpCat.{u} X) [F.IsFlasque] (V : Opens X) : - Epi (((toOpenRestrictionPushforward X U).app F).hom.app (op V)) := by + Epi (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F).hom.app (op V)) := by change Epi (F.obj.map _) infer_instance instance toOpenRestrictionPushforward_epi (F : Sheaf AddCommGrpCat.{u} X) - [F.IsFlasque] : Epi ((toOpenRestrictionPushforward X U).app F) := by - let : ∀ V, Epi (((toOpenRestrictionPushforward X U).app F).hom.app V) := + [F.IsFlasque] : Epi ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F) := by + let : ∀ V, Epi (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F).hom.app V) := fun V => toOpenRestrictionPushforward_app_epi X U F V.unop - have : Epi ((toOpenRestrictionPushforward X U).app F).hom := + have : Epi ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F).hom := NatTrans.epi_of_epi_app _ exact (sheafToPresheaf (Opens.grothendieckTopology X) AddCommGrpCat).epi_of_epi_map this @@ -67,7 +78,7 @@ instance (V : Opens X) : (sheafToPresheaf (Opens.grothendieckTopology X) AddCommGrpCat.{u}) ((evaluation (Opens X)ᵒᵖ AddCommGrpCat.{u}).obj (op V)) -instance : (openRestrictionPushforward X U).Additive where +instance : (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X U).Additive where map_add := by intros; rfl /-- Let `X` be a topological space, `U ⊆ X` open, and `K` an integer-indexed complex of sheaves of @@ -79,13 +90,13 @@ def supportRestrictionComplexShortComplex -- The sequence `Γ_{X \ U}(K) → K → j_*(K|_U)`. ShortComplex (CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) := ShortComplex.mk - (show ((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj K ⟶ K from - { f n := (sheafSectionsSupportedOutsideInclusion X U).app (K.X n) - comm' i j h := ((sheafSectionsSupportedOutsideInclusion X U).naturality (K.d i j)).symm }) - (show K ⟶ ((openRestrictionPushforward X U).mapHomologicalComplex ℤᵘᵖ).obj K from - { f n := (toOpenRestrictionPushforward X U).app (K.X n) - comm' i j h := ((toOpenRestrictionPushforward X U).naturality (K.d i j)).symm }) - (by ext n; exact sheafSectionsSupportedOutsideInclusion_restriction X U (K.X n)) + (show ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj K ⟶ K from + { f n := (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app (K.X n) + comm' i j h := ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).naturality (K.d i j)).symm }) + (show K ⟶ ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X U).mapHomologicalComplex ℤᵘᵖ).obj K from + { f n := (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app (K.X n) + comm' i j h := ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).naturality (K.d i j)).symm }) + (by ext n; exact _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion_restriction X U (K.X n)) /-- Let `X` be a topological space, `U` and `V` open subsets, and `K` an integer-indexed complex of sheaves of abelian groups on `X`. This is the sequence of complexes `Γ_{X \ U}(V, K) → K(V) → @@ -104,4 +115,9 @@ local instance derivedSupportLocalizationSheafDerivedCategory : local instance derivedSupportLocalizationGroupDerivedCategory : HasDerivedCategory AddCommGrpCat.{u} := HasDerivedCategory.standard AddCommGrpCat.{u} -end TopCat.Sheaf +end Sheaf +end TopCat + +end + +end OAI.AlgebraicTopology.Support.DerivedSectionsLocalization diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/NeighborhoodPairImage.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/NeighborhoodPairImage.lean index 9a27037f78..4920132808 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/NeighborhoodPairImage.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/NeighborhoodPairImage.lean @@ -1,10 +1,14 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FlattenedSupport +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FlattenedSupport + +namespace OAI.AlgebraicTopology.Support.NeighborhoodPairImage + /-! # Transporting neighborhood-support pairs through embeddings @@ -14,11 +18,12 @@ therefore transport the cofinal normal neighborhoods of auxiliary algebraic open ambient space. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits Topology +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.Topology -namespace AlgebraicTopology.Singular +section +namespace Singular variable {M N : Type} [TopologicalSpace M] [TopologicalSpace N] (f : M → N) (hf : IsEmbedding f) (W B : Set M) (S : Set N) @@ -36,8 +41,8 @@ Assume `w ∈ B` if and only if `f(w) ∈ S` for every `w ∈ W`. This is the is topological pairs `(W, W \ B) ≅ (f(W), f(W) \ S)` whose maps on both spaces are restrictions of `f`. -/ def neighborhoodSupportPairImageIso : - neighborhoodSupportComplementPair W B ≅ - neighborhoodSupportComplementPair (f '' W) S where + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair W B ≅ + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (f '' W) S where hom := TopPair.ofHom (TopCat.ofHom ⟨hf.homeomorphImage W, (hf.homeomorphImage W).continuous⟩) (TopCat.ofHom ⟨neighborhoodSupportComplementImageHomeomorph f hf W B S hS, @@ -66,19 +71,24 @@ Assume `w ∈ B` if and only if `f(w) ∈ S` for every `w ∈ W`. Pullback along isomorphism of rational vector spaces `H^n(f(W), f(W) \ S; ℚ) ≅ H^n(W, W \ B; ℚ)` in relative singular cohomology. -/ def neighborhoodSupportPairImageCohomologyIso (n : ℕ) : - RelativeCohomology ℚ (neighborhoodSupportComplementPair (f '' W) S) n ≅ - RelativeCohomology ℚ (neighborhoodSupportComplementPair W B) n := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (f '' W) S) n ≅ + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair W B) n := (HomologicalComplex.homologyFunctor (ModuleCat ℚ) (ComplexShape.up ℕ) n).mapIso - (HomologicalComplex.linearDualIso - ((relativeChainFunctor ℚ).mapIso (neighborhoodSupportPairImageIso f hf W B S hS))) + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualIso + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).mapIso (neighborhoodSupportPairImageIso f hf W B S hS))) /-- Let `f : M → N` be an embedding of topological spaces, with subsets `W, B ⊆ M` and `S ⊆ N`. Assume `w ∈ B` if and only if `f(w) ∈ S` for every `w ∈ W`. This rational linear equivalence `H^n(f(W), f(W) \ S; ℚ) ≃ H^n(W, W \ B; ℚ)` pulls relative singular cochains back along the restrictions of `f`. -/ def neighborhoodSupportPairImageCohomologyEquiv (n : ℕ) : - RelativeCohomology ℚ (neighborhoodSupportComplementPair (f '' W) S) n ≃ₗ[ℚ] - RelativeCohomology ℚ (neighborhoodSupportComplementPair W B) n := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (f '' W) S) n ≃ₗ[ℚ] + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair W B) n := (neighborhoodSupportPairImageCohomologyIso f hf W B S hS n).toLinearEquiv -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.Support.NeighborhoodPairImage diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/RelativeCohomologyOpenTransport.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/RelativeCohomologyOpenTransport.lean index 068f0ffeb3..1821ac7d42 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/RelativeCohomologyOpenTransport.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/RelativeCohomologyOpenTransport.lean @@ -1,12 +1,17 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.RelativeCohomologySheaf -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.NeighborhoodPairImage -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenSheafification +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.RelativeCohomologySheaf +import HodgeConjecture.Definitions.AlgebraicTopology.Support.NeighborhoodPairImage +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenSheafification + +namespace OAI.AlgebraicTopology.Support.RelativeCohomologyOpenTransport + +open scoped OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular /-! # Open-embedding transport of the relative-cohomology sheaf @@ -17,23 +22,24 @@ Sheafification then transports the normalized section, with the sheafification-u square displayed. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Topology Opposite +open _root_.CategoryTheory Limits _root_.TopologicalSpace _root_.Topology Opposite -namespace AlgebraicTopology.Singular +section +namespace Singular variable {X Y : TopCat.{0}} (f : Y ⟶ X) (hf : IsOpenEmbedding f) (S : Set X) (B : Set Y) (hB : f ⁻¹' S = B) /-- The pair-image identification respects neighborhood inclusions. -/ theorem neighborhoodSupportPairImageIso_naturality {U V : Opens Y} (hUV : U ≤ V) : - neighborhoodSupportInclusionPairMap (W := (U : Set Y)) (V := (V : Set Y)) hUV B ≫ - (neighborhoodSupportPairImageIso f hf.isEmbedding (V : Set Y) B S + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (U : Set Y)) (V := (V : Set Y)) hUV B ≫ + (_root_.OAI.AlgebraicTopology.Support.NeighborhoodPairImage.Singular.neighborhoodSupportPairImageIso f hf.isEmbedding (V : Set Y) B S (fun y _ => by rw [← hB]; rfl)).hom = - (neighborhoodSupportPairImageIso f hf.isEmbedding (U : Set Y) B S + (_root_.OAI.AlgebraicTopology.Support.NeighborhoodPairImage.Singular.neighborhoodSupportPairImageIso f hf.isEmbedding (U : Set Y) B S (fun y _ => by rw [← hB]; rfl)).hom ≫ - neighborhoodSupportInclusionPairMap + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (hf.functor.obj U : Set X)) (V := (hf.functor.obj V : Set X)) (Set.image_mono hUV) S := rfl @@ -44,28 +50,28 @@ For a natural number `n`, pullback identifies the presheaves on `Y` given by `V \ S; ℚ)` and `V ↦ H^n(V, V \ B; ℚ)`. The groups are relative singular cohomology, with restriction maps induced by inclusions. -/ def supportRelativeCohomologyPresheafOpenIso (n : ℕ) : - hf.functor.op ⋙ supportRelativeCohomologyPresheaf X S n ≅ - supportRelativeCohomologyPresheaf Y B n := + hf.functor.op ⋙ _root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyPresheaf X S n ≅ + _root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyPresheaf Y B n := NatIso.ofComponents (fun V => - (neighborhoodSupportPairImageCohomologyEquiv f hf.isEmbedding (V.unop : Set Y) B S + (_root_.OAI.AlgebraicTopology.Support.NeighborhoodPairImage.Singular.neighborhoodSupportPairImageCohomologyEquiv f hf.isEmbedding (V.unop : Set Y) B S (fun y _ => by rw [← hB]; rfl) n).toAddEquiv.toAddCommGrpIso) (by intro U V g apply AddCommGrpCat.hom_ext ext a - change relativeCohomologyMap ℚ n - (neighborhoodSupportPairImageIso f hf.isEmbedding (V.unop : Set Y) B S + change _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.Support.NeighborhoodPairImage.Singular.neighborhoodSupportPairImageIso f hf.isEmbedding (V.unop : Set Y) B S (fun y _ => by rw [← hB]; rfl)).hom - (relativeCohomologyMap ℚ n - (neighborhoodSupportInclusionPairMap (Set.image_mono (leOfHom g.unop)) S) a) = - relativeCohomologyMap ℚ n - (neighborhoodSupportInclusionPairMap (W := (V.unop : Set Y)) + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (Set.image_mono (leOfHom g.unop)) S) a) = + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (V.unop : Set Y)) (V := (U.unop : Set Y)) (leOfHom g.unop) B) - (relativeCohomologyMap ℚ n - (neighborhoodSupportPairImageIso f hf.isEmbedding (U.unop : Set Y) B S + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.Support.NeighborhoodPairImage.Singular.neighborhoodSupportPairImageIso f hf.isEmbedding (U.unop : Set Y) B S (fun y _ => by rw [← hB]; rfl)).hom a) - rw [← LinearMap.comp_apply, ← relativeCohomologyMap_comp, + rw [← LinearMap.comp_apply, ← _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeCohomologyMap_comp, ← neighborhoodSupportPairImageIso_naturality f hf S B hB (leOfHom g.unop), - relativeCohomologyMap_comp] + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeCohomologyMap_comp] rfl) /-- Let `f : Y → X` be an open embedding of topological spaces and `P` a presheaf of abelian groups @@ -78,7 +84,7 @@ def supportOpenEmbeddingSheafificationIso (P : TopCat.Presheaf AddCommGrpCat X) letI : hf.functor.IsContinuous (Opens.grothendieckTopology Y) (Opens.grothendieckTopology X) := hf.functor_isContinuous letI : hf.functor.IsCocontinuous (Opens.grothendieckTopology Y) (Opens.grothendieckTopology X) := - hf.functor_isCocontinuous + (_root_.OAI.AlgebraicTopology.Sheaf.OpenSheafification.Topology.IsOpenEmbedding.functor_isCocontinuous hf) (hf.functor.pushforwardContinuousSheafificationCompatibility AddCommGrpCat (Opens.grothendieckTopology Y) (Opens.grothendieckTopology X)).app P @@ -93,7 +99,7 @@ def supportRelativeCohomologySheafOpenIso (n : ℕ) : (hf.sheafPullback AddCommGrpCat).obj 𝓗_[S]^n(X; ℚ) := (presheafToSheaf (Opens.grothendieckTopology Y) AddCommGrpCat).mapIso (supportRelativeCohomologyPresheafOpenIso f hf S B hB n).symm ≪≫ - supportOpenEmbeddingSheafificationIso f hf (supportRelativeCohomologyPresheaf X S n) + supportOpenEmbeddingSheafificationIso f hf (_root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyPresheaf X S n) /-- Let `f : Y → X` be an open embedding of topological spaces, let `S ⊆ X`, and put `B = f⁻¹(S)`. Write `𝓗^n_S` for the sheafification of `V ↦ H^n(V, V \ S; ℚ)`, and define `𝓗^n_B` on `Y` in the @@ -119,4 +125,9 @@ def supportRelativeCohomologySectionOnOpen (n : ℕ) (U : Opens X) (𝓗_[S]^n(X; ℚ)).presheaf.map (eqToHom hU.symm).op (supportRelativeCohomologySectionOpenImage f hf S B hB n s) -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.Support.RelativeCohomologyOpenTransport diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/RelativeCohomologySheaf.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/RelativeCohomologySheaf.lean index d602f9eeed..a617e01f26 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/RelativeCohomologySheaf.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/RelativeCohomologySheaf.lean @@ -1,11 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.NormalProjectionCoclass -public import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.MapOfLocalStalks +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.NormalProjectionCoclass +import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.MapOfLocalStalks + +namespace OAI.AlgebraicTopology.Support.RelativeCohomologySheaf + /-! # The local relative-cohomology presheaf and its sheafification @@ -15,23 +19,24 @@ these pairs, and the sheaf is its sheafification. This module also proves local away from a closed support. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite HomologicalComplex -open TopCat.Presheaf +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite _root_.HomologicalComplex +open _root_.TopCat.Presheaf -namespace AlgebraicTopology.Singular +section +namespace Singular variable {M : Type} [TopologicalSpace M] @[simp] theorem neighborhoodSupportInclusionPairMap_id (W S : Set M) : - neighborhoodSupportInclusionPairMap (show W ⊆ W from le_refl W) S = - 𝟙 (neighborhoodSupportComplementPair W S) := rfl + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (show W ⊆ W from le_refl W) S = + 𝟙 (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair W S) := rfl @[simp] theorem neighborhoodSupportInclusionPairMap_comp {U V W : Set M} (hUV : U ⊆ V) (hVW : V ⊆ W) (S : Set M) : - neighborhoodSupportInclusionPairMap hUV S ≫ neighborhoodSupportInclusionPairMap hVW S = - neighborhoodSupportInclusionPairMap (hUV.trans hVW) S := rfl + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap hUV S ≫ _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap hVW S = + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (hUV.trans hVW) S := rfl variable (X : TopCat.{0}) (S : Set X) (n : ℕ) @@ -41,29 +46,29 @@ abelian groups assigns to each open `V` the rational relative singular cohomolog coboundaries of such cochains. Restrictions are induced by inclusions of pairs. -/ def supportRelativeCohomologyPresheaf : TopCat.Presheaf AddCommGrpCat X where -- `V ↦ H^n(V, V \ S; ℚ)`. - obj V := AddCommGrpCat.of (RelativeCohomology ℚ - (neighborhoodSupportComplementPair (V.unop : Set X) S) n) + obj V := AddCommGrpCat.of (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (V.unop : Set X) S) n) map {U V} f := AddCommGrpCat.ofHom - (relativeCohomologyMap ℚ n (neighborhoodSupportInclusionPairMap + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (V.unop : Set X)) (V := (U.unop : Set X)) (leOfHom f.unop) S)).toAddMonoidHom map_id V := by change AddCommGrpCat.ofHom - (relativeCohomologyMap ℚ n - (neighborhoodSupportInclusionPairMap (show (V.unop : Set X) ⊆ V.unop from le_refl _) S)).toAddMonoidHom = _ - rw [neighborhoodSupportInclusionPairMap_id, relativeCohomologyMap_id] + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (show (V.unop : Set X) ⊆ V.unop from le_refl _) S)).toAddMonoidHom = _ + rw [neighborhoodSupportInclusionPairMap_id, _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeCohomologyMap_id] rfl map_comp {U V W} f g := by apply AddCommGrpCat.hom_ext apply AddMonoidHom.ext intro a - change relativeCohomologyMap ℚ n - (neighborhoodSupportInclusionPairMap (W := (W.unop : Set X)) (V := (U.unop : Set X)) + change _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (W.unop : Set X)) (V := (U.unop : Set X)) (leOfHom (f ≫ g).unop) S) a = - relativeCohomologyMap ℚ n (neighborhoodSupportInclusionPairMap + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (W.unop : Set X)) (V := (V.unop : Set X)) (leOfHom g.unop) S) - (relativeCohomologyMap ℚ n (neighborhoodSupportInclusionPairMap + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (V.unop : Set X)) (V := (U.unop : Set X)) (leOfHom f.unop) S) a) - rw [← LinearMap.comp_apply, ← relativeCohomologyMap_comp, neighborhoodSupportInclusionPairMap_comp] + rw [← LinearMap.comp_apply, ← _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeCohomologyMap_comp, neighborhoodSupportInclusionPairMap_comp] /-- Let `X` be a topological space, `S ⊆ X` a subset, and `n` a natural number. The sheaf `𝓗^n_S` is the sheafification of `V ↦ H^n(V, V \ S; ℚ)`, rational relative singular cohomology on open @@ -91,9 +96,14 @@ this sends a relative singular class in `H^n(V, V \ S; ℚ)` to its germ at `x` the sheafification of `W ↦ H^n(W, W \ S; ℚ)`. -/ def supportRelativeCohomologyGerm (V : Opens X) (x : X) (hx : x ∈ V) -- A class in `H^n(V, V \ S; ℚ)`. - (a : RelativeCohomology ℚ (neighborhoodSupportComplementPair (V : Set X) S) n) : + (a : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (V : Set X) S) n) : (𝓗_[S]^n(X; ℚ)).presheaf.stalk x := (𝓗_[S]^n(X; ℚ)).presheaf.germ V x hx ((supportRelativeCohomologyToSheaf X S n).app (op V) a) -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.Support.RelativeCohomologySheaf diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SectionRestrictionCone.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SectionRestrictionCone.lean index 0afd5b8b35..2960b65662 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SectionRestrictionCone.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SectionRestrictionCone.lean @@ -1,14 +1,20 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueSections -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueComparison -public import HodgeConjecture.Mathlib.Algebra.Homology.MapExtend +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueSections +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueComparison +import HodgeConjecture.Mathlib.Algebra.Homology.MapExtend + +namespace OAI.AlgebraicTopology.Support.SectionRestrictionCone + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Supported-section kernels and open restriction cones @@ -18,20 +24,24 @@ computes the cone of restriction from `V` to `V ∩ U`, with the conventional de The arrow identification displays the open-intersection map. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) /-- Let `X` be a topological space and `W ⊆ V` open subsets. This natural transformation sends a sheaf of abelian groups `F` to its restriction map `F(V) → F(W)`. -/ def supportEvaluationRestriction {V W : Opens X} (i : W ⟶ V) : - supportEvaluation X V ⟶ supportEvaluation X W where + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V ⟶ _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W where app F := F.obj.map i.op naturality _F _G f := (f.hom.naturality i.op).symm @@ -41,8 +51,8 @@ sections in each degree. -/ def sectionComplexRestriction {I : Type*} (c : ComplexShape I) (K : HomologicalComplex (Sheaf AddCommGrpCat.{u} X) c) {V W : Opens X} (i : W ⟶ V) : - ((supportEvaluation X V).mapHomologicalComplex c).obj K ⟶ - ((supportEvaluation X W).mapHomologicalComplex c).obj K := + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex c).obj K ⟶ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W).mapHomologicalComplex c).obj K := ((supportEvaluationRestriction X i).mapHomologicalComplex c).app K /-- Section restriction commutes with extension from natural to integer degrees. -/ @@ -50,13 +60,13 @@ theorem sectionComplexRestriction_extend (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℕ) {V W : Opens X} (i : W ⟶ V) : sectionComplexRestriction X ℤᵘᵖ (K.extend ComplexShape.embeddingUpNat) i ≫ - (HomologicalComplex.mapExtendCanonicalIso (supportEvaluation X W) K + (_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W) K ComplexShape.embeddingUpNat).hom = - (HomologicalComplex.mapExtendCanonicalIso (supportEvaluation X V) K + (_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V) K ComplexShape.embeddingUpNat).hom ≫ HomologicalComplex.extendMap (sectionComplexRestriction X (.up ℕ) K i) ComplexShape.embeddingUpNat := - HomologicalComplex.mapExtendCanonicalIso_natTrans (supportEvaluation X V) K + _root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso_natTrans (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V) K ComplexShape.embeddingUpNat (supportEvaluationRestriction X i) /-- Let `X` be a topological space, `W ⊆ V` open subsets, and `K` a nonnegative complex of sheaves @@ -74,9 +84,9 @@ def sectionComplexRestrictionExtendConeIso HomologicalComplex.homotopyCofiber.mapArrowIso _ _ (fun j => ⟨j - 1, ComplexShape.up_mk _ _ (by omega)⟩) (Arrow.isoMk - (HomologicalComplex.mapExtendCanonicalIso (supportEvaluation X V) K + (_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V) K ComplexShape.embeddingUpNat) - (HomologicalComplex.mapExtendCanonicalIso (supportEvaluation X W) K + (_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W) K ComplexShape.embeddingUpNat) (sectionComplexRestriction_extend X K i).symm) @@ -87,20 +97,20 @@ sheaves of abelian groups on `X`. For `j : U → X`, this is the degreewise iden j_*(K|_U)) ≅ K(V ∩ U)`. It identifies the last complex in the sequence of supported sections, all sections, and restricted sections. -/ def supportRestrictionSectionsIntersectionIso : - (supportRestrictionSectionsComplexShortComplex X U V K).X₃ ≅ - ((supportEvaluation X (V ⊓ U)).mapHomologicalComplex ℤᵘᵖ).obj K := + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex X U V K).X₃ ≅ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X (V ⊓ U)).mapHomologicalComplex ℤᵘᵖ).obj K := HomologicalComplex.Hom.isoOfComponents - (fun n => supportedOutsideIntersectionIso X U V (K.X n)) + (fun n => _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.supportedOutsideIntersectionIso X U V (K.X n)) (fun n m _ => (K.d n m).hom.naturality (eqToHom (congrArg op (Opens.functor_map_eq_inf U V)))) /-- The intersection identification preserves the restriction arrow. -/ theorem supportRestrictionSectionsIntersectionIso_restriction : - (supportRestrictionSectionsComplexShortComplex X U V K).g ≫ + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex X U V K).g ≫ (supportRestrictionSectionsIntersectionIso X U V K).hom = sectionComplexRestriction X ℤᵘᵖ K (Opens.infLELeft V U) := HomologicalComplex.Hom.ext (funext fun n ↦ - toOpenRestrictionPushforward_intersection X U V (K.X n)) + _root_.OAI.AlgebraicTopology.Support.FlasqueSections.TopCat.Sheaf.toOpenRestrictionPushforward_intersection X U V (K.X n)) set_option backward.isDefEq.respectTransparency false in set_option backward.defeqAttrib.useBackward true in @@ -109,7 +119,7 @@ sheaves of abelian groups on `X`. The equality `Γ(V, j_*(K|_U)) ≅ K(V ∩ U)` induces this isomorphism from the cone of `K(V) → Γ(V, j_*(K|_U))` to the cone of restriction `K(V) → K(V ∩ U)`. -/ def supportRestrictionSectionsConeIso : - CochainComplex.mappingCone (supportRestrictionSectionsComplexShortComplex X U V K).g ≅ + CochainComplex.mappingCone (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex X U V K).g ≅ CochainComplex.mappingCone (sectionComplexRestriction X ℤᵘᵖ K (Opens.infLELeft V U)) := HomologicalComplex.homotopyCofiber.mapArrowIso _ _ @@ -127,19 +137,24 @@ def supportedSectionHomologyIsoRestrictionCone (hK : ∀ n, (K.X n).IsFlasque) (n : ℤ) : -- `H^n(Γ_{X \ U}(V, K)) ≅ H^{n-1}(cone(K(V) → K(V ⊓ U)))`. -- `Γ_{X \ U}(V, K)`, the first term of `Γ_{X \ U}(V, K) → K(V) → K(V ⊓ U)`. - (supportRestrictionSectionsComplexShortComplex X U V K).X₁.homology n ≅ + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex X U V K).X₁.homology n ≅ (CochainComplex.mappingCone -- The restriction `K(V) → K(V ⊓ U)`. (sectionComplexRestriction X ℤᵘᵖ K (Opens.infLELeft V U))).homology (n - 1) := - let S := supportRestrictionSectionsComplexShortComplex X U V K - letI : QuasiIso (CochainComplex.mappingCocone.shiftedLiftShortComplex S) := - CochainComplex.mappingCocone.quasiIso_shiftedLiftShortComplex S - (supportRestrictionSectionsComplexShortComplex_shortExact_of_flasque X U V K hK) + let S := _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex X U V K + letI : QuasiIso (_root_.OAI.Algebra.Homology.MappingCoconeShortExact.CochainComplex.mappingCocone.shiftedLiftShortComplex S) := + _root_.OAI.Algebra.Homology.DerivedCategoryMapOf.CochainComplex.mappingCocone.quasiIso_shiftedLiftShortComplex S + (_root_.OAI.AlgebraicTopology.Support.FlasqueComparison.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex_shortExact_of_flasque X U V K hK) let e := ((HomologicalComplex.homologyFunctor AddCommGrpCat ℤᵘᵖ 0).shiftIso 1 (n - 1) n (by omega)).app S.X₁ e.symm ≪≫ asIso (HomologicalComplex.homologyMap - (CochainComplex.mappingCocone.shiftedLiftShortComplex S) (n - 1)) ≪≫ + (_root_.OAI.Algebra.Homology.MappingCoconeShortExact.CochainComplex.mappingCocone.shiftedLiftShortComplex S) (n - 1)) ≪≫ HomologicalComplex.homologyMapIso (supportRestrictionSectionsConeIso X U V K) (n - 1) -end TopCat.Sheaf +end Sheaf +end TopCat + +end + +end OAI.AlgebraicTopology.Support.SectionRestrictionCone diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SingularCohomologySheafComparison.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SingularCohomologySheafComparison.lean index 10db1597df..a319c381fc 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SingularCohomologySheafComparison.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SingularCohomologySheafComparison.lean @@ -1,13 +1,21 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SingularSectionNaturality -public import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.CohomologySection +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SingularSectionNaturality +import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.CohomologySection + +namespace OAI.AlgebraicTopology.Support.SingularCohomologySheafComparison + +open scoped OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # The supported singular cohomology sheaf and local relative cohomology @@ -18,13 +26,17 @@ the kernel-defined supported singular complex. The local class and unit equation identification, including the positive short-exact-sequence lift normalization. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite HomologicalComplex +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite _root_.HomologicalComplex universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) @@ -32,10 +44,10 @@ variable (X : TopCat.{u}) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) @[reassoc] lemma sectionCohomologyPresheafOnOpenIso_inv_naturality (n : ℤ) {V W : Opens X} (a : W ⟶ V) : - (sectionCohomologyPresheaf X K n).map a.op ≫ - (sectionCohomologyPresheafOnOpenIso X K n W).inv = - (sectionCohomologyPresheafOnOpenIso X K n V).inv ≫ - homologyMap (sectionComplexRestriction X ℤᵘᵖ K a) n := by + (_root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheaf X K n).map a.op ≫ + (_root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheafOnOpenIso X K n W).inv = + (_root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheafOnOpenIso X K n V).inv ≫ + homologyMap (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ K a) n := by let P : CochainComplex ((Opens X)ᵒᵖ ⥤ AddCommGrpCat.{u}) ℤ := ((forget AddCommGrpCat.{u} X).mapHomologicalComplex ℤᵘᵖ).obj K let S : ShortComplex ((Opens X)ᵒᵖ ⥤ AddCommGrpCat.{u}) := P.sc n @@ -47,11 +59,13 @@ lemma sectionCohomologyPresheafOnOpenIso_inv_naturality rw [NatTrans.app_homology] simp only [Category.assoc, Iso.hom_inv_id, Category.comp_id] -end TopCat.Sheaf +end Sheaf +end TopCat -namespace AlgebraicTopology.Singular +section +namespace Singular -open TopCat.Sheaf +open _root_.OAI.AlgebraicTopology.Support.SingularCohomologySheafComparison.TopCat.Sheaf variable (X : TopCat.{0}) [T2Space X] [∀ V : Opens X, ParacompactSpace V] (S : Set X) (hS : IsClosed S) (n : ℕ) @@ -62,31 +76,31 @@ with `V ↦ H^n(V, V \ S; ℚ)`. Here `C^•` is the sheafified rational singula `Γ_S` takes the subsheaves of sections vanishing off `S`. -/ def supportedSingularCohomologyPresheafIsoRelative : -- `V ↦ H^n_S(V; ℚ)` is the presheaf `V ↦ H^n(V, V \ S; ℚ)`. - sectionCohomologyPresheaf X + _root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheaf X -- `Γ_S` of the singular-cochain sheaf complex. - (supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩) (n : ℤ) ≅ - supportRelativeCohomologyPresheaf X S n := + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩) (n : ℤ) ≅ + _root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyPresheaf X S n := NatIso.ofComponents (fun V => - (sectionCohomologyPresheafOnOpenIso X - (supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩) (n : ℤ) V.unop).symm ≪≫ - (supportedRationalSingularSectionCohomologyEquivSupportComplement X S hS V.unop n).toAddCommGrpIso) (by + (_root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheafOnOpenIso X + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩) (n : ℤ) V.unop).symm ≪≫ + (_root_.OAI.AlgebraicTopology.Support.SingularSectionCohomology.Singular.supportedRationalSingularSectionCohomologyEquivSupportComplement X S hS V.unop n).toAddCommGrpIso) (by intro V W a apply ConcreteCategory.hom_ext intro z - let K := supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩ - change supportedRationalSingularSectionCohomologyEquivSupportComplement X S hS W.unop n - ((sectionCohomologyPresheafOnOpenIso X K (n : ℤ) W.unop).inv - ((sectionCohomologyPresheaf X K (n : ℤ)).map a z)) = - relativeCohomologyMap ℚ n - (neighborhoodSupportInclusionPairMap + let K := _root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩ + change _root_.OAI.AlgebraicTopology.Support.SingularSectionCohomology.Singular.supportedRationalSingularSectionCohomologyEquivSupportComplement X S hS W.unop n + ((_root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheafOnOpenIso X K (n : ℤ) W.unop).inv + ((_root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheaf X K (n : ℤ)).map a z)) = + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (W.unop : Set X)) (V := (V.unop : Set X)) (leOfHom a.unop) S) - (supportedRationalSingularSectionCohomologyEquivSupportComplement X S hS V.unop n - ((sectionCohomologyPresheafOnOpenIso X K (n : ℤ) V.unop).inv z)) + (_root_.OAI.AlgebraicTopology.Support.SingularSectionCohomology.Singular.supportedRationalSingularSectionCohomologyEquivSupportComplement X S hS V.unop n + ((_root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheafOnOpenIso X K (n : ℤ) V.unop).inv z)) have h := ConcreteCategory.congr_hom - (sectionCohomologyPresheafOnOpenIso_inv_naturality X K (n : ℤ) a.unop) z + (_root_.OAI.AlgebraicTopology.Support.SingularCohomologySheafComparison.TopCat.Sheaf.sectionCohomologyPresheafOnOpenIso_inv_naturality X K (n : ℤ) a.unop) z simp only [ConcreteCategory.comp_apply, Quiver.Hom.op_unop] at h rw [h] - exact supportedRationalSingularSectionCohomologyEquivSupportComplement_naturality + exact _root_.OAI.AlgebraicTopology.Support.SingularSectionNaturality.Singular.supportedRationalSingularSectionCohomologyEquivSupportComplement_naturality X S hS a.unop n _) /-- Let `X` be a Hausdorff topological space whose every open subset is paracompact. Let `S ⊆ X` be @@ -95,13 +109,18 @@ sheaf of its subsheaves of sections supported in `S` is identified with the shea ↦ H^n(V, V \ S; ℚ)`, rational relative singular cohomology. -/ def supportedSingularCohomologySheafIsoRelative : -- The `n`-th cohomology sheaf of `Γ_S(C^•_sing)`. - (supportedRationalSingularCochainComplex X + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X -- The open `X \ S`. ⟨Sᶜ, hS.isOpen_compl⟩).homology (n : ℤ) ≅ 𝓗_[S]^n(X; ℚ) := - (sectionCohomologyPresheafSheafificationIso X - (supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩) (n : ℤ)).symm ≪≫ + (_root_.OAI.AlgebraicTopology.Sheaf.CohomologySection.TopCat.sectionCohomologyPresheafSheafificationIso X + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩) (n : ℤ)).symm ≪≫ (presheafToSheaf (Opens.grothendieckTopology X) AddCommGrpCat).mapIso (supportedSingularCohomologyPresheafIsoRelative X S hS n) -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.Support.SingularCohomologySheafComparison diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SingularFlasqueModel.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SingularFlasqueModel.lean index d2ba8f61a5..1ddefad9b5 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SingularFlasqueModel.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SingularFlasqueModel.lean @@ -1,15 +1,18 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueComparison -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenInjectiveResolution -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueExtendNat -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainResolution +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueComparison +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenInjectiveResolution +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueExtendNat +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainResolution + +namespace OAI.AlgebraicTopology.Support.SingularFlasqueModel /-! # Singular-cochain models for supported injective resolutions @@ -22,11 +25,12 @@ every open set. The contractible basis is a hypothesis of these generic topologi constructed for the smooth complex-point application below. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace HomologicalComplex +open _root_.CategoryTheory Limits _root_.TopologicalSpace _root_.HomologicalComplex -namespace AlgebraicTopology.Singular +section +namespace Singular variable (X : TopCat.{0}) @@ -34,13 +38,13 @@ variable (X : TopCat.{0}) presheaves of rational singular cochains degree by degree. Its differential is induced by the singular coboundary, and it is extended by zero to negative integer degrees. -/ def rationalSingularCochainComplex : CochainComplex (TopCat.Sheaf AddCommGrpCat X) ℤ := - (singularCochainSheafComplex ℚ X).extend ComplexShape.embeddingUpNat + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex ℚ X).extend ComplexShape.embeddingUpNat /-- Let `X` be a topological space. This is the integer-indexed complex in a chosen injective resolution `ℚ_X → I^•` of the constant rational sheaf, with zero terms in negative degrees. -/ def rationalConstantInjectiveComplex : CochainComplex (TopCat.Sheaf AddCommGrpCat X) ℤ := -- An injective resolution `ℚ_X → I^•`. - (TopCat.Sheaf.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).cocomplex.extend + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).cocomplex.extend ComplexShape.embeddingUpNat instance rationalSingularCochainComplex_isStrictlyGE : @@ -55,8 +59,8 @@ instance rationalConstantInjectiveComplex_isStrictlyGE : instance rationalConstantInjectiveComplex_injective (n : ℤ) : Injective ((rationalConstantInjectiveComplex X).X n) := - CochainComplex.injective_extend_nat _ - (TopCat.Sheaf.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).injective n + _root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.injective_extend_nat _ + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).injective n variable (hX : ∀ (x : X) (V : Opens X), x ∈ V → ∃ (W : Opens X), x ∈ W ∧ ContractibleSpace W ∧ W ≤ V) @@ -66,36 +70,36 @@ sheafified rational singular cochains and `ℚ_X → I^•` for a chosen injecti chooses a map `C^• → I^•` whose composite with the constant-cochain inclusion `ℚ_X[0] → C^•` equals the resolution augmentation. Complexes are indexed by natural numbers. -/ def singularToConstantInjectiveResolution : - singularCochainSheafComplex ℚ X ⟶ - (TopCat.Sheaf.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).cocomplex := - letI : Mono (constantsToSingularCochainSheafComplex ℚ X) := - constantsToSingularCochainSheafComplex_mono ℚ X - letI : QuasiIso (constantsToSingularCochainSheafComplex ℚ X) := - constantsToSingularCochainSheafComplex_quasiIso_of_contractibleOpenBasis ℚ hX - CochainComplex.liftToInjectiveNat (constantsToSingularCochainSheafComplex ℚ X) - (TopCat.Sheaf.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).ι - (TopCat.Sheaf.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).injective + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex ℚ X ⟶ + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).cocomplex := + letI : Mono (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex ℚ X) := + _root_.OAI.AlgebraicTopology.Singular.SheafCochainResolution.constantsToSingularCochainSheafComplex_mono ℚ X + letI : QuasiIso (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex ℚ X) := + _root_.OAI.AlgebraicTopology.Singular.SheafCochainResolution.constantsToSingularCochainSheafComplex_quasiIso_of_contractibleOpenBasis ℚ hX + _root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.liftToInjectiveNat (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex ℚ X) + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).ι + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).injective /-- The comparison fixes the prescribed rational constant augmentation exactly. -/ @[reassoc (attr := simp)] lemma constants_comp_singularToConstantInjectiveResolution : - constantsToSingularCochainSheafComplex ℚ X ≫ singularToConstantInjectiveResolution X hX = - (TopCat.Sheaf.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).ι := by - let : Mono (constantsToSingularCochainSheafComplex ℚ X) := - constantsToSingularCochainSheafComplex_mono ℚ X - let : QuasiIso (constantsToSingularCochainSheafComplex ℚ X) := - constantsToSingularCochainSheafComplex_quasiIso_of_contractibleOpenBasis ℚ hX - exact CochainComplex.comp_liftToInjectiveNat _ _ - (TopCat.Sheaf.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).injective + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex ℚ X ≫ singularToConstantInjectiveResolution X hX = + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).ι := by + let : Mono (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex ℚ X) := + _root_.OAI.AlgebraicTopology.Singular.SheafCochainResolution.constantsToSingularCochainSheafComplex_mono ℚ X + let : QuasiIso (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex ℚ X) := + _root_.OAI.AlgebraicTopology.Singular.SheafCochainResolution.constantsToSingularCochainSheafComplex_quasiIso_of_contractibleOpenBasis ℚ hX + exact _root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveTo.CochainComplex.comp_liftToInjectiveNat _ _ + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).injective instance singularToConstantInjectiveResolution_quasiIso : QuasiIso (singularToConstantInjectiveResolution X hX) := by - let a := constantsToSingularCochainSheafComplex ℚ X + let a := _root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex ℚ X let : QuasiIso a := - constantsToSingularCochainSheafComplex_quasiIso_of_contractibleOpenBasis ℚ hX + _root_.OAI.AlgebraicTopology.Singular.SheafCochainResolution.constantsToSingularCochainSheafComplex_quasiIso_of_contractibleOpenBasis ℚ hX have : QuasiIso (a ≫ singularToConstantInjectiveResolution X hX) := by rw [constants_comp_singularToConstantInjectiveResolution] - exact (TopCat.Sheaf.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).quasiIso + exact (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X (AddCommGrpCat.of ℚ)).quasiIso exact quasiIso_of_comp_left a _ /-- Let `X` be a topological space with a basis of contractible open sets. This map from sheafified @@ -117,7 +121,7 @@ negative-degree terms are zero. -/ def supportedRationalSingularCochainComplex (U : Opens X) : CochainComplex (TopCat.Sheaf AddCommGrpCat X) ℤ := -- `Γ_{X \ U}` applied to the sheaf complex of rational singular cochains. - ((TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj -- The sheaf complex `C^•_sing(-; ℚ)`. (rationalSingularCochainComplex X) @@ -127,25 +131,30 @@ singular cochains `C^•` to an injective resolution `I^•` of `ℚ_X` to the s vanishing on `U`. -/ def supportedSingularToInjectiveComplex (U : Opens X) : supportedRationalSingularCochainComplex X U ⟶ - ((TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj (rationalConstantInjectiveComplex X) := - ((TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map (singularToConstantInjectiveComplex X hX) variable [T2Space X] [∀ V : Opens X, ParacompactSpace V] instance rationalSingularCochainComplex_isFlasque (n : ℤ) : ((rationalSingularCochainComplex X).X n).IsFlasque := by - apply TopCat.Sheaf.extendNat_term_isFlasque + apply _root_.OAI.AlgebraicTopology.Sheaf.FlasqueExtendNat.TopCat.extendNat_term_isFlasque intro m - change (singularCochainSheaf ℚ X m).IsFlasque + change (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf ℚ X m).IsFlasque infer_instance /-- Supported singular cochains compute the supported injective model, at the level of sheaf complexes. -/ instance supportedSingularToInjectiveComplex_quasiIso (U : Opens X) : QuasiIso (supportedSingularToInjectiveComplex X hX U) := - TopCat.Sheaf.sheafSectionsSupportedOutside_map_quasiIso_of_flasque X U + _root_.OAI.AlgebraicTopology.Support.FlasqueComparison.TopCat.Sheaf.sheafSectionsSupportedOutside_map_quasiIso_of_flasque X U (singularToConstantInjectiveComplex X hX) 0 0 (fun _ => inferInstance) (fun _ => inferInstance) -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.Support.SingularFlasqueModel diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SingularSectionCohomology.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SingularSectionCohomology.lean index 9f91e6bcfd..4a186dd8e4 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SingularSectionCohomology.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/AlgebraicTopology/Support/SingularSectionCohomology.lean @@ -1,15 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SectionRestrictionCone -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SingularFlasqueModel -public import HodgeConjecture.Definitions.AlgebraicTopology.Singular.Sheaf.CochainOpenCone -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FlattenedSupport +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SectionRestrictionCone +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SingularFlasqueModel +import HodgeConjecture.Definitions.AlgebraicTopology.Singular.Sheaf.CochainOpenCone +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FlattenedSupport + +namespace OAI.AlgebraicTopology.Support.SingularSectionCohomology + /-! # Supported singular-section cohomology on arbitrary opens @@ -18,11 +22,12 @@ pair on an arbitrary open neighborhood. The construction composes the flasque ke comparison, the canonical grading comparison, and the sheafification-unit cone comparison. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace -namespace AlgebraicTopology.Singular +section +namespace Singular variable (X : TopCat.{0}) @@ -38,8 +43,8 @@ def openIntersectionSupportComplementHomeomorph (S : Set X) (hS : IsClosed S) (V /-- Let `X` be a topological space, `S ⊆ X` closed, and `V ⊆ X` open. This identifies the pairs `(V, V ∩ (X \ S))` and `(V, V \ S)`, acting as the identity on underlying points in both spaces. -/ def openIntersectionPairIsoSupportComplement (S : Set X) (hS : IsClosed S) (V : Opens X) : - openInclusionPair X (Opens.infLELeft V (⟨Sᶜ, hS.isOpen_compl⟩ : Opens X)) ≅ - neighborhoodSupportComplementPair (V : Set X) S where + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openInclusionPair X (Opens.infLELeft V (⟨Sᶜ, hS.isOpen_compl⟩ : Opens X)) ≅ + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (V : Set X) S where hom := TopPair.ofHom (𝟙 (TopCat.of V)) (TopCat.ofHom ⟨openIntersectionSupportComplementHomeomorph X S hS V, (openIntersectionSupportComplementHomeomorph X S hS V).continuous⟩) rfl @@ -59,21 +64,21 @@ vanish on `V ∩ U` form a subcomplex. This additive equivalence identifies its cohomology with relative singular cohomology `H^n(V, V ∩ U; ℚ)`. -/ def supportedRationalSingularSectionCohomologyEquivRelative (n : ℕ) : -- `H^n_{X \ U}(V; ℚ) ≅ H^n(V, V ⊓ U; ℚ)`. - ((((TopCat.Sheaf.supportEvaluation X + ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X -- Sections over the open `V`. V).mapHomologicalComplex ℤᵘᵖ).obj -- `Γ_{X \ U}` of the singular-cochain sheaf complex. - (supportedRationalSingularCochainComplex X U))).homology (n : ℤ) ≃+ + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X U))).homology (n : ℤ) ≃+ -- `H^n` of the pair `(V, V ⊓ U)`. - RelativeCohomology ℚ (openInclusionPair X (Opens.infLELeft V U)) n := - (TopCat.Sheaf.supportedSectionHomologyIsoRestrictionCone X U V - (rationalSingularCochainComplex X) (fun _ => inferInstance) (n : ℤ)).addCommGroupIsoToAddEquiv + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openInclusionPair X (Opens.infLELeft V U)) n := + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportedSectionHomologyIsoRestrictionCone X U V + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.rationalSingularCochainComplex X) (fun _ => inferInstance) (n : ℤ)).addCommGroupIsoToAddEquiv |>.trans <| (HomologicalComplex.homologyMapIso - (TopCat.Sheaf.sectionComplexRestrictionExtendConeIso X - (singularCochainSheafComplex ℚ X) (Opens.infLELeft V U)) + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestrictionExtendConeIso X + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex ℚ X) (Opens.infLELeft V U)) ((n : ℤ) - 1)).addCommGroupIsoToAddEquiv - |>.trans (openSingularSheafRestrictionConeCohomologyEquivRelative X (Opens.infLELeft V U) n) + |>.trans (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openSingularSheafRestrictionConeCohomologyEquivRelative X (Opens.infLELeft V U) n) /-- Let `X` be a Hausdorff topological space whose every open subset is paracompact. Let `S ⊆ X` be closed and `V ⊆ X` open. This identifies degree-`n` cohomology of sections on `V` of the @@ -82,16 +87,21 @@ V \ S; ℚ)`. -/ def supportedRationalSingularSectionCohomologyEquivSupportComplement (S : Set X) (hS : IsClosed S) (V : Opens X) (n : ℕ) : -- `H^n_S(V; ℚ) ≅ H^n(V, V \ S; ℚ)`. - ((((TopCat.Sheaf.supportEvaluation X + ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X -- Sections over the open `V`. V).mapHomologicalComplex ℤᵘᵖ).obj -- `Γ_S` of the singular-cochain sheaf complex. - (supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩))).homology (n : ℤ) ≃+ + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩))).homology (n : ℤ) ≃+ -- `H^n` of the pair `(V, V \ S)`. - RelativeCohomology ℚ (neighborhoodSupportComplementPair (V : Set X) S) n := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (V : Set X) S) n := (supportedRationalSingularSectionCohomologyEquivRelative X ⟨Sᶜ, hS.isOpen_compl⟩ V n).trans (((HomologicalComplex.homologyFunctor (ModuleCat ℚ) (ComplexShape.up ℕ) n).mapIso - (HomologicalComplex.linearDualIso ((relativeChainFunctor ℚ).mapIso + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualIso ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).mapIso (openIntersectionPairIsoSupportComplement X S hS V).symm))).toLinearEquiv.toAddEquiv) -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.Support.SingularSectionCohomology diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Topology/Dimension/Basic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Topology/Dimension/Basic.lean index 6af0b4d489..e1b61aba7f 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Topology/Dimension/Basic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Definitions/Topology/Dimension/Basic.lean @@ -12,27 +12,37 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Topology.KrullDimension +import Mathlib.Topology.KrullDimension import HodgeConjecture.Mathlib.Topology.KrullDimension +namespace OAI.Topology.Dimension.Basic + +open _root_.TopologicalSpace + /-! # The dimension of an irreducible topological space -/ -public noncomputable section +noncomputable section namespace TopologicalSpace +open _root_.TopologicalSpace /-- Let `X` be an irreducible topological space. Its dimension is the supremum of the lengths of strict chains of nonempty irreducible closed subsets, converted to a natural number. A chain of `r+1` subsets has length `r`. This conversion returns `0` when the Krull dimension is infinite; irreducibility excludes the empty-space case. -/ -@[expose, nolint unusedArguments] +@[nolint unusedArguments] def dim (X : Type*) [TopologicalSpace X] [IrreducibleSpace X] : ℕ := ((topologicalKrullDim X).unbotD 0).toNat end TopologicalSpace + +end + +end OAI.Topology.Dimension.Basic diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/DeRham/Basic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/DeRham/Basic.lean index 3e6fa5826b..94801e6c88 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/DeRham/Basic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/DeRham/Basic.lean @@ -12,10 +12,15 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.Algebra.DeRham.Basic +import HodgeConjecture.Definitions.Algebra.DeRham.Basic + +namespace OAI.Algebra.DeRham.BasicSquared + +open _root_.Algebra /-! # Algebraic de Rham forms @@ -24,11 +29,12 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.Algebra.DeRham.Basic`. -/ -@[expose] public noncomputable section +noncomputable section universe u -namespace Algebra.DeRham +section +section open CliffordAlgebra (involute involute_ι) open TrivSqZeroExt (snd) @@ -41,41 +47,41 @@ variable (R A) /-- The exterior derivative anticommutes with the grade involution, since it raises the degree by one. -/ -lemma extDeriv_involute (x : ExtAlg R A) : - extDeriv R A (involute x) = -involute (extDeriv R A x) := by +lemma extDeriv_involute (x : _root_.OAI.Algebra.DeRham.Basic.ExtAlg R A) : + _root_.OAI.Algebra.DeRham.Basic.extDeriv R A (involute x) = -involute (_root_.OAI.Algebra.DeRham.Basic.extDeriv R A x) := by induction x using ExteriorAlgebra.induction with | algebraMap a => simp - | ι ω => simp [involute_snd_phi] + | ι ω => simp [_root_.OAI.Algebra.DeRham.Basic.involute_snd_phi] | mul x y hx hy => - rw [map_mul, extDeriv_mul, hx, hy, extDeriv_mul, map_add, map_mul, map_mul, + rw [map_mul, _root_.OAI.Algebra.DeRham.Basic.extDeriv_mul, hx, hy, _root_.OAI.Algebra.DeRham.Basic.extDeriv_mul, map_add, map_mul, map_mul, CliffordAlgebra.involute_involute] simp only [mul_neg, neg_mul, neg_add] | add x y hx hy => simp only [map_add, hx, hy, neg_add] -lemma extDeriv_snd_phi (ω : Ω[A⁄R]) : extDeriv R A (snd (phi R A ω)) = 0 := by - induction ω using D_induction with +lemma extDeriv_snd_phi (ω : Ω[A⁄R]) : _root_.OAI.Algebra.DeRham.Basic.extDeriv R A (snd (_root_.OAI.Algebra.DeRham.Basic.phi R A ω)) = 0 := by + induction ω using _root_.OAI.Algebra.DeRham.Basic.D_induction with | D a => simp | zero => simp | add x y hx hy => rw [map_add, TrivSqZeroExt.snd_add, map_add, hx, hy, add_zero] | smul a x hx => - rw [snd_phi_smul, map_add, Algebra.smul_def, extDeriv_mul, extDeriv_mul, hx, - AlgHom.commutes, extDeriv_algebraMap, mul_zero, zero_add, involute_ι] - simp only [extDeriv_ι, phi_D, TrivSqZeroExt.snd_inl, zero_mul, add_zero, neg_mul] + rw [_root_.OAI.Algebra.DeRham.Basic.snd_phi_smul, map_add, Algebra.smul_def, _root_.OAI.Algebra.DeRham.Basic.extDeriv_mul, _root_.OAI.Algebra.DeRham.Basic.extDeriv_mul, hx, + AlgHom.commutes, _root_.OAI.Algebra.DeRham.Basic.extDeriv_algebraMap, mul_zero, zero_add, involute_ι] + simp only [_root_.OAI.Algebra.DeRham.Basic.extDeriv_ι, _root_.OAI.Algebra.DeRham.Basic.phi_D, TrivSqZeroExt.snd_inl, zero_mul, add_zero, neg_mul] abel /-- The exterior derivative squares to zero. -/ -lemma extDeriv_extDeriv (x : ExtAlg R A) : extDeriv R A (extDeriv R A x) = 0 := by +lemma extDeriv_extDeriv (x : _root_.OAI.Algebra.DeRham.Basic.ExtAlg R A) : _root_.OAI.Algebra.DeRham.Basic.extDeriv R A (_root_.OAI.Algebra.DeRham.Basic.extDeriv R A x) = 0 := by induction x using ExteriorAlgebra.induction with | algebraMap a => simp - | ι ω => rw [extDeriv_ι]; exact extDeriv_snd_phi R A ω + | ι ω => rw [_root_.OAI.Algebra.DeRham.Basic.extDeriv_ι]; exact extDeriv_snd_phi R A ω | mul x y hx hy => - rw [extDeriv_mul, map_add, extDeriv_mul, extDeriv_mul, hx, hy, extDeriv_involute, + rw [_root_.OAI.Algebra.DeRham.Basic.extDeriv_mul, map_add, _root_.OAI.Algebra.DeRham.Basic.extDeriv_mul, _root_.OAI.Algebra.DeRham.Basic.extDeriv_mul, hx, hy, extDeriv_involute, CliffordAlgebra.involute_involute] simp only [mul_zero, zero_mul, neg_mul, zero_add, add_zero, neg_add_cancel] | add x y hx hy => rw [map_add, map_add, hx, hy, add_zero] -lemma differential_squared (p : ℕ) (x : Form R A p) : - differential R A (p + 1) (differential R A p x) = 0 := +lemma differential_squared (p : ℕ) (x : _root_.OAI.Algebra.DeRham.Basic.Form R A p) : + _root_.OAI.Algebra.DeRham.Basic.differential R A (p + 1) (_root_.OAI.Algebra.DeRham.Basic.differential R A p x) = 0 := Subtype.ext (extDeriv_extDeriv R A x) /-! ### Functoriality -/ @@ -84,8 +90,8 @@ section Tower variable (B : Type u) [CommRing B] [Algebra R B] [Algebra A B] [IsScalarTower R A B] -lemma extAlgMap_involute (x : ExtAlg R A) : - extAlgMap R A B (involute x) = involute (extAlgMap R A B x) := by +lemma extAlgMap_involute (x : _root_.OAI.Algebra.DeRham.Basic.ExtAlg R A) : + _root_.OAI.Algebra.DeRham.Basic.extAlgMap R A B (involute x) = involute (_root_.OAI.Algebra.DeRham.Basic.extAlgMap R A B x) := by induction x using ExteriorAlgebra.induction with | algebraMap a => simp | ι ω => simp @@ -93,28 +99,28 @@ lemma extAlgMap_involute (x : ExtAlg R A) : | add x y hx hy => simp only [map_add, hx, hy] lemma extAlgMap_snd_phi (ω : Ω[A⁄R]) : - extAlgMap R A B (snd (phi R A ω)) = - snd (phi R B (KaehlerDifferential.map R R A B ω)) := by - induction ω using D_induction with + _root_.OAI.Algebra.DeRham.Basic.extAlgMap R A B (snd (_root_.OAI.Algebra.DeRham.Basic.phi R A ω)) = + snd (_root_.OAI.Algebra.DeRham.Basic.phi R B (KaehlerDifferential.map R R A B ω)) := by + induction ω using _root_.OAI.Algebra.DeRham.Basic.D_induction with | D a => simp | zero => simp - | add x y hx hy => simp only [map_add, Sq.snd_add, hx, hy] + | add x y hx hy => simp only [map_add, _root_.OAI.Algebra.DeRham.Basic.Sq.snd_add, hx, hy] | smul a x hx => - rw [snd_phi_smul, map_add, map_smul, hx, map_mul, extAlgMap_ι, extAlgMap_ι, + rw [_root_.OAI.Algebra.DeRham.Basic.snd_phi_smul, map_add, map_smul, hx, map_mul, _root_.OAI.Algebra.DeRham.Basic.extAlgMap_ι, _root_.OAI.Algebra.DeRham.Basic.extAlgMap_ι, KaehlerDifferential.map_D, map_smul, - ← algebraMap_smul (R := A) B a (KaehlerDifferential.map R R A B x), snd_phi_smul, - ← algebraMap_smul (R := A) B a (snd (phi R B (KaehlerDifferential.map R R A B x)))] + ← algebraMap_smul (R := A) B a (KaehlerDifferential.map R R A B x), _root_.OAI.Algebra.DeRham.Basic.snd_phi_smul, + ← algebraMap_smul (R := A) B a (snd (_root_.OAI.Algebra.DeRham.Basic.phi R B (KaehlerDifferential.map R R A B x)))] -lemma extAlgMap_extDeriv (x : ExtAlg R A) : - extAlgMap R A B (extDeriv R A x) = extDeriv R B (extAlgMap R A B x) := by +lemma extAlgMap_extDeriv (x : _root_.OAI.Algebra.DeRham.Basic.ExtAlg R A) : + _root_.OAI.Algebra.DeRham.Basic.extAlgMap R A B (_root_.OAI.Algebra.DeRham.Basic.extDeriv R A x) = _root_.OAI.Algebra.DeRham.Basic.extDeriv R B (_root_.OAI.Algebra.DeRham.Basic.extAlgMap R A B x) := by induction x using ExteriorAlgebra.induction with | algebraMap a => - rw [extDeriv_algebraMap, extAlgMap_ι, KaehlerDifferential.map_D, extAlgMap_algebraMap, - extDeriv_algebraMap] - | ι ω => rw [extDeriv_ι, extAlgMap_snd_phi, extAlgMap_ι, extDeriv_ι] + rw [_root_.OAI.Algebra.DeRham.Basic.extDeriv_algebraMap, _root_.OAI.Algebra.DeRham.Basic.extAlgMap_ι, KaehlerDifferential.map_D, _root_.OAI.Algebra.DeRham.Basic.extAlgMap_algebraMap, + _root_.OAI.Algebra.DeRham.Basic.extDeriv_algebraMap] + | ι ω => rw [_root_.OAI.Algebra.DeRham.Basic.extDeriv_ι, extAlgMap_snd_phi, _root_.OAI.Algebra.DeRham.Basic.extAlgMap_ι, _root_.OAI.Algebra.DeRham.Basic.extDeriv_ι] | mul x y hx hy => - rw [extDeriv_mul, map_add, map_mul, map_mul, hx, hy, extAlgMap_involute, map_mul, - extDeriv_mul] + rw [_root_.OAI.Algebra.DeRham.Basic.extDeriv_mul, map_add, map_mul, map_mul, hx, hy, extAlgMap_involute, map_mul, + _root_.OAI.Algebra.DeRham.Basic.extDeriv_mul] | add x y hx hy => simp only [map_add, hx, hy] end Tower @@ -124,11 +130,16 @@ section AlgHomMap variable {A} variable {B C : Type u} [CommRing B] [CommRing C] [Algebra R B] [Algebra R C] -lemma map_differential (f : A →ₐ[R] B) (p : ℕ) (x : Form R A p) : - map R f (p + 1) (differential R A p x) = differential R B p (map R f p x) := by +lemma map_differential (f : A →ₐ[R] B) (p : ℕ) (x : _root_.OAI.Algebra.DeRham.Basic.Form R A p) : + _root_.OAI.Algebra.DeRham.Basic.map R f (p + 1) (_root_.OAI.Algebra.DeRham.Basic.differential R A p x) = _root_.OAI.Algebra.DeRham.Basic.differential R B p (_root_.OAI.Algebra.DeRham.Basic.map R f p x) := by let _ := f.toAlgebra exact Subtype.ext (extAlgMap_extDeriv R A B x) end AlgHomMap -end Algebra.DeRham +end +end + +end + +end OAI.Algebra.DeRham.BasicSquared diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/FieldToComplex.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/FieldToComplex.lean index 96d4eaf8a4..e55d9f4daf 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/FieldToComplex.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/FieldToComplex.lean @@ -12,12 +12,15 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.Algebra.Ring.Basic -public import Mathlib.Analysis.Complex.Basic -public import Mathlib.LinearAlgebra.Basis.VectorSpace +import HodgeConjecture.Mathlib.Algebra.Ring.Basic +import Mathlib.Analysis.Complex.Basic +import Mathlib.LinearAlgebra.Basis.VectorSpace + +namespace OAI.Algebra.Foundations.FieldToComplex /-! # A coefficient field inside the complex numbers @@ -27,7 +30,7 @@ conjecture only through proofs, so the statement never inspects them: by proof i nothing about how they were built can change what it asserts. -/ -@[expose] public noncomputable section +noncomputable section variable (K : Type) [Field K] [Algebra K ℂ] @@ -39,7 +42,7 @@ noncomputable def complexToFieldLinear : ℂ →ₗ[K] K := end -@[expose] public noncomputable section +noncomputable section variable (K : Type) [Field K] [Algebra K ℂ] @@ -52,3 +55,7 @@ lemma complexToFieldLinear_comp_algebraMap : @[simp] lemma complexToFieldLinear_algebraMap (q : K) : complexToFieldLinear K (algebraMap K ℂ q) = q := LinearMap.congr_fun (complexToFieldLinear_comp_algebraMap K) q + +end + +end OAI.Algebra.Foundations.FieldToComplex diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/MappingCoconeShortExact.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/MappingCoconeShortExact.lean index 5ccc2187d3..14fed1bf0c 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/MappingCoconeShortExact.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/MappingCoconeShortExact.lean @@ -1,10 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.Algebra.Homology.DerivedCategory.MappingCoconeShortExact +import HodgeConjecture.Definitions.Algebra.Homology.DerivedCategory.MappingCoconeShortExact + +namespace OAI.Algebra.Homology.DerivedCategoryMapOf + +open _root_.CochainComplex /-! # The canonical homotopy fiber comparison for a short exact sequence @@ -13,16 +18,19 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.Algebra.Homology.DerivedCategory.MappingCoconeShortExact`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits CategoryTheory.Pretriangulated -open HomologicalComplex +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.CategoryTheory.Pretriangulated +open _root_.HomologicalComplex namespace CochainComplex +open _root_.CochainComplex variable {C : Type*} [Category* C] [Abelian C] namespace mappingCone +open _root_.CochainComplex +open _root_.CochainComplex.mappingCone set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in @@ -43,17 +51,23 @@ lemma quasiIso_map_of_quasiIso {K₁ L₁ K₂ L₂ : CochainComplex C ℤ} end mappingCone namespace mappingCocone +open _root_.CochainComplex +open _root_.CochainComplex.mappingCocone variable (S : ShortComplex (CochainComplex C ℤ)) lemma quasiIso_shiftedLiftShortComplex (hS : S.ShortExact) : - QuasiIso (shiftedLiftShortComplex S) := by + QuasiIso (_root_.OAI.Algebra.Homology.MappingCoconeShortExact.CochainComplex.mappingCocone.shiftedLiftShortComplex S) := by have := mappingCone.quasiIso_descShortComplex hS - have := mappingCone.quasiIso_map_of_quasiIso + have := _root_.OAI.Algebra.Homology.DerivedCategoryMapOf.CochainComplex.mappingCone.quasiIso_map_of_quasiIso (mappingCone.inr S.f) S.g (𝟙 _) (mappingCone.descShortComplex S) (by simp) - dsimp only [shiftedLiftShortComplex] + dsimp only [_root_.OAI.Algebra.Homology.MappingCoconeShortExact.CochainComplex.mappingCocone.shiftedLiftShortComplex] infer_instance end mappingCocone end CochainComplex + +end + +end OAI.Algebra.Homology.DerivedCategoryMapOf diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/MappingCoconeShortExactNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/MappingCoconeShortExactNaturality.lean index 09d48222c4..3e85bf93e2 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/MappingCoconeShortExactNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/MappingCoconeShortExactNaturality.lean @@ -1,12 +1,17 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Definitions.Algebra.Homology.DerivedCategory.MappingCoconeShortExactNaturality +import HodgeConjecture.Definitions.Algebra.Homology.DerivedCategory.MappingCoconeShortExactNaturality + +namespace OAI.Algebra.Homology.DerivedCategoryConeNaturality + +open _root_.CochainComplex /-! # Naturality of the canonical short-exact-sequence cone comparison @@ -15,11 +20,15 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.Algebra.Homology.DerivedCategory.MappingCoconeShortExactNaturality`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits +open _root_.CategoryTheory _root_.CategoryTheory.Limits -namespace CochainComplex.mappingCocone +namespace CochainComplex +open _root_.CochainComplex +namespace mappingCocone +open _root_.CochainComplex +open _root_.CochainComplex.mappingCocone variable {C : Type*} [Category* C] [Abelian C] {S T : ShortComplex (CochainComplex C ℤ)} @@ -30,11 +39,11 @@ set_option backward.isDefEq.respectTransparency false in maps, before passing to any derived or homotopy category. -/ @[reassoc] lemma shiftedLiftShortComplex_naturality (f : S ⟶ T) : - f.τ₁⟦(1 : ℤ)⟧' ≫ shiftedLiftShortComplex T = - shiftedLiftShortComplex S ≫ + f.τ₁⟦(1 : ℤ)⟧' ≫ _root_.OAI.Algebra.Homology.MappingCoconeShortExact.CochainComplex.mappingCocone.shiftedLiftShortComplex T = + _root_.OAI.Algebra.Homology.MappingCoconeShortExact.CochainComplex.mappingCocone.shiftedLiftShortComplex S ≫ mappingCone.map S.g T.g f.τ₂ f.τ₃ f.comm₂₃.symm := by ext n - simp [shiftedLiftShortComplex, mappingCone.rotateHomotopyEquiv, + simp [_root_.OAI.Algebra.Homology.MappingCoconeShortExact.CochainComplex.mappingCocone.shiftedLiftShortComplex, mappingCone.rotateHomotopyEquiv, mappingCone.map, mappingCone.lift_f _ _ _ _ n (n + 1) rfl, HomComplex.Cochain.leftShift, shiftFunctorObjXIso] simpa only [HomologicalComplex.comp_f, Category.assoc] using @@ -48,19 +57,24 @@ set_option backward.isDefEq.respectTransparency false in lemma shortExactHomologyIsoCone_naturality (f : S ⟶ T) (hS : S.ShortExact) (hT : T.ShortExact) (n n' : ℤ) (h : 1 + n = n') : HomologicalComplex.homologyMap f.τ₁ n' ≫ - (shortExactHomologyIsoCone T hT n n' h).hom = - (shortExactHomologyIsoCone S hS n n' h).hom ≫ + (_root_.OAI.Algebra.Homology.CoconeShortExactNaturality.CochainComplex.mappingCocone.shortExactHomologyIsoCone T hT n n' h).hom = + (_root_.OAI.Algebra.Homology.CoconeShortExactNaturality.CochainComplex.mappingCocone.shortExactHomologyIsoCone S hS n n' h).hom ≫ HomologicalComplex.homologyMap (mappingCone.map S.g T.g f.τ₂ f.τ₃ f.comm₂₃.symm) n := by let H := HomologicalComplex.homologyFunctor C ℤᵘᵖ 0 change (H.shift n').map f.τ₁ ≫ (((H.shiftIso 1 n n' h).inv.app T.X₁) ≫ - (H.shift n).map (shiftedLiftShortComplex T)) = + (H.shift n).map (_root_.OAI.Algebra.Homology.MappingCoconeShortExact.CochainComplex.mappingCocone.shiftedLiftShortComplex T)) = ((H.shiftIso 1 n n' h).inv.app S.X₁ ≫ - (H.shift n).map (shiftedLiftShortComplex S)) ≫ + (H.shift n).map (_root_.OAI.Algebra.Homology.MappingCoconeShortExact.CochainComplex.mappingCocone.shiftedLiftShortComplex S)) ≫ (H.shift n).map (mappingCone.map S.g T.g f.τ₂ f.τ₃ f.comm₂₃.symm) rw [(H.shiftIso 1 n n' h).inv.naturality_assoc f.τ₁, Functor.comp_map, ← Functor.map_comp, shiftedLiftShortComplex_naturality, Functor.map_comp, Category.assoc] -end CochainComplex.mappingCocone +end mappingCocone +end CochainComplex + +end + +end OAI.Algebra.Homology.DerivedCategoryConeNaturality diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/MappingConeMapNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/MappingConeMapNaturality.lean index 166ca6064b..03b3320e53 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/MappingConeMapNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/MappingConeMapNaturality.lean @@ -1,20 +1,30 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingCoconeShortExact +import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingCoconeShortExact + +namespace OAI.Algebra.Homology.MappingConeMapNaturality + +open _root_.CochainComplex +open _root_.CochainComplex.mappingCone /-! # Cone maps and additive comparison naturality -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits HomologicalComplex +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.HomologicalComplex -namespace CochainComplex.mappingCone +namespace CochainComplex +open _root_.CochainComplex +namespace mappingCone +open _root_.CochainComplex +open _root_.CochainComplex.mappingCone variable {C D : Type*} [Category* C] [Category* D] [Abelian C] [Abelian D] {K L K' L' : CochainComplex C ℤ} @@ -71,4 +81,9 @@ lemma mapHomologicalComplexIso_naturality (f : K ⟶ L) (g : K' ⟶ L') zero_comp, comp_zero, add_zero, zero_add, Category.comp_id, ← Functor.map_comp_assoc] -end CochainComplex.mappingCone +end mappingCone +end CochainComplex + +end + +end OAI.Algebra.Homology.MappingConeMapNaturality diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/RightDerivedFunctorPlusNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/RightDerivedFunctorPlusNaturality.lean index bcee854162..6fba9492b7 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/RightDerivedFunctorPlusNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/RightDerivedFunctorPlusNaturality.lean @@ -1,12 +1,18 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import Mathlib.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlus +import Mathlib.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlus + +namespace OAI.Algebra.Homology.DerivedFunctorPlusNaturality + +open _root_.CategoryTheory +open _root_.CategoryTheory.NatTrans /-! # Natural transformations on bounded-below right derived functors @@ -17,11 +23,15 @@ and its compatibility with the derived units is proved. This supplies, for example, the canonical support-enlargement and forget-support maps. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory +open _root_.CategoryTheory -namespace CategoryTheory.NatTrans +namespace CategoryTheory +open _root_.CategoryTheory +namespace NatTrans +open _root_.CategoryTheory +open _root_.CategoryTheory.NatTrans variable {C D : Type*} [Category* C] [Category* D] [Abelian C] [Abelian D] {F G H : C ⥤ D} [F.Additive] [G.Additive] [H.Additive] @@ -39,12 +49,12 @@ def mapHomotopyCategoryPlus (α : F ⟶ G) : @[simp] theorem mapHomotopyCategoryPlus_id (F : C ⥤ D) [F.Additive] : - mapHomotopyCategoryPlus (𝟙 F) = 𝟙 F.mapHomotopyCategoryPlus := rfl + _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.mapHomotopyCategoryPlus (𝟙 F) = 𝟙 F.mapHomotopyCategoryPlus := rfl @[simp] theorem mapHomotopyCategoryPlus_comp (α : F ⟶ G) (β : G ⟶ H) : - mapHomotopyCategoryPlus (α ≫ β) = - mapHomotopyCategoryPlus α ≫ mapHomotopyCategoryPlus β := rfl + _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.mapHomotopyCategoryPlus (α ≫ β) = + _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.mapHomotopyCategoryPlus α ≫ _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.mapHomotopyCategoryPlus β := rfl variable [HasDerivedCategory C] [HasDerivedCategory D] [EnoughInjectives C] @@ -57,14 +67,14 @@ def rightDerivedFunctorPlus (α : F ⟶ G) : Functor.rightDerivedNatTrans F.rightDerivedFunctorPlus G.rightDerivedFunctorPlus F.rightDerivedFunctorPlusUnith G.rightDerivedFunctorPlusUnith (HomotopyCategory.Plus.quasiIso C) - (Functor.whiskerRight α.mapHomotopyCategoryPlus DerivedCategory.Plus.Qh) + (Functor.whiskerRight (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.mapHomotopyCategoryPlus α) DerivedCategory.Plus.Qh) /-- Compatibility with the derived units on every bounded-below homotopy complex. -/ @[reassoc (attr := simp)] theorem rightDerivedFunctorPlus_unit (α : F ⟶ G) : F.rightDerivedFunctorPlusUnith ≫ - Functor.whiskerLeft DerivedCategory.Plus.Qh α.rightDerivedFunctorPlus = - Functor.whiskerRight α.mapHomotopyCategoryPlus DerivedCategory.Plus.Qh ≫ + Functor.whiskerLeft DerivedCategory.Plus.Qh (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus α) = + Functor.whiskerRight (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.mapHomotopyCategoryPlus α) DerivedCategory.Plus.Qh ≫ G.rightDerivedFunctorPlusUnith := Functor.rightDerivedNatTrans_fac _ _ _ _ _ _ @@ -74,25 +84,30 @@ when computing on an injective resolution. -/ theorem rightDerivedFunctorPlus_unit_app (α : F ⟶ G) (K : HomotopyCategory.Plus C) : F.rightDerivedFunctorPlusUnith.app K ≫ - α.rightDerivedFunctorPlus.app (DerivedCategory.Plus.Qh.obj K) = - DerivedCategory.Plus.Qh.map (α.mapHomotopyCategoryPlus.app K) ≫ + (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus α).app (DerivedCategory.Plus.Qh.obj K) = + DerivedCategory.Plus.Qh.map ((_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.mapHomotopyCategoryPlus α).app K) ≫ G.rightDerivedFunctorPlusUnith.app K := Functor.rightDerivedNatTrans_app _ _ _ _ _ _ _ @[simp] theorem rightDerivedFunctorPlus_id (F : C ⥤ D) [F.Additive] : - rightDerivedFunctorPlus (𝟙 F) = 𝟙 F.rightDerivedFunctorPlus := by - simp [rightDerivedFunctorPlus] + _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus (𝟙 F) = 𝟙 F.rightDerivedFunctorPlus := by + simp [_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus] @[simp] theorem rightDerivedFunctorPlus_comp (α : F ⟶ G) (β : G ⟶ H) : - rightDerivedFunctorPlus (α ≫ β) = - rightDerivedFunctorPlus α ≫ rightDerivedFunctorPlus β := by - simp [rightDerivedFunctorPlus] + _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus (α ≫ β) = + _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus α ≫ _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus β := by + simp [_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus] -end CategoryTheory.NatTrans +end NatTrans +end CategoryTheory -namespace CategoryTheory.NatIso +namespace CategoryTheory +open _root_.CategoryTheory +namespace NatIso +open _root_.CategoryTheory +open _root_.CategoryTheory.NatIso variable {C D : Type*} [Category* C] [Category* D] [Abelian C] [Abelian D] [HasDerivedCategory C] [HasDerivedCategory D] [EnoughInjectives C] @@ -103,13 +118,18 @@ assume `C` has enough injectives. A natural isomorphism `e : F ≅ G` induces th ≅ RG` on bounded-below derived categories, by applying `e` degreewise to injective resolutions. -/ def rightDerivedFunctorPlus (e : F ≅ G) : F.rightDerivedFunctorPlus ≅ G.rightDerivedFunctorPlus where - hom := e.hom.rightDerivedFunctorPlus - inv := e.inv.rightDerivedFunctorPlus + hom := (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus e.hom) + inv := (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus e.inv) hom_inv_id := by - rw [← NatTrans.rightDerivedFunctorPlus_comp, e.hom_inv_id, - NatTrans.rightDerivedFunctorPlus_id] + rw [← _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus_comp, e.hom_inv_id, + _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus_id] inv_hom_id := by - rw [← NatTrans.rightDerivedFunctorPlus_comp, e.inv_hom_id, - NatTrans.rightDerivedFunctorPlus_id] + rw [← _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus_comp, e.inv_hom_id, + _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus_id] + +end NatIso +end CategoryTheory + +end -end CategoryTheory.NatIso +end OAI.Algebra.Homology.DerivedFunctorPlusNaturality diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/RightDerivedFunctorPlusShift.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/RightDerivedFunctorPlusShift.lean index 49cc1b187d..ffd4b09b8a 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/RightDerivedFunctorPlusShift.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/RightDerivedFunctorPlusShift.lean @@ -1,11 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlus -public import Mathlib.CategoryTheory.Shift.Localization +import Mathlib.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlus +import Mathlib.CategoryTheory.Shift.Localization + +namespace OAI.Algebra.Homology.DerivedFunctorPlusShift + +open _root_.CategoryTheory +open _root_.CategoryTheory.Functor +open _root_.HomotopyCategory +open _root_.HomotopyCategory.Plus /-! # Coherent shifts on bounded-below right derived functors @@ -17,11 +25,12 @@ Mathlib's localization construction. Boundedness is explicit in all source and t categories. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory +open _root_.CategoryTheory -namespace HomotopyCategory.Plus +namespace HomotopyCategory +namespace Plus variable (C : Type*) [Category* C] [Abelian C] [HasDerivedCategory C] @@ -83,9 +92,14 @@ lemma natTrans_ext_on_injectives {H : Type*} [Category* H] have : IsIso (G.map r.w) := hG r.w r.hw rw [← cancel_mono (G.map r.w), ← α.naturality, ← β.naturality, h] -end HomotopyCategory.Plus +end Plus +end HomotopyCategory -namespace CategoryTheory.Functor +namespace CategoryTheory +open _root_.CategoryTheory +namespace Functor +open _root_.CategoryTheory +open _root_.CategoryTheory.Functor variable {C D : Type*} [Category* C] [Category* D] [Abelian C] [Abelian D] [HasDerivedCategory C] [HasDerivedCategory D] [EnoughInjectives C] @@ -98,61 +112,61 @@ def rightDerivedFunctorPlusOnInjectives : (InjectiveObject.ι C).mapHomotopyCategoryPlus ⋙ F.mapHomotopyCategoryPlus ⋙ DerivedCategory.Plus.Qh -instance : F.rightDerivedFunctorPlusOnInjectives.CommShift ℤ := +instance : (rightDerivedFunctorPlusOnInjectives F).CommShift ℤ := inferInstanceAs (((InjectiveObject.ι C).mapHomotopyCategoryPlus ⋙ F.mapHomotopyCategoryPlus ⋙ DerivedCategory.Plus.Qh).CommShift ℤ) /-- The right-derived unit restricted to injective complexes. -/ def rightDerivedFunctorPlusOnInjectivesUnit : - F.rightDerivedFunctorPlusOnInjectives ⟶ - HomotopyCategory.Plus.injectiveToDerived C ⋙ F.rightDerivedFunctorPlus := + (rightDerivedFunctorPlusOnInjectives F) ⟶ + _root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.HomotopyCategory.Plus.injectiveToDerived C ⋙ F.rightDerivedFunctorPlus := whiskerLeft (InjectiveObject.ι C).mapHomotopyCategoryPlus F.rightDerivedFunctorPlusUnith ≫ (Functor.associator _ _ _).inv set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in -instance : IsIso F.rightDerivedFunctorPlusOnInjectivesUnit := by +instance : IsIso (rightDerivedFunctorPlusOnInjectivesUnit F) := by have h (K : HomotopyCategory.Plus (InjectiveObject C)) : IsIso (F.rightDerivedFunctorPlusUnith.app ((InjectiveObject.ι C).mapHomotopyCategoryPlus.obj K)) := (HomotopyCategory.Plus.localizerMorphism_derives (F.mapHomotopyCategoryPlus ⋙ DerivedCategory.Plus.Qh)).isIso_of_isRightDerivedFunctor F.rightDerivedFunctorPlusUnith K - let _ : ∀ K, IsIso (F.rightDerivedFunctorPlusOnInjectivesUnit.app K) := fun K => by + let _ : ∀ K, IsIso ((rightDerivedFunctorPlusOnInjectivesUnit F).app K) := fun K => by simpa only [rightDerivedFunctorPlusOnInjectivesUnit, NatTrans.comp_app, whiskerLeft_app, Functor.associator_inv_app, Category.comp_id] using h K exact NatIso.isIso_of_isIso_app _ /-- The canonical injective-resolution comparison. -/ def rightDerivedFunctorPlusOnInjectivesIso : - HomotopyCategory.Plus.injectiveToDerived C ⋙ F.rightDerivedFunctorPlus ≅ - F.rightDerivedFunctorPlusOnInjectives := - (asIso F.rightDerivedFunctorPlusOnInjectivesUnit).symm + _root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.HomotopyCategory.Plus.injectiveToDerived C ⋙ F.rightDerivedFunctorPlus ≅ + (rightDerivedFunctorPlusOnInjectives F) := + (asIso (rightDerivedFunctorPlusOnInjectivesUnit F)).symm instance rightDerivedFunctorPlusInjectiveLifting : - Localization.Lifting (HomotopyCategory.Plus.injectiveToDerived C) + Localization.Lifting (_root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.HomotopyCategory.Plus.injectiveToDerived C) (MorphismProperty.isomorphisms (HomotopyCategory.Plus (InjectiveObject C))) - F.rightDerivedFunctorPlusOnInjectives F.rightDerivedFunctorPlus := - ⟨F.rightDerivedFunctorPlusOnInjectivesIso⟩ + (rightDerivedFunctorPlusOnInjectives F) F.rightDerivedFunctorPlus := + ⟨(rightDerivedFunctorPlusOnInjectivesIso F)⟩ /-- Coherent shift compatibility of the bounded-below right derived functor. Its zero and addition coherence laws are inherited by localization from the termwise complex-level shift compatibility. -/ instance rightDerivedFunctorPlusCommShift : F.rightDerivedFunctorPlus.CommShift ℤ := - Functor.commShiftOfLocalization (HomotopyCategory.Plus.injectiveToDerived C) + Functor.commShiftOfLocalization (_root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.HomotopyCategory.Plus.injectiveToDerived C) (MorphismProperty.isomorphisms (HomotopyCategory.Plus (InjectiveObject C))) ℤ - F.rightDerivedFunctorPlusOnInjectives F.rightDerivedFunctorPlus + (rightDerivedFunctorPlusOnInjectives F) F.rightDerivedFunctorPlus /-- The injective-resolution comparison is compatible with the coherent shifts, which pins it to the derived unit. -/ instance rightDerivedFunctorPlusOnInjectivesIso_commShift : - NatTrans.CommShift F.rightDerivedFunctorPlusOnInjectivesIso.hom ℤ := + NatTrans.CommShift (rightDerivedFunctorPlusOnInjectivesIso F).hom ℤ := NatTrans.commShift_iso_hom_of_localization - (HomotopyCategory.Plus.injectiveToDerived C) + (_root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.HomotopyCategory.Plus.injectiveToDerived C) (MorphismProperty.isomorphisms (HomotopyCategory.Plus (InjectiveObject C))) ℤ - F.rightDerivedFunctorPlusOnInjectives F.rightDerivedFunctorPlus + (rightDerivedFunctorPlusOnInjectives F) F.rightDerivedFunctorPlus set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in @@ -160,9 +174,9 @@ set_option backward.isDefEq.respectTransparency false in instance rightDerivedFunctorPlusUnit_whiskerLeft_injectives_commShift : NatTrans.CommShift (whiskerLeft (InjectiveObject.ι C).mapHomotopyCategoryPlus F.rightDerivedFunctorPlusUnith) ℤ := by - have : NatTrans.CommShift F.rightDerivedFunctorPlusOnInjectivesUnit ℤ := - inferInstanceAs (NatTrans.CommShift F.rightDerivedFunctorPlusOnInjectivesIso.inv ℤ) - have h : F.rightDerivedFunctorPlusOnInjectivesUnit ≫ (Functor.associator _ _ _).hom = + have : NatTrans.CommShift (rightDerivedFunctorPlusOnInjectivesUnit F) ℤ := + inferInstanceAs (NatTrans.CommShift (rightDerivedFunctorPlusOnInjectivesIso F).inv ℤ) + have h : (rightDerivedFunctorPlusOnInjectivesUnit F) ≫ (Functor.associator _ _ _).hom = whiskerLeft (InjectiveObject.ι C).mapHomotopyCategoryPlus F.rightDerivedFunctorPlusUnith := by simp [rightDerivedFunctorPlusOnInjectivesUnit] @@ -176,7 +190,7 @@ including on complexes which are not termwise injective. -/ instance rightDerivedFunctorPlusUnitCommShift : NatTrans.CommShift F.rightDerivedFunctorPlusUnith ℤ where shift_comm a := by - apply HomotopyCategory.Plus.natTrans_ext_on_injectives C + apply _root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.HomotopyCategory.Plus.natTrans_ext_on_injectives C · intro K L f hf have : IsIso (DerivedCategory.Plus.Qh.map f) := Localization.inverts DerivedCategory.Plus.Qh @@ -195,4 +209,9 @@ instance rightDerivedFunctorPlusUnitCommShift : simpa only [NatTrans.comp_app, whiskerRight_app, whiskerLeft_app, Functor.commShiftIso_comp_hom_app, Category.assoc] using h -end CategoryTheory.Functor +end Functor +end CategoryTheory + +end + +end OAI.Algebra.Homology.DerivedFunctorPlusShift diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/RightDerivedFunctorPlusShiftNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/RightDerivedFunctorPlusShiftNaturality.lean index a5d3f2574f..f3d96b4b5e 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/RightDerivedFunctorPlusShiftNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/RightDerivedFunctorPlusShiftNaturality.lean @@ -1,13 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlusNaturality -public import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlusShift +import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlusNaturality +import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlusShift + +namespace OAI.Algebra.Homology.FunctorPlusShiftNaturality + +open _root_.CategoryTheory +open _root_.CategoryTheory.NatTrans /-! # Shift compatibility of derived natural transformations @@ -18,11 +24,15 @@ compatibility is proved on complexes and descended through the injective-resolut comparison. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory +open _root_.CategoryTheory -namespace CategoryTheory.NatTrans +namespace CategoryTheory +open _root_.CategoryTheory +namespace NatTrans +open _root_.CategoryTheory +open _root_.CategoryTheory.NatTrans section Detect @@ -96,7 +106,7 @@ instance mapHomotopyCategoryCommShift : CommShift (α.mapHomotopyCategory ℤᵘ set_option backward.isDefEq.respectTransparency false in set_option backward.defeqAttrib.useBackward true in /-- Restricting to bounded-below homotopy complexes preserves shift compatibility. -/ -instance mapHomotopyCategoryPlusCommShift : CommShift α.mapHomotopyCategoryPlus ℤ := by +instance mapHomotopyCategoryPlusCommShift : CommShift (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.mapHomotopyCategoryPlus α) ℤ := by let eF : F.mapHomotopyCategoryPlus ⋙ HomotopyCategory.Plus.ι D ≅ HomotopyCategory.Plus.ι C ⋙ F.mapHomotopyCategory ℤᵘᵖ := (HomotopyCategory.plus D).liftCompιIso _ _ @@ -105,13 +115,13 @@ instance mapHomotopyCategoryPlusCommShift : CommShift α.mapHomotopyCategoryPlus (HomotopyCategory.plus D).liftCompιIso _ _ have : CommShift eF.hom ℤ := by dsimp [eF]; infer_instance have : CommShift eG.hom ℤ := by dsimp [eG]; infer_instance - have h : Functor.whiskerRight α.mapHomotopyCategoryPlus (HomotopyCategory.Plus.ι D) = + have h : Functor.whiskerRight (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.mapHomotopyCategoryPlus α) (HomotopyCategory.Plus.ι D) = eF.hom ≫ Functor.whiskerLeft (HomotopyCategory.Plus.ι C) (α.mapHomotopyCategory ℤᵘᵖ) ≫ eG.inv := by ext K - simp [eF, eG, mapHomotopyCategoryPlus, ObjectProperty.liftCompιIso] + simp [eF, eG, _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.mapHomotopyCategoryPlus, ObjectProperty.liftCompιIso] exact (Category.id_comp _).symm - have : CommShift (Functor.whiskerRight α.mapHomotopyCategoryPlus + have : CommShift (Functor.whiskerRight (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.mapHomotopyCategoryPlus α) (HomotopyCategory.Plus.ι D)) ℤ := by rw [h] infer_instance @@ -124,26 +134,31 @@ set_option backward.defeqAttrib.useBackward true in /-- On injective complexes the derived transformation is the termwise map, conjugated by the canonical derived-unit isomorphisms. -/ theorem rightDerivedFunctorPlus_onInjectives : - Functor.whiskerLeft (HomotopyCategory.Plus.injectiveToDerived C) - α.rightDerivedFunctorPlus = - F.rightDerivedFunctorPlusOnInjectivesIso.hom ≫ + Functor.whiskerLeft (_root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.HomotopyCategory.Plus.injectiveToDerived C) + (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus α) = + (_root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.CategoryTheory.Functor.rightDerivedFunctorPlusOnInjectivesIso F).hom ≫ Functor.whiskerLeft (InjectiveObject.ι C).mapHomotopyCategoryPlus - (Functor.whiskerRight α.mapHomotopyCategoryPlus DerivedCategory.Plus.Qh) ≫ - G.rightDerivedFunctorPlusOnInjectivesIso.inv := by + (Functor.whiskerRight (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.mapHomotopyCategoryPlus α) DerivedCategory.Plus.Qh) ≫ + (_root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.CategoryTheory.Functor.rightDerivedFunctorPlusOnInjectivesIso G).inv := by ext K : 2 - simp [Functor.rightDerivedFunctorPlusOnInjectivesIso, - Functor.rightDerivedFunctorPlusOnInjectivesUnit, - HomotopyCategory.Plus.injectiveToDerived] + simp [_root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.CategoryTheory.Functor.rightDerivedFunctorPlusOnInjectivesIso, + _root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.CategoryTheory.Functor.rightDerivedFunctorPlusOnInjectivesUnit, + _root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.HomotopyCategory.Plus.injectiveToDerived] set_option backward.isDefEq.respectTransparency false in set_option backward.defeqAttrib.useBackward true in /-- Coherent shift compatibility of the derived transformation, from the termwise compatibility of the coefficient map proved above. -/ -instance rightDerivedFunctorPlusCommShift : CommShift α.rightDerivedFunctorPlus ℤ := by - have : CommShift (Functor.whiskerLeft (HomotopyCategory.Plus.injectiveToDerived C) - α.rightDerivedFunctorPlus) ℤ := by +instance rightDerivedFunctorPlusCommShift : CommShift (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus α) ℤ := by + have : CommShift (Functor.whiskerLeft (_root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.HomotopyCategory.Plus.injectiveToDerived C) + (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus α)) ℤ := by rw [rightDerivedFunctorPlus_onInjectives] infer_instance - exact commShift_of_whiskerLeft ℤ (HomotopyCategory.Plus.injectiveToDerived C) _ + exact commShift_of_whiskerLeft ℤ (_root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.HomotopyCategory.Plus.injectiveToDerived C) _ + +end NatTrans +end CategoryTheory + +end -end CategoryTheory.NatTrans +end OAI.Algebra.Homology.FunctorPlusShiftNaturality diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/ShortExactQuasiIso.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/ShortExactQuasiIso.lean index a186c5a553..8933cd57b2 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/ShortExactQuasiIso.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/DerivedCategory/ShortExactQuasiIso.lean @@ -1,18 +1,24 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.DerivedCategory.ShortExact +import Mathlib.Algebra.Homology.DerivedCategory.ShortExact + +namespace OAI.Algebra.Homology.ShortExactQuasiIso + +open _root_.CochainComplex /-! # Quasi-isomorphisms on kernels in a morphism of short exact complexes -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Pretriangulated HomologicalComplex +open _root_.CategoryTheory _root_.CategoryTheory.Pretriangulated _root_.HomologicalComplex namespace CochainComplex +open _root_.CochainComplex variable {C : Type*} [Category* C] [Abelian C] @@ -31,3 +37,7 @@ lemma quasiIso_first_of_shortExact (inferInstanceAs (IsIso (DerivedCategory.Q.map f.τ₃))) end CochainComplex + +end + +end OAI.Algebra.Homology.ShortExactQuasiIso diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/LinearDual.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/LinearDual.lean index b9b9222f95..484d54a9db 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/LinearDual.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/LinearDual.lean @@ -12,13 +12,20 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.Algebra.Homology.LinearDual +import HodgeConjecture.Definitions.Algebra.Homology.LinearDual import Mathlib.LinearAlgebra.Dual.Lemmas +namespace OAI.Algebra.Homology.LinearDualHomotopy + +open _root_.CategoryTheory +open _root_.CategoryTheory.ShortComplex +open _root_.HomologicalComplex + /-! # Constructions used only in proofs @@ -28,21 +35,25 @@ The statement of the conjecture never inspects them: every path from the stateme of them runs through a proof, so proof irrelevance makes their bodies immaterial. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits +open _root_.CategoryTheory Limits universe u -namespace CategoryTheory.ShortComplex +namespace CategoryTheory +open _root_.CategoryTheory +namespace ShortComplex +open _root_.CategoryTheory +open _root_.CategoryTheory.ShortComplex variable {R : Type u} [CommRing R] /-- Dualising a splitting of a short complex of modules gives a splitting of the reversed dual short complex: the retraction and the section swap roles. -/ def Splitting.linearDual {S : ShortComplex (ModuleCat.{u} R)} (h : S.Splitting) : - S.linearDual.Splitting where + (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual S).Splitting where r := ModuleCat.ofHom h.s.hom.dualMap s := ModuleCat.ofHom h.r.hom.dualMap f_r := by @@ -71,13 +82,15 @@ def Splitting.linearDual {S : ShortComplex (ModuleCat.{u} R)} (h : S.Splitting) rw [add_comm] exact hx -end CategoryTheory.ShortComplex +end ShortComplex +end CategoryTheory namespace HomologicalComplex +open _root_.HomologicalComplex variable {R : Type u} [CommRing R] -attribute [simp] HomologicalComplex.linearDualCochainComplex_X +attribute [simp] _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex_X attribute [local implicit_reducible] shortComplexFunctor' shortComplexFunctor @@ -90,17 +103,17 @@ lemma ModuleCat.ofHom_sub.{v} {R : Type*} [Ring R] {M N : Type v} [AddCommGroup open Homotopy in /-- Algebraic duality sends a chain homotopy contravariantly to a cochain homotopy. -/ def linearDualHomotopy {f g : K ⟶ L} (h : Homotopy f g) : - Homotopy (linearDualMap f) (linearDualMap g) where + Homotopy (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap f) (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap g) where hom i j := ModuleCat.ofHom (h.hom j i).hom.dualMap zero i j hij := by simp [h.zero j i hij] comm i := by cases i with | zero => - rw [dNext_cochainComplex, prevD_zero_cochainComplex, linearDualCochainComplex_d_succ] + rw [dNext_cochainComplex, prevD_zero_cochainComplex, _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex_d_succ] have h' : f.f 0 - g.f 0 = h.hom 0 1 ≫ L.d 1 0 := by simpa [dNext_zero_chainComplex _, prevD_chainComplex _, ← sub_eq_iff_eq_add] using h.comm 0 simp [← ModuleCat.ofHom_comp, LinearMap.dualMap_comp_dualMap, ← ModuleCat.hom_comp, ← h', - LinearMap.dualMap_sub, ModuleCat.ofHom_sub] + _root_.OAI.LinearAlgebra.Foundations.DualDefs.LinearMap.dualMap_sub, _root_.OAI.Algebra.Homology.LinearDualHomotopy.HomologicalComplex.ModuleCat.ofHom_sub] | succ n => rw [Homotopy.dNext_cochainComplex, Homotopy.prevD_succ_cochainComplex] have h': f.f (n + 1) - g.f (n + 1) = h.hom (n + 1) (n + 1 + 1) ≫ @@ -108,22 +121,25 @@ def linearDualHomotopy {f g : K ⟶ L} (h : Homotopy f g) : simpa [dNext_succ_chainComplex _, prevD_chainComplex _, ← sub_eq_iff_eq_add, add_comm (K.d _ _ ≫ _)] using h.comm (n + 1) simp [← ModuleCat.ofHom_comp, ← ModuleCat.ofHom_add, LinearMap.dualMap_comp_dualMap, - ← ModuleCat.hom_comp, ← LinearMap.dualMap_add, ← ModuleCat.hom_add, ← h'] + ← ModuleCat.hom_comp, ← _root_.OAI.LinearAlgebra.Foundations.DualDefs.LinearMap.dualMap_add, ← ModuleCat.hom_add, ← h'] /-- Algebraic duality sends a chain-homotopy equivalence contravariantly to a cochain-homotopy equivalence. -/ def linearDualHomotopyEquiv (e : HomotopyEquiv K L) : - HomotopyEquiv L.linearDualCochainComplex K.linearDualCochainComplex where - hom := linearDualMap e.hom - inv := linearDualMap e.inv + HomotopyEquiv (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex L) (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex K) where + hom := _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap e.hom + inv := _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap e.inv homotopyHomInvId := - (Homotopy.ofEq (linearDualMap_comp e.inv e.hom).symm).trans <| + (Homotopy.ofEq (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap_comp e.inv e.hom).symm).trans <| (linearDualHomotopy e.homotopyInvHomId).trans <| - Homotopy.ofEq (linearDualMap_id L) + Homotopy.ofEq (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap_id L) homotopyInvHomId := - (Homotopy.ofEq (linearDualMap_comp e.hom e.inv).symm).trans <| + (Homotopy.ofEq (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap_comp e.hom e.inv).symm).trans <| (linearDualHomotopy e.homotopyHomInvId).trans <| - Homotopy.ofEq (linearDualMap_id K) + Homotopy.ofEq (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap_id K) end HomologicalComplex +end + +end OAI.Algebra.Homology.LinearDualHomotopy diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/LinearDualNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/LinearDualNaturality.lean index 50647edcfb..a125cd05c3 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/LinearDualNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/LinearDualNaturality.lean @@ -12,10 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.Algebra.Homology.LinearDual +import HodgeConjecture.Lemmas.Algebra.Homology.LinearDual + +namespace OAI.Algebra.Homology.LinearDualNaturality + +open _root_.CategoryTheory +open _root_.CategoryTheory.ShortComplex +open _root_.HomologicalComplex /-! # Naturality of linear duality on homology @@ -30,13 +37,17 @@ complex and the dual of homology intertwines the dualised cochain map with the d homology map. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory +open _root_.CategoryTheory universe u -namespace CategoryTheory.ShortComplex +namespace CategoryTheory +open _root_.CategoryTheory +namespace ShortComplex +open _root_.CategoryTheory +open _root_.CategoryTheory.ShortComplex section CommRing variable {R : Type u} [CommRing R] @@ -48,7 +59,7 @@ def moduleCatHomologyClass (S : ShortComplex (ModuleCat.{u} R)) : /-- Every homology class has an explicit cycle representative. -/ lemma moduleCatHomologyClass_surjective (S : ShortComplex (ModuleCat.{u} R)) : - Function.Surjective S.moduleCatHomologyClass := + Function.Surjective (moduleCatHomologyClass S) := S.moduleCatHomologyIso.toLinearEquiv.symm.surjective.comp (Submodule.mkQ_surjective _) @@ -68,7 +79,7 @@ lemma moduleCatCyclesIso_inv_cycleMap {S T : ShortComplex (ModuleCat.{u} R)} S.moduleCatCyclesIso.inv ≫ cyclesMap f = ModuleCat.ofHom (moduleCatCycleMap f) ≫ T.moduleCatCyclesIso.inv := by rw [← cancel_mono T.iCycles] - simp only [Category.assoc, cyclesMap_i, moduleCatCyclesIso_inv_iCycles_assoc, + simp only [Category.assoc, _root_.CategoryTheory.ShortComplex.cyclesMap_i, moduleCatCyclesIso_inv_iCycles_assoc, moduleCatCyclesIso_inv_iCycles] rfl @@ -76,19 +87,19 @@ set_option backward.isDefEq.respectTransparency false in /-- Taking the class of a cycle commutes with the induced homology map. -/ lemma moduleCatHomologyClass_naturality {S T : ShortComplex (ModuleCat.{u} R)} (f : S ⟶ T) (x : LinearMap.ker S.g.hom) : - (homologyMap f).hom (S.moduleCatHomologyClass x) = - T.moduleCatHomologyClass (moduleCatCycleMap f x) := by + (homologyMap f).hom ((moduleCatHomologyClass S) x) = + (moduleCatHomologyClass T) (moduleCatCycleMap f x) := by have h : S.moduleCatCyclesIso.inv ≫ S.homologyπ ≫ homologyMap f = ModuleCat.ofHom (moduleCatCycleMap f) ≫ T.moduleCatCyclesIso.inv ≫ T.homologyπ := by - rw [homologyπ_naturality, ← Category.assoc, moduleCatCyclesIso_inv_cycleMap, + rw [_root_.CategoryTheory.ShortComplex.homologyπ_naturality, ← Category.assoc, moduleCatCyclesIso_inv_cycleMap, Category.assoc] exact ConcreteCategory.congr_hom h x set_option backward.isDefEq.respectTransparency false in /-- Reversed linear-dual short complexes are contravariantly functorial. -/ def linearDualMap {S T : ShortComplex (ModuleCat.{u} R)} (f : S ⟶ T) : - T.linearDual ⟶ S.linearDual where + (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual T) ⟶ (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual S) where τ₁ := ModuleCat.ofHom f.τ₃.hom.dualMap τ₂ := ModuleCat.ofHom f.τ₂.hom.dualMap τ₃ := ModuleCat.ofHom f.τ₁.hom.dualMap @@ -119,20 +130,20 @@ set_option backward.isDefEq.respectTransparency false in choice of generators or representatives in the resulting pairing. -/ lemma linearDualHomologyEquiv_class_apply_class (S : ShortComplex (ModuleCat.{u} R)) (phi : LinearMap.ker S.f.hom.dualMap) (x : LinearMap.ker S.g.hom) : - S.linearDualHomologyEquiv (S.linearDual.moduleCatHomologyClass phi) - (S.moduleCatHomologyClass x) = (phi.1 : Module.Dual R S.X₂) x.1 := by - change S.dualHomologyComparisonExplicit - (S.linearDual.moduleCatHomologyIso.hom.hom - (S.linearDual.moduleCatHomologyIso.inv.hom (Submodule.Quotient.mk phi))) + (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDualHomologyEquiv S) ((moduleCatHomologyClass (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual S)) phi) + ((moduleCatHomologyClass S) x) = (phi.1 : Module.Dual R S.X₂) x.1 := by + change (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.dualHomologyComparisonExplicit S) + ((_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual S).moduleCatHomologyIso.hom.hom + ((_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual S).moduleCatHomologyIso.inv.hom (Submodule.Quotient.mk phi))) (S.moduleCatHomologyIso.hom.hom (S.moduleCatHomologyIso.inv.hom (Submodule.Quotient.mk x))) = (phi.1 : Module.Dual R S.X₂) x.1 have hphi := ConcreteCategory.congr_hom - S.linearDual.moduleCatHomologyIso.inv_hom_id (Submodule.Quotient.mk phi) + (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual S).moduleCatHomologyIso.inv_hom_id (Submodule.Quotient.mk phi) have hx := ConcreteCategory.congr_hom S.moduleCatHomologyIso.inv_hom_id (Submodule.Quotient.mk x) - change S.linearDual.moduleCatHomologyIso.hom.hom - (S.linearDual.moduleCatHomologyIso.inv.hom (Submodule.Quotient.mk phi)) = + change (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual S).moduleCatHomologyIso.hom.hom + ((_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual S).moduleCatHomologyIso.inv.hom (Submodule.Quotient.mk phi)) = Submodule.Quotient.mk phi at hphi change S.moduleCatHomologyIso.hom.hom (S.moduleCatHomologyIso.inv.hom (Submodule.Quotient.mk x)) = @@ -144,27 +155,29 @@ set_option backward.isDefEq.respectTransparency false in /-- The universal-coefficient equivalence is natural in the complex. -/ theorem linearDualHomologyEquiv_naturality {S T : ShortComplex (ModuleCat.{u} R)} (f : S ⟶ T) - (alpha : T.linearDual.homology) : - S.linearDualHomologyEquiv ((homologyMap (linearDualMap f)).hom alpha) = - (homologyMap f).hom.dualMap (T.linearDualHomologyEquiv alpha) := by - obtain ⟨phi, rfl⟩ := T.linearDual.moduleCatHomologyClass_surjective alpha + (alpha : (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual T).homology) : + (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDualHomologyEquiv S) ((homologyMap (linearDualMap f)).hom alpha) = + (homologyMap f).hom.dualMap ((_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDualHomologyEquiv T) alpha) := by + obtain ⟨phi, rfl⟩ := (moduleCatHomologyClass_surjective (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual T)) alpha apply LinearMap.ext intro c - obtain ⟨x, rfl⟩ := S.moduleCatHomologyClass_surjective c - change S.linearDualHomologyEquiv - ((homologyMap (linearDualMap f)).hom (T.linearDual.moduleCatHomologyClass phi)) - (S.moduleCatHomologyClass x) = - T.linearDualHomologyEquiv (T.linearDual.moduleCatHomologyClass phi) - ((homologyMap f).hom (S.moduleCatHomologyClass x)) + obtain ⟨x, rfl⟩ := (moduleCatHomologyClass_surjective S) c + change (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDualHomologyEquiv S) + ((homologyMap (linearDualMap f)).hom ((moduleCatHomologyClass (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual T)) phi)) + ((moduleCatHomologyClass S) x) = + (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDualHomologyEquiv T) ((moduleCatHomologyClass (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDual T)) phi) + ((homologyMap f).hom ((moduleCatHomologyClass S) x)) rw [moduleCatHomologyClass_naturality, moduleCatHomologyClass_naturality, linearDualHomologyEquiv_class_apply_class, linearDualHomologyEquiv_class_apply_class] rfl end Field -end CategoryTheory.ShortComplex +end ShortComplex +end CategoryTheory namespace HomologicalComplex +open _root_.HomologicalComplex section CommRing variable {R : Type u} [CommRing R] @@ -174,10 +187,10 @@ set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in /-- The degreewise short-complex dual identification preserves maps. -/ lemma linearDualCochainComplexScIso_naturality (f : K ⟶ L) (n : ℕ) : - (shortComplexFunctor (ModuleCat R) (.up ℕ) n).map (linearDualMap f) ≫ - (linearDualCochainComplexScIso K n).hom = - (linearDualCochainComplexScIso L n).hom ≫ - ShortComplex.linearDualMap ((shortComplexFunctor (ModuleCat R) (.down ℕ) n).map f) := rfl + (shortComplexFunctor (ModuleCat R) (.up ℕ) n).map (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap f) ≫ + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplexScIso K n).hom = + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplexScIso L n).hom ≫ + _root_.OAI.Algebra.Homology.LinearDualNaturality.CategoryTheory.ShortComplex.linearDualMap ((shortComplexFunctor (ModuleCat R) (.down ℕ) n).map f) := rfl end CommRing @@ -190,23 +203,27 @@ set_option backward.isDefEq.respectTransparency false in /-- The universal-coefficient identification intertwines the dual cochain map with the dual of the homology map. -/ lemma linearDualHomologyEquiv_naturality (f : K ⟶ L) (n : ℕ) - (a : L.linearDualCochainComplex.homology n) (z : K.homology n) : - linearDualHomologyEquiv K n (homologyMap (linearDualMap f) n a) z = - linearDualHomologyEquiv L n a (homologyMap f n z) := by + (a : (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex L).homology n) (z : K.homology n) : + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualHomologyEquiv K n (homologyMap (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap f) n a) z = + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualHomologyEquiv L n a (homologyMap f n z) := by have h := congrArg (ShortComplex.homologyFunctor (ModuleCat R)).map (linearDualCochainComplexScIso_naturality f n) rw [Functor.map_comp, Functor.map_comp] at h have ha := ConcreteCategory.congr_hom h a - change (K.sc n).linearDualHomologyEquiv - (ShortComplex.homologyMap (linearDualCochainComplexScIso K n).hom - (homologyMap (linearDualMap f) n a)) z = _ - rw [show ShortComplex.homologyMap (linearDualCochainComplexScIso K n).hom - (homologyMap (linearDualMap f) n a) = + change (_root_.OAI.Algebra.Homology.LinearDual.CategoryTheory.ShortComplex.linearDualHomologyEquiv (K.sc n)) + (ShortComplex.homologyMap (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplexScIso K n).hom + (homologyMap (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap f) n a)) z = _ + rw [show ShortComplex.homologyMap (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplexScIso K n).hom + (homologyMap (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap f) n a) = ShortComplex.homologyMap - (ShortComplex.linearDualMap ((shortComplexFunctor (ModuleCat R) (.down ℕ) n).map f)) - (ShortComplex.homologyMap (linearDualCochainComplexScIso L n).hom a) from ha] - exact congrArg (fun α => α z) (ShortComplex.linearDualHomologyEquiv_naturality _ _) + (_root_.OAI.Algebra.Homology.LinearDualNaturality.CategoryTheory.ShortComplex.linearDualMap ((shortComplexFunctor (ModuleCat R) (.down ℕ) n).map f)) + (ShortComplex.homologyMap (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplexScIso L n).hom a) from ha] + exact congrArg (fun α => α z) (_root_.OAI.Algebra.Homology.LinearDualNaturality.CategoryTheory.ShortComplex.linearDualHomologyEquiv_naturality _ _) end Field end HomologicalComplex + +end + +end OAI.Algebra.Homology.LinearDualNaturality diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/MapExtendNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/MapExtendNaturality.lean index 674999d4ea..099cca7eb1 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/MapExtendNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/MapExtendNaturality.lean @@ -1,20 +1,28 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.GlobalSections -public import HodgeConjecture.Mathlib.Algebra.Homology.MapExtend +import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.GlobalSections +import HodgeConjecture.Mathlib.Algebra.Homology.MapExtend + +namespace OAI.Algebra.Homology.MapExtendNaturality + +open _root_.CochainComplex +open _root_.HomologicalComplex + /-! # Naturality of the additive map/extension comparison -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits +open _root_.CategoryTheory _root_.CategoryTheory.Limits namespace HomologicalComplex +open _root_.HomologicalComplex universe u v @@ -28,10 +36,10 @@ set_option backward.isDefEq.respectTransparency false in lemma mapExtendCanonicalIso_inv_naturality (F : Functor C D) [F.Additive] {K L : HomologicalComplex C c} (f : K ⟶ L) (e : c.Embedding c') : - extendMap ((F.mapHomologicalComplex c).map f) e ≫ (mapExtendCanonicalIso F L e).inv = - (mapExtendCanonicalIso F K e).inv ≫ + extendMap ((F.mapHomologicalComplex c).map f) e ≫ (_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso F L e).inv = + (_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso F K e).inv ≫ (F.mapHomologicalComplex c').map (extendMap f e) := by - rw [Iso.comp_inv_eq, Category.assoc, mapExtendCanonicalIso_naturality F K e f, + rw [Iso.comp_inv_eq, Category.assoc, _root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso_naturality F K e f, Iso.inv_hom_id_assoc] set_option backward.isDefEq.respectTransparency false in @@ -41,11 +49,11 @@ fixes the normalization of restriction after extending a complex by zero. -/ lemma mapExtendCanonicalIso_hom_naturality_from_id (F : C ⥤ C) [F.Additive] (τ : 𝟭 C ⟶ F) (K : HomologicalComplex C c) (e : c.Embedding c') : - (τ.mapHomologicalComplex c').app (K.extend e) ≫ (mapExtendCanonicalIso F K e).hom = + (τ.mapHomologicalComplex c').app (K.extend e) ≫ (_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso F K e).hom = extendMap ((τ.mapHomologicalComplex c).app K) e := by apply HomologicalComplex.Hom.ext funext q - change τ.app (extend.X K (e.r q)) ≫ (mapExtendCanonicalXIso F K (e.r q)).hom = + change τ.app (extend.X K (e.r q)) ≫ (_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalXIso F K (e.r q)).hom = extend.mapX ((τ.mapHomologicalComplex c).app K) (e.r q) generalize e.r q = x cases x with @@ -57,6 +65,7 @@ lemma mapExtendCanonicalIso_hom_naturality_from_id end HomologicalComplex namespace CochainComplex +open _root_.CochainComplex universe u @@ -69,12 +78,16 @@ quasi-isomorphism, the same holds for its extension to integer degrees. -/ lemma quasiIso_map_extendMap_nat : QuasiIso ((F.mapHomologicalComplex ℤᵘᵖ).map (HomologicalComplex.extendMap f ComplexShape.embeddingUpNat)) := by - have : QuasiIso ((HomologicalComplex.mapExtendCanonicalIso F K ComplexShape.embeddingUpNat).inv ≫ + have : QuasiIso ((_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso F K ComplexShape.embeddingUpNat).inv ≫ (F.mapHomologicalComplex ℤᵘᵖ).map (HomologicalComplex.extendMap f ComplexShape.embeddingUpNat)) := by - rw [← HomologicalComplex.mapExtendCanonicalIso_inv_naturality F f ComplexShape.embeddingUpNat] + rw [← _root_.OAI.Algebra.Homology.MapExtendNaturality.HomologicalComplex.mapExtendCanonicalIso_inv_naturality F f ComplexShape.embeddingUpNat] infer_instance exact quasiIso_of_comp_left - (HomologicalComplex.mapExtendCanonicalIso F K ComplexShape.embeddingUpNat).inv _ + (_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso F K ComplexShape.embeddingUpNat).inv _ end CochainComplex + +end + +end OAI.Algebra.Homology.MapExtendNaturality diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/MappingConeQuasiIso.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/MappingConeQuasiIso.lean index 0b873e9176..600fdf201e 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/MappingConeQuasiIso.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Algebra/Homology/MappingConeQuasiIso.lean @@ -12,10 +12,16 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.DerivedCategory.Basic +import Mathlib.Algebra.Homology.DerivedCategory.Basic + +namespace OAI.Algebra.Homology.MappingConeQuasiIso + +open _root_.CochainComplex +open _root_.CochainComplex.mappingCone /-! # Quasi-isomorphisms between mapping cones @@ -28,16 +34,19 @@ This is the categorical comparison needed to pass from ordinary cohomology compa space and an open complement to the corresponding comparison with support. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits -open CategoryTheory.Pretriangulated +open _root_.CategoryTheory Limits +open _root_.CategoryTheory.Pretriangulated universe u -namespace CochainComplex.mappingCone +namespace CochainComplex +open _root_.CochainComplex +namespace mappingCone +open _root_.CochainComplex +open _root_.CochainComplex.mappingCone -set_option linter.style.haveILetI false in /-- A map of mapping cones induced by a commutative square is a quasi-isomorphism when both vertical maps in the square are quasi-isomorphisms. -/ lemma map_quasiIso_of_vertical_quasiIso @@ -49,20 +58,25 @@ lemma map_quasiIso_of_vertical_quasiIso QuasiIso (map φ₁ φ₂ a b comm) := by let tmap := (DerivedCategory.Q.mapTriangle).map (triangleMap φ₁ φ₂ a b comm) - haveI : IsIso tmap.hom₁ := by + have h₁ : IsIso tmap.hom₁ := by change IsIso (DerivedCategory.Q.map a) rw [DerivedCategory.isIso_Q_map_iff_quasiIso] infer_instance - haveI : IsIso tmap.hom₂ := by + have h₂ : IsIso tmap.hom₂ := by change IsIso (DerivedCategory.Q.map b) rw [DerivedCategory.isIso_Q_map_iff_quasiIso] infer_instance - haveI : IsIso tmap.hom₃ := + have h₃ : IsIso tmap.hom₃ := CategoryTheory.Pretriangulated.isIso₃_of_isIso₁₂ tmap (DerivedCategory.mappingCone_triangle_distinguished φ₁) (DerivedCategory.mappingCone_triangle_distinguished φ₂) - (inferInstance : IsIso tmap.hom₁) (inferInstance : IsIso tmap.hom₂) + h₁ h₂ rw [← DerivedCategory.isIso_Q_map_iff_quasiIso] - exact (inferInstance : IsIso tmap.hom₃) + exact h₃ + +end mappingCone +end CochainComplex + +end -end CochainComplex.mappingCone +end OAI.Algebra.Homology.MappingConeQuasiIso diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/AnalyticLeftInverse.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/AnalyticLeftInverse.lean index 9795580376..01980d7368 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/AnalyticLeftInverse.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/AnalyticLeftInverse.lean @@ -1,10 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.ClosedImmersion.AnalyticLeftInverse +import HodgeConjecture.Definitions.AlgebraicGeometry.ClosedImmersion.AnalyticLeftInverse + +namespace OAI.AlgebraicGeometry.ClosedImmersion.AnalyticLeftAt + +open _root_.AlgebraicGeometry /-! # Analytic local left inverses from section lifting @@ -13,11 +18,11 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicGeometry.ClosedImmersion.AnalyticLeftInverse`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace Filter +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace Filter -namespace AlgebraicGeometry +section universe u @@ -40,99 +45,105 @@ theorem Scheme.Hom.exists_affine_local_section_lifts (Y.presheaf.map (homOfLE hUV).op (s j)) exact ⟨U, hU, hUV, hyU, r, hr⟩ -end AlgebraicGeometry +end -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) [SmoothOfRelativeDimension m Y.hom] [SmoothOfRelativeDimension d X.hom] -@[simp] theorem inclusionInComplexCharts_at_center (z : ComplexPoint Y) : - inclusionInComplexCharts X Y i m d z - (localChart Y m z z) = - localChart X d (Point.map i z) (Point.map i z) := by - unfold inclusionInComplexCharts - rw [(localChart Y m z).left_inv (mem_localChart_source Y m z)] +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts_at_center (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts X Y i m d z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts + rw [(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z).left_inv (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source Y m z)] /-- Analyticity is inherited from the morphism of smooth schemes. -/ -theorem analyticAt_inclusionInComplexCharts (z : ComplexPoint Y) : - AnalyticAt ℂ (inclusionInComplexCharts X Y i m d z) - (localChart Y m z z) := by - apply analyticAt_localChart_symm_map Y X i m d z - ((localChart Y m z).map_source (mem_localChart_source Y m z)) - rw [(localChart Y m z).left_inv (mem_localChart_source Y m z)] - exact mem_localChart_source X d (Point.map i z) +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_inclusionInComplexCharts (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) : + AnalyticAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z) := by + apply _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_symm_map Y X i m d z + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z).map_source (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source Y m z)) + rw [(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z).left_inv (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source Y m z)] + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) /-- A smooth closed immersion has an analytic local left inverse in complex coordinates, obtained by lifting the intrinsic coordinate sections. -/ -theorem exists_analytic_localLeftInverse_of_isClosedImmersion [IsClosedImmersion i.left] - (z : ComplexPoint Y) : +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_analytic_localLeftInverse_of_isClosedImmersion [IsClosedImmersion i.left] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) : ∃ L : (Fin d → ℂ) → (Fin m → ℂ), AnalyticAt ℂ L - (inclusionInComplexCharts X Y i m d z - (localChart Y m z z)) ∧ - (L ∘ inclusionInComplexCharts X Y i m d z) =ᶠ[ - 𝓝 (localChart Y m z z)] id := by - let D := localEtaleCoordinates Y m z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts X Y i m d z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z)) ∧ + (L ∘ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts X Y i m d z) =ᶠ[ + 𝓝 (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z)] id := by + let D := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates Y m z have hzD : z.underlying ∈ D.ambientCoordinateOpen := by - simpa only [D, LocalEtaleCoordinates.ambientCoordinateOpen, Scheme.Opens.ι_image_top, - Point.overOpen, Set.mem_ofPred_eq] using - mem_localEtaleCoordinates Y m z - obtain ⟨U, _hU, hUV, hzU, r, hr⟩ := i.left.exists_affine_local_section_lifts + simpa only [D, _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates.ambientCoordinateOpen, Scheme.Opens.ι_image_top, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen, Set.mem_ofPred_eq] using + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localEtaleCoordinates Y m z + obtain ⟨U, _hU, hUV, hzU, r, hr⟩ := (_root_.OAI.AlgebraicGeometry.ClosedImmersion.AnalyticLeftAt.Scheme.Hom.exists_affine_local_section_lifts i.left) D.ambientCoordinateOpen D.ambientCoordinateSection z.underlying hzD - let eY := localChart Y m z - let eX := localChart X d (Point.map i z) + let eY := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z + let eX := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) let L : (Fin d → ℂ) → (Fin m → ℂ) := - fun w j => Point.evaluate U (r j) (eX.symm w) - have hzY : z ∈ eY.source := mem_localChart_source Y m z - have hzX : Point.map i z ∈ eX.source := - mem_localChart_source X d (Point.map i z) + fun w j => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate U (r j) (eX.symm w) + have hzY : z ∈ eY.source := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source Y m z + have hzX : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z ∈ eX.source := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) have hzYt : eY z ∈ eY.target := eY.map_source hzY - have hzXt : eX (Point.map i z) ∈ eX.target := eX.map_source hzX + have hzXt : eX (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) ∈ eX.target := eX.map_source hzX refine ⟨L, ?_, ?_⟩ - · rw [inclusionInComplexCharts_at_center] + · rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts_at_center] refine AnalyticAt.pi fun j ↦ ?_ - apply analyticAt_localChart_symm_evaluate X d (Point.map i z) hzXt U (r j) - change eX.symm (eX (Point.map i z)) ∈ Point.overOpen U + apply _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_symm_evaluate X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) hzXt U (r j) + change eX.symm (eX (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z)) ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U rw [eX.left_inv hzX] exact hzU - · have hc : ContinuousAt (fun v => Point.map i (eY.symm v)) (eY z) := - (Point.continuous_map i).continuousAt.comp (eY.continuousAt_symm hzYt) - have hX : ∀ᶠ v in 𝓝 (eY z), Point.map i (eY.symm v) ∈ eX.source := by + · have hc : ContinuousAt (fun v => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i (eY.symm v)) (eY z) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.continuous_map i).continuousAt.comp (eY.continuousAt_symm hzYt) + have hX : ∀ᶠ v in 𝓝 (eY z), _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i (eY.symm v) ∈ eX.source := by apply hc (eX.open_source.mem_nhds _) - change Point.map i (eY.symm (eY z)) ∈ eX.source + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i (eY.symm (eY z)) ∈ eX.source rw [eY.left_inv hzY] exact hzX - have hU : ∀ᶠ v in 𝓝 (eY z), Point.map i (eY.symm v) ∈ Point.overOpen U := by - apply hc ((Point.isOpen_overOpen U).mem_nhds _) - change Point.map i (eY.symm (eY z)) ∈ Point.overOpen U + have hU : ∀ᶠ v in 𝓝 (eY z), _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i (eY.symm v) ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U := by + apply hc ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isOpen_overOpen U).mem_nhds _) + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i (eY.symm (eY z)) ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U rw [eY.left_inv hzY] exact hzU filter_upwards [eY.open_target.mem_nhds hzYt, hX, hU] with v hvY hvX hvU funext j - change Point.evaluate U (r j) - (eX.symm (eX (Point.map i (eY.symm v)))) = v j - rw [eX.left_inv hvX, Point.evaluate_map, hr, - ← Point.evaluate_res hUV (D.ambientCoordinateSection j) (eY.symm v) - ((Point.mem_overOpen_map_iff i _ U).mp hvU), - ← localChart_apply_component_eq_evaluate Y m z (eY.symm v) (eY.map_target hvY) j] + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate U (r j) + (eX.symm (eX (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i (eY.symm v)))) = v j + rw [eX.left_inv hvX, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_map, hr, + ← _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_res hUV (D.ambientCoordinateSection j) (eY.symm v) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_map_iff i _ U).mp hvU), + ← _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart_apply_component_eq_evaluate Y m z (eY.symm v) (eY.map_target hvY) j] exact congrFun (eY.right_inv hvY) j /-- The derivative of a smooth closed immersion has a continuous-linear left inverse, obtained by differentiating the analytic local left inverse. -/ -theorem exists_leftInverse_fderiv_inclusionInComplexCharts [IsClosedImmersion i.left] - (z : ComplexPoint Y) : +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_leftInverse_fderiv_inclusionInComplexCharts [IsClosedImmersion i.left] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) : ∃ P : (Fin d → ℂ) →L[ℂ] (Fin m → ℂ), - P.comp (fderiv ℂ (inclusionInComplexCharts X Y i m d z) - (localChart Y m z z)) = ContinuousLinearMap.id ℂ (Fin m → ℂ) := by + P.comp (fderiv ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z)) = ContinuousLinearMap.id ℂ (Fin m → ℂ) := by obtain ⟨L, hL, hleft⟩ := - exists_analytic_localLeftInverse_of_isClosedImmersion X Y i m d z - let φ := inclusionInComplexCharts X Y i m d z - let a := localChart Y m z z + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_analytic_localLeftInverse_of_isClosedImmersion X Y i m d z + let φ := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts X Y i m d z + let a := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z refine ⟨fderiv ℂ L (φ a), ?_⟩ - have hφ := analyticAt_inclusionInComplexCharts X Y i m d z + have hφ := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_inclusionInComplexCharts X Y i m d z have hc := hL.differentiableAt.hasFDerivAt.comp a hφ.differentiableAt.hasFDerivAt exact (hc.congr_of_eventuallyEq hleft.symm).unique (hasFDerivAt_id a) -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.ClosedImmersion.AnalyticLeftAt diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/HolomorphicCharts.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/HolomorphicCharts.lean index 48e2f371c8..f9852bdce0 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/HolomorphicCharts.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/HolomorphicCharts.lean @@ -1,10 +1,16 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.ClosedImmersion.HolomorphicCharts +import HodgeConjecture.Definitions.AlgebraicGeometry.ClosedImmersion.HolomorphicCharts + +namespace OAI.AlgebraicGeometry.ClosedImmersion.HolomorphicChartsAt + +open _root_.AlgebraicGeometry +open _root_.OpenPartialHomeomorph /-! # Holomorphic support-flattening charts @@ -15,9 +21,9 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology Filter +open _root_.CategoryTheory _root_.Topology Filter namespace OpenPartialHomeomorph @@ -26,78 +32,81 @@ variable {E F : Type*} [NormedAddCommGroup E] [NormedSpace ℂ E] (e : OpenPartialHomeomorph E F) theorem biAnalyticRestrict_mem_source_iff (x : E) : - x ∈ e.biAnalyticRestrict.source ↔ + x ∈ (_root_.OAI.AlgebraicGeometry.ClosedImmersion.HolomorphicCharts.OpenPartialHomeomorph.biAnalyticRestrict e).source ↔ x ∈ e.source ∧ AnalyticAt ℂ e x ∧ AnalyticAt ℂ e.symm (e x) := by change (x ∈ e.source ∧ AnalyticAt ℂ e x ∧ x ∈ e.source ∧ AnalyticAt ℂ e.symm (e x)) ↔ _ aesop end OpenPartialHomeomorph -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) [SmoothOfRelativeDimension m Y.hom] [SmoothOfRelativeDimension d X.hom] - [IsClosedImmersion i.left] (z : ComplexPoint Y) + [IsClosedImmersion i.left] (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) -theorem closedImmersionHolomorphicFlatteningChart_mem_range_iff (y : ComplexPoint X) - (hy : y ∈ (closedImmersionHolomorphicFlatteningChart X Y i m d z).source) : - y ∈ Set.range (Point.map i) ↔ - (closedImmersionHolomorphicFlatteningChart X Y i m d z y).2 = 0 := - closedImmersionStandardFlatteningChart_mem_range_iff X Y i m d z y hy.2 +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart_mem_range_iff (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hy : y ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).source) : + y ∈ Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) ↔ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z y).2 = 0 := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_mem_range_iff X Y i m d z y hy.2 -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) [SmoothOfRelativeDimension m Y.hom] [SmoothOfRelativeDimension d X.hom] - [IsClosedImmersion i.left] (z : ComplexPoint Y) + [IsClosedImmersion i.left] (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) /-- The underlying normal coordinate change and its inverse are analytic at every ambient source point. -/ -private theorem closedImmersionHolomorphicFlatteningChart_analytic (y : ComplexPoint X) - (hy : y ∈ (closedImmersionHolomorphicFlatteningChart X Y i m d z).source) : - AnalyticAt ℂ (closedImmersionNormalCoordinateChange X Y i m d z) - (localChart X d (Point.map i z) y) ∧ - AnalyticAt ℂ (closedImmersionNormalCoordinateChange X Y i m d z).symm - (closedImmersionHolomorphicFlatteningChart X Y i m d z y) := - ((OpenPartialHomeomorph.biAnalyticRestrict_mem_source_iff _ _).mp hy.1.2).2 - -private theorem closedImmersionNormalCoordinateChange_symm_at_chart (y : ComplexPoint X) - (hy : y ∈ (closedImmersionHolomorphicFlatteningChart X Y i m d z).source) : - (closedImmersionNormalCoordinateChange X Y i m d z).symm - (closedImmersionHolomorphicFlatteningChart X Y i m d z y) = - localChart X d (Point.map i z) y := - (closedImmersionNormalCoordinateChange X Y i m d z).left_inv hy.1.2.1 - -variable (z' : ComplexPoint Y) +theorem closedImmersionHolomorphicFlatteningChart_analytic (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hy : y ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).source) : + AnalyticAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) y) ∧ + AnalyticAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z).symm + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z y) := + ((_root_.OAI.AlgebraicGeometry.ClosedImmersion.HolomorphicChartsAt.OpenPartialHomeomorph.biAnalyticRestrict_mem_source_iff _ _).mp hy.1.2).2 + +theorem closedImmersionNormalCoordinateChange_symm_at_chart (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hy : y ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).source) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z).symm + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z y) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) y := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z).left_inv hy.1.2.1 + +variable (z' : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) /-- Let `i : Y → X` be a closed immersion of smooth schemes over `ℂ` of dimensions `m` and `d`, respectively. Choose points `z,z′ ∈ Y(ℂ)` and their holomorphic charts `e_z,e_z′` in `ℂ^m × ℂ^{d-m}` that identify the image of `Y(ℂ)` with the locus where the second coordinate is zero. This local homeomorphism is the coordinate change `e_z′ ∘ e_z⁻¹` on the overlap. -/ -def closedImmersionNormalTransition : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalTransition : OpenPartialHomeomorph ((Fin m → ℂ) × (Fin (d - m) → ℂ)) ((Fin m → ℂ) × (Fin (d - m) → ℂ)) := - (closedImmersionHolomorphicFlatteningChart X Y i m d z).symm.trans - (closedImmersionHolomorphicFlatteningChart X Y i m d z') + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).symm.trans + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z') /-- These transitions are holomorphic throughout their domains. -/ -theorem analyticAt_closedImmersionNormalTransition +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalTransition (v : (Fin m → ℂ) × (Fin (d - m) → ℂ)) - (hv : v ∈ (closedImmersionNormalTransition X Y i m d z z').source) : - AnalyticAt ℂ (closedImmersionNormalTransition X Y i m d z z') v := by - let e := closedImmersionHolomorphicFlatteningChart X Y i m d z - let e' := closedImmersionHolomorphicFlatteningChart X Y i m d z' - let C := localChart X d (Point.map i z) - let C' := localChart X d (Point.map i z') - let A := closedImmersionNormalCoordinateChange X Y i m d z - let A' := closedImmersionNormalCoordinateChange X Y i m d z' + (hv : v ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalTransition X Y i m d z z').source) : + AnalyticAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalTransition X Y i m d z z') v := by + let e := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z + let e' := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z' + let C := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) + let C' := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z') + let A := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z + let A' := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z' let y := e.symm v have hyv : y ∈ e.source := e.map_target hv.1 have hyv' : y ∈ e'.source := hv.2 @@ -112,7 +121,7 @@ theorem analyticAt_closedImmersionNormalTransition have hA' := (closedImmersionHolomorphicFlatteningChart_analytic X Y i m d z' y hyv').1 have hCC : AnalyticAt ℂ (fun w => C' (C.symm w)) (C y) := by - apply analyticAt_localChart_transition X d (Point.map i z) (Point.map i z') + apply _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_transition X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z') refine ⟨C.map_source hyC, ?_⟩ change C.symm (C y) ∈ C'.source rw [C.left_inv hyC] @@ -124,22 +133,23 @@ theorem analyticAt_closedImmersionNormalTransition exact hlast.comp (f := fun w => C' (C.symm (A.symm w))) (x := v) hmiddle /-- The inverse transition is holomorphic at the image of every source point. -/ -theorem analyticAt_closedImmersionNormalTransition_symm +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalTransition_symm (v : (Fin m → ℂ) × (Fin (d - m) → ℂ)) - (hv : v ∈ (closedImmersionNormalTransition X Y i m d z z').source) : - AnalyticAt ℂ (closedImmersionNormalTransition X Y i m d z z').symm - (closedImmersionNormalTransition X Y i m d z z' v) := - analyticAt_closedImmersionNormalTransition X Y i m d z' z - (closedImmersionNormalTransition X Y i m d z z' v) - ((closedImmersionNormalTransition X Y i m d z z').map_source hv) - -end AlgebraicGeometry.ComplexPoint + (hv : v ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalTransition X Y i m d z z').source) : + AnalyticAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalTransition X Y i m d z z').symm + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalTransition X Y i m d z z' v) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalTransition X Y i m d z' z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalTransition X Y i m d z z' v) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalTransition X Y i m d z z').map_source hv) + +end ComplexPoint +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology Filter +open _root_.CategoryTheory _root_.Topology Filter namespace OpenPartialHomeomorph @@ -147,74 +157,80 @@ variable {E F : Type*} [NormedAddCommGroup E] [NormedSpace ℂ E] [NormedAddCommGroup F] [NormedSpace ℂ F] [CompleteSpace E] [CompleteSpace F] (e : OpenPartialHomeomorph E F) -@[simp] theorem biAnalyticRestrict_apply (x : E) : e.biAnalyticRestrict x = e x := rfl -@[simp] theorem biAnalyticRestrict_symm_apply (y : F) : e.biAnalyticRestrict.symm y = e.symm y := rfl +@[simp] theorem biAnalyticRestrict_apply (x : E) : (_root_.OAI.AlgebraicGeometry.ClosedImmersion.HolomorphicCharts.OpenPartialHomeomorph.biAnalyticRestrict e) x = e x := rfl +@[simp] theorem biAnalyticRestrict_symm_apply (y : F) : (_root_.OAI.AlgebraicGeometry.ClosedImmersion.HolomorphicCharts.OpenPartialHomeomorph.biAnalyticRestrict e).symm y = e.symm y := rfl end OpenPartialHomeomorph -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) [SmoothOfRelativeDimension m Y.hom] [SmoothOfRelativeDimension d X.hom] - [IsClosedImmersion i.left] (z : ComplexPoint Y) - -theorem closedImmersionNormalCoordinateChange_mem_source : - localChart X d (Point.map i z) (Point.map i z) ∈ - (closedImmersionNormalCoordinateChange X Y i m d z).source := - ⟨closedImmersionNormalChart_mem_target X Y i m d z, trivial⟩ - -@[simp] theorem closedImmersionNormalCoordinateChange_center : - closedImmersionNormalCoordinateChange X Y i m d z - (localChart X d (Point.map i z) (Point.map i z)) = - (localChart Y m z z, 0) := by - change closedImmersionNormalCoordinatesLinearEquiv X Y i m d z - ((closedImmersionNormalChart X Y i m d z).symm _) = _ - simp [closedImmersionNormalCoordinatesLinearEquiv] - -theorem analyticAt_closedImmersionNormalCoordinateChange : - AnalyticAt ℂ (closedImmersionNormalCoordinateChange X Y i m d z) - (localChart X d (Point.map i z) (Point.map i z)) := - ((closedImmersionNormalCoordinatesLinearEquiv X Y i m d z).toContinuousLinearMap.analyticAt - _).comp (analyticAt_closedImmersionNormalChart_symm X Y i m d z) - -theorem analyticAt_closedImmersionNormalCoordinateChange_symm : - AnalyticAt ℂ (closedImmersionNormalCoordinateChange X Y i m d z).symm - (localChart Y m z z, 0) := by - let K := closedImmersionNormalCoordinatesLinearEquiv X Y i m d z - have hK : K.symm (localChart Y m z z, 0) = (localChart Y m z z, 0) := by - simp [K, closedImmersionNormalCoordinatesLinearEquiv] - have hA' : AnalyticAt ℂ (closedImmersionNormalChart X Y i m d z) - (K.symm (localChart Y m z z, 0)) := hK ▸ analyticAt_closedImmersionNormalChart X Y i m d z + [IsClosedImmersion i.left] (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) + +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange_mem_source : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z).source := + ⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart_mem_target X Y i m d z, trivial⟩ + +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange_center : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z)) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0) := by + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinatesLinearEquiv X Y i m d z + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z).symm _) = _ + simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinatesLinearEquiv] + +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalCoordinateChange : + AnalyticAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z)) := + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinatesLinearEquiv X Y i m d z).toContinuousLinearMap.analyticAt + _).comp (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalChart_symm X Y i m d z) + +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalCoordinateChange_symm : + AnalyticAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z).symm + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0) := by + let K := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinatesLinearEquiv X Y i m d z + have hK : K.symm (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0) = (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0) := by + simp [K, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinatesLinearEquiv] + have hA' : AnalyticAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z) + (K.symm (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0)) := hK ▸ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalChart X Y i m d z exact hA'.comp (K.symm.toContinuousLinearMap.analyticAt _) -@[simp] theorem closedImmersionHolomorphicFlatteningChart_apply (y : ComplexPoint X) : - closedImmersionHolomorphicFlatteningChart X Y i m d z y = - closedImmersionStandardFlatteningChart X Y i m d z y := rfl +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart_apply (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z y = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart X Y i m d z y := rfl -@[simp] theorem closedImmersionHolomorphicFlatteningChart_symm_apply +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart_symm_apply (v : (Fin m → ℂ) × (Fin (d - m) → ℂ)) : - (closedImmersionHolomorphicFlatteningChart X Y i m d z).symm v = - (localChart X d (Point.map i z)).symm - ((closedImmersionNormalCoordinateChange X Y i m d z).symm v) := rfl - -theorem closedImmersionHolomorphicFlatteningChart_mem_source : - Point.map i z ∈ - (closedImmersionHolomorphicFlatteningChart X Y i m d z).source := by - refine ⟨⟨mem_localChart_source X d (Point.map i z), ?_⟩, - closedImmersionStandardFlatteningChart_mem_source X Y i m d z⟩ - apply (OpenPartialHomeomorph.biAnalyticRestrict_mem_source_iff _ _).mpr - refine ⟨closedImmersionNormalCoordinateChange_mem_source X Y i m d z, - analyticAt_closedImmersionNormalCoordinateChange X Y i m d z, ?_⟩ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).symm v = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z)).symm + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z).symm v) := rfl + +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart_mem_source : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).source := by + refine ⟨⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z), ?_⟩, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_mem_source X Y i m d z⟩ + apply (_root_.OAI.AlgebraicGeometry.ClosedImmersion.HolomorphicChartsAt.OpenPartialHomeomorph.biAnalyticRestrict_mem_source_iff _ _).mpr + refine ⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange_mem_source X Y i m d z, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalCoordinateChange X Y i m d z, ?_⟩ simp only [OpenPartialHomeomorph.symm_symm] - rw [closedImmersionNormalCoordinateChange_center] - exact analyticAt_closedImmersionNormalCoordinateChange_symm X Y i m d z + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange_center] + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalCoordinateChange_symm X Y i m d z + +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart_center : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_center X Y i m d z -@[simp] theorem closedImmersionHolomorphicFlatteningChart_center : - closedImmersionHolomorphicFlatteningChart X Y i m d z (Point.map i z) = - (localChart Y m z z, 0) := - closedImmersionStandardFlatteningChart_center X Y i m d z +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.ClosedImmersion.HolomorphicChartsAt diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/NormalCoordinates.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/NormalCoordinates.lean index e8c0b9027d..3141fb7212 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/NormalCoordinates.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/NormalCoordinates.lean @@ -1,10 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.ClosedImmersion.NormalCoordinates +import HodgeConjecture.Definitions.AlgebraicGeometry.ClosedImmersion.NormalCoordinates + +namespace OAI.AlgebraicGeometry.ClosedImmersion.NormalCoordinatesAt + +open _root_.AlgebraicGeometry /-! # Normal coordinates for smooth closed immersions @@ -13,77 +18,83 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicGeometry.ClosedImmersion.NormalCoordinates`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology Filter +open _root_.CategoryTheory _root_.Topology Filter -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) [SmoothOfRelativeDimension m Y.hom] [SmoothOfRelativeDimension d X.hom] - [IsClosedImmersion i.left] (z : ComplexPoint Y) + [IsClosedImmersion i.left] (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) /-- The normal parametrization is complex analytic at its center. -/ -theorem analyticAt_closedImmersionNormalChart : - AnalyticAt ℂ (closedImmersionNormalChart X Y i m d z) - (localChart Y m z z, 0) := by - let P := closedImmersionDerivativeProjection X Y i m d z - exact ((analyticAt_inclusionInComplexCharts X Y i m d z).comp +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalChart : + AnalyticAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0) := by + let P := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection X Y i m d z + exact ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_inclusionInComplexCharts X Y i m d z).comp (f := (ContinuousLinearMap.fst ℂ (Fin m → ℂ) P.ker)) - (x := (localChart Y m z z, 0)) + (x := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0)) ((ContinuousLinearMap.fst ℂ (Fin m → ℂ) P.ker).analyticAt _)).add ((P.ker.subtypeL.analyticAt _).comp ((ContinuousLinearMap.snd ℂ (Fin m → ℂ) P.ker).analyticAt _)) /-- The inverse normal coordinates are complex analytic as well, by the analytic inverse function theorem applied to the invertible complex derivative. -/ -theorem analyticAt_closedImmersionNormalChart_symm : - AnalyticAt ℂ (closedImmersionNormalChart X Y i m d z).symm - (localChart X d (Point.map i z) (Point.map i z)) := by - let P := closedImmersionDerivativeProjection X Y i m d z - let e := closedImmersionNormalChart X Y i m d z - have ha := analyticAt_inclusionInComplexCharts X Y i m d z - have hd := ha.hasStrictFDerivAt.add_kernel P - (closedImmersionDerivativeProjection_leftInverse X Y i m d z) - have hder : fderiv ℂ e (localChart Y m z z, 0) = - ((fderiv ℂ (inclusionInComplexCharts X Y i m d z) - (localChart Y m z z)).splitKernelEquiv P - (closedImmersionDerivativeProjection_leftInverse X Y i m d z)).toContinuousLinearMap := +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalChart_symm : + AnalyticAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z).symm + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z)) := by + let P := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection X Y i m d z + let e := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z + have ha := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_inclusionInComplexCharts X Y i m d z + have hd := (_root_.OAI.Analysis.Foundations.SplitDerivativeNormalChart.HasStrictFDerivAt.add_kernel ha.hasStrictFDerivAt) P + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection_leftInverse X Y i m d z) + have hder : fderiv ℂ e (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0) = + ((_root_.OAI.Analysis.Foundations.SplitDerivativeNormalChart.ContinuousLinearMap.splitKernelEquiv (fderiv ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z))) P + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionDerivativeProjection_leftInverse X Y i m d z)).toContinuousLinearMap := hd.hasFDerivAt.fderiv have h := e.analyticAt_symm' - (closedImmersionNormalChart_mem_source X Y i m d z) - (analyticAt_closedImmersionNormalChart X Y i m d z) hder - simpa only [e, closedImmersionNormalChart_apply, Submodule.coe_zero, add_zero, - inclusionInComplexCharts_at_center] using h - -theorem closedImmersionFlatteningChart_mem_source : - Point.map i z ∈ - (closedImmersionFlatteningChart X Y i m d z).source := - ⟨⟨mem_localChart_source X d (Point.map i z), - closedImmersionNormalChart_mem_target X Y i m d z⟩, - (exists_open_normalCriterion X Y i m d z).choose_spec.2.1⟩ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart_mem_source X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalChart X Y i m d z) hder + simpa only [e, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart_apply, Submodule.coe_zero, add_zero, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.inclusionInComplexCharts_at_center] using h + +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart_mem_source : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart X Y i m d z).source := + ⟨⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source X d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z), + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart_mem_target X Y i m d z⟩, + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_open_normalCriterion X Y i m d z).choose_spec.2.1⟩ /-- The chart flattens the whole geometric support. -/ -theorem closedImmersionFlatteningChart_mem_range_iff (y : ComplexPoint X) - (hy : y ∈ (closedImmersionFlatteningChart X Y i m d z).source) : - y ∈ Set.range (Point.map i) ↔ - (closedImmersionFlatteningChart X Y i m d z y).2 = 0 := - (exists_open_normalCriterion X Y i m d z).choose_spec.2.2 y hy.2 - -theorem closedImmersionStandardFlatteningChart_mem_source : - Point.map i z ∈ - (closedImmersionStandardFlatteningChart X Y i m d z).source := by - rw [closedImmersionStandardFlatteningChart_source] - exact closedImmersionFlatteningChart_mem_source X Y i m d z +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart_mem_range_iff (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hy : y ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart X Y i m d z).source) : + y ∈ Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) ↔ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart X Y i m d z y).2 = 0 := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_open_normalCriterion X Y i m d z).choose_spec.2.2 y hy.2 + +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_mem_source : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart X Y i m d z).source := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_source] + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart_mem_source X Y i m d z /-- The support is exactly the zero-normal plane throughout the chart source. -/ -theorem closedImmersionStandardFlatteningChart_mem_range_iff (y : ComplexPoint X) - (hy : y ∈ (closedImmersionStandardFlatteningChart X Y i m d z).source) : - y ∈ Set.range (Point.map i) ↔ - (closedImmersionStandardFlatteningChart X Y i m d z y).2 = 0 := by - rw [closedImmersionStandardFlatteningChart_source] at hy - simpa only [closedImmersionStandardFlatteningChart_apply, ContinuousLinearEquiv.map_eq_zero_iff] using - closedImmersionFlatteningChart_mem_range_iff X Y i m d z y hy - -end AlgebraicGeometry.ComplexPoint +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_mem_range_iff (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hy : y ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart X Y i m d z).source) : + y ∈ Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) ↔ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart X Y i m d z y).2 = 0 := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_source] at hy + simpa only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_apply, ContinuousLinearEquiv.map_eq_zero_iff] using + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionFlatteningChart_mem_range_iff X Y i m d z y hy + +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.ClosedImmersion.NormalCoordinatesAt diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/ResidueField.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/ResidueField.lean index 6eb3b581f4..d873bf876c 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/ResidueField.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/ResidueField.lean @@ -12,13 +12,19 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.AlgebraicGeometry.Morphisms.ClosedImmersion +import Mathlib.AlgebraicGeometry.Morphisms.ClosedImmersion import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.ClosedImmersion.ResidueField + +open _root_.AlgebraicGeometry +open _root_.AlgebraicGeometry.IsClosedImmersion + /-! # Residue fields and local sections along a closed immersion @@ -30,11 +36,12 @@ points, the restriction of a section defined on an open set of the ambient schem lifting is what transports the analytic topology across a closed immersion. -/ -@[expose] public section +section -open CategoryTheory Opposite TopologicalSpace Topology +open _root_.CategoryTheory Opposite _root_.TopologicalSpace _root_.Topology -namespace AlgebraicGeometry.IsClosedImmersion +section +namespace IsClosedImmersion variable {A B : Scheme} {i : A ⟶ B} @@ -94,4 +101,9 @@ lemma exists_local_ambient_lift [IsClosedImmersion i] (U : B.Opens) simp only [← ConcreteCategory.comp_apply, i.c.naturality] -end AlgebraicGeometry.IsClosedImmersion +end IsClosedImmersion +end + +end + +end OAI.AlgebraicGeometry.ClosedImmersion.ResidueField diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/SourceOpen.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/SourceOpen.lean index 6ef0d7bf27..5b4c82dfb3 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/SourceOpen.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ClosedImmersion/SourceOpen.lean @@ -1,13 +1,18 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.ClosedImmersion.SourceOpen +import HodgeConjecture.Definitions.AlgebraicGeometry.ClosedImmersion.SourceOpen import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.ClosedImmersion.SourceOpenIs + +open _root_.AlgebraicGeometry + /-! # Restricting the source of a closed immersion without losing closedness @@ -15,20 +20,26 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicGeometry.ClosedImmersion.SourceOpen`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint /-- The actual immersion image formula, with structure-map compatibility bundled in `i`. -/ -theorem range_map_of_isImmersion_of_comm (X Y : Over (Spec ↧ℂ)) +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.range_map_of_isImmersion_of_comm (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) [IsImmersion i.left] [LocallyOfFiniteType X.hom] : - Set.range (Point.map i) = - (Point.underlying : ComplexPoint X → X.left) ⁻¹' Set.range i.left := by + Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X → X.left) ⁻¹' Set.range i.left := by let : LocallyOfFiniteType Y.hom := by rw [← i.w] infer_instance - exact range_map_of_isImmersion X i + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.range_map_of_isImmersion X i + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.ClosedImmersion.SourceOpenIs diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SingularComparison.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SingularComparison.lean index dd63b24364..848028406a 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SingularComparison.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SingularComparison.lean @@ -12,19 +12,24 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.Cochain -public import Mathlib.Algebra.Homology.Embedding.CochainComplex -public import Mathlib.Algebra.Homology.Embedding.Extend -public import Mathlib.AlgebraicGeometry.Morphisms.Smooth +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.Cochain +import Mathlib.Algebra.Homology.Embedding.CochainComplex +import Mathlib.Algebra.Homology.Embedding.Extend +import Mathlib.AlgebraicGeometry.Morphisms.Smooth import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Manifold import Mathlib.Algebra.Homology.Embedding.ExtendHomology +namespace OAI.AlgebraicGeometry.Cohomology.SingularComparison + +open _root_.AlgebraicGeometry + /-! # Singular cochains on smooth complex-point spaces @@ -34,90 +39,96 @@ therefore supplies local primitives for singular cochains. Together with the exp calculation, this proves that the constant-sheaf-to-singular-cochain map is a quasi-isomorphism. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory TopologicalSpace +open _root_.CategoryTheory _root_.TopologicalSpace -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X : Over (Spec ↧ℂ)) (d : ℕ) /-- The constant-to-singular-cochain comparison on a smooth complex-point space is a quasi-isomorphism in positive degrees. -/ -lemma constantsToSingularCochain_quasiIsoAt_succ +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToSingularCochain_quasiIsoAt_succ [IsIntegral X.left] [Smooth X.hom] (R : Type) [CommRing R] (n : ℕ) : QuasiIsoAt - (AlgebraicTopology.Singular.constantsToSingularCochainSheafComplex R - (TopCat.of (ComplexPoint X))) (n + 1) := by - apply AlgebraicTopology.Singular.constantsToSingularCochainSheafComplex_quasiIsoAt_succ_of_contractibleOpenBasis - exact fun x U hxU ↦ exists_contractibleOpen_le X x U hxU + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex R + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) (n + 1) := by + apply _root_.OAI.AlgebraicTopology.Singular.SheafCochainAt.constantsToSingularCochainSheafComplex_quasiIsoAt_succ_of_contractibleOpenBasis + exact fun x U hxU ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_contractibleOpen_le X x U hxU /-- The constant-to-singular-cochain comparison on a smooth complex-point space is a quasi-isomorphism in degree zero. -/ -lemma constantsToSingularCochain_quasiIsoAt_zero +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToSingularCochain_quasiIsoAt_zero [IsIntegral X.left] [Smooth X.hom] (R : Type) [CommRing R] : QuasiIsoAt - (AlgebraicTopology.Singular.constantsToSingularCochainSheafComplex R - (TopCat.of (ComplexPoint X))) 0 := by - let : LocallyPathConnectedSpace (ComplexPoint X) := - locallyPathConnectedSpace X + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex R + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) 0 := by + let : LocallyPathConnectedSpace (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.locallyPathConnectedSpace X exact - AlgebraicTopology.Singular.constantsToSingularCochainSheafComplex_quasiIsoAt_zero - R (TopCat.of (ComplexPoint X)) + _root_.OAI.AlgebraicTopology.Singular.SheafCochainAt.constantsToSingularCochainSheafComplex_quasiIsoAt_zero + R (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) /-- On the analytic space of a smooth complex scheme, the constant sheaf is resolved by the sheafified singular-cochain complex. -/ -lemma constantsToSingularCochain_quasiIso +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToSingularCochain_quasiIso [IsIntegral X.left] [Smooth X.hom] (R : Type) [CommRing R] : QuasiIso - (AlgebraicTopology.Singular.constantsToSingularCochainSheafComplex R - (TopCat.of (ComplexPoint X))) := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex R + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) := by refine ⟨fun n ↦ ?_⟩ cases n with - | zero => exact constantsToSingularCochain_quasiIsoAt_zero X R - | succ n => exact constantsToSingularCochain_quasiIsoAt_succ X R n + | zero => exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToSingularCochain_quasiIsoAt_zero X R + | succ n => exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToSingularCochain_quasiIsoAt_succ X R n /-- The sheafified singular-cochain complex, extended by zero to integer degrees. -/ -def singularCochainSheafComplexInt (R : Type) [CommRing R] : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.singularCochainSheafComplexInt (R : Type) [CommRing R] : CochainComplex - (TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X))) ℤ := - (AlgebraicTopology.Singular.singularCochainSheafComplex R - (TopCat.of (ComplexPoint X))).extend ComplexShape.embeddingUpNat + (TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) ℤ := + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex R + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))).extend ComplexShape.embeddingUpNat instance (R : Type) [CommRing R] : - CochainComplex.IsStrictlyGE (singularCochainSheafComplexInt X R) 0 := by - unfold singularCochainSheafComplexInt + CochainComplex.IsStrictlyGE (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.singularCochainSheafComplexInt X R) 0 := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.singularCochainSheafComplexInt infer_instance /-- The constant coefficient sheaf complex, extended by zero to integer degrees. -/ -def constantCoefficientSheafComplexInt (R : Type) [CommRing R] : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantCoefficientSheafComplexInt (R : Type) [CommRing R] : CochainComplex - (TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X))) ℤ := + (TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) ℤ := ((CochainComplex.single₀ - (TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X)))).obj - 𝓒(↧(ComplexPoint X); R)).extend ComplexShape.embeddingUpNat + (TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))).obj + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); R)).extend ComplexShape.embeddingUpNat /-- The constant-to-singular comparison, extended by zero to integer degrees. -/ -def constantsToSingularCochainComplexInt (R : Type) [CommRing R] : - constantCoefficientSheafComplexInt X R ⟶ - singularCochainSheafComplexInt X R := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToSingularCochainComplexInt (R : Type) [CommRing R] : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantCoefficientSheafComplexInt X R ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.singularCochainSheafComplexInt X R := HomologicalComplex.extendMap - (AlgebraicTopology.Singular.constantsToSingularCochainSheafComplex R - (TopCat.of (ComplexPoint X))) ComplexShape.embeddingUpNat + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex R + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) ComplexShape.embeddingUpNat /-- The integer-indexed constant-to-singular comparison remains a quasi-isomorphism. -/ -lemma constantsToSingularCochainComplexInt_quasiIso +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToSingularCochainComplexInt_quasiIso [IsIntegral X.left] [Smooth X.hom] (R : Type) [CommRing R] : - QuasiIso (constantsToSingularCochainComplexInt X R) := by + QuasiIso (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToSingularCochainComplexInt X R) := by exact (HomologicalComplex.quasiIso_extendMap_iff - (AlgebraicTopology.Singular.constantsToSingularCochainSheafComplex R - (TopCat.of (ComplexPoint X))) ComplexShape.embeddingUpNat).mpr - (constantsToSingularCochain_quasiIso X R) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex R + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) ComplexShape.embeddingUpNat).mpr + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToSingularCochain_quasiIso X R) + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.Cohomology.SingularComparison diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SingularSheafComparison.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SingularSheafComparison.lean index 7a1022360c..cbcdc2b2bb 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SingularSheafComparison.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SingularSheafComparison.lean @@ -12,11 +12,18 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.Filtration -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cohomology.SingularComparison +import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.Filtration +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cohomology.SingularComparison + +namespace OAI.AlgebraicGeometry.Cohomology.SingularSheafComparison + +open scoped OAI.AlgebraicGeometry.Hodge.Filtration.ComplexPoint + +open _root_.AlgebraicGeometry /-! # Singular and constant-sheaf comparison @@ -26,70 +33,76 @@ the sheafified rational singular-cochain complex. Localizing at quasi-isomorphis canonical comparison equivalence in every cohomological degree. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory TopologicalSpace +open _root_.CategoryTheory _root_.TopologicalSpace -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X : Over (Spec ↧ℂ)) /-- The rational constant-sheaf comparison with the integer-indexed singular-cochain resolution. -/ -def rationalToSingularCochainComplexInt : - constantFieldSheafComplexInt ℚ X ⟶ - singularCochainSheafComplexInt X ℚ := - constantsToSingularCochainComplexInt X ℚ +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalToSingularCochainComplexInt : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt ℚ X ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.singularCochainSheafComplexInt X ℚ := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToSingularCochainComplexInt X ℚ /-- The rational constant-to-singular comparison is a quasi-isomorphism on a smooth complex-point space. -/ -lemma rationalToSingularCochainComplexInt_quasiIso +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalToSingularCochainComplexInt_quasiIso [IsIntegral X.left] [Smooth X.hom] : - QuasiIso (rationalToSingularCochainComplexInt X) := by - exact constantsToSingularCochainComplexInt_quasiIso X ℚ + QuasiIso (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalToSingularCochainComplexInt X) := by + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToSingularCochainComplexInt_quasiIso X ℚ /-- Hypercohomology of the integer-indexed rational singular-cochain sheaf complex. -/ -abbrev RationalSingularCochainHypercohomology (n : ℤ) : Type 1 := - Hypercohomology X (singularCochainSheafComplexInt X ℚ) n +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.RationalSingularCochainHypercohomology (n : ℤ) : Type 1 := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.Hypercohomology X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.singularCochainSheafComplexInt X ℚ) n /-- Hypercohomology of the rational constant sheaf complex is canonically additively equivalent to the hypercohomology of its singular-cochain resolution. -/ -def rationalHypercohomologySingularCochainAddEquiv +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalHypercohomologySingularCochainAddEquiv [IsIntegral X.left] [Smooth X.hom] (n : ℤ) : - Hypercohomology X (constantFieldSheafComplexInt ℚ X) n ≃+ - RationalSingularCochainHypercohomology X n where + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.Hypercohomology X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt ℚ X) n ≃+ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.RationalSingularCochainHypercohomology X n where toEquiv := Localization.SmallShiftedHom.postcompEquiv - (rationalToSingularCochainComplexInt X) - (rationalToSingularCochainComplexInt_quasiIso X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalToSingularCochainComplexInt X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalToSingularCochainComplexInt_quasiIso X) map_add' α β := - (hypercohomologyMap X - (rationalToSingularCochainComplexInt X) n).map_add α β + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalToSingularCochainComplexInt X) n).map_add α β @[simp] -lemma rationalHypercohomologySingularCochainAddEquiv_apply +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalHypercohomologySingularCochainAddEquiv_apply [IsIntegral X.left] [Smooth X.hom] (n : ℤ) - (α : Hypercohomology X (constantFieldSheafComplexInt ℚ X) n) : - rationalHypercohomologySingularCochainAddEquiv X n α = - hypercohomologyMap X - (rationalToSingularCochainComplexInt X) n α := + (α : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.Hypercohomology X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexInt ℚ X) n) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalHypercohomologySingularCochainAddEquiv X n α = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalToSingularCochainComplexInt X) n α := rfl /-- Rational constant-sheaf cohomology is canonically additively equivalent to the hypercohomology of its singular-cochain resolution. -/ -def rationalCohomologySingularCochainAddEquiv +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalCohomologySingularCochainAddEquiv [IsIntegral X.left] [Smooth X.hom] (n : ℕ) : - H^n(X; ℚ) ≃+ RationalSingularCochainHypercohomology X n := - (hypercohomologyAddEquivConstantCohomology ℚ X n).symm.trans - (rationalHypercohomologySingularCochainAddEquiv X n) + H^n(X; ℚ) ≃+ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.RationalSingularCochainHypercohomology X n := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology ℚ X n).symm.trans + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalHypercohomologySingularCochainAddEquiv X n) @[simp] -lemma rationalCohomologySingularCochainAddEquiv_apply +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalCohomologySingularCochainAddEquiv_apply [IsIntegral X.left] [Smooth X.hom] (n : ℕ) (α : H^n(X; ℚ)) : - rationalCohomologySingularCochainAddEquiv X n α = - hypercohomologyMap X (rationalToSingularCochainComplexInt X) n - ((hypercohomologyAddEquivConstantCohomology ℚ X n).symm α) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalCohomologySingularCochainAddEquiv X n α = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.rationalToSingularCochainComplexInt X) n + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyAddEquivConstantCohomology ℚ X n).symm α) := rfl -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Cohomology.SingularSheafComparison diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SupportSingularGlobal.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SupportSingularGlobal.lean index 572a53bfe7..aaf2622797 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SupportSingularGlobal.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SupportSingularGlobal.lean @@ -12,13 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.Algebra.Homology.MapExtendNaturality -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.GlobalSections -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.GlobalRestriction -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeCochainCone +import HodgeConjecture.Lemmas.Algebra.Homology.MapExtendNaturality +import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.GlobalSections +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.GlobalRestriction +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeCochainCone + +namespace OAI.AlgebraicGeometry.Cohomology.SupportSingularGlobal + /-! # Global singular restriction and relative cohomology @@ -26,11 +30,15 @@ This file identifies restriction on global raw singular cochains with the algebr the singular-chain inclusion of a topological pair. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace -namespace AlgebraicTopology.Singular +namespace AlgebraicTopology +open _root_.AlgebraicTopology +namespace Singular +open _root_.AlgebraicTopology +open _root_.OAI.AlgebraicTopology.Singular universe u v @@ -38,21 +46,26 @@ variable (R : Type) [CommRing R] (X : TopCat.{0}) /-- The raw global singular-cochain complex, extended by zero to integer degrees. -/ def globalRawSingularCochainComplexInt : CochainComplex AddCommGrpCat ℤ := - (globalRawSingularCochainComplex R X).extend ComplexShape.embeddingUpNat + (_root_.OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain.globalRawSingularCochainComplex R X).extend ComplexShape.embeddingUpNat /-- The raw global singular-cochain pushforward from a subset, extended by zero to integer degrees. -/ def globalRawPushforwardSingularCochainComplexInt (A : Set X) : CochainComplex AddCommGrpCat ℤ := - (globalRawPushforwardSingularCochainComplex R - (topologicalSubsetInclusion X A)).extend ComplexShape.embeddingUpNat + (_root_.OAI.AlgebraicTopology.Singular.GlobalRestriction.globalRawPushforwardSingularCochainComplex R + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X A)).extend ComplexShape.embeddingUpNat /-- Raw global restriction, extended by zero to integer degrees. -/ def globalRawSingularRestrictionInt (A : Set X) : globalRawSingularCochainComplexInt R X ⟶ globalRawPushforwardSingularCochainComplexInt R X A := HomologicalComplex.extendMap - (globalRawSingularRestriction R (topologicalSubsetInclusion X A)) + (_root_.OAI.AlgebraicTopology.Singular.GlobalRestriction.globalRawSingularRestriction R (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X A)) ComplexShape.embeddingUpNat -end AlgebraicTopology.Singular +end Singular +end AlgebraicTopology + +end + +end OAI.AlgebraicGeometry.Cohomology.SupportSingularGlobal diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SupportedSingularModel.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SupportedSingularModel.lean index 4c8ddf5283..4fd6f31326 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SupportedSingularModel.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cohomology/SupportedSingularModel.lean @@ -1,12 +1,17 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.SupportedSingularModel +import HodgeConjecture.Definitions.AlgebraicGeometry.Cohomology.SupportedSingularModel + +namespace OAI.AlgebraicGeometry.Cohomology.SupportedSingularHomology + +open _root_.AlgebraicGeometry /-! # Supported singular models on smooth projective complex varieties @@ -17,12 +22,13 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory TopologicalSpace -open AlgebraicTopology.Singular +open _root_.CategoryTheory _root_.TopologicalSpace +open _root_.OAI.AlgebraicTopology.Singular -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X : Over (Spec ↧ℂ)) [IsIntegral X.left] [Smooth X.hom] @@ -31,38 +37,41 @@ variable (X : Over (Spec ↧ℂ)) cochain map sends the sheafified rational singular cochain complex on `Y` to the chosen injective resolution of the constant rational sheaf. It extends the identity on constant cochains and uses local contractibility of `Y`. -/ -def complexSingularToAmbientInjective : - rationalSingularCochainComplex (TopCat.of (ComplexPoint X)) ⟶ - ambientRationalInjectiveComplex X := - singularToConstantInjectiveComplex (TopCat.of (ComplexPoint X)) - (exists_contractibleOpen_le X) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSingularToAmbientInjective : + _root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.rationalSingularCochainComplex (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X := + _root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.singularToConstantInjectiveComplex (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_contractibleOpen_le X) -instance complexSingularToAmbientInjective_quasiIso : - QuasiIso (complexSingularToAmbientInjective X) := - singularToConstantInjectiveComplex_quasiIso _ _ +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSingularToAmbientInjective_quasiIso : + QuasiIso (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSingularToAmbientInjective X) := + _root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.singularToConstantInjectiveComplex_quasiIso _ _ -variable [IsProjective X.hom] +variable [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] /-- Let `X` be a smooth integral scheme over `ℂ`, and give `Y = X(ℂ)` its analytic topology. Assume also that `X` is projective, and let `U,V ⊆ Y` be open. The comparison from sheafified rational singular cochains `C` to a constant-sheaf injective resolution `I` induces this isomorphism `H^n(Γ_{Y \ U}(V,C)) ≅ H^n(Γ_{Y \ U}(V,I))` for every integer `n`. In each complex, sections over `V` are required to vanish on `V ∩ U`. -/ -def complexSupportedSingularInjectiveHomologyIso - (U V : Opens (ComplexPoint X)) (n : ℤ) : - ((((TopCat.Sheaf.supportEvaluation (TopCat.of (ComplexPoint X)) V).mapHomologicalComplex +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportedSingularInjectiveHomologyIso + (U V : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (n : ℤ) : + ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) V).mapHomologicalComplex ℤᵘᵖ).obj - (supportedRationalSingularCochainComplex (TopCat.of (ComplexPoint X)) U))).homology n ≅ - ((((TopCat.Sheaf.supportEvaluation (TopCat.of (ComplexPoint X)) V).mapHomologicalComplex + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) U))).homology n ≅ + ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) V).mapHomologicalComplex ℤᵘᵖ).obj - (((TopCat.Sheaf.sheafSectionsSupportedOutside - (TopCat.of (ComplexPoint X)) U).mapHomologicalComplex ℤᵘᵖ).obj - (ambientRationalInjectiveComplex X)))).homology n := - letI : ∀ W : Opens (ComplexPoint X), ParacompactSpace W := - openParacompactSpace X - supportedSingularInjectiveHomologyIso (TopCat.of (ComplexPoint X)) - (exists_contractibleOpen_le X) U V n + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) U).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X)))).homology n := + letI : ∀ W : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X), ParacompactSpace W := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openParacompactSpace X + _root_.OAI.AlgebraicTopology.Support.SingularFlasqueOn.Singular.supportedSingularInjectiveHomologyIso (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_contractibleOpen_le X) U V n -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end end + +end OAI.AlgebraicGeometry.Cohomology.SupportedSingularHomology diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AffineScheme.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AffineScheme.lean index 9265b267e6..decdf90d24 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AffineScheme.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AffineScheme.lean @@ -12,14 +12,19 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AffineSpace import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import Mathlib.Logic.Equiv.PartialEquiv +namespace OAI.AlgebraicGeometry.ComplexPoint.AffineScheme + +open _root_.AlgebraicGeometry + /-! # Complex points of affine schemes @@ -29,36 +34,37 @@ continuity in the reverse direction uses the localization description of regular principal opens. -/ -@[expose] public section +section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicGeometry.ComplexPoint +section +section -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point noncomputable section variable (R : Type) [CommRing R] [Algebra ℂ R] /-- The topology of pointwise convergence on complex algebra homomorphisms. -/ -noncomputable instance affineAlgebraHomTopology : TopologicalSpace (R →ₐ[ℂ] ℂ) := +noncomputable instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineAlgebraHomTopology : TopologicalSpace (R →ₐ[ℂ] ℂ) := TopologicalSpace.induced (fun φ : R →ₐ[ℂ] ℂ ↦ (φ : R → ℂ)) inferInstance /-- The structure morphism of an affine complex scheme. -/ -abbrev affineSpecStructureMap : Spec ↧R ⟶ Spec ↧ℂ := +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap : Spec ↧R ⟶ Spec ↧ℂ := Spec.map (CommRingCat.ofHom (algebraMap ℂ R)) /-- Complex points of `Spec R` correspond to complex algebra homomorphisms from `R` to `ℂ`. -/ -def affineSpecEquiv : - ComplexPoint (Over.mk (affineSpecStructureMap R)) ≃ (R →ₐ[ℂ] ℂ) where +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap R)) ≃ (R →ₐ[ℂ] ℂ) where toFun z := { toRingHom := (Spec.homEquiv z.left).hom commutes' c := by have hz := congrArg Spec.preimage (Over.w z) have hr : CommRingCat.ofHom (algebraMap ℂ R) ≫ Spec.preimage z.left = 𝟙 (CommRingCat.of ℂ) := by - simpa [affineSpecStructureMap, Spec.preimage_comp] using hz + simpa [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap, Spec.preimage_comp] using hz exact DFunLike.congr_fun (congrArg CommRingCat.Hom.hom hr) c } invFun φ := Over.homMk (Spec.map (CommRingCat.ofHom φ.toRingHom)) (by change Spec.map (CommRingCat.ofHom φ.toRingHom) ≫ @@ -72,11 +78,11 @@ def affineSpecEquiv : ext r simp [Spec.homEquiv_apply] -lemma affineSpecEquiv_apply - (z : ComplexPoint (Over.mk (affineSpecStructureMap R))) (r : R) : - affineSpecEquiv R z r = - evaluate ⊤ ((Scheme.ΓSpecIso ↧R).inv r) z := by - rw [evaluate_top_eq_appTop] +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv_apply + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap R))) (r : R) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R z r = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ ((Scheme.ΓSpecIso ↧R).inv r) z := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_top_eq_appTop] change (Spec.preimage z.left).hom r = (Scheme.ΓSpecIso ↧ℂ).hom (z.left.appTop ((Scheme.ΓSpecIso ↧R).inv r)) have h := Scheme.ΓSpecIso_naturality (Spec.preimage z.left) @@ -84,163 +90,168 @@ lemma affineSpecEquiv_apply ((Scheme.ΓSpecIso ↧R).inv r) simpa using h'.symm -lemma evaluate_affineSpecEquiv_symm_top (s : Γ(Spec ↧R, ⊤)) (φ : R →ₐ[ℂ] ℂ) : - evaluate ⊤ s ((affineSpecEquiv R).symm φ) = +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_affineSpecEquiv_symm_top (s : Γ(Spec ↧R, ⊤)) (φ : R →ₐ[ℂ] ℂ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ s ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm φ) = φ ((Scheme.ΓSpecIso ↧R).hom s) := by calc - evaluate ⊤ s ((affineSpecEquiv R).symm φ) = - evaluate ⊤ ((Scheme.ΓSpecIso ↧R).inv - ((Scheme.ΓSpecIso ↧R).hom s)) ((affineSpecEquiv R).symm φ) := by simp - _ = affineSpecEquiv R ((affineSpecEquiv R).symm φ) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ s ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm φ) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ ((Scheme.ΓSpecIso ↧R).inv + ((Scheme.ΓSpecIso ↧R).hom s)) ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm φ) := by simp + _ = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm φ) ((Scheme.ΓSpecIso ↧R).hom s) := - (affineSpecEquiv_apply R _ _).symm + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv_apply R _ _).symm _ = φ ((Scheme.ΓSpecIso ↧R).hom s) := by simp -lemma continuous_affineAlgebraHom_apply (r : R) : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply (r : R) : Continuous (fun φ : R →ₐ[ℂ] ℂ ↦ φ r) := (continuous_apply r).comp continuous_induced_dom -lemma continuous_affineSpecEquiv : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineSpecEquiv : @Continuous - (ComplexPoint (Over.mk (affineSpecStructureMap R))) - (R →ₐ[ℂ] ℂ) analyticTopology (affineAlgebraHomTopology R) - (affineSpecEquiv R) := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap R))) + (R →ₐ[ℂ] ℂ) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineAlgebraHomTopology R) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R) := by rw [continuous_induced_rng] exact continuous_pi fun r ↦ by - simpa only [Function.comp_apply, affineSpecEquiv_apply] using - continuous_evaluate_top (X := Over.mk (affineSpecStructureMap R)) + simpa only [Function.comp_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv_apply] using + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_evaluate_top (X := Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap R)) ((Scheme.ΓSpecIso ↧R).inv r) -lemma isOpen_affineSpecEquiv_symm_preimage_overOpen_basicOpen +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_affineSpecEquiv_symm_preimage_overOpen_basicOpen (s : Γ(Spec ↧R, ⊤)) : - IsOpen ((affineSpecEquiv R).symm ⁻¹' - overOpen ((Spec ↧R).basicOpen s)) := by - rw [show (affineSpecEquiv R).symm ⁻¹' - overOpen ((Spec ↧R).basicOpen s) = + IsOpen ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm ⁻¹' + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((Spec ↧R).basicOpen s)) := by + rw [show (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm ⁻¹' + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((Spec ↧R).basicOpen s) = {φ | φ ((Scheme.ΓSpecIso ↧R).hom s) ≠ 0} by ext φ - exact (mem_overOpen_basicOpen_iff_evaluate_ne_zero - (X := Over.mk (affineSpecStructureMap R)) (U := ⊤) - s ((affineSpecEquiv R).symm φ) trivial).trans - (Iff.of_eq (congrArg (· ≠ 0) (evaluate_affineSpecEquiv_symm_top R s φ)))] + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_basicOpen_iff_evaluate_ne_zero + (X := Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap R)) (U := ⊤) + s ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm φ) trivial).trans + (Iff.of_eq (congrArg (· ≠ 0) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_affineSpecEquiv_symm_top R s φ)))] exact isOpen_ne_fun - (continuous_affineAlgebraHom_apply R ((Scheme.ΓSpecIso ↧R).hom s)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply R ((Scheme.ΓSpecIso ↧R).hom s)) continuous_const /-- On an affine scheme, evaluation of a section on a principal open is locally a quotient of evaluations of global sections. -/ -lemma exists_evaluate_affine_basicOpen_eq_div {X : Over (Spec ↧ℂ)} [IsAffine X.left] +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_evaluate_affine_basicOpen_eq_div {X : Over (Spec ↧ℂ)} [IsAffine X.left] (f : Γ(X.left, ⊤)) (t : Γ(X.left, X.left.basicOpen f)) : ∃ (k : ℕ) (a : Γ(X.left, ⊤)), - ∀ z : ComplexPoint X, z ∈ overOpen (X.left.basicOpen f) → - evaluate (X.left.basicOpen f) t z = evaluate ⊤ a z / evaluate ⊤ f z ^ k := - exists_evaluate_basicOpen_eq_div (X := X) (isAffineOpen_top X.left) f t + ∀ z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X, z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen (X.left.basicOpen f) → + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate (X.left.basicOpen f) t z = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ a z / _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ f z ^ k := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.exists_evaluate_basicOpen_eq_div (X := X) (isAffineOpen_top X.left) f t -lemma exists_evaluate_affineSpec_basicOpen_eq_div +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_evaluate_affineSpec_basicOpen_eq_div (f : Γ(Spec ↧R, ⊤)) (t : Γ(Spec ↧R, (Spec ↧R).basicOpen f)) : ∃ (k : ℕ) (a : Γ(Spec ↧R, ⊤)), - ∀ z : ComplexPoint (Over.mk (affineSpecStructureMap R)), - z ∈ overOpen ((Spec ↧R).basicOpen f) → - evaluate ((Spec ↧R).basicOpen f) t z = - evaluate ⊤ a z / evaluate ⊤ f z ^ k := by - let : IsAffine (Over.mk (affineSpecStructureMap R)).left := + ∀ z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap R)), + z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((Spec ↧R).basicOpen f) → + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ((Spec ↧R).basicOpen f) t z = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ a z / _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ f z ^ k := by + let : IsAffine (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap R)).left := inferInstanceAs (IsAffine (Spec ↧R)) - exact exists_evaluate_affine_basicOpen_eq_div (X := Over.mk (affineSpecStructureMap R)) f t + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_evaluate_affine_basicOpen_eq_div (X := Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap R)) f t -lemma continuousOn_evaluate_affineSpec_basicOpen_equiv_symm +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuousOn_evaluate_affineSpec_basicOpen_equiv_symm (f : Γ(Spec ↧R, ⊤)) (t : Γ(Spec ↧R, (Spec ↧R).basicOpen f)) : ContinuousOn - (fun φ : R →ₐ[ℂ] ℂ ↦ evaluate ((Spec ↧R).basicOpen f) t - ((affineSpecEquiv R).symm φ)) - ((affineSpecEquiv R).symm ⁻¹' - overOpen ((Spec ↧R).basicOpen f)) := by - obtain ⟨k, a, h⟩ := exists_evaluate_affineSpec_basicOpen_eq_div R f t + (fun φ : R →ₐ[ℂ] ℂ ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ((Spec ↧R).basicOpen f) t + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm φ)) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm ⁻¹' + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((Spec ↧R).basicOpen f)) := by + obtain ⟨k, a, h⟩ := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_evaluate_affineSpec_basicOpen_eq_div R f t have ha : Continuous (fun φ : R →ₐ[ℂ] ℂ ↦ - evaluate ⊤ a ((affineSpecEquiv R).symm φ)) := by - simpa only [evaluate_affineSpecEquiv_symm_top] using - continuous_affineAlgebraHom_apply R ((Scheme.ΓSpecIso ↧R).hom a) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ a ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm φ)) := by + simpa only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_affineSpecEquiv_symm_top] using + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply R ((Scheme.ΓSpecIso ↧R).hom a) have hf : Continuous (fun φ : R →ₐ[ℂ] ℂ ↦ - evaluate ⊤ f ((affineSpecEquiv R).symm φ)) := by - simpa only [evaluate_affineSpecEquiv_symm_top] using - continuous_affineAlgebraHom_apply R ((Scheme.ΓSpecIso ↧R).hom f) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ f ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm φ)) := by + simpa only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_affineSpecEquiv_symm_top] using + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply R ((Scheme.ΓSpecIso ↧R).hom f) have hrat : ContinuousOn - (fun φ : R →ₐ[ℂ] ℂ ↦ evaluate ⊤ a ((affineSpecEquiv R).symm φ) / - evaluate ⊤ f ((affineSpecEquiv R).symm φ) ^ k) - ((affineSpecEquiv R).symm ⁻¹' - overOpen ((Spec ↧R).basicOpen f)) := + (fun φ : R →ₐ[ℂ] ℂ ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ a ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm φ) / + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ f ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm φ) ^ k) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm ⁻¹' + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((Spec ↧R).basicOpen f)) := ha.continuousOn.div (hf.pow k).continuousOn fun φ hφ ↦ - pow_ne_zero k ((mem_overOpen_basicOpen_iff_evaluate_ne_zero - (X := Over.mk (affineSpecStructureMap R)) (U := ⊤) f _ trivial).mp hφ) + pow_ne_zero k ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_basicOpen_iff_evaluate_ne_zero + (X := Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap R)) (U := ⊤) f _ trivial).mp hφ) exact hrat.congr fun φ hφ ↦ h _ hφ -lemma continuous_affineSpecEquiv_symm : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineSpecEquiv_symm : @Continuous (R →ₐ[ℂ] ℂ) - (ComplexPoint (Over.mk (affineSpecStructureMap R))) - (affineAlgebraHomTopology R) analyticTopology (affineSpecEquiv R).symm := by - rw [continuous_iff_analyticSubbasis] + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap R))) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineAlgebraHomTopology R) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.continuous_iff_analyticSubbasis] rintro W ⟨U, s, V, hV, rfl⟩ apply isOpen_iff_forall_mem_open.mpr rintro φ ⟨hφU, hφV⟩ obtain ⟨f, hfU, hφf⟩ := (isAffineOpen_top (Spec ↧R)).exists_basicOpen_le - ⟨((affineSpecEquiv R).symm φ).underlying, hφU⟩ trivial + ⟨((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm φ).underlying, hφU⟩ trivial let t := (Spec ↧R).presheaf.map (homOfLE hfU).op s - let N := (affineSpecEquiv R).symm ⁻¹' - overOpen ((Spec ↧R).basicOpen f) ∩ - (fun ψ : R →ₐ[ℂ] ℂ ↦ evaluate ((Spec ↧R).basicOpen f) t - ((affineSpecEquiv R).symm ψ)) ⁻¹' V + let N := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm ⁻¹' + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((Spec ↧R).basicOpen f) ∩ + (fun ψ : R →ₐ[ℂ] ℂ ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ((Spec ↧R).basicOpen f) t + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm ψ)) ⁻¹' V have hNopen : IsOpen N := - (continuousOn_evaluate_affineSpec_basicOpen_equiv_symm R f t).isOpen_inter_preimage - (isOpen_affineSpecEquiv_symm_preimage_overOpen_basicOpen R f) hV + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuousOn_evaluate_affineSpec_basicOpen_equiv_symm R f t).isOpen_inter_preimage + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_affineSpecEquiv_symm_preimage_overOpen_basicOpen R f) hV refine ⟨N, ?_, hNopen, ?_⟩ · rintro ψ ⟨hψf, hψV⟩ - have hψU : (affineSpecEquiv R).symm ψ ∈ overOpen U := hfU hψf + have hψU : (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm ψ ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U := hfU hψf refine ⟨hψU, ?_⟩ - change evaluate U s ((affineSpecEquiv R).symm ψ) ∈ V - rwa [evaluate_res hfU s _ hψf] + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate U s ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm ψ) ∈ V + rwa [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_res hfU s _ hψf] · refine ⟨hφf, ?_⟩ - change evaluate ((Spec ↧R).basicOpen f) t - ((affineSpecEquiv R).symm φ) ∈ V - exact (congrArg (fun c ↦ c ∈ V) (evaluate_res hfU s _ hφf)).mp hφV + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ((Spec ↧R).basicOpen f) t + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R).symm φ) ∈ V + exact (congrArg (fun c ↦ c ∈ V) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_res hfU s _ hφf)).mp hφV /-- The complex points of `Spec R` are homeomorphic to the complex algebra homomorphisms from `R` to `ℂ`, with their topology of pointwise convergence. -/ -def affineSpecHomeomorph : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecHomeomorph : @Homeomorph - (ComplexPoint (Over.mk (affineSpecStructureMap R))) - (R →ₐ[ℂ] ℂ) analyticTopology (affineAlgebraHomTopology R) where - toEquiv := affineSpecEquiv R - continuous_toFun := continuous_affineSpecEquiv R - continuous_invFun := continuous_affineSpecEquiv_symm R + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap R))) + (R →ₐ[ℂ] ℂ) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineAlgebraHomTopology R) where + toEquiv := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv R + continuous_toFun := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineSpecEquiv R + continuous_invFun := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineSpecEquiv_symm R variable {A B : Type} [CommRing A] [CommRing B] [Algebra ℂ A] [Algebra ℂ B] -lemma specMap_comp_affineSpecStructureMap (g : A →ₐ[ℂ] B) : - Spec.map (CommRingCat.ofHom g.toRingHom) ≫ affineSpecStructureMap A = - affineSpecStructureMap B := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.specMap_comp_affineSpecStructureMap (g : A →ₐ[ℂ] B) : + Spec.map (CommRingCat.ofHom g.toRingHom) ≫ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap A = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap B := by rw [← Spec.map_comp] congr 1 ext c exact g.commutes c /-- The map on complex points contravariantly associated to a complex algebra homomorphism. -/ -def affineSpecComplexPointMap (g : A →ₐ[ℂ] B) : - ComplexPoint (Over.mk (affineSpecStructureMap B)) → - ComplexPoint (Over.mk (affineSpecStructureMap A)) := - map (Over.homMk (Spec.map (CommRingCat.ofHom g.toRingHom)) - (specMap_comp_affineSpecStructureMap g)) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecComplexPointMap (g : A →ₐ[ℂ] B) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap B)) → + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap A)) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (Over.homMk (Spec.map (CommRingCat.ofHom g.toRingHom)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.specMap_comp_affineSpecStructureMap g)) /-- Under the affine-point equivalence, an affine scheme map acts by precomposition of algebra homomorphisms. -/ -lemma affineSpecEquiv_affineSpecComplexPointMap (g : A →ₐ[ℂ] B) - (z : ComplexPoint (Over.mk (affineSpecStructureMap B))) : - affineSpecEquiv A (affineSpecComplexPointMap g z) = - (affineSpecEquiv B z).comp g := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv_affineSpecComplexPointMap (g : A →ₐ[ℂ] B) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap B))) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv A (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecComplexPointMap g z) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv B z).comp g := by ext a - simp [affineSpecComplexPointMap, map, affineSpecEquiv, Spec.preimage_comp] + simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecComplexPointMap, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv, Spec.preimage_comp] + +end + +end +end end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.ComplexPoint.AffineScheme diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AffineSpace.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AffineSpace.lean index f0f897b6bd..4cb7df5b76 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AffineSpace.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AffineSpace.lean @@ -12,16 +12,21 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic -public import Mathlib.AlgebraicGeometry.AffineSpace +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic +import Mathlib.AlgebraicGeometry.AffineSpace import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import Mathlib.Logic.Equiv.PartialEquiv import Mathlib.Topology.Algebra.MvPolynomial +namespace OAI.AlgebraicGeometry.ComplexPoint.AffineSpace + +open _root_.AlgebraicGeometry + /-! # Complex points of affine space @@ -31,41 +36,42 @@ the localization description of sections on principal opens to handle every loca appearing in the analytic topology. -/ -@[expose] public section +section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicGeometry.ComplexPoint +section +section -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point noncomputable section /-- Evaluation of a global section at a complex point is pullback of that section to `Spec ℂ`. -/ -lemma evaluate_top_eq_appTop {X : Over (Spec ↧ℂ)} - (s : Γ(X.left, ⊤)) (z : ComplexPoint X) : - evaluate ⊤ s z = (Scheme.ΓSpecIso ↧ℂ).hom (z.left.appTop s) := by - rw [evaluate, dite_eq_left (by exact trivial)] +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_top_eq_appTop {X : Over (Spec ↧ℂ)} + (s : Γ(X.left, ⊤)) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ s z = (Scheme.ΓSpecIso ↧ℂ).hom (z.left.appTop s) := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate, dite_eq_left (by exact trivial)] have h := Scheme.germ_stalkClosedPointTo (R := ↧ℂ) (X := X.left) z.left ⊤ trivial exact DFunLike.congr_fun (congrArg CommRingCat.Hom.hom h) s /-- Evaluation of a global regular function is continuous in the analytic topology. -/ -lemma continuous_evaluate_top {X : Over (Spec ↧ℂ)} +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_evaluate_top {X : Over (Spec ↧ℂ)} (s : Γ(X.left, ⊤)) : - @Continuous (ComplexPoint X) ℂ analyticTopology inferInstance - (evaluate ⊤ s) := by + @Continuous (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) ℂ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology inferInstance + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ s) := by rw [continuous_def] intro V hV - simpa [overOpen] using - isOpen_overOpen_inter_preimage (X := X) (⊤ : X.left.Opens) s V hV + simpa [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen] using + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isOpen_overOpen_inter_preimage (X := X) (⊤ : X.left.Opens) s V hV /-- Complex affine space as a scheme over `Spec ℂ`. -/ -abbrev complexAffineSpace (n : Type) : Scheme := +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (n : Type) : Scheme := AffineSpace n (Spec ↧ℂ) /-- Algebraic coordinates identify complex points of affine space with tuples of complex numbers. -/ -def affineSpaceEquiv (n : Type) : - ComplexPoint (Over.mk (complexAffineSpace n ↘ Spec ↧ℂ)) ≃ (n → ℂ) where +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv (n : Type) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n ↘ Spec ↧ℂ)) ≃ (n → ℂ) where toFun z i := (Scheme.ΓSpecIso ↧ℂ).hom (z.left.appTop (AffineSpace.coord (Spec ↧ℂ) i)) invFun v := @@ -82,46 +88,46 @@ def affineSpaceEquiv (n : Type) : simp @[simp] -lemma affineSpaceEquiv_apply (n : Type) - (z : ComplexPoint (Over.mk (complexAffineSpace n ↘ Spec ↧ℂ))) (i : n) : - affineSpaceEquiv n z i = +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv_apply (n : Type) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n ↘ Spec ↧ℂ))) (i : n) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n z i = (Scheme.ΓSpecIso ↧ℂ).hom (z.left.appTop (AffineSpace.coord (Spec ↧ℂ) i)) := rfl /-- The algebraic coordinate equivalence is continuous for the analytic topology. -/ -lemma continuous_affineSpaceEquiv (n : Type) : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineSpaceEquiv (n : Type) : @Continuous - (ComplexPoint (Over.mk (complexAffineSpace n ↘ Spec ↧ℂ))) - (n → ℂ) analyticTopology inferInstance (affineSpaceEquiv n) := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n ↘ Spec ↧ℂ))) + (n → ℂ) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology inferInstance (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n) := by apply @continuous_pi - (ComplexPoint (Over.mk (complexAffineSpace n ↘ Spec ↧ℂ))) - n (fun _ ↦ ℂ) analyticTopology (fun _ ↦ inferInstance) (affineSpaceEquiv n) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n ↘ Spec ↧ℂ))) + n (fun _ ↦ ℂ) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (fun _ ↦ inferInstance) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n) intro i let s := AffineSpace.coord (Spec ↧ℂ) i - have heq : (fun z : ComplexPoint (Over.mk (complexAffineSpace n ↘ Spec ↧ℂ)) ↦ - affineSpaceEquiv n z i) = evaluate ⊤ s := - funext fun z ↦ (evaluate_top_eq_appTop s z).symm + have heq : (fun z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n ↘ Spec ↧ℂ)) ↦ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n z i) = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ s := + funext fun z ↦ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_top_eq_appTop s z).symm rw [heq] - exact continuous_evaluate_top (X := Over.mk (complexAffineSpace n ↘ Spec ↧ℂ)) s + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_evaluate_top (X := Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n ↘ Spec ↧ℂ)) s /-- The polynomial represented by a global regular function on complex affine space. -/ -def affineGlobalPolynomial {n : Type} (s : Γ(complexAffineSpace n, ⊤)) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineGlobalPolynomial {n : Type} (s : Γ(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n, ⊤)) : MvPolynomial n ℂ := (Scheme.ΓSpecIso ↧(MvPolynomial n ℂ)).hom ((AffineSpace.SpecIso n ↧ℂ).inv.appTop s) -lemma SpecIso_hom_appTop_affineGlobalPolynomial {n : Type} - (s : Γ(complexAffineSpace n, ⊤)) : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.SpecIso_hom_appTop_affineGlobalPolynomial {n : Type} + (s : Γ(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n, ⊤)) : (AffineSpace.SpecIso n ↧ℂ).hom.appTop - ((Scheme.ΓSpecIso ↧(MvPolynomial n ℂ)).inv (affineGlobalPolynomial s)) = s := by - rw [affineGlobalPolynomial, Iso.hom_inv_id_apply] + ((Scheme.ΓSpecIso ↧(MvPolynomial n ℂ)).inv (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineGlobalPolynomial s)) = s := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineGlobalPolynomial, Iso.hom_inv_id_apply] change ((AffineSpace.SpecIso n ↧ℂ).inv.appTop ≫ (AffineSpace.SpecIso n ↧ℂ).hom.appTop) s = s rw [← Scheme.Hom.comp_appTop, Iso.hom_inv_id, Scheme.Hom.id_appTop] rfl -lemma SpecIso_hom_appTop_X {n : Type} (i : n) : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.SpecIso_hom_appTop_X {n : Type} (i : n) : (AffineSpace.SpecIso n ↧ℂ).hom.appTop ((Scheme.ΓSpecIso ↧(MvPolynomial n ℂ)).inv (MvPolynomial.X i)) = AffineSpace.coord (Spec ↧ℂ) i := by @@ -132,21 +138,21 @@ lemma SpecIso_hom_appTop_X {n : Type} (i : n) : rw [← Scheme.Hom.comp_appTop, Iso.hom_inv_id, Scheme.Hom.id_appTop] rfl -lemma SpecIso_hom_appTop_C {n : Type} (c : ℂ) : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.SpecIso_hom_appTop_C {n : Type} (c : ℂ) : (AffineSpace.SpecIso n ↧ℂ).hom.appTop ((Scheme.ΓSpecIso ↧(MvPolynomial n ℂ)).inv (MvPolynomial.C c)) = - (complexAffineSpace n ↘ Spec ↧ℂ).appTop + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n ↘ Spec ↧ℂ).appTop ((Scheme.ΓSpecIso ↧ℂ).inv c) := by rw [AffineSpace.SpecIso_hom_appTop] simp /-- In affine coordinates, evaluation of a global section is evaluation of its polynomial. -/ -lemma evaluate_affineSpaceEquiv_symm_top {n : Type} (s : Γ(complexAffineSpace n, ⊤)) +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_affineSpaceEquiv_symm_top {n : Type} (s : Γ(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n, ⊤)) (v : n → ℂ) : - evaluate ⊤ s ((affineSpaceEquiv n).symm v) = - MvPolynomial.eval v (affineGlobalPolynomial s) := by - rw [evaluate_top_eq_appTop] - let h := ((affineSpaceEquiv n).symm v).left + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ s ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm v) = + MvPolynomial.eval v (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineGlobalPolynomial s) := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_top_eq_appTop] + let h := ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm v).left let φ : MvPolynomial n ℂ →+* ℂ := ((Scheme.ΓSpecIso ↧(MvPolynomial n ℂ)).inv ≫ (AffineSpace.SpecIso n ↧ℂ).hom.appTop ≫ h.appTop ≫ @@ -159,9 +165,9 @@ lemma evaluate_affineSpaceEquiv_symm_top {n : Type} (s : Γ(complexAffineSpace n change (Scheme.ΓSpecIso ↧ℂ).hom (h.appTop ((AffineSpace.SpecIso n ↧ℂ).hom.appTop ((Scheme.ΓSpecIso ↧(MvPolynomial n ℂ)).inv (MvPolynomial.C c)))) = c - rw [SpecIso_hom_appTop_C] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.SpecIso_hom_appTop_C] change (Scheme.ΓSpecIso ↧ℂ).hom - (((complexAffineSpace n ↘ Spec ↧ℂ).appTop ≫ + (((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n ↘ Spec ↧ℂ).appTop ≫ (AffineSpace.homOfVector (𝟙 _) fun i ↦ (Scheme.ΓSpecIso ↧ℂ).inv (v i)).appTop) ((Scheme.ΓSpecIso ↧ℂ).inv c)) = c @@ -173,102 +179,107 @@ lemma evaluate_affineSpaceEquiv_symm_top {n : Type} (s : Γ(complexAffineSpace n change (Scheme.ΓSpecIso ↧ℂ).hom (h.appTop ((AffineSpace.SpecIso n ↧ℂ).hom.appTop ((Scheme.ΓSpecIso ↧(MvPolynomial n ℂ)).inv (MvPolynomial.X i)))) = v i - rw [SpecIso_hom_appTop_X] - simp [h, affineSpaceEquiv] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.SpecIso_hom_appTop_X] + simp [h, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv] calc (Scheme.ΓSpecIso ↧ℂ).hom (h.appTop s) = (Scheme.ΓSpecIso ↧ℂ).hom (h.appTop ((AffineSpace.SpecIso n ↧ℂ).hom.appTop ((Scheme.ΓSpecIso ↧(MvPolynomial n ℂ)).inv - (affineGlobalPolynomial s)))) := by - rw [SpecIso_hom_appTop_affineGlobalPolynomial] - _ = φ (affineGlobalPolynomial s) := rfl - _ = MvPolynomial.eval v (affineGlobalPolynomial s) := by rw [hφ] + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineGlobalPolynomial s)))) := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.SpecIso_hom_appTop_affineGlobalPolynomial] + _ = φ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineGlobalPolynomial s) := rfl + _ = MvPolynomial.eval v (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineGlobalPolynomial s) := by rw [hφ] /-- Pullback of a global affine regular function along the coordinate inverse is continuous. -/ -lemma continuous_evaluate_top_affineSpaceEquiv_symm {n : Type} - (s : Γ(complexAffineSpace n, ⊤)) : - Continuous fun v : n → ℂ ↦ evaluate ⊤ s ((affineSpaceEquiv n).symm v) := by - simpa only [evaluate_affineSpaceEquiv_symm_top] using - (affineGlobalPolynomial s).continuous_eval +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_evaluate_top_affineSpaceEquiv_symm {n : Type} + (s : Γ(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n, ⊤)) : + Continuous fun v : n → ℂ ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ s ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm v) := by + simpa only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_affineSpaceEquiv_symm_top] using + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineGlobalPolynomial s).continuous_eval /-- Principal opens of complex affine space pull back to Euclidean open sets. -/ -lemma isOpen_affineSpaceEquiv_symm_preimage_overOpen_basicOpen {n : Type} - (s : Γ(complexAffineSpace n, ⊤)) : - IsOpen ((affineSpaceEquiv n).symm ⁻¹' - overOpen ((complexAffineSpace n).basicOpen s)) := by - rw [show (affineSpaceEquiv n).symm ⁻¹' - overOpen ((complexAffineSpace n).basicOpen s) = - {v | evaluate ⊤ s ((affineSpaceEquiv n).symm v) ≠ 0} by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_affineSpaceEquiv_symm_preimage_overOpen_basicOpen {n : Type} + (s : Γ(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n, ⊤)) : + IsOpen ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm ⁻¹' + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n).basicOpen s)) := by + rw [show (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm ⁻¹' + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n).basicOpen s) = + {v | _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ s ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm v) ≠ 0} by ext v - exact mem_overOpen_basicOpen_iff_evaluate_ne_zero - (X := Over.mk (complexAffineSpace n ↘ Spec ↧ℂ)) (U := ⊤) s _ trivial] - exact isOpen_ne_fun (continuous_evaluate_top_affineSpaceEquiv_symm s) continuous_const + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_basicOpen_iff_evaluate_ne_zero + (X := Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n ↘ Spec ↧ℂ)) (U := ⊤) s _ trivial] + exact isOpen_ne_fun (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_evaluate_top_affineSpaceEquiv_symm s) continuous_const /-- Evaluation on a principal open is continuous on the corresponding Euclidean open set. -/ -lemma continuousOn_evaluate_basicOpen_affineSpaceEquiv_symm {n : Type} - (f : Γ(complexAffineSpace n, ⊤)) - (t : Γ(complexAffineSpace n, (complexAffineSpace n).basicOpen f)) : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuousOn_evaluate_basicOpen_affineSpaceEquiv_symm {n : Type} + (f : Γ(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n, ⊤)) + (t : Γ(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n, (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n).basicOpen f)) : ContinuousOn - (fun v : n → ℂ ↦ evaluate ((complexAffineSpace n).basicOpen f) t - ((affineSpaceEquiv n).symm v)) - ((affineSpaceEquiv n).symm ⁻¹' - overOpen ((complexAffineSpace n).basicOpen f)) := by + (fun v : n → ℂ ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n).basicOpen f) t + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm v)) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm ⁻¹' + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n).basicOpen f)) := by obtain ⟨k, a, h⟩ := - exists_evaluate_basicOpen_eq_div (X := Over.mk (complexAffineSpace n ↘ Spec ↧ℂ)) - (isAffineOpen_top (complexAffineSpace n)) f t - have ha := continuous_evaluate_top_affineSpaceEquiv_symm a - have hf := continuous_evaluate_top_affineSpaceEquiv_symm f + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.exists_evaluate_basicOpen_eq_div (X := Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n ↘ Spec ↧ℂ)) + (isAffineOpen_top (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n)) f t + have ha := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_evaluate_top_affineSpaceEquiv_symm a + have hf := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_evaluate_top_affineSpaceEquiv_symm f have hrat : ContinuousOn - (fun v : n → ℂ ↦ evaluate ⊤ a ((affineSpaceEquiv n).symm v) / - evaluate ⊤ f ((affineSpaceEquiv n).symm v) ^ k) - ((affineSpaceEquiv n).symm ⁻¹' - overOpen ((complexAffineSpace n).basicOpen f)) := + (fun v : n → ℂ ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ a ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm v) / + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ f ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm v) ^ k) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm ⁻¹' + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n).basicOpen f)) := ha.continuousOn.div (hf.pow k).continuousOn fun v hv ↦ - pow_ne_zero k ((mem_overOpen_basicOpen_iff_evaluate_ne_zero - (X := Over.mk (complexAffineSpace n ↘ Spec ↧ℂ)) (U := ⊤) f _ trivial).mp hv) + pow_ne_zero k ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_basicOpen_iff_evaluate_ne_zero + (X := Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n ↘ Spec ↧ℂ)) (U := ⊤) f _ trivial).mp hv) exact hrat.congr fun v hv ↦ h _ hv /-- The inverse coordinate map is continuous for every local regular-function subbasis set. -/ -lemma continuous_affineSpaceEquiv_symm (n : Type) : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineSpaceEquiv_symm (n : Type) : @Continuous (n → ℂ) - (ComplexPoint (Over.mk (complexAffineSpace n ↘ Spec ↧ℂ))) - inferInstance analyticTopology (affineSpaceEquiv n).symm := by - rw [continuous_iff_analyticSubbasis] + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n ↘ Spec ↧ℂ))) + inferInstance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.continuous_iff_analyticSubbasis] rintro W ⟨U, s, V, hV, rfl⟩ apply isOpen_iff_forall_mem_open.mpr rintro v ⟨hvU, hvV⟩ obtain ⟨f, hfU, hvf⟩ := - (isAffineOpen_top (complexAffineSpace n)).exists_basicOpen_le - ⟨((affineSpaceEquiv n).symm v).underlying, hvU⟩ trivial - let t := (complexAffineSpace n).presheaf.map (homOfLE hfU).op s - let N := (affineSpaceEquiv n).symm ⁻¹' - overOpen ((complexAffineSpace n).basicOpen f) ∩ - (fun w : n → ℂ ↦ evaluate ((complexAffineSpace n).basicOpen f) t - ((affineSpaceEquiv n).symm w)) ⁻¹' V + (isAffineOpen_top (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n)).exists_basicOpen_le + ⟨((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm v).underlying, hvU⟩ trivial + let t := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n).presheaf.map (homOfLE hfU).op s + let N := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm ⁻¹' + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n).basicOpen f) ∩ + (fun w : n → ℂ ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n).basicOpen f) t + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm w)) ⁻¹' V have hNopen : IsOpen N := - (continuousOn_evaluate_basicOpen_affineSpaceEquiv_symm f t).isOpen_inter_preimage - (isOpen_affineSpaceEquiv_symm_preimage_overOpen_basicOpen f) hV + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuousOn_evaluate_basicOpen_affineSpaceEquiv_symm f t).isOpen_inter_preimage + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_affineSpaceEquiv_symm_preimage_overOpen_basicOpen f) hV refine ⟨N, ?_, hNopen, ?_⟩ · rintro w ⟨hwf, hwV⟩ - have hwU : (affineSpaceEquiv n).symm w ∈ overOpen U := hfU hwf + have hwU : (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm w ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U := hfU hwf refine ⟨hwU, ?_⟩ - change evaluate U s ((affineSpaceEquiv n).symm w) ∈ V - rw [evaluate_res hfU s _ hwf] + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate U s ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm w) ∈ V + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_res hfU s _ hwf] exact hwV · refine ⟨hvf, ?_⟩ - change evaluate ((complexAffineSpace n).basicOpen f) t - ((affineSpaceEquiv n).symm v) ∈ V - exact (congrArg (fun c ↦ c ∈ V) (evaluate_res hfU s _ hvf)).mp hvV + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n).basicOpen f) t + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n).symm v) ∈ V + exact (congrArg (fun c ↦ c ∈ V) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_res hfU s _ hvf)).mp hvV /-- Complex affine space with the evaluation topology is ordinary complex affine space. -/ -def affineSpaceHomeomorph (n : Type) : - ComplexPoint (Over.mk (complexAffineSpace n ↘ Spec ↧ℂ)) ≃ₜ (n → ℂ) where - toEquiv := affineSpaceEquiv n - continuous_toFun := continuous_affineSpaceEquiv n - continuous_invFun := continuous_affineSpaceEquiv_symm n +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceHomeomorph (n : Type) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace n ↘ Spec ↧ℂ)) ≃ₜ (n → ℂ) where + toEquiv := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv n + continuous_toFun := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineSpaceEquiv n + continuous_invFun := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineSpaceEquiv_symm n + +end + +end end +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.ComplexPoint.AffineSpace diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AnalyticMap.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AnalyticMap.lean index 3c840c7a39..a055a21703 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AnalyticMap.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AnalyticMap.lean @@ -12,11 +12,16 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Manifold -public import Mathlib.Geometry.Manifold.ContMDiff.Defs +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Manifold +import Mathlib.Geometry.Manifold.ContMDiff.Defs + +namespace OAI.AlgebraicGeometry.ComplexPoint.AnalyticMap + +open _root_.AlgebraicGeometry /-! # Analytic maps induced by morphisms of smooth complex schemes @@ -27,73 +32,79 @@ regular function. Its pullback is again regular, so analyticity follows from th analyticity of regular-function evaluation. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Filter Topology TopologicalSpace -open scoped Manifold ContDiff +open _root_.CategoryTheory Filter _root_.Topology _root_.TopologicalSpace +open scoped _root_.Manifold ContDiff -namespace AlgebraicGeometry.ComplexPoint +section +section -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X Y : Over (Spec ↧ℂ)) (f : X ⟶ Y) (d e : ℕ) /-- In algebraic coordinate charts, each component of a morphism of smooth complex schemes is complex analytic. -/ -lemma analyticAt_localChart_symm_map_component +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_symm_map_component [SmoothOfRelativeDimension d X.hom] [SmoothOfRelativeDimension e Y.hom] - (z : ComplexPoint X) {w : Fin d → ℂ} - (hw : w ∈ (localChart X d z).target) - (hmap : map f ((localChart X d z).symm w) ∈ - (localChart Y e (map f z)).source) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) {w : Fin d → ℂ} + (hw : w ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).target) + (hmap : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm w) ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y e (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z)).source) (i : Fin e) : AnalyticAt ℂ - (fun v ↦ localChart Y e (map f z) - (map f ((localChart X d z).symm v)) i) w := by - let D := localEtaleCoordinates Y e (map f z) - have htargetOpen : map f ((localChart X d z).symm w) ∈ - overOpen D.ambientCoordinateOpen := by - have hmem := mem_coordinateNeighborhood_of_mem_localChart_source - Y e (map f z) - (map f ((localChart X d z).symm w)) hmap - simpa only [D, LocalEtaleCoordinates.ambientCoordinateOpen, + (fun v ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y e (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm v)) i) w := by + let D := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates Y e (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z) + have htargetOpen : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm w) ∈ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen D.ambientCoordinateOpen := by + have hmem := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_coordinateNeighborhood_of_mem_localChart_source + Y e (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm w)) hmap + simpa only [D, _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates.ambientCoordinateOpen, Scheme.Opens.ι_image_top] using hmem - have hsourceOpen : (localChart X d z).symm w ∈ - overOpen (f.left ⁻¹ᵁ D.ambientCoordinateOpen) := - (mem_overOpen_map_iff f _ D.ambientCoordinateOpen).mp htargetOpen - have ha := analyticAt_localChart_symm_evaluate X d z hw + have hsourceOpen : (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm w ∈ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen (f.left ⁻¹ᵁ D.ambientCoordinateOpen) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_map_iff f _ D.ambientCoordinateOpen).mp htargetOpen + have ha := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_symm_evaluate X d z hw (f.left ⁻¹ᵁ D.ambientCoordinateOpen) (f.left.app D.ambientCoordinateOpen (D.ambientCoordinateSection i)) hsourceOpen have hcontinuous : ContinuousAt - (fun v ↦ map f ((localChart X d z).symm v)) w := - (continuous_map f).continuousAt.comp - ((localChart X d z).continuousAt_symm hw) + (fun v ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm v)) w := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.continuous_map f).continuousAt.comp + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).continuousAt_symm hw) have heventually : - (fun v ↦ map f ((localChart X d z).symm v)) ⁻¹' - (localChart Y e (map f z)).source ∈ 𝓝 w := - hcontinuous ((localChart Y e (map f z)).open_source.mem_nhds hmap) + (fun v ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm v)) ⁻¹' + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y e (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z)).source ∈ 𝓝 w := + hcontinuous ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y e (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z)).open_source.mem_nhds hmap) apply ha.congr filter_upwards [heventually] with v hv - rw [localChart_apply_component_eq_evaluate Y e (map f z) - (map f ((localChart X d z).symm v)) hv i] - exact evaluate_map f D.ambientCoordinateOpen - (D.ambientCoordinateSection i) ((localChart X d z).symm v) |>.symm + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart_apply_component_eq_evaluate Y e (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm v)) hv i] + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_map f D.ambientCoordinateOpen + (D.ambientCoordinateSection i) ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm v) |>.symm /-- In algebraic coordinate charts, the map induced by a morphism of smooth complex schemes is complex analytic. -/ -lemma analyticAt_localChart_symm_map +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_symm_map [SmoothOfRelativeDimension d X.hom] [SmoothOfRelativeDimension e Y.hom] - (z : ComplexPoint X) {w : Fin d → ℂ} - (hw : w ∈ (localChart X d z).target) - (hmap : map f ((localChart X d z).symm w) ∈ - (localChart Y e (map f z)).source) : + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) {w : Fin d → ℂ} + (hw : w ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).target) + (hmap : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm w) ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y e (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z)).source) : AnalyticAt ℂ - (fun v ↦ localChart Y e (map f z) - (map f ((localChart X d z).symm v))) w := - AnalyticAt.pi fun i ↦ analyticAt_localChart_symm_map_component + (fun v ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y e (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map f ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm v))) w := + AnalyticAt.pi fun i ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_symm_map_component X Y f d e z hw hmap i -end AlgebraicGeometry.ComplexPoint +end +end + +end + +end OAI.AlgebraicGeometry.ComplexPoint.AnalyticMap diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AnalyticSheaf.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AnalyticSheaf.lean index 29bfff3d35..44259573b0 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AnalyticSheaf.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/AnalyticSheaf.lean @@ -12,10 +12,15 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.ComplexPoint.AnalyticSheaf +import HodgeConjecture.Definitions.AlgebraicGeometry.ComplexPoint.AnalyticSheaf + +namespace OAI.AlgebraicGeometry.ComplexPoint.AnalyticSheafOn + +open _root_.AlgebraicGeometry /-! # Holomorphic functions on complex points @@ -24,23 +29,29 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicGeometry.ComplexPoint.AnalyticSheaf`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory TopologicalSpace Topology -open scoped ContDiff Manifold +open _root_.CategoryTheory _root_.TopologicalSpace _root_.Topology +open scoped ContDiff _root_.Manifold -namespace AlgebraicGeometry.ComplexPoint +section +section -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X : Over (Spec ↧ℂ)) (d : ℕ) /-- A section of the holomorphic-function sheaf is an analytic map to `ℂ` in the charted-space structure on complex points. -/ -lemma holomorphicFunctionSheaf_section_analytic [SmoothOfRelativeDimension d X.hom] - {U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} - (s : (holomorphicFunctionSheaf X d).presheaf.obj U) : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionSheaf_section_analytic [SmoothOfRelativeDimension d X.hom] + {U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} + (s : (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFunctionSheaf X d).presheaf.obj U) : ContMDiff 𝓘(ℂ, Fin d → ℂ) 𝓘(ℂ) ω s.1 := (contDiffWithinAt_localInvariantProp ω).section_spec _ _ _ _ -end AlgebraicGeometry.ComplexPoint +end +end + +end + +end OAI.AlgebraicGeometry.ComplexPoint.AnalyticSheafOn diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Basic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Basic.lean index 8ca0635116..2ef662c20a 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Basic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Basic.lean @@ -12,14 +12,19 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.ComplexPoint.Basic +import HodgeConjecture.Definitions.AlgebraicGeometry.ComplexPoint.Basic import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import HodgeConjecture.Mathlib.Topology.Algebra.IsOpenUnits +namespace OAI.AlgebraicGeometry.ComplexPoint.BasicNe + +open _root_.AlgebraicGeometry + /-! # Points over a commutative ring, and analytification @@ -29,18 +34,18 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public section +section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology open scoped CommRingCat.HomTopology -namespace AlgebraicGeometry +section variable (R : Type) [CommRing R] /-- A projective complex scheme is Noetherian. -/ theorem isNoetherian_of_isProjective (X : Over (Spec ↧ℂ)) - [IsProjective X.hom] : IsNoetherian X.left where + [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] : IsNoetherian X.left where toIsLocallyNoetherian := LocallyOfFiniteType.isLocallyNoetherian X.hom toCompactSpace := QuasiCompact.compactSpace_of_compactSpace X.hom @@ -56,7 +61,7 @@ variable {K : Type} [Field K] {X : Over (Spec ↧K)} This refines `stalkData`: the stalk homomorphism out of a local ring into a field factors through the residue field. -/ -noncomputable def residueData (z : Point K X) : +noncomputable def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.residueData (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point K X) : Σ x : X.left, X.left.residueField x ⟶ ↧K := Scheme.SpecToEquivOfField K X.left z.left @@ -64,16 +69,16 @@ end Field end Point -end AlgebraicGeometry +end end -@[expose] public section +section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology open scoped CommRingCat.HomTopology -namespace AlgebraicGeometry +section variable (R : Type) [CommRing R] @@ -92,9 +97,9 @@ variable [TopologicalSpace R] variable [ContinuousMul R] [IsOpenUnits R] /-- The `R`-points over a scheme open form an analytic open set. -/ -lemma isOpen_overOpen (U : X.left.Opens) : - IsOpen (overOpen U : Set (Point R X)) := by - simpa using isOpen_overOpen_inter_preimage U 0 Set.univ isOpen_univ +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isOpen_overOpen (U : X.left.Opens) : + IsOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point R X)) := by + simpa using _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isOpen_overOpen_inter_preimage U 0 Set.univ isOpen_univ end Topology @@ -106,24 +111,28 @@ variable {K : Type} [Field K] {X : Over (Spec ↧K)} /-- Over a field, a `K`-point belongs to a principal open exactly when its defining function is nonzero there. -/ -lemma mem_overOpen_basicOpen_iff_evaluate_ne_zero {U : X.left.Opens} (s : Γ(X.left, U)) - (z : Point K X) (hz : z ∈ overOpen U) : - z ∈ overOpen (X.left.basicOpen s) ↔ evaluate U s z ≠ 0 := by - rw [mem_overOpen_basicOpen_iff_isUnit_evaluate s z hz, isUnit_iff_ne_zero] +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_basicOpen_iff_evaluate_ne_zero {U : X.left.Opens} (s : Γ(X.left, U)) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point K X) (hz : z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U) : + z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen (X.left.basicOpen s) ↔ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate U s z ≠ 0 := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_basicOpen_iff_isUnit_evaluate s z hz, isUnit_iff_ne_zero] /-- Over a field, a regular function on a principal open of an affine open is a quotient of regular functions on the whole affine open. -/ -lemma exists_evaluate_basicOpen_eq_div {U : X.left.Opens} (hU : IsAffineOpen U) (f : Γ(X.left, U)) +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.exists_evaluate_basicOpen_eq_div {U : X.left.Opens} (hU : IsAffineOpen U) (f : Γ(X.left, U)) (t : Γ(X.left, X.left.basicOpen f)) : - ∃ (k : ℕ) (a : Γ(X.left, U)), ∀ z : Point K X, - z ∈ overOpen (X.left.basicOpen f) → - evaluate (X.left.basicOpen f) t z = evaluate U a z / evaluate U f z ^ k := by + ∃ (k : ℕ) (a : Γ(X.left, U)), ∀ z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point K X, + z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen (X.left.basicOpen f) → + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate (X.left.basicOpen f) t z = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate U a z / _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate U f z ^ k := by obtain ⟨k, a, h⟩ := - exists_evaluate_basicOpen_eq_inverse_mul (X := X) hU f t + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.exists_evaluate_basicOpen_eq_inverse_mul (X := X) hU f t exact ⟨k, a, fun z hz ↦ by rw [h z hz, Ring.inverse_eq_inv', div_eq_inv_mul]⟩ end Field end Point -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.ComplexPoint.BasicNe diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ClosedImmersion.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ClosedImmersion.lean index 7ceb823a27..8c26b7925e 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ClosedImmersion.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ClosedImmersion.lean @@ -12,16 +12,21 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.ResidueField -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AffineSpace +import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.ResidueField +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AffineSpace import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import Mathlib.AlgebraicGeometry.AlgClosed.Basic import Mathlib.Analysis.Complex.Polynomial.Basic +namespace OAI.AlgebraicGeometry.ComplexPoint.ClosedImmersion + +open _root_.AlgebraicGeometry + /-! # Complex points of a closed subscheme @@ -33,21 +38,21 @@ image is the set of complex points supported on the closed subscheme, which is c immersion induces a closed topological embedding on complex points. -/ -@[expose] public section +section -open CategoryTheory Opposite TopologicalSpace Topology +open _root_.CategoryTheory Opposite _root_.TopologicalSpace _root_.Topology -namespace AlgebraicGeometry +section -namespace ComplexPoint +section -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable {X Y : Over (Spec ↧ℂ)} /-- A monomorphism of schemes induces an injection on complex points. -/ -lemma map_injective_of_mono (i : X ⟶ Y) [Mono i] : - Function.Injective (map i) := fun _ _ h ↦ (cancel_mono i).mp h +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.map_injective_of_mono (i : X ⟶ Y) [Mono i] : + Function.Injective (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) := fun _ _ h ↦ (cancel_mono i).mp h section AnalyticClosedImmersion @@ -55,17 +60,17 @@ variable {A B : Over (Spec ↧ℂ)} (i : A ⟶ B) /-- The analytic image of a closed immersion consists exactly of the complex points supported on its scheme-theoretic image. -/ -lemma range_map_of_closedImmersion [IsClosedImmersion i.left] : - Set.range (map i) = - {y : ComplexPoint B | y.underlying ∈ Set.range i.left} := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.range_map_of_closedImmersion [IsClosedImmersion i.left] : + Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) = + {y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint B | y.underlying ∈ Set.range i.left} := by ext y constructor · rintro ⟨x, rfl⟩ - exact ⟨x.underlying, (underlying_map i x).symm⟩ + exact ⟨x.underlying, (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying_map i x).symm⟩ · rintro ⟨x, hx⟩ change i.left x = y.residueData.1 at hx let φ : A.left.residueField x ⟶ ↧ℂ := - (IsClosedImmersion.residueFieldIso x).inv ≫ + (_root_.OAI.AlgebraicGeometry.ClosedImmersion.ResidueField.IsClosedImmersion.residueFieldIso x).inv ≫ (B.left.residueFieldCongr hx).hom ≫ y.residueData.2 let zHom : Spec ↧ℂ ⟶ A.left := (Scheme.SpecToEquivOfField ℂ A.left).symm ⟨x, φ⟩ @@ -75,7 +80,7 @@ lemma range_map_of_closedImmersion [IsClosedImmersion i.left] : ← Scheme.Hom.SpecMap_residueFieldMap_fromSpecResidueField] rw [← Category.assoc, ← Spec.map_comp] dsimp [φ] - rw [← IsClosedImmersion.residueFieldIso_hom, + rw [← _root_.OAI.AlgebraicGeometry.ClosedImmersion.ResidueField.IsClosedImmersion.residueFieldIso_hom, Iso.hom_inv_id_assoc, Spec.map_comp, Category.assoc, Scheme.residueFieldCongr_fromSpecResidueField] exact (Scheme.SpecToEquivOfField ℂ B.left).symm_apply_apply y.left @@ -85,115 +90,119 @@ lemma range_map_of_closedImmersion [IsClosedImmersion i.left] : exact ⟨Over.homMk zHom hz, Over.OverMorphism.ext hzmap⟩ /-- The analytic image of a closed immersion is closed. -/ -lemma isClosed_range_map_of_closedImmersion [IsClosedImmersion i.left] : - @IsClosed (ComplexPoint B) analyticTopology - (Set.range (map i)) := by - rw [range_map_of_closedImmersion i] +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isClosed_range_map_of_closedImmersion [IsClosedImmersion i.left] : + @IsClosed (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint B) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology + (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.range_map_of_closedImmersion i] apply isOpen_compl_iff.mp let U : B.left.Opens := ⟨(Set.range i.left)ᶜ, i.left.isClosedEmbedding.isClosed_range.isOpen_compl⟩ - have h : IsOpen (overOpen U : Set (ComplexPoint B)) := - isOpen_overOpen (X := B) U + have h : IsOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint B)) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isOpen_overOpen (X := B) U convert h using 1 ext y - simp [overOpen, U] + simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen, U] /-- A subbasic analytic open of a closed subscheme is open in the topology induced from the ambient analytic space. -/ -lemma isOpen_induced_chartSubbasic [IsClosedImmersion i.left] +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_induced_chartSubbasic [IsClosedImmersion i.left] (U : B.left.Opens) (s : Γ(A.left, i.left ⁻¹ᵁ U)) (O : Set ℂ) (hO : IsOpen O) : - @IsOpen (ComplexPoint A) - (TopologicalSpace.induced (map i) analyticTopology) - (overOpen (i.left ⁻¹ᵁ U) ∩ evaluate (i.left ⁻¹ᵁ U) s ⁻¹' O) := by - let : TopologicalSpace (ComplexPoint A) := - TopologicalSpace.induced (map i) analyticTopology + @IsOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint A) + (TopologicalSpace.induced (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen (i.left ⁻¹ᵁ U) ∩ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate (i.left ⁻¹ᵁ U) s ⁻¹' O) := by + let : TopologicalSpace (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint A) := + TopologicalSpace.induced (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology rw [isOpen_iff_forall_mem_open] rintro z ⟨hzU, hzO⟩ obtain ⟨V, hVU, ⟨r, hr⟩, hzV⟩ := - IsClosedImmersion.exists_local_ambient_lift U s z.underlying hzU - let T : Set (ComplexPoint B) := - overOpen V ∩ evaluate V r ⁻¹' O - refine ⟨map i ⁻¹' T, ?_, ?_, ?_⟩ + _root_.OAI.AlgebraicGeometry.ClosedImmersion.ResidueField.IsClosedImmersion.exists_local_ambient_lift U s z.underlying hzU + let T : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint B) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen V ∩ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate V r ⁻¹' O + refine ⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i ⁻¹' T, ?_, ?_, ?_⟩ · rintro w ⟨hwV, hwO⟩ have hwV' : w.underlying ∈ i.left ⁻¹ᵁ V := - (mem_overOpen_map_iff i w V).mp hwV + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_map_iff i w V).mp hwV have hpre : i.left ⁻¹ᵁ V ≤ i.left ⁻¹ᵁ U := leOfHom ((Opens.map i.left.base).map hVU) refine ⟨hpre hwV', ?_⟩ - have hmap := evaluate_map i V r w - change evaluate (X := B) V r _ = - evaluate (X := A) (i.left ⁻¹ᵁ V) (i.left.app V r) w at hmap + have hmap := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_map i V r w + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate (X := B) V r _ = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate (X := A) (i.left ⁻¹ᵁ V) (i.left.app V r) w at hmap rw [hr] at hmap - have hres := evaluate_res (X := A) + have hres := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_res (X := A) (U := i.left ⁻¹ᵁ U) (V := i.left ⁻¹ᵁ V) hpre s w hwV' have hsection : (((TopCat.Presheaf.pushforward CommRingCat i.left.base).obj A.left.presheaf).map hVU.op) s = A.left.presheaf.map (homOfLE hpre).op s := rfl rw [hsection] at hmap - change evaluate (i.left ⁻¹ᵁ U) s w ∈ O + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate (i.left ⁻¹ᵁ U) s w ∈ O rw [hres] exact hmap ▸ hwO - · exact (isOpen_overOpen_inter_preimage (X := B) V r O hO).preimage + · exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isOpen_overOpen_inter_preimage (X := B) V r O hO).preimage continuous_induced_dom · refine ⟨?_, ?_⟩ - · exact (mem_overOpen_map_iff i z V).mpr hzV - · have hmap := evaluate_map i V r z - change evaluate (X := B) V r _ = - evaluate (X := A) (i.left ⁻¹ᵁ V) (i.left.app V r) z at hmap + · exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_map_iff i z V).mpr hzV + · have hmap := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_map i V r z + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate (X := B) V r _ = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate (X := A) (i.left ⁻¹ᵁ V) (i.left.app V r) z at hmap rw [hr] at hmap have hpre : i.left ⁻¹ᵁ V ≤ i.left ⁻¹ᵁ U := leOfHom ((Opens.map i.left.base).map hVU) - have hres := evaluate_res (X := A) + have hres := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_res (X := A) (U := i.left ⁻¹ᵁ U) (V := i.left ⁻¹ᵁ V) hpre s z hzV have hsection : (((TopCat.Presheaf.pushforward CommRingCat i.left.base).obj A.left.presheaf).map hVU.op) s = A.left.presheaf.map (homOfLE hpre).op s := rfl rw [hsection] at hmap - change evaluate V r (map i z) ∈ O + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate V r (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) ∈ O rw [hmap] exact hres ▸ hzO /-- Every generator of the analytic topology on a closed subscheme is open for the topology induced from the ambient analytic space. -/ -lemma analyticSubbasis_isOpen_induced [IsClosedImmersion i.left] - {W : Set (ComplexPoint A)} (hW : W ∈ analyticSubbasis) : - @IsOpen (ComplexPoint A) - (TopologicalSpace.induced (map i) analyticTopology) W := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticSubbasis_isOpen_induced [IsClosedImmersion i.left] + {W : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint A)} (hW : W ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticSubbasis) : + @IsOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint A) + (TopologicalSpace.induced (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology) W := by obtain ⟨U, s, O, hO, rfl⟩ := hW obtain ⟨q, hq, hpre⟩ := i.left.isClosedEmbedding.isInducing.isOpen_iff.mp U.isOpen let Q : B.left.Opens := ⟨q, hq⟩ have hQU : i.left ⁻¹ᵁ Q = U := Opens.ext hpre subst U - exact isOpen_induced_chartSubbasic i Q s O hO + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_induced_chartSubbasic i Q s O hO /-- A closed immersion induces the subspace topology on complex points. -/ -lemma isInducing_map_of_closedImmersion [IsClosedImmersion i.left] : - @IsInducing (ComplexPoint A) (ComplexPoint B) - analyticTopology analyticTopology (map i) := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isInducing_map_of_closedImmersion [IsClosedImmersion i.left] : + @IsInducing (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint A) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint B) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) := by rw [isInducing_iff] apply le_antisymm - · exact continuous_iff_le_induced.mp (continuous_map i) - · rw [show (analyticTopology : TopologicalSpace (ComplexPoint A)) = - .generateFrom analyticSubbasis from analyticTopology_eq_generateFrom] + · exact continuous_iff_le_induced.mp (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.continuous_map i) + · rw [show (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology : TopologicalSpace (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint A)) = + .generateFrom _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticSubbasis from _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology_eq_generateFrom] exact le_generateFrom_iff_subset_isOpen.mpr fun _ hW ↦ - analyticSubbasis_isOpen_induced i hW + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticSubbasis_isOpen_induced i hW /-- A closed immersion induces a topological embedding on complex points. -/ -lemma isEmbedding_map_of_closedImmersion [IsClosedImmersion i.left] : - @IsEmbedding (ComplexPoint A) (ComplexPoint B) - analyticTopology analyticTopology (map i) := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isEmbedding_map_of_closedImmersion [IsClosedImmersion i.left] : + @IsEmbedding (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint A) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint B) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) := by let : Mono i := Over.mono_of_mono_left i - exact ⟨isInducing_map_of_closedImmersion i, map_injective_of_mono i⟩ + exact ⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isInducing_map_of_closedImmersion i, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.map_injective_of_mono i⟩ /-- A closed immersion induces a closed topological embedding on complex points. -/ -lemma isClosedEmbedding_map_of_closedImmersion [IsClosedImmersion i.left] : - @IsClosedEmbedding (ComplexPoint A) (ComplexPoint B) - analyticTopology analyticTopology (map i) := by - exact ⟨isEmbedding_map_of_closedImmersion i, isClosed_range_map_of_closedImmersion i⟩ +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isClosedEmbedding_map_of_closedImmersion [IsClosedImmersion i.left] : + @IsClosedEmbedding (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint A) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint B) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) := by + exact ⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isEmbedding_map_of_closedImmersion i, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isClosed_range_map_of_closedImmersion i⟩ end AnalyticClosedImmersion -end ComplexPoint +end + +end + +end -end AlgebraicGeometry +end OAI.AlgebraicGeometry.ComplexPoint.ClosedImmersion diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Etale.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Etale.lean index 258111fe4a..436cc57d1a 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Etale.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Etale.lean @@ -12,21 +12,26 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AffineSpace -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Localization -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.StandardEtale -public import Mathlib.Analysis.Calculus.ContDiff.RCLike -- shake: keep -public import Mathlib.Analysis.Calculus.Deriv.Polynomial -- shake: keep -public import Mathlib.Analysis.Calculus.ImplicitFunction.ProdDomain -public import Mathlib.Topology.OpenPartialHomeomorph.Constructions +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AffineSpace +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Localization +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.StandardEtale +import Mathlib.Analysis.Calculus.ContDiff.RCLike -- shake: keep +import Mathlib.Analysis.Calculus.Deriv.Polynomial -- shake: keep +import Mathlib.Analysis.Calculus.ImplicitFunction.ProdDomain +import Mathlib.Topology.OpenPartialHomeomorph.Constructions import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import Mathlib.Analysis.Analytic.Polynomial import Mathlib.RingTheory.Unramified.LocalStructure +namespace OAI.AlgebraicGeometry.ComplexPoint.Etale + +open _root_.AlgebraicGeometry + /-! # Complex points of étale morphisms @@ -41,19 +46,20 @@ The charts themselves are statements about `ℂ`-algebra homomorphisms and live `AlgebraicGeometry.ComplexPoint`. -/ -@[expose] public section +section -open scoped Polynomial Topology ContDiff +open scoped _root_.Polynomial _root_.Topology ContDiff -open CategoryTheory Topology Filter +open _root_.CategoryTheory _root_.Topology Filter -namespace AlgebraicGeometry.ComplexAlgHom +section +namespace ComplexAlgHom -open ComplexPoint Point +open ComplexPoint _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point noncomputable section -variable {n : ℕ} (P : StandardEtalePair (complexPolynomialRing n)) +variable {n : ℕ} (P : StandardEtalePair (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n)) /-- The equation defining a standard étale algebra, evaluated in ordinary complex coordinates. -/ @@ -63,7 +69,7 @@ def standardEtaleEquation (vx : (Fin n → ℂ) × ℂ) : ℂ := /-- Evaluating a polynomial whose coefficients are multivariate complex polynomials is analytic in both the coefficient variables and the distinguished polynomial variable. -/ lemma analyticAt_polynomialEvaluation - (p : (complexPolynomialRing n)[X]) (u : (Fin n → ℂ) × ℂ) : + (p : (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n)[X]) (u : (Fin n → ℂ) × ℂ) : AnalyticAt ℂ (fun vx ↦ Polynomial.eval₂ (MvPolynomial.aeval (R := ℂ) vx.1).toRingHom vx.2 p) u := by induction p using Polynomial.induction_on' with @@ -108,10 +114,10 @@ lemma standardEtaleEquation_eq_eval (u : (Fin n → ℂ) × ℂ) : /-- The distinguished derivative is nonzero at every complex point of a standard étale algebra. -/ -lemma standardEtale_fiberDerivative_ne_zero (z : standardEtaleCoordinateSpace P) : +lemma standardEtale_fiberDerivative_ne_zero (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) : Polynomial.eval₂ (MvPolynomial.aeval (R := ℂ) z.1.1).toRingHom z.1.2 P.f.derivative ≠ 0 := by - let : Algebra (complexPolynomialRing n) ℂ := + let : Algebra (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) ℂ := (MvPolynomial.aeval (R := ℂ) z.1.1).toRingHom.toAlgebra have hz : P.HasMap z.1.2 := by rw [StandardEtalePair.HasMap] @@ -141,7 +147,7 @@ lemma fderiv_standardEtaleEquation_comp_inr (u : (Fin n → ℂ) × ℂ) : simpa [standardEtaleFiberPolynomial, Polynomial.derivative_map, Polynomial.eval_map] using hchain'.unique hpoly -lemma standardEtale_partial_isInvertible (z : standardEtaleCoordinateSpace P) : +lemma standardEtale_partial_isInvertible (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) : (fderiv ℂ (standardEtaleEquation P) z.1 ∘L ContinuousLinearMap.inr ℂ (Fin n → ℂ) ℂ).IsInvertible := by rw [fderiv_standardEtaleEquation_comp_inr] @@ -158,7 +164,7 @@ lemma standardEtale_partial_isInvertible (z : standardEtaleCoordinateSpace P) : simp [hd] /-- The ambient implicit-function chart sending `(z, t)` to `(f(z, t), z)`. -/ -def standardEtaleImplicitOpenPartialHomeomorph (z : standardEtaleCoordinateSpace P) : +def standardEtaleImplicitOpenPartialHomeomorph (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) : OpenPartialHomeomorph ((Fin n → ℂ) × ℂ) (ℂ × (Fin n → ℂ)) := let cdf := contDiffAt_standardEtaleEquation P z.1 let hs := cdf.hasStrictFDerivAt (by simp) @@ -167,7 +173,7 @@ def standardEtaleImplicitOpenPartialHomeomorph (z : standardEtaleCoordinateSpace @[simp] lemma standardEtaleImplicitOpenPartialHomeomorph_apply - (z : standardEtaleCoordinateSpace P) (u : (Fin n → ℂ) × ℂ) : + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) (u : (Fin n → ℂ) × ℂ) : standardEtaleImplicitOpenPartialHomeomorph P z u = (standardEtaleEquation P u, u.1) := by let cdf := contDiffAt_standardEtaleEquation P z.1 @@ -177,7 +183,7 @@ lemma standardEtaleImplicitOpenPartialHomeomorph_apply change φ.toOpenPartialHomeomorph u = _ simp [φ] -lemma standardEtale_mem_implicit_source (z : standardEtaleCoordinateSpace P) : +lemma standardEtale_mem_implicit_source (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) : z.1 ∈ (standardEtaleImplicitOpenPartialHomeomorph P z).source := by let cdf := contDiffAt_standardEtaleEquation P z.1 let hs := cdf.hasStrictFDerivAt (by simp) @@ -198,7 +204,7 @@ lemma analyticAt_standardEtaleLocalizationEquation (u : (Fin n → ℂ) × ℂ) algebra in ordinary complex coordinates. The outer variable is sent to the inverse of the localization polynomial. -/ def standardEtaleBivariateEvaluation - (q : (complexPolynomialRing n)[X][X]) (u : (Fin n → ℂ) × ℂ) : ℂ := + (q : (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n)[X][X]) (u : (Fin n → ℂ) × ℂ) : ℂ := Polynomial.eval₂ (Polynomial.eval₂RingHom (MvPolynomial.aeval (R := ℂ) u.1).toRingHom u.2) (standardEtaleLocalizationEquation P u)⁻¹ q @@ -206,7 +212,7 @@ def standardEtaleBivariateEvaluation /-- Evaluation of every representative of the standard étale presentation is analytic wherever the localization polynomial is nonzero. -/ lemma analyticAt_standardEtaleBivariateEvaluation - (q : (complexPolynomialRing n)[X][X]) (u : (Fin n → ℂ) × ℂ) + (q : (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n)[X][X]) (u : (Fin n → ℂ) × ℂ) (hu : standardEtaleLocalizationEquation P u ≠ 0) : AnalyticAt ℂ (standardEtaleBivariateEvaluation P q) u := by have hginv : AnalyticAt ℂ (fun v ↦ (standardEtaleLocalizationEquation P v)⁻¹) u := @@ -231,27 +237,27 @@ lemma analyticAt_standardEtaleBivariateEvaluation lemma continuous_standardEtaleLocalizationEquation : Continuous (standardEtaleLocalizationEquation P) := by have hcoord : Continuous (fun u : (Fin n → ℂ) × ℂ ↦ - ((mvPolynomialAlgHomHomeomorph n).symm u.1, u.2)) := - ((mvPolynomialAlgHomHomeomorph n).symm.continuous.comp continuous_fst).prodMk continuous_snd - exact (continuous_eval₂_varying P.g).comp hcoord + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.mvPolynomialAlgHomHomeomorph n).symm u.1, u.2)) := + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.mvPolynomialAlgHomHomeomorph n).symm.continuous.comp continuous_fst).prodMk continuous_snd + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.continuous_eval₂_varying P.g).comp hcoord /-- The source of the standard étale chart centered at `z`. -/ -def standardEtaleChartSource (z : standardEtaleCoordinateSpace P) : - Set (standardEtaleCoordinateSpace P) := +def standardEtaleChartSource (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) : + Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) := Subtype.val ⁻¹' (standardEtaleImplicitOpenPartialHomeomorph P z).source /-- The target of the standard étale chart centered at `z`. The second condition retains the localization defining the standard étale algebra. -/ -def standardEtaleChartTarget (z : standardEtaleCoordinateSpace P) : Set (Fin n → ℂ) := +def standardEtaleChartTarget (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) : Set (Fin n → ℂ) := {w | (0, w) ∈ (standardEtaleImplicitOpenPartialHomeomorph P z).target ∧ standardEtaleLocalizationEquation P ((standardEtaleImplicitOpenPartialHomeomorph P z).symm (0, w)) ≠ 0} -lemma isOpen_standardEtaleChartSource (z : standardEtaleCoordinateSpace P) : +lemma isOpen_standardEtaleChartSource (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) : IsOpen (standardEtaleChartSource P z) := (standardEtaleImplicitOpenPartialHomeomorph P z).open_source.preimage continuous_subtype_val -lemma isOpen_standardEtaleChartTarget (z : standardEtaleCoordinateSpace P) : +lemma isOpen_standardEtaleChartTarget (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) : IsOpen (standardEtaleChartTarget P z) := by let T := standardEtaleImplicitOpenPartialHomeomorph P z let zeroSection : (Fin n → ℂ) → ℂ × (Fin n → ℂ) := fun w ↦ (0, w) @@ -271,8 +277,8 @@ lemma isOpen_standardEtaleChartTarget (z : standardEtaleCoordinateSpace P) : open scoped Classical in /-- The inverse of the standard étale chart on its target. It is assigned the center point outside the target because `OpenPartialHomeomorph` stores total functions. -/ -noncomputable def standardEtaleChartInverse (z : standardEtaleCoordinateSpace P) - (w : Fin n → ℂ) : standardEtaleCoordinateSpace P := +noncomputable def standardEtaleChartInverse (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) + (w : Fin n → ℂ) : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P := if hw : w ∈ standardEtaleChartTarget P z then ⟨(standardEtaleImplicitOpenPartialHomeomorph P z).symm (0, w), by have heq := congrArg Prod.fst @@ -284,13 +290,13 @@ noncomputable def standardEtaleChartInverse (z : standardEtaleCoordinateSpace P) else z @[simp] -lemma standardEtaleChartInverse_of_mem (z : standardEtaleCoordinateSpace P) +lemma standardEtaleChartInverse_of_mem (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) {w : Fin n → ℂ} (hw : w ∈ standardEtaleChartTarget P z) : (standardEtaleChartInverse P z w).1 = (standardEtaleImplicitOpenPartialHomeomorph P z).symm (0, w) := by simp [standardEtaleChartInverse, hw] -lemma standardEtale_base_mem_chartTarget (z x : standardEtaleCoordinateSpace P) +lemma standardEtale_base_mem_chartTarget (z x : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) (hx : x ∈ standardEtaleChartSource P z) : x.1.1 ∈ standardEtaleChartTarget P z := by let T := standardEtaleImplicitOpenPartialHomeomorph P z @@ -307,7 +313,7 @@ lemma standardEtale_base_mem_chartTarget (z x : standardEtaleCoordinateSpace P) rw [hinv] simpa only [standardEtaleLocalizationEquation] using x.2.2 -lemma standardEtaleChartInverse_base (z : standardEtaleCoordinateSpace P) +lemma standardEtaleChartInverse_base (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) {w : Fin n → ℂ} (hw : w ∈ standardEtaleChartTarget P z) : (standardEtaleChartInverse P z w).1.1 = w := by have hright := congrArg Prod.snd @@ -315,7 +321,7 @@ lemma standardEtaleChartInverse_base (z : standardEtaleCoordinateSpace P) rw [standardEtaleChartInverse_of_mem P z hw] simpa only [standardEtaleImplicitOpenPartialHomeomorph_apply] using hright -lemma standardEtaleChartInverse_left (z x : standardEtaleCoordinateSpace P) +lemma standardEtaleChartInverse_left (z x : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) (hx : x ∈ standardEtaleChartSource P z) : standardEtaleChartInverse P z x.1.1 = x := by apply Subtype.ext @@ -326,7 +332,7 @@ lemma standardEtaleChartInverse_left (z x : standardEtaleCoordinateSpace P) rw [← hTx] exact (standardEtaleImplicitOpenPartialHomeomorph P z).left_inv hx -lemma continuousOn_standardEtaleChartInverse (z : standardEtaleCoordinateSpace P) : +lemma continuousOn_standardEtaleChartInverse (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) : ContinuousOn (standardEtaleChartInverse P z) (standardEtaleChartTarget P z) := by rw [continuousOn_iff_continuous_domRestrict] let T := standardEtaleImplicitOpenPartialHomeomorph P z @@ -347,7 +353,7 @@ lemma continuousOn_standardEtaleChartInverse (z : standardEtaleCoordinateSpace P constructor · simpa [T, standardEtaleEquation] using heq · simpa [standardEtaleLocalizationEquation] using w.2.2⟩ : - standardEtaleCoordinateSpace P)) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P)) := hambient.subtype_mk _ convert hcoordinate using 1 exact funext fun w ↦ Subtype.ext (standardEtaleChartInverse_of_mem P z w.2) @@ -356,11 +362,11 @@ lemma continuousOn_standardEtaleChartInverse (z : standardEtaleCoordinateSpace P target. The derivative of the implicit-function homeomorphism is invertible there because every point of a standard étale equation locus has nonzero distinguished derivative. -/ lemma analyticAt_standardEtaleImplicitOpenPartialHomeomorph_symm_zero - (z : standardEtaleCoordinateSpace P) {w : Fin n → ℂ} + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) {w : Fin n → ℂ} (hw : w ∈ standardEtaleChartTarget P z) : AnalyticAt ℂ (standardEtaleImplicitOpenPartialHomeomorph P z).symm (0, w) := by let T := standardEtaleImplicitOpenPartialHomeomorph P z - let q : standardEtaleCoordinateSpace P := standardEtaleChartInverse P z w + let q : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P := standardEtaleChartInverse P z w have hqval : q.1 = T.symm (0, w) := standardEtaleChartInverse_of_mem P z hw let cdf := contDiffAt_standardEtaleEquation P q.1 let hs := cdf.hasStrictFDerivAt (by simp) @@ -401,7 +407,7 @@ lemma analyticAt_standardEtaleImplicitOpenPartialHomeomorph_symm_zero /-- In ambient coordinates, the inverse branch of a standard étale projection chart is complex analytic throughout its target. -/ lemma analyticAt_standardEtaleChartInverse_val - (z : standardEtaleCoordinateSpace P) {w : Fin n → ℂ} + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) {w : Fin n → ℂ} (hw : w ∈ standardEtaleChartTarget P z) : AnalyticAt ℂ (fun v ↦ (standardEtaleChartInverse P z v).1) w := by let T := standardEtaleImplicitOpenPartialHomeomorph P z @@ -415,23 +421,23 @@ lemma analyticAt_standardEtaleChartInverse_val /-- Evaluation of a quotient representative in ordinary coordinates agrees with the explicit bivariate polynomial formula. -/ lemma standardEtaleCoordinateHomeomorph_symm_mk - (z : standardEtaleCoordinateSpace P) (q : (complexPolynomialRing n)[X][X]) : - (standardEtaleCoordinateHomeomorph P).symm z (Ideal.Quotient.mk _ q) = + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) (q : (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n)[X][X]) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateHomeomorph P).symm z (Ideal.Quotient.mk _ q) = standardEtaleBivariateEvaluation P q z.1 := by - change standardEtalePointToAlgHom P - ((standardEtalePointCoordinateHomeomorph P).symm z) (Ideal.Quotient.mk _ q) = _ - rw [standardEtalePointToAlgHom_mk] + change _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtalePointToAlgHom P + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtalePointCoordinateHomeomorph P).symm z) (Ideal.Quotient.mk _ q) = _ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtalePointToAlgHom_mk] congr 1 /-- Every regular function on a standard étale algebra is analytic in each projection chart. -/ lemma analyticAt_standardEtaleCoordinateEvaluation_chart - (z : standardEtaleCoordinateSpace P) {w : Fin n → ℂ} + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) {w : Fin n → ℂ} (hw : w ∈ standardEtaleChartTarget P z) (r : P.Ring) : AnalyticAt ℂ - (fun v ↦ (standardEtaleCoordinateHomeomorph P).symm + (fun v ↦ (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateHomeomorph P).symm (standardEtaleChartInverse P z v) r) w := by obtain ⟨q, rfl⟩ := Ideal.Quotient.mk_surjective r - rw [show (fun v ↦ (standardEtaleCoordinateHomeomorph P).symm + rw [show (fun v ↦ (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateHomeomorph P).symm (standardEtaleChartInverse P z v) (Ideal.Quotient.mk _ q)) = fun v ↦ standardEtaleBivariateEvaluation P q (standardEtaleChartInverse P z v).1 by @@ -451,8 +457,8 @@ lemma analyticAt_standardEtaleCoordinateEvaluation_chart /-- A neighborhood of a standard étale point on which projection to the polynomial-ring coordinates is a homeomorphism onto an open set. -/ -noncomputable def standardEtaleProjectionChart (z : standardEtaleCoordinateSpace P) : - OpenPartialHomeomorph (standardEtaleCoordinateSpace P) (Fin n → ℂ) where +noncomputable def standardEtaleProjectionChart (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) : + OpenPartialHomeomorph (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) (Fin n → ℂ) where toFun x := x.1.1 invFun := standardEtaleChartInverse P z source := standardEtaleChartSource P z @@ -467,28 +473,28 @@ noncomputable def standardEtaleProjectionChart (z : standardEtaleCoordinateSpace right_inv' w hw := standardEtaleChartInverse_base P z hw continuousOn_toFun := (continuous_fst.comp continuous_subtype_val).continuousOn continuousOn_invFun := continuousOn_standardEtaleChartInverse P z - open_source := isOpen_standardEtaleChartSource P z - open_target := isOpen_standardEtaleChartTarget P z + open_source := _root_.OAI.AlgebraicGeometry.ComplexPoint.Etale.ComplexAlgHom.isOpen_standardEtaleChartSource P z + open_target := _root_.OAI.AlgebraicGeometry.ComplexPoint.Etale.ComplexAlgHom.isOpen_standardEtaleChartTarget P z @[simp] lemma standardEtaleProjectionChart_symm_apply - (z : standardEtaleCoordinateSpace P) (w : Fin n → ℂ) : + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateSpace P) (w : Fin n → ℂ) : (standardEtaleProjectionChart P z).symm w = standardEtaleChartInverse P z w := rfl /-- A projection chart on the complex algebra homomorphisms of a standard étale algebra. -/ noncomputable def standardEtaleAlgHomProjectionChart (u : P.Ring →ₐ[ℂ] ℂ) : OpenPartialHomeomorph (P.Ring →ₐ[ℂ] ℂ) (Fin n → ℂ) := - (standardEtaleCoordinateHomeomorph P).toOpenPartialHomeomorph.trans - (standardEtaleProjectionChart P (standardEtaleCoordinateHomeomorph P u)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateHomeomorph P).toOpenPartialHomeomorph.trans + (standardEtaleProjectionChart P (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateHomeomorph P u)) lemma mem_standardEtaleAlgHomProjectionChart_source (u : P.Ring →ₐ[ℂ] ℂ) : u ∈ (standardEtaleAlgHomProjectionChart P u).source := by constructor · simp - · change standardEtaleCoordinateHomeomorph P u ∈ - (standardEtaleProjectionChart P (standardEtaleCoordinateHomeomorph P u)).source - exact standardEtale_mem_implicit_source P (standardEtaleCoordinateHomeomorph P u) + · change _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateHomeomorph P u ∈ + (standardEtaleProjectionChart P (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateHomeomorph P u)).source + exact standardEtale_mem_implicit_source P (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateHomeomorph P u) /-- Every regular function is analytic on the inverse of a standard étale algebra-homomorphism projection chart. -/ @@ -497,23 +503,23 @@ lemma analyticAt_standardEtaleAlgHomProjectionChart_symm_apply (hw : w ∈ (standardEtaleAlgHomProjectionChart P u).target) (r : P.Ring) : AnalyticAt ℂ (fun v ↦ (standardEtaleAlgHomProjectionChart P u).symm v r) w := by - have hw' : w ∈ standardEtaleChartTarget P (standardEtaleCoordinateHomeomorph P u) := by + have hw' : w ∈ standardEtaleChartTarget P (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateHomeomorph P u) := by rw [standardEtaleAlgHomProjectionChart, OpenPartialHomeomorph.trans_target] at hw exact hw.1 simpa only [standardEtaleAlgHomProjectionChart, OpenPartialHomeomorph.coe_trans_symm, Function.comp_apply, Homeomorph.toOpenPartialHomeomorph_symm_apply, standardEtaleProjectionChart_symm_apply] using analyticAt_standardEtaleCoordinateEvaluation_chart P - (standardEtaleCoordinateHomeomorph P u) hw' r + (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.standardEtaleCoordinateHomeomorph P u) hw' r variable (S : Type) [CommRing S] [Algebra ℂ S] - [Algebra (complexPolynomialRing n) S] - [IsScalarTower ℂ (complexPolynomialRing n) S] - [Algebra.IsStandardEtale (complexPolynomialRing n) S] + [Algebra (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) S] + [IsScalarTower ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) S] + [Algebra.IsStandardEtale (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) S] /-- A chosen standard étale presentation of a standard étale algebra. -/ def chosenStandardEtalePresentation : - StandardEtalePresentation (complexPolynomialRing n) S := + StandardEtalePresentation (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) S := Algebra.IsStandardEtale.nonempty_standardEtalePresentation.some /-- The chosen presentation is also an equivalence of complex algebras. -/ @@ -523,8 +529,8 @@ def standardEtalePresentationComplexAlgEquiv : /-- Restriction of a complex point of a standard étale algebra to its polynomial base. -/ def isStandardEtaleBaseAlgHom (u : S →ₐ[ℂ] ℂ) : - complexPolynomialRing n →ₐ[ℂ] ℂ := - u.comp (IsScalarTower.toAlgHom ℂ (complexPolynomialRing n) S) + _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n →ₐ[ℂ] ℂ := + u.comp (IsScalarTower.toAlgHom ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) S) /-- A projection chart for an arbitrary standard étale algebra, transported through its chosen standard étale presentation. -/ @@ -532,15 +538,15 @@ noncomputable def isStandardEtaleAlgHomProjectionChart (u : S →ₐ[ℂ] ℂ) : OpenPartialHomeomorph (S →ₐ[ℂ] ℂ) (Fin n → ℂ) := let e := standardEtalePresentationComplexAlgEquiv (n := n) S let Q := (chosenStandardEtalePresentation (n := n) S).P - let q := (precompAlgEquivHomeomorph e).symm u - (precompAlgEquivHomeomorph e).symm.toOpenPartialHomeomorph.trans + let q := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Localization.ComplexAlgHom.precompAlgEquivHomeomorph e).symm u + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Localization.ComplexAlgHom.precompAlgEquivHomeomorph e).symm.toOpenPartialHomeomorph.trans (standardEtaleAlgHomProjectionChart Q q) lemma mem_isStandardEtaleAlgHomProjectionChart_source (u : S →ₐ[ℂ] ℂ) : u ∈ (isStandardEtaleAlgHomProjectionChart (n := n) S u).source := by let e := standardEtalePresentationComplexAlgEquiv (n := n) S let Q := (chosenStandardEtalePresentation (n := n) S).P - let q := (precompAlgEquivHomeomorph e).symm u + let q := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Localization.ComplexAlgHom.precompAlgEquivHomeomorph e).symm u constructor · simp · change q ∈ (standardEtaleAlgHomProjectionChart Q q).source @@ -548,17 +554,17 @@ lemma mem_isStandardEtaleAlgHomProjectionChart_source (u : S →ₐ[ℂ] ℂ) : lemma isStandardEtaleAlgHomProjectionChart_apply (u v : S →ₐ[ℂ] ℂ) : isStandardEtaleAlgHomProjectionChart (n := n) S u v = - mvPolynomialAlgHomHomeomorph n (isStandardEtaleBaseAlgHom (n := n) S v) := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.mvPolynomialAlgHomHomeomorph n (isStandardEtaleBaseAlgHom (n := n) S v) := by let e := standardEtalePresentationComplexAlgEquiv (n := n) S let Q := (chosenStandardEtalePresentation (n := n) S).P - apply congrArg (mvPolynomialAlgHomHomeomorph n) + apply congrArg (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.mvPolynomialAlgHomHomeomorph n) apply AlgHom.ext intro b - change v (e.symm (algebraMap (complexPolynomialRing n) Q.Ring b)) = - v (algebraMap (complexPolynomialRing n) S b) + change v (e.symm (algebraMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) Q.Ring b)) = + v (algebraMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) S b) have hb := (chosenStandardEtalePresentation (n := n) S).equivRing.commutes b - change e (algebraMap (complexPolynomialRing n) S b) = - algebraMap (complexPolynomialRing n) Q.Ring b at hb + change e (algebraMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) S b) = + algebraMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) Q.Ring b at hb rw [← hb, e.symm_apply_apply] /-- Regular functions are analytic on inverses of the transported standard étale projection @@ -570,7 +576,7 @@ lemma analyticAt_isStandardEtaleAlgHomProjectionChart_symm_apply (fun v ↦ (isStandardEtaleAlgHomProjectionChart (n := n) S u).symm v r) w := by let e := standardEtalePresentationComplexAlgEquiv (n := n) S let Q := (chosenStandardEtalePresentation (n := n) S).P - let q := (precompAlgEquivHomeomorph e).symm u + let q := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Localization.ComplexAlgHom.precompAlgEquivHomeomorph e).symm u have hw' : w ∈ (standardEtaleAlgHomProjectionChart Q q).target := by rw [isStandardEtaleAlgHomProjectionChart, OpenPartialHomeomorph.trans_target] at hw exact hw.1 @@ -580,15 +586,15 @@ lemma analyticAt_isStandardEtaleAlgHomProjectionChart_symm_apply variable {S} variable (T : Type) [CommRing T] [Algebra ℂ T] - [Algebra (complexPolynomialRing n) T] - [IsScalarTower ℂ (complexPolynomialRing n) T] + [Algebra (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) T] + [IsScalarTower ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) T] /-- Restriction of a complex point of an algebra over a polynomial ring to the polynomial base. -/ -def etaleBaseAlgHom (u : T →ₐ[ℂ] ℂ) : complexPolynomialRing n →ₐ[ℂ] ℂ := - u.comp (IsScalarTower.toAlgHom ℂ (complexPolynomialRing n) T) +def etaleBaseAlgHom (u : T →ₐ[ℂ] ℂ) : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n →ₐ[ℂ] ℂ := + u.comp (IsScalarTower.toAlgHom ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) T) -variable [Algebra.Etale (complexPolynomialRing n) T] +variable [Algebra.Etale (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) T] /-- Standard étale localization data at a complex point of an étale algebra. -/ structure EtaleStandardNeighborhood (u : T →ₐ[ℂ] ℂ) where @@ -597,16 +603,16 @@ structure EtaleStandardNeighborhood (u : T →ₐ[ℂ] ℂ) where /-- The chosen element does not vanish at the point. -/ nonzero : u element ≠ 0 /-- Localizing at the chosen element gives a standard étale algebra. -/ - isStandard : Algebra.IsStandardEtale (complexPolynomialRing n) (Localization.Away element) + isStandard : Algebra.IsStandardEtale (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) (Localization.Away element) -omit [IsScalarTower ℂ (complexPolynomialRing n) T] in +omit [IsScalarTower ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) T] in /-- Étaleness supplies a standard étale localization at every complex point. -/ lemma nonempty_etaleStandardNeighborhood (u : T →ₐ[ℂ] ℂ) : Nonempty (EtaleStandardNeighborhood (n := n) T u) := by let Q : Ideal T := RingHom.ker u.toRingHom let : Q.IsPrime := RingHom.ker_isPrime u.toRingHom obtain ⟨f, hfQ, hfstd⟩ := - Algebra.IsEtaleAt.exists_isStandardEtale (R := complexPolynomialRing n) Q + Algebra.IsEtaleAt.exists_isStandardEtale (R := _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) Q refine ⟨⟨f, ?_, hfstd⟩⟩ simpa [Q, RingHom.mem_ker] using hfQ @@ -618,7 +624,7 @@ noncomputable def etaleStandardNeighborhood (u : T →ₐ[ℂ] ℂ) : /-- The point of the chosen standard étale localization lying over `u`. -/ noncomputable def pointInEtaleStandardNeighborhood (u : T →ₐ[ℂ] ℂ) : Localization.Away (etaleStandardNeighborhood (n := n) T u).element →ₐ[ℂ] ℂ := - (localizationAwayAlgHomHomeomorph T + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Localization.ComplexAlgHom.localizationAwayAlgHomHomeomorph T (etaleStandardNeighborhood (n := n) T u).element).symm ⟨u, (etaleStandardNeighborhood (n := n) T u).nonzero⟩ @@ -627,39 +633,39 @@ standard étale chart after restricting to a principal open neighborhood. -/ noncomputable def etaleAlgHomProjectionChart (u : T →ₐ[ℂ] ℂ) : OpenPartialHomeomorph (T →ₐ[ℂ] ℂ) (Fin n → ℂ) := let D := etaleStandardNeighborhood (n := n) T u - letI : Algebra.IsStandardEtale (complexPolynomialRing n) (Localization.Away D.element) := + letI : Algebra.IsStandardEtale (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) (Localization.Away D.element) := D.isStandard (isStandardEtaleAlgHomProjectionChart (n := n) (Localization.Away D.element) (pointInEtaleStandardNeighborhood (n := n) T u)).lift_openEmbedding - (isOpenEmbedding_localizationAwayAlgHomMap T D.element) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Localization.ComplexAlgHom.isOpenEmbedding_localizationAwayAlgHomMap T D.element) lemma mem_etaleAlgHomProjectionChart_source (u : T →ₐ[ℂ] ℂ) : u ∈ (etaleAlgHomProjectionChart (n := n) T u).source := by let D := etaleStandardNeighborhood (n := n) T u - let : Algebra.IsStandardEtale (complexPolynomialRing n) (Localization.Away D.element) := + let : Algebra.IsStandardEtale (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) (Localization.Away D.element) := D.isStandard let v := pointInEtaleStandardNeighborhood (n := n) T u refine ⟨v, mem_isStandardEtaleAlgHomProjectionChart_source (n := n) (Localization.Away D.element) v, ?_⟩ - change (localizationAwayAlgHomHomeomorph T D.element v).1 = u - rw [show v = (localizationAwayAlgHomHomeomorph T D.element).symm + change (_root_.OAI.AlgebraicGeometry.ComplexPoint.Localization.ComplexAlgHom.localizationAwayAlgHomHomeomorph T D.element v).1 = u + rw [show v = (_root_.OAI.AlgebraicGeometry.ComplexPoint.Localization.ComplexAlgHom.localizationAwayAlgHomHomeomorph T D.element).symm ⟨u, D.nonzero⟩ by rfl, Homeomorph.apply_symm_apply] lemma etaleAlgHomProjectionChart_apply_of_mem (u v : T →ₐ[ℂ] ℂ) (hv : v ∈ (etaleAlgHomProjectionChart (n := n) T u).source) : etaleAlgHomProjectionChart (n := n) T u v = - mvPolynomialAlgHomHomeomorph n (etaleBaseAlgHom (n := n) T v) := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.mvPolynomialAlgHomHomeomorph n (etaleBaseAlgHom (n := n) T v) := by let D := etaleStandardNeighborhood (n := n) T u - let : Algebra.IsStandardEtale (complexPolynomialRing n) (Localization.Away D.element) := + let : Algebra.IsStandardEtale (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) (Localization.Away D.element) := D.isStandard obtain ⟨q, hq, rfl⟩ := hv change ((isStandardEtaleAlgHomProjectionChart (n := n) (Localization.Away D.element) (pointInEtaleStandardNeighborhood (n := n) T u)).lift_openEmbedding - (isOpenEmbedding_localizationAwayAlgHomMap T D.element)) - (localizationAwayAlgHomMap T D.element q) = _ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Localization.ComplexAlgHom.isOpenEmbedding_localizationAwayAlgHomMap T D.element)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Localization.ComplexAlgHom.localizationAwayAlgHomMap T D.element q) = _ rw [OpenPartialHomeomorph.lift_openEmbedding_apply] rw [isStandardEtaleAlgHomProjectionChart_apply] - apply congrArg (mvPolynomialAlgHomHomeomorph n) + apply congrArg (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.mvPolynomialAlgHomHomeomorph n) apply AlgHom.ext intro b rfl @@ -671,7 +677,7 @@ lemma analyticAt_etaleAlgHomProjectionChart_symm_apply (hw : w ∈ (etaleAlgHomProjectionChart (n := n) T u).target) (r : T) : AnalyticAt ℂ (fun v ↦ (etaleAlgHomProjectionChart (n := n) T u).symm v r) w := by let D := etaleStandardNeighborhood (n := n) T u - let : Algebra.IsStandardEtale (complexPolynomialRing n) (Localization.Away D.element) := + let : Algebra.IsStandardEtale (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) (Localization.Away D.element) := D.isStandard let q := pointInEtaleStandardNeighborhood (n := n) T u have hw' : w ∈ @@ -684,36 +690,43 @@ lemma analyticAt_etaleAlgHomProjectionChart_symm_apply end -end AlgebraicGeometry.ComplexAlgHom +end ComplexAlgHom +end -namespace AlgebraicGeometry.ComplexPoint +section +section -open ComplexAlgHom Point +open ComplexAlgHom _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point noncomputable section -variable {n : ℕ} (P : StandardEtalePair (complexPolynomialRing n)) +variable {n : ℕ} (P : StandardEtalePair (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n)) /-- The complex-point map from the spectrum of a polynomial ring to algebraic affine space. -/ -def polynomialSpecToAffineSpacePointMap : - ComplexPoint (Over.mk (affineSpecStructureMap (complexPolynomialRing n))) → - ComplexPoint (Over.mk (complexAffineSpace (Fin n) ↘ Spec ↧ℂ)) := - map (Over.homMk (AffineSpace.SpecIso (Fin n) ↧ℂ).inv (AffineSpace.SpecIso_inv_over ↧ℂ)) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.polynomialSpecToAffineSpacePointMap : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n))) → + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin n) ↘ Spec ↧ℂ)) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (Over.homMk (AffineSpace.SpecIso (Fin n) ↧ℂ).inv (AffineSpace.SpecIso_inv_over ↧ℂ)) /-- The scheme isomorphism between the spectrum of a polynomial ring and affine space agrees with evaluation of the polynomial variables. -/ -lemma affineSpaceEquiv_polynomialSpecToAffineSpacePointMap - (z : ComplexPoint (Over.mk (affineSpecStructureMap (complexPolynomialRing n)))) : - affineSpaceEquiv (Fin n) (polynomialSpecToAffineSpacePointMap (n := n) z) = - mvPolynomialAlgHomHomeomorph n (affineSpecEquiv (complexPolynomialRing n) z) := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv_polynomialSpecToAffineSpacePointMap + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n)))) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv (Fin n) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.polynomialSpecToAffineSpacePointMap (n := n) z) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.mvPolynomialAlgHomHomeomorph n (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) z) := by funext i change (Scheme.ΓSpecIso ↧ℂ).hom (z.left.appTop ((AffineSpace.SpecIso (Fin n) ↧ℂ).inv.appTop (AffineSpace.coord (Spec ↧ℂ) i))) = - affineSpecEquiv (complexPolynomialRing n) z (MvPolynomial.X i) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing n) z (MvPolynomial.X i) rw [AffineSpace.SpecIso_inv_appTop_coord] - rw [affineSpecEquiv_apply, evaluate_top_eq_appTop] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_top_eq_appTop] + +end + +end +end end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.ComplexPoint.Etale diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/LocalHomologyVanishing.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/LocalHomologyVanishing.lean index ab9b783f6a..1512b86659 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/LocalHomologyVanishing.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/LocalHomologyVanishing.lean @@ -1,13 +1,16 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Manifold -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalClassGenerator -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.EuclideanVanishing -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.ChainStalk +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Manifold +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalClassGenerator +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.EuclideanVanishing +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.ChainStalk + +namespace OAI.AlgebraicGeometry.ComplexPoint.LocalHomologyVanishing /-! # Local homology concentration on a smooth complex scheme @@ -18,16 +21,25 @@ in real dimension `2*d`, and stalk exactness gives the corresponding homology-sh vanishing. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace -namespace AlgebraicTopology.Singular +namespace AlgebraicTopology +open _root_.AlgebraicTopology +namespace Singular +open _root_.AlgebraicTopology +open _root_.OAI.AlgebraicTopology.Singular /-- Complex coordinate space has local homology only in twice its complex dimension. -/ theorem standardComplexLocalHomology_isZero_of_ne (d n : ℕ) (hn : n ≠ 2 * d) : - IsZero (RelativeHomology ℚ (puncturedPair ℂ d) n) := - (standardLocalHomology_isZero_of_ne (d * 2) n (by omega)).of_iso - ((relativeHomologyFunctor ℚ n).mapIso (standardComplexRealPairIso d)) + IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ d) n) := + (_root_.OAI.AlgebraicTopology.LocalHomology.EuclideanVanishing.Singular.standardLocalHomology_isZero_of_ne (d * 2) n (by omega)).of_iso + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeHomologyFunctor ℚ n).mapIso (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexRealPairIso d)) + +end Singular +end AlgebraicTopology + +end -end AlgebraicTopology.Singular +end OAI.AlgebraicGeometry.ComplexPoint.LocalHomologyVanishing diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Localization.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Localization.lean index 813c51120b..70c1745267 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Localization.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Localization.lean @@ -12,11 +12,14 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AffineScheme -public import Mathlib.Topology.IsLocalHomeomorph +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AffineScheme +import Mathlib.Topology.IsLocalHomeomorph + +namespace OAI.AlgebraicGeometry.ComplexPoint.Localization /-! # Complex points of a localization @@ -31,15 +34,16 @@ Nothing here mentions a complex point of a scheme, so it lives in namespace as the space of `ℂ`-algebra homomorphisms out of its ring of sections. -/ -@[expose] public section +section -open scoped Topology +open scoped _root_.Topology -open Topology +open _root_.Topology -namespace AlgebraicGeometry.ComplexAlgHom +section +namespace ComplexAlgHom -open ComplexPoint Point +open ComplexPoint _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point noncomputable section @@ -53,12 +57,12 @@ def precompAlgEquiv (e : A ≃ₐ[ℂ] B) : (B →ₐ[ℂ] ℂ) ≃ (A →ₐ[ lemma continuous_precompAlgEquiv (e : A ≃ₐ[ℂ] B) : Continuous (precompAlgEquiv e) := by rw [continuous_induced_rng] - exact continuous_pi fun a ↦ continuous_affineAlgebraHom_apply B (e a) + exact continuous_pi fun a ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply B (e a) lemma continuous_precompAlgEquiv_symm (e : A ≃ₐ[ℂ] B) : Continuous (precompAlgEquiv e).symm := by rw [continuous_induced_rng] - exact continuous_pi fun b ↦ continuous_affineAlgebraHom_apply A (e.symm b) + exact continuous_pi fun b ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply A (e.symm b) /-- Precomposition by a complex algebra equivalence is a homeomorphism for pointwise convergence. -/ @@ -120,7 +124,7 @@ lemma continuous_localizationAwayAlgHomEquiv (f : S) : apply Continuous.subtype_mk rw [continuous_induced_rng] exact continuous_pi fun s ↦ - continuous_affineAlgebraHom_apply (Localization.Away f) (algebraMap S _ s) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply (Localization.Away f) (algebraMap S _ s) lemma localizationAwayAlgHomEquiv_symm_apply_eq_div (f : S) (x : Localization.Away f) : @@ -139,9 +143,9 @@ lemma continuous_localizationAwayAlgHomEquiv_symm (f : S) : refine continuous_pi fun x ↦ ?_ obtain ⟨n, a, h⟩ := localizationAwayAlgHomEquiv_symm_apply_eq_div S f x have ha : Continuous (fun u : nonvanishingAlgHom S f ↦ u.1 a) := - (continuous_affineAlgebraHom_apply S a).comp continuous_subtype_val + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply S a).comp continuous_subtype_val have hf : Continuous (fun u : nonvanishingAlgHom S f ↦ u.1 f) := - (continuous_affineAlgebraHom_apply S f).comp continuous_subtype_val + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply S f).comp continuous_subtype_val exact (ha.div (hf.pow n) fun u ↦ pow_ne_zero n u.2).congr fun u ↦ (h u).symm /-- Complex points of `S[1/f]` are homeomorphic to the nonvanishing locus of `f` in the complex @@ -160,7 +164,7 @@ def localizationAwayAlgHomMap (f : S) : lemma isOpen_nonvanishingAlgHom (f : S) : IsOpen {u : S →ₐ[ℂ] ℂ | u f ≠ 0} := - isOpen_ne_fun (continuous_affineAlgebraHom_apply S f) continuous_const + isOpen_ne_fun (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply S f) continuous_const /-- Restriction from `S[1/f]` identifies its complex points with an open subspace of the complex points of `S`. -/ @@ -172,4 +176,9 @@ lemma isOpenEmbedding_localizationAwayAlgHomMap (f : S) : end -end AlgebraicGeometry.ComplexAlgHom +end ComplexAlgHom +end + +end + +end OAI.AlgebraicGeometry.ComplexPoint.Localization diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Manifold.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Manifold.lean index 4a3e898786..73d8fcd60f 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Manifold.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Manifold.lean @@ -12,19 +12,24 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.SmoothCoordinates -public import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation -public import Mathlib.Analysis.InnerProductSpace.Basic -public import Mathlib.Geometry.Manifold.IsManifold.Basic -public import Mathlib.Topology.Homotopy.Contractible +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.SmoothCoordinates +import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +import Mathlib.Analysis.InnerProductSpace.Basic +import Mathlib.Geometry.Manifold.IsManifold.Basic +import Mathlib.Topology.Homotopy.Contractible import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Equidimensional import Mathlib.Analysis.Normed.Module.Connected import Mathlib.Geometry.Manifold.Complex +namespace OAI.AlgebraicGeometry.ComplexPoint.Manifold + +open _root_.AlgebraicGeometry + /-! # The topological manifold of complex points @@ -39,198 +44,199 @@ by relative-dimensional smoothness, take a local inverse for that local homeomor extend that chart from the corresponding analytic open subset to the ambient space. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace Filter -open scoped Manifold ContDiff +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace Filter +open scoped _root_.Manifold ContDiff -namespace AlgebraicGeometry.ComplexPoint +section +section -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X : Over (Spec ↧ℂ)) (d : ℕ) /-- The analytic open subset on which the chosen coordinates at `z` are defined. -/ -abbrev coordinateNeighborhood [SmoothOfRelativeDimension d X.hom] - (z : ComplexPoint X) := - {w : ComplexPoint X // - w ∈ overOpen ((localEtaleCoordinates X d z).neighborhood)} +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.coordinateNeighborhood [SmoothOfRelativeDimension d X.hom] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := + {w : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // + w ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z).neighborhood)} /-- The point `z` regarded as a point of its chosen coordinate neighborhood. -/ -def pointInCoordinateNeighborhood [SmoothOfRelativeDimension d X.hom] - (z : ComplexPoint X) : coordinateNeighborhood X d z := - ⟨z, mem_localEtaleCoordinates X d z⟩ +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.pointInCoordinateNeighborhood [SmoothOfRelativeDimension d X.hom] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.coordinateNeighborhood X d z := + ⟨z, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localEtaleCoordinates X d z⟩ /-- A local coordinate homeomorphism on the chosen analytic open neighborhood. -/ -def coordinateNeighborhoodChart [SmoothOfRelativeDimension d X.hom] - (z : ComplexPoint X) : - OpenPartialHomeomorph (coordinateNeighborhood X d z) (Fin d → ℂ) := - let D := localEtaleCoordinates X d z - D.ambientProjectionChart (pointInCoordinateNeighborhood X d z) - -lemma pointInCoordinateNeighborhood_mem_chart_source - [SmoothOfRelativeDimension d X.hom] (z : ComplexPoint X) : - pointInCoordinateNeighborhood X d z ∈ - (coordinateNeighborhoodChart X d z).source := - (localEtaleCoordinates X d z).mem_ambientProjectionChart_source - (pointInCoordinateNeighborhood X d z) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.coordinateNeighborhoodChart [SmoothOfRelativeDimension d X.hom] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + OpenPartialHomeomorph (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.coordinateNeighborhood X d z) (Fin d → ℂ) := + let D := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z + D.ambientProjectionChart (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.pointInCoordinateNeighborhood X d z) + +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.pointInCoordinateNeighborhood_mem_chart_source + [SmoothOfRelativeDimension d X.hom] (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.pointInCoordinateNeighborhood X d z ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.coordinateNeighborhoodChart X d z).source := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z).mem_ambientProjectionChart_source + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.pointInCoordinateNeighborhood X d z) /-- The chosen local chart at a complex point, extended from its analytic open neighborhood to the whole complex-point space. -/ -def localChart [SmoothOfRelativeDimension d X.hom] - (z : ComplexPoint X) : - OpenPartialHomeomorph (ComplexPoint X) (Fin d → ℂ) := - (coordinateNeighborhoodChart X d z).lift_openEmbedding - (isOpen_overOpen (X := X) - ((localEtaleCoordinates X d z).neighborhood)).isOpenEmbedding_subtypeVal - -lemma mem_localChart_source [SmoothOfRelativeDimension d X.hom] - (z : ComplexPoint X) : z ∈ (localChart X d z).source := by - exact ⟨pointInCoordinateNeighborhood X d z, - pointInCoordinateNeighborhood_mem_chart_source X d z, rfl⟩ - -lemma mem_coordinateNeighborhood_of_mem_localChart_source +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart [SmoothOfRelativeDimension d X.hom] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + OpenPartialHomeomorph (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (Fin d → ℂ) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.coordinateNeighborhoodChart X d z).lift_openEmbedding + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isOpen_overOpen (X := X) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z).neighborhood)).isOpenEmbedding_subtypeVal + +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source [SmoothOfRelativeDimension d X.hom] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : z ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).source := by + exact ⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.pointInCoordinateNeighborhood X d z, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.pointInCoordinateNeighborhood_mem_chart_source X d z, rfl⟩ + +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_coordinateNeighborhood_of_mem_localChart_source [SmoothOfRelativeDimension d X.hom] - (z w : ComplexPoint X) (hw : w ∈ (localChart X d z).source) : - w ∈ overOpen ((localEtaleCoordinates X d z).neighborhood) := by + (z w : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hw : w ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).source) : + w ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z).neighborhood) := by obtain ⟨w', _, rfl⟩ := hw exact w'.2 @[simp] -lemma localChart_target [SmoothOfRelativeDimension d X.hom] - (z : ComplexPoint X) : - (localChart X d z).target = - (coordinateNeighborhoodChart X d z).target := rfl +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart_target [SmoothOfRelativeDimension d X.hom] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).target = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.coordinateNeighborhoodChart X d z).target := rfl @[simp] -lemma localChart_symm_apply [SmoothOfRelativeDimension d X.hom] - (z : ComplexPoint X) (w : Fin d → ℂ) : - (localChart X d z).symm w = - ((coordinateNeighborhoodChart X d z).symm w).1 := rfl - -lemma localChart_apply_of_mem [SmoothOfRelativeDimension d X.hom] - (z w : ComplexPoint X) (hw : w ∈ (localChart X d z).source) : - localChart X d z w = - (localEtaleCoordinates X d z).ambientAnalyticCoordinates - ⟨w, mem_coordinateNeighborhood_of_mem_localChart_source X d z w hw⟩ := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart_symm_apply [SmoothOfRelativeDimension d X.hom] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (w : Fin d → ℂ) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm w = + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.coordinateNeighborhoodChart X d z).symm w).1 := rfl + +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart_apply_of_mem [SmoothOfRelativeDimension d X.hom] + (z w : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hw : w ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).source) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z w = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z).ambientAnalyticCoordinates + ⟨w, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_coordinateNeighborhood_of_mem_localChart_source X d z w hw⟩ := by obtain ⟨w', hw', rfl⟩ := hw - rw [localChart, OpenPartialHomeomorph.lift_openEmbedding_apply] - exact (localEtaleCoordinates X d z).ambientProjectionChart_apply_of_mem - (pointInCoordinateNeighborhood X d z) w' hw' + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart, OpenPartialHomeomorph.lift_openEmbedding_apply] + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z).ambientProjectionChart_apply_of_mem + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.pointInCoordinateNeighborhood X d z) w' hw' /-- The canonical charted-space structure obtained from algebraic smooth coordinates. -/ instance [SmoothOfRelativeDimension d X.hom] : - ChartedSpace (Fin d → ℂ) (ComplexPoint X) where - atlas := Set.range (localChart X d) - chartAt := localChart X d - mem_chart_source := mem_localChart_source X d + ChartedSpace (Fin d → ℂ) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) where + atlas := Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d) + chartAt := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d + mem_chart_source := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source X d chart_mem_atlas z := ⟨z, rfl⟩ /-- Evaluation of a regular section near an inverse-chart point is complex analytic. -/ -lemma analyticAt_localChart_symm_evaluate +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_symm_evaluate [SmoothOfRelativeDimension d X.hom] - (z : ComplexPoint X) {w : Fin d → ℂ} - (hw : w ∈ (localChart X d z).target) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) {w : Fin d → ℂ} + (hw : w ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).target) (V : X.left.Opens) (s : Γ(X.left, V)) - (hV : (localChart X d z).symm w ∈ overOpen V) : + (hV : (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm w ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen V) : AnalyticAt ℂ - (fun v ↦ Point.evaluate V s ((localChart X d z).symm v)) w := by - let D := localEtaleCoordinates X d z - let p := pointInCoordinateNeighborhood X d z + (fun v ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate V s ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm v)) w := by + let D := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z + let p := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.pointInCoordinateNeighborhood X d z have hwD : w ∈ (D.ambientProjectionChart p).target := by - simpa only [D, p, coordinateNeighborhoodChart, localChart_target] using hw + simpa only [D, p, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.coordinateNeighborhoodChart, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart_target] using hw have hVD : ((D.ambientProjectionChart p).symm w).1 ∈ - overOpen V := by - simpa only [D, p, coordinateNeighborhoodChart, localChart_symm_apply] using hV - simpa only [D, p, coordinateNeighborhoodChart, localChart_symm_apply] using + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen V := by + simpa only [D, p, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.coordinateNeighborhoodChart, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart_symm_apply] using hV + simpa only [D, p, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.coordinateNeighborhoodChart, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart_symm_apply] using D.analyticAt_ambientProjectionChart_symm_evaluate p hwD V s hVD /-- On the source of a chart, each coordinate is evaluation of its defining regular section. -/ -lemma localChart_apply_component_eq_evaluate +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart_apply_component_eq_evaluate [SmoothOfRelativeDimension d X.hom] - (z q : ComplexPoint X) (hq : q ∈ (localChart X d z).source) + (z q : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hq : q ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).source) (i : Fin d) : - localChart X d z q i = - Point.evaluate - (localEtaleCoordinates X d z).ambientCoordinateOpen - ((localEtaleCoordinates X d z).ambientCoordinateSection i) q := by - rw [localChart_apply_of_mem X d z q hq] - exact (localEtaleCoordinates X d z).ambientAnalyticCoordinates_apply_eq_evaluate _ i + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z q i = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z).ambientCoordinateOpen + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z).ambientCoordinateSection i) q := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart_apply_of_mem X d z q hq] + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z).ambientAnalyticCoordinates_apply_eq_evaluate _ i /-- Each component of a transition between the chosen algebraic charts is complex analytic. -/ -lemma analyticAt_localChart_transition_component +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_transition_component [SmoothOfRelativeDimension d X.hom] - (z z' : ComplexPoint X) {w : Fin d → ℂ} - (hw : w ∈ ((localChart X d z).symm.trans - (localChart X d z')).source) (i : Fin d) : + (z z' : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) {w : Fin d → ℂ} + (hw : w ∈ ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm.trans + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z')).source) (i : Fin d) : AnalyticAt ℂ - (fun v ↦ localChart X d z' - ((localChart X d z).symm v) i) w := by - have hwtarget : w ∈ (localChart X d z).target := hw.1 - have hsource : (localChart X d z).symm w ∈ - (localChart X d z').source := hw.2 - let D' := localEtaleCoordinates X d z' - have hV : (localChart X d z).symm w ∈ overOpen D'.ambientCoordinateOpen := by - have hmem := mem_coordinateNeighborhood_of_mem_localChart_source - X d z' ((localChart X d z).symm w) hsource - simpa only [D', LocalEtaleCoordinates.ambientCoordinateOpen, + (fun v ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z' + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm v) i) w := by + have hwtarget : w ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).target := hw.1 + have hsource : (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm w ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z').source := hw.2 + let D' := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z' + have hV : (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm w ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen D'.ambientCoordinateOpen := by + have hmem := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_coordinateNeighborhood_of_mem_localChart_source + X d z' ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm w) hsource + simpa only [D', _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates.ambientCoordinateOpen, Scheme.Opens.ι_image_top] using hmem - have hi := analyticAt_localChart_symm_evaluate X d z hwtarget + have hi := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_symm_evaluate X d z hwtarget D'.ambientCoordinateOpen (D'.ambientCoordinateSection i) hV apply hi.congr - have hcontinuous : ContinuousAt (localChart X d z).symm w := - (localChart X d z).continuousAt_symm hwtarget - have heventually : (localChart X d z).symm ⁻¹' - (localChart X d z').source ∈ 𝓝 w := - hcontinuous ((localChart X d z').open_source.mem_nhds hsource) + have hcontinuous : ContinuousAt (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm w := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).continuousAt_symm hwtarget + have heventually : (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm ⁻¹' + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z').source ∈ 𝓝 w := + hcontinuous ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z').open_source.mem_nhds hsource) filter_upwards [heventually] with v hv - exact (localChart_apply_component_eq_evaluate X d z' - ((localChart X d z).symm v) hv i).symm + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart_apply_component_eq_evaluate X d z' + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm v) hv i).symm /-- A transition between the chosen algebraic charts is complex analytic. -/ -lemma analyticAt_localChart_transition +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_transition [SmoothOfRelativeDimension d X.hom] - (z z' : ComplexPoint X) {w : Fin d → ℂ} - (hw : w ∈ ((localChart X d z).symm.trans - (localChart X d z')).source) : + (z z' : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) {w : Fin d → ℂ} + (hw : w ∈ ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm.trans + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z')).source) : AnalyticAt ℂ - (fun v ↦ localChart X d z' ((localChart X d z).symm v)) w := - AnalyticAt.pi fun i ↦ analyticAt_localChart_transition_component X d z z' hw i + (fun v ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z' ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm v)) w := + AnalyticAt.pi fun i ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_transition_component X d z z' hw i /-- Transition maps in the chosen atlas are holomorphic on their domains. -/ -lemma contDiffOn_localChart_transition +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.contDiffOn_localChart_transition [SmoothOfRelativeDimension d X.hom] - (z z' : ComplexPoint X) : - ContDiffOn ℂ ω ((localChart X d z).symm.trans - (localChart X d z')) - (((localChart X d z).symm.trans - (localChart X d z')).source) := by + (z z' : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + ContDiffOn ℂ ω ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm.trans + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z')) + (((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).symm.trans + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z')).source) := by intro w hw - exact (analyticAt_localChart_transition X d z z' hw).contDiffAt.contDiffWithinAt + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_transition X d z z' hw).contDiffAt.contDiffWithinAt /-- Smooth complex points form a holomorphic complex manifold of the specified dimension. This is an instance. Through `IsManifold.of_le` it makes the complex points a `C^n` manifold for every `n`, so no downstream file needs a local `IsManifold` instance. -/ -instance isManifold_omega [SmoothOfRelativeDimension d X.hom] : - IsManifold 𝓘(ℂ, Fin d → ℂ) ω (ComplexPoint X) := by +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isManifold_omega [SmoothOfRelativeDimension d X.hom] : + IsManifold 𝓘(ℂ, Fin d → ℂ) ω (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := by apply isManifold_of_contDiffOn rintro _ _ ⟨z, rfl⟩ ⟨z', rfl⟩ simpa only [modelWithCornersSelf_coe, modelWithCornersSelf_coe_symm, CompTriple.comp_eq, Function.id_comp, Function.comp_id, Set.preimage_id, Set.range_id, Set.inter_univ] using - contDiffOn_localChart_transition X d z z' + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.contDiffOn_localChart_transition X d z z' /-- Every analytic neighborhood of a smooth complex point contains an open contractible neighborhood. The smaller neighborhood is the inverse image of a Euclidean ball in the chosen algebraic coordinate chart. -/ -lemma exists_contractibleOpen_le [IsIntegral X.left] [Smooth X.hom] - (x : ComplexPoint X) - (U : TopologicalSpace.Opens (ComplexPoint X)) (hxU : x ∈ U) : - ∃ (V : TopologicalSpace.Opens (ComplexPoint X)), +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_contractibleOpen_le [IsIntegral X.left] [Smooth X.hom] + (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (U : TopologicalSpace.Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (hxU : x ∈ U) : + ∃ (V : TopologicalSpace.Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)), x ∈ V ∧ ContractibleSpace V ∧ V ≤ U := by - let e := localChart X (dim X.left) x - have hxsource : x ∈ e.source := mem_localChart_source X (dim X.left) x + let e := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) x + have hxsource : x ∈ e.source := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source X (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) x have hopen : IsOpen (e.target ∩ e.symm ⁻¹' (U : Set _)) := e.isOpen_inter_preimage_symm U.2 have hximage : e x ∈ e.target ∩ e.symm ⁻¹' (U : Set _) := by @@ -238,7 +244,7 @@ lemma exists_contractibleOpen_le [IsIntegral X.left] [Smooth X.hom] rwa [Set.mem_preimage, e.left_inv hxsource] obtain ⟨r, hr, hball⟩ := Metric.nhds_basis_ball.mem_iff.mp (hopen.mem_nhds hximage) - let V : TopologicalSpace.Opens (ComplexPoint X) := + let V : TopologicalSpace.Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := ⟨e.source ∩ e ⁻¹' Metric.ball (e x) r, e.isOpen_inter_preimage Metric.isOpen_ball⟩ have hxV : x ∈ V := ⟨hxsource, Metric.mem_ball_self hr⟩ @@ -262,16 +268,21 @@ lemma exists_contractibleOpen_le [IsIntegral X.left] [Smooth X.hom] exact ⟨V, hxV, hVcontractible, hVU⟩ /-- The analytic topology on the smooth complex-point space is locally path connected. -/ -theorem locallyPathConnectedSpace [IsIntegral X.left] [Smooth X.hom] : - LocallyPathConnectedSpace (ComplexPoint X) := by +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.locallyPathConnectedSpace [IsIntegral X.left] [Smooth X.hom] : + LocallyPathConnectedSpace (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := by refine ⟨fun x ↦ hasBasis_self.mpr fun S hS ↦ ?_⟩ obtain ⟨U, hUS, hUopen, hxU⟩ := mem_nhds_iff.mp hS - let Uo : TopologicalSpace.Opens (ComplexPoint X) := ⟨U, hUopen⟩ + let Uo : TopologicalSpace.Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := ⟨U, hUopen⟩ obtain ⟨V, hxV, hVcontractible, hVU⟩ := - exists_contractibleOpen_le X x Uo hxU + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_contractibleOpen_le X x Uo hxU refine ⟨(V : Set _), V.2.mem_nhds hxV, ?_, ?_⟩ · rw [isPathConnected_iff_pathConnectedSpace] infer_instance · exact fun z hz ↦ hUS (hVU hz) -end AlgebraicGeometry.ComplexPoint +end +end + +end + +end OAI.AlgebraicGeometry.ComplexPoint.Manifold diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Open.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Open.lean index dba1063511..bbb89aaa8d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Open.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Open.lean @@ -12,12 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.ComplexPoint.Open + +open _root_.AlgebraicGeometry + /-! # Complex points of open subschemes @@ -27,29 +32,30 @@ points of the ambient scheme. In particular, an open immersion of this form indu embedding on complex points. -/ -@[expose] public section +section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicGeometry.ComplexPoint +section +section -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point noncomputable section variable (X : Over (Spec ↧ℂ)) (U : X.left.Opens) /-- An open subscheme with its induced complex structure. -/ -abbrev openScheme : Over (Spec ↧ℂ) := +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme : Over (Spec ↧ℂ) := Over.mk (U.ι ≫ X.hom) /-- The inclusion of an open subscheme as a morphism over `Spec ℂ`. -/ -abbrev openInclusion : - openScheme X U ⟶ X := +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U ⟶ X := Over.homMk U.ι rfl /-- The image of a complex point lying in `U` is contained in the image of its inclusion. -/ -lemma point_range_subset (z : ComplexPoint X) (hz : z ∈ overOpen U) : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.point_range_subset (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hz : z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U) : Set.range z.left ⊆ Set.range U.ι := by rintro y ⟨x, rfl⟩ rw [Scheme.Opens.range_ι] @@ -58,79 +64,79 @@ lemma point_range_subset (z : ComplexPoint X) (hz : z ∈ overOpen U) : exact hz /-- A complex point in an open set factors through the corresponding open subscheme. -/ -def liftToOpen (z : ComplexPoint X) (hz : z ∈ overOpen U) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.liftToOpen (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hz : z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U) : Spec ↧ℂ ⟶ U.toScheme := - IsOpenImmersion.lift U.ι z.left (point_range_subset X U z hz) + IsOpenImmersion.lift U.ι z.left (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.point_range_subset X U z hz) @[reassoc (attr := simp)] -lemma liftToOpen_fac (z : ComplexPoint X) (hz : z ∈ overOpen U) : - liftToOpen X U z hz ≫ U.ι = z.left := +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.liftToOpen_fac (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hz : z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.liftToOpen X U z hz ≫ U.ι = z.left := IsOpenImmersion.lift_fac _ _ _ /-- A point of `X` lying in `U`, regarded as a complex point of the open subscheme `U`. -/ -def asOpenPoint (z : ComplexPoint X) (hz : z ∈ overOpen U) : - ComplexPoint (openScheme X U) := - Over.homMk (liftToOpen X U z hz) (by - change liftToOpen X U z hz ≫ (U.ι ≫ X.hom) = 𝟙 _ - rw [← Category.assoc, liftToOpen_fac] +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.asOpenPoint (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hz : z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U) := + Over.homMk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.liftToOpen X U z hz) (by + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.liftToOpen X U z hz ≫ (U.ι ≫ X.hom) = 𝟙 _ + rw [← Category.assoc, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.liftToOpen_fac] exact Over.w z) /-- Complex points of an open subscheme are the ambient complex points lying in the open. -/ -def openEquiv : - ComplexPoint (openScheme X U) ≃ - {z : ComplexPoint X // z ∈ overOpen U} where - toFun z := ⟨map (openInclusion X U) z, by - change (map (openInclusion X U) z).underlying ∈ U - rw [underlying_map] +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openEquiv : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U) ≃ + {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U} where + toFun z := ⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X U) z, by + change (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X U) z).underlying ∈ U + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying_map] exact z.underlying.property⟩ - invFun z := asOpenPoint X U z.1 z.2 + invFun z := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.asOpenPoint X U z.1 z.2 left_inv z := by apply Over.OverMorphism.ext symm - apply IsOpenImmersion.lift_uniq U.ι (map (openInclusion X U) z).left - simp [map] - right_inv z := Subtype.ext (Over.OverMorphism.ext (liftToOpen_fac X U z.1 z.2)) + apply IsOpenImmersion.lift_uniq U.ι (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X U) z).left + simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map] + right_inv z := Subtype.ext (Over.OverMorphism.ext (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.liftToOpen_fac X U z.1 z.2)) @[simp] -lemma openEquiv_coe (z : ComplexPoint (openScheme X U)) : - (openEquiv X U z).1 = map (openInclusion X U) z := +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openEquiv_coe (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U)) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openEquiv X U z).1 = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X U) z := rfl /-- The map from an open subscheme to its ambient open subspace is continuous. -/ -lemma continuous_openEquiv : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_openEquiv : @Continuous - (ComplexPoint (openScheme X U)) - {z : ComplexPoint X // z ∈ overOpen U} - analyticTopology (TopologicalSpace.induced Subtype.val analyticTopology) - (openEquiv X U) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U)) + {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U} + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (TopologicalSpace.induced Subtype.val _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openEquiv X U) := @Continuous.subtype_mk - (ComplexPoint X) - (ComplexPoint (openScheme X U)) - analyticTopology analyticTopology - (fun z ↦ z ∈ overOpen U) (map (openInclusion X U)) - (continuous_map (openInclusion X U)) _ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U)) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology + (fun z ↦ z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X U)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.continuous_map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X U)) _ /-- Evaluation is unchanged when both a point and a section are transported across equal opens. -/ -lemma evaluate_eq {Y : Over (Spec ↧ℂ)} - {V W : Y.left.Opens} (e : V = W) (t : Γ(Y.left, V)) (z : ComplexPoint Y) : - evaluate V t z = evaluate W (Y.left.presheaf.map (eqToHom e.symm).op t) z := by aesop +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_eq {Y : Over (Spec ↧ℂ)} + {V W : Y.left.Opens} (e : V = W) (t : Γ(Y.left, V)) (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate V t z = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate W (Y.left.presheaf.map (eqToHom e.symm).op t) z := by aesop /-- Evaluation commutes with the equivalence between an open subscheme and its ambient open. -/ -lemma evaluate_openEquiv {V : U.toScheme.Opens} (t : Γ(U.toScheme, V)) - (z : ComplexPoint (openScheme X U)) : - evaluate (U.ι ''ᵁ V) ((U.ι.appIso V).inv t) (map (openInclusion X U) z) = - evaluate V t z := by - rw [evaluate_map] +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_openEquiv {V : U.toScheme.Opens} (t : Γ(U.toScheme, V)) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U)) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate (U.ι ''ᵁ V) ((U.ι.appIso V).inv t) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X U) z) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate V t z := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_map] let e : U.ι ⁻¹ᵁ U.ι ''ᵁ V = V := U.ι.preimage_image_eq V let q := U.ι.app (U.ι ''ᵁ V) ((U.ι.appIso V).inv t) have hq : q = U.toScheme.presheaf.map (eqToHom e).op t := by change ((U.ι.appIso V).inv ≫ U.ι.app (U.ι ''ᵁ V)) t = _ rw [U.ι.appIso_inv_app] calc - evaluate (U.ι ⁻¹ᵁ U.ι ''ᵁ V) q z = - evaluate V (U.toScheme.presheaf.map (eqToHom e.symm).op q) z := - evaluate_eq (Y := openScheme X U) e q z - _ = evaluate V t z := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate (U.ι ⁻¹ᵁ U.ι ''ᵁ V) q z = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate V (U.toScheme.presheaf.map (eqToHom e.symm).op q) z := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_eq (Y := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U) e q z + _ = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate V t z := by congr 2 rw [hq] change (U.toScheme.presheaf.map (eqToHom e).op ≫ @@ -140,54 +146,59 @@ lemma evaluate_openEquiv {V : U.toScheme.Opens} (t : Γ(U.toScheme, V)) rfl /-- The inverse map from the ambient open subspace is continuous. -/ -lemma continuous_openEquiv_symm : +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_openEquiv_symm : @Continuous - {z : ComplexPoint X // z ∈ overOpen U} - (ComplexPoint (openScheme X U)) - (TopologicalSpace.induced Subtype.val analyticTopology) analyticTopology - (openEquiv X U).symm := by - rw [continuous_iff_analyticSubbasis] + {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U} + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U)) + (TopologicalSpace.induced Subtype.val _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openEquiv X U).symm := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.continuous_iff_analyticSubbasis] rintro W ⟨V, t, O, hO, rfl⟩ - let A : Set (ComplexPoint X) := overOpen (U.ι ''ᵁ V) ∩ - evaluate (U.ι ''ᵁ V) ((U.ι.appIso V).inv t) ⁻¹' O - have hA : @IsOpen (ComplexPoint X) analyticTopology A := - isOpen_overOpen_inter_preimage _ _ _ hO - rw [show (openEquiv X U).symm ⁻¹' - (overOpen V ∩ evaluate V t ⁻¹' O) = Subtype.val ⁻¹' A by + let A : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen (U.ι ''ᵁ V) ∩ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate (U.ι ''ᵁ V) ((U.ι.appIso V).inv t) ⁻¹' O + have hA : @IsOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology A := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isOpen_overOpen_inter_preimage _ _ _ hO + rw [show (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openEquiv X U).symm ⁻¹' + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen V ∩ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate V t ⁻¹' O) = Subtype.val ⁻¹' A by ext y - let z := (openEquiv X U).symm y - have hy : openEquiv X U z = y := - (openEquiv X U).apply_symm_apply y + let z := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openEquiv X U).symm y + have hy : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openEquiv X U z = y := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openEquiv X U).apply_symm_apply y rw [← hy] simp only [Set.mem_preimage, Equiv.symm_apply_apply, Set.mem_inter_iff] - change (z ∈ overOpen V ∧ evaluate V t z ∈ O) ↔ - (map (openInclusion X U) z ∈ overOpen (U.ι ''ᵁ V) ∧ - evaluate (U.ι ''ᵁ V) ((U.ι.appIso V).inv t) (map (openInclusion X U) z) ∈ O) - rw [evaluate_openEquiv] - exact and_congr_left' (by simp [overOpen])] + change (z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen V ∧ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate V t z ∈ O) ↔ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X U) z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen (U.ι ''ᵁ V) ∧ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate (U.ι ''ᵁ V) ((U.ι.appIso V).inv t) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X U) z) ∈ O) + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_openEquiv] + exact and_congr_left' (by simp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen])] exact @isOpen_induced - {z : ComplexPoint X // z ∈ overOpen U} - (ComplexPoint X) analyticTopology Subtype.val A hA + {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U} + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology Subtype.val A hA /-- Analytification of an open subscheme is the corresponding analytic open subspace. -/ -def openHomeomorph : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph : @Homeomorph - (ComplexPoint (openScheme X U)) - {z : ComplexPoint X // z ∈ overOpen U} - analyticTopology (TopologicalSpace.induced Subtype.val analyticTopology) where - toEquiv := openEquiv X U - continuous_toFun := continuous_openEquiv X U - continuous_invFun := continuous_openEquiv_symm X U + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U)) + {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U} + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (TopologicalSpace.induced Subtype.val _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology) where + toEquiv := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openEquiv X U + continuous_toFun := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_openEquiv X U + continuous_invFun := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_openEquiv_symm X U /-- Inclusion of an open subscheme induces an open embedding on complex points. -/ -lemma isOpenEmbedding_map_open : - IsOpenEmbedding (map (openInclusion X U) : - ComplexPoint (openScheme X U) → ComplexPoint X) := by - have hU : IsOpen (overOpen U : Set (ComplexPoint X)) := isOpen_overOpen (X := X) U - have h := hU.isOpenEmbedding_subtypeVal.comp (openHomeomorph X U).isOpenEmbedding - simpa [Function.comp_def, openHomeomorph, openEquiv] using h +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpenEmbedding_map_open : + IsOpenEmbedding (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X U) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U) → _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := by + have hU : IsOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isOpen_overOpen (X := X) U + have h := hU.isOpenEmbedding_subtypeVal.comp (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X U).isOpenEmbedding + simpa [Function.comp_def, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openEquiv] using h + +end + +end end +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.ComplexPoint.Open diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Projective.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Projective.lean index c225aed74e..541dce2908 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Projective.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/Projective.lean @@ -12,18 +12,23 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AffineSpace -public import Mathlib.AlgebraicGeometry.ProjectiveSpectrum.Basic -public import Mathlib.LinearAlgebra.Projectivization.Basic -public import Mathlib.Tactic.Bound +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AffineSpace +import Mathlib.AlgebraicGeometry.ProjectiveSpectrum.Basic +import Mathlib.LinearAlgebra.Projectivization.Basic +import Mathlib.Tactic.Bound import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import Mathlib.AlgebraicGeometry.AlgClosed.Basic import Mathlib.Analysis.Complex.Polynomial.Basic +namespace OAI.AlgebraicGeometry.ComplexPoint.Projective + +open _root_.AlgebraicGeometry + /-! # Projective analytification @@ -38,12 +43,12 @@ projectivization onto the complex points of scheme-theoretic projective space. T scheme-theoretic projective space is analytically compact. -/ -@[expose] public section +section -open CategoryTheory Metric Opposite TopologicalSpace Topology +open _root_.CategoryTheory _root_.Metric Opposite _root_.TopologicalSpace _root_.Topology open scoped LinearAlgebra.Projectivization -namespace AlgebraicGeometry +section namespace ComplexProjectiveSpace @@ -322,7 +327,6 @@ lemma chartGenerator_eq_prod {n a : ℕ} (i : Fin (n + 1)) rw [Localization.r_iff_exists] simp [Finset.prod_pow_eq_pow_sum, hai] -set_option linter.style.haveILetI false in /-- A ring map from a standard projective chart is determined by the coordinate ratios. -/ lemma awayRingHom_ext {n : ℕ} (i : Fin (n + 1)) (φ ψ : HomogeneousLocalization.Away (UniversalGrading n) @@ -334,7 +338,7 @@ lemma awayRingHom_ext {n : ℕ} (i : Fin (n + 1)) (Submonoid.powers (MvPolynomial.X i : UniversalRing n)) a)) (hcoord : ∀ j, φ (chartCoordinate i j) = ψ (chartCoordinate i j)) : φ = ψ := by - letI : Algebra (UniversalGrading n 0) ℂ := + let : Algebra (UniversalGrading n 0) ℂ := (φ.comp (HomogeneousLocalization.fromZeroRingHom (UniversalGrading n) (Submonoid.powers (MvPolynomial.X i : UniversalRing n)))).toAlgebra let φa : HomogeneousLocalization.Away (UniversalGrading n) @@ -365,13 +369,13 @@ lemma degreeZero_ringHom_unique {n : ℕ} (φ ψ : UniversalGrading n 0 →+* ℂ) : φ = ψ := by ext a obtain ⟨z, rfl⟩ := - (ProjectiveSpace.degreeZeroEquiv (Fin (n + 1)) (ULift ℤ)).symm.surjective a + (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.degreeZeroEquiv (Fin (n + 1)) (ULift ℤ)).symm.surjective a obtain ⟨z, rfl⟩ := (ULift.ringEquiv (R := ℤ)).symm.surjective z exact DFunLike.congr_fun (Subsingleton.elim - ((φ.comp (ProjectiveSpace.degreeZeroEquiv + ((φ.comp (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.degreeZeroEquiv (Fin (n + 1)) (ULift ℤ)).symm.toRingHom).comp (ULift.ringEquiv (R := ℤ)).symm.toRingHom) - ((ψ.comp (ProjectiveSpace.degreeZeroEquiv + ((ψ.comp (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.degreeZeroEquiv (Fin (n + 1)) (ULift ℤ)).symm.toRingHom).comp (ULift.ringEquiv (R := ℤ)).symm.toRingHom)) z @@ -519,7 +523,6 @@ noncomputable def chartIntegralProjAt {n : ℕ} (v : CoordinateSpace n) Proj.awayι (UniversalGrading n) (MvPolynomial.X i) (MvPolynomial.isHomogeneous_X _ _) zero_lt_one -set_option linter.style.haveILetI false in /-- Every complex point whose image lies in a standard projective chart is obtained by evaluating homogeneous coordinates. -/ lemma exists_coordinates_of_range_subset_chart {n : ℕ} @@ -531,7 +534,7 @@ lemma exists_coordinates_of_range_subset_chart {n : ℕ} chartIntegralProjAt v i hi = q := by let e := Proj.awayι (UniversalGrading n) (MvPolynomial.X i) (MvPolynomial.isHomogeneous_X _ _) zero_lt_one - letI : IsOpenImmersion e := by + let : IsOpenImmersion e := by dsimp [e] exact Proj.instIsOpenImmersionAwayι (UniversalGrading n) (MvPolynomial.X i) (MvPolynomial.isHomogeneous_X _ _) zero_lt_one @@ -699,7 +702,7 @@ lemma surjective_chartIntegralProj {n : ℕ} : /-- Nonzero homogeneous coordinates define a point of scheme-theoretic projective space over `Spec ℂ`. -/ noncomputable def vectorToProjectiveSpace {n : ℕ} (v : CoordinateSpace n) (hv : v ≠ 0) : - Spec ↧ℂ ⟶ ProjectiveSpace (Fin (n + 1)) (Spec ↧ℂ) := + Spec ↧ℂ ⟶ _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace (Fin (n + 1)) (Spec ↧ℂ) := Limits.pullback.lift (𝟙 _) (chartIntegralProj v hv) (Subsingleton.elim _ _) /-- Rescaling homogeneous coordinates does not change the resulting projective-space @@ -716,13 +719,13 @@ lemma vectorToProjectiveSpace_smul {n : ℕ} (v : CoordinateSpace n) (hv : v ≠ @[simp] lemma vectorToProjectiveSpace_toBase {n : ℕ} (v : CoordinateSpace n) (hv : v ≠ 0) : vectorToProjectiveSpace v hv ≫ - ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ) = 𝟙 _ := + _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ) = 𝟙 _ := Limits.pullback.lift_fst _ _ _ /-- Nonzero homogeneous coordinates define a complex point of scheme-theoretic projective space. -/ noncomputable def vectorToComplexPoint {n : ℕ} (v : CoordinateSpace n) (hv : v ≠ 0) : - ComplexPoint (Over.mk (ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ))) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ))) := Over.homMk (vectorToProjectiveSpace v hv) (vectorToProjectiveSpace_toBase v hv) /-- Rescaling homogeneous coordinates does not change the resulting complex point. -/ @@ -747,8 +750,8 @@ lemma surjective_vectorToComplexPoint {n : ℕ} : change vectorToProjectiveSpace v.1 v.2 = z.left apply Limits.pullback.hom_ext · change vectorToProjectiveSpace v.1 v.2 ≫ - ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ) = - z.left ≫ ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ) + _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ) = + z.left ≫ _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ) rw [vectorToProjectiveSpace_toBase] exact (Over.w z).symm · rw [vectorToProjectiveSpace, Limits.pullback.lift_snd] @@ -760,7 +763,7 @@ affine coordinates as `X_j/X_i = v_j/v_i` on a chart where `v_i ≠ 0`; the resu independent of scaling `v`. -/ noncomputable def projectivizationToComplexPoint {n : ℕ} : Projectivization ℂ (CoordinateSpace n) → - ComplexPoint (Over.mk (ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ))) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ))) := Projectivization.lift (fun v ↦ vectorToComplexPoint v.1 v.2) (fun a b c h ↦ by @@ -822,24 +825,24 @@ lemma chartAwayPolynomialHom_chartCoordinate {n : ℕ} (i j : Fin (n + 1)) : simp noncomputable def chartAffineToProj {n : ℕ} (i : Fin (n + 1)) : - ComplexPoint.complexAffineSpace (Fin (n + 1)) ⟶ Proj (UniversalGrading n) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin (n + 1)) ⟶ Proj (UniversalGrading n) := (AffineSpace.SpecIso (Fin (n + 1)) ↧ℂ).hom ≫ Spec.map (CommRingCat.ofHom (chartAwayPolynomialHom i)) ≫ Proj.awayι (UniversalGrading n) (MvPolynomial.X i) (MvPolynomial.isHomogeneous_X _ _) zero_lt_one noncomputable def chartAffineToProjectiveSpace {n : ℕ} (i : Fin (n + 1)) : - ComplexPoint.complexAffineSpace (Fin (n + 1)) ⟶ - ProjectiveSpace (Fin (n + 1)) (Spec ↧ℂ) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin (n + 1)) ⟶ + _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace (Fin (n + 1)) (Spec ↧ℂ) := Limits.pullback.lift - (ComplexPoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ) (chartAffineToProj i) (Subsingleton.elim _ _) @[reassoc] lemma chartAffineToProjectiveSpace_over {n : ℕ} (i : Fin (n + 1)) : chartAffineToProjectiveSpace i ≫ - ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ) = - ComplexPoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ := + _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ := Limits.pullback.lift_fst _ _ _ @[reassoc] @@ -852,18 +855,18 @@ lemma chartAffineToProjectiveSpace_toProj {n : ℕ} (i : Fin (n + 1)) : Limits.pullback.lift_snd _ _ _ noncomputable def chartAffineComplexPointMap {n : ℕ} (i : Fin (n + 1)) : - ComplexPoint (Over.mk (ComplexPoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ)) → - ComplexPoint (Over.mk (ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ))) := - Point.map (Over.homMk (chartAffineToProjectiveSpace i) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ)) → + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ))) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (Over.homMk (chartAffineToProjectiveSpace i) (chartAffineToProjectiveSpace_over i)) lemma continuous_chartAffineComplexPointMap {n : ℕ} (i : Fin (n + 1)) : @Continuous - (ComplexPoint (Over.mk (ComplexPoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ))) - (ComplexPoint (Over.mk (ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) - Point.analyticTopology Point.analyticTopology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ))) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (chartAffineComplexPointMap i) := - Point.continuous_map _ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.continuous_map _ /-- Affine ratio coordinates associated to a vector in the `i`-th standard chart. -/ noncomputable def vectorChartRatios {n : ℕ} (i : Fin (n + 1)) @@ -882,21 +885,21 @@ lemma continuous_vectorChartRatios {n : ℕ} (i : Fin (n + 1)) : noncomputable def vectorChartToAffinePoint {n : ℕ} (i : Fin (n + 1)) : {v : CoordinateSpace n // v i ≠ 0} → - ComplexPoint (Over.mk (ComplexPoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ)) := - (ComplexPoint.affineSpaceEquiv (Fin (n + 1))).symm ∘ vectorChartRatios i + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ)) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv (Fin (n + 1))).symm ∘ vectorChartRatios i lemma continuous_vectorChartToAffinePoint {n : ℕ} (i : Fin (n + 1)) : @Continuous {v : CoordinateSpace n // v i ≠ 0} - (ComplexPoint (Over.mk (ComplexPoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ))) - inferInstance Point.analyticTopology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ))) + inferInstance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (vectorChartToAffinePoint i) := - (ComplexPoint.affineSpaceHomeomorph (Fin (n + 1))).symm.continuous.comp + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceHomeomorph (Fin (n + 1))).symm.continuous.comp (continuous_vectorChartRatios i) lemma continuous_chartVectorToComplexPoint {n : ℕ} (i : Fin (n + 1)) : @Continuous {v : CoordinateSpace n // v i ≠ 0} - (ComplexPoint (Over.mk (ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) - inferInstance Point.analyticTopology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) + inferInstance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (chartAffineComplexPointMap i ∘ vectorChartToAffinePoint i) := by exact (continuous_chartAffineComplexPointMap i).comp (continuous_vectorChartToAffinePoint i) @@ -925,23 +928,23 @@ lemma vectorChartToAffinePoint_comp_SpecIso {n : ℕ} (i : Fin (n + 1)) · intro c rw [specPreimage_apply] simp only [Scheme.Hom.comp_appTop, CommRingCat.comp_apply] - rw [ComplexPoint.SpecIso_hom_appTop_C] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.SpecIso_hom_appTop_C] change (Scheme.ΓSpecIso ↧ℂ).hom - ((((ComplexPoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ).appTop ≫ + ((((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ).appTop ≫ (vectorChartToAffinePoint i v).left.appTop)) ((Scheme.ΓSpecIso ↧ℂ).inv c)) = _ rw [← Scheme.Hom.comp_appTop, show (vectorChartToAffinePoint i v).left ≫ - (ComplexPoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ) = 𝟙 _ from + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ) = 𝟙 _ from Over.w (vectorChartToAffinePoint i v)] simp · intro j rw [specPreimage_apply] simp only [Scheme.Hom.comp_appTop, CommRingCat.comp_apply] - rw [ComplexPoint.SpecIso_hom_appTop_X] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.SpecIso_hom_appTop_X] change (Scheme.ΓSpecIso ↧ℂ).hom ((vectorChartToAffinePoint i v).left.appTop (AffineSpace.coord (Spec ↧ℂ) j)) = _ - simp [vectorChartToAffinePoint, ComplexPoint.affineSpaceEquiv] + simp [vectorChartToAffinePoint, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv] set_option backward.isDefEq.respectTransparency.types false in lemma chartAwayPolynomialHom_evaluate_ratios {n : ℕ} (i : Fin (n + 1)) @@ -1007,16 +1010,16 @@ lemma chartVectorToComplexPoint_eq {n : ℕ} (i : Fin (n + 1)) apply Over.OverMorphism.ext apply Limits.pullback.hom_ext · change ((vectorChartToAffinePoint i v).left ≫ chartAffineToProjectiveSpace i) ≫ - ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ) = + _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ) = vectorToProjectiveSpace v.1 (vector_ne_zero_of_coordinate v.1 i v.2) ≫ - ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ) + _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ) calc _ = (vectorChartToAffinePoint i v).left ≫ (chartAffineToProjectiveSpace i ≫ - ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)) := + _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)) := Category.assoc _ _ _ _ = (vectorChartToAffinePoint i v).left ≫ - (ComplexPoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ) := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin (n + 1)) ↘ Spec ↧ℂ) := by rw [chartAffineToProjectiveSpace_over] _ = 𝟙 _ := Over.w (vectorChartToAffinePoint i v) _ = _ := (vectorToProjectiveSpace_toBase _ _).symm @@ -1066,8 +1069,8 @@ lemma iUnion_nonzeroVectorChart {n : ℕ} : lemma continuousOn_vectorToComplexPoint_chart {n : ℕ} (i : Fin (n + 1)) : @ContinuousOn {v : CoordinateSpace n // v ≠ 0} - (ComplexPoint (Over.mk (ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) - inferInstance Point.analyticTopology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) + inferInstance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (fun v ↦ vectorToComplexPoint v.1 v.2) (nonzeroVectorChart i) := by rw [continuousOn_iff_continuous_domRestrict] have h := (continuous_chartVectorToComplexPoint i).comp @@ -1076,8 +1079,8 @@ lemma continuousOn_vectorToComplexPoint_chart {n : ℕ} (i : Fin (n + 1)) : lemma continuous_vectorToComplexPoint {n : ℕ} : @Continuous {v : CoordinateSpace n // v ≠ 0} - (ComplexPoint (Over.mk (ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) - inferInstance Point.analyticTopology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) + inferInstance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (fun v ↦ vectorToComplexPoint v.1 v.2) := by apply continuous_of_continuousOn_iUnion_of_isOpen (continuousOn_vectorToComplexPoint_chart (n := n)) @@ -1086,8 +1089,8 @@ lemma continuous_vectorToComplexPoint {n : ℕ} : lemma continuous_projectivizationToComplexPoint {n : ℕ} : @Continuous (Projectivization ℂ (CoordinateSpace n)) - (ComplexPoint (Over.mk (ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) - (instTopologicalSpace n) Point.analyticTopology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) + (instTopologicalSpace n) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology projectivizationToComplexPoint := by apply Continuous.quotient_lift exact continuous_vectorToComplexPoint @@ -1095,11 +1098,15 @@ lemma continuous_projectivizationToComplexPoint {n : ℕ} : /-- Finite-dimensional scheme-theoretic complex projective space is analytically compact. -/ noncomputable instance instCompactSpaceProjectiveSpaceComplexPoint (n : ℕ) : CompactSpace - (ComplexPoint (Over.mk (ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) := by constructor rw [← (surjective_projectivizationToComplexPoint (n := n)).range_eq] exact isCompact_range continuous_projectivizationToComplexPoint end ComplexProjectiveSpace -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.ComplexPoint.Projective diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ProjectiveCompact.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ProjectiveCompact.lean index ce4a28f558..262bf5b144 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ProjectiveCompact.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ProjectiveCompact.lean @@ -12,14 +12,19 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ClosedImmersion -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Projective +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ClosedImmersion +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Projective import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.ComplexPoint.ProjectiveCompact + +open _root_.AlgebraicGeometry + /-! # Analytic compactness of a projective complex scheme @@ -30,43 +35,43 @@ complex points of projective space, which are analytically compact. Consequently the analytic complex points of any projective complex scheme form a compact space. -/ -@[expose] public section +section -open CategoryTheory Opposite TopologicalSpace Topology +open _root_.CategoryTheory Opposite _root_.TopologicalSpace _root_.Topology -namespace AlgebraicGeometry +section namespace ProjectiveSpace.Presentation /-- The immersion of a projective presentation, bundled over the complex base. -/ noncomputable abbrev overImmersion {X : Scheme} {f : X ⟶ Spec ↧ℂ} - (P : ProjectiveSpace.Presentation f) : + (P : _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.Presentation f) : Over.mk f ⟶ - Over.mk (ProjectiveSpace.toBase (Fin (P.ambientDimension + 1)) (Spec ↧ℂ)) := + Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (P.ambientDimension + 1)) (Spec ↧ℂ)) := Over.homMk P.immersion P.immersion_toBase /-- The continuous map on complex points induced by an explicit projective presentation. -/ noncomputable def analyticImmersion {X : Scheme} {f : X ⟶ Spec ↧ℂ} - (P : ProjectiveSpace.Presentation f) : - @ContinuousMap (ComplexPoint (Over.mk f)) - (ComplexPoint (Over.mk (ProjectiveSpace.toBase (Fin (P.ambientDimension + 1)) (Spec ↧ℂ)))) - Point.analyticTopology Point.analyticTopology := - Point.continuousMap (overImmersion P) + (P : _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.Presentation f) : + @ContinuousMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk f)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (P.ambientDimension + 1)) (Spec ↧ℂ)))) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.continuousMap (overImmersion P) /-- The analytic map of an explicit projective presentation is a closed topological embedding. -/ lemma analyticImmersion_isClosedEmbedding {X : Scheme} {f : X ⟶ Spec ↧ℂ} - (P : ProjectiveSpace.Presentation f) : - @IsClosedEmbedding (ComplexPoint (Over.mk f)) - (ComplexPoint (Over.mk (ProjectiveSpace.toBase (Fin (P.ambientDimension + 1)) (Spec ↧ℂ)))) - Point.analyticTopology Point.analyticTopology (analyticImmersion P) := by + (P : _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.Presentation f) : + @IsClosedEmbedding (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk f)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (P.ambientDimension + 1)) (Spec ↧ℂ)))) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology (analyticImmersion P) := by let : IsClosedImmersion (overImmersion P).left := P.isClosedImmersion - exact ComplexPoint.isClosedEmbedding_map_of_closedImmersion (overImmersion P) + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isClosedEmbedding_map_of_closedImmersion (overImmersion P) /-- The analytic complex points of an explicit projective presentation form a compact space. -/ theorem complexPoint_compactSpace {X : Scheme} {f : X ⟶ Spec ↧ℂ} - (P : ProjectiveSpace.Presentation f) : - @CompactSpace (ComplexPoint (Over.mk f)) Point.analyticTopology := by + (P : _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.Presentation f) : + @CompactSpace (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk f)) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology := by exact (analyticImmersion_isClosedEmbedding P).compactSpace end ProjectiveSpace.Presentation @@ -74,11 +79,15 @@ end ProjectiveSpace.Presentation namespace IsProjective /-- The analytic complex points of a projective complex scheme form a compact space. -/ -noncomputable instance complexPoint_compactSpace {X : Over (Spec ↧ℂ)} - [h : IsProjective X.hom] : CompactSpace (ComplexPoint X) := - ProjectiveSpace.Presentation.complexPoint_compactSpace +noncomputable instance _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective.complexPoint_compactSpace {X : Over (Spec ↧ℂ)} + [h : _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] : CompactSpace (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.ProjectiveCompact.ProjectiveSpace.Presentation.complexPoint_compactSpace (Classical.choice h.nonempty_presentation) end IsProjective -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.ComplexPoint.ProjectiveCompact diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ProjectiveHausdorff.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ProjectiveHausdorff.lean index c630840e05..5747c83f77 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ProjectiveHausdorff.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ProjectiveHausdorff.lean @@ -12,14 +12,19 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ProjectiveCompact +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ProjectiveCompact import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Open import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.ComplexPoint.ProjectiveHausdorff + +open _root_.AlgebraicGeometry + /-! # Hausdorff analytifications of projective complex schemes @@ -30,19 +35,19 @@ of two homogeneous coordinate vectors. Pulling this open back along a closed pro presentation proves that every projective complex scheme has Hausdorff analytification. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicGeometry +section -namespace ComplexPoint +section -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point /-- The analytification of an affine complex scheme is Hausdorff. -/ -lemma t2Space_of_isAffine (X : Over (Spec ↧ℂ)) [IsAffine X.left] : - @T2Space (ComplexPoint X) analyticTopology := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.t2Space_of_isAffine (X : Over (Spec ↧ℂ)) [IsAffine X.left] : + @T2Space (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology := by rw [t2Space_iff_nhds] intro z w hzw have happ : z.left.appTop ≠ w.left.appTop := fun h ↦ @@ -56,41 +61,41 @@ lemma t2Space_of_isAffine (X : Over (Spec ↧ℂ)) [IsAffine X.left] : ext s exact (Scheme.ΓSpecIso ↧ℂ).commRingCatIsoToRingEquiv.injective (hn s) obtain ⟨s, hs⟩ := hex - have heval : evaluate ⊤ s z ≠ evaluate ⊤ s w := by - simpa only [evaluate_top_eq_appTop] using hs + have heval : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ s z ≠ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ s w := by + simpa only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_top_eq_appTop] using hs obtain ⟨U, V, hU, hV, hzU, hwV, hUV⟩ := t2_separation heval - refine ⟨evaluate ⊤ s ⁻¹' U, - (hU.preimage (continuous_evaluate_top s)).mem_nhds hzU, - evaluate ⊤ s ⁻¹' V, - (hV.preimage (continuous_evaluate_top s)).mem_nhds hwV, ?_⟩ + refine ⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ s ⁻¹' U, + (hU.preimage (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_evaluate_top s)).mem_nhds hzU, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ s ⁻¹' V, + (hV.preimage (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_evaluate_top s)).mem_nhds hwV, ?_⟩ exact hUV.preimage _ /-- A complex scheme whose every pair of complex points lies in a common affine open has a Hausdorff analytification. -/ -lemma t2Space_of_pair_mem_affineOpen (X : Over (Spec ↧ℂ)) - (hpair : ∀ z w : ComplexPoint X, - ∃ U : X.left.Opens, z ∈ overOpen U ∧ w ∈ overOpen U ∧ IsAffine U.toScheme) : - @T2Space (ComplexPoint X) analyticTopology := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.t2Space_of_pair_mem_affineOpen (X : Over (Spec ↧ℂ)) + (hpair : ∀ z w : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X, + ∃ U : X.left.Opens, z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U ∧ w ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U ∧ IsAffine U.toScheme) : + @T2Space (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology := by rw [t2Space_iff_nhds] intro z w hzw obtain ⟨U, hzU, hwU, hUaff⟩ := hpair z w - let : IsAffine (openScheme X U).left := hUaff - let : T2Space (ComplexPoint (openScheme X U)) := - t2Space_of_isAffine (openScheme X U) - let : T2Space {q : ComplexPoint X // q ∈ overOpen U} := - (openHomeomorph X U).t2Space - let zU : {q : ComplexPoint X // q ∈ overOpen U} := ⟨z, hzU⟩ - let wU : {q : ComplexPoint X // q ∈ overOpen U} := ⟨w, hwU⟩ + let : IsAffine (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U).left := hUaff + let : T2Space (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U)) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.t2Space_of_isAffine (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X U) + let : T2Space {q : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // q ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U} := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X U).t2Space + let zU : {q : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // q ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U} := ⟨z, hzU⟩ + let wU : {q : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // q ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U} := ⟨w, hwU⟩ have hzwU : zU ≠ wU := fun h ↦ hzw (congrArg Subtype.val h) obtain ⟨A, B, hA, hB, hzA, hwB, hAB⟩ := t2_separation hzwU - let e : {q : ComplexPoint X // q ∈ overOpen U} → - ComplexPoint X := Subtype.val - have he : IsOpenEmbedding e := (isOpen_overOpen (X := X) U).isOpenEmbedding_subtypeVal + let e : {q : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // q ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U} → + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X := Subtype.val + have he : IsOpenEmbedding e := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isOpen_overOpen (X := X) U).isOpenEmbedding_subtypeVal refine ⟨e '' A, (he.isOpenMap A hA).mem_nhds ⟨zU, hzA, rfl⟩, e '' B, (he.isOpenMap B hB).mem_nhds ⟨wU, hwB, rfl⟩, ?_⟩ exact Set.disjoint_image_of_injective he.injective hAB -end ComplexPoint +end namespace ComplexProjectiveSpace @@ -101,134 +106,133 @@ attribute [local instance] MvPolynomial.gradedAlgebra /-- There is an integral linear form which is nonzero on each of two nonzero complex coordinate vectors. -/ lemma exists_common_nonvanishing_linearForm {n : ℕ} - (v w : CoordinateSpace n) (hv : v ≠ 0) (hw : w ≠ 0) : - ∃ r : UniversalRing n, - r ∈ UniversalGrading n 1 ∧ - (Scheme.ΓSpecIso ↧ℂ).hom (coordinateGlobalSectionsHom v r) ≠ 0 ∧ - (Scheme.ΓSpecIso ↧ℂ).hom (coordinateGlobalSectionsHom w r) ≠ 0 := by - let i := coordinateIndex v hv - have hvi : v i ≠ 0 := coordinateIndex_ne_zero v hv + (v w : _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.CoordinateSpace n) (hv : v ≠ 0) (hw : w ≠ 0) : + ∃ r : _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalRing n, + r ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n 1 ∧ + (Scheme.ΓSpecIso ↧ℂ).hom (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateGlobalSectionsHom v r) ≠ 0 ∧ + (Scheme.ΓSpecIso ↧ℂ).hom (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateGlobalSectionsHom w r) ≠ 0 := by + let i := _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateIndex v hv + have hvi : v i ≠ 0 := _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateIndex_ne_zero v hv by_cases hwi : w i ≠ 0 · refine ⟨MvPolynomial.X i, MvPolynomial.isHomogeneous_X _ _, ?_, ?_⟩ · simpa using hvi · simpa using hwi - · let j := coordinateIndex w hw - have hwj : w j ≠ 0 := coordinateIndex_ne_zero w hw + · let j := _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateIndex w hw + have hwj : w j ≠ 0 := _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateIndex_ne_zero w hw have hwi0 : w i = 0 := not_ne_iff.mp hwi by_cases hvij : v i + v j ≠ 0 · refine ⟨MvPolynomial.X i + MvPolynomial.X j, - (UniversalGrading n 1).add_mem + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n 1).add_mem (MvPolynomial.isHomogeneous_X _ _) (MvPolynomial.isHomogeneous_X _ _), ?_, ?_⟩ · simpa using hvij - · simpa [coordinateGlobalSectionsHom_X, hwi0] using hwj + · simpa [_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateGlobalSectionsHom_X, hwi0] using hwj · refine ⟨MvPolynomial.X i - MvPolynomial.X j, - (UniversalGrading n 1).sub_mem + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n 1).sub_mem (MvPolynomial.isHomogeneous_X _ _) (MvPolynomial.isHomogeneous_X _ _), ?_, ?_⟩ · push Not at hvij have hvj : v j = -v i := by linear_combination hvij - simp only [map_sub, coordinateGlobalSectionsHom_X] + simp only [map_sub, _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateGlobalSectionsHom_X] simp rw [hvj] simpa using hvi - · simpa [coordinateGlobalSectionsHom_X, hwi0] using hwj + · simpa [_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateGlobalSectionsHom_X, hwi0] using hwj /-- A homogeneous polynomial is nonzero at a coordinate vector exactly when the corresponding projective point lies in its basic open. -/ lemma chartIntegralProjAt_preimage_basicOpen {n d : ℕ} - (v : CoordinateSpace n) (i : Fin (n + 1)) (hi : v i ≠ 0) - (r : UniversalRing n) (hd : 0 < d) (hr : r ∈ UniversalGrading n d) : - chartIntegralProjAt v i hi ⁻¹ᵁ Proj.basicOpen (UniversalGrading n) r = - if coordinateEvaluationHom v r = 0 then ⊥ else ⊤ := by - unfold chartIntegralProjAt - rw [Scheme.Hom.comp_preimage, show Proj.awayι (UniversalGrading n) (MvPolynomial.X i) + (v : _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.CoordinateSpace n) (i : Fin (n + 1)) (hi : v i ≠ 0) + (r : _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalRing n) (hd : 0 < d) (hr : r ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n d) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.chartIntegralProjAt v i hi ⁻¹ᵁ Proj.basicOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n) r = + if _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateEvaluationHom v r = 0 then ⊥ else ⊤ := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.chartIntegralProjAt + rw [Scheme.Hom.comp_preimage, show Proj.awayι (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n) (MvPolynomial.X i) (MvPolynomial.isHomogeneous_X (ULift ℤ) i) zero_lt_one ⁻¹ᵁ - Proj.basicOpen (UniversalGrading n) r = + Proj.basicOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n) r = PrimeSpectrum.basicOpen (HomogeneousLocalization.Away.isLocalizationElem (MvPolynomial.isHomogeneous_X (ULift ℤ) i) hr) from Proj.awayι_preimage_basicOpen - (𝒜 := UniversalGrading n) (f := MvPolynomial.X i) (g := r) + (𝒜 := _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n) (f := MvPolynomial.X i) (g := r) (m := 1) (m' := d) (MvPolynomial.isHomogeneous_X (ULift ℤ) i) zero_lt_one hr hd] rw [SpecMap_preimage_basicOpen, show HomogeneousLocalization.Away.isLocalizationElem (MvPolynomial.isHomogeneous_X (ULift ℤ) i) hr = - HomogeneousLocalization.Away.mk (UniversalGrading n) + HomogeneousLocalization.Away.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n) (MvPolynomial.isHomogeneous_X (ULift ℤ) i) d r (by simpa using hr) by apply HomogeneousLocalization.val_injective simp [HomogeneousLocalization.Away.isLocalizationElem]] simp only [CommRingCat.hom_ofHom] - rw [awayCoordinateEvaluation_mk v i hi d r hr] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.awayCoordinateEvaluation_mk v i hi d r hr] split_ifs with h · rw [h, zero_mul, PrimeSpectrum.basicOpen_zero] rfl · apply top_unique intro x hx - change coordinateEvaluationHom v r * (v i)⁻¹ ^ d ∉ x.asIdeal + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateEvaluationHom v r * (v i)⁻¹ ^ d ∉ x.asIdeal rw [Subsingleton.elim x (⊥ : PrimeSpectrum ℂ)] simpa using mul_ne_zero h (pow_ne_zero d (inv_ne_zero hi)) /-- The basic-open membership formula without fixing the selected standard coordinate chart. -/ lemma chartIntegralProj_preimage_basicOpen {n d : ℕ} - (v : CoordinateSpace n) (hv : v ≠ 0) - (r : UniversalRing n) (hd : 0 < d) (hr : r ∈ UniversalGrading n d) : - chartIntegralProj v hv ⁻¹ᵁ Proj.basicOpen (UniversalGrading n) r = - if coordinateEvaluationHom v r = 0 then ⊥ else ⊤ := by - let i := coordinateIndex v hv - let hi : v i ≠ 0 := coordinateIndex_ne_zero v hv + (v : _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.CoordinateSpace n) (hv : v ≠ 0) + (r : _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalRing n) (hd : 0 < d) (hr : r ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n d) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.chartIntegralProj v hv ⁻¹ᵁ Proj.basicOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n) r = + if _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateEvaluationHom v r = 0 then ⊥ else ⊤ := by + let i := _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateIndex v hv + let hi : v i ≠ 0 := _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateIndex_ne_zero v hv exact chartIntegralProjAt_preimage_basicOpen v i hi r hd hr /-- The inverse image of a projective-spectrum basic open in complex projective space. -/ -noncomputable def projectiveSpaceBasicOpen (n : ℕ) (r : UniversalRing n) : - (ProjectiveSpace (Fin (n + 1)) (Spec ↧ℂ)).Opens := +noncomputable def projectiveSpaceBasicOpen (n : ℕ) (r : _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalRing n) : + (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace (Fin (n + 1)) (Spec ↧ℂ)).Opens := Limits.pullback.snd (Limits.terminal.from (Spec ↧ℂ)) - (Limits.terminal.from (Proj (UniversalGrading n))) ⁻¹ᵁ - Proj.basicOpen (UniversalGrading n) r + (Limits.terminal.from (Proj (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n))) ⁻¹ᵁ + Proj.basicOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n) r -set_option linter.style.haveILetI false in /-- A positive-degree basic open in complex projective space is affine. -/ lemma projectiveSpaceBasicOpen_isAffine {n d : ℕ} - (r : UniversalRing n) (hd : 0 < d) (hr : r ∈ UniversalGrading n d) : + (r : _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalRing n) (hd : 0 < d) (hr : r ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n d) : IsAffine (projectiveSpaceBasicOpen n r).toScheme := by - haveI : MorphismProperty.IsStableUnderBaseChangeAlong (@IsAffineHom) - (Limits.terminal.from (Proj (UniversalGrading n))) := + have : MorphismProperty.IsStableUnderBaseChangeAlong (@IsAffineHom) + (Limits.terminal.from (Proj (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n))) := { of_isPullback := fun pb h ↦ MorphismProperty.IsStableUnderBaseChange.of_isPullback pb h } have hsnd : IsAffineHom (Limits.pullback.snd (Limits.terminal.from (Spec ↧ℂ)) - (Limits.terminal.from (Proj (UniversalGrading n)))) := + (Limits.terminal.from (Proj (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n)))) := MorphismProperty.pullback_snd _ _ inferInstance exact @IsAffineHom.isAffine_preimage _ _ _ hsnd - (Proj.basicOpen (UniversalGrading n) r) + (Proj.basicOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n) r) (Proj.isAffineOpen_basicOpen - (𝒜 := UniversalGrading n) (f := r) hr hd) + (𝒜 := _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n) (f := r) hr hd) /-- A coordinate point lies in the projective-space basic open whenever the defining homogeneous polynomial is nonzero on its coordinates. -/ lemma vectorToComplexPoint_mem_projectiveSpaceBasicOpen {n d : ℕ} - (v : CoordinateSpace n) (hv : v ≠ 0) - (r : UniversalRing n) (hd : 0 < d) (hr : r ∈ UniversalGrading n d) - (hne : coordinateEvaluationHom v r ≠ 0) : - vectorToComplexPoint v hv ∈ Point.overOpen (projectiveSpaceBasicOpen n r) := by - change ((vectorToProjectiveSpace v hv) ≫ Limits.pullback.snd + (v : _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.CoordinateSpace n) (hv : v ≠ 0) + (r : _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalRing n) (hd : 0 < d) (hr : r ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n d) + (hne : _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.coordinateEvaluationHom v r ≠ 0) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.vectorToComplexPoint v hv ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen (projectiveSpaceBasicOpen n r) := by + change ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.vectorToProjectiveSpace v hv) ≫ Limits.pullback.snd (Limits.terminal.from (Spec ↧ℂ)) - (Limits.terminal.from (Proj (UniversalGrading n)))) - (IsLocalRing.closedPoint ℂ) ∈ Proj.basicOpen (UniversalGrading n) r - rw [vectorToProjectiveSpace_toProj] + (Limits.terminal.from (Proj (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n)))) + (IsLocalRing.closedPoint ℂ) ∈ Proj.basicOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n) r + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.vectorToProjectiveSpace_toProj] change IsLocalRing.closedPoint ℂ ∈ - chartIntegralProj v hv ⁻¹ᵁ Proj.basicOpen (UniversalGrading n) r + _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.chartIntegralProj v hv ⁻¹ᵁ Proj.basicOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.UniversalGrading n) r rw [chartIntegralProj_preimage_basicOpen v hv r hd hr, ite_eq_right hne] trivial /-- Any two complex points of finite-dimensional projective space lie in a common affine open. -/ lemma projectiveSpace_pair_mem_affineOpen (n : ℕ) - (z w : ComplexPoint (Over.mk (ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) : - ∃ U : (ProjectiveSpace (Fin (n + 1)) (Spec ↧ℂ)).Opens, - z ∈ Point.overOpen U ∧ w ∈ Point.overOpen U ∧ IsAffine U.toScheme := by - obtain ⟨v, hvz⟩ := surjective_vectorToComplexPoint z - obtain ⟨u, huw⟩ := surjective_vectorToComplexPoint w + (z w : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) : + ∃ U : (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace (Fin (n + 1)) (Spec ↧ℂ)).Opens, + z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U ∧ w ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U ∧ IsAffine U.toScheme := by + obtain ⟨v, hvz⟩ := _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.surjective_vectorToComplexPoint z + obtain ⟨u, huw⟩ := _root_.OAI.AlgebraicGeometry.ComplexPoint.Projective.ComplexProjectiveSpace.surjective_vectorToComplexPoint w obtain ⟨r, hr, hrv, hru⟩ := exists_common_nonvanishing_linearForm v.1 u.1 v.2 u.2 refine ⟨projectiveSpaceBasicOpen n r, ?_, ?_, @@ -243,47 +247,50 @@ lemma projectiveSpace_pair_mem_affineOpen (n : ℕ) /-- Finite-dimensional scheme-theoretic complex projective space is Hausdorff. -/ noncomputable instance instT2SpaceProjectiveSpaceComplexPoint (n : ℕ) : T2Space - (ComplexPoint (Over.mk (ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) := - ComplexPoint.t2Space_of_pair_mem_affineOpen - (Over.mk (ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ))) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ)))) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.t2Space_of_pair_mem_affineOpen + (Over.mk (_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.toBase (Fin (n + 1)) (Spec ↧ℂ))) (projectiveSpace_pair_mem_affineOpen n) end ComplexProjectiveSpace namespace ProjectiveSpace.Presentation -set_option linter.style.haveILetI false in /-- Any two complex points of a projective presentation lie in a common affine open. -/ lemma pair_mem_affineOpen {X : Scheme} {f : X ⟶ Spec ↧ℂ} - (P : ProjectiveSpace.Presentation f) (z w : ComplexPoint (Over.mk f)) : - ∃ U : X.Opens, z ∈ Point.overOpen U ∧ - w ∈ Point.overOpen U ∧ IsAffine U.toScheme := by + (P : _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.Presentation f) (z w : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk f)) : + ∃ U : X.Opens, z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U ∧ + w ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen U ∧ IsAffine U.toScheme := by obtain ⟨U, hzU, hwU, hUaff⟩ := - ComplexProjectiveSpace.projectiveSpace_pair_mem_affineOpen P.ambientDimension - (analyticImmersion P z) (analyticImmersion P w) - letI : IsClosedImmersion P.immersion := P.isClosedImmersion - let j := overImmersion P + _root_.OAI.AlgebraicGeometry.ComplexPoint.ProjectiveHausdorff.ComplexProjectiveSpace.projectiveSpace_pair_mem_affineOpen P.ambientDimension + (_root_.OAI.AlgebraicGeometry.ComplexPoint.ProjectiveCompact.ProjectiveSpace.Presentation.analyticImmersion P z) (_root_.OAI.AlgebraicGeometry.ComplexPoint.ProjectiveCompact.ProjectiveSpace.Presentation.analyticImmersion P w) + let : IsClosedImmersion P.immersion := P.isClosedImmersion + let j := _root_.OAI.AlgebraicGeometry.ComplexPoint.ProjectiveCompact.ProjectiveSpace.Presentation.overImmersion P refine ⟨P.immersion ⁻¹ᵁ U, - (Point.mem_overOpen_map_iff j z U).mp hzU, - (Point.mem_overOpen_map_iff j w U).mp hwU, ?_⟩ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_map_iff j z U).mp hzU, + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_map_iff j w U).mp hwU, ?_⟩ exact @IsAffineHom.isAffine_preimage _ _ P.immersion inferInstance U hUaff /-- The analytification of an explicit projective presentation is Hausdorff. -/ theorem complexPoint_t2Space {X : Scheme} {f : X ⟶ Spec ↧ℂ} - (P : ProjectiveSpace.Presentation f) : - @T2Space (ComplexPoint (Over.mk f)) Point.analyticTopology := - ComplexPoint.t2Space_of_pair_mem_affineOpen (Over.mk f) (pair_mem_affineOpen P) + (P : _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.ProjectiveSpace.Presentation f) : + @T2Space (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk f)) _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.t2Space_of_pair_mem_affineOpen (Over.mk f) (pair_mem_affineOpen P) end ProjectiveSpace.Presentation namespace IsProjective /-- The analytification of a projective complex scheme is Hausdorff. -/ -noncomputable instance complexPoint_t2Space {X : Over (Spec ↧ℂ)} - [h : IsProjective X.hom] : T2Space (ComplexPoint X) := - ProjectiveSpace.Presentation.complexPoint_t2Space +noncomputable instance _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective.complexPoint_t2Space {X : Over (Spec ↧ℂ)} + [h : _root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] : T2Space (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.ProjectiveHausdorff.ProjectiveSpace.Presentation.complexPoint_t2Space (Classical.choice h.nonempty_presentation) end IsProjective -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.ComplexPoint.ProjectiveHausdorff diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ProjectiveParacompact.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ProjectiveParacompact.lean index 322c150f4b..ddf10afaa8 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ProjectiveParacompact.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/ProjectiveParacompact.lean @@ -12,17 +12,22 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.SubdivisionCochain -public import Mathlib.AlgebraicGeometry.Morphisms.Smooth +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.SubdivisionCochain +import Mathlib.AlgebraicGeometry.Morphisms.Smooth import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Manifold import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Equidimensional import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ProjectiveHausdorff +namespace OAI.AlgebraicGeometry.ComplexPoint.ProjectiveParacompact + +open _root_.AlgebraicGeometry + /-! # Paracompact open subsets of smooth projective analytifications @@ -32,21 +37,27 @@ therefore paracompact. This supplies the hereditary-paracompactness input for th singular-cochain resolution. -/ -@[expose] public noncomputable section +noncomputable section -open TopologicalSpace -open CategoryTheory +open _root_.TopologicalSpace +open _root_.CategoryTheory -namespace AlgebraicGeometry.ComplexPoint +section +section -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X : Over (Spec ↧ℂ)) - [IsProjective X.hom] + [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] /-- Every open subset of a smooth projective complex analytification is paracompact. -/ -theorem openParacompactSpace [IsIntegral X.left] [Smooth X.hom] - (U : Opens (ComplexPoint X)) : ParacompactSpace U := - opens_paracompactSpace_of_compact_chartedSpace (H := Fin (dim X.left) → ℂ) U +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openParacompactSpace [IsIntegral X.left] [Smooth X.hom] + (U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : ParacompactSpace U := + _root_.OAI.Topology.Foundations.ChartedSpaceParacompact.TopologicalSpace.opens_paracompactSpace_of_compact_chartedSpace (H := Fin (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) → ℂ) U + +end +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.ComplexPoint.ProjectiveParacompact diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/SmoothCoordinates.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/SmoothCoordinates.lean index f025d892e8..d37175d675 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/SmoothCoordinates.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/SmoothCoordinates.lean @@ -12,16 +12,21 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.AlgebraicGeometry.Over.Basic -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Etale -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Open -public import Mathlib.AlgebraicGeometry.Morphisms.Etale +import HodgeConjecture.Mathlib.AlgebraicGeometry.Over.Basic +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Etale +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Open +import Mathlib.AlgebraicGeometry.Morphisms.Etale import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates + +open _root_.AlgebraicGeometry + /-! # Local coordinates on smooth complex schemes @@ -31,17 +36,18 @@ proves that the map is over `Spec ℂ`, and records the resulting continuous com coordinate tuple on the corresponding analytic open set. -/ -@[expose] public section +section -open CategoryTheory Topology Filter +open _root_.CategoryTheory _root_.Topology Filter -namespace AlgebraicGeometry +section -open ComplexAlgHom +open _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Etale.ComplexAlgHom noncomputable section -attribute [local instance] overSpecAlgebra +attribute [local instance] _root_.OAI.AlgebraicGeometry.Over.Basic.overSpecAlgebra @[reassoc] lemma Scheme.Opens.ι_appTop_topIso_hom {Y : Scheme} (U : Y.Opens) : @@ -112,9 +118,9 @@ structure LocalEtaleCoordinates (d : ℕ) [SmoothOfRelativeDimension d X.hom] (x /-- Smoothness of relative dimension `d` supplies `d` étale algebraic coordinates around every point. -/ lemma nonempty_localEtaleCoordinates (d : ℕ) [SmoothOfRelativeDimension d X.hom] (x : X.left) : - Nonempty (LocalEtaleCoordinates X d x) := by + Nonempty (_root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates X d x) := by obtain ⟨V, hV, hxV, hf⟩ := - SmoothOfRelativeDimension.exists_affine_isStandardSmoothOfRelativeDimension (d := d) X.hom x + _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.SmoothOfRelativeDimension.exists_affine_isStandardSmoothOfRelativeDimension (d := d) X.hom x have hf' := algebraMap_isStandardSmoothOfRelativeDimension (d := d) X hf obtain ⟨g, hC, hg⟩ := hf'.exists_etale_mvPolynomial let g' : MvPolynomial (Fin d) ℂ →ₐ[ℂ] Γ(X.left, V) := @@ -125,13 +131,13 @@ lemma nonempty_localEtaleCoordinates (d : ℕ) [SmoothOfRelativeDimension d X.ho /-- A choice of the `d` étale algebraic coordinates constructed from relative-dimensional smoothness. -/ def localEtaleCoordinates (d : ℕ) [SmoothOfRelativeDimension d X.hom] (x : X.left) : - LocalEtaleCoordinates X d x := + _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates X d x := Classical.choice (nonempty_localEtaleCoordinates X d x) namespace LocalEtaleCoordinates variable {X} {d : ℕ} [SmoothOfRelativeDimension d X.hom] {x : X.left} - (D : LocalEtaleCoordinates X d x) + (D : _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates X d x) /-- The coordinate ring map after identifying sections on an open with its global sections. -/ def coordinateRingHomOnOpen : @@ -153,12 +159,12 @@ lemma C_comp_coordinateRingHomOnOpen : (D.neighborhood.ι ≫ X.hom).appTop) ≫ D.neighborhood.topIso.hom rw [Category.assoc, Iso.inv_hom_id, Category.comp_id] simp only [Scheme.Hom.comp_appTop, Category.assoc] - rw [Scheme.Opens.ι_appTop_topIso_hom] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.Scheme.Opens.ι_appTop_topIso_hom] exact congrArg CommRingCat.ofHom D.coordinateAlgHom.comp_algebraMap /-- The scheme morphism defined by the étale coordinates. -/ def toAffineSpace : D.neighborhood.toScheme ⟶ - ComplexPoint.complexAffineSpace (Fin d) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin d) := D.neighborhood.toScheme.toSpecΓ ≫ Spec.map (CommRingCat.ofHom D.coordinateRingHomOnOpen) ≫ (AffineSpace.SpecIso (Fin d) ↧ℂ).inv @@ -166,9 +172,9 @@ def toAffineSpace : D.neighborhood.toScheme ⟶ /-- The étale coordinate morphism respects the structure maps to `Spec ℂ`. -/ lemma toAffineSpace_over : D.toAffineSpace ≫ - (ComplexPoint.complexAffineSpace (Fin d) ↘ Spec ↧ℂ) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin d) ↘ Spec ↧ℂ) = D.neighborhood.ι ≫ X.hom := by - simp only [toAffineSpace, Category.assoc, AffineSpace.SpecIso_inv_over] + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates.toAffineSpace, Category.assoc, AffineSpace.SpecIso_inv_over] let φ : ↧ℂ ⟶ Γ(D.neighborhood.toScheme, ⊤) := CommRingCat.ofHom MvPolynomial.C ≫ CommRingCat.ofHom D.coordinateRingHomOnOpen have hSpec : Spec.map (CommRingCat.ofHom D.coordinateRingHomOnOpen) ≫ @@ -182,30 +188,30 @@ lemma toAffineSpace_over : /-- The étale coordinate morphism bundled over the complex base. -/ abbrev toAffineSpaceOver : - ComplexPoint.openScheme X D.neighborhood ⟶ - Over.mk (ComplexPoint.complexAffineSpace (Fin d) ↘ Spec ↧ℂ) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood ⟶ + Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin d) ↘ Spec ↧ℂ) := Over.homMk D.toAffineSpace D.toAffineSpace_over /-- The map on complex points induced by the étale coordinate morphism. -/ def pointMap : - ComplexPoint (ComplexPoint.openScheme X D.neighborhood) → - ComplexPoint (Over.mk (ComplexPoint.complexAffineSpace (Fin d) ↘ Spec ↧ℂ)) := - Point.map D.toAffineSpaceOver + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood) → + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexAffineSpace (Fin d) ↘ Spec ↧ℂ)) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map D.toAffineSpaceOver /-- The ordinary complex-valued coordinate tuple on the analytic neighborhood. -/ def analyticCoordinates : - ComplexPoint (ComplexPoint.openScheme X D.neighborhood) → + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood) → Fin d → ℂ := - ComplexPoint.affineSpaceEquiv (Fin d) ∘ D.pointMap + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv (Fin d) ∘ D.pointMap /-- Étale coordinates written on the corresponding open subset of the ambient complex points. -/ def ambientAnalyticCoordinates : - {z : ComplexPoint X // z ∈ Point.overOpen D.neighborhood} → + {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen D.neighborhood} → Fin d → ℂ := - D.analyticCoordinates ∘ (ComplexPoint.openEquiv X D.neighborhood).symm + D.analyticCoordinates ∘ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openEquiv X D.neighborhood).symm noncomputable local instance coordinateRingAlgebra : - Algebra (ComplexAlgHom.complexPolynomialRing d) + Algebra (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing d) Γ(D.neighborhood.toScheme, ⊤) := D.coordinateRingHomOnOpen.toAlgebra @@ -214,12 +220,12 @@ noncomputable local instance coordinateRingComplexAlgebra : (D.coordinateRingHomOnOpen.comp MvPolynomial.C).toAlgebra noncomputable local instance coordinateRingScalarTower : - IsScalarTower ℂ (ComplexAlgHom.complexPolynomialRing d) + IsScalarTower ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing d) Γ(D.neighborhood.toScheme, ⊤) := IsScalarTower.of_algebraMap_eq fun _ ↦ rfl noncomputable local instance coordinateRingEtale : - Algebra.Etale (ComplexAlgHom.complexPolynomialRing d) + Algebra.Etale (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing d) Γ(D.neighborhood.toScheme, ⊤) := RingHom.etale_algebraMap.mp D.coordinateRingHomOnOpen_etale @@ -227,7 +233,7 @@ noncomputable local instance coordinateRingEtale : the complex structure morphisms. -/ lemma toSpecΓ_over : D.neighborhood.toScheme.toSpecΓ ≫ - ComplexPoint.affineSpecStructureMap Γ(D.neighborhood.toScheme, ⊤) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap Γ(D.neighborhood.toScheme, ⊤) = D.neighborhood.ι ≫ X.hom := by let φ : ↧ℂ ⟶ Γ(D.neighborhood.toScheme, ⊤) := CommRingCat.ofHom MvPolynomial.C ≫ CommRingCat.ofHom D.coordinateRingHomOnOpen @@ -239,90 +245,90 @@ lemma toSpecΓ_over : spectrum of its global sections. -/ def affineSpecPointHomeomorph : @Homeomorph - (ComplexPoint (ComplexPoint.openScheme X D.neighborhood)) - (ComplexPoint (Over.mk (ComplexPoint.affineSpecStructureMap Γ(D.neighborhood.toScheme, ⊤)))) - Point.analyticTopology Point.analyticTopology := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap Γ(D.neighborhood.toScheme, ⊤)))) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology := letI : IsAffine D.neighborhood.toScheme := D.isAffine let e := asIso D.neighborhood.toScheme.toSpecΓ - have he : e.hom ≫ ComplexPoint.affineSpecStructureMap Γ(D.neighborhood.toScheme, ⊤) = + have he : e.hom ≫ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap Γ(D.neighborhood.toScheme, ⊤) = D.neighborhood.ι ≫ X.hom := by change D.neighborhood.toScheme.toSpecΓ ≫ - ComplexPoint.affineSpecStructureMap Γ(D.neighborhood.toScheme, ⊤) = _ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecStructureMap Γ(D.neighborhood.toScheme, ⊤) = _ exact D.toSpecΓ_over - Point.isoMapHomeomorph (Over.isoMk e he) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isoMapHomeomorph (Over.isoMk e he) lemma affineSpecPointHomeomorph_apply - (z : ComplexPoint (ComplexPoint.openScheme X D.neighborhood)) : + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood)) : D.affineSpecPointHomeomorph z = - Point.map (Over.homMk D.neighborhood.toScheme.toSpecΓ D.toSpecΓ_over) z := rfl + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (Over.homMk D.neighborhood.toScheme.toSpecΓ D.toSpecΓ_over) z := rfl /-- Complex points of an affine neighborhood as complex-valued algebra homomorphisms on its coordinate ring. -/ def pointAlgHomHomeomorph : @Homeomorph - (ComplexPoint (ComplexPoint.openScheme X D.neighborhood)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood)) (Γ(D.neighborhood.toScheme, ⊤) →ₐ[ℂ] ℂ) - Point.analyticTopology - (ComplexPoint.affineAlgebraHomTopology Γ(D.neighborhood.toScheme, ⊤)) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.analyticTopology + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineAlgebraHomTopology Γ(D.neighborhood.toScheme, ⊤)) := D.affineSpecPointHomeomorph.trans - (ComplexPoint.affineSpecHomeomorph Γ(D.neighborhood.toScheme, ⊤)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecHomeomorph Γ(D.neighborhood.toScheme, ⊤)) /-- Evaluation through the affine algebra-homomorphism model agrees with evaluation of the corresponding global section on the affine neighborhood. -/ lemma pointAlgHomHomeomorph_apply - (z : ComplexPoint (ComplexPoint.openScheme X D.neighborhood)) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood)) (r : Γ(D.neighborhood.toScheme, ⊤)) : - D.pointAlgHomHomeomorph z r = Point.evaluate ⊤ r z := by - change ComplexPoint.affineSpecEquiv Γ(D.neighborhood.toScheme, ⊤) + D.pointAlgHomHomeomorph z r = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ r z := by + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv Γ(D.neighborhood.toScheme, ⊤) (D.affineSpecPointHomeomorph z) r = _ - rw [ComplexPoint.affineSpecEquiv_apply, affineSpecPointHomeomorph_apply, Point.evaluate_map] - change Point.evaluate ⊤ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv_apply, affineSpecPointHomeomorph_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_map] + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ (D.neighborhood.toScheme.toSpecΓ.appTop ((Scheme.ΓSpecIso ↧Γ(D.neighborhood.toScheme, ⊤)).inv r)) z = _ rw [Scheme.toSpecΓ_appTop] have h := DFunLike.congr_fun (congrArg CommRingCat.Hom.hom (Scheme.ΓSpecIso ↧Γ(D.neighborhood.toScheme, ⊤)).inv_hom_id) r - exact congrArg (fun s ↦ Point.evaluate ⊤ s z) h + exact congrArg (fun s ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ s z) h /-- The analytic coordinate map reconstructed through the affine ring and its étale polynomial subalgebra. -/ def algebraicCoordinates : - ComplexPoint (ComplexPoint.openScheme X D.neighborhood) → + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood) → Fin d → ℂ := - ComplexAlgHom.mvPolynomialAlgHomHomeomorph d ∘ - ComplexAlgHom.etaleBaseAlgHom Γ(D.neighborhood.toScheme, ⊤) ∘ + _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.mvPolynomialAlgHomHomeomorph d ∘ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Etale.ComplexAlgHom.etaleBaseAlgHom Γ(D.neighborhood.toScheme, ⊤) ∘ D.pointAlgHomHomeomorph /-- The reconstructed ring-theoretic coordinates agree with the coordinates induced directly by the scheme morphism to affine space. -/ lemma algebraicCoordinates_eq_analyticCoordinates : D.algebraicCoordinates = D.analyticCoordinates := by - let g : ComplexAlgHom.complexPolynomialRing d →ₐ[ℂ] + let g : _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing d →ₐ[ℂ] Γ(D.neighborhood.toScheme, ⊤) := - IsScalarTower.toAlgHom ℂ (ComplexAlgHom.complexPolynomialRing d) + IsScalarTower.toAlgHom ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing d) Γ(D.neighborhood.toScheme, ⊤) funext z calc D.algebraicCoordinates z = - ComplexAlgHom.mvPolynomialAlgHomHomeomorph d - (ComplexPoint.affineSpecEquiv (ComplexAlgHom.complexPolynomialRing d) - (ComplexPoint.affineSpecComplexPointMap g (D.affineSpecPointHomeomorph z))) := by - rw [ComplexPoint.affineSpecEquiv_affineSpecComplexPointMap] + _root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.mvPolynomialAlgHomHomeomorph d + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv (_root_.OAI.AlgebraicGeometry.ComplexPoint.StandardEtale.ComplexAlgHom.complexPolynomialRing d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecComplexPointMap g (D.affineSpecPointHomeomorph z))) := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecEquiv_affineSpecComplexPointMap] rfl - _ = ComplexPoint.affineSpaceEquiv (Fin d) - (ComplexPoint.polynomialSpecToAffineSpacePointMap (n := d) - (ComplexPoint.affineSpecComplexPointMap g (D.affineSpecPointHomeomorph z))) := - (ComplexPoint.affineSpaceEquiv_polynomialSpecToAffineSpacePointMap _).symm + _ = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv (Fin d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.polynomialSpecToAffineSpacePointMap (n := d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpecComplexPointMap g (D.affineSpecPointHomeomorph z))) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.affineSpaceEquiv_polynomialSpecToAffineSpacePointMap _).symm _ = D.analyticCoordinates z := by - unfold analyticCoordinates + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates.analyticCoordinates congr 1 /-- Each analytic coordinate is evaluation of the corresponding global regular function on the affine neighborhood. -/ lemma analyticCoordinates_apply_eq_evaluate - (z : ComplexPoint (ComplexPoint.openScheme X D.neighborhood)) (i : Fin d) : + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood)) (i : Fin d) : D.analyticCoordinates z i = - Point.evaluate ⊤ (D.coordinateRingHomOnOpen (MvPolynomial.X i)) z := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ (D.coordinateRingHomOnOpen (MvPolynomial.X i)) z := by rw [← D.algebraicCoordinates_eq_analyticCoordinates] exact D.pointAlgHomHomeomorph_apply z _ @@ -337,77 +343,77 @@ def ambientCoordinateSection (i : Fin d) : Γ(X.left, D.ambientCoordinateOpen) : /-- An ambient analytic coordinate is evaluation of its transported regular section. -/ lemma ambientAnalyticCoordinates_apply_eq_evaluate - (z : {z : ComplexPoint X // z ∈ Point.overOpen D.neighborhood}) (i : Fin d) : + (z : {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen D.neighborhood}) (i : Fin d) : D.ambientAnalyticCoordinates z i = - Point.evaluate D.ambientCoordinateOpen (D.ambientCoordinateSection i) z.1 := by - let z' := (ComplexPoint.openHomeomorph X D.neighborhood).symm z + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate D.ambientCoordinateOpen (D.ambientCoordinateSection i) z.1 := by + let z' := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm z calc D.ambientAnalyticCoordinates z i = D.analyticCoordinates z' i := rfl - _ = Point.evaluate ⊤ + _ = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ (D.coordinateRingHomOnOpen (MvPolynomial.X i)) z' := D.analyticCoordinates_apply_eq_evaluate z' i - _ = Point.evaluate D.ambientCoordinateOpen - (D.ambientCoordinateSection i) (Point.map (ComplexPoint.openInclusion X D.neighborhood) z') := - (ComplexPoint.evaluate_openEquiv X D.neighborhood + _ = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate D.ambientCoordinateOpen + (D.ambientCoordinateSection i) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X D.neighborhood) z') := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.evaluate_openEquiv X D.neighborhood (D.coordinateRingHomOnOpen (MvPolynomial.X i)) z').symm - _ = Point.evaluate D.ambientCoordinateOpen (D.ambientCoordinateSection i) z.1 := by + _ = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate D.ambientCoordinateOpen (D.ambientCoordinateSection i) z.1 := by congr 2 exact congrArg Subtype.val - ((ComplexPoint.openHomeomorph X D.neighborhood).apply_symm_apply z) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).apply_symm_apply z) /-- Let `X` be smooth of relative dimension `d` over `ℂ`. Choose an affine open `W ⊆ X` and an étale coordinate map `W → 𝔸^d_ℂ`. For `z ∈ W(ℂ)`, this local homeomorphism from `W(ℂ)` to `ℂ^d` is the induced coordinate map near `z`, with local inverse supplied by the étale projection chart. -/ noncomputable def ambientProjectionChart - (z : {z : ComplexPoint X // z ∈ Point.overOpen D.neighborhood}) : + (z : {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen D.neighborhood}) : OpenPartialHomeomorph - {z : ComplexPoint X // z ∈ Point.overOpen D.neighborhood} (Fin d → ℂ) := - let z' := (ComplexPoint.openHomeomorph X D.neighborhood).symm z + {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen D.neighborhood} (Fin d → ℂ) := + let z' := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm z let u := D.pointAlgHomHomeomorph z' - (ComplexPoint.openHomeomorph X D.neighborhood).symm.toOpenPartialHomeomorph |>.trans + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm.toOpenPartialHomeomorph |>.trans D.pointAlgHomHomeomorph.toOpenPartialHomeomorph |>.trans - (ComplexAlgHom.etaleAlgHomProjectionChart (n := d) Γ(D.neighborhood.toScheme, ⊤) u) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Etale.ComplexAlgHom.etaleAlgHomProjectionChart (n := d) Γ(D.neighborhood.toScheme, ⊤) u) lemma mem_ambientProjectionChart_source - (z : {z : ComplexPoint X // z ∈ Point.overOpen D.neighborhood}) : + (z : {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen D.neighborhood}) : z ∈ (D.ambientProjectionChart z).source := by - let z' := (ComplexPoint.openHomeomorph X D.neighborhood).symm z + let z' := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm z let u := D.pointAlgHomHomeomorph z' - rw [ambientProjectionChart, OpenPartialHomeomorph.trans_source] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates.ambientProjectionChart, OpenPartialHomeomorph.trans_source] constructor · rw [OpenPartialHomeomorph.trans_source] simp · change u ∈ - (ComplexAlgHom.etaleAlgHomProjectionChart (n := d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Etale.ComplexAlgHom.etaleAlgHomProjectionChart (n := d) Γ(D.neighborhood.toScheme, ⊤) u).source - exact ComplexAlgHom.mem_etaleAlgHomProjectionChart_source + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Etale.ComplexAlgHom.mem_etaleAlgHomProjectionChart_source (n := d) Γ(D.neighborhood.toScheme, ⊤) u lemma ambientProjectionChart_apply_of_mem - (z y : {z : ComplexPoint X // z ∈ Point.overOpen D.neighborhood}) + (z y : {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen D.neighborhood}) (hy : y ∈ (D.ambientProjectionChart z).source) : D.ambientProjectionChart z y = D.ambientAnalyticCoordinates y := by - let z' := (ComplexPoint.openHomeomorph X D.neighborhood).symm z + let z' := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm z let u := D.pointAlgHomHomeomorph z' - rw [ambientProjectionChart, OpenPartialHomeomorph.trans_source] at hy + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates.ambientProjectionChart, OpenPartialHomeomorph.trans_source] at hy have hu := hy.2 have hu' : D.pointAlgHomHomeomorph - ((ComplexPoint.openHomeomorph X D.neighborhood).symm y) ∈ - (ComplexAlgHom.etaleAlgHomProjectionChart (n := d) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm y) ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Etale.ComplexAlgHom.etaleAlgHomProjectionChart (n := d) Γ(D.neighborhood.toScheme, ⊤) u).source := by simpa only [Set.mem_preimage, OpenPartialHomeomorph.coe_trans, Function.comp_apply, Homeomorph.toOpenPartialHomeomorph_apply] using hu - change ComplexAlgHom.etaleAlgHomProjectionChart (n := d) + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Etale.ComplexAlgHom.etaleAlgHomProjectionChart (n := d) Γ(D.neighborhood.toScheme, ⊤) u (D.pointAlgHomHomeomorph - ((ComplexPoint.openHomeomorph X D.neighborhood).symm y)) = _ - have hcoord := ComplexAlgHom.etaleAlgHomProjectionChart_apply_of_mem (n := d) + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm y)) = _ + have hcoord := _root_.OAI.AlgebraicGeometry.ComplexPoint.Etale.ComplexAlgHom.etaleAlgHomProjectionChart_apply_of_mem (n := d) Γ(D.neighborhood.toScheme, ⊤) u (D.pointAlgHomHomeomorph - ((ComplexPoint.openHomeomorph X D.neighborhood).symm y)) hu' + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm y)) hu' rw [hcoord] change D.algebraicCoordinates - ((ComplexPoint.openHomeomorph X D.neighborhood).symm y) = + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm y) = D.ambientAnalyticCoordinates y rw [D.algebraicCoordinates_eq_analyticCoordinates] rfl @@ -415,37 +421,37 @@ lemma ambientProjectionChart_apply_of_mem /-- Evaluation of a regular function is analytic along the inverse of the explicit ambient projection chart. -/ lemma analyticAt_ambientProjectionChart_symm_pointAlgHom_apply - (z : {z : ComplexPoint X // z ∈ Point.overOpen D.neighborhood}) + (z : {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen D.neighborhood}) {w : Fin d → ℂ} (hw : w ∈ (D.ambientProjectionChart z).target) (r : Γ(D.neighborhood.toScheme, ⊤)) : AnalyticAt ℂ (fun v ↦ D.pointAlgHomHomeomorph - ((ComplexPoint.openHomeomorph X D.neighborhood).symm + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm ((D.ambientProjectionChart z).symm v)) r) w := by - let z' := (ComplexPoint.openHomeomorph X D.neighborhood).symm z + let z' := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm z let u := D.pointAlgHomHomeomorph z' have hw' : w ∈ - (ComplexAlgHom.etaleAlgHomProjectionChart (n := d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Etale.ComplexAlgHom.etaleAlgHomProjectionChart (n := d) Γ(D.neighborhood.toScheme, ⊤) u).target := by - rw [ambientProjectionChart, OpenPartialHomeomorph.trans_target] at hw + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates.ambientProjectionChart, OpenPartialHomeomorph.trans_target] at hw exact hw.1 - have h := ComplexAlgHom.analyticAt_etaleAlgHomProjectionChart_symm_apply + have h := _root_.OAI.AlgebraicGeometry.ComplexPoint.Etale.ComplexAlgHom.analyticAt_etaleAlgHomProjectionChart_symm_apply (n := d) Γ(D.neighborhood.toScheme, ⊤) u hw' r apply h.congr filter_upwards with v - simp only [ambientProjectionChart, OpenPartialHomeomorph.coe_trans_symm, + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates.ambientProjectionChart, OpenPartialHomeomorph.coe_trans_symm, Function.comp_apply, Homeomorph.toOpenPartialHomeomorph_symm_apply, Homeomorph.symm_symm] rw [Homeomorph.symm_apply_apply, Homeomorph.apply_symm_apply] /-- Evaluation of a global regular function on the affine neighborhood is analytic along the inverse of its explicit projection chart. -/ lemma analyticAt_ambientProjectionChart_symm_evaluate_top - (z : {z : ComplexPoint X // z ∈ Point.overOpen D.neighborhood}) + (z : {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen D.neighborhood}) {w : Fin d → ℂ} (hw : w ∈ (D.ambientProjectionChart z).target) (r : Γ(D.neighborhood.toScheme, ⊤)) : AnalyticAt ℂ - (fun v ↦ Point.evaluate ⊤ r - ((ComplexPoint.openHomeomorph X D.neighborhood).symm + (fun v ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ r + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm ((D.ambientProjectionChart z).symm v))) w := by simpa only [D.pointAlgHomHomeomorph_apply] using D.analyticAt_ambientProjectionChart_symm_pointAlgHom_apply z hw r @@ -454,75 +460,75 @@ lemma analyticAt_ambientProjectionChart_symm_evaluate_top The proof shrinks to a principal open in the affine coordinate neighborhood and writes the restricted section as a quotient of global sections. -/ lemma analyticAt_ambientProjectionChart_symm_evaluate - (z : {z : ComplexPoint X // z ∈ Point.overOpen D.neighborhood}) + (z : {z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X // z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen D.neighborhood}) {w : Fin d → ℂ} (hw : w ∈ (D.ambientProjectionChart z).target) (V : X.left.Opens) (s : Γ(X.left, V)) - (hV : ((D.ambientProjectionChart z).symm w).1 ∈ Point.overOpen V) : + (hV : ((D.ambientProjectionChart z).symm w).1 ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen V) : AnalyticAt ℂ - (fun v ↦ Point.evaluate V s ((D.ambientProjectionChart z).symm v).1) w := by + (fun v ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate V s ((D.ambientProjectionChart z).symm v).1) w := by let Y := D.neighborhood.toScheme let W : Y.Opens := D.neighborhood.ι ⁻¹ᵁ V let : IsAffine Y := show IsAffine D.neighborhood.toScheme from D.isAffine - let y : ComplexPoint (ComplexPoint.openScheme X D.neighborhood) := - (ComplexPoint.openHomeomorph X D.neighborhood).symm + let y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm ((D.ambientProjectionChart z).symm w) - have hymap : Point.map (ComplexPoint.openInclusion X D.neighborhood) y = + have hymap : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X D.neighborhood) y = ((D.ambientProjectionChart z).symm w).1 := by exact congrArg Subtype.val - ((ComplexPoint.openHomeomorph X D.neighborhood).apply_symm_apply + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).apply_symm_apply ((D.ambientProjectionChart z).symm w)) - have hyW : y ∈ Point.overOpen W := by - apply (Point.mem_overOpen_map_iff (ComplexPoint.openInclusion X D.neighborhood) y V).mp + have hyW : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen W := by + apply (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_map_iff (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X D.neighborhood) y V).mp rwa [hymap] obtain ⟨g, hgW, hyg⟩ := (isAffineOpen_top Y).exists_basicOpen_le (V := W) ⟨y.underlying, hyW⟩ trivial let sY : Γ(Y, W) := D.neighborhood.ι.app V s let t : Γ(Y, Y.basicOpen g) := Y.presheaf.map (homOfLE hgW).op sY - let : IsAffine (ComplexPoint.openScheme X D.neighborhood).left := + let : IsAffine (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood).left := inferInstanceAs (IsAffine Y) obtain ⟨k, a, hquot⟩ := - ComplexPoint.exists_evaluate_affine_basicOpen_eq_div - (X := ComplexPoint.openScheme X D.neighborhood) g t - have hyg' : y ∈ Point.overOpen (Y.basicOpen g) := hyg - have hgzero : Point.evaluate ⊤ g y ≠ 0 := - (Point.mem_overOpen_basicOpen_iff_evaluate_ne_zero - (X := ComplexPoint.openScheme X D.neighborhood) (U := ⊤) g y trivial).mp hyg' + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_evaluate_affine_basicOpen_eq_div + (X := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood) g t + have hyg' : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen (Y.basicOpen g) := hyg + have hgzero : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ g y ≠ 0 := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.mem_overOpen_basicOpen_iff_evaluate_ne_zero + (X := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood) (U := ⊤) g y trivial).mp hyg' have ha := D.analyticAt_ambientProjectionChart_symm_evaluate_top z hw a have hg := D.analyticAt_ambientProjectionChart_symm_evaluate_top z hw g have hrat : AnalyticAt ℂ - (fun v ↦ Point.evaluate ⊤ a - ((ComplexPoint.openHomeomorph X D.neighborhood).symm + (fun v ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ a + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm ((D.ambientProjectionChart z).symm v)) / - Point.evaluate ⊤ g - ((ComplexPoint.openHomeomorph X D.neighborhood).symm + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate ⊤ g + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm ((D.ambientProjectionChart z).symm v)) ^ k) w := ha.div (hg.pow k) (pow_ne_zero k hgzero) apply hrat.congr have hcontinuous : ContinuousAt - (fun v ↦ (ComplexPoint.openHomeomorph X D.neighborhood).symm + (fun v ↦ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm ((D.ambientProjectionChart z).symm v)) w := - (ComplexPoint.openHomeomorph X D.neighborhood).symm.continuous.continuousAt.comp + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm.continuous.continuousAt.comp ((D.ambientProjectionChart z).continuousAt_symm hw) have heventually : - (fun v ↦ (ComplexPoint.openHomeomorph X D.neighborhood).symm + (fun v ↦ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm ((D.ambientProjectionChart z).symm v)) ⁻¹' - Point.overOpen (Y.basicOpen g) ∈ 𝓝 w := - hcontinuous ((Point.isOpen_overOpen (X := ComplexPoint.openScheme X D.neighborhood) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen (Y.basicOpen g) ∈ 𝓝 w := + hcontinuous ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isOpen_overOpen (X := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood) (Y.basicOpen g)).mem_nhds hyg') filter_upwards [heventually] with v hv - let yv : ComplexPoint (ComplexPoint.openScheme X D.neighborhood) := - (ComplexPoint.openHomeomorph X D.neighborhood).symm + let yv : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).symm ((D.ambientProjectionChart z).symm v) - have hymapv : Point.map (ComplexPoint.openInclusion X D.neighborhood) yv = + have hymapv : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X D.neighborhood) yv = ((D.ambientProjectionChart z).symm v).1 := by exact congrArg Subtype.val - ((ComplexPoint.openHomeomorph X D.neighborhood).apply_symm_apply + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openHomeomorph X D.neighborhood).apply_symm_apply ((D.ambientProjectionChart z).symm v)) - have hmap := Point.evaluate_map (ComplexPoint.openInclusion X D.neighborhood) V s yv + have hmap := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X D.neighborhood) V s yv rw [hymapv] at hmap - have hres := Point.evaluate_res (X := ComplexPoint.openScheme X D.neighborhood) + have hres := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.evaluate_res (X := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X D.neighborhood) (U := W) (V := Y.basicOpen g) hgW sY yv hv exact ((hmap.trans hres).trans (hquot yv hv)).symm @@ -530,16 +536,20 @@ end LocalEtaleCoordinates /-- Étale coordinates of the specified relative dimension chosen around the underlying point of a complex point. -/ -def ComplexPoint.localEtaleCoordinates (d : ℕ) [SmoothOfRelativeDimension d X.hom] - (z : ComplexPoint X) : LocalEtaleCoordinates X d z.underlying := - AlgebraicGeometry.localEtaleCoordinates X d z.underlying +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates (d : ℕ) [SmoothOfRelativeDimension d X.hom] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates X d z.underlying := + _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.localEtaleCoordinates X d z.underlying @[simp] -lemma ComplexPoint.mem_localEtaleCoordinates (d : ℕ) [SmoothOfRelativeDimension d X.hom] - (z : ComplexPoint X) : - z ∈ Point.overOpen ((ComplexPoint.localEtaleCoordinates X d z).neighborhood) := - (ComplexPoint.localEtaleCoordinates X d z).mem +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localEtaleCoordinates (d : ℕ) [SmoothOfRelativeDimension d X.hom] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z).neighborhood) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localEtaleCoordinates X d z).mem + +end + +end end -end AlgebraicGeometry +end OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/StandardEtale.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/StandardEtale.lean index 24d38c9193..3839d8b8af 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/StandardEtale.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/ComplexPoint/StandardEtale.lean @@ -12,15 +12,18 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AffineScheme -public import Mathlib.RingTheory.Etale.StandardEtale +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.AffineScheme +import Mathlib.RingTheory.Etale.StandardEtale import Mathlib.Logic.Equiv.PartialEquiv import Mathlib.Topology.Algebra.MvPolynomial +namespace OAI.AlgebraicGeometry.ComplexPoint.StandardEtale + /-! # Complex points of standard étale algebras @@ -33,15 +36,16 @@ Like `ComplexPoint.Localization`, this works throughout with `ℂ`-algebra homom than with complex points of schemes, so it lives in namespace `AlgebraicGeometry.ComplexAlgHom`. -/ -@[expose] public section +section -open scoped Polynomial +open scoped _root_.Polynomial -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicGeometry.ComplexAlgHom +section +namespace ComplexAlgHom -open ComplexPoint Point +open ComplexPoint _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point noncomputable section @@ -60,7 +64,7 @@ def mvPolynomialAlgHomEquiv (n : ℕ) : lemma continuous_mvPolynomialAlgHomEquiv (n : ℕ) : Continuous (mvPolynomialAlgHomEquiv n) := continuous_pi fun i ↦ - continuous_affineAlgebraHom_apply (complexPolynomialRing n) (MvPolynomial.X i) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply (complexPolynomialRing n) (MvPolynomial.X i) lemma continuous_mvPolynomialAlgHomEquiv_symm (n : ℕ) : Continuous (mvPolynomialAlgHomEquiv n).symm := by @@ -169,10 +173,10 @@ lemma continuous_algHomToStandardEtalePoint : · rw [continuous_induced_rng] refine continuous_pi fun b ↦ ?_ simpa [algHomToStandardEtalePoint] using - continuous_affineAlgebraHom_apply P.Ring + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply P.Ring (algebraMap (complexPolynomialRing n) P.Ring b) · simpa [algHomToStandardEtalePoint] using - continuous_affineAlgebraHom_apply P.Ring P.X + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply P.Ring P.X /-- Polynomial evaluation is continuous when both the coefficient homomorphism and the argument vary. -/ @@ -195,7 +199,7 @@ lemma continuous_eval₂_varying (p : (complexPolynomialRing n)[X]) : funext vx simp] exact - ((continuous_affineAlgebraHom_apply (complexPolynomialRing n) a).comp continuous_fst).mul + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_affineAlgebraHom_apply (complexPolynomialRing n) a).comp continuous_fst).mul (continuous_snd.pow k) /-- Evaluation of a quotient representative under the standard étale point map. -/ @@ -306,4 +310,9 @@ def standardEtaleCoordinateHomeomorph : end -end AlgebraicGeometry.ComplexAlgHom +end ComplexAlgHom +end + +end + +end OAI.AlgebraicGeometry.ComplexPoint.StandardEtale diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/ClosedPointDimension.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/ClosedPointDimension.lean index fb1daa63d7..959ffda9f8 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/ClosedPointDimension.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/ClosedPointDimension.lean @@ -12,10 +12,11 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.LocalGenerator +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.LocalGenerator import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.Dimension import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.DimensionFormula @@ -30,6 +31,12 @@ import Mathlib.RingTheory.NoetherNormalization import Mathlib.RingTheory.Polynomial.RationalRoot import Mathlib.RingTheory.Polynomial.UniqueFactorization +namespace OAI.AlgebraicGeometry.Cycle.ComponentClosedPointDimension + +open _root_.Algebra +open _root_.AlgebraicGeometry +open _root_.RingHom + /-! # Dimensions at closed points of cycle components @@ -45,11 +52,12 @@ generator. The two coordinate systems remain independent of one another; a simu form for the closed immersion is a separate statement. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Ideal MvPolynomial Topology TopologicalSpace +open _root_.CategoryTheory _root_.Ideal _root_.MvPolynomial _root_.Topology _root_.TopologicalSpace namespace Algebra +open _root_.Algebra variable {k A : Type*} [Field k] [CommRing A] [IsDomain A] [Algebra k A] [Algebra.FiniteType k A] @@ -97,15 +105,16 @@ lemma FiniteType.height_eq_ringKrullDim_of_isMaximal (PrimeSpectrum.comap (algebraMap (MvPolynomial (Fin n) k) A) (⟨P, inferInstance⟩ : PrimeSpectrum A)).asIdeal from rfl] exact (PrimeSpectrum.height_eq_orderHeight _).symm - rw [PolynomialCatenary.ringKrullDim_eq_of_isIntegral_of_injective hg, + rw [_root_.OAI.Algebra.Foundations.PolynomialCatenaryT.PolynomialCatenary.ringKrullDim_eq_of_isIntegral_of_injective hg, MvPolynomial.ringKrullDim_of_isNoetherianRing, ringKrullDim_eq_zero_of_field, ENat.card_eq_coe_fintype_card, Fintype.card_fin, hheight, - MvPolynomial.height_eq_fin_of_isMaximal k n (P.under (MvPolynomial (Fin n) k))] + _root_.OAI.Algebra.RingTheory.SmoothKrullDimension.MvPolynomial.height_eq_fin_of_isMaximal k n (P.under (MvPolynomial (Fin n) k))] norm_num end Algebra namespace RingHom +open _root_.RingHom /-- The quotient by a prime of height `p` in a standard-smooth complex algebra of relative dimension `d` has Krull dimension `d - p`. -/ @@ -114,7 +123,7 @@ lemma IsStandardSmoothOfRelativeDimension.ringKrullDim_quotient_eq_sub_complex (hf : f.IsStandardSmoothOfRelativeDimension d) (P : Ideal A) [P.IsPrime] (hP : P.height = p) : ringKrullDim (A ⧸ P) = d - p := by - have hsum := hf.height_add_ringKrullDim_quotient_eq_complex P + have hsum := (_root_.OAI.AlgebraicGeometry.Smooth.CatenaryDimension.RingHom.IsStandardSmoothOfRelativeDimension.height_add_ringKrullDim_quotient_eq_complex hf) P rw [hP] at hsum obtain ⟨a, b, ha, hb, hab⟩ := WithBot.add_eq_coe.mp hsum have ha' : a = (p : ℕ∞) := WithBot.coe_injective ha @@ -131,36 +140,36 @@ lemma IsStandardSmoothOfRelativeDimension.ringKrullDim_quotient_eq_sub_complex end RingHom -namespace AlgebraicGeometry +section -attribute [local instance] overSpecAlgebra +attribute [local instance] _root_.OAI.AlgebraicGeometry.Over.Basic.overSpecAlgebra variable (X : Over (Spec ↧ℂ)) {d p : ℕ} /-- Every closed point of the reduced closure of a codimension-`p` point in a smooth complex `d`-fold has coheight `d - p` inside that reduced closure. -/ lemma cycleComponent_closedPoint_coheight_eq_sub - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) - (z : cycleComponent X.left x) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) + (z : _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x) [SmoothOfRelativeDimension d X.hom] (hx : Order.coheight x = p) (hz : IsClosed {z}) : Order.coheight z = d - p := by - let c : cycleComponent X.left x ⟶ X.left := cycleComponentι X.left x + let c : _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x ⟶ X.left := _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x let y : X.left := c z - have hyx : y ≤ x := (cycleComponentOrderIsoIic X.left x z).2 + have hyx : y ≤ x := (_root_.OAI.AlgebraicGeometry.Cycle.ComponentDimension.cycleComponentOrderIsoIic X.left x z).2 obtain ⟨U, hU, hyU, hstandard⟩ := - SmoothOfRelativeDimension.exists_affine_isStandardSmoothOfRelativeDimension + _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.SmoothOfRelativeDimension.exists_affine_isStandardSmoothOfRelativeDimension (d := d) X.hom y have hxU : x ∈ U := by rw [Scheme.le_iff_specializes] at hyx exact hyx.mem_open U.isOpen hyU - let W : (cycleComponent X.left x).Opens := c ⁻¹ᵁ U + let W : (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x).Opens := c ⁻¹ᵁ U have hW : IsAffineOpen W := hU.preimage c have hzW : z ∈ W := hyU let : Nonempty W := ⟨⟨z, hzW⟩⟩ let xu : U.toScheme := ⟨x, hxU⟩ let zw : W.toScheme := ⟨z, hzW⟩ - let q : Γ(X.left, U) →+* Γ(cycleComponent X.left x, W) := + let q : Γ(X.left, U) →+* Γ(_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x, W) := (c.app U).hom have hqsurj : Function.Surjective q := c.app_surjective U hU let P : Ideal Γ(X.left, U) := @@ -198,45 +207,45 @@ lemma cycleComponent_closedPoint_coheight_eq_sub calc P.height = Order.coheight xu := by change (hU.primeIdealOf xu).asIdeal.height = Order.coheight xu - exact hU.primeIdealOf_height_eq_coheight _ + exact (_root_.OAI.AlgebraicGeometry.Smooth.PointwiseDimension.IsAffineOpen.primeIdealOf_height_eq_coheight hU) _ _ = Order.coheight x := by have h := coheight_eq_of_isOpenImmersion (x := xu) U.ι simpa [xu] using h.symm _ = p := hx have hquotient : ringKrullDim (Γ(X.left, U) ⧸ P) = d - p := - (algebraMap_isStandardSmoothOfRelativeDimension - (d := d) X hstandard).ringKrullDim_quotient_eq_sub_complex + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentClosedPointDimension.RingHom.IsStandardSmoothOfRelativeDimension.ringKrullDim_quotient_eq_sub_complex (_root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.algebraMap_isStandardSmoothOfRelativeDimension + (d := d) X hstandard)) P hPheight - have hringW : ringKrullDim Γ(cycleComponent X.left x, W) = d - p := by + have hringW : ringKrullDim Γ(_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x, W) = d - p := by calc - ringKrullDim Γ(cycleComponent X.left x, W) = + ringKrullDim Γ(_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x, W) = ringKrullDim (Γ(X.left, U) ⧸ RingHom.ker q) := (ringKrullDim_eq_of_ringEquiv (RingHom.quotientKerEquivOfSurjective hqsurj)).symm _ = ringKrullDim (Γ(X.left, U) ⧸ P) := by rw [hqker] _ = d - p := hquotient - let s : cycleComponent X.left x ⟶ Spec ↧ℂ := c ≫ X.hom - let : Algebra ℂ Γ(cycleComponent X.left x, W) := - overSpecAlgebra (Over.mk s) W - let : Algebra.FiniteType ℂ Γ(cycleComponent X.left x, W) := by + let s : _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x ⟶ Spec ↧ℂ := c ≫ X.hom + let : Algebra ℂ Γ(_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x, W) := + _root_.OAI.AlgebraicGeometry.Over.Basic.overSpecAlgebra (Over.mk s) W + let : Algebra.FiniteType ℂ Γ(_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x, W) := by rw [← RingHom.finiteType_algebraMap] - change (algebraMap ℂ Γ(cycleComponent X.left x, W)).FiniteType + change (algebraMap ℂ Γ(_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x, W)).FiniteType apply (s.finiteType_appLE (isAffineOpen_top (Spec ↧ℂ)) hW (by simp)).comp exact RingHom.FiniteType.of_surjective _ (Scheme.ΓSpecIso ↧ℂ).symm.commRingCatIsoToRingEquiv.surjective - let Q : Ideal Γ(cycleComponent X.left x, W) := + let Q : Ideal Γ(_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x, W) := (hW.primeIdealOf zw).asIdeal have hQmax : Q.IsMaximal := hW.primeIdealOf_isMaximal_of_isClosed zw hz have hQheight : (↑Q.height : WithBot ℕ∞) = d - p := by - rw [Algebra.FiniteType.height_eq_ringKrullDim_of_isMaximal + rw [_root_.OAI.AlgebraicGeometry.Cycle.ComponentClosedPointDimension.Algebra.FiniteType.height_eq_ringKrullDim_of_isMaximal (k := ℂ) Q, hringW] have hQcoheight : Q.height = Order.coheight z := by calc Q.height = Order.coheight zw := by change (hW.primeIdealOf zw).asIdeal.height = Order.coheight zw - exact hW.primeIdealOf_height_eq_coheight _ + exact (_root_.OAI.AlgebraicGeometry.Smooth.PointwiseDimension.IsAffineOpen.primeIdealOf_height_eq_coheight hW) _ _ = Order.coheight z := by have h := coheight_eq_of_isOpenImmersion (x := zw) W.ι @@ -245,4 +254,8 @@ lemma cycleComponent_closedPoint_coheight_eq_sub rw [← hQcoheight] exact hQheight -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Cycle.ComponentClosedPointDimension diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/Dimension.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/Dimension.lean index 335cabbdef..eac861dc04 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/Dimension.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/Dimension.lean @@ -12,10 +12,16 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Support +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Support + +namespace OAI.AlgebraicGeometry.Cycle.ComponentDimension + +open _root_.AlgebraicGeometry + /-! # Dimension of a reduced cycle component @@ -31,11 +37,11 @@ Mathlib currently has no catenary or equidimensional scheme API, and its `height(x) + coheight(x) = dim(X)`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section /-- Membership in a reduced cycle component is membership in the closure that defines it. -/ lemma mem_cycleComponent_support_iff (X : Scheme) (x y : X) : @@ -48,11 +54,11 @@ lemma mem_cycleComponent_support_iff (X : Scheme) (x y : X) : This is an order isomorphism for the specialization preorders. It is the order-theoretic core of the dimension calculation for a cycle component. -/ def cycleComponentOrderIsoIic (X : Scheme) (x : X) : - cycleComponent X x ≃o Set.Iic x := - let e : cycleComponent X x ≃ Set.Iic x := - { toFun := fun y ↦ ⟨cycleComponentι X x y, show cycleComponentι X x y ≤ x by + _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X x ≃o Set.Iic x := + let e : _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X x ≃ Set.Iic x := + { toFun := fun y ↦ ⟨_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X x y, show _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X x y ≤ x by rw [Scheme.le_iff_specializes, specializes_iff_mem_closure] - exact (mem_cycleComponent_support_iff X x (cycleComponentι X x y)).mp y.2⟩ + exact (mem_cycleComponent_support_iff X x (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X x y)).mp y.2⟩ invFun := fun y ↦ ⟨y.1, by apply (mem_cycleComponent_support_iff X x y.1).mpr rw [← specializes_iff_mem_closure, ← Scheme.le_iff_specializes] @@ -61,19 +67,19 @@ def cycleComponentOrderIsoIic (X : Scheme) (x : X) : right_inv := fun _ ↦ rfl } ⟨e, by intro a b - change (cycleComponentι X x a ≤ cycleComponentι X x b) ↔ a ≤ b + change (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X x a ≤ _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X x b) ↔ a ≤ b rw [Scheme.le_iff_specializes, Scheme.le_iff_specializes] - exact (cycleComponentι X x).isClosedEmbedding.isInducing.specializes_iff⟩ + exact (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X x).isClosedEmbedding.isInducing.specializes_iff⟩ @[simp] -lemma cycleComponentOrderIsoIic_apply (X : Scheme) (x : X) (y : cycleComponent X x) : - (cycleComponentOrderIsoIic X x y : X) = cycleComponentι X x y := +lemma cycleComponentOrderIsoIic_apply (X : Scheme) (x : X) (y : _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X x) : + (cycleComponentOrderIsoIic X x y : X) = _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X x y := rfl @[simp] lemma cycleComponentOrderIsoIic_symm_apply_coe (X : Scheme) (x : X) (y : Set.Iic x) : - cycleComponentι X x ((cycleComponentOrderIsoIic X x).symm y) = y := + _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X x ((cycleComponentOrderIsoIic X x).symm y) = y := rfl /-- For a scheme, topological Krull dimension is the Krull dimension of its specialization @@ -86,15 +92,19 @@ lemma Scheme.topologicalKrullDim_eq_orderKrullDim (X : Scheme) : /-- The order-theoretic Krull dimension of the reduced closure of `x` is exactly the height of `x` in the ambient scheme. -/ lemma orderKrullDim_cycleComponent (X : Scheme) (x : X) : - Order.krullDim (cycleComponent X x) = Order.height x := by + Order.krullDim (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X x) = Order.height x := by rw [Order.krullDim_eq_of_orderIso (cycleComponentOrderIsoIic X x)] exact (Order.height_eq_krullDim_Iic x).symm /-- The topological Krull dimension of the reduced closure of `x` is exactly the order-theoretic height of `x` in the ambient scheme. -/ lemma topologicalKrullDim_cycleComponent (X : Scheme) (x : X) : - topologicalKrullDim (cycleComponent X x) = Order.height x := by - rw [Scheme.topologicalKrullDim_eq_orderKrullDim] + topologicalKrullDim (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X x) = Order.height x := by + rw [_root_.OAI.AlgebraicGeometry.Cycle.ComponentDimension.Scheme.topologicalKrullDim_eq_orderKrullDim] exact orderKrullDim_cycleComponent X x -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Cycle.ComponentDimension diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/LocalGenerator.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/LocalGenerator.lean index 5d606c4013..e8f0838af7 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/LocalGenerator.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/LocalGenerator.lean @@ -12,17 +12,22 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalClass -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.NormalCoordinates +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalClass +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.NormalCoordinates import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ProjectiveHausdorff import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalClassGenerator import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FundamentalClassGenerator import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.PuncturedEuclidean +namespace OAI.AlgebraicGeometry.Cycle.ComponentLocalGenerator + +open _root_.AlgebraicGeometry + /-! # Local generators from exact cycle-component coordinates @@ -37,36 +42,36 @@ neighborhood. This file does not construct a supported cohomology class or prove component inside the ambient variety. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicGeometry +section -attribute [local instance] overSpecAlgebra +attribute [local instance] _root_.OAI.AlgebraicGeometry.Over.Basic.overSpecAlgebra variable {d n : ℕ} {X : Over (Spec ↧ℂ)} [IsIntegral X.left] - [Smooth X.hom] [IsProjective X.hom] {x : X.left} + [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] {x : X.left} [SmoothOfRelativeDimension d X.hom] namespace CycleComponentSeparateLocalCoordinates -variable (C : CycleComponentSeparateLocalCoordinates X x d n) +variable (C : _root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates X x d n) /-- The complex structure map on the selected affine component neighborhood. -/ -abbrev neighborhoodStructureMap : +abbrev _root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.neighborhoodStructureMap : C.componentNeighborhood.toScheme ⟶ Spec ↧ℂ := - C.componentNeighborhood.ι ≫ (componentSmoothLocus X x).ι ≫ cycleComponentι X.left x ≫ X.hom + C.componentNeighborhood.ι ≫ (_root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.componentSmoothLocus X x).ι ≫ _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom /-- The retained exact component coordinates, transported to global sections of the affine neighborhood itself. -/ -def coordinateRingHomOnNeighborhood : +def _root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.coordinateRingHomOnNeighborhood : MvPolynomial (Fin n) ℂ →+* Γ(C.componentNeighborhood.toScheme, ⊤) := C.componentNeighborhood.topIso.inv.hom.comp C.componentCoordinateAlgHom.toRingHom /-- The transported coordinate map is compatible with the neighborhood's complex structure map. -/ -lemma C_comp_coordinateRingHomOnNeighborhood : +lemma _root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.C_comp_coordinateRingHomOnNeighborhood : CommRingCat.ofHom MvPolynomial.C ≫ CommRingCat.ofHom C.coordinateRingHomOnNeighborhood = (Scheme.ΓSpecIso ↧ℂ).inv ≫ C.neighborhoodStructureMap.appTop := by @@ -79,12 +84,12 @@ lemma C_comp_coordinateRingHomOnNeighborhood : C.neighborhoodStructureMap.appTop) ≫ C.componentNeighborhood.topIso.hom) rw [Category.assoc, Iso.inv_hom_id, Category.comp_id] - simp only [neighborhoodStructureMap, Scheme.Hom.comp_appTop, Category.assoc] - rw [Scheme.Opens.ι_appTop_topIso_hom] + simp only [_root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.neighborhoodStructureMap, Scheme.Hom.comp_appTop, Category.assoc] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.Scheme.Opens.ι_appTop_topIso_hom] exact congrArg CommRingCat.ofHom C.componentCoordinateAlgHom.comp_algebraMap /-- The transported exact coordinate map remains étale. -/ -lemma coordinateRingHomOnNeighborhood_etale : +lemma _root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.coordinateRingHomOnNeighborhood_etale : C.coordinateRingHomOnNeighborhood.Etale := RingHom.Etale.respectsIso.1 C.componentCoordinateAlgHom.toRingHom C.componentNeighborhood.topIso.symm.commRingCatIsoToRingEquiv @@ -92,7 +97,7 @@ lemma coordinateRingHomOnNeighborhood_etale : /-- Complex affine `n`-space is standard smooth of relative dimension `n`, using its presentation with `n` variables and no relations. -/ -lemma mvPolynomial_C_isStandardSmoothOfRelativeDimension : +lemma _root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.mvPolynomial_C_isStandardSmoothOfRelativeDimension : (MvPolynomial.C : ℂ →+* MvPolynomial (Fin n) ℂ).IsStandardSmoothOfRelativeDimension n := by rw [show (MvPolynomial.C : ℂ →+* MvPolynomial (Fin n) ℂ) = algebraMap ℂ (MvPolynomial (Fin n) ℂ) from rfl] @@ -118,7 +123,7 @@ lemma mvPolynomial_C_isStandardSmoothOfRelativeDimension : /-- The structure map of the exact affine component neighborhood is standard smooth of the coordinate package's specified dimension on global sections. -/ -lemma neighborhoodStructureMap_appTop_isStandardSmoothOfRelativeDimension : +lemma _root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.neighborhoodStructureMap_appTop_isStandardSmoothOfRelativeDimension : C.neighborhoodStructureMap.appTop.hom.IsStandardSmoothOfRelativeDimension n := by have hcoord0 : C.coordinateRingHomOnNeighborhood.IsStandardSmoothOfRelativeDimension 0 := RingHom.etale_iff_isStandardSmoothOfRelativeDimension_zero.mp @@ -127,7 +132,7 @@ lemma neighborhoodStructureMap_appTop_isStandardSmoothOfRelativeDimension : RingHom.IsStandardSmoothOfRelativeDimension n (C.coordinateRingHomOnNeighborhood.comp MvPolynomial.C) := by simpa only [zero_add] using - hcoord0.comp (mvPolynomial_C_isStandardSmoothOfRelativeDimension (n := n)) + hcoord0.comp (_root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.mvPolynomial_C_isStandardSmoothOfRelativeDimension (n := n)) have hcat := C.C_comp_coordinateRingHomOnNeighborhood have hcomp : RingHom.IsStandardSmoothOfRelativeDimension n @@ -155,7 +160,7 @@ lemma neighborhoodStructureMap_appTop_isStandardSmoothOfRelativeDimension : /-- The exact coordinates prove that the selected affine component neighborhood is smooth of the specified relative dimension. -/ -noncomputable instance neighborhoodSmoothOfRelativeDimension : +noncomputable instance _root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.neighborhoodSmoothOfRelativeDimension : SmoothOfRelativeDimension n C.neighborhoodStructureMap where exists_isStandardSmoothOfRelativeDimension y := by let : IsAffine C.componentNeighborhood.toScheme := @@ -166,39 +171,48 @@ noncomputable instance neighborhoodSmoothOfRelativeDimension : · rw [Scheme.Hom.appLE_eq_app] exact C.neighborhoodStructureMap_appTop_isStandardSmoothOfRelativeDimension -noncomputable local instance coordinateRingAlgebra : +noncomputable local instance _root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.coordinateRingAlgebra : Algebra (MvPolynomial (Fin n) ℂ) Γ(C.componentNeighborhood.toScheme, ⊤) := C.coordinateRingHomOnNeighborhood.toAlgebra -noncomputable local instance coordinateRingComplexAlgebra : +noncomputable local instance _root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.coordinateRingComplexAlgebra : Algebra ℂ Γ(C.componentNeighborhood.toScheme, ⊤) := (C.coordinateRingHomOnNeighborhood.comp MvPolynomial.C).toAlgebra -noncomputable local instance coordinateRingScalarTower : +noncomputable local instance _root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.coordinateRingScalarTower : IsScalarTower ℂ (MvPolynomial (Fin n) ℂ) Γ(C.componentNeighborhood.toScheme, ⊤) := IsScalarTower.of_algebraMap_eq fun _ ↦ rfl -noncomputable local instance coordinateRingEtale : +noncomputable local instance _root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.coordinateRingEtale : Algebra.Etale (MvPolynomial (Fin n) ℂ) Γ(C.componentNeighborhood.toScheme, ⊤) := RingHom.etale_algebraMap.mp C.coordinateRingHomOnNeighborhood_etale end CycleComponentSeparateLocalCoordinates -end AlgebraicGeometry +end -namespace AlgebraicTopology.Singular +namespace AlgebraicTopology +open _root_.AlgebraicTopology +namespace Singular +open _root_.AlgebraicTopology +open _root_.OAI.AlgebraicTopology.Singular /-- The oriented standard complex local class generates rational local homology in every complex dimension. -/ -lemma span_standardComplexLocalClass_eq_top (n : ℕ) : - Submodule.span ℚ {standardComplexLocalClass ℚ n} = ⊤ := by +lemma _root_.OAI.AlgebraicGeometry.Cycle.ComponentLocalGenerator.span_standardComplexLocalClass_eq_top (n : ℕ) : + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ n} = ⊤ := by cases n with - | zero => exact span_standardComplexLocalClass_zero_eq_top + | zero => exact _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassGenerator.Singular.span_standardComplexLocalClass_zero_eq_top | succ n => - rw [span_standardComplexLocalClass_eq_top_iff] + rw [_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassGenerator.Singular.span_standardComplexLocalClass_eq_top_iff] have hdeg : (n + 1) * 2 = n * 2 + 2 := by lia rw [hdeg] - exact span_standardLocalClass_add_two_eq_top (n * 2) + exact _root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.span_standardLocalClass_add_two_eq_top (n * 2) + +end Singular +end AlgebraicTopology + +end -end AlgebraicTopology.Singular +end OAI.AlgebraicGeometry.Cycle.ComponentLocalGenerator diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/NormalCoordinates.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/NormalCoordinates.lean index 8c38c004d7..8960dea791 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/NormalCoordinates.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/NormalCoordinates.lean @@ -12,11 +12,12 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Support -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.SmoothCoordinates +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Support +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.SmoothCoordinates import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.Dimension import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.DimensionFormula @@ -25,6 +26,11 @@ import HodgeConjecture.Mathlib.AlgebraicGeometry.GenericPoint import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.NormalGeometry +namespace OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates + +open _root_.AlgebraicGeometry +open _root_.RingHom + /-! # Exact local coordinates on small-dimensional cycle components @@ -39,11 +45,12 @@ requires a local bridge showing that every closed point of the component has tha is a separate statement. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace namespace RingHom +open _root_.RingHom /-- A standard-smooth ring map is standard smooth of some relative dimension. -/ lemma IsStandardSmooth.exists_isStandardSmoothOfRelativeDimension @@ -57,9 +64,9 @@ lemma IsStandardSmooth.exists_isStandardSmoothOfRelativeDimension end RingHom -namespace AlgebraicGeometry +section -attribute [local instance] overSpecAlgebra +attribute [local instance] _root_.OAI.AlgebraicGeometry.Over.Basic.overSpecAlgebra section SchemeGeometry @@ -76,7 +83,7 @@ lemma SmoothOfRelativeDimension.coheight_eq_dimension_of_isClosed exact hy rw [hx.closure_eq] at hy' exact (Set.mem_singleton_iff.mp hy').ge - have h := SmoothOfRelativeDimension.height_add_coheight_eq_of_isClosed + have h := _root_.OAI.AlgebraicGeometry.Smooth.PointwiseDimension.SmoothOfRelativeDimension.height_add_coheight_eq_of_isClosed (f := f) (d := d) x hx rw [Order.IsMin.height_eq_zero hxmin, zero_add] at h exact h @@ -90,14 +97,14 @@ namespace CycleComponentSeparateLocalCoordinates /-- The smooth locus of the reduced cycle component underlying an exact coordinate package. -/ abbrev componentSmoothLocus (X : Over (Spec ↧ℂ)) [Smooth X.hom] - [IsProjective X.hom] (x : X.left) := - (cycleComponentι X.left x ≫ X.hom).smoothLocus + [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) := + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus /-- The component's smooth locus, bundled over the complex base. -/ abbrev componentSmoothScheme (X : Over (Spec ↧ℂ)) [Smooth X.hom] - [IsProjective X.hom] (x : X.left) : Over (Spec ↧ℂ) := - Over.mk ((componentSmoothLocus X x).ι ≫ cycleComponentι X.left x ≫ X.hom) + [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) : Over (Spec ↧ℂ) := + Over.mk ((componentSmoothLocus X x).ι ≫ _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom) end CycleComponentSeparateLocalCoordinates @@ -108,36 +115,40 @@ chosen étale coordinate chart of `X` at the image point with `d` coordinates. I that the chosen point of `Z` is closed. -/ structure CycleComponentSeparateLocalCoordinates [IsIntegral X.left] [Smooth X.hom] - [IsProjective X.hom] (x : X.left) (d n : ℕ) + [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) (d n : ℕ) [SmoothOfRelativeDimension d X.hom] where /-- A complex point of the reduced component. -/ - point : ComplexPoint (Over.mk (cycleComponentι X.left x ≫ X.hom)) + point : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom)) /-- The point lies in the component's smooth locus. -/ point_mem_smoothLocus : point.underlying ∈ - (cycleComponentι X.left x ≫ X.hom).smoothLocus + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus /-- The underlying point is closed in the component. -/ point_isClosed : IsClosed {point.underlying} /-- An affine neighborhood in the smooth locus of the component. -/ componentNeighborhood : - (CycleComponentSeparateLocalCoordinates.componentSmoothScheme + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.componentSmoothScheme (X := X) (x := x)).left.Opens /-- The component neighborhood is affine. -/ componentNeighborhood_isAffine : IsAffineOpen componentNeighborhood /-- The chosen point belongs to the component neighborhood. -/ point_mem_componentNeighborhood : (⟨point.underlying, point_mem_smoothLocus⟩ : - (CycleComponentSeparateLocalCoordinates.componentSmoothScheme + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.componentSmoothScheme (X := X) (x := x)).left) ∈ componentNeighborhood /-- An étale coordinate homomorphism of complex algebras with exactly `n` component coordinates. -/ componentCoordinateAlgHom : MvPolynomial (Fin n) ℂ →ₐ[ℂ] - Γ((CycleComponentSeparateLocalCoordinates.componentSmoothScheme + Γ((_root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.CycleComponentSeparateLocalCoordinates.componentSmoothScheme (X := X) (x := x)).left, componentNeighborhood) /-- The component coordinate homomorphism is étale. -/ componentCoordinateAlgHom_etale : componentCoordinateAlgHom.toRingHom.Etale /-- Independently chosen étale coordinates on the ambient `d`-fold. -/ - ambientCoordinates : LocalEtaleCoordinates X d - (cycleComponentι X.left x point.underlying) + ambientCoordinates : _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.LocalEtaleCoordinates X d + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x point.underlying) + +end + +end -end AlgebraicGeometry +end OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/NormalGeometry.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/NormalGeometry.lean index 8c3315b72c..6165882b9d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/NormalGeometry.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/NormalGeometry.lean @@ -12,16 +12,21 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Support +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Support import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.Dimension import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.DimensionFormula import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import Mathlib.AlgebraicGeometry.AlgClosed.Basic import Mathlib.Analysis.Complex.Polynomial.Basic +namespace OAI.AlgebraicGeometry.Cycle.ComponentNormal + +open _root_.AlgebraicGeometry + /-! # Smooth geometry of cycle components @@ -36,43 +41,43 @@ this bound to equality. A simultaneous coordinate normal form of exact codimensi not asserted here. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section variable (X : Over (Spec ↧ℂ)) /-- The smooth locus of a reduced cycle component is Zariski dense. -/ lemma dense_cycleComponent_smoothLocus - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) : + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) : Dense - ((cycleComponentι X.left x ≫ X.hom).smoothLocus : - Set (cycleComponent X.left x)) := - (cycleComponentι X.left x ≫ X.hom).dense_smoothLocus_of_perfectField + ((_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus : + Set (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x)) := + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).dense_smoothLocus_of_perfectField /-- The smooth locus of an integral cycle component is irreducible. -/ noncomputable instance cycleComponent_smoothLocus_irreducibleSpace - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) : + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) : IrreducibleSpace - (cycleComponentι X.left x ≫ X.hom).smoothLocus := by + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus := by obtain ⟨y, hy⟩ := (dense_cycleComponent_smoothLocus X x).nonempty let : Nonempty - (cycleComponentι X.left x ≫ X.hom).smoothLocus := + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus := ⟨⟨y, hy⟩⟩ exact - (cycleComponentι X.left x ≫ X.hom).smoothLocus.ι.isOpenEmbedding.irreducibleSpace + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus.ι.isOpenEmbedding.irreducibleSpace /-- The scheme points that are both smooth and closed are dense in a reduced cycle component. -/ lemma dense_cycleComponent_smooth_closedPoints - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) : + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) : Dense - (((cycleComponentι X.left x ≫ X.hom).smoothLocus : - Set (cycleComponent X.left x)) ∩ - closedPoints (cycleComponent X.left x)) := by - let f := cycleComponentι X.left x ≫ X.hom - let : JacobsonSpace (cycleComponent X.left x) := + (((_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus : + Set (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x)) ∩ + closedPoints (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x)) := by + let f := _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom + let : JacobsonSpace (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x) := LocallyOfFiniteType.jacobsonSpace f exact dense_iff_closure_eq.mpr ((JacobsonSpace.closure_inter_closedPoints_eq_closure f.smoothLocus.2.isLocallyClosed).trans @@ -82,12 +87,16 @@ lemma dense_cycleComponent_smooth_closedPoints topological Krull dimension at most `d - p`. -/ lemma topologicalKrullDim_cycleComponent_le_sub [IsIntegral X.left] [Smooth X.hom] - [IsProjective X.hom] (x : X.left) {d p : ℕ} + [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) {d p : ℕ} [SmoothOfRelativeDimension d X.hom] (hx : Order.coheight x = p) : - topologicalKrullDim (cycleComponent X.left x) ≤ d - p := by - rw [topologicalKrullDim_cycleComponent] + topologicalKrullDim (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x) ≤ d - p := by + rw [_root_.OAI.AlgebraicGeometry.Cycle.ComponentDimension.topologicalKrullDim_cycleComponent] exact WithBot.coe_le_coe.mpr - (SmoothOfRelativeDimension.height_le_sub_of_coheight_eq + (_root_.OAI.AlgebraicGeometry.Smooth.DimensionFormula.SmoothOfRelativeDimension.height_le_sub_of_coheight_eq (f := X.hom) (d := d) x hx) -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Cycle.ComponentNormal diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SingularClosedFiltration.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SingularClosedFiltration.lean index 45fe86adc2..bf3e0a9b50 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SingularClosedFiltration.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SingularClosedFiltration.lean @@ -1,13 +1,18 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Component.SingularClosedFiltration +import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Component.SingularClosedFiltration import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.Cycle.ComponentSingularGe + +open _root_.AlgebraicGeometry + /-! # Ambient closed supports for singular-component localization induction @@ -17,36 +22,36 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) /-- Let `X` be a smooth integral projective complex scheme and `Z` the reduced closure of `x ∈ X`. Put `S₀ = Z_sing` and `S_{k+1} = (S_k)_sing`, giving each closed subset its reduced scheme structure. This is the length of the finite list defining the filtration; all terms from this index onward are empty. -/ abbrev cycleComponentSingularFiltrationLength : ℕ := - (cycleComponentSingularStratification X x).length + (_root_.OAI.AlgebraicGeometry.Smooth.SingularLocusDimension.cycleComponentSingularStratification X x).length /-- Let `X` be a smooth integral projective complex scheme and `Z` the reduced closure of `x ∈ X`. Put `S₀ = Z_sing` and `S_{k+1} = (S_k)_sing`, giving each closed subset its reduced scheme structure. This smooth scheme is the stratum `S_k \ S_{k+1}` with its induced reduced structure. -/ abbrev cycleComponentSingularFiltrationStratum (k : ℕ) : Scheme := - reducedClosedSmoothPiece (cycleComponentι X.left x ≫ X.hom) - (cycleComponentSingularClosedFiltration X x k) + _root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSmoothPiece (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom) + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularClosedFiltration X x k) /-- Let `X` be a smooth integral projective complex scheme and `Z` the reduced closure of `x ∈ X`. Put `S₀ = Z_sing` and `S_{k+1} = (S_k)_sing`, giving each closed subset its reduced scheme structure. This morphism is the inclusion of the smooth stratum `S_k \ S_{k+1}` into `X`. -/ def cycleComponentSingularFiltrationStratumι (k : ℕ) : cycleComponentSingularFiltrationStratum X x k ⟶ X.left := - reducedClosedSmoothPieceι (cycleComponentι X.left x ≫ X.hom) - (cycleComponentSingularClosedFiltration X x k) ≫ cycleComponentι X.left x + _root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSmoothPieceι (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom) + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularClosedFiltration X x k) ≫ _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x /-- A singular-filtration stratum with its induced structure map to `Spec ℂ`. -/ abbrev cycleComponentSingularFiltrationStratumOver (k : ℕ) : Over (Spec ↧ℂ) := @@ -59,8 +64,8 @@ def cycleComponentSingularFiltrationStratumOverι (k : ℕ) : instance cycleComponentSingularFiltrationStratumOverι_isImmersion (k : ℕ) : IsImmersion (cycleComponentSingularFiltrationStratumOverι X x k).left := by - change IsImmersion (reducedClosedSmoothPieceι (cycleComponentι X.left x ≫ X.hom) - (cycleComponentSingularClosedFiltration X x k) ≫ cycleComponentι X.left x) + change IsImmersion (_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSmoothPieceι (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom) + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularClosedFiltration X x k) ≫ _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x) infer_instance set_option backward.isDefEq.respectTransparency false in @@ -71,8 +76,8 @@ instance cycleComponentSingularFiltrationStratumι_isImmersion (k : ℕ) : instance cycleComponentSingularFiltrationStratum_smooth (k : ℕ) : Smooth (cycleComponentSingularFiltrationStratumι X x k ≫ X.hom) := by - change Smooth ((reducedClosedSmoothPieceι (cycleComponentι X.left x ≫ X.hom) - (cycleComponentSingularClosedFiltration X x k) ≫ cycleComponentι X.left x) ≫ X.hom) + change Smooth ((_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSmoothPieceι (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom) + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularClosedFiltration X x k) ≫ _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x) ≫ X.hom) rw [Category.assoc] infer_instance @@ -85,17 +90,17 @@ omit [IsIntegral X.left] [Smooth X.hom] in /-- The successive ambient difference is precisely the image of the smooth stratum. -/ theorem cycleComponentSingularAmbientClosedFiltration_layer (k : ℕ) : Set.range (cycleComponentSingularFiltrationStratumι X x k) = - (cycleComponentSingularAmbientClosedFiltration X x k : Set X.left) \ - (cycleComponentSingularAmbientClosedFiltration X x (k + 1) : Set X.left) := by + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularAmbientClosedFiltration X x k : Set X.left) \ + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularAmbientClosedFiltration X x (k + 1) : Set X.left) := by rw [cycleComponentSingularFiltrationStratumι, Scheme.Hom.comp_base, TopCat.coe_comp, - Set.range_comp, reducedSmoothClosedFiltration_layer] - exact Set.image_sdiff (cycleComponentι X.left x).isClosedEmbedding.injective _ _ + Set.range_comp, _root_.OAI.AlgebraicGeometry.Stratification.ClosedFiltration.reducedSmoothClosedFiltration_layer] + exact Set.image_sdiff (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x).isClosedEmbedding.injective _ _ /-- Let `X` be a smooth integral projective complex scheme and `Z` the reduced closure of `x ∈ X`. Put `S₀ = Z_sing` and `S_{k+1} = (S_k)_sing`, giving each closed subset its reduced scheme structure. This open subscheme is `X \ S_{k+1}`, in which the `k`-th stratum is closed. -/ def cycleComponentSingularStratumAmbientOpen (k : ℕ) : X.left.Opens := - (cycleComponentSingularAmbientClosedFiltration X x (k + 1)).compl + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularAmbientClosedFiltration X x (k + 1)).compl /-- Let `X` be a smooth integral projective complex scheme and `Z` the reduced closure of `x ∈ X`. Put `S₀ = Z_sing` and `S_{k+1} = (S_k)_sing`, giving each closed subset its reduced scheme @@ -112,7 +117,7 @@ def cycleComponentSingularStratumClosedLift (k : ℕ) : /-- The localization open with its induced structure map to `Spec ℂ`. -/ abbrev cycleComponentSingularStratumAmbientOpenOver (k : ℕ) : Over (Spec ↧ℂ) := - ComplexPoint.openScheme X (cycleComponentSingularStratumAmbientOpen X x k) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X (cycleComponentSingularStratumAmbientOpen X x k) instance cycleComponentSingularStratumAmbientOpenOver_locallyOfFiniteType (k : ℕ) : LocallyOfFiniteType (cycleComponentSingularStratumAmbientOpenOver X x k).hom := by @@ -143,7 +148,7 @@ omit [IsIntegral X.left] [Smooth X.hom] in theorem range_cycleComponentSingularStratumClosedLift (k : ℕ) : Set.range (cycleComponentSingularStratumClosedLift X x k) = (cycleComponentSingularStratumAmbientOpen X x k).ι ⁻¹' - (cycleComponentSingularAmbientClosedFiltration X x k : Set X.left) := by + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularAmbientClosedFiltration X x k : Set X.left) := by have hf (w : cycleComponentSingularFiltrationStratum X x k) : (cycleComponentSingularStratumAmbientOpen X x k).ι (cycleComponentSingularStratumClosedLift X x k w) = @@ -170,7 +175,7 @@ instance cycleComponentSingularStratumClosedLift_isClosedImmersion (k : ℕ) : (cycleComponentSingularStratumAmbientOpen X x k).ι apply IsClosedImmersion.of_isPreimmersion rw [range_cycleComponentSingularStratumClosedLift] - exact (cycleComponentSingularAmbientClosedFiltration X x k).isClosed.preimage + exact (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularAmbientClosedFiltration X x k).isClosed.preimage (cycleComponentSingularStratumAmbientOpen X x k).ι.continuous instance cycleComponentSingularStratumClosedLiftOver_isClosedImmersion (k : ℕ) : @@ -194,63 +199,63 @@ instance cycleComponentSingularStratumClosedLift_smooth (k : ℕ) : namespace ComplexPoint /-- The smooth-locus immersion into the ambient variety, bundled over `Spec ℂ`. -/ -def cycleComponentSmoothLocusOverι : cycleComponentSmoothLocusOver X x ⟶ X := - Over.homMk ((cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ - cycleComponentι X.left x) rfl - -instance cycleComponentSmoothLocusOverι_isImmersion : - IsImmersion (cycleComponentSmoothLocusOverι X x).left := by - change IsImmersion ((cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ - cycleComponentι X.left x) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusOverι : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusOver X x ⟶ X := + Over.homMk ((_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ + _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x) rfl + +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusOverι_isImmersion : + IsImmersion (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusOverι X x).left := by + change IsImmersion ((_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ + _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x) infer_instance end ComplexPoint -end AlgebraicGeometry +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) theorem cycleComponentSingularClosedFiltration_length : - cycleComponentSingularClosedFiltration X x - (cycleComponentSingularStratification X x).length = ⊥ := by - let := cycleComponent_isNoetherian X x - exact reducedSmoothClosedFiltration_length _ _ + _root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularClosedFiltration X x + (_root_.OAI.AlgebraicGeometry.Smooth.SingularLocusDimension.cycleComponentSingularStratification X x).length = ⊥ := by + let := _root_.OAI.AlgebraicGeometry.Cycle.SupportEq.cycleComponent_isNoetherian X x + exact _root_.OAI.AlgebraicGeometry.Stratification.ClosedFiltration.reducedSmoothClosedFiltration_length _ _ omit [IsIntegral X.left] [Smooth X.hom] in theorem cycleComponentSingularAmbientClosedFiltration_antitone : - Antitone (cycleComponentSingularAmbientClosedFiltration X x) := - fun _ _ hkl ↦ Set.image_mono (reducedSmoothClosedFiltration_antitone _ _ hkl) + Antitone (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularAmbientClosedFiltration X x) := + fun _ _ hkl ↦ Set.image_mono (_root_.OAI.AlgebraicGeometry.Stratification.ClosedFiltration.reducedSmoothClosedFiltration_antitone _ _ hkl) theorem cycleComponentSingularAmbientClosedFiltration_length : - cycleComponentSingularAmbientClosedFiltration X x - (cycleComponentSingularStratification X x).length = ⊥ := by + _root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularAmbientClosedFiltration X x + (_root_.OAI.AlgebraicGeometry.Smooth.SingularLocusDimension.cycleComponentSingularStratification X x).length = ⊥ := by apply SetLike.coe_injective - change cycleComponentι X.left x '' - (cycleComponentSingularClosedFiltration X x - (cycleComponentSingularStratification X x).length : Set _) = ∅ + change _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x '' + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularClosedFiltration X x + (_root_.OAI.AlgebraicGeometry.Smooth.SingularLocusDimension.cycleComponentSingularStratification X x).length : Set _) = ∅ rw [cycleComponentSingularClosedFiltration_length] exact Set.image_empty _ /-- Every closed remainder stays below the singular-boundary dimension bound. -/ theorem cycleComponentSingularClosedFiltration_dimension_lt {p : ℕ} (hx : Order.coheight x = p) (k : ℕ) : - topologicalKrullDim (cycleComponentSingularClosedFiltration X x k) < (dim X.left - p : ℕ) := - (IsEmbedding.inclusion (reducedSmoothClosedFiltration_le _ _ k)).isInducing.topologicalKrullDim_le.trans_lt - (topologicalKrullDim_cycleComponent_singularLocus_lt X x hx) + topologicalKrullDim (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularClosedFiltration X x k) < (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - p : ℕ) := + (IsEmbedding.inclusion (_root_.OAI.AlgebraicGeometry.Stratification.ClosedFiltration.reducedSmoothClosedFiltration_le _ _ k)).isInducing.topologicalKrullDim_le.trans_lt + (_root_.OAI.AlgebraicGeometry.Smooth.SingularLocusDimension.topologicalKrullDim_cycleComponent_singularLocus_lt X x hx) /-- Every smooth layer has strictly smaller dimension than the component. -/ theorem cycleComponentSingularFiltrationStratum_dimension_lt {p : ℕ} (hx : Order.coheight x = p) (k : ℕ) : - topologicalKrullDim (cycleComponentSingularFiltrationStratum X x k) < (dim X.left - p : ℕ) := - (topologicalKrullDim_reducedClosedSmoothPiece_le _ le_rfl).trans_lt + topologicalKrullDim (cycleComponentSingularFiltrationStratum X x k) < (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - p : ℕ) := + (_root_.OAI.AlgebraicGeometry.Smooth.SingularLocusDimension.topologicalKrullDim_reducedClosedSmoothPiece_le _ le_rfl).trans_lt (cycleComponentSingularClosedFiltration_dimension_lt X x hx k) /-- The normal codimension lower bound is realized on standard-smooth affine @@ -259,11 +264,11 @@ theorem cycleComponentSingularFiltrationStratum_exists_affine_normalCodimension_ {p : ℕ} (hx : Order.coheight x = p) (k : ℕ) (z : cycleComponentSingularFiltrationStratum X x k) : ∃ (U : (cycleComponentSingularFiltrationStratum X x k).Opens) (_ : IsAffineOpen U), - z ∈ U ∧ ∃ n : ℕ, n < dim X.left - p ∧ p + 1 ≤ dim X.left - n ∧ + z ∈ U ∧ ∃ n : ℕ, n < _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - p ∧ p + 1 ≤ _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - n ∧ RingHom.IsStandardSmoothOfRelativeDimension n ((cycleComponentSingularFiltrationStratumι X x k ≫ X.hom).appLE ⊤ U (by simp)).hom := by obtain ⟨U, hU, hzU, n, hn, hstd⟩ := - Smooth.exists_affine_relativeDimension_lt_of_topologicalKrullDim_lt + _root_.OAI.AlgebraicGeometry.Smooth.SingularLocusDimension.exists_affine_relativeDimension_lt_of_topologicalKrullDim_lt (cycleComponentSingularFiltrationStratumι X x k ≫ X.hom) (cycleComponentSingularFiltrationStratum_dimension_lt X x hx k) z exact ⟨U, hU, hzU, n, hn, by omega, hstd⟩ @@ -274,55 +279,59 @@ theorem cycleComponentSingularFiltrationStratum_exists_smooth_relativeDimension {p : ℕ} (hx : Order.coheight x = p) (k : ℕ) (z : cycleComponentSingularFiltrationStratum X x k) : ∃ (U : (cycleComponentSingularFiltrationStratum X x k).Opens) (_ : IsAffineOpen U), - z ∈ U ∧ ∃ n : ℕ, n < dim X.left - p ∧ p + 1 ≤ dim X.left - n ∧ + z ∈ U ∧ ∃ n : ℕ, n < _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - p ∧ p + 1 ≤ _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - n ∧ SmoothOfRelativeDimension n (U.ι ≫ cycleComponentSingularFiltrationStratumι X x k ≫ X.hom) := by obtain ⟨U, hU, hzU, n, hn, hcodim, hstd⟩ := cycleComponentSingularFiltrationStratum_exists_affine_normalCodimension_ge X x hx k z exact ⟨U, hU, hzU, n, hn, hcodim, - smoothOfRelativeDimension_affineOpen_of_isStandardSmooth _ hU hstd⟩ + _root_.OAI.AlgebraicGeometry.Smooth.AffineRelativeDimension.smoothOfRelativeDimension_affineOpen_of_isStandardSmooth _ hU hstd⟩ namespace ComplexPoint omit [IsIntegral X.left] [Smooth X.hom] in -theorem cycleComponentSingularAnalyticClosedFiltration_antitone : - Antitone (cycleComponentSingularAnalyticClosedFiltration X x) := - fun _ _ hkl _ hz ↦ cycleComponentSingularAmbientClosedFiltration_antitone X x hkl hz +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration_antitone : + Antitone (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x) := + fun _ _ hkl _ hz ↦ _root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularAmbientClosedFiltration_antitone X x hkl hz -theorem cycleComponentSingularAnalyticClosedFiltration_length : - cycleComponentSingularAnalyticClosedFiltration X x - (cycleComponentSingularStratification X x).length = ⊥ := by +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration_length : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x + (_root_.OAI.AlgebraicGeometry.Smooth.SingularLocusDimension.cycleComponentSingularStratification X x).length = ⊥ := by apply SetLike.coe_injective - change Point.underlying ⁻¹' - (cycleComponentSingularAmbientClosedFiltration X x - (cycleComponentSingularStratification X x).length : Set X.left) = ∅ - rw [cycleComponentSingularAmbientClosedFiltration_length] + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying ⁻¹' + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularClosedFiltration.cycleComponentSingularAmbientClosedFiltration X x + (_root_.OAI.AlgebraicGeometry.Smooth.SingularLocusDimension.cycleComponentSingularStratification X x).length : Set X.left) = ∅ + rw [_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularAmbientClosedFiltration_length] exact Set.preimage_empty omit [IsIntegral X.left] [Smooth X.hom] in /-- Each analytic successive difference is the complex-point image of its smooth stratum. -/ -theorem cycleComponentSingularAnalyticClosedFiltration_layer (k : ℕ) : - Set.range (Point.map (cycleComponentSingularFiltrationStratumOverι X x k)) = - (cycleComponentSingularAnalyticClosedFiltration X x k : Set (ComplexPoint X)) \ - (cycleComponentSingularAnalyticClosedFiltration X x (k + 1) : Set (ComplexPoint X)) := by - rw [range_map_of_isImmersion X] - change Point.underlying ⁻¹' Set.range (cycleComponentSingularFiltrationStratumι X x k) = _ - rw [cycleComponentSingularAmbientClosedFiltration_layer] +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration_layer (k : ℕ) : + Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularFiltrationStratumOverι X x k)) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) \ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x (k + 1) : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.range_map_of_isImmersion X] + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying ⁻¹' Set.range (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularFiltrationStratumι X x k) = _ + rw [_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularAmbientClosedFiltration_layer] rfl omit [IsIntegral X.left] [Smooth X.hom] in /-- Inside the localization open, the stratum's closed-embedding image is the current analytic closed support restricted to that open. -/ -theorem cycleComponentSingularStratumClosedLift_complexPoints_range (k : ℕ) : - Set.range (Point.map (cycleComponentSingularStratumClosedLiftOver X x k)) = - Point.map (openInclusion X (cycleComponentSingularStratumAmbientOpen X x k)) ⁻¹' - (cycleComponentSingularAnalyticClosedFiltration X x k : Set (ComplexPoint X)) := by - rw [range_map_of_isImmersion] - change (Point.underlying : ComplexPoint (cycleComponentSingularStratumAmbientOpenOver X x k) → - (cycleComponentSingularStratumAmbientOpenOver X x k).left) ⁻¹' - Set.range (cycleComponentSingularStratumClosedLift X x k) = _ - rw [range_cycleComponentSingularStratumClosedLift] +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularStratumClosedLift_complexPoints_range (k : ℕ) : + Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularStratumClosedLiftOver X x k)) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularStratumAmbientOpen X x k)) ⁻¹' + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.range_map_of_isImmersion] + change (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularStratumAmbientOpenOver X x k) → + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularStratumAmbientOpenOver X x k).left) ⁻¹' + Set.range (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularStratumClosedLift X x k) = _ + rw [_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.range_cycleComponentSingularStratumClosedLift] rfl end ComplexPoint -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Cycle.ComponentSingularGe diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SmoothClosedLift.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SmoothClosedLift.lean index 0d4b80951d..ac72ddcc8b 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SmoothClosedLift.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SmoothClosedLift.lean @@ -1,10 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Component.SmoothClosedLift +import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Component.SmoothClosedLift + +namespace OAI.AlgebraicGeometry.Cycle.ComponentSmoothCoe + +open _root_.AlgebraicGeometry /-! # The smooth-locus closed lift of an integral cycle component @@ -13,55 +18,55 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Component.SmoothClosedLift`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) omit [IsIntegral X.left] [Smooth X.hom] in /-- `X ∖ Z_sing` is the complement of the image of the component's singular locus: the filtration index `0` in the definition contributes nothing. -/ @[simp] theorem coe_cycleComponentSmoothLocusAmbientOpen : - (cycleComponentSmoothLocusAmbientOpen X x : Set X.left) = - (cycleComponentι X.left x '' - (singularLocusClosed (cycleComponentι X.left x ≫ X.hom) : Set _))ᶜ := rfl + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpen X x : Set X.left) = + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x '' + (_root_.OAI.AlgebraicGeometry.Stratification.Basic.singularLocusClosed (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom) : Set _))ᶜ := rfl omit [IsIntegral X.left] [Smooth X.hom] in /-- The image of the lift is the restriction of the full component support. -/ theorem range_cycleComponentSmoothLocusClosedLift : - Set.range (cycleComponentSmoothLocusClosedLift X x) = - (cycleComponentSmoothLocusAmbientOpen X x).ι ⁻¹' closure ({x} : Set X.left) := by - rw [← range_cycleComponentι X.left x] - exact range_closedImmersionSourceOpenLift _ _ + Set.range (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusClosedLift X x) = + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpen X x).ι ⁻¹' closure ({x} : Set X.left) := by + rw [← _root_.OAI.AlgebraicGeometry.Cycle.SupportEq.range_cycleComponentι X.left x] + exact _root_.OAI.AlgebraicGeometry.ClosedImmersion.SourceOpen.range_closedImmersionSourceOpenLift _ _ variable {p : ℕ} /-- The smooth locus has the relative dimension of the integral component, constantly. -/ theorem cycleComponentSmoothLocus_smoothOfRelativeDimension (hx : Order.coheight x = p) : - SmoothOfRelativeDimension (dim X.left - p) - ((cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ cycleComponentι X.left x ≫ X.hom) := by - let A := (cycleComponentι X.left x ≫ X.hom).smoothLocus - let g := A.ι ≫ cycleComponentι X.left x ≫ X.hom - let : Smooth g := cycleComponent_smoothLocus_smooth X x - obtain ⟨m, hm⟩ := Smooth.exists_smoothOfRelativeDimension g - obtain ⟨z, hzA, hzClosed⟩ := (dense_cycleComponent_smooth_closedPoints X x).nonempty + SmoothOfRelativeDimension (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - p) + ((_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom) := by + let A := (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus + let g := A.ι ≫ _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom + let : Smooth g := _root_.OAI.AlgebraicGeometry.Cycle.SupportEq.cycleComponent_smoothLocus_smooth X x + obtain ⟨m, hm⟩ := _root_.OAI.AlgebraicGeometry.Smooth.Equidimensional.exists_smoothOfRelativeDimension g + obtain ⟨z, hzA, hzClosed⟩ := (_root_.OAI.AlgebraicGeometry.Cycle.ComponentNormal.dense_cycleComponent_smooth_closedPoints X x).nonempty let zA : A.toScheme := ⟨z, hzA⟩ have hzAClosed : IsClosed ({zA} : Set A) := by - have he : A.ι ⁻¹' ({z} : Set (cycleComponent X.left x)) = {zA} := by + have he : A.ι ⁻¹' ({z} : Set (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x)) = {zA} := by ext a exact ⟨fun h => Subtype.ext h, fun h => congrArg Subtype.val h⟩ exact he ▸ hzClosed.preimage A.ι.continuous - have hmEq : m = dim X.left - p := by + have hmEq : m = _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - p := by exact_mod_cast calc (m : ℕ∞) = Order.coheight zA := - (SmoothOfRelativeDimension.coheight_eq_dimension_of_isClosed + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentNormalCoordinates.SmoothOfRelativeDimension.coheight_eq_dimension_of_isClosed (f := g) (d := m) zA hzAClosed).symm _ = Order.coheight z := (coheight_eq_of_isOpenImmersion (x := zA) A.ι).symm - _ = dim X.left - p := cycleComponent_closedPoint_coheight_eq_sub X x z hx hzClosed + _ = _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left - p := _root_.OAI.AlgebraicGeometry.Cycle.ComponentClosedPointDimension.cycleComponent_closedPoint_coheight_eq_sub X x z hx hzClosed subst m exact hm @@ -70,26 +75,30 @@ namespace ComplexPoint omit [IsIntegral X.left] [Smooth X.hom] in /-- The analytic image of the algebraic boundary complement is the open used by the original ambient supported resolution. -/ -theorem cycleComponentSmoothLocusAmbientOpen_analytic_image : - Set.range (Point.map (openInclusion X (cycleComponentSmoothLocusAmbientOpen X x))) = - ((cycleComponentSingularAnalyticClosedFiltration X x 0).compl : Set (ComplexPoint X)) := by - rw [range_map_of_isImmersion X] - change (Point.underlying : ComplexPoint X → X.left) ⁻¹' - Set.range (cycleComponentSmoothLocusAmbientOpen X x).ι = _ +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusAmbientOpen_analytic_image : + Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpen X x))) = + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x 0).compl : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.range_map_of_isImmersion X] + change (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X → X.left) ⁻¹' + Set.range (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpen X x).ι = _ rw [Scheme.Opens.range_ι] rfl /-- The complex-point image of the closed lift is precisely the restricted full support. -/ -theorem cycleComponentSmoothLocusClosedLift_complexPoints_range : - Set.range (Point.map (cycleComponentSmoothLocusClosedLiftOver X x)) = - Point.map (openInclusion X (cycleComponentSmoothLocusAmbientOpen X x)) ⁻¹' - (cycleComponentSupport X x) := by - rw [range_map_of_isImmersion] - change (Point.underlying : ComplexPoint (cycleComponentSmoothLocusAmbientOpenOver X x) → - (cycleComponentSmoothLocusAmbientOpenOver X x).left) ⁻¹' - Set.range (cycleComponentSmoothLocusClosedLift X x) = _ - rw [range_cycleComponentSmoothLocusClosedLift] +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothLocusClosedLift_complexPoints_range : + Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusClosedLiftOver X x)) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpen X x)) ⁻¹' + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x) := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.range_map_of_isImmersion] + change (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpenOver X x) → + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusAmbientOpenOver X x).left) ⁻¹' + Set.range (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothClosedLift.cycleComponentSmoothLocusClosedLift X x) = _ + rw [_root_.OAI.AlgebraicGeometry.Cycle.ComponentSmoothCoe.range_cycleComponentSmoothLocusClosedLift] rfl end ComplexPoint -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Cycle.ComponentSmoothCoe diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SmoothSupportPurity.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SmoothSupportPurity.lean index 854c5e9124..86feb7a7e2 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SmoothSupportPurity.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SmoothSupportPurity.lean @@ -1,10 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Component.SmoothSupportPurity +import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Component.SmoothSupportPurity + +namespace OAI.AlgebraicGeometry.Cycle.ComponentSmoothIsoHom + +open _root_.AlgebraicGeometry /-! # Purity along the smooth locus of an integral cycle component @@ -13,33 +18,39 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Component.SmoothSupportPurity`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits Topology TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.Topology _root_.TopologicalSpace Opposite -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) {p : ℕ} (hx : Order.coheight x = p) /-- Its forward map displays the open-section identification, canonical sheafification comparison on the open, and exact open-restriction homology comparison. -/ -@[simp] theorem cycleComponentSmoothSupportLowestSectionCohomologyIso_hom : - (cycleComponentSmoothSupportLowestSectionCohomologyIso X x hx).hom = +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportLowestSectionCohomologyIso_hom : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportLowestSectionCohomologyIso X x hx).hom = HomologicalComplex.homologyMap - (TopCat.Sheaf.openRestrictionTopSectionComplexIso (TopCat.of (ComplexPoint X)) - (cycleComponentSmoothSupportAmbientOpen X x) - (complexSupportInjectiveComplex X (cycleComponentAnalyticClosedSupport X x))).inv + (_root_.OAI.AlgebraicTopology.Sheaf.OpenRestrictedLowestCohomology.TopCat.openRestrictionTopSectionComplexIso (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x))).inv (2 * (p : ℤ)) ≫ - TopCat.Sheaf.sectionCohomologyToSheafSection - (TopCat.of (cycleComponentSmoothSupportAmbientOpen X x)) - (cycleComponentSmoothRestrictedInjectiveComplex X x) (2 * (p : ℤ)) ⊤ ≫ - (TopCat.Sheaf.openRestrictionHomologyTopSectionsIso (TopCat.of (ComplexPoint X)) - (cycleComponentSmoothSupportAmbientOpen X x) - (complexSupportInjectiveComplex X (cycleComponentAnalyticClosedSupport X x)) + _root_.OAI.AlgebraicTopology.Sheaf.CohomologySection.TopCat.sectionCohomologyToSheafSection + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothRestrictedInjectiveComplex X x) (2 * (p : ℤ)) ⊤ ≫ + (_root_.OAI.AlgebraicTopology.Sheaf.OpenRestrictedLowestCohomology.TopCat.openRestrictionHomologyTopSectionsIso (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x)) (2 * (p : ℤ))).hom := rfl -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Cycle.ComponentSmoothIsoHom diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SupportExtension.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SupportExtension.lean index 9a1fbcec4e..a5f32554b6 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SupportExtension.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Component/SupportExtension.lean @@ -1,10 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Component.SupportExtension +import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Component.SupportExtension + +namespace OAI.AlgebraicGeometry.Cycle.ComponentSupportIsoHom + +open _root_.AlgebraicGeometry /-! # Unique extension across a cycle component's singular boundary @@ -13,19 +18,25 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Component.SupportExtension`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) {p : ℕ} (hx : Order.coheight x = p) @[simp] -theorem cycleComponentSupportExtensionIso_hom : - (cycleComponentSupportExtensionIso X x hx).hom = - HomologicalComplex.homologyMap (cycleComponentSupportSectionRestriction X x) (2 * (p : ℤ)) := rfl +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportExtensionIso_hom : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportExtensionIso X x hx).hom = + HomologicalComplex.homologyMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSupportSectionRestriction X x) (2 * (p : ℤ)) := rfl + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.Cycle.ComponentSupportIsoHom diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Local/LocalHomology.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Local/LocalHomology.lean index 08f4405f10..e67ae0b149 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Local/LocalHomology.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Local/LocalHomology.lean @@ -1,13 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.NormalCoordinates -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Local.Purity -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FlattenedSupport -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeCochainCone +import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.NormalCoordinates +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Local.Purity +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FlattenedSupport +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeCochainCone + +namespace OAI.AlgebraicGeometry.Cycle.LocalLocalHomology + +open _root_.AlgebraicGeometry + /-! # Local relative homology for smooth closed supports @@ -21,139 +27,145 @@ This is a cofinal local singular calculation. The identification with derived sh with support, and gluing its normalizations across overlapping charts, are separate theorems. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits Topology TopologicalSpace -open AlgebraicTopology.Singular +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.Topology _root_.TopologicalSpace +open _root_.OAI.AlgebraicTopology.Singular -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) [SmoothOfRelativeDimension m Y.hom] [SmoothOfRelativeDimension d X.hom] - [IsClosedImmersion i.left] (z : ComplexPoint Y) - (V : Opens (ComplexPoint X)) (hzV : Point.map i z ∈ V) + [IsClosedImmersion i.left] (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) + (V : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (hzV : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z ∈ V) /-- Let `i : Y → X` be a closed immersion of smooth schemes over `ℂ` of dimensions `m` and `d`, respectively. For `z ∈ Y(ℂ)` and an ambient open `V ⊆ X(ℂ)`, this is the chart at `i(z)` with source restricted to `V`. Its coordinates lie in `ℂ^m × ℂ^{d-m}`, and the image of `Y(ℂ)` is given by vanishing of the second coordinate. -/ -def smoothClosedSupportRestrictionChart : - OpenPartialHomeomorph (ComplexPoint X) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart : + OpenPartialHomeomorph (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) ((Fin m → ℂ) × (Fin (d - m) → ℂ)) := - (closedImmersionStandardFlatteningChart X Y i m d z).restrOpen V V.isOpen + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart X Y i m d z).restrOpen V V.isOpen include hzV in -theorem smoothClosedSupportRestrictionChart_mem_source : - Point.map i z ∈ - (smoothClosedSupportRestrictionChart X Y i m d z V).source := - ⟨closedImmersionStandardFlatteningChart_mem_source X Y i m d z, hzV⟩ - -@[simp] theorem smoothClosedSupportRestrictionChart_center : - smoothClosedSupportRestrictionChart X Y i m d z V (Point.map i z) = - (localChart Y m z z, 0) := - closedImmersionStandardFlatteningChart_center X Y i m d z - -theorem smoothClosedSupportRestrictionChart_mem_range_iff (y : ComplexPoint X) - (hy : y ∈ (smoothClosedSupportRestrictionChart X Y i m d z V).source) : - y ∈ Set.range (Point.map i) ↔ - (smoothClosedSupportRestrictionChart X Y i m d z V y).2 = 0 := - closedImmersionStandardFlatteningChart_mem_range_iff X Y i m d z y hy.1 +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart_mem_source : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart X Y i m d z V).source := + ⟨_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_mem_source X Y i m d z, hzV⟩ + +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart_center : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart X Y i m d z V (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart Y m z z, 0) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_center X Y i m d z + +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart_mem_range_iff (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hy : y ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart X Y i m d z V).source) : + y ∈ Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) ↔ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart X Y i m d z V y).2 = 0 := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionStandardFlatteningChart_mem_range_iff X Y i m d z y hy.1 /-- A small open support-model neighborhood inside the prescribed open. -/ -def smoothClosedSupportNeighborhood : Opens (ComplexPoint X) := - flattenedSupportNeighborhood (Fin m → ℂ) (d - m) - (smoothClosedSupportRestrictionChart X Y i m d z V) - (Point.map i z) - (smoothClosedSupportRestrictionChart_mem_source X Y i m d z V hzV) - -theorem mem_smoothClosedSupportNeighborhood : - Point.map i z ∈ smoothClosedSupportNeighborhood X Y i m d z V hzV := - mem_flattenedSupportNeighborhood _ _ _ _ _ - -theorem smoothClosedSupportNeighborhood_le : - smoothClosedSupportNeighborhood X Y i m d z V hzV ≤ V := - fun _ hy ↦ (flattenedSupportNeighborhood_subset_source (Fin m → ℂ) (d - m) - (smoothClosedSupportRestrictionChart X Y i m d z V) - (Point.map i z) - (smoothClosedSupportRestrictionChart_mem_source X Y i m d z V hzV) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhood : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := + _root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood (Fin m → ℂ) (d - m) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart X Y i m d z V) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart_mem_source X Y i m d z V hzV) + +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_smoothClosedSupportNeighborhood : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhood X Y i m d z V hzV := + _root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.mem_flattenedSupportNeighborhood _ _ _ _ _ + +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhood_le : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhood X Y i m d z V hzV ≤ V := + fun _ hy ↦ (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood_subset_source (Fin m → ℂ) (d - m) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart X Y i m d z V) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart_mem_source X Y i m d z V hzV) hy).2 /-- The local support-complement pair, with the image as support. -/ -abbrev smoothClosedSupportNeighborhoodPair : TopPair := - neighborhoodSupportComplementPair - (smoothClosedSupportNeighborhood X Y i m d z V hzV) - (Set.range (Point.map i)) +abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhoodPair : TopPair := + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhood X Y i m d z V hzV) + (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) /-- The pair homeomorphism to the product normal model. -/ -def smoothClosedSupportNeighborhoodPairIso : - normalSlicePair (Fin m → ℂ) (d - m) ≅ - smoothClosedSupportNeighborhoodPair X Y i m d z V hzV := - flattenedSupportPairIso (Fin m → ℂ) (d - m) - (smoothClosedSupportRestrictionChart X Y i m d z V) - (Point.map i z) - (smoothClosedSupportRestrictionChart_mem_source X Y i m d z V hzV) - (Set.range (Point.map i)) - (smoothClosedSupportRestrictionChart_mem_range_iff X Y i m d z V) - (congrArg Prod.snd (smoothClosedSupportRestrictionChart_center X Y i m d z V)) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhoodPairIso : + _root_.OAI.AlgebraicTopology.LocalHomology.NormalSlicePurity.Singular.normalSlicePair (Fin m → ℂ) (d - m) ≅ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhoodPair X Y i m d z V hzV := + _root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportPairIso (Fin m → ℂ) (d - m) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart X Y i m d z V) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart_mem_source X Y i m d z V hzV) + (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart_mem_range_iff X Y i m d z V) + (congrArg Prod.snd (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRestrictionChart_center X Y i m d z V)) /-- All-degree local relative homology, computed from the pair maps. -/ -def smoothClosedSupportRelativeHomologyIso (n : ℕ) : - RelativeHomology ℚ - (smoothClosedSupportNeighborhoodPair X Y i m d z V hzV) n ≅ - RelativeHomology ℚ (puncturedPair ℂ (d - m)) n := - ((relativeHomologyFunctor ℚ n).mapIso - (smoothClosedSupportNeighborhoodPairIso X Y i m d z V hzV).symm) ≪≫ - normalSliceRelativeHomologyIso (Fin m → ℂ) (d - m) n - -theorem smoothClosedSupportRelativeHomology_isZero_of_ne (n : ℕ) (hn : n ≠ 2 * (d - m)) : - IsZero (RelativeHomology ℚ - (smoothClosedSupportNeighborhoodPair X Y i m d z V hzV) n) := - (standardComplexLocalHomology_isZero_of_ne (d - m) n hn).of_iso - (smoothClosedSupportRelativeHomologyIso X Y i m d z V hzV n) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRelativeHomologyIso (n : ℕ) : + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhoodPair X Y i m d z V hzV) n ≅ + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ (d - m)) n := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeHomologyFunctor ℚ n).mapIso + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhoodPairIso X Y i m d z V hzV).symm) ≪≫ + _root_.OAI.AlgebraicTopology.LocalHomology.NormalSlicePurity.Singular.normalSliceRelativeHomologyIso (Fin m → ℂ) (d - m) n + +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRelativeHomology_isZero_of_ne (n : ℕ) (hn : n ≠ 2 * (d - m)) : + IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhoodPair X Y i m d z V hzV) n) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.LocalHomologyVanishing.AlgebraicTopology.Singular.standardComplexLocalHomology_isZero_of_ne (d - m) n hn).of_iso + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRelativeHomologyIso X Y i m d z V hzV n) /-- The exact complex-normal class in the local support pair. -/ -def smoothClosedSupportNormalClass : - RelativeHomology ℚ - (smoothClosedSupportNeighborhoodPair X Y i m d z V hzV) (2 * (d - m)) := - (smoothClosedSupportRelativeHomologyIso X Y i m d z V hzV - (2 * (d - m))).inv.hom (standardComplexLocalClass ℚ (d - m)) - -@[simp] theorem smoothClosedSupportNormalClass_normalization : - (smoothClosedSupportRelativeHomologyIso X Y i m d z V hzV +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNormalClass : + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhoodPair X Y i m d z V hzV) (2 * (d - m)) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRelativeHomologyIso X Y i m d z V hzV + (2 * (d - m))).inv.hom (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ (d - m)) + +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNormalClass_normalization : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRelativeHomologyIso X Y i m d z V hzV (2 * (d - m))).hom.hom - (smoothClosedSupportNormalClass X Y i m d z V hzV) = - standardComplexLocalClass ℚ (d - m) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNormalClass X Y i m d z V hzV) = + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ (d - m) := ConcreteCategory.congr_hom - (smoothClosedSupportRelativeHomologyIso X Y i m d z V hzV + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRelativeHomologyIso X Y i m d z V hzV (2 * (d - m))).inv_hom_id _ -theorem smoothClosedSupportNormalClass_ne_zero : - smoothClosedSupportNormalClass X Y i m d z V hzV ≠ 0 := by +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNormalClass_ne_zero : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNormalClass X Y i m d z V hzV ≠ 0 := by intro hzero - have h := smoothClosedSupportNormalClass_normalization X Y i m d z V hzV + have h := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNormalClass_normalization X Y i m d z V hzV rw [hzero, map_zero] at h - exact standardComplexLocalClass_ne_zero_for_chart (d - m) h.symm + exact _root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassGenerator.Singular.standardComplexLocalClass_ne_zero_for_chart (d - m) h.symm /-- The coclass normalized to pair to one with the exact complex normal class. -/ -def smoothClosedSupportNormalCoclass : - RelativeCohomology ℚ - (smoothClosedSupportNeighborhoodPair X Y i m d z V hzV) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNormalCoclass : + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhoodPair X Y i m d z V hzV) (2 * (d - m)) := - normalizedRelativeCoclass (smoothClosedSupportNormalClass X Y i m d z V hzV) - (smoothClosedSupportNormalClass_ne_zero X Y i m d z V hzV) - -@[simp] theorem smoothClosedSupportNormalCoclass_apply_class : - relativeCohomologyEquivDualHomology ℚ - (smoothClosedSupportNeighborhoodPair X Y i m d z V hzV) (2 * (d - m)) - (smoothClosedSupportNormalCoclass X Y i m d z V hzV) - (smoothClosedSupportNormalClass X Y i m d z V hzV) = 1 := - normalizedRelativeCoclass_pairing_self _ _ - -theorem smoothClosedSupportRelativeCohomology_isZero_of_ne (n : ℕ) (hn : n ≠ 2 * (d - m)) : - IsZero (RelativeCohomology ℚ - (smoothClosedSupportNeighborhoodPair X Y i m d z V hzV) n) := - relativeCohomology_isZero ℚ _ n - (smoothClosedSupportRelativeHomology_isZero_of_ne X Y i m d z V hzV n hn) - -end AlgebraicGeometry.ComplexPoint + _root_.OAI.AlgebraicGeometry.Cycle.LocalPurity.AlgebraicTopology.Singular.normalizedRelativeCoclass (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNormalClass X Y i m d z V hzV) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNormalClass_ne_zero X Y i m d z V hzV) + +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNormalCoclass_apply_class : + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology ℚ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhoodPair X Y i m d z V hzV) (2 * (d - m)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNormalCoclass X Y i m d z V hzV) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNormalClass X Y i m d z V hzV) = 1 := + _root_.OAI.AlgebraicGeometry.Cycle.LocalPurityOf.AlgebraicTopology.Singular.normalizedRelativeCoclass_pairing_self _ _ + +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRelativeCohomology_isZero_of_ne (n : ℕ) (hn : n ≠ 2 * (d - m)) : + IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhoodPair X Y i m d z V hzV) n) := + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeCohomology_isZero ℚ _ n + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRelativeHomology_isZero_of_ne X Y i m d z V hzV n hn) + +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Cycle.LocalLocalHomology diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Local/Purity.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Local/Purity.lean index e1baa246ea..2da93f4726 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Local/Purity.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Local/Purity.lean @@ -12,10 +12,11 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Local.Purity +import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Local.Purity import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.ClosedPointDimension import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.ProjectiveHausdorff @@ -23,6 +24,8 @@ import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalCl import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FundamentalClassGenerator import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.PuncturedEuclidean +namespace OAI.AlgebraicGeometry.Cycle.LocalPurityOf + /-! # Local dual classes on cycle components @@ -32,40 +35,44 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicTopology.Singular +namespace AlgebraicTopology +open _root_.AlgebraicTopology +namespace Singular +open _root_.AlgebraicTopology +open _root_.OAI.AlgebraicTopology.Singular variable {R M : Type*} [Field R] [AddCommGroup M] [Module R M] @[simp] lemma normalizedDual_apply_self (z : M) (hz : z ≠ 0) : - (normalizedDual (R := R) z hz) z = (1 : R) := + (_root_.OAI.AlgebraicGeometry.Cycle.LocalPurity.AlgebraicTopology.Singular.normalizedDual (R := R) z hz) z = (1 : R) := Classical.choose_spec (Module.Projective.exists_dual_eq_one R hz) @[simp] lemma relativeCohomologyEquivDualHomology_normalizedRelativeCoclass {R : Type*} [Field R] - {X : TopPair} {n : ℕ} (z : RelativeHomology R X n) (hz : z ≠ 0) : - relativeCohomologyEquivDualHomology R X n (normalizedRelativeCoclass z hz) = - normalizedDual z hz := - (relativeCohomologyEquivDualHomology R X n).apply_symm_apply _ + {X : TopPair} {n : ℕ} (z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R X n) (hz : z ≠ 0) : + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology R X n (_root_.OAI.AlgebraicGeometry.Cycle.LocalPurity.AlgebraicTopology.Singular.normalizedRelativeCoclass z hz) = + _root_.OAI.AlgebraicGeometry.Cycle.LocalPurity.AlgebraicTopology.Singular.normalizedDual z hz := + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology R X n).apply_symm_apply _ @[simp] lemma normalizedRelativeCoclass_pairing_self {R : Type*} [Field R] {X : TopPair} {n : ℕ} - (z : RelativeHomology R X n) (hz : z ≠ 0) : - relativeCohomologyEquivDualHomology R X n (normalizedRelativeCoclass z hz) z = (1 : R) := by + (z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R X n) (hz : z ≠ 0) : + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology R X n (_root_.OAI.AlgebraicGeometry.Cycle.LocalPurity.AlgebraicTopology.Singular.normalizedRelativeCoclass z hz) z = (1 : R) := by rw [relativeCohomologyEquivDualHomology_normalizedRelativeCoclass, normalizedDual_apply_self] /-- The oriented standard complex local class is nonzero in every complex dimension. -/ lemma standardComplexLocalClass_ne_zero (n : ℕ) : - standardComplexLocalClass ℚ n ≠ 0 := by - rw [standardComplexLocalClass_ne_zero_iff] + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ n ≠ 0 := by + rw [_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassGenerator.Singular.standardComplexLocalClass_ne_zero_iff] by_cases hn : n = 0 · subst n - exact standardLocalClass_zero_ne_zero - · exact standardLocalClass_ne_zero_of_pos (n * 2) (Nat.mul_pos (Nat.pos_of_ne_zero hn) (by + exact _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassGenerator.Singular.standardLocalClass_zero_ne_zero + · exact _root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardLocalClass_ne_zero_of_pos (n * 2) (Nat.mul_pos (Nat.pos_of_ne_zero hn) (by norm_num)) /-- Two one-dimensional vector spaces with specified normalized generators are canonically @@ -76,9 +83,9 @@ def linearEquivOfNormalizedGenerators (y : N) (hy : y ≠ 0) (hyspan : Submodule.span R {y} = ⊤) : M ≃ₗ[R] N := let f : M →ₗ[R] N := - (LinearMap.toSpanSingleton R N y).comp (normalizedDual x hx) + (LinearMap.toSpanSingleton R N y).comp (_root_.OAI.AlgebraicGeometry.Cycle.LocalPurity.AlgebraicTopology.Singular.normalizedDual x hx) let g : N →ₗ[R] M := - (LinearMap.toSpanSingleton R M x).comp (normalizedDual y hy) + (LinearMap.toSpanSingleton R M x).comp (_root_.OAI.AlgebraicGeometry.Cycle.LocalPurity.AlgebraicTopology.Singular.normalizedDual y hy) LinearEquiv.ofLinearMap f g (by apply LinearMap.ext @@ -91,15 +98,20 @@ def linearEquivOfNormalizedGenerators obtain ⟨a, rfl⟩ := (Submodule.span_singleton_eq_top_iff R x).mp hxspan m simp [f, g, normalizedDual_apply_self]) -end AlgebraicTopology.Singular +end Singular +end AlgebraicTopology end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicTopology.Singular +namespace AlgebraicTopology +open _root_.AlgebraicTopology +namespace Singular +open _root_.AlgebraicTopology +open _root_.OAI.AlgebraicTopology.Singular variable {R M : Type*} [Field R] [AddCommGroup M] [Module R M] @@ -107,7 +119,7 @@ variable {R M : Type*} [Field R] [AddCommGroup M] [Module R M] lemma normalizedDual_unique {z : M} (hz : z ≠ 0) (hzspan : Submodule.span R {z} = ⊤) (φ : Module.Dual R M) (hφ : φ z = 1) : - φ = normalizedDual z hz := by + φ = _root_.OAI.AlgebraicGeometry.Cycle.LocalPurity.AlgebraicTopology.Singular.normalizedDual z hz := by ext y obtain ⟨a, rfl⟩ := (Submodule.span_singleton_eq_top_iff R z).mp hzspan y simp [hφ] @@ -117,11 +129,11 @@ section Coclass variable {R : Type*} [Field R] {X : TopPair} {n : ℕ} /-- The normalization condition characterizes the normalized coclass. -/ -lemma normalizedRelativeCoclass_unique {z : RelativeHomology R X n} (hz : z ≠ 0) - (hzspan : Submodule.span R {z} = ⊤) (β : RelativeCohomology R X n) - (hβ : relativeCohomologyEquivDualHomology R X n β z = 1) : - β = normalizedRelativeCoclass z hz := - (relativeCohomologyEquivDualHomology R X n).injective <| by +lemma normalizedRelativeCoclass_unique {z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R X n} (hz : z ≠ 0) + (hzspan : Submodule.span R {z} = ⊤) (β : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology R X n) + (hβ : _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology R X n β z = 1) : + β = _root_.OAI.AlgebraicGeometry.Cycle.LocalPurity.AlgebraicTopology.Singular.normalizedRelativeCoclass z hz := + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology R X n).injective <| by rw [relativeCohomologyEquivDualHomology_normalizedRelativeCoclass] exact normalizedDual_unique hz hzspan _ hβ @@ -134,7 +146,7 @@ lemma linearEquivOfNormalizedGenerators_apply (y : N) (hy : y ≠ 0) (hyspan : Submodule.span R {y} = ⊤) (z : M) : linearEquivOfNormalizedGenerators x hx hxspan y hy hyspan z = - (normalizedDual (R := R) x hx z : R) • y := + (_root_.OAI.AlgebraicGeometry.Cycle.LocalPurity.AlgebraicTopology.Singular.normalizedDual (R := R) x hx z : R) • y := rfl @[simp] @@ -144,4 +156,9 @@ lemma linearEquivOfNormalizedGenerators_apply_generator (y : N) (hy : y ≠ 0) (hyspan : Submodule.span R {y} = ⊤) : linearEquivOfNormalizedGenerators x hx hxspan y hy hyspan x = y := by simp -end AlgebraicTopology.Singular +end Singular +end AlgebraicTopology + +end + +end OAI.AlgebraicGeometry.Cycle.LocalPurityOf diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/SmoothPair/CoclassOverlap.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/SmoothPair/CoclassOverlap.lean index 2fad0d04d3..2b1cbdd995 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/SmoothPair/CoclassOverlap.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/SmoothPair/CoclassOverlap.lean @@ -1,10 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.SmoothPair.CoclassOverlap +import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.SmoothPair.CoclassOverlap + +namespace OAI.AlgebraicGeometry.Cycle.SmoothPairOpen + +open _root_.AlgebraicGeometry /-! # Exactly normalized smooth-support coclasses on overlaps @@ -13,53 +18,59 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.SmoothPair.CoclassOverlap`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace -open AlgebraicTopology.Singular +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace +open _root_.OAI.AlgebraicTopology.Singular -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) [SmoothOfRelativeDimension m Y.hom] [SmoothOfRelativeDimension d X.hom] - [IsClosedImmersion i.left] (z : ComplexPoint Y) + [IsClosedImmersion i.left] (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) /-- Restriction is the map induced by the inclusion of support-complement pairs. -/ -theorem smoothClosedSupportChartCoclass_restrict - {W V : Set (ComplexPoint X)} (hWV : W ⊆ V) - (hV : V ⊆ (closedImmersionHolomorphicFlatteningChart X Y i m d z).source) : - relativeCohomologyMap ℚ (2 * (d - m)) - (neighborhoodSupportInclusionPairMap hWV (Set.range (Point.map i))) - (smoothClosedSupportChartCoclass X Y i m d z V hV) = - smoothClosedSupportChartCoclass X Y i m d z W (hWV.trans hV) := - chartNormalProjectionCoclass_restrict _ _ _ _ _ hWV hV +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclass_restrict + {W V : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)} (hWV : W ⊆ V) + (hV : V ⊆ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).source) : + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ (2 * (d - m)) + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap hWV (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i))) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclass X Y i m d z V hV) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclass X Y i m d z W (hWV.trans hV) := + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionTop.Singular.chartNormalProjectionCoclass_restrict _ _ _ _ _ hWV hV -variable (z' : ComplexPoint Y) +variable (z' : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) /-- Exactly normalized ambient coclass agreement for the closed-immersion charts, from smoothness, the closed immersion, and membership in its chart overlap and image. -/ -theorem exists_open_smoothClosedSupportChartCoclass_eq - (x : ComplexPoint X) (hxS : x ∈ Set.range (Point.map i)) - (hx : x ∈ (closedImmersionHolomorphicFlatteningChart X Y i m d z).source) - (hx' : x ∈ (closedImmersionHolomorphicFlatteningChart X Y i m d z').source) : - ∃ (W : Opens (ComplexPoint X)) - (hW : (W : Set _) ⊆ (closedImmersionHolomorphicFlatteningChart X Y i m d z).source) - (hW' : (W : Set _) ⊆ (closedImmersionHolomorphicFlatteningChart X Y i m d z').source), - x ∈ W ∧ smoothClosedSupportChartCoclass X Y i m d z W hW = - smoothClosedSupportChartCoclass X Y i m d z' W hW' := by - let e := closedImmersionHolomorphicFlatteningChart X Y i m d z - let e' := closedImmersionHolomorphicFlatteningChart X Y i m d z' - have ht : e x ∈ (closedImmersionNormalTransition X Y i m d z z').source := by +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_open_smoothClosedSupportChartCoclass_eq + (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hxS : x ∈ Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) + (hx : x ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).source) + (hx' : x ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z').source) : + ∃ (W : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (hW : (W : Set _) ⊆ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).source) + (hW' : (W : Set _) ⊆ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z').source), + x ∈ W ∧ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclass X Y i m d z W hW = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclass X Y i m d z' W hW' := by + let e := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z + let e' := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z' + have ht : e x ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalTransition X Y i m d z z').source := by refine ⟨e.map_source hx, ?_⟩ change e.symm (e x) ∈ e'.source rwa [e.left_inv hx] - exact exists_open_chartNormalProjectionCoclass_eq (d - m) e e' (Set.range (Point.map i)) - (closedImmersionHolomorphicFlatteningChart_mem_range_iff X Y i m d z) - (closedImmersionHolomorphicFlatteningChart_mem_range_iff X Y i m d z') - x hx ((closedImmersionHolomorphicFlatteningChart_mem_range_iff + exact _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionOverlap.Singular.exists_open_chartNormalProjectionCoclass_eq (d - m) e e' (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart_mem_range_iff X Y i m d z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart_mem_range_iff X Y i m d z') + x hx ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart_mem_range_iff X Y i m d z x hx).mp hxS) hx' - (analyticAt_closedImmersionNormalTransition X Y i m d z z' (e x) ht) - (analyticAt_closedImmersionNormalTransition_symm X Y i m d z z' (e x) ht) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalTransition X Y i m d z z' (e x) ht) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_closedImmersionNormalTransition_symm X Y i m d z z' (e x) ht) + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.Cycle.SmoothPairOpen diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/SmoothPair/CoclassSection.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/SmoothPair/CoclassSection.lean index 614f549081..c2a9b6f9ea 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/SmoothPair/CoclassSection.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/SmoothPair/CoclassSection.lean @@ -1,10 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.SmoothPair.CoclassSection +import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.SmoothPair.CoclassSection + +namespace OAI.AlgebraicGeometry.Cycle.SmoothPairGerm + +open _root_.AlgebraicGeometry /-! # The global exactly normalized smooth-support coclass section @@ -13,26 +18,32 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.SmoothPair.CoclassSection`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite -open AlgebraicTopology.Singular -open TopCat.Presheaf +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite +open _root_.OAI.AlgebraicTopology.Singular +open _root_.TopCat.Presheaf -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) [SmoothOfRelativeDimension m Y.hom] [SmoothOfRelativeDimension d X.hom] [IsClosedImmersion i.left] -@[simp] theorem smoothClosedSupportCoclassSection_germ (x : ComplexPoint X) : - (smoothClosedSupportCoclassSheaf X Y i m d).presheaf.Γgerm x - (smoothClosedSupportCoclassSection X Y i m d) = - smoothClosedSupportCoclassStalk X Y i m d x := - TopCat.Sheaf.sectionOfLocallyRepresentable_germ - (smoothClosedSupportCoclassSheaf X Y i m d) - (smoothClosedSupportCoclassStalk X Y i m d) - (smoothClosedSupportCoclassStalk_locallyRepresentable X Y i m d) x +@[simp] theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassSection_germ (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassSheaf X Y i m d).presheaf.Γgerm x + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassSection X Y i m d) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk X Y i m d x := + _root_.OAI.AlgebraicTopology.Sheaf.MapOfLocalStalks.TopCat.sectionOfLocallyRepresentable_germ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassSheaf X Y i m d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk X Y i m d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportCoclassStalk_locallyRepresentable X Y i m d) x + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.Cycle.SmoothPairGerm diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/SmoothPair/OpenTransport.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/SmoothPair/OpenTransport.lean index 28914b74eb..9b6b49b984 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/SmoothPair/OpenTransport.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/SmoothPair/OpenTransport.lean @@ -1,12 +1,17 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Local.LocalHomology -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.SourceOpen -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.NeighborhoodPairImage +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Local.LocalHomology +import HodgeConjecture.Lemmas.AlgebraicGeometry.ClosedImmersion.SourceOpen +import HodgeConjecture.Definitions.AlgebraicTopology.Support.NeighborhoodPairImage + +namespace OAI.AlgebraicGeometry.Cycle.SmoothPairOpenTransport + +open _root_.AlgebraicGeometry /-! # Local purity neighborhoods transported out of ambient opens @@ -17,13 +22,14 @@ resolution on the original ambient space. The support-membership identity is pur topological. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits Topology TopologicalSpace +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable (X Y : Over (Spec ↧ℂ)) (i : Y ⟶ X) (m d : ℕ) @@ -32,114 +38,119 @@ variable (X Y : Over (Spec ↧ℂ)) /-- Normal neighborhoods can be computed in any smooth auxiliary ambient open and then transported to the original topological ambient space. -/ -theorem exists_smoothClosedSupportImageNeighborhood +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_smoothClosedSupportImageNeighborhood {M : Type} [TopologicalSpace M] - (f : ComplexPoint X → M) (hf : IsOpenEmbedding f) (S : Set M) - (hS : f ⁻¹' S = Set.range (Point.map i)) - (z : ComplexPoint Y) (V : Opens M) (hzV : f (Point.map i z) ∈ V) : - ∃ W : Opens M, W ≤ V ∧ f (Point.map i z) ∈ W ∧ + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X → M) (hf : IsOpenEmbedding f) (S : Set M) + (hS : f ⁻¹' S = Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y) (V : Opens M) (hzV : f (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) ∈ V) : + ∃ W : Opens M, W ≤ V ∧ f (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i z) ∈ W ∧ ∀ n : ℕ, n ≠ 2 * (d - m) → - IsZero (ModuleCat.of ℚ (RelativeCohomology ℚ - (neighborhoodSupportComplementPair (W : Set M) S) n)) := by - let V' : Opens (ComplexPoint X) := ⟨f ⁻¹' V, V.isOpen.preimage hf.continuous⟩ - let W' := smoothClosedSupportNeighborhood X Y i m d z V' hzV - let W : Opens M := ⟨f '' (W' : Set (ComplexPoint X)), hf.isOpenMap _ W'.isOpen⟩ + IsZero (ModuleCat.of ℚ (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (W : Set M) S) n)) := by + let V' : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := ⟨f ⁻¹' V, V.isOpen.preimage hf.continuous⟩ + let W' := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhood X Y i m d z V' hzV + let W : Opens M := ⟨f '' (W' : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)), hf.isOpenMap _ W'.isOpen⟩ refine ⟨W, ?_, ?_, ?_⟩ · rintro _ ⟨w, hw, rfl⟩ - exact smoothClosedSupportNeighborhood_le X Y i m d z V' hzV hw - · exact ⟨_, mem_smoothClosedSupportNeighborhood X Y i m d z V' hzV, rfl⟩ + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportNeighborhood_le X Y i m d z V' hzV hw + · exact ⟨_, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_smoothClosedSupportNeighborhood X Y i m d z V' hzV, rfl⟩ · intro n hn - let : Subsingleton (RelativeCohomology ℚ - (neighborhoodSupportComplementPair (W' : Set (ComplexPoint X)) - (Set.range (Point.map i))) n) := + let : Subsingleton (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (W' : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i))) n) := ModuleCat.subsingleton_of_isZero - (smoothClosedSupportRelativeCohomology_isZero_of_ne X Y i m d z V' hzV n hn) - let e := neighborhoodSupportPairImageCohomologyEquiv f hf.isEmbedding W' - (Set.range (Point.map i)) S (fun w _ => by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportRelativeCohomology_isZero_of_ne X Y i m d z V' hzV n hn) + let e := _root_.OAI.AlgebraicTopology.Support.NeighborhoodPairImage.Singular.neighborhoodSupportPairImageCohomologyEquiv f hf.isEmbedding W' + (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) S (fun w _ => by rw [← hS] rfl) n - let : Subsingleton (RelativeCohomology ℚ - (neighborhoodSupportComplementPair (W : Set M) S) n) := e.injective.subsingleton + let : Subsingleton (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (W : Set M) S) n) := e.injective.subsingleton exact ModuleCat.isZero_of_subsingleton _ omit [SmoothOfRelativeDimension m Y.hom] in /-- Fixed-dimensional source opens suffice: the target is restricted by deleting the discarded closed image, while the resulting neighborhoods and pairs live in the original ambient analytic space. -/ -theorem exists_smoothClosedSourceOpenNeighborhood - (A : Y.left.Opens) [SmoothOfRelativeDimension m (openScheme Y A).hom] - (z : ComplexPoint (openScheme Y A)) - (V : Opens (ComplexPoint X)) - (hzV : Point.map (openInclusion Y A ≫ i) z ∈ V) : - ∃ W : Opens (ComplexPoint X), W ≤ V ∧ - Point.map (openInclusion Y A ≫ i) z ∈ W ∧ +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_smoothClosedSourceOpenNeighborhood + (A : Y.left.Opens) [SmoothOfRelativeDimension m (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme Y A).hom] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme Y A)) + (V : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (hzV : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion Y A ≫ i) z ∈ V) : + ∃ W : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X), W ≤ V ∧ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion Y A ≫ i) z ∈ W ∧ ∀ n : ℕ, n ≠ 2 * (d - m) → - IsZero (ModuleCat.of ℚ (RelativeCohomology ℚ - (neighborhoodSupportComplementPair (W : Set (ComplexPoint X)) - (Set.range (Point.map i))) n)) := by + IsZero (ModuleCat.of ℚ (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (W : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i))) n)) := by have : Smooth X.hom := SmoothOfRelativeDimension.smooth d X.hom - let T := closedImmersionSourceOpenTarget i.left A - let j := closedImmersionSourceOpenLift i.left A - have hj : j ≫ (openScheme X T).hom = (openScheme Y A).hom := by + let T := _root_.OAI.AlgebraicGeometry.ClosedImmersion.SourceOpen.closedImmersionSourceOpenTarget i.left A + let j := _root_.OAI.AlgebraicGeometry.ClosedImmersion.SourceOpen.closedImmersionSourceOpenLift i.left A + have hj : j ≫ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X T).hom = (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme Y A).hom := by change j ≫ (T.ι ≫ X.hom) = A.ι ≫ Y.hom - rw [← Category.assoc, closedImmersionSourceOpenLift_ι, Category.assoc, i.w] - let jOver : openScheme Y A ⟶ openScheme X T := Over.homMk j hj + rw [← Category.assoc, _root_.OAI.AlgebraicGeometry.ClosedImmersion.SourceOpen.closedImmersionSourceOpenLift_ι, Category.assoc, i.w] + let jOver : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme Y A ⟶ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X T := Over.homMk j hj let : IsClosedImmersion jOver.left := - closedImmersionSourceOpenLift_isClosedImmersion i.left A - have : SmoothOfRelativeDimension d (openScheme X T).hom := by + _root_.OAI.AlgebraicGeometry.ClosedImmersion.SourceOpen.closedImmersionSourceOpenLift_isClosedImmersion i.left A + have : SmoothOfRelativeDimension d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X T).hom := by change SmoothOfRelativeDimension d (T.ι ≫ X.hom) simpa only [Nat.zero_add] using smoothOfRelativeDimension_comp 0 d T.ι X.hom - have : Smooth (openScheme X T).hom := - SmoothOfRelativeDimension.smooth d (openScheme X T).hom - let f := Point.map (openInclusion X T) - have hS : f ⁻¹' Set.range (Point.map i) = Set.range (Point.map jOver) := by - rw [range_map_of_isImmersion_of_comm X Y i, - range_map_of_isImmersion_of_comm (openScheme X T) (openScheme Y A) jOver] - change _ = (Point.underlying : ComplexPoint (openScheme X T) → - (openScheme X T).left) ⁻¹' Set.range j - rw [range_closedImmersionSourceOpenLift i.left A] + have : Smooth (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X T).hom := + SmoothOfRelativeDimension.smooth d (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X T).hom + let f := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X T) + have hS : f ⁻¹' Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) = Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map jOver) := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.range_map_of_isImmersion_of_comm X Y i, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.range_map_of_isImmersion_of_comm (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X T) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme Y A) jOver] + change _ = (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X T) → + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X T).left) ⁻¹' Set.range j + rw [_root_.OAI.AlgebraicGeometry.ClosedImmersion.SourceOpen.range_closedImmersionSourceOpenLift i.left A] rfl - have he : f (Point.map jOver z) = Point.map (openInclusion Y A ≫ i) z := by - change Point.map (openInclusion X T) (Point.map jOver z) = _ - rw [← Point.map_comp_apply] - exact congrArg (fun k ↦ Point.map k z) - (Over.OverMorphism.ext (closedImmersionSourceOpenLift_ι i.left A)) - obtain ⟨W, hWV, hzW, hW⟩ := exists_smoothClosedSupportImageNeighborhood - (openScheme X T) (openScheme Y A) jOver m d f - (isOpenEmbedding_map_open X T) (Set.range (Point.map i)) hS z V (he ▸ hzV) + have he : f (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map jOver z) = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion Y A ≫ i) z := by + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X T) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map jOver z) = _ + rw [← _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map_comp_apply] + exact congrArg (fun k ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map k z) + (Over.OverMorphism.ext (_root_.OAI.AlgebraicGeometry.ClosedImmersion.SourceOpen.closedImmersionSourceOpenLift_ι i.left A)) + obtain ⟨W, hWV, hzW, hW⟩ := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_smoothClosedSupportImageNeighborhood + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme X T) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme Y A) jOver m d f + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpenEmbedding_map_open X T) (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) hS z V (he ▸ hzV) exact ⟨W, hWV, he ▸ hzW, hW⟩ omit [SmoothOfRelativeDimension m Y.hom] in /-- The fixed-dimensional source-open calculation, transported through a further open embedding. This is the form used by successive closed supports in a larger ambient. -/ -theorem exists_smoothClosedSourceOpenImageNeighborhood +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_smoothClosedSourceOpenImageNeighborhood {M : Type} [TopologicalSpace M] - (f : ComplexPoint X → M) (hf : IsOpenEmbedding f) (S : Set M) - (hS : f ⁻¹' S = Set.range (Point.map i)) - (A : Y.left.Opens) [SmoothOfRelativeDimension m (openScheme Y A).hom] - (z : ComplexPoint (openScheme Y A)) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X → M) (hf : IsOpenEmbedding f) (S : Set M) + (hS : f ⁻¹' S = Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) + (A : Y.left.Opens) [SmoothOfRelativeDimension m (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme Y A).hom] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme Y A)) (V : Opens M) - (hzV : f (Point.map (openInclusion Y A ≫ i) z) ∈ V) : + (hzV : f (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion Y A ≫ i) z) ∈ V) : ∃ W : Opens M, W ≤ V ∧ - f (Point.map (openInclusion Y A ≫ i) z) ∈ W ∧ + f (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion Y A ≫ i) z) ∈ W ∧ ∀ n : ℕ, n ≠ 2 * (d - m) → - IsZero (ModuleCat.of ℚ (RelativeCohomology ℚ - (neighborhoodSupportComplementPair (W : Set M) S) n)) := by - let V' : Opens (ComplexPoint X) := ⟨f ⁻¹' V, V.isOpen.preimage hf.continuous⟩ - obtain ⟨W', hW'V', hzW', hW'⟩ := exists_smoothClosedSourceOpenNeighborhood + IsZero (ModuleCat.of ℚ (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (W : Set M) S) n)) := by + let V' : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := ⟨f ⁻¹' V, V.isOpen.preimage hf.continuous⟩ + obtain ⟨W', hW'V', hzW', hW'⟩ := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_smoothClosedSourceOpenNeighborhood X Y i m d A z V' hzV - let W : Opens M := ⟨f '' (W' : Set (ComplexPoint X)), hf.isOpenMap _ W'.isOpen⟩ + let W : Opens M := ⟨f '' (W' : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)), hf.isOpenMap _ W'.isOpen⟩ refine ⟨W, ?_, ⟨_, hzW', rfl⟩, ?_⟩ · rintro _ ⟨w, hw, rfl⟩ exact hW'V' hw · intro n hn - let : Subsingleton (RelativeCohomology ℚ - (neighborhoodSupportComplementPair (W' : Set (ComplexPoint X)) - (Set.range (Point.map i))) n) := ModuleCat.subsingleton_of_isZero (hW' n hn) - let e := neighborhoodSupportPairImageCohomologyEquiv f hf.isEmbedding W' - (Set.range (Point.map i)) S (fun w _ => by rw [← hS]; rfl) n - let : Subsingleton (RelativeCohomology ℚ - (neighborhoodSupportComplementPair (W : Set M) S) n) := e.injective.subsingleton + let : Subsingleton (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (W' : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i))) n) := ModuleCat.subsingleton_of_isZero (hW' n hn) + let e := _root_.OAI.AlgebraicTopology.Support.NeighborhoodPairImage.Singular.neighborhoodSupportPairImageCohomologyEquiv f hf.isEmbedding W' + (Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i)) S (fun w _ => by rw [← hS]; rfl) n + let : Subsingleton (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (W : Set M) S) n) := e.injective.subsingleton exact ModuleCat.isZero_of_subsingleton _ -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Cycle.SmoothPairOpenTransport diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Support.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Support.lean index cc39d960a9..6f0449bf92 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Support.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Support.lean @@ -12,20 +12,25 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.AlgebraicGeometry.IdealSheaf.Functorial +import Mathlib.AlgebraicGeometry.IdealSheaf.Functorial -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Support +import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Support import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Locus import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import Mathlib.AlgebraicGeometry.AlgClosed.Basic import Mathlib.Analysis.Complex.Polynomial.Basic -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic -public import Mathlib.AlgebraicGeometry.AlgebraicCycle.Basic -public import Mathlib.AlgebraicGeometry.Morphisms.Smooth +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.Basic +import Mathlib.AlgebraicGeometry.AlgebraicCycle.Basic +import Mathlib.AlgebraicGeometry.Morphisms.Smooth + +namespace OAI.AlgebraicGeometry.Cycle.SupportEq + +open _root_.AlgebraicGeometry /-! # Geometric support of algebraic cycles @@ -36,28 +41,28 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section -open CategoryTheory Topology TopologicalSpace -namespace AlgebraicGeometry +noncomputable section +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace +section variable (X : Over (Spec ↧ℂ)) @[simp] lemma range_cycleComponentι (X : Scheme) (x : X) : - Set.range (cycleComponentι X x) = closure {x} := by + Set.range (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X x) = closure {x} := by change Set.range ((Scheme.IdealSheafData.vanishingIdeal (X := X) ⟨closure {x}, isClosed_closure⟩).subschemeι) = closure {x} rw [Scheme.IdealSheafData.range_subschemeι] rfl -end AlgebraicGeometry +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section variable (X : Over (Spec ↧ℂ)) @@ -65,7 +70,7 @@ variable (X : Over (Spec ↧ℂ)) point. -/ private lemma complexPoint_ker_eq_vanishingIdeal_closure {X : Over (Spec ↧ℂ)} - (z : ComplexPoint X) : + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : z.left.ker = Scheme.IdealSheafData.vanishingIdeal ⟨closure {z.underlying}, isClosed_closure⟩ := by let f : Spec ↧ℂ ⟶ X.left := z.left @@ -94,10 +99,10 @@ set_option backward.isDefEq.respectTransparency false in /-- A complex point in the support of a component annihilates the defining ideal of that component. -/ lemma cycleComponent_vanishingIdeal_le_complexPoint_ker - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) - (z : (ComplexPoint X)) (hz : z.underlying ∈ closure {x}) : - (cycleComponentι X.left x).ker ≤ z.left.ker := by - unfold cycleComponentι + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) + (z : (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (hz : z.underlying ∈ closure {x}) : + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x).ker ≤ z.left.ker := by + unfold _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι rw [Scheme.IdealSheafData.ker_subschemeι] rw [complexPoint_ker_eq_vanishingIdeal_closure z] apply Scheme.IdealSheafData.vanishingIdeal_antimono @@ -105,51 +110,51 @@ lemma cycleComponent_vanishingIdeal_le_complexPoint_ker /-- The map on complex points induced by the canonical inclusion of a cycle component. -/ def cycleComponentMap - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) : - ComplexPoint (Over.mk (cycleComponentι X.left x ≫ X.hom)) → (ComplexPoint X) := - Point.map (Over.homMk (cycleComponentι X.left x) rfl) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom)) → (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (Over.homMk (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x) rfl) /-- Lift a complex point in a component support through the reduced closed component. -/ def cycleComponentComplexPointLift - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) - (z : (ComplexPoint X)) (hz : z ∈ cycleComponentSupport X x) : - ComplexPoint (Over.mk (cycleComponentι X.left x ≫ X.hom)) := + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) + (z : (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (hz : z ∈ _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom)) := have hz' : z.underlying ∈ closure {x} := hz - Over.homMk (IsClosedImmersion.lift (cycleComponentι X.left x) z.left + Over.homMk (IsClosedImmersion.lift (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x) z.left (cycleComponent_vanishingIdeal_le_complexPoint_ker X x z hz')) (by - change _ ≫ (cycleComponentι X.left x ≫ X.hom) = 𝟙 _ + change _ ≫ (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom) = 𝟙 _ rw [← Category.assoc, IsClosedImmersion.lift_fac] exact Over.w z) @[simp] lemma cycleComponentMap_lift - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) - (z : (ComplexPoint X)) (hz : z ∈ cycleComponentSupport X x) : + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) + (z : (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (hz : z ∈ _root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x) : cycleComponentMap X x (cycleComponentComplexPointLift X x z hz) = z := - Over.OverMorphism.ext (IsClosedImmersion.lift_fac (cycleComponentι X.left x) z.left _) + Over.OverMorphism.ext (IsClosedImmersion.lift_fac (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x) z.left _) /-- The analytic complex points in the smooth locus of a reduced cycle component. -/ def cycleComponentSmoothAnalyticLocus - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) : - Set (ComplexPoint (Over.mk (cycleComponentι X.left x ≫ X.hom))) := - Point.overOpen - (cycleComponentι X.left x ≫ X.hom).smoothLocus + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) : + Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint (Over.mk (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom))) := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.overOpen + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus /-- The image in the ambient analytic space of the smooth locus of a cycle component. -/ def cycleComponentSmoothSupport [IsIntegral X.left] [Smooth X.hom] - [IsProjective X.hom] (x : X.left) : Set (ComplexPoint X) := + [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := cycleComponentMap X x '' cycleComponentSmoothAnalyticLocus X x -end AlgebraicGeometry +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section variable (X : Over (Spec ↧ℂ)) @@ -158,34 +163,38 @@ variable (X : Over (Spec ↧ℂ)) It is a `def` because the component does not determine the structure morphism carrying the projectivity hypothesis. -/ theorem cycleComponent_isNoetherian - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) : - IsNoetherian (cycleComponent X.left x) := - @isNoetherian_of_isProjective (Over.mk (cycleComponentι X.left x ≫ X.hom)) - (cycleComponent_projective X x) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) : + IsNoetherian (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent X.left x) := + @_root_.OAI.AlgebraicGeometry.ComplexPoint.BasicNe.isNoetherian_of_isProjective (Over.mk (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom)) + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent_projective X x) /-- The smooth locus of an integral cycle component is a smooth complex scheme. -/ theorem cycleComponent_smoothLocus_smooth - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) : + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) : Smooth - ((cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ - (cycleComponentι X.left x ≫ X.hom)) := - (cycleComponentι X.left x ≫ X.hom).smooth_restrict_smoothLocus + ((_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom).smoothLocus.ι ≫ + (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom)) := + (_root_.OAI.AlgebraicGeometry.Smooth.Locus.Scheme.Hom.smooth_restrict_smoothLocus (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι X.left x ≫ X.hom)) /-- The complex points over a Zariski-closed subset form an analytically closed set. -/ lemma isClosed_complexPoint_underlying_preimage - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (Z : TopologicalSpace.Closeds X.left) : - IsClosed ((@Point.underlying ℂ _ _ X) ⁻¹' + IsClosed ((@_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying ℂ _ _ X) ⁻¹' (Z : Set X.left)) := by rw [← isOpen_compl_iff] let U : X.left.Opens := ⟨(Z : Set X.left)ᶜ, isOpen_compl_iff.mpr Z.2⟩ - exact Point.isOpen_overOpen (X := X) U + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isOpen_overOpen (X := X) U lemma isClosed_cycleComponentSupport - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) : - IsClosed (cycleComponentSupport X x) := + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) : + IsClosed (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentSupport X x) := isClosed_complexPoint_underlying_preimage X ⟨closure {x}, isClosed_closure⟩ -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Cycle.SupportEq diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Transport/CohomologySheaf.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Transport/CohomologySheaf.lean index 139742b570..50758a6375 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Transport/CohomologySheaf.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Cycle/Transport/CohomologySheaf.lean @@ -1,12 +1,17 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Transport.CohomologySheaf +import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.Transport.CohomologySheaf + +namespace OAI.AlgebraicGeometry.Cycle.TransportCohomologySection + +open _root_.AlgebraicGeometry /-! # Cohomology-sheaf concentration for smooth closed supports @@ -17,32 +22,36 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits Topology TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.Topology _root_.TopologicalSpace Opposite -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] /-- Let `X` be a smooth integral projective scheme over `ℂ`, `Y = X(ℂ)` with its analytic topology, `S ⊆ Y` closed, and `V ⊆ Y` open. For an injective resolution `I` of the constant rational sheaf, this additive equivalence identifies `H^n(Γ_S(V,I))` with relative singular cohomology `H^n(V,V \ S;ℚ)`. Here `Γ_S(V,I^q)` consists of sections over `V` that vanish off `S`. -/ -def complexSupportInjectiveSectionCohomologyEquiv (S : Closeds (ComplexPoint X)) - (V : Opens (ComplexPoint X)) (n : ℕ) : - ((((TopCat.Sheaf.supportEvaluation (TopCat.of (ComplexPoint X)) V).mapHomologicalComplex - ℤᵘᵖ).obj (complexSupportInjectiveComplex X S))).homology (n : ℤ) ≃+ - RelativeCohomology ℚ (neighborhoodSupportComplementPair - (V : Set (ComplexPoint X)) (S : Set (ComplexPoint X))) n := - letI : ∀ W : Opens (ComplexPoint X), ParacompactSpace W := openParacompactSpace X - (complexSupportedSingularInjectiveHomologyIso X S.compl V (n : ℤ)).symm.addCommGroupIsoToAddEquiv - |>.trans (supportedRationalSingularSectionCohomologyEquivSupportComplement - (TopCat.of (ComplexPoint X)) S S.isClosed V n) - -end AlgebraicGeometry.ComplexPoint +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveSectionCohomologyEquiv (S : Closeds (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (V : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (n : ℕ) : + ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) V).mapHomologicalComplex + ℤᵘᵖ).obj (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X S))).homology (n : ℤ) ≃+ + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair + (V : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (S : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) n := + letI : ∀ W : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X), ParacompactSpace W := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openParacompactSpace X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportedSingularInjectiveHomologyIso X S.compl V (n : ℤ)).symm.addCommGroupIsoToAddEquiv + |>.trans (_root_.OAI.AlgebraicTopology.Support.SingularSectionCohomology.Singular.supportedRationalSingularSectionCohomologyEquivSupportComplement + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) S S.isClosed V n) + +end ComplexPoint +end end + +end OAI.AlgebraicGeometry.Cycle.TransportCohomologySection diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/AnalyticDifferentialForms.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/AnalyticDifferentialForms.lean index 98ffb7d99f..fda1938b15 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/AnalyticDifferentialForms.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/AnalyticDifferentialForms.lean @@ -12,10 +12,15 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.Hodge.AnalyticDifferentialForms +import HodgeConjecture.Definitions.AlgebraicGeometry.Hodge.AnalyticDifferentialForms + +namespace OAI.AlgebraicGeometry.Hodge.AnalyticDifferentialLt + +open _root_.AlgebraicGeometry /-! # Analytic differential forms @@ -24,75 +29,81 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicGeometry.Hodge.AnalyticDifferentialForms`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory DifferentialForm TopologicalSpace -open scoped ContDiff Manifold +open _root_.CategoryTheory _root_.OAI.Analysis.DifferentialForms.ExactWedge.DifferentialForm _root_.TopologicalSpace +open scoped ContDiff _root_.Manifold -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X : Over (Spec ↧ℂ)) (d : ℕ) -attribute [local instance] chartFieldModule +attribute [local instance] _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartFieldModule -attribute [local instance] chartFieldTower +attribute [local instance] _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartFieldTower -lemma formRestriction_differential [SmoothOfRelativeDimension d X.hom] - {U V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} (i : U ⟶ V) (p : ℕ) - (θ : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) : - formRestriction X d i (p + 1) - (Algebra.DeRham.differential ℂ (OpenHolomorphicFunctions X d U) p θ) = - Algebra.DeRham.differential ℂ (OpenHolomorphicFunctions X d V) p - (formRestriction X d i p θ) := - Algebra.DeRham.map_differential ℂ (holomorphicRestrictionAlgHom X d i) p θ +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_differential [SmoothOfRelativeDimension d X.hom] + {U V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) (p : ℕ) + (θ : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d i (p + 1) + (_root_.OAI.Algebra.DeRham.Basic.differential ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p θ) = + _root_.OAI.Algebra.DeRham.Basic.differential ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d V) p + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d i p θ) := + _root_.OAI.Algebra.DeRham.BasicSquared.map_differential ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicRestrictionAlgHom X d i) p θ -lemma chartEvaluationKernel_eq_top_of_lt [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - {p : ℕ} (hp : d < p) : chartEvaluationKernel X d U p = ⊤ := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel_eq_top_of_lt [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + {p : ℕ} (hp : d < p) : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U p = ⊤ := by refine top_unique fun θ _ ↦ ?_ - refine (mem_chartEvaluationKernel_iff X d U p θ).2 fun z y hy ↦ + refine (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_chartEvaluationKernel_iff X d U p θ).2 fun z y hy ↦ ContinuousAlternatingMap.ext fun v ↦ ?_ - refine (chartEvaluation X d U z p θ y).toAlternatingMap.map_linearDependent _ fun hli ↦ ?_ + refine (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ y).toAlternatingMap.map_linearDependent _ fun hli ↦ ?_ have hcard := hli.fintype_card_le_finrank rw [Fintype.card_fin, Module.finrank_fintype_fun_eq_card, Fintype.card_fin] at hcard lia -lemma holomorphicForm_eq_zero_of_lt [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - {p : ℕ} (hp : d < p) (θ : HolomorphicForm X d U p) : θ = 0 := by - obtain ⟨θ, rfl⟩ := Submodule.mkQ_surjective (chartEvaluationKernel X d U p) θ +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicForm_eq_zero_of_lt [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + {p : ℕ} (hp : d < p) (θ : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d U p) : θ = 0 := by + obtain ⟨θ, rfl⟩ := Submodule.mkQ_surjective (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U p) θ change Submodule.Quotient.mk θ = 0 - rw [Submodule.Quotient.mk_eq_zero, chartEvaluationKernel_eq_top_of_lt X d U hp] + rw [Submodule.Quotient.mk_eq_zero, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel_eq_top_of_lt X d U hp] trivial -lemma holomorphicFormDifferential_squared [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (p : ℕ) - (θ : HolomorphicForm X d U p) : - holomorphicFormDifferential X d U (p + 1) - (holomorphicFormDifferential X d U p θ) = 0 := by - obtain ⟨θ, rfl⟩ := Submodule.mkQ_surjective (chartEvaluationKernel X d U p) θ +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential_squared [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (p : ℕ) + (θ : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d U p) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential X d U (p + 1) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential X d U p θ) = 0 := by + obtain ⟨θ, rfl⟩ := Submodule.mkQ_surjective (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U p) θ change Submodule.Quotient.mk - (Algebra.DeRham.differential ℂ (OpenHolomorphicFunctions X d U) (p + 1) - (Algebra.DeRham.differential ℂ (OpenHolomorphicFunctions X d U) p θ)) = 0 - rw [Algebra.DeRham.differential_squared] + (_root_.OAI.Algebra.DeRham.Basic.differential ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (p + 1) + (_root_.OAI.Algebra.DeRham.Basic.differential ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p θ)) = 0 + rw [_root_.OAI.Algebra.DeRham.BasicSquared.differential_squared] exact Submodule.Quotient.mk_zero _ -lemma holomorphicFormRestriction_differential [SmoothOfRelativeDimension d X.hom] - {U V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ} (i : U ⟶ V) (p : ℕ) - (θ : HolomorphicForm X d U p) : - holomorphicFormRestriction X d i (p + 1) - (holomorphicFormDifferential X d U p θ) = - holomorphicFormDifferential X d V p - (holomorphicFormRestriction X d i p θ) := by - obtain ⟨θ, rfl⟩ := Submodule.mkQ_surjective (chartEvaluationKernel X d U p) θ +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction_differential [SmoothOfRelativeDimension d X.hom] + {U V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ} (i : U ⟶ V) (p : ℕ) + (θ : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d U p) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d i (p + 1) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential X d U p θ) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential X d V p + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d i p θ) := by + obtain ⟨θ, rfl⟩ := Submodule.mkQ_surjective (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U p) θ change Submodule.Quotient.mk - (formRestriction X d i (p + 1) - (Algebra.DeRham.differential ℂ (OpenHolomorphicFunctions X d U) p θ)) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d i (p + 1) + (_root_.OAI.Algebra.DeRham.Basic.differential ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p θ)) = Submodule.Quotient.mk - (Algebra.DeRham.differential ℂ (OpenHolomorphicFunctions X d V) p - (formRestriction X d i p θ)) - rw [formRestriction_differential] + (_root_.OAI.Algebra.DeRham.Basic.differential ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d V) p + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d i p θ)) + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_differential] + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.Hodge.AnalyticDifferentialLt diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/Filtration.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/Filtration.lean index 8ae4157937..208bd3cef6 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/Filtration.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/Filtration.lean @@ -12,13 +12,20 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.Hodge.Filtration +import HodgeConjecture.Definitions.AlgebraicGeometry.Hodge.Filtration import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.Hodge.FiltrationId + +open scoped OAI.AlgebraicGeometry.Hodge.Filtration.ComplexPoint + +open _root_.AlgebraicGeometry + /-! # The Hodge filtration @@ -28,45 +35,46 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace open scoped TensorProduct -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (K : Type) [Field K] [Algebra K ℂ] variable (X : Over (Spec ↧ℂ)) -attribute [local instance] analyticHasDerivedCategory +attribute [local instance] _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticHasDerivedCategory set_option linter.auxLemma false attribute [local implicit_reducible] TopCat.Sheaf TopCat.instCategorySheaf._aux_1 TopCat.instCategorySheaf._aux_3 TopCat.instCategorySheaf._aux_5 /-- A rational number as a morphism from the integer to the rational constant sheaf. -/ -def integerToFieldConstantSheaf (q : K) : - 𝓒(↧(ComplexPoint X); ℤ) ⟶ 𝓒(↧(ComplexPoint X); K) := - (TopCat.Sheaf.constantFunctor ↧(ComplexPoint X)).map +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf (q : K) : + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℤ) ⟶ 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); K) := + (_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor ↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)).map (AddCommGrpCat.ofHom (zmultiplesAddHom K q)) omit [Algebra K ℂ] in -@[simp] lemma integerToFieldConstantSheaf_zero : - integerToFieldConstantSheaf K X 0 = 0 := by - unfold integerToFieldConstantSheaf +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf_zero : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf K X 0 = 0 := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf rw [map_zero (zmultiplesAddHom K)] have h : AddCommGrpCat.ofHom (0 : ℤ →+ K) = 0 := AddCommGrpCat.hom_ext rfl rw [h, Functor.map_zero] rfl omit [Algebra K ℂ] in -@[simp] lemma integerToFieldConstantSheaf_add (a b : K) : - integerToFieldConstantSheaf K X (a + b) = - integerToFieldConstantSheaf K X a + - integerToFieldConstantSheaf K X b := by - unfold integerToFieldConstantSheaf +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf_add (a b : K) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf K X (a + b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf K X a + + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf K X b := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf rw [map_add (zmultiplesAddHom K)] have h : AddCommGrpCat.ofHom (zmultiplesAddHom K a + zmultiplesAddHom K b) = @@ -77,101 +85,108 @@ omit [Algebra K ℂ] in rfl /-- The source object of Mathlib's sheaf cohomology mapped to the constant integer sheaf. -/ -def uliftIntegerToIntegerConstantSheaf : - (constantSheaf (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) AddCommGrpCat).obj - (AddCommGrpCat.of (ULift ℤ)) ⟶ 𝓒(↧(ComplexPoint X); ℤ) := - (TopCat.Sheaf.constantFunctor ↧(ComplexPoint X)).map +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.uliftIntegerToIntegerConstantSheaf : + (constantSheaf (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) AddCommGrpCat).obj + (AddCommGrpCat.of (ULift ℤ)) ⟶ 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℤ) := + (_root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor ↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)).map (AddCommGrpCat.ofHom (AddEquiv.ulift (α := ℤ)).toAddMonoidHom) /-- The constant rational class `q` in degree-zero rational cohomology. -/ -def fieldCohomologyClass (q : K) : H^0(X; K) := - Abelian.Ext.mk₀ (uliftIntegerToIntegerConstantSheaf X ≫ integerToFieldConstantSheaf K X q) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldCohomologyClass (q : K) : H^0(X; K) := + Abelian.Ext.mk₀ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.uliftIntegerToIntegerConstantSheaf X ≫ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf K X q) omit [Algebra K ℂ] in -@[simp] lemma fieldCohomologyClass_zero : - fieldCohomologyClass K X 0 = 0 := by - rw [fieldCohomologyClass, integerToFieldConstantSheaf_zero] +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldCohomologyClass_zero : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldCohomologyClass K X 0 = 0 := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldCohomologyClass, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf_zero] exact (congrArg Abelian.Ext.mk₀ - (Limits.comp_zero (f := uliftIntegerToIntegerConstantSheaf X))).trans + (Limits.comp_zero (f := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.uliftIntegerToIntegerConstantSheaf X))).trans (Abelian.Ext.mk₀_zero _ _) omit [Algebra K ℂ] in -@[simp] lemma fieldCohomologyClass_add (a b : K) : - fieldCohomologyClass K X (a + b) = - fieldCohomologyClass K X a + fieldCohomologyClass K X b := by - rw [fieldCohomologyClass, fieldCohomologyClass, fieldCohomologyClass, - integerToFieldConstantSheaf_add] - exact (congrArg Abelian.Ext.mk₀ (Preadditive.comp_add _ _ _ (uliftIntegerToIntegerConstantSheaf X) - (integerToFieldConstantSheaf K X a) (integerToFieldConstantSheaf K X b))).trans +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldCohomologyClass_add (a b : K) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldCohomologyClass K X (a + b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldCohomologyClass K X a + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldCohomologyClass K X b := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldCohomologyClass, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldCohomologyClass, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldCohomologyClass, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf_add] + exact (congrArg Abelian.Ext.mk₀ (Preadditive.comp_add _ _ _ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.uliftIntegerToIntegerConstantSheaf X) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf K X a) (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.integerToFieldConstantSheaf K X b))).trans (Abelian.Ext.mk₀_add _ _) -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace open scoped TensorProduct -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (K : Type) [Field K] [Algebra K ℂ] variable (X : Over (Spec ↧ℂ)) -attribute [local instance] analyticHasDerivedCategory +attribute [local instance] _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticHasDerivedCategory omit [Algebra K ℂ] in -@[simp] lemma fieldScalarSheaf_zero : fieldScalarSheaf K X 0 = 0 := by - unfold fieldScalarSheaf - rw [AddMonoidHom.mulLeft_zero] +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf_zero : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X 0 = 0 := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf + rw [_root_.OAI.Algebra.Ring.Basic.AddMonoidHom.mulLeft_zero] have h : AddCommGrpCat.ofHom (0 : K →+ K) = 0 := AddCommGrpCat.hom_ext rfl rw [h, Functor.map_zero] rfl omit [Algebra K ℂ] in -@[simp] lemma fieldScalarComplex_zero : fieldScalarComplex K X 0 = 0 := by - unfold fieldScalarComplex - rw [fieldScalarSheaf_zero, Functor.map_zero, HomologicalComplex.extendMap_zero] +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex_zero : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex K X 0 = 0 := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf_zero, Functor.map_zero, HomologicalComplex.extendMap_zero] /-- Postcomposition by the zero map of complexes is the zero map on hypercohomology. -/ -@[simp] lemma hypercohomologyMap_zero - {K L : CochainComplex (AnalyticAdditiveSheaf X) ℤ} (n : ℤ) : - hypercohomologyMap X (0 : K ⟶ L) n = 0 := by +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_zero + {K L : CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ} (n : ℤ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (0 : K ⟶ L) n = 0 := by refine AddMonoidHom.ext fun α ↦ ?_ apply (Localization.SmallShiftedHom.equiv - (analyticQuasiIsomorphisms X) DerivedCategory.Q).injective - unfold hypercohomologyMap + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q).injective + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap simp [Localization.SmallShiftedHom.equiv_comp, - hypercohomologyEquiv_zero] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyEquiv_zero] /-- Postcomposition by the identity map of complexes is the identity on hypercohomology. -/ -@[simp] lemma hypercohomologyMap_id - {K : CochainComplex (AnalyticAdditiveSheaf X) ℤ} (n : ℤ) : - hypercohomologyMap X (𝟙 K) n = AddMonoidHom.id _ := by +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_id + {K : CochainComplex (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ} (n : ℤ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (𝟙 K) n = AddMonoidHom.id _ := by refine AddMonoidHom.ext fun α ↦ ?_ - let eK : Hypercohomology X K n ≃ + let eK : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.Hypercohomology X K n ≃ ShiftedHom - (DerivedCategory.Q.obj (constantIntegerSheafComplexInt X)) + (DerivedCategory.Q.obj (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantIntegerSheafComplexInt X)) (DerivedCategory.Q.obj K) n := Localization.SmallShiftedHom.equiv - (analyticQuasiIsomorphisms X) DerivedCategory.Q + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) DerivedCategory.Q change α.comp (Localization.SmallShiftedHom.mk₀ - (analyticQuasiIsomorphisms X) 0 rfl (𝟙 K)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) 0 rfl (𝟙 K)) (zero_add n) = α apply eK.injective simp [eK] -@[simp] lemma deRhamConjSemilinear_apply [IsIntegral X.left] [Smooth X.hom] (n : ℤ) - (α : DeRhamHypercohomology X n) : - deRhamConjSemilinear X n α = deRhamConj X n α := rfl +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConjSemilinear_apply [IsIntegral X.left] [Smooth X.hom] (n : ℤ) + (α : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.DeRhamHypercohomology X n) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConjSemilinear X n α = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.deRhamConj X n α := rfl /-! #### Real coefficient fields The hypothesis `hK` below says conjugation fixes the image of `K` in `ℂ`, equivalently that `K → ℂ` lands in `ℝ`. It holds for `ℚ` and fails for `ℚ(i) ⊆ ℂ`. -/ -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Hodge.FiltrationId diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/HolomorphicDeRham.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/HolomorphicDeRham.lean index ee306015e1..db646537af 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/HolomorphicDeRham.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/HolomorphicDeRham.lean @@ -12,25 +12,30 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.Hodge.HolomorphicDeRham +import HodgeConjecture.Definitions.AlgebraicGeometry.Hodge.HolomorphicDeRham import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.HolomorphicPoincare import Mathlib.Algebra.Category.Grp.Zero import Mathlib.Algebra.Homology.Embedding.ExtendHomology import Mathlib.Topology.Sheaves.Sheafify import HodgeConjecture.Mathlib.Topology.Sheaves.StalkExact -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.AnalyticDifferentialForms -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Equidimensional -public import Mathlib.Algebra.Homology.Embedding.CochainComplex -public import Mathlib.Algebra.Homology.Embedding.Extend -public import Mathlib.Algebra.Homology.SingleHomology -public import Mathlib.Topology.Sheaves.Abelian +import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.AnalyticDifferentialForms +import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Equidimensional +import Mathlib.Algebra.Homology.Embedding.CochainComplex +import Mathlib.Algebra.Homology.Embedding.Extend +import Mathlib.Algebra.Homology.SingleHomology +import Mathlib.Topology.Sheaves.Abelian import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.Hodge.HolomorphicDeRhamAdd + +open _root_.AlgebraicGeometry + /-! # The holomorphic de Rham complex @@ -40,364 +45,374 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace -open scoped ContDiff Manifold -namespace AlgebraicGeometry.ComplexPoint -open Point +noncomputable section +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace +open scoped ContDiff _root_.Manifold +section +namespace ComplexPoint +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X : Over (Spec ↧ℂ)) (d : ℕ) /-- Multiplication by a complex scalar on the presheaf of holomorphic de Rham forms. -/ -def scalarHolomorphicDeRhamPresheaf [SmoothOfRelativeDimension d X.hom] +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf [SmoothOfRelativeDimension d X.hom] (p : ℕ) (c : ℂ) : - holomorphicDeRhamPresheaf X d p ⟶ - holomorphicDeRhamPresheaf X d p where + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d p ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf X d p where app U := AddCommGrpCat.ofHom - ((c • LinearMap.id : HolomorphicForm X d U p →ₗ[ℂ] _).toAddMonoidHom) + ((c • LinearMap.id : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d U p →ₗ[ℂ] _).toAddMonoidHom) naturality {U V} i := by ext x - dsimp [holomorphicDeRhamPresheaf] at x ⊢ - change c • holomorphicFormRestriction X d i p x = - holomorphicFormRestriction X d i p (c • x) + dsimp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf] at x ⊢ + change c • _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d i p x = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d i p (c • x) exact (LinearMap.map_smul _ c x).symm /-- Scalar multiplication commutes with the exterior derivative. -/ -lemma scalarHolomorphicDeRhamPresheaf_d +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf_d [SmoothOfRelativeDimension d X.hom] (p : ℕ) (c : ℂ) : - scalarHolomorphicDeRhamPresheaf X d p c ≫ - holomorphicDeRhamDifferential X d p = - holomorphicDeRhamDifferential X d p ≫ - scalarHolomorphicDeRhamPresheaf X d (p + 1) c := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p c ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d p = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d p ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d (p + 1) c := NatTrans.ext <| funext fun U => AddCommGrpCat.hom_ext <| AddMonoidHom.ext fun x => - (holomorphicFormDifferential X d U p).map_smul c x + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential X d U p).map_smul c x /-- Multiplication by a complex scalar as an endomorphism of the sheafified de Rham complex. -/ -def scalarHolomorphicDeRhamComplex [SmoothOfRelativeDimension d X.hom] +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex [SmoothOfRelativeDimension d X.hom] (c : ℂ) : - holomorphicDeRhamComplex X d ⟶ - holomorphicDeRhamComplex X d := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex X d ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex X d := CochainComplex.ofHom (fun p => let J := Opens.grothendieckTopology - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (presheafToSheaf J AddCommGrpCat).map - (scalarHolomorphicDeRhamPresheaf X d p c)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p c)) (fun p => by let J := Opens.grothendieckTopology - (TopCat.of (ComplexPoint X)) - unfold holomorphicDeRhamComplex + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex simp only [CochainComplex.of_d] change (presheafToSheaf J AddCommGrpCat).map - (scalarHolomorphicDeRhamPresheaf X d p c) ≫ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p c) ≫ (presheafToSheaf J AddCommGrpCat).map - (holomorphicDeRhamDifferential X d p) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d p) = (presheafToSheaf J AddCommGrpCat).map - (holomorphicDeRhamDifferential X d p) ≫ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamDifferential X d p) ≫ (presheafToSheaf J AddCommGrpCat).map - (scalarHolomorphicDeRhamPresheaf X d (p + 1) c) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d (p + 1) c) rw [← Functor.map_comp, ← Functor.map_comp, - scalarHolomorphicDeRhamPresheaf_d]) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf_d]) /-- Multiplication by a complex scalar on the integer-indexed holomorphic de Rham complex. -/ -def scalarHolomorphicDeRhamComplexInt [IsIntegral X.left] [Smooth X.hom] +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt [IsIntegral X.left] [Smooth X.hom] (c : ℂ) : - holomorphicDeRhamComplexInt X ⟶ - holomorphicDeRhamComplexInt X := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplexInt X ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplexInt X := HomologicalComplex.extendMap - (scalarHolomorphicDeRhamComplex X (dim X.left) c) ComplexShape.embeddingUpNat + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex X (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) c) ComplexShape.embeddingUpNat -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace -open scoped ContDiff Manifold +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace +open scoped ContDiff _root_.Manifold -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X : Over (Spec ↧ℂ)) (d : ℕ) /-- Scalar multiplication on the constant complex presheaf. -/ -def complexScalarPresheaf (c : ℂ) : - 𝓒ᵖ(↧(ComplexPoint X); ℂ) ⟶ 𝓒ᵖ(↧(ComplexPoint X); ℂ) where +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarPresheaf (c : ℂ) : + 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) ⟶ 𝓒ᵖ(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) where app _ := AddCommGrpCat.ofHom (DistribSMul.toAddMonoidHom ℂ c) naturality {U V} i := by ext x rfl /-- Scalar multiplication on the constant complex sheaf. -/ -def complexScalarSheaf (c : ℂ) : - 𝓒(↧(ComplexPoint X); ℂ) ⟶ 𝓒(↧(ComplexPoint X); ℂ) := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarSheaf (c : ℂ) : + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) ⟶ 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) := let J := Opens.grothendieckTopology - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (presheafToSheaf J AddCommGrpCat).map - (complexScalarPresheaf X c) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarPresheaf X c) /-- Scalar multiplication on the constant complex-valued complex concentrated in degree zero. -/ @[implicit_reducible] -def complexScalarComplex (c : ℂ) : +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplex (c : ℂ) : (CochainComplex.single₀ - (TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X)))).obj - 𝓒(↧(ComplexPoint X); ℂ) ⟶ + (TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))).obj + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) ⟶ (CochainComplex.single₀ - (TopCat.Sheaf AddCommGrpCat (TopCat.of (ComplexPoint X)))).obj - 𝓒(↧(ComplexPoint X); ℂ) := - (CochainComplex.single₀ _).map (complexScalarSheaf X c) + (TopCat.Sheaf AddCommGrpCat (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))).obj + 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) := + (CochainComplex.single₀ _).map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarSheaf X c) /-- Scalar multiplication on the integer-indexed constant complex-valued complex. -/ -def complexScalarComplexInt (c : ℂ) : - constantComplexSheafComplexInt X ⟶ - constantComplexSheafComplexInt X := - HomologicalComplex.extendMap (complexScalarComplex X c) +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt (c : ℂ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantComplexSheafComplexInt X ⟶ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantComplexSheafComplexInt X := + HomologicalComplex.extendMap (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplex X c) ComplexShape.embeddingUpNat -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace -open scoped ContDiff Manifold +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace +open scoped ContDiff _root_.Manifold -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point variable (X : Over (Spec ↧ℂ)) (d : ℕ) -@[simp] lemma scalarHolomorphicDeRhamPresheaf_apply +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf_apply [SmoothOfRelativeDimension d X.hom] (p : ℕ) (c : ℂ) - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (x : HolomorphicForm X d U p) : - (scalarHolomorphicDeRhamPresheaf X d p c).app U x = c • x := rfl + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d U p) : + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p c).app U x = c • x := rfl -@[simp] lemma scalarHolomorphicDeRhamPresheaf_zero +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf_zero [SmoothOfRelativeDimension d X.hom] (p : ℕ) : - scalarHolomorphicDeRhamPresheaf X d p 0 = 0 := by - dsimp [scalarHolomorphicDeRhamPresheaf, holomorphicDeRhamPresheaf] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p 0 = 0 := by + dsimp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf] simp rfl -@[simp] lemma scalarHolomorphicDeRhamPresheaf_one +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf_one [SmoothOfRelativeDimension d X.hom] (p : ℕ) : - scalarHolomorphicDeRhamPresheaf X d p 1 = 𝟙 _ := by - dsimp [scalarHolomorphicDeRhamPresheaf, holomorphicDeRhamPresheaf] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p 1 = 𝟙 _ := by + dsimp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf] simp rfl -@[simp] lemma scalarHolomorphicDeRhamPresheaf_add +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf_add [SmoothOfRelativeDimension d X.hom] (p : ℕ) (a b : ℂ) : - scalarHolomorphicDeRhamPresheaf X d p (a + b) = - scalarHolomorphicDeRhamPresheaf X d p a + - scalarHolomorphicDeRhamPresheaf X d p b := by - dsimp [scalarHolomorphicDeRhamPresheaf, holomorphicDeRhamPresheaf] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p (a + b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p a + + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p b := by + dsimp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf] simp [add_smul] rfl -@[simp] lemma scalarHolomorphicDeRhamPresheaf_mul +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf_mul [SmoothOfRelativeDimension d X.hom] (p : ℕ) (a b : ℂ) : - scalarHolomorphicDeRhamPresheaf X d p (a * b) = - scalarHolomorphicDeRhamPresheaf X d p b ≫ - scalarHolomorphicDeRhamPresheaf X d p a := by - dsimp [scalarHolomorphicDeRhamPresheaf, holomorphicDeRhamPresheaf] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p (a * b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p b ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p a := by + dsimp [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamPresheaf] simp [mul_smul] rfl -@[simp] lemma scalarHolomorphicDeRhamComplex_zero +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex_zero [SmoothOfRelativeDimension d X.hom] : - scalarHolomorphicDeRhamComplex X d 0 = 0 := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex X d 0 = 0 := by apply HomologicalComplex.hom_ext intro p change (presheafToSheaf - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) AddCommGrpCat).map - (scalarHolomorphicDeRhamPresheaf X d p 0) = 0 - rw [scalarHolomorphicDeRhamPresheaf_zero, Functor.map_zero] + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p 0) = 0 + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf_zero, Functor.map_zero] -@[simp] lemma scalarHolomorphicDeRhamComplex_one +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex_one [SmoothOfRelativeDimension d X.hom] : - scalarHolomorphicDeRhamComplex X d 1 = 𝟙 _ := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex X d 1 = 𝟙 _ := by apply HomologicalComplex.hom_ext intro p change (presheafToSheaf - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) AddCommGrpCat).map - (scalarHolomorphicDeRhamPresheaf X d p 1) = 𝟙 _ - rw [scalarHolomorphicDeRhamPresheaf_one] + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p 1) = 𝟙 _ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf_one] exact (presheafToSheaf - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) AddCommGrpCat).map_id _ -@[simp] lemma scalarHolomorphicDeRhamComplex_add +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex_add [SmoothOfRelativeDimension d X.hom] (a b : ℂ) : - scalarHolomorphicDeRhamComplex X d (a + b) = - scalarHolomorphicDeRhamComplex X d a + - scalarHolomorphicDeRhamComplex X d b := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex X d (a + b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex X d a + + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex X d b := by apply HomologicalComplex.hom_ext intro p change (presheafToSheaf - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) AddCommGrpCat).map - (scalarHolomorphicDeRhamPresheaf X d p (a + b)) = _ - rw [scalarHolomorphicDeRhamPresheaf_add, Functor.map_add] + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p (a + b)) = _ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf_add, Functor.map_add] rfl -@[simp] lemma scalarHolomorphicDeRhamComplex_mul +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex_mul [SmoothOfRelativeDimension d X.hom] (a b : ℂ) : - scalarHolomorphicDeRhamComplex X d (a * b) = - scalarHolomorphicDeRhamComplex X d b ≫ - scalarHolomorphicDeRhamComplex X d a := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex X d (a * b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex X d b ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex X d a := by apply HomologicalComplex.hom_ext intro p change (presheafToSheaf - (Opens.grothendieckTopology (TopCat.of (ComplexPoint X))) + (Opens.grothendieckTopology (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) AddCommGrpCat).map - (scalarHolomorphicDeRhamPresheaf X d p (a * b)) = _ - rw [scalarHolomorphicDeRhamPresheaf_mul, Functor.map_comp] + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d p (a * b)) = _ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf_mul, Functor.map_comp] rfl /-- Conjugation intertwines multiplication by `c` with multiplication by `conj c` on the constant complex presheaf. This is the presheaf-level source of conjugate-linearity. -/ -lemma complexScalarPresheaf_comp_conj (c : ℂ) : - complexScalarPresheaf X c ≫ conjConstantComplexPresheaf X = - conjConstantComplexPresheaf X ≫ - complexScalarPresheaf X (starRingEnd ℂ c) := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarPresheaf_comp_conj (c : ℂ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarPresheaf X c ≫ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexPresheaf X = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexPresheaf X ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarPresheaf X (starRingEnd ℂ c) := by ext U : 2 exact AddMonoidHom.ext (map_mul (starRingEnd ℂ) c) /-- Conjugation intertwines multiplication by `c` with multiplication by `conj c` on the constant complex sheaf. -/ -lemma complexScalarSheaf_comp_conj (c : ℂ) : - complexScalarSheaf X c ≫ conjConstantComplexSheaf X = - conjConstantComplexSheaf X ≫ - complexScalarSheaf X (starRingEnd ℂ c) := by +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarSheaf_comp_conj (c : ℂ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarSheaf X c ≫ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexSheaf X = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexSheaf X ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarSheaf X (starRingEnd ℂ c) := by let J := Opens.grothendieckTopology - (TopCat.of (ComplexPoint X)) - change (presheafToSheaf J AddCommGrpCat).map (complexScalarPresheaf X c) ≫ - (presheafToSheaf J AddCommGrpCat).map (conjConstantComplexPresheaf X) = - (presheafToSheaf J AddCommGrpCat).map (conjConstantComplexPresheaf X) ≫ + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + change (presheafToSheaf J AddCommGrpCat).map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarPresheaf X c) ≫ + (presheafToSheaf J AddCommGrpCat).map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexPresheaf X) = + (presheafToSheaf J AddCommGrpCat).map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexPresheaf X) ≫ (presheafToSheaf J AddCommGrpCat).map - (complexScalarPresheaf X (starRingEnd ℂ c)) - rw [← Functor.map_comp, ← Functor.map_comp, complexScalarPresheaf_comp_conj] + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarPresheaf X (starRingEnd ℂ c)) + rw [← Functor.map_comp, ← Functor.map_comp, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarPresheaf_comp_conj] /-- The inclusion of constant zero-forms commutes with complex scalar multiplication. -/ -lemma constantsToHolomorphicDeRhamZero_scalar +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero_scalar [SmoothOfRelativeDimension d X.hom] (c : ℂ) : - constantsToHolomorphicDeRhamZeroSheaf X d ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZeroSheaf X d ≫ (let J := Opens.grothendieckTopology - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (presheafToSheaf J AddCommGrpCat).map - (scalarHolomorphicDeRhamPresheaf X d 0 c)) = - complexScalarSheaf X c ≫ - constantsToHolomorphicDeRhamZeroSheaf X d := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d 0 c)) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarSheaf X c ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZeroSheaf X d := by let J := Opens.grothendieckTopology - (TopCat.of (ComplexPoint X)) + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) change (presheafToSheaf J AddCommGrpCat).map - (constantsToHolomorphicDeRhamZero X d) ≫ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d) ≫ (presheafToSheaf J AddCommGrpCat).map - (scalarHolomorphicDeRhamPresheaf X d 0 c) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamPresheaf X d 0 c) = (presheafToSheaf J AddCommGrpCat).map - (complexScalarPresheaf X c) ≫ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarPresheaf X c) ≫ (presheafToSheaf J AddCommGrpCat).map - (constantsToHolomorphicDeRhamZero X d) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d) rw [← Functor.map_comp, ← Functor.map_comp] congr 1 apply NatTrans.ext funext U apply AddCommGrpCat.hom_ext - let f := holomorphicFormOfConstant X d U + let f := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormOfConstant X d U change (c • LinearMap.id).toAddMonoidHom.comp f.toAddMonoidHom = f.toAddMonoidHom.comp (DistribSMul.toAddMonoidHom ℂ c) ext x exact (f.map_smul c x).symm /-- The constant-to-de Rham comparison commutes with complex scalar multiplication. -/ -lemma constantsToHolomorphicDeRhamComplex_scalar +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex_scalar [SmoothOfRelativeDimension d X.hom] (c : ℂ) : - constantsToHolomorphicDeRhamComplex X d ≫ - scalarHolomorphicDeRhamComplex X d c = - complexScalarComplex X c ≫ - constantsToHolomorphicDeRhamComplex X d := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex X d ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex X d c = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplex X c ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex X d := by apply HomologicalComplex.hom_ext intro p rcases p with _ | p - · exact constantsToHolomorphicDeRhamZero_scalar X d c + · exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero_scalar X d c · apply (HomologicalComplex.isZero_single_obj_X - (ComplexShape.up ℕ) 0 𝓒(↧(ComplexPoint X); ℂ) (p + 1) + (ComplexShape.up ℕ) 0 𝓒(↧(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X); ℂ) (p + 1) (Nat.succ_ne_zero p)).eq_of_src /-- Conjugation intertwines the two scalar multiplications in degree zero. -/ -lemma complexScalarComplex_comp_conj (c : ℂ) : - complexScalarComplex X c ≫ conjConstantComplexComplex X = - conjConstantComplexComplex X ≫ - complexScalarComplex X (starRingEnd ℂ c) := by - unfold complexScalarComplex conjConstantComplexComplex - rw [← Functor.map_comp, ← Functor.map_comp, complexScalarSheaf_comp_conj] +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplex_comp_conj (c : ℂ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplex X c ≫ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexComplex X = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexComplex X ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplex X (starRingEnd ℂ c) := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplex _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexComplex + rw [← Functor.map_comp, ← Functor.map_comp, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarSheaf_comp_conj] /-- Conjugation intertwines multiplication by `c` with multiplication by `conj c` on the integer-indexed constant complex. -/ -lemma complexScalarComplexInt_comp_conj (c : ℂ) : - complexScalarComplexInt X c ≫ conjConstantComplexSheafComplexInt X = - conjConstantComplexSheafComplexInt X ≫ - complexScalarComplexInt X (starRingEnd ℂ c) := by - unfold complexScalarComplexInt conjConstantComplexSheafComplexInt - constantComplexSheafComplexInt +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt_comp_conj (c : ℂ) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt X c ≫ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexSheafComplexInt X = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexSheafComplexInt X ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt X (starRingEnd ℂ c) := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.conjConstantComplexSheafComplexInt + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantComplexSheafComplexInt rw [← HomologicalComplex.extendMap_comp, ← HomologicalComplex.extendMap_comp, - complexScalarComplex_comp_conj] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplex_comp_conj] -@[simp] lemma scalarHolomorphicDeRhamComplexInt_zero +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt_zero [IsIntegral X.left] [Smooth X.hom] : - scalarHolomorphicDeRhamComplexInt X 0 = 0 := by - unfold scalarHolomorphicDeRhamComplexInt - rw [scalarHolomorphicDeRhamComplex_zero, HomologicalComplex.extendMap_zero] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X 0 = 0 := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex_zero, HomologicalComplex.extendMap_zero] rfl -@[simp] lemma scalarHolomorphicDeRhamComplexInt_one +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt_one [IsIntegral X.left] [Smooth X.hom] : - scalarHolomorphicDeRhamComplexInt X 1 = 𝟙 _ := by - unfold scalarHolomorphicDeRhamComplexInt holomorphicDeRhamComplexInt - rw [scalarHolomorphicDeRhamComplex_one] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X 1 = 𝟙 _ := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplexInt + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex_one] exact HomologicalComplex.extendMap_id _ _ -@[simp] lemma scalarHolomorphicDeRhamComplexInt_add +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt_add [IsIntegral X.left] [Smooth X.hom] (a b : ℂ) : - scalarHolomorphicDeRhamComplexInt X (a + b) = - scalarHolomorphicDeRhamComplexInt X a + - scalarHolomorphicDeRhamComplexInt X b := by - unfold scalarHolomorphicDeRhamComplexInt - rw [scalarHolomorphicDeRhamComplex_add, HomologicalComplex.extendMap_add] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X (a + b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X a + + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X b := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex_add, HomologicalComplex.extendMap_add] rfl -@[simp] lemma scalarHolomorphicDeRhamComplexInt_mul +@[simp] lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt_mul [IsIntegral X.left] [Smooth X.hom] (a b : ℂ) : - scalarHolomorphicDeRhamComplexInt X (a * b) = - scalarHolomorphicDeRhamComplexInt X b ≫ - scalarHolomorphicDeRhamComplexInt X a := by - unfold scalarHolomorphicDeRhamComplexInt - rw [scalarHolomorphicDeRhamComplex_mul, HomologicalComplex.extendMap_comp] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X (a * b) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X b ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X a := by + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex_mul, HomologicalComplex.extendMap_comp] rfl /-- The integer-indexed constant-to-de Rham comparison commutes with complex scalar multiplication. -/ -lemma constantsToHolomorphicDeRhamComplexInt_scalar +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt_scalar [IsIntegral X.left] [Smooth X.hom] (c : ℂ) : - constantsToHolomorphicDeRhamComplexInt X ≫ - scalarHolomorphicDeRhamComplexInt X c = - complexScalarComplexInt X c ≫ - constantsToHolomorphicDeRhamComplexInt X := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt X ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X c = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt X c ≫ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt X := by change HomologicalComplex.extendMap - (constantsToHolomorphicDeRhamComplex X (dim X.left)) ComplexShape.embeddingUpNat ≫ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex X (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left)) ComplexShape.embeddingUpNat ≫ HomologicalComplex.extendMap - (scalarHolomorphicDeRhamComplex X (dim X.left) c) ComplexShape.embeddingUpNat = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplex X (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) c) ComplexShape.embeddingUpNat = HomologicalComplex.extendMap - (complexScalarComplex X c) ComplexShape.embeddingUpNat ≫ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplex X c) ComplexShape.embeddingUpNat ≫ HomologicalComplex.extendMap - (constantsToHolomorphicDeRhamComplex X (dim X.left)) ComplexShape.embeddingUpNat + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex X (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left)) ComplexShape.embeddingUpNat rw [← HomologicalComplex.extendMap_comp, ← HomologicalComplex.extendMap_comp, - constantsToHolomorphicDeRhamComplex_scalar] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplex_scalar] + +end ComplexPoint +end + +end -end AlgebraicGeometry.ComplexPoint +end OAI.AlgebraicGeometry.Hodge.HolomorphicDeRhamAdd diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/HolomorphicPoincare.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/HolomorphicPoincare.lean index e01355632f..ce62b9fbd5 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/HolomorphicPoincare.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Hodge/HolomorphicPoincare.lean @@ -12,16 +12,21 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.AnalyticDifferentialForms -public import HodgeConjecture.Lemmas.Analysis.Calculus.DifferentialForm.HolomorphicPoincare -public import HodgeConjecture.Mathlib.Analysis.NormedSpace.WedgeCovectors +import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.AnalyticDifferentialForms +import HodgeConjecture.Lemmas.Analysis.Calculus.DifferentialForm.HolomorphicPoincare +import HodgeConjecture.Mathlib.Analysis.NormedSpace.WedgeCovectors import Mathlib.LinearAlgebra.ExteriorAlgebra.OfAlternating import Mathlib.MeasureTheory.Integral.IntervalIntegral.FundThmCalculus +namespace OAI.AlgebraicGeometry.Hodge.HolomorphicPoincare + +open _root_.AlgebraicGeometry + /-! # The holomorphic Poincaré operator on a complex-point space @@ -30,495 +35,496 @@ This file applies the holomorphic Poincaré lemma of evaluations of raw holomorphic forms on the analytic complex-point space of a complex scheme. -/ -@[expose] public noncomputable section +noncomputable section -open ContinuousAlternatingMap MeasureTheory +open _root_.ContinuousAlternatingMap _root_.MeasureTheory open scoped ContDiff Interval -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open Point +open _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point -open CategoryTheory TopologicalSpace -open scoped Manifold +open _root_.CategoryTheory _root_.TopologicalSpace +open scoped _root_.Manifold variable (X : Over (Spec ↧ℂ)) (d : ℕ) /-- For the analytic charted-space instance, `chartAt` is the algebraically constructed local chart. -/ -lemma chartAt_eq_localChart [SmoothOfRelativeDimension d X.hom] - (z : ComplexPoint X) : - chartAt (Fin d → ℂ) z = localChart X d z := rfl +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartAt_eq_localChart [SmoothOfRelativeDimension d X.hom] + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : + chartAt (Fin d → ℂ) z = _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z := rfl /-- The change of coordinates from the chart at `z'` to the chart at `z`. -/ -def fixedChartTransition [SmoothOfRelativeDimension d X.hom] - (z z' : ComplexPoint X) : (Fin d → ℂ) → (Fin d → ℂ) := +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition [SmoothOfRelativeDimension d X.hom] + (z z' : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) : (Fin d → ℂ) → (Fin d → ℂ) := fun y ↦ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z) ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z').symm y) /-- A fixed-chart transition is complex analytic wherever the two charts overlap. -/ -lemma analyticAt_fixedChartTransition +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_fixedChartTransition [SmoothOfRelativeDimension d X.hom] - (z z' : ComplexPoint X) {y : Fin d → ℂ} - (hy : y ∈ ((localChart X d z').symm.trans - (localChart X d z)).source) : - AnalyticAt ℂ (fixedChartTransition X d z z') y := by - exact analyticAt_localChart_transition X d z' z hy + (z z' : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) {y : Fin d → ℂ} + (hy : y ∈ ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z').symm.trans + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z)).source) : + AnalyticAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z') y := by + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_localChart_transition X d z' z hy /-- Expressions of a section in two overlapping fixed charts are related by the chart transition. -/ -lemma chartSection_fixedChartTransition +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_fixedChartTransition [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z z' : ComplexPoint X) - (f : OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z z' : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} (hy : (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z').symm y ∈ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source) : - chartSection X d U z' f y = - chartSection X d U z f (fixedChartTransition X d z z' y) := by - simp only [chartSection, Function.comp_apply, fixedChartTransition] + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z' f y = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y) := by + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection, Function.comp_apply, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition] rw [(extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).left_inv hy] /-- The coordinate derivatives of a section obey the chain rule under a fixed-chart transition. -/ -lemma chartSectionDifferential_fixedChartTransition +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_fixedChartTransition [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z z' : ComplexPoint X) - (f : OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} - (hy : y ∈ chartSectionDomain X d U z') + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z z' : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) {y : Fin d → ℂ} + (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z') (hyz : (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z').symm y ∈ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source) : - chartSectionDifferential X d U z' f y = - (chartSectionDifferential X d U z f - (fixedChartTransition X d z z' y)).comp - (fderiv ℂ (fixedChartTransition X d z z') y) := by - have htransLocal : y ∈ ((localChart X d z').symm.trans - (localChart X d z)).source := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z' f y = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z f + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y)).comp + (fderiv ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z') y) := by + have htransLocal : y ∈ ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z').symm.trans + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z)).source := by rw [OpenPartialHomeomorph.trans_source] constructor - · change y ∈ (localChart X d z').target + · change y ∈ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z').target simpa only [extChartAt_target, modelWithCornersSelf_coe_symm, Set.preimage_id, ModelWithCorners.range_eq_univ, Set.inter_univ, - chartAt_eq_localChart X d] using hy.1 - · change (localChart X d z').symm y ∈ - (localChart X d z).source + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartAt_eq_localChart X d] using hy.1 + · change (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z').symm y ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).source simpa only [extChartAt_coe_symm, extChartAt_source, modelWithCornersSelf_coe_symm, Function.comp_id, - chartAt_eq_localChart X d] using hyz - have hT : DifferentiableAt ℂ (fixedChartTransition X d z z') y := - (analyticAt_fixedChartTransition X d z z' htransLocal).differentiableAt - have hTy : fixedChartTransition X d z z' y ∈ - chartSectionDomain X d U z := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartAt_eq_localChart X d] using hyz + have hT : DifferentiableAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z') y := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticAt_fixedChartTransition X d z z' htransLocal).differentiableAt + have hTy : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y ∈ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z := by let ez := extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z let ez' := extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z' refine ⟨ez.map_source hyz, ?_⟩ - change ez.symm (fixedChartTransition X d z z' y) ∈ - ((Opposite.unop U : Opens (ComplexPoint X)) : Set _) - rw [show fixedChartTransition X d z z' y = ez (ez'.symm y) from rfl, + change ez.symm (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y) ∈ + ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) + rw [show _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y = ez (ez'.symm y) from rfl, ez.left_inv hyz] exact hy.2 - have hf : DifferentiableAt ℂ (chartSection X d U z f) - (fixedChartTransition X d z z' y) := - ((chartSection_contDiffWithinAt X d U z f hTy).contDiffAt - ((isOpen_chartSectionDomain X d U z).mem_nhds hTy)).differentiableAt (by simp) + have hf : DifferentiableAt ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y) := + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffWithinAt X d U z f hTy).contDiffAt + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z).mem_nhds hTy)).differentiableAt (by simp) have heq : Filter.EventuallyEq (nhds y) - (chartSection X d U z' f) - (chartSection X d U z f ∘ fixedChartTransition X d z z') := by - filter_upwards [((localChart X d z').symm.trans - (localChart X d z)).open_source.mem_nhds htransLocal] with w hw - apply chartSection_fixedChartTransition X d U z z' f + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z' f) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f ∘ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z') := by + filter_upwards [((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z').symm.trans + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z)).open_source.mem_nhds htransLocal] with w hw + apply _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_fixedChartTransition X d U z z' f rw [OpenPartialHomeomorph.trans_source] at hw have hw2 := hw.2 - change (localChart X d z').symm w ∈ - (localChart X d z).source at hw2 + change (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z').symm w ∈ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d z).source at hw2 simpa only [extChartAt_coe_symm, extChartAt_source, modelWithCornersSelf_coe_symm, Function.comp_id, - chartAt_eq_localChart X d] using hw2 - rw [chartSectionDifferential, chartSectionDifferential, - fderivWithin_of_isOpen (isOpen_chartSectionDomain X d U z') hy, - fderivWithin_of_isOpen (isOpen_chartSectionDomain X d U z) hTy, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartAt_eq_localChart X d] using hw2 + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential, + fderivWithin_of_isOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z') hy, + fderivWithin_of_isOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z) hTy, heq.fderiv_eq] exact fderiv_fun_comp y hf hT /-- Evaluation of a differential form is covariant under a holomorphic fixed-chart transition. -/ -lemma chartEvaluation_fixedChartTransition +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_fixedChartTransition [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z z' : ComplexPoint X) (p : ℕ) - (θ : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) - {y : Fin d → ℂ} (hy : y ∈ chartSectionDomain X d U z') + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z z' : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (θ : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) + {y : Fin d → ℂ} (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z') (hyz : (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z').symm y ∈ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source) : - chartEvaluation X d U z' p θ y = - (chartEvaluation X d U z p θ - (fixedChartTransition X d z z' y)).compContinuousLinearMap - (fderiv ℂ (fixedChartTransition X d z z') y) := by - have hTy : fixedChartTransition X d z z' y ∈ chartSectionDomain X d U z := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z' p θ y = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y)).compContinuousLinearMap + (fderiv ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z') y) := by + have hTy : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z := by refine ⟨(extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).map_source hyz, ?_⟩ change (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).symm - (fixedChartTransition X d z z' y) ∈ - ((Opposite.unop U : Opens (ComplexPoint X)) : Set _) - rw [show fixedChartTransition X d z z' y = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y) ∈ + ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) + rw [show _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y = (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z) ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z').symm y) from rfl, (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).left_inv hyz] exact hy.2 - induction θ using Algebra.DeRham.mk_induction with + induction θ using _root_.OAI.Algebra.DeRham.Basic.mk_induction with | mk a₀ v => - rw [chartEvaluation_mk X d U z' p a₀ v hy, chartEvaluation_mk X d U z p a₀ v hTy] - simp only [chartGeneratorEvaluation] - rw [chartSection_fixedChartTransition X d U z z' a₀ hyz] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_mk X d U z' p a₀ v hy, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_mk X d U z p a₀ v hTy] + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_fixedChartTransition X d U z z' a₀ hyz] have hd : - (fun j ↦ chartSectionDifferential X d U z' (v j) y) = - (fun j ↦ (chartSectionDifferential X d U z (v j) - (fixedChartTransition X d z z' y)).comp - (fderiv ℂ (fixedChartTransition X d z z') y)) := by + (fun j ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z' (v j) y) = + (fun j ↦ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z (v j) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y)).comp + (fderiv ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z') y)) := by funext j - exact chartSectionDifferential_fixedChartTransition X d U z z' (v j) hy hyz - rw [hd, wedgeCovectors_compContinuousLinearMap, smul_compContinuousLinearMap] + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_fixedChartTransition X d U z z' (v j) hy hyz + rw [hd, _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors_compContinuousLinearMap, _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.smul_compContinuousLinearMap] | zero => - rw [chartEvaluation_zero] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_zero] exact ContinuousAlternatingMap.ext fun v ↦ by simp [ContinuousAlternatingMap.compContinuousLinearMap_apply] | add a b ha hb => - simp only [chartEvaluation_add, Pi.add_apply, ha, hb, add_compContinuousLinearMap] + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_add, Pi.add_apply, ha, hb, _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.add_compContinuousLinearMap] | smul c a ha => - simp only [chartEvaluation_smul, Pi.smul_apply, ha, smul_compContinuousLinearMap] + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_smul, Pi.smul_apply, ha, _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.smul_compContinuousLinearMap] /-- Vanishing throughout one fixed chart detects an analytic relation, provided the open set lies in the source of that chart. -/ -lemma mem_chartEvaluationKernel_of_chartEvaluation_eq_zero +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_chartEvaluationKernel_of_chartEvaluation_eq_zero [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) (p : ℕ) - (hsource : ((Opposite.unop U : Opens (ComplexPoint X)) : - Set (ComplexPoint X)) ⊆ + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (hsource : ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : + Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) ⊆ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source) - (θ : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) - (hθ : Set.EqOn (chartEvaluation X d U z p θ) 0 - (chartSectionDomain X d U z)) : - θ ∈ chartEvaluationKernel X d U p := by - apply (mem_chartEvaluationKernel_iff X d U p _).2 + (θ : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) + (hθ : Set.EqOn (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ) 0 + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) : + θ ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U p := by + apply (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_chartEvaluationKernel_iff X d U p _).2 intro z' y hy have hyU := hy.2 have hyz : (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z').symm y ∈ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source := hsource hyU - rw [chartEvaluation_fixedChartTransition X d U z z' p θ ⟨hy.1, hyU⟩ hyz] - have hTy : fixedChartTransition X d z z' y ∈ - chartSectionDomain X d U z := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_fixedChartTransition X d U z z' p θ ⟨hy.1, hyU⟩ hyz] + have hTy : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y ∈ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z := by let ez := extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z let ez' := extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z' refine ⟨ez.map_source hyz, ?_⟩ - change ez.symm (fixedChartTransition X d z z' y) ∈ - ((Opposite.unop U : Opens (ComplexPoint X)) : Set _) - rw [show fixedChartTransition X d z z' y = ez (ez'.symm y) from rfl, + change ez.symm (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y) ∈ + ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) + rw [show _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.fixedChartTransition X d z z' y = ez (ez'.symm y) from rfl, ez.left_inv hyz] exact hyU rw [hθ hTy] refine ContinuousAlternatingMap.ext fun v ↦ ?_ simp [ContinuousAlternatingMap.compContinuousLinearMap_apply] -lemma contMDiffAt_chartFunction [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (hsource : ((Opposite.unop U : Opens (ComplexPoint X)) : Set _) ⊆ +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.contMDiffAt_chartFunction [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hsource : ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) ⊆ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source) (a : (Fin d → ℂ) → ℂ) - (ha : AnalyticOnNhd ℂ a (chartSectionDomain X d U z)) - {q : ComplexPoint X} (hq : q ∈ Opposite.unop U) : + (ha : AnalyticOnNhd ℂ a (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) + {q : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X} (hq : q ∈ Opposite.unop U) : ContMDiffAt (modelWithCornersSelf ℂ (Fin d → ℂ)) (modelWithCornersSelf ℂ ℂ) ω (fun x ↦ a ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z) x)) q := by have hqsource := hsource hq have hcoord : (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z) q ∈ - chartSectionDomain X d U z := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z := by refine ⟨(extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).map_source hqsource, ?_⟩ change (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).symm ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z) q) ∈ - ((Opposite.unop U : Opens (ComplexPoint X)) : Set _) + ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) rw [(extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).left_inv hqsource] exact hq exact (ha _ hcoord).contDiffAt.contMDiffAt.comp q (contMDiffAt_extChartAt' (by rwa [← extChartAt_source (modelWithCornersSelf ℂ (Fin d → ℂ))])) -lemma contMDiff_chartFunction [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (hsource : ((Opposite.unop U : Opens (ComplexPoint X)) : Set _) ⊆ +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.contMDiff_chartFunction [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hsource : ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) ⊆ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source) (a : (Fin d → ℂ) → ℂ) - (ha : AnalyticOnNhd ℂ a (chartSectionDomain X d U z)) : + (ha : AnalyticOnNhd ℂ a (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) : ContMDiff (modelWithCornersSelf ℂ (Fin d → ℂ)) (modelWithCornersSelf ℂ ℂ) ω - (fun q : (Opposite.unop U : Opens (ComplexPoint X)) ↦ + (fun q : (Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) ↦ a ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z) q)) := fun q ↦ (contMDiffAt_subtype_iff (I := modelWithCornersSelf ℂ (Fin d → ℂ)) (I' := modelWithCornersSelf ℂ ℂ) - (U := (Opposite.unop U : Opens (ComplexPoint X))) - (f := fun x : ComplexPoint X ↦ + (U := (Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) + (f := fun x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X ↦ a ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z) x)) - (x := q)).mpr (contMDiffAt_chartFunction X d U z hsource a ha q.2) + (x := q)).mpr (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.contMDiffAt_chartFunction X d U z hsource a ha q.2) /-- An analytic scalar function in one chart, regarded as a holomorphic section on the chart source. -/ -def holomorphicSectionOfChart [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (hsource : ((Opposite.unop U : Opens (ComplexPoint X)) : Set _) ⊆ +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicSectionOfChart [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hsource : ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) ⊆ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source) (a : (Fin d → ℂ) → ℂ) - (ha : AnalyticOnNhd ℂ a (chartSectionDomain X d U z)) : - OpenHolomorphicFunctions X d U := + (ha : AnalyticOnNhd ℂ a (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U := (⟨fun q ↦ a ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z) q), - contMDiff_chartFunction X d U z hsource a ha⟩ : - C^ω⟮𝓘(ℂ, Fin d → ℂ), (Opposite.unop U : Opens (ComplexPoint X)); ℂ⟯) + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.contMDiff_chartFunction X d U z hsource a ha⟩ : + C^ω⟮𝓘(ℂ, Fin d → ℂ), (Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)); ℂ⟯) -lemma chartSection_holomorphicSectionOfChart [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (hsource : ((Opposite.unop U : Opens (ComplexPoint X)) : Set _) ⊆ +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_holomorphicSectionOfChart [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hsource : ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) ⊆ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source) (a : (Fin d → ℂ) → ℂ) - (ha : AnalyticOnNhd ℂ a (chartSectionDomain X d U z)) - {y : Fin d → ℂ} (hy : y ∈ chartSectionDomain X d U z) : - chartSection X d U z - (holomorphicSectionOfChart X d U z hsource a ha) y = a y := by - rw [chartSection_apply_of_mem X d U z _ hy] + (ha : AnalyticOnNhd ℂ a (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) + {y : Fin d → ℂ} (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicSectionOfChart X d U z hsource a ha) y = a y := by + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U z _ hy] change a ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z) ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).symm y)) = a y rw [(extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).right_inv hy.1] -lemma chartSectionDifferential_holomorphicSectionOfChart +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_holomorphicSectionOfChart [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (hsource : ((Opposite.unop U : Opens (ComplexPoint X)) : Set _) ⊆ + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hsource : ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) ⊆ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source) (a : (Fin d → ℂ) → ℂ) - (ha : AnalyticOnNhd ℂ a (chartSectionDomain X d U z)) - {y : Fin d → ℂ} (hy : y ∈ chartSectionDomain X d U z) : - chartSectionDifferential X d U z - (holomorphicSectionOfChart X d U z hsource a ha) y = - fderivWithin ℂ a (chartSectionDomain X d U z) y := by + (ha : AnalyticOnNhd ℂ a (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) + {y : Fin d → ℂ} (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicSectionOfChart X d U z hsource a ha) y = + fderivWithin ℂ a (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) y := by exact fderivWithin_congr' - (fun w hw ↦ chartSection_holomorphicSectionOfChart X d U z hsource a ha hw) hy + (fun w hw ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_holomorphicSectionOfChart X d U z hsource a ha hw) hy /-- The `i`-th fixed-chart coordinate as a holomorphic section. -/ -def chartCoordinateSection [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (hsource : ((Opposite.unop U : Opens (ComplexPoint X)) : Set _) ⊆ +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartCoordinateSection [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hsource : ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) ⊆ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source) - (i : Fin d) : OpenHolomorphicFunctions X d U := - holomorphicSectionOfChart X d U z hsource + (i : Fin d) : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicSectionOfChart X d U z hsource (ContinuousLinearMap.proj (R := ℂ) (φ := fun _ : Fin d ↦ ℂ) i) ((ContinuousLinearMap.proj (R := ℂ) (φ := fun _ : Fin d ↦ ℂ) i).analyticOnNhd _) -lemma chartSectionDifferential_chartCoordinateSection +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_chartCoordinateSection [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (hsource : ((Opposite.unop U : Opens (ComplexPoint X)) : Set _) ⊆ + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hsource : ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) ⊆ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source) - (i : Fin d) {y : Fin d → ℂ} (hy : y ∈ chartSectionDomain X d U z) : - chartSectionDifferential X d U z - (chartCoordinateSection X d U z hsource i) y = + (i : Fin d) {y : Fin d → ℂ} (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartCoordinateSection X d U z hsource i) y = ContinuousLinearMap.proj i := by - unfold chartCoordinateSection - rw [chartSectionDifferential_holomorphicSectionOfChart X d U z hsource _ _ hy, - fderivWithin_of_isOpen (isOpen_chartSectionDomain X d U z) hy] + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartCoordinateSection + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_holomorphicSectionOfChart X d U z hsource _ _ hy, + fderivWithin_of_isOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z) hy] exact (ContinuousLinearMap.proj (R := ℂ) (φ := fun _ : Fin d ↦ ℂ) i).hasFDerivAt.fderiv /-- A finite differential form whose fixed-chart evaluation is a given analytic alternating-form field. -/ -def formOfAnalyticField [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (hsource : ((Opposite.unop U : Opens (ComplexPoint X)) : Set _) ⊆ +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formOfAnalyticField [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hsource : ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) ⊆ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source) (p : ℕ) (θ : (Fin d → ℂ) → (Fin d → ℂ) [⋀^Fin p]→L[ℂ] ℂ) - (hθ : AnalyticOnNhd ℂ θ (chartSectionDomain X d U z)) : - Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p := + (hθ : AnalyticOnNhd ℂ θ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) : + _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p := ∑ I : Fin p → Fin d, - Algebra.DeRham.mk ℂ (OpenHolomorphicFunctions X d U) p - (holomorphicSectionOfChart X d U z hsource - (coordinateCoefficient θ I) - (analyticOnNhd_coordinateCoefficient θ hθ I)) - fun j ↦ chartCoordinateSection X d U z hsource (I j) + _root_.OAI.Algebra.DeRham.Basic.mk ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicSectionOfChart X d U z hsource + (_root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.coordinateCoefficient θ I) + (_root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.analyticOnNhd_coordinateCoefficient θ hθ I)) + fun j ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartCoordinateSection X d U z hsource (I j) /-- The finite realization of an analytic alternating-form field evaluates to that field in the chosen chart. -/ -lemma chartEvaluation_formOfAnalyticField +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_formOfAnalyticField [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (hsource : ((Opposite.unop U : Opens (ComplexPoint X)) : Set _) ⊆ + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hsource : ((Opposite.unop U : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) ⊆ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) z).source) (p : ℕ) (θ : (Fin d → ℂ) → (Fin d → ℂ) [⋀^Fin p]→L[ℂ] ℂ) - (hθ : AnalyticOnNhd ℂ θ (chartSectionDomain X d U z)) : - Set.EqOn (chartEvaluation X d U z p - (formOfAnalyticField X d U z hsource p θ hθ)) θ - (chartSectionDomain X d U z) := by + (hθ : AnalyticOnNhd ℂ θ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) : + Set.EqOn (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formOfAnalyticField X d U z hsource p θ hθ)) θ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) := by intro y hy - have hsum := map_sum (chartEvaluationAt X d U z p y) - (fun I : Fin p → Fin d => Algebra.DeRham.mk ℂ (OpenHolomorphicFunctions X d U) p - (holomorphicSectionOfChart X d U z hsource - (coordinateCoefficient θ I) - (analyticOnNhd_coordinateCoefficient θ hθ I)) - fun j ↦ chartCoordinateSection X d U z hsource (I j)) Finset.univ - change chartEvaluationAt X d U z p y - (formOfAnalyticField X d U z hsource p θ hθ) = _ - rw [formOfAnalyticField, hsum] + have hsum := map_sum (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationAt X d U z p y) + (fun I : Fin p → Fin d => _root_.OAI.Algebra.DeRham.Basic.mk ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicSectionOfChart X d U z hsource + (_root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.coordinateCoefficient θ I) + (_root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.analyticOnNhd_coordinateCoefficient θ hθ I)) + fun j ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartCoordinateSection X d U z hsource (I j)) Finset.univ + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationAt X d U z p y + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formOfAnalyticField X d U z hsource p θ hθ) = _ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formOfAnalyticField, hsum] have hterm : ∀ I : Fin p → Fin d, - chartEvaluationAt X d U z p y - (Algebra.DeRham.mk ℂ (OpenHolomorphicFunctions X d U) p - (holomorphicSectionOfChart X d U z hsource - (coordinateCoefficient θ I) - (analyticOnNhd_coordinateCoefficient θ hθ I)) - fun j ↦ chartCoordinateSection X d U z hsource (I j)) = - coordinateCoefficient θ I y • - wedgeCovectors ℂ (Fin d → ℂ) fun j ↦ ContinuousLinearMap.proj (I j) := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationAt X d U z p y + (_root_.OAI.Algebra.DeRham.Basic.mk ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicSectionOfChart X d U z hsource + (_root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.coordinateCoefficient θ I) + (_root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.analyticOnNhd_coordinateCoefficient θ hθ I)) + fun j ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartCoordinateSection X d U z hsource (I j)) = + _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.coordinateCoefficient θ I y • + _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) fun j ↦ ContinuousLinearMap.proj (I j) := by intro I - change chartEvaluation X d U z p _ y = _ - rw [chartEvaluation_mk X d U z p _ _ hy] - simp only [chartGeneratorEvaluation] - rw [chartSection_holomorphicSectionOfChart X d U z hsource _ _ hy] - have hd : (fun j ↦ chartSectionDifferential X d U z - (chartCoordinateSection X d U z hsource (I j)) y) = + change _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p _ y = _ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_mk X d U z p _ _ hy] + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_holomorphicSectionOfChart X d U z hsource _ _ hy] + have hd : (fun j ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartCoordinateSection X d U z hsource (I j)) y) = fun j ↦ ContinuousLinearMap.proj (I j) := by funext j - exact chartSectionDifferential_chartCoordinateSection X d U z hsource _ hy + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential_chartCoordinateSection X d U z hsource _ hy rw [hd] simp_rw [hterm] - exact (alternating_eq_sum_wedgeCovectors (θ y)).symm + exact (_root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.alternating_eq_sum_wedgeCovectors (θ y)).symm /-- A holomorphic section is complex analytic in every fixed chart. -/ -lemma analyticOnNhd_chartSection [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (f : OpenHolomorphicFunctions X d U) : - AnalyticOnNhd ℂ (chartSection X d U z f) - (chartSectionDomain X d U z) := - (isOpen_chartSectionDomain X d U z).analyticOn_iff_analyticOnNhd.mp - (chartSection_contDiffOn X d U z f).analyticOn +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticOnNhd_chartSection [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) : + AnalyticOnNhd ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z f) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z).analyticOn_iff_analyticOnNhd.mp + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffOn X d U z f).analyticOn /-- The coordinate differential of a holomorphic section is analytic. -/ -lemma analyticOnNhd_chartSectionDifferential +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticOnNhd_chartSectionDifferential [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) - (f : OpenHolomorphicFunctions X d U) : - AnalyticOnNhd ℂ (chartSectionDifferential X d U z f) - (chartSectionDomain X d U z) := by - refine AnalyticOnNhd.congr (isOpen_chartSectionDomain X d U z) - (analyticOnNhd_chartSection X d U z f).fderiv fun y hy ↦ ?_ - rw [chartSectionDifferential, - fderivWithin_of_isOpen (isOpen_chartSectionDomain X d U z) hy] - -lemma analyticOnNhd_chartGeneratorEvaluation_apply + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (f : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) : + AnalyticOnNhd ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z f) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) := by + refine AnalyticOnNhd.congr (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticOnNhd_chartSection X d U z f).fderiv fun y hy ↦ ?_ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential, + fderivWithin_of_isOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z) hy] + +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticOnNhd_chartGeneratorEvaluation_apply [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) (p : ℕ) - (a₀ : OpenHolomorphicFunctions X d U) (w : Fin p → OpenHolomorphicFunctions X d U) + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (a₀ : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (w : Fin p → _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (v : Fin p → Fin d → ℂ) : AnalyticOnNhd ℂ - (fun y ↦ chartGeneratorEvaluation X d U z p a₀ w y v) - (chartSectionDomain X d U z) := by - let s := chartSectionDomain X d U z + (fun y ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation X d U z p a₀ w y v) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) := by + let s := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z have hentry (i j : Fin p) : AnalyticOnNhd ℂ - (fun y ↦ chartSectionDifferential X d U z (w j) y (v i)) s := + (fun y ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z (w j) y (v i)) s := (ContinuousLinearMap.apply ℂ ℂ (v i)).comp_analyticOnNhd - (analyticOnNhd_chartSectionDifferential X d U z (w j)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticOnNhd_chartSectionDifferential X d U z (w j)) have hprod (e : Equiv.Perm (Fin p)) : AnalyticOnNhd ℂ (fun y ↦ ∏ j : Fin p, - chartSectionDifferential X d U z (w (e j)) y (v j)) s := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z (w (e j)) y (v j)) s := Finset.univ.analyticOnNhd_fun_prod (fun j hj ↦ hentry j (e j)) have hterm (e : Equiv.Perm (Fin p)) : AnalyticOnNhd ℂ (fun y ↦ (((e.sign : ℤ) : ℂ) * ∏ j : Fin p, - chartSectionDifferential X d U z (w (e j)) y (v j))) s := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z (w (e j)) y (v j))) s := by convert (hprod e).const_smul (c := ((e.sign : ℤ) : ℂ)) using 1 have hdet : AnalyticOnNhd ℂ (fun y ↦ ∑ e : Equiv.Perm (Fin p), (((e.sign : ℤ) : ℂ) * ∏ j : Fin p, - chartSectionDifferential X d U z (w (e j)) y (v j))) s := + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z (w (e j)) y (v j))) s := Finset.univ.analyticOnNhd_fun_sum (fun e he ↦ hterm e) - have hmul := (analyticOnNhd_chartSection X d U z a₀).mul hdet - refine AnalyticOnNhd.congr (isOpen_chartSectionDomain X d U z) hmul fun y _ ↦ ?_ - simp only [chartGeneratorEvaluation, ContinuousAlternatingMap.smul_apply, smul_eq_mul, - wedgeCovectors_apply_eq_det, Matrix.det_apply] - apply congrArg (chartSection X d U z a₀ y * ·) + have hmul := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticOnNhd_chartSection X d U z a₀).mul hdet + refine AnalyticOnNhd.congr (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z) hmul fun y _ ↦ ?_ + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation, ContinuousAlternatingMap.smul_apply, smul_eq_mul, + _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors_apply_eq_det, Matrix.det_apply] + apply congrArg (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection X d U z a₀ y * ·) refine Finset.sum_congr rfl fun e _ ↦ ?_ rw [Units.smul_def, ← Int.cast_smul_eq_zsmul ℂ, smul_eq_mul] rfl -lemma analyticOnNhd_chartEvaluation_apply +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticOnNhd_chartEvaluation_apply [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) (p : ℕ) - (θ : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (θ : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) (v : Fin p → Fin d → ℂ) : - AnalyticOnNhd ℂ (fun y ↦ chartEvaluation X d U z p θ y v) - (chartSectionDomain X d U z) := by - induction θ using Algebra.DeRham.mk_induction with + AnalyticOnNhd ℂ (fun y ↦ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ y v) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) := by + induction θ using _root_.OAI.Algebra.DeRham.Basic.mk_induction with | mk a₀ w => - refine AnalyticOnNhd.congr (isOpen_chartSectionDomain X d U z) - (analyticOnNhd_chartGeneratorEvaluation_apply X d U z p a₀ w v) fun y hy ↦ ?_ - rw [chartEvaluation_mk X d U z p a₀ w hy] + refine AnalyticOnNhd.congr (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticOnNhd_chartGeneratorEvaluation_apply X d U z p a₀ w v) fun y hy ↦ ?_ + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_mk X d U z p a₀ w hy] | zero => - rw [chartEvaluation_zero] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_zero] exact analyticOnNhd_const | add a b ha hb => - rw [chartEvaluation_add] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_add] convert ha.add hb using 1 | smul c a ha => - rw [chartEvaluation_smul] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_smul] convert ha.const_smul (c := c) using 1 /-- A holomorphic form has an analytic fixed-chart evaluation. -/ -lemma analyticOnNhd_chartEvaluation [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (z : ComplexPoint X) (p : ℕ) - (θ : Algebra.DeRham.Form ℂ (OpenHolomorphicFunctions X d U) p) : - AnalyticOnNhd ℂ (chartEvaluation X d U z p θ) - (chartSectionDomain X d U z) := by - let s := chartSectionDomain X d U z +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticOnNhd_chartEvaluation [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (z : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) + (θ : _root_.OAI.Algebra.DeRham.Basic.Form ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) : + AnalyticOnNhd ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) := by + let s := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z let e (I : Fin p → Fin d) : Fin p → Fin d → ℂ := fun j ↦ Pi.single (I j) 1 let W (I : Fin p → Fin d) := - wedgeCovectors ℂ (Fin d → ℂ) (fun j ↦ ContinuousLinearMap.proj (I j)) + _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) (fun j ↦ ContinuousLinearMap.proj (I j)) let c : ℂ := ((Fintype.card (Fin p)).factorial : ℂ)⁻¹ have hc (I : Fin p → Fin d) : AnalyticOnNhd ℂ - (fun y ↦ c * chartEvaluation X d U z p θ y (e I)) s := by - convert (analyticOnNhd_chartEvaluation_apply X d U z p θ (e I)).const_smul + (fun y ↦ c * _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ y (e I)) s := by + convert (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticOnNhd_chartEvaluation_apply X d U z p θ (e I)).const_smul (c := c) using 1 have hterm (I : Fin p → Fin d) : AnalyticOnNhd ℂ - (fun y ↦ (c * chartEvaluation X d U z p θ y (e I)) • W I) s := + (fun y ↦ (c * _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ y (e I)) • W I) s := (hc I).smul analyticOnNhd_const have hsum : AnalyticOnNhd ℂ (fun y ↦ ∑ I : Fin p → Fin d, - (c * chartEvaluation X d U z p θ y (e I)) • W I) s := + (c * _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ y (e I)) • W I) s := Finset.univ.analyticOnNhd_fun_sum (fun I hI ↦ hterm I) - exact AnalyticOnNhd.congr (isOpen_chartSectionDomain X d U z) hsum fun y _ ↦ - (alternating_eq_sum_wedgeCovectors (chartEvaluation X d U z p θ y)).symm + exact AnalyticOnNhd.congr (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z) hsum fun y _ ↦ + (_root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.alternating_eq_sum_wedgeCovectors (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p θ y)).symm /-- Every open neighborhood contains a smaller neighborhood that is exactly a Euclidean ball in the fixed chart at the chosen point. -/ -lemma exists_chartBall_le [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (x : ComplexPoint X) (hxU : x ∈ Opposite.unop U) : - ∃ (V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (_i : U ⟶ V) +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_chartBall_le [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hxU : x ∈ Opposite.unop U) : + ∃ (V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (_i : U ⟶ V) (r : ℝ), x ∈ Opposite.unop V ∧ 0 < r ∧ - ((Opposite.unop V : Opens (ComplexPoint X)) : Set _) ⊆ + ((Opposite.unop V : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) ⊆ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) x).source ∧ - chartSectionDomain X d V x = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d V x = Metric.ball ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) x) x) r := by - let e := localChart X d x - have hxsource : x ∈ e.source := mem_localChart_source X d x + let e := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d x + have hxsource : x ∈ e.source := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source X d x have hopen : IsOpen (e.target ∩ e.symm ⁻¹' ((Opposite.unop U : Opens _) : Set _)) := e.isOpen_inter_preimage_symm (Opposite.unop U).2 have hximage : e x ∈ e.target ∩ e.symm ⁻¹' ((Opposite.unop U : Opens _) : Set _) := by @@ -526,7 +532,7 @@ lemma exists_chartBall_le [SmoothOfRelativeDimension d X.hom] rw [Set.mem_preimage, e.left_inv hxsource] exact hxU obtain ⟨r, hr, hball⟩ := Metric.nhds_basis_ball.mem_iff.mp (hopen.mem_nhds hximage) - let Vo : Opens (ComplexPoint X) := + let Vo : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := ⟨e.source ∩ e ⁻¹' Metric.ball (e x) r, e.isOpen_inter_preimage Metric.isOpen_ball⟩ have hxV : x ∈ Vo := ⟨hxsource, Metric.mem_ball_self hr⟩ have hVU : Vo ≤ Opposite.unop U := by @@ -538,11 +544,11 @@ lemma exists_chartBall_le [SmoothOfRelativeDimension d X.hom] let i : U ⟶ V := (homOfLE hVU).op refine ⟨V, i, r, hxV, hr, ?_, ?_⟩ · intro z hz - simpa only [extChartAt_source, chartAt_eq_localChart X d] using hz.1 - · unfold chartSectionDomain + simpa only [extChartAt_source, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartAt_eq_localChart X d] using hz.1 + · unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain simp only [extChartAt_target, modelWithCornersSelf_coe_symm, Set.preimage_id, Set.range_id, Set.inter_univ, extChartAt_coe_symm, extChartAt_coe, - Function.comp_id, chartAt_eq_localChart X d, modelWithCornersSelf_coe] + Function.comp_id, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartAt_eq_localChart X d, modelWithCornersSelf_coe] dsimp only [V, Opposite.unop_op] change e.target ∩ e.symm ⁻¹' (Vo : Set _) = Metric.ball (e x) r ext y @@ -557,28 +563,28 @@ lemma exists_chartBall_le [SmoothOfRelativeDimension d X.hom] exact hy /-- Shrink a fixed chart ball to any smaller positive radius. -/ -lemma exists_smaller_chartBall [SmoothOfRelativeDimension d X.hom] - (V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (x : ComplexPoint X) (r : ℝ) - (hdom : chartSectionDomain X d V x = +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_smaller_chartBall [SmoothOfRelativeDimension d X.hom] + (V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (r : ℝ) + (hdom : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d V x = Metric.ball ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) x) x) r) (ρ : NNReal) (hρ : 0 < ρ) (hρr : (ρ : ℝ) < r) : - ∃ (W : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (_j : V ⟶ W), + ∃ (W : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (_j : V ⟶ W), x ∈ Opposite.unop W ∧ - ((Opposite.unop W : Opens (ComplexPoint X)) : Set _) ⊆ + ((Opposite.unop W : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) : Set _) ⊆ (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) x).source ∧ - chartSectionDomain X d W x = Metric.ball + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d W x = Metric.ball ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) x) x) (ρ : ℝ) := by - let e := localChart X d x + let e := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.localChart X d x have hdom' : e.target ∩ e.symm ⁻¹' ((Opposite.unop V : Opens _) : Set _) = Metric.ball (e x) r := by - unfold chartSectionDomain at hdom + unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain at hdom simp only [extChartAt_target, modelWithCornersSelf_coe_symm, Set.preimage_id, Set.range_id, Set.inter_univ, extChartAt_coe_symm, extChartAt_coe, - Function.comp_id, chartAt_eq_localChart X d, modelWithCornersSelf_coe] at hdom + Function.comp_id, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartAt_eq_localChart X d, modelWithCornersSelf_coe] at hdom exact hdom - have hxsource : x ∈ e.source := mem_localChart_source X d x - let Wo : Opens (ComplexPoint X) := + have hxsource : x ∈ e.source := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_localChart_source X d x + let Wo : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) := ⟨e.source ∩ e ⁻¹' Metric.ball (e x) (ρ : ℝ), e.isOpen_inter_preimage Metric.isOpen_ball⟩ have hxW : x ∈ Wo := ⟨hxsource, Metric.mem_ball_self (by exact_mod_cast hρ)⟩ @@ -594,11 +600,11 @@ lemma exists_smaller_chartBall [SmoothOfRelativeDimension d X.hom] let j : V ⟶ W := (homOfLE hWV).op refine ⟨W, j, hxW, ?_, ?_⟩ · intro z hz - simpa only [extChartAt_source, chartAt_eq_localChart X d] using hz.1 - · unfold chartSectionDomain + simpa only [extChartAt_source, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartAt_eq_localChart X d] using hz.1 + · unfold _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain simp only [extChartAt_target, modelWithCornersSelf_coe_symm, Set.preimage_id, Set.range_id, Set.inter_univ, extChartAt_coe_symm, extChartAt_coe, - Function.comp_id, chartAt_eq_localChart X d, modelWithCornersSelf_coe] + Function.comp_id, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartAt_eq_localChart X d, modelWithCornersSelf_coe] dsimp only [W, Opposite.unop_op] change e.target ∩ e.symm ⁻¹' (Wo : Set _) = Metric.ball (e x) (ρ : ℝ) ext y @@ -614,158 +620,163 @@ lemma exists_smaller_chartBall [SmoothOfRelativeDimension d X.hom] exact hy /-- Every closed holomorphic form of positive degree is locally exact. -/ -theorem exists_local_holomorphicForm_primitive [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (x : ComplexPoint X) (hxU : x ∈ Opposite.unop U) (p : ℕ) - (form : HolomorphicForm X d U (p + 1)) - (hclosed : holomorphicFormDifferential X d U (p + 1) form = 0) : - ∃ (W : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (k : U ⟶ W) - (θ : HolomorphicForm X d W p), +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_local_holomorphicForm_primitive [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hxU : x ∈ Opposite.unop U) (p : ℕ) + (form : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d U (p + 1)) + (hclosed : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential X d U (p + 1) form = 0) : + ∃ (W : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (k : U ⟶ W) + (θ : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d W p), x ∈ Opposite.unop W ∧ - holomorphicFormDifferential X d W p θ = - holomorphicFormRestriction X d k (p + 1) form := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential X d W p θ = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d k (p + 1) form := by obtain ⟨a, rfl⟩ := Submodule.mkQ_surjective - (chartEvaluationKernel X d U (p + 1)) form - have hrel : Algebra.DeRham.differential ℂ - (OpenHolomorphicFunctions X d U) (p + 1) a ∈ - chartEvaluationKernel X d U (p + 2) := by - change Submodule.Quotient.mk (Algebra.DeRham.differential ℂ - (OpenHolomorphicFunctions X d U) (p + 1) a) = 0 at hclosed + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U (p + 1)) form + have hrel : _root_.OAI.Algebra.DeRham.Basic.differential ℂ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (p + 1) a ∈ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U (p + 2) := by + change Submodule.Quotient.mk (_root_.OAI.Algebra.DeRham.Basic.differential ℂ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (p + 1) a) = 0 at hclosed rwa [Submodule.Quotient.mk_eq_zero] at hclosed obtain ⟨V, i, r, hxV, hr, hsourceV, hdomV⟩ := - exists_chartBall_le X d U x hxU - let aV := formRestriction X d i (p + 1) a - let η := chartEvaluation X d V x (p + 1) aV + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_chartBall_le X d U x hxU + let aV := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d i (p + 1) a + let η := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d V x (p + 1) aV have hη : AnalyticOnNhd ℂ η (Metric.ball ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) x) x) r) := by rw [← hdomV] - exact analyticOnNhd_chartEvaluation X d V x (p + 1) aV - have hrelV : Algebra.DeRham.differential ℂ - (OpenHolomorphicFunctions X d V) (p + 1) aV ∈ - chartEvaluationKernel X d V (p + 2) := by - have h := formRestriction_mem_chartEvaluationKernel X d i (p + 2) hrel - rwa [formRestriction_differential] at h + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticOnNhd_chartEvaluation X d V x (p + 1) aV + have hrelV : _root_.OAI.Algebra.DeRham.Basic.differential ℂ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d V) (p + 1) aV ∈ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d V (p + 2) := by + have h := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_mem_chartEvaluationKernel X d i (p + 2) hrel + rwa [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_differential] at h have hclosedη : Set.EqOn (extDeriv η) 0 (Metric.ball ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) x) x) r) := by intro y hy - have hyV : y ∈ chartSectionDomain X d V x := hdomV.symm ▸ hy - have hchart : chartEvaluation X d V x (p + 2) - (Algebra.DeRham.differential ℂ - (OpenHolomorphicFunctions X d V) (p + 1) aV) y = 0 := by - exact (mem_chartEvaluationKernel_iff X d V (p + 2) _).1 hrelV x y hyV - rw [chartEvaluation_differential X d V x (p + 1) aV hyV] at hchart - have hwithin : extDerivWithin η (chartSectionDomain X d V x) y = + have hyV : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d V x := hdomV.symm ▸ hy + have hchart : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d V x (p + 2) + (_root_.OAI.Algebra.DeRham.Basic.differential ℂ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d V) (p + 1) aV) y = 0 := by + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_chartEvaluationKernel_iff X d V (p + 2) _).1 hrelV x y hyV + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_differential X d V x (p + 1) aV hyV] at hchart + have hwithin : extDerivWithin η (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d V x) y = extDeriv η y := by rw [extDerivWithin, extDeriv, - fderivWithin_of_isOpen (isOpen_chartSectionDomain X d V x) hyV] + fderivWithin_of_isOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d V x) hyV] rwa [hwithin] at hchart obtain ⟨ρ, hρ, hρr, θfield, hθfield, hprim⟩ := - DifferentialForm.exists_analyticOnNhd_primitive_on_smaller_centered_ball p hr η hη hclosedη + _root_.OAI.Analysis.DifferentialForms.HolomorphicPoincare.DifferentialForm.exists_analyticOnNhd_primitive_on_smaller_centered_ball p hr η hη hclosedη obtain ⟨W, j, hxW, hsourceW, hdomW⟩ := - exists_smaller_chartBall X d V x r hdomV ρ hρ hρr - have hθW : AnalyticOnNhd ℂ θfield (chartSectionDomain X d W x) := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_smaller_chartBall X d V x r hdomV ρ hρ hρr + have hθW : AnalyticOnNhd ℂ θfield (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d W x) := by rw [hdomW] exact hθfield - let b := formOfAnalyticField X d W x hsourceW p θfield hθW - let θ : HolomorphicForm X d W p := Submodule.Quotient.mk b + let b := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formOfAnalyticField X d W x hsourceW p θfield hθW + let θ : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d W p := Submodule.Quotient.mk b refine ⟨W, i ≫ j, θ, hxW, ?_⟩ - apply (Submodule.Quotient.eq (chartEvaluationKernel X d W (p + 1))).2 - apply mem_chartEvaluationKernel_of_chartEvaluation_eq_zero + apply (Submodule.Quotient.eq (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d W (p + 1))).2 + apply _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_chartEvaluationKernel_of_chartEvaluation_eq_zero X d W x (p + 1) hsourceW intro y hy - rw [chartEvaluation_sub, Pi.sub_apply, - chartEvaluation_differential X d W x p b hy, + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_sub, Pi.sub_apply, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_differential X d W x p b hy, extDerivWithin_congr' - (chartEvaluation_formOfAnalyticField X d W x hsourceW p θfield hθW) hy] - have hwithin : extDerivWithin θfield (chartSectionDomain X d W x) y = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_formOfAnalyticField X d W x hsourceW p θfield hθW) hy] + have hwithin : extDerivWithin θfield (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d W x) y = extDeriv θfield y := by rw [extDerivWithin, extDeriv, - fderivWithin_of_isOpen (isOpen_chartSectionDomain X d W x) hy] + fderivWithin_of_isOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d W x) hy] rw [hwithin] have hyball : y ∈ Metric.ball ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) x) x) (ρ : ℝ) := hdomW ▸ hy - rw [hprim hyball, formRestriction_comp, LinearMap.comp_apply, - chartEvaluation_formRestriction X d j x (p + 1) aV hy] + rw [hprim hyball, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_comp, LinearMap.comp_apply, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_formRestriction X d j x (p + 1) aV hy] simp [η] /-- In degree zero, the Kähler representative of a scalar evaluates to the constant alternating map with that scalar value. -/ -lemma chartEvaluation_ofConstant [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (x : ComplexPoint X) (c : ℂ) {y : Fin d → ℂ} - (hy : y ∈ chartSectionDomain X d U x) : - chartEvaluation X d U x 0 - (Algebra.DeRham.ofConstant ℂ (OpenHolomorphicFunctions X d U) c) y = +lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_ofConstant [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (c : ℂ) {y : Fin d → ℂ} + (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U x) : + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U x 0 + (_root_.OAI.Algebra.DeRham.Basic.ofConstant ℂ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) c) y = ContinuousAlternatingMap.constOfIsEmpty ℂ (Fin d → ℂ) (Fin 0) c := by - rw [Algebra.DeRham.ofConstant_apply, Algebra.DeRham.ofFunction_apply, - chartEvaluation_mk X d U x 0 _ _ hy] - simp only [chartGeneratorEvaluation, chartSection_apply_of_mem X d U x _ hy] - change c • wedgeCovectors ℂ (Fin d → ℂ) Fin.elim0 = _ + rw [_root_.OAI.Algebra.DeRham.Basic.ofConstant_apply, _root_.OAI.Algebra.DeRham.Basic.ofFunction_apply, + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_mk X d U x 0 _ _ hy] + simp only [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartGeneratorEvaluation, _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSection_apply_of_mem X d U x _ hy] + change c • _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ (Fin d → ℂ) Fin.elim0 = _ ext v simp /-- A closed holomorphic zero-form is locally the image of a complex constant. -/ -theorem exists_local_holomorphicForm_eq_constant [SmoothOfRelativeDimension d X.hom] - (U : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) - (x : ComplexPoint X) (hxU : x ∈ Opposite.unop U) - (form : HolomorphicForm X d U 0) - (hclosed : holomorphicFormDifferential X d U 0 form = 0) : - ∃ (V : (Opens (TopCat.of (ComplexPoint X)))ᵒᵖ) (i : U ⟶ V) (c : ℂ), +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_local_holomorphicForm_eq_constant [SmoothOfRelativeDimension d X.hom] + (U : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) + (x : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) (hxU : x ∈ Opposite.unop U) + (form : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.HolomorphicForm X d U 0) + (hclosed : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormDifferential X d U 0 form = 0) : + ∃ (V : (Opens (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (i : U ⟶ V) (c : ℂ), x ∈ Opposite.unop V ∧ - holomorphicFormRestriction X d i 0 form = - holomorphicFormOfConstant X d V c := by + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction X d i 0 form = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormOfConstant X d V c := by obtain ⟨a, rfl⟩ := Submodule.mkQ_surjective - (chartEvaluationKernel X d U 0) form - have hrel : Algebra.DeRham.differential ℂ - (OpenHolomorphicFunctions X d U) 0 a ∈ - chartEvaluationKernel X d U 1 := by - change Submodule.Quotient.mk (Algebra.DeRham.differential ℂ - (OpenHolomorphicFunctions X d U) 0 a) = 0 at hclosed + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U 0) form + have hrel : _root_.OAI.Algebra.DeRham.Basic.differential ℂ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) 0 a ∈ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d U 1 := by + change Submodule.Quotient.mk (_root_.OAI.Algebra.DeRham.Basic.differential ℂ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) 0 a) = 0 at hclosed rwa [Submodule.Quotient.mk_eq_zero] at hclosed obtain ⟨V, i, r, hxV, hr, hsourceV, hdomV⟩ := - exists_chartBall_le X d U x hxU - let aV := formRestriction X d i 0 a - let η := chartEvaluation X d V x 0 aV + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_chartBall_le X d U x hxU + let aV := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction X d i 0 a + let η := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d V x 0 aV have hη : AnalyticOnNhd ℂ η (Metric.ball ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) x) x) r) := by rw [← hdomV] - exact analyticOnNhd_chartEvaluation X d V x 0 aV - have hrelV : Algebra.DeRham.differential ℂ - (OpenHolomorphicFunctions X d V) 0 aV ∈ - chartEvaluationKernel X d V 1 := by - have h := formRestriction_mem_chartEvaluationKernel X d i 1 hrel - rwa [formRestriction_differential] at h + exact _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.analyticOnNhd_chartEvaluation X d V x 0 aV + have hrelV : _root_.OAI.Algebra.DeRham.Basic.differential ℂ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d V) 0 aV ∈ + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d V 1 := by + have h := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_mem_chartEvaluationKernel X d i 1 hrel + rwa [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.formRestriction_differential] at h have hclosedη : Set.EqOn (extDeriv η) 0 (Metric.ball ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) x) x) r) := by intro y hy - have hyV : y ∈ chartSectionDomain X d V x := hdomV.symm ▸ hy - have hchart : chartEvaluation X d V x 1 - (Algebra.DeRham.differential ℂ - (OpenHolomorphicFunctions X d V) 0 aV) y = 0 := by - exact (mem_chartEvaluationKernel_iff X d V 1 _).1 hrelV x y hyV - rw [chartEvaluation_differential X d V x 0 aV hyV] at hchart - have hwithin : extDerivWithin η (chartSectionDomain X d V x) y = + have hyV : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d V x := hdomV.symm ▸ hy + have hchart : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d V x 1 + (_root_.OAI.Algebra.DeRham.Basic.differential ℂ + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d V) 0 aV) y = 0 := by + exact (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_chartEvaluationKernel_iff X d V 1 _).1 hrelV x y hyV + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_differential X d V x 0 aV hyV] at hchart + have hwithin : extDerivWithin η (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d V x) y = extDeriv η y := by rw [extDerivWithin, extDeriv, - fderivWithin_of_isOpen (isOpen_chartSectionDomain X d V x) hyV] + fderivWithin_of_isOpen (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d V x) hyV] rwa [hwithin] at hchart have hconst := - DifferentialForm.zeroForm_eq_at_center_of_closedOn_ball hr η hη hclosedη + _root_.OAI.Analysis.DifferentialForms.HolomorphicPoincare.DifferentialForm.zeroForm_eq_at_center_of_closedOn_ball hr η hη hclosedη let center := (extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) x) x - let c := DifferentialForm.zeroFormCoeff η center + let c := _root_.OAI.Analysis.DifferentialForms.Poincare.DifferentialForm.zeroFormCoeff η center refine ⟨V, i, c, hxV, ?_⟩ - apply (Submodule.Quotient.eq (chartEvaluationKernel X d V 0)).2 - apply mem_chartEvaluationKernel_of_chartEvaluation_eq_zero + apply (Submodule.Quotient.eq (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationKernel X d V 0)).2 + apply _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.mem_chartEvaluationKernel_of_chartEvaluation_eq_zero X d V x 0 hsourceV intro y hy - rw [chartEvaluation_sub, Pi.sub_apply] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_sub, Pi.sub_apply] have hyball' : y ∈ Metric.ball ((extChartAt (modelWithCornersSelf ℂ (Fin d → ℂ)) x) x) r := hdomV ▸ hy have hyball : y ∈ Metric.ball center r := by simpa only [center] using hyball' - rw [show chartEvaluation X d V x 0 aV y = η center from hconst hyball] - rw [chartEvaluation_ofConstant X d V x c hy] - have hrepr := congrFun (DifferentialForm.zeroForm_eq_constOfIsEmpty η) center + rw [show _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d V x 0 aV y = η center from hconst hyball] + rw [_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_ofConstant X d V x c hy] + have hrepr := congrFun (_root_.OAI.Analysis.DifferentialForms.Poincare.DifferentialForm.zeroForm_eq_constOfIsEmpty η) center rw [hrepr] exact sub_self _ -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Hodge.HolomorphicPoincare diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/AffineRelativeDimension.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/AffineRelativeDimension.lean index c154ecd3a6..7ad0612994 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/AffineRelativeDimension.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/AffineRelativeDimension.lean @@ -1,13 +1,18 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Equidimensional +import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Equidimensional import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.Smooth.AffineRelativeDimension + +open _root_.AlgebraicGeometry + /-! # Equidimensional smooth affine neighborhoods @@ -17,11 +22,11 @@ singular stratification into inputs for the normal-coordinate theorems, using equidimensionality only on each affine chart. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory +open _root_.CategoryTheory -namespace AlgebraicGeometry +section open _root_.RingHom @@ -58,4 +63,8 @@ theorem smoothOfRelativeDimension_affineOpen_of_isStandardSmooth have h := smoothOfRelativeDimension_comp n 0 g (⊤ : (Spec ↧ℂ).Opens).ι simpa only [Nat.add_zero, g, Scheme.Hom.resLE_comp_ι] using h -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Smooth.AffineRelativeDimension diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/CatenaryDimension.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/CatenaryDimension.lean index 586b51a01c..6771574f91 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/CatenaryDimension.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/CatenaryDimension.lean @@ -12,11 +12,12 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Support -public import HodgeConjecture.Lemmas.RingTheory.TranscendenceDegreeKrullDimension +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Support +import HodgeConjecture.Lemmas.RingTheory.TranscendenceDegreeKrullDimension import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.Dimension import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.SmoothCoordinates @@ -29,6 +30,10 @@ import Mathlib.RingTheory.KrullDimension.Polynomial import Mathlib.RingTheory.NoetherNormalization import Mathlib.RingTheory.Unramified.LocalStructure +namespace OAI.AlgebraicGeometry.Smooth.CatenaryDimension + +open _root_.RingHom + /-! # Catenary dimension formulas for smooth complex schemes @@ -44,11 +49,12 @@ specialization chains to prove `height x + coheight x = d` at every point of a s `d`-fold. Consequently, the reduced closure of a point of coheight `p` has dimension `d - p`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Ideal MvPolynomial Topology +open _root_.CategoryTheory _root_.Ideal _root_.MvPolynomial _root_.Topology namespace RingHom +open _root_.RingHom /-- For every prime of a standard-smooth complex algebra of relative dimension `d`, its height plus the dimension of its quotient is `d`. -/ @@ -68,13 +74,17 @@ lemma IsStandardSmoothOfRelativeDimension.height_add_ringKrullDim_quotient_eq_co Algebra.FiniteType.trans (R := ℂ) (S := MvPolynomial (Fin d) ℂ) (A := S) inferInstance inferInstance have hheight : P.height = (P.under (MvPolynomial (Fin d) ℂ)).height := - Algebra.QuasiFinite.height_eq_height_under P + _root_.OAI.Algebra.RingTheory.SmoothKrullDimension.QuasiFinite.height_eq_height_under P have hquot : ringKrullDim (S ⧸ P) = ringKrullDim (MvPolynomial (Fin d) ℂ ⧸ P.under (MvPolynomial (Fin d) ℂ)) := - Algebra.QuasiFinite.ringKrullDim_quotient_eq + _root_.OAI.Algebra.RingTheory.TranscendenceDegreeKrullDimension.QuasiFinite.ringKrullDim_quotient_eq (k := ℂ) (R := MvPolynomial (Fin d) ℂ) P rw [hheight, hquot] - exact PolynomialCatenary.MvPolynomial.height_add_ringKrullDim_quotient_eq_fin + exact _root_.OAI.Algebra.Foundations.PolynomialCatenaryT.PolynomialCatenary.MvPolynomial.height_add_ringKrullDim_quotient_eq_fin (P.under (MvPolynomial (Fin d) ℂ)) end RingHom + +end + +end OAI.AlgebraicGeometry.Smooth.CatenaryDimension diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/DimensionFormula.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/DimensionFormula.lean index c117172dc6..d0ed2bdc96 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/DimensionFormula.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/DimensionFormula.lean @@ -12,11 +12,12 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.RingTheory.SmoothKrullDimension -public import Mathlib.AlgebraicGeometry.Morphisms.Smooth +import HodgeConjecture.Mathlib.RingTheory.SmoothKrullDimension +import Mathlib.AlgebraicGeometry.Morphisms.Smooth import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.Dimension import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.SmoothCoordinates @@ -25,6 +26,10 @@ import Mathlib.RingTheory.KrullDimension.Field import Mathlib.RingTheory.KrullDimension.Polynomial import Mathlib.RingTheory.Unramified.LocalStructure +namespace OAI.AlgebraicGeometry.Smooth.DimensionFormula + +open _root_.AlgebraicGeometry + /-! # Dimension bounds for smooth complex schemes @@ -39,11 +44,11 @@ dimension formula. It is not a consequence of the currently available Mathlib A assumed here. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicGeometry +section variable {X : Scheme} @@ -53,7 +58,7 @@ lemma orderKrullDim_affineOpen_eq_ringKrullDim (U : X.Opens) (hU : IsAffineOpen Order.krullDim U = ringKrullDim Γ(X, U) := by calc Order.krullDim U = topologicalKrullDim U := - (Scheme.topologicalKrullDim_eq_orderKrullDim U.toScheme).symm + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentDimension.Scheme.topologicalKrullDim_eq_orderKrullDim U.toScheme).symm _ = topologicalKrullDim (PrimeSpectrum Γ(X, U)) := hU.isoSpec.hom.homeomorph.isHomeomorph.topologicalKrullDim_eq _ = ringKrullDim Γ(X, U) := @@ -108,15 +113,15 @@ variable {f : X ⟶ Spec ↧ℂ} {d : ℕ} most `d`. -/ lemma SmoothOfRelativeDimension.orderKrullDim_le_complex [SmoothOfRelativeDimension d f] : Order.krullDim X ≤ d := by - apply Scheme.orderKrullDim_le_of_exists_open_orderKrullDim_le X d + apply _root_.OAI.AlgebraicGeometry.Smooth.DimensionFormula.Scheme.orderKrullDim_le_of_exists_open_orderKrullDim_le X d intro x obtain ⟨U, hU, hxU, hsmooth⟩ := - SmoothOfRelativeDimension.exists_affine_isStandardSmoothOfRelativeDimension + _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.SmoothOfRelativeDimension.exists_affine_isStandardSmoothOfRelativeDimension (d := d) f x refine ⟨U, hxU, ?_⟩ rw [orderKrullDim_affineOpen_eq_ringKrullDim U hU] - exact (algebraMap_isStandardSmoothOfRelativeDimension - (d := d) (Over.mk f) hsmooth).ringKrullDim_le_complex + exact (_root_.OAI.Algebra.RingTheory.SmoothKrullDimension.RingHom.IsStandardSmoothOfRelativeDimension.ringKrullDim_le_complex (_root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.algebraMap_isStandardSmoothOfRelativeDimension + (d := d) (Over.mk f) hsmooth)) /-- At every point of a smooth complex scheme of relative dimension `d`, the sum of the order-theoretic dimension and codimension is at most `d`. -/ @@ -130,7 +135,7 @@ lemma SmoothOfRelativeDimension.height_add_coheight_le_complex exact WithBot.coe_le_coe.mpr (le_iSup (fun y : X ↦ Order.height y + Order.coheight y) x) exact WithBot.coe_le_coe.mp - (hpoint.trans (SmoothOfRelativeDimension.orderKrullDim_le_complex + (hpoint.trans (_root_.OAI.AlgebraicGeometry.Smooth.DimensionFormula.SmoothOfRelativeDimension.orderKrullDim_le_complex (f := f) (d := d))) /-- If a point of a smooth complex `d`-fold has coheight `p`, its height is at most `d - p`. @@ -140,7 +145,7 @@ lemma SmoothOfRelativeDimension.height_le_sub_of_coheight_eq Order.height x ≤ d - p := by apply ENat.le_sub_of_add_le_right (by simp) rw [← hx] - exact SmoothOfRelativeDimension.height_add_coheight_le_complex + exact _root_.OAI.AlgebraicGeometry.Smooth.DimensionFormula.SmoothOfRelativeDimension.height_add_coheight_le_complex (f := f) (d := d) x /-- Every point of a smooth complex scheme of relative dimension `d` has coheight at most `d`. -/ @@ -148,7 +153,11 @@ lemma SmoothOfRelativeDimension.coheight_le_complex [SmoothOfRelativeDimension d f] (x : X) : Order.coheight x ≤ d := by calc Order.coheight x ≤ Order.height x + Order.coheight x := le_add_left le_rfl - _ ≤ d := SmoothOfRelativeDimension.height_add_coheight_le_complex + _ ≤ d := _root_.OAI.AlgebraicGeometry.Smooth.DimensionFormula.SmoothOfRelativeDimension.height_add_coheight_le_complex (f := f) (d := d) x -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Smooth.DimensionFormula diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/Equidimensional.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/Equidimensional.lean index 7563148474..a678978370 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/Equidimensional.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/Equidimensional.lean @@ -12,12 +12,13 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.Topology.Dimension.Basic -public import Mathlib.AlgebraicGeometry.Morphisms.Smooth -public import Mathlib.Basic.Complex.Basic +import HodgeConjecture.Lemmas.Topology.Dimension.Basic +import Mathlib.AlgebraicGeometry.Morphisms.Smooth +import Mathlib.Basic.Complex.Basic import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.Dimension import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.SmoothCoordinates @@ -25,6 +26,10 @@ import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.DimensionFormula import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.PointwiseDimension import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.Smooth.Equidimensional + +open _root_.AlgebraicGeometry + /-! # Smooth integral complex schemes are equidimensional @@ -42,11 +47,11 @@ The resulting instance is what lets constructions on a smooth integral complex s relative-dimension parameter and recover it from the scheme. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section variable {X : Scheme} (f : X ⟶ Spec ↧ℂ) @@ -83,18 +88,18 @@ lemma orderKrullDim_eq_of_isStandardSmoothOfRelativeDimension {U : X.Opens} {n : (hU : IsAffineOpen U) [Nonempty U] (h : (f.appLE ⊤ U (by simp)).hom.IsStandardSmoothOfRelativeDimension n) : Order.krullDim U = n := by - rw [orderKrullDim_affineOpen_eq_ringKrullDim U hU] - exact (algebraMap_isStandardSmoothOfRelativeDimension (Over.mk f) h).ringKrullDim_eq_complex + rw [_root_.OAI.AlgebraicGeometry.Smooth.DimensionFormula.orderKrullDim_affineOpen_eq_ringKrullDim U hU] + exact (_root_.OAI.Algebra.RingTheory.SmoothKrullDimension.RingHom.IsStandardSmoothOfRelativeDimension.ringKrullDim_eq_complex (_root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.algebraMap_isStandardSmoothOfRelativeDimension (Over.mk f) h)) /-- The Krull dimension of an open subscheme does not exceed that of the ambient scheme. -/ lemma orderKrullDim_mono {U V : X.Opens} (h : U ≤ V) : Order.krullDim U ≤ Order.krullDim V := by - rw [← Scheme.topologicalKrullDim_eq_orderKrullDim U.toScheme, - ← Scheme.topologicalKrullDim_eq_orderKrullDim V.toScheme] + rw [← _root_.OAI.AlgebraicGeometry.Cycle.ComponentDimension.Scheme.topologicalKrullDim_eq_orderKrullDim U.toScheme, + ← _root_.OAI.AlgebraicGeometry.Cycle.ComponentDimension.Scheme.topologicalKrullDim_eq_orderKrullDim V.toScheme] exact (Topology.IsEmbedding.inclusion h).isInducing.topologicalKrullDim_le /-- Half of the chart-independence, given a point in both charts: shrink the first chart to a basic open contained in the second. -/ -private lemma isStandardSmoothOfRelativeDimension_le {U V : X.Opens} {n m : ℕ} +lemma isStandardSmoothOfRelativeDimension_le {U V : X.Opens} {n m : ℕ} (hU : IsAffineOpen U) (hV : IsAffineOpen V) [Nonempty V] (hn : (f.appLE ⊤ U (by simp)).hom.IsStandardSmoothOfRelativeDimension n) (hm : (f.appLE ⊤ V (by simp)).hom.IsStandardSmoothOfRelativeDimension m) @@ -126,16 +131,16 @@ lemma isStandardSmoothOfRelativeDimension_eq [IsIntegral X] {U V : X.Opens} {n m (isStandardSmoothOfRelativeDimension_le f hV hU hm hn hzV hzU) /-- A smooth integral complex scheme is smooth of a single relative dimension. -/ -lemma Smooth.exists_smoothOfRelativeDimension [IsIntegral X] [Smooth f] : +lemma exists_smoothOfRelativeDimension [IsIntegral X] [Smooth f] : ∃ n : ℕ, SmoothOfRelativeDimension n f := by obtain ⟨x₀⟩ : Nonempty X := inferInstance - obtain ⟨V₀, hV₀, hx₀, hs₀⟩ := Smooth.exists_affine_isStandardSmooth f x₀ + obtain ⟨V₀, hV₀, hx₀, hs₀⟩ := _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.Smooth.exists_affine_isStandardSmooth f x₀ have hne₀ : Nonempty V₀ := ⟨⟨x₀, hx₀⟩⟩ - obtain ⟨n, hn⟩ := RingHom.IsStandardSmooth.exists_isStandardSmoothOfRelativeDimension hs₀ + obtain ⟨n, hn⟩ := _root_.OAI.AlgebraicGeometry.Smooth.Equidimensional.RingHom.IsStandardSmooth.exists_isStandardSmoothOfRelativeDimension hs₀ refine ⟨n, ⟨fun x ↦ ?_⟩⟩ - obtain ⟨V, hV, hxV, hs⟩ := Smooth.exists_affine_isStandardSmooth f x + obtain ⟨V, hV, hxV, hs⟩ := _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.Smooth.exists_affine_isStandardSmooth f x have hne : Nonempty V := ⟨⟨x, hxV⟩⟩ - obtain ⟨m, hm⟩ := RingHom.IsStandardSmooth.exists_isStandardSmoothOfRelativeDimension hs + obtain ⟨m, hm⟩ := _root_.OAI.AlgebraicGeometry.Smooth.Equidimensional.RingHom.IsStandardSmooth.exists_isStandardSmoothOfRelativeDimension hs refine ⟨⊤, isAffineOpen_top _, V, hV, hxV, by simp, ?_⟩ rwa [isStandardSmoothOfRelativeDimension_eq f hV₀ hV hn hm] @@ -144,9 +149,9 @@ smoothness of relative dimension is `dim X`. This is the converse direction of `SmoothOfRelativeDimension.of_isIntegral`, and it is what lets a bound relative dimension be eliminated in favour of the canonical one. -/ theorem SmoothOfRelativeDimension.dim_eq [IsIntegral X] [Smooth f] (d : ℕ) - [SmoothOfRelativeDimension d f] : dim X = d := by - rw [TopologicalSpace.dim_eq_krullDim, - SmoothOfRelativeDimension.orderKrullDim_eq_complex (f := f) (d := d)] + [SmoothOfRelativeDimension d f] : _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X = d := by + rw [_root_.OAI.Topology.Dimension.BasicEq.TopologicalSpace.dim_eq_krullDim, + _root_.OAI.AlgebraicGeometry.Smooth.PointwiseDimension.SmoothOfRelativeDimension.orderKrullDim_eq_complex (f := f) (d := d)] simp /-- A smooth integral complex scheme is smooth of relative dimension `dim X`. @@ -154,12 +159,16 @@ theorem SmoothOfRelativeDimension.dim_eq [IsIntegral X] [Smooth f] (d : ℕ) This is what makes the relative dimension of a smooth integral complex scheme redundant data: it is recovered from the scheme as `dim X`. -/ instance SmoothOfRelativeDimension.of_isIntegral [IsIntegral X] [Smooth f] : - SmoothOfRelativeDimension (dim X) f := by - obtain ⟨n, hn⟩ := Smooth.exists_smoothOfRelativeDimension f - have hdim : dim X = n := by - rw [TopologicalSpace.dim_eq_krullDim, - SmoothOfRelativeDimension.orderKrullDim_eq_complex (f := f) (d := n)] + SmoothOfRelativeDimension (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X) f := by + obtain ⟨n, hn⟩ := _root_.OAI.AlgebraicGeometry.Smooth.Equidimensional.exists_smoothOfRelativeDimension f + have hdim : _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X = n := by + rw [_root_.OAI.Topology.Dimension.BasicEq.TopologicalSpace.dim_eq_krullDim, + _root_.OAI.AlgebraicGeometry.Smooth.PointwiseDimension.SmoothOfRelativeDimension.orderKrullDim_eq_complex (f := f) (d := n)] simp rwa [hdim] -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Smooth.Equidimensional diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/Locus.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/Locus.lean index 8551d8d40c..0441a7152f 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/Locus.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/Locus.lean @@ -12,10 +12,15 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.AlgebraicGeometry.Morphisms.Smooth +import Mathlib.AlgebraicGeometry.Morphisms.Smooth + +namespace OAI.AlgebraicGeometry.Smooth.Locus + +open _root_.AlgebraicGeometry /-! # Restriction to the smooth locus @@ -24,11 +29,11 @@ This file proves that restricting a locally finitely presented scheme morphism t locus gives a smooth morphism. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory +open _root_.CategoryTheory -namespace AlgebraicGeometry +section universe u @@ -42,4 +47,8 @@ lemma Scheme.Hom.smooth_restrict_smoothLocus rw [← Scheme.Hom.smoothLocus_eq_top_iff, ← Scheme.Hom.preimage_smoothLocus_eq] simp -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Smooth.Locus diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/PointwiseDimension.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/PointwiseDimension.lean index 93f213c99b..58cdfac7d9 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/PointwiseDimension.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/PointwiseDimension.lean @@ -12,11 +12,12 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.AlgebraicGeometry.Morphisms.Smooth -public import Mathlib.Basic.Complex.Basic +import Mathlib.AlgebraicGeometry.Morphisms.Smooth +import Mathlib.Basic.Complex.Basic import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.Dimension import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.SmoothCoordinates @@ -25,6 +26,11 @@ import HodgeConjecture.Mathlib.AlgebraicGeometry.GenericPoint import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import Mathlib.RingTheory.Unramified.LocalStructure +namespace OAI.AlgebraicGeometry.Smooth.PointwiseDimension + +open _root_.AlgebraicGeometry +open _root_.RingHom + /-! # Pointwise dimension of smooth complex schemes @@ -39,11 +45,12 @@ maximal polynomial ideals and the global Krull dimension, but not this arbitrary formula. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace namespace RingHom +open _root_.RingHom /-- Every maximal ideal of a standard-smooth complex algebra of relative dimension `d` has height `d`. -/ @@ -58,14 +65,14 @@ lemma IsStandardSmoothOfRelativeDimension.height_eq_of_isMaximal have hfiniteType : (algebraMap (MvPolynomial (Fin d) ℂ) S).FiniteType := RingHom.finiteType_algebraMap.mpr inferInstance have hunder : (P.under (MvPolynomial (Fin d) ℂ)).IsMaximal := - hfiniteType.isMaximal_comap_of_isJacobsonRing P - rw [Algebra.QuasiFinite.height_eq_height_under (R := MvPolynomial (Fin d) ℂ)] - exact MvPolynomial.height_eq_fin_of_isMaximal ℂ d + (_root_.OAI.Algebra.RingTheory.SmoothKrullDimension.RingHom.FiniteType.isMaximal_comap_of_isJacobsonRing hfiniteType) P + rw [_root_.OAI.Algebra.RingTheory.SmoothKrullDimension.QuasiFinite.height_eq_height_under (R := MvPolynomial (Fin d) ℂ)] + exact _root_.OAI.Algebra.RingTheory.SmoothKrullDimension.MvPolynomial.height_eq_fin_of_isMaximal ℂ d (P.under (MvPolynomial (Fin d) ℂ)) end RingHom -namespace AlgebraicGeometry +section /-- Under an affine presentation, the height of the corresponding prime ideal is the coheight of the scheme point. -/ @@ -85,18 +92,18 @@ dimension exactly `d`. -/ lemma SmoothOfRelativeDimension.orderKrullDim_eq_complex [IsIntegral X] [SmoothOfRelativeDimension d f] : Order.krullDim X = d := by apply le_antisymm - (SmoothOfRelativeDimension.orderKrullDim_le_complex (f := f) (d := d)) + (_root_.OAI.AlgebraicGeometry.Smooth.DimensionFormula.SmoothOfRelativeDimension.orderKrullDim_le_complex (f := f) (d := d)) obtain ⟨x⟩ := (inferInstance : Nonempty X) obtain ⟨U, hU, hxU, hsmooth⟩ := - SmoothOfRelativeDimension.exists_affine_isStandardSmoothOfRelativeDimension + _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.SmoothOfRelativeDimension.exists_affine_isStandardSmoothOfRelativeDimension (d := d) f x let : Nonempty U := ⟨⟨x, hxU⟩⟩ have hUdim : Order.krullDim U = d := by - rw [orderKrullDim_affineOpen_eq_ringKrullDim U hU] - exact (algebraMap_isStandardSmoothOfRelativeDimension - (d := d) (Over.mk f) hsmooth).ringKrullDim_eq_complex - rw [← hUdim, ← Scheme.topologicalKrullDim_eq_orderKrullDim U.toScheme, - ← Scheme.topologicalKrullDim_eq_orderKrullDim X] + rw [_root_.OAI.AlgebraicGeometry.Smooth.DimensionFormula.orderKrullDim_affineOpen_eq_ringKrullDim U hU] + exact (_root_.OAI.Algebra.RingTheory.SmoothKrullDimension.RingHom.IsStandardSmoothOfRelativeDimension.ringKrullDim_eq_complex (_root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.algebraMap_isStandardSmoothOfRelativeDimension + (d := d) (Over.mk f) hsmooth)) + rw [← hUdim, ← _root_.OAI.AlgebraicGeometry.Cycle.ComponentDimension.Scheme.topologicalKrullDim_eq_orderKrullDim U.toScheme, + ← _root_.OAI.AlgebraicGeometry.Cycle.ComponentDimension.Scheme.topologicalKrullDim_eq_orderKrullDim X] exact U.ι.isOpenEmbedding.isInducing.topologicalKrullDim_le /-- The pointwise dimension formula holds at every closed point of an integral smooth complex @@ -112,19 +119,23 @@ lemma SmoothOfRelativeDimension.height_add_coheight_eq_of_isClosed [IsIntegral X exact (Set.mem_singleton_iff.mp hy').ge have hheight : Order.height x = 0 := Order.IsMin.height_eq_zero hmin obtain ⟨U, hU, hxU, hsmooth⟩ := - SmoothOfRelativeDimension.exists_affine_isStandardSmoothOfRelativeDimension + _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.SmoothOfRelativeDimension.exists_affine_isStandardSmoothOfRelativeDimension (d := d) f x let y : U.toScheme := ⟨x, hxU⟩ let P : Ideal Γ(X, U) := (hU.primeIdealOf y).asIdeal let : P.IsMaximal := hU.primeIdealOf_isMaximal_of_isClosed y hx have hP : P.height = d := - (algebraMap_isStandardSmoothOfRelativeDimension - (d := d) (Over.mk f) hsmooth).height_eq_of_isMaximal P + (_root_.OAI.AlgebraicGeometry.Smooth.PointwiseDimension.RingHom.IsStandardSmoothOfRelativeDimension.height_eq_of_isMaximal (_root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.algebraMap_isStandardSmoothOfRelativeDimension + (d := d) (Over.mk f) hsmooth)) P have hcoheight : Order.coheight x = d := by calc Order.coheight x = Order.coheight y := coheight_eq_of_isOpenImmersion (x := y) U.ι - _ = P.height := (hU.primeIdealOf_height_eq_coheight y).symm + _ = P.height := ((_root_.OAI.AlgebraicGeometry.Smooth.PointwiseDimension.IsAffineOpen.primeIdealOf_height_eq_coheight hU) y).symm _ = d := hP rw [hheight, hcoheight, zero_add] -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Smooth.PointwiseDimension diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/SingularLocusDimension.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/SingularLocusDimension.lean index 858c3ca26d..499d7d4e5d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/SingularLocusDimension.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Smooth/SingularLocusDimension.lean @@ -1,18 +1,23 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.Topology.Dimension.ClosedSubset -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Stratification.Basic -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.NormalGeometry -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Equidimensional +import HodgeConjecture.Lemmas.Topology.Dimension.ClosedSubset +import HodgeConjecture.Lemmas.AlgebraicGeometry.Stratification.Basic +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.NormalGeometry +import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Equidimensional import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.SmoothCoordinates import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.Dimension import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.Smooth.SingularLocusDimension + +open _root_.AlgebraicGeometry + /-! # The singular locus has smaller algebraic dimension @@ -24,11 +29,11 @@ algebraic dimension throughout. /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section universe u @@ -36,21 +41,21 @@ variable {K : Type u} [Field K] {X : Scheme.{u}} (f : X ⟶ Spec (.of K)) [LocallyOfFiniteType f] /-- The singular locus equipped with its reduced closed-subscheme structure. -/ -def reducedSingularLocus : Scheme := reducedClosedSubscheme (singularLocusClosed f) +def reducedSingularLocus : Scheme := _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSubscheme (_root_.OAI.AlgebraicGeometry.Stratification.Basic.singularLocusClosed f) /-- Its canonical closed immersion in the original scheme. -/ def reducedSingularLocusι : reducedSingularLocus f ⟶ X := - reducedClosedSubschemeι (singularLocusClosed f) + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSubschemeι (_root_.OAI.AlgebraicGeometry.Stratification.Basic.singularLocusClosed f) instance reducedSingularLocus_isReduced : IsReduced (reducedSingularLocus f) := - inferInstanceAs (IsReduced (reducedClosedSubscheme (singularLocusClosed f))) + inferInstanceAs (IsReduced (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSubscheme (_root_.OAI.AlgebraicGeometry.Stratification.Basic.singularLocusClosed f))) instance reducedSingularLocusι_isClosedImmersion : IsClosedImmersion (reducedSingularLocusι f) := - inferInstanceAs (IsClosedImmersion (reducedClosedSubschemeι (singularLocusClosed f))) + inferInstanceAs (IsClosedImmersion (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSubschemeι (_root_.OAI.AlgebraicGeometry.Stratification.Basic.singularLocusClosed f))) variable (Y : Over (Spec ↧ℂ)) - [IsIntegral Y.left] [Smooth Y.hom] [IsProjective Y.hom] + [IsIntegral Y.left] [Smooth Y.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective Y.hom] /-- Let `X` be a smooth integral projective scheme over `ℂ`, and let `Z` be the reduced closure of a scheme point `x ∈ X`. Starting with the singular locus of `Z`, repeatedly take the singular @@ -58,20 +63,20 @@ locus of the reduced closed subscheme to obtain descending closed subsets `S_k`. list records those successive closed subsets until the empty set is reached. Each difference between consecutive terms, with its induced reduced structure, is smooth over `ℂ`. -/ def cycleComponentSingularStratification (x : Y.left) : - List (Closeds (cycleComponent Y.left x)) := - letI := cycleComponent_isNoetherian Y x - reducedSmoothStratification (cycleComponentι Y.left x ≫ Y.hom) - (singularLocusClosed (cycleComponentι Y.left x ≫ Y.hom)) + List (Closeds (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponent Y.left x)) := + letI := _root_.OAI.AlgebraicGeometry.Cycle.SupportEq.cycleComponent_isNoetherian Y x + _root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedSmoothStratification (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι Y.left x ≫ Y.hom) + (_root_.OAI.AlgebraicGeometry.Stratification.Basic.singularLocusClosed (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι Y.left x ≫ Y.hom)) -end AlgebraicGeometry +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section universe u @@ -80,14 +85,14 @@ variable {K : Type u} [Field K] {X : Scheme.{u}} @[simp] theorem range_reducedSingularLocusι : Set.range (reducedSingularLocusι f) = (f.smoothLocus : Set X)ᶜ := - range_reducedClosedSubschemeι _ + _root_.OAI.AlgebraicGeometry.Stratification.BasicLe.range_reducedClosedSubschemeι _ /-- Generic smoothness makes the singular locus proper. -/ theorem singularLocusClosed_ne_top [PerfectField K] [IsReduced X] [Nonempty X] : - singularLocusClosed f ≠ ⊤ := by + _root_.OAI.AlgebraicGeometry.Stratification.Basic.singularLocusClosed f ≠ ⊤ := by obtain ⟨x, hx⟩ := f.dense_smoothLocus_of_perfectField.nonempty intro he - have : x ∈ singularLocusClosed f := by rw [he]; trivial + have : x ∈ _root_.OAI.AlgebraicGeometry.Stratification.Basic.singularLocusClosed f := by rw [he]; trivial exact this hx /-- The algebraic dimension drops strictly across the singular locus of a reduced @@ -95,38 +100,38 @@ irreducible scheme. -/ theorem topologicalKrullDim_reducedSingularLocus_lt [PerfectField K] [IsIntegral X] {n : ℕ} (hdim : topologicalKrullDim X ≤ n) : topologicalKrullDim (reducedSingularLocus f) < n := - topologicalKrullDim_lt_of_isClosed_of_ne_univ (singularLocusClosed f).isClosed + _root_.OAI.Topology.Dimension.ClosedSubset.topologicalKrullDim_lt_of_isClosed_of_ne_univ (_root_.OAI.AlgebraicGeometry.Stratification.Basic.singularLocusClosed f).isClosed (fun he => singularLocusClosed_ne_top f (SetLike.coe_injective he)) hdim /-- Each smooth piece has dimension at most that of any containing closed set. -/ theorem topologicalKrullDim_reducedClosedSmoothPiece_le {S T : Closeds X} (hTS : T ≤ S) : - topologicalKrullDim (reducedClosedSmoothPiece f T) ≤ topologicalKrullDim S := by + topologicalKrullDim (_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSmoothPiece f T) ≤ topologicalKrullDim S := by calc - _ ≤ topologicalKrullDim (reducedClosedSubscheme T) := - (reducedClosedStructureMap f T).smoothLocus.ι.isOpenEmbedding.isInducing.topologicalKrullDim_le + _ ≤ topologicalKrullDim (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSubscheme T) := + (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedStructureMap f T).smoothLocus.ι.isOpenEmbedding.isInducing.topologicalKrullDim_le _ ≤ topologicalKrullDim S := (IsEmbedding.inclusion hTS).isInducing.topologicalKrullDim_le /-- On a smooth complex scheme of algebraic dimension below `m`, every point has a standard-smooth affine neighborhood of some relative dimension below `m`. -/ -theorem Smooth.exists_affine_relativeDimension_lt_of_topologicalKrullDim_lt +theorem exists_affine_relativeDimension_lt_of_topologicalKrullDim_lt {Z : Scheme} (g : Z ⟶ Spec ↧ℂ) [Smooth g] {m : ℕ} (hdim : topologicalKrullDim Z < m) (z : Z) : ∃ (U : Z.Opens) (_ : IsAffineOpen U), z ∈ U ∧ ∃ n : ℕ, n < m ∧ (g.appLE ⊤ U (by simp)).hom.IsStandardSmoothOfRelativeDimension n := by - obtain ⟨U, hU, hzU, hs⟩ := Smooth.exists_affine_isStandardSmooth g z - obtain ⟨n, hn⟩ := RingHom.IsStandardSmooth.exists_isStandardSmoothOfRelativeDimension hs + obtain ⟨U, hU, hzU, hs⟩ := _root_.OAI.AlgebraicGeometry.ComplexPoint.SmoothCoordinates.Smooth.exists_affine_isStandardSmooth g z + obtain ⟨n, hn⟩ := _root_.OAI.AlgebraicGeometry.Smooth.Equidimensional.RingHom.IsStandardSmooth.exists_isStandardSmoothOfRelativeDimension hs have : Nonempty U := ⟨⟨z, hzU⟩⟩ have hdimU : topologicalKrullDim U = n := by - rw [Scheme.topologicalKrullDim_eq_orderKrullDim U.toScheme] - exact orderKrullDim_eq_of_isStandardSmoothOfRelativeDimension g hU hn + rw [_root_.OAI.AlgebraicGeometry.Cycle.ComponentDimension.Scheme.topologicalKrullDim_eq_orderKrullDim U.toScheme] + exact _root_.OAI.AlgebraicGeometry.Smooth.Equidimensional.orderKrullDim_eq_of_isStandardSmoothOfRelativeDimension g hU hn have hlt := U.ι.isOpenEmbedding.isInducing.topologicalKrullDim_le.trans_lt hdim rw [hdimU] at hlt exact ⟨U, hU, hzU, n, by exact_mod_cast hlt, hn⟩ variable (Y : Over (Spec ↧ℂ)) - [IsIntegral Y.left] [Smooth Y.hom] [IsProjective Y.hom] + [IsIntegral Y.left] [Smooth Y.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective Y.hom] /-- For a codimension-`p` component of a smooth projective complex `d`-fold, the reduced singular locus has algebraic dimension strictly less than `d - p`. -/ @@ -134,8 +139,12 @@ theorem topologicalKrullDim_cycleComponent_singularLocus_lt (x : Y.left) {d p : ℕ} [SmoothOfRelativeDimension d Y.hom] (hx : Order.coheight x = p) : topologicalKrullDim - (reducedSingularLocus (cycleComponentι Y.left x ≫ Y.hom)) < (d - p : ℕ) := + (reducedSingularLocus (_root_.OAI.AlgebraicGeometry.Cycle.Support.cycleComponentι Y.left x ≫ Y.hom)) < (d - p : ℕ) := topologicalKrullDim_reducedSingularLocus_lt _ - (topologicalKrullDim_cycleComponent_le_sub Y x hx) + (_root_.OAI.AlgebraicGeometry.Cycle.ComponentNormal.topologicalKrullDim_cycleComponent_le_sub Y x hx) + +end + +end -end AlgebraicGeometry +end OAI.AlgebraicGeometry.Smooth.SingularLocusDimension diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/Analytification.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/Analytification.lean index e1b2bc7070..a0a3efacf4 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/Analytification.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/Analytification.lean @@ -1,15 +1,20 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.Stratification.Analytification +import HodgeConjecture.Definitions.AlgebraicGeometry.Stratification.Analytification import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation import Mathlib.AlgebraicGeometry.AlgClosed.Basic import Mathlib.Analysis.Complex.Polynomial.Basic +namespace OAI.AlgebraicGeometry.Stratification.AnalytificationIs + +open _root_.AlgebraicGeometry + /-! # Complex points of the smooth decomposition @@ -19,51 +24,54 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X : Over (Spec ↧ℂ)) {Y : Over (Spec ↧ℂ)} variable [LocallyOfFiniteType X.hom] [NoetherianSpace X.left] /-- The inclusion of a reduced smooth stratum, bundled over the complex base. -/ -def reducedClosedSmoothPieceMap (T : Closeds X.left) : - Over.mk (reducedClosedSmoothPieceι X.hom T ≫ X.hom) ⟶ X := - Over.homMk (reducedClosedSmoothPieceι X.hom T) rfl +def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.reducedClosedSmoothPieceMap (T : Closeds X.left) : + Over.mk (_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSmoothPieceι X.hom T ≫ X.hom) ⟶ X := + Over.homMk (_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSmoothPieceι X.hom T) rfl -instance reducedClosedSmoothPieceMap_isImmersion (T : Closeds X.left) : - IsImmersion (reducedClosedSmoothPieceMap X T).left := by - change IsImmersion (reducedClosedSmoothPieceι X.hom T) +instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.reducedClosedSmoothPieceMap_isImmersion (T : Closeds X.left) : + IsImmersion (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.reducedClosedSmoothPieceMap X T).left := by + change IsImmersion (_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSmoothPieceι X.hom T) infer_instance -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint variable (X : Over (Spec ↧ℂ)) {Y : Over (Spec ↧ℂ)} /-- Forgetting a complex point to its underlying Zariski point is continuous for the analytic topology. -/ -theorem continuous_underlying_to_zariski : - Continuous (Point.underlying : ComplexPoint X → X.left) := by +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.continuous_underlying_to_zariski : + Continuous (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X → X.left) := by rw [continuous_def] - exact fun S hS => Point.isOpen_overOpen ⟨S, hS⟩ + exact fun S hS => _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.isOpen_overOpen ⟨S, hS⟩ /-- The complex points of a locally closed subscheme map onto exactly the complex points whose underlying scheme point belongs to its range. -/ -theorem range_map_of_isImmersion (i : Y ⟶ X) +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.range_map_of_isImmersion (i : Y ⟶ X) [IsImmersion i.left] [LocallyOfFiniteType X.hom] [LocallyOfFiniteType Y.hom] : - Set.range (Point.map i) = - (Point.underlying : ComplexPoint X → X.left) ⁻¹' Set.range i.left := by + Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) = + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.underlying : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X → X.left) ⁻¹' Set.range i.left := by ext z constructor · rintro ⟨w, rfl⟩ @@ -78,11 +86,11 @@ theorem range_map_of_isImmersion (i : Y ⟶ X) exact i.left.isEmbedding.injective.eq_iff rwa [he] at h let p := (pointEquivClosedPoint Y.hom).symm ⟨y, hyclosed⟩ - let w : ComplexPoint Y := Over.homMk p.1 p.2 + let w : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint Y := Over.homMk p.1 p.2 refine ⟨w, ?_⟩ apply Over.OverMorphism.ext have heq : - (⟨(Point.map i w).left, (Point.map i w).w⟩ : + (⟨(_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i w).left, (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i w).w⟩ : {q : Spec ↧ℂ ⟶ X.left // q ≫ X.hom = 𝟙 _}) = ⟨z.left, z.w⟩ := by apply (pointEquivClosedPoint X.hom).injective apply Subtype.ext @@ -94,4 +102,9 @@ theorem range_map_of_isImmersion (i : Y ⟶ X) exact hy exact congrArg Subtype.val heq -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Stratification.AnalytificationIs diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/Basic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/Basic.lean index bc2b0da749..c8ebf41df9 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/Basic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/Basic.lean @@ -1,14 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.Stratification.Basic -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Locus -public import Mathlib.AlgebraicGeometry.Morphisms.Immersion -public import Mathlib.AlgebraicGeometry.Morphisms.ClosedImmersion -public import Mathlib.AlgebraicGeometry.IdealSheaf.Subscheme +import HodgeConjecture.Definitions.AlgebraicGeometry.Stratification.Basic +import HodgeConjecture.Lemmas.AlgebraicGeometry.Smooth.Locus +import Mathlib.AlgebraicGeometry.Morphisms.Immersion +import Mathlib.AlgebraicGeometry.Morphisms.ClosedImmersion +import Mathlib.AlgebraicGeometry.IdealSheaf.Subscheme + +namespace OAI.AlgebraicGeometry.Stratification.BasicLe + +open _root_.AlgebraicGeometry /-! # A finite smooth decomposition of reduced closed subschemes @@ -19,24 +24,24 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section -open CategoryTheory Topology TopologicalSpace -namespace AlgebraicGeometry +noncomputable section +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace +section universe u variable {X : Scheme.{u}} @[simp] lemma range_reducedClosedSubschemeι (S : Closeds X) : - Set.range (reducedClosedSubschemeι S) = (S : Set X) := + Set.range (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSubschemeι S) = (S : Set X) := Scheme.IdealSheafData.range_subschemeι _ -end AlgebraicGeometry +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section universe u @@ -46,48 +51,48 @@ variable {K : Type u} [Field K] (f : X ⟶ Spec (.of K)) [LocallyOfFiniteType f] lemma reducedClosedSingularRemainder_le (S : Closeds X) : - reducedClosedSingularRemainder f S ≤ S := by + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSingularRemainder f S ≤ S := by rintro _ ⟨x, _, rfl⟩ exact (range_reducedClosedSubschemeι S).le ⟨x, rfl⟩ lemma reducedClosedSingularRemainder_lt [PerfectField K] (S : Closeds X) (hS : S ≠ ⊥) : - reducedClosedSingularRemainder f S < S := by + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSingularRemainder f S < S := by refine lt_of_le_of_ne (reducedClosedSingularRemainder_le f S) ?_ - have hne : Nonempty (reducedClosedSubscheme S) := by + have hne : Nonempty (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSubscheme S) := by obtain ⟨x, hx⟩ := Closeds.coe_nonempty.mpr hS obtain ⟨y, _⟩ := (range_reducedClosedSubschemeι S).ge hx exact ⟨y⟩ obtain ⟨x, hx⟩ := - (reducedClosedStructureMap f S).dense_smoothLocus_of_perfectField.nonempty + (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedStructureMap f S).dense_smoothLocus_of_perfectField.nonempty intro h - have hmem : reducedClosedSubschemeι S x ∈ reducedClosedSingularRemainder f S := by + have hmem : _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSubschemeι S x ∈ _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSingularRemainder f S := by rw [h] exact (range_reducedClosedSubschemeι S).le ⟨x, rfl⟩ obtain ⟨y, hy, hxy⟩ := hmem - exact hy ((reducedClosedSubschemeι S).isClosedEmbedding.injective hxy ▸ hx) + exact hy ((_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSubschemeι S).isClosedEmbedding.injective hxy ▸ hx) /-- The smooth piece removed from a closed subset at one step. -/ def reducedClosedSmoothPiece (S : Closeds X) : Scheme := - (reducedClosedStructureMap f S).smoothLocus + (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedStructureMap f S).smoothLocus /-- This piece is locally closed in the original ambient scheme. -/ def reducedClosedSmoothPieceι (S : Closeds X) : reducedClosedSmoothPiece f S ⟶ X := - (reducedClosedStructureMap f S).smoothLocus.ι ≫ reducedClosedSubschemeι S + (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedStructureMap f S).smoothLocus.ι ≫ _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSubschemeι S set_option backward.isDefEq.respectTransparency false in instance reducedClosedSmoothPieceι_isImmersion (S : Closeds X) : IsImmersion (reducedClosedSmoothPieceι f S) := by change IsImmersion - ((reducedClosedStructureMap f S).smoothLocus.ι ≫ reducedClosedSubschemeι S) + ((_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedStructureMap f S).smoothLocus.ι ≫ _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSubschemeι S) infer_instance instance reducedClosedSmoothPiece_smooth (S : Closeds X) : Smooth (reducedClosedSmoothPieceι f S ≫ f) := by - change Smooth ((reducedClosedStructureMap f S).smoothLocus.ι ≫ - reducedClosedSubschemeι S ≫ f) - exact (reducedClosedStructureMap f S).smooth_restrict_smoothLocus + change Smooth ((_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedStructureMap f S).smoothLocus.ι ≫ + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSubschemeι S ≫ f) + exact (_root_.OAI.AlgebraicGeometry.Smooth.Locus.Scheme.Hom.smooth_restrict_smoothLocus (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedStructureMap f S)) -attribute [local instance] reducedSmoothStratificationWellFoundedRelation +attribute [local instance] _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothStratificationWellFoundedRelation open scoped Classical in /-- The finite, explicitly recursive sequence of nonempty closed remainders. The actual @@ -95,21 +100,21 @@ smooth strata are `reducedClosedSmoothPiece f S` for the members of this list. - def reducedSmoothStratification [PerfectField K] [NoetherianSpace X] (S : Closeds X) : List (Closeds X) := if S = ⊥ then [] - else S :: reducedSmoothStratification (reducedClosedSingularRemainder f S) + else S :: reducedSmoothStratification (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSingularRemainder f S) termination_by S decreasing_by apply reducedClosedSingularRemainder_lt f S assumption -end AlgebraicGeometry +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section universe u @@ -120,18 +125,22 @@ variable {K : Type u} [Field K] lemma reducedClosedSmoothPiece_range (S : Closeds X) : Set.range (reducedClosedSmoothPieceι f S) = - (S : Set X) \ (reducedClosedSingularRemainder f S : Set X) := by + (S : Set X) \ (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSingularRemainder f S : Set X) := by ext x constructor · rintro ⟨y, rfl⟩ refine ⟨(range_reducedClosedSubschemeι S).le ⟨y.1, rfl⟩, ?_⟩ rintro ⟨z, hz, he⟩ - exact hz ((reducedClosedSubschemeι S).isClosedEmbedding.injective he ▸ y.2) + exact hz ((_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSubschemeι S).isClosedEmbedding.injective he ▸ y.2) · rintro ⟨hx, hnot⟩ obtain ⟨y, rfl⟩ := (range_reducedClosedSubschemeι S).ge hx - have hy : y ∈ (reducedClosedStructureMap f S).smoothLocus := by + have hy : y ∈ (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedStructureMap f S).smoothLocus := by by_contra hn exact hnot ⟨y, hn, rfl⟩ exact ⟨⟨y, hy⟩, rfl⟩ -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Stratification.BasicLe diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/ClosedFiltration.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/ClosedFiltration.lean index b241c7691b..f4cb27d634 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/ClosedFiltration.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/ClosedFiltration.lean @@ -1,10 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Stratification.Basic +import HodgeConjecture.Lemmas.AlgebraicGeometry.Stratification.Basic + +namespace OAI.AlgebraicGeometry.Stratification.ClosedFiltration + +open _root_.AlgebraicGeometry /-! # The canonical smooth decomposition as a closed filtration @@ -13,11 +18,11 @@ The filtration is antitone, consecutive closed supports differ by the actual smo and it is empty at the length of the existing finite list and thereafter. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology TopologicalSpace +open _root_.CategoryTheory _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry +section universe u @@ -25,63 +30,67 @@ variable {K : Type u} [Field K] {X : Scheme.{u}} (f : X ⟶ Spec (.of K)) [LocallyOfFiniteType f] @[simp] theorem reducedSmoothClosedFiltration_zero (S : Closeds X) : - reducedSmoothClosedFiltration f S 0 = S := rfl + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f S 0 = S := rfl @[simp] theorem reducedSmoothClosedFiltration_succ (S : Closeds X) (k : ℕ) : - reducedSmoothClosedFiltration f S (k + 1) = - reducedClosedSingularRemainder f (reducedSmoothClosedFiltration f S k) := rfl + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f S (k + 1) = + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSingularRemainder f (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f S k) := rfl theorem reducedSmoothClosedFiltration_succ_start (S : Closeds X) (k : ℕ) : - reducedSmoothClosedFiltration f S (k + 1) = - reducedSmoothClosedFiltration f (reducedClosedSingularRemainder f S) k := by + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f S (k + 1) = + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSingularRemainder f S) k := by induction k with | zero => rfl | succ k ih => rw [reducedSmoothClosedFiltration_succ, ih, reducedSmoothClosedFiltration_succ] @[simp] theorem reducedClosedSingularRemainder_bot : - reducedClosedSingularRemainder f ⊥ = ⊥ := - le_bot_iff.mp (reducedClosedSingularRemainder_le f ⊥) + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSingularRemainder f ⊥ = ⊥ := + le_bot_iff.mp (_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSingularRemainder_le f ⊥) @[simp] theorem reducedSmoothClosedFiltration_bot (k : ℕ) : - reducedSmoothClosedFiltration f ⊥ k = ⊥ := by + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f ⊥ k = ⊥ := by induction k with | zero => rfl | succ k ih => rw [reducedSmoothClosedFiltration_succ, ih, reducedClosedSingularRemainder_bot] theorem reducedSmoothClosedFiltration_succ_le (S : Closeds X) (k : ℕ) : - reducedSmoothClosedFiltration f S (k + 1) ≤ reducedSmoothClosedFiltration f S k := - reducedClosedSingularRemainder_le f _ + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f S (k + 1) ≤ _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f S k := + _root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSingularRemainder_le f _ theorem reducedSmoothClosedFiltration_antitone (S : Closeds X) : - Antitone (reducedSmoothClosedFiltration f S) := + Antitone (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f S) := antitone_nat_of_succ_le (reducedSmoothClosedFiltration_succ_le f S) theorem reducedSmoothClosedFiltration_le (S : Closeds X) (k : ℕ) : - reducedSmoothClosedFiltration f S k ≤ S := + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f S k ≤ S := reducedSmoothClosedFiltration_antitone f S (Nat.zero_le k) /-- Each successive layer is the range of the smooth locally closed immersion. -/ theorem reducedSmoothClosedFiltration_layer (S : Closeds X) (k : ℕ) : - Set.range (reducedClosedSmoothPieceι f (reducedSmoothClosedFiltration f S k)) = - (reducedSmoothClosedFiltration f S k : Set X) \ - (reducedSmoothClosedFiltration f S (k + 1) : Set X) := - reducedClosedSmoothPiece_range f _ + Set.range (_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSmoothPieceι f (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f S k)) = + (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f S k : Set X) \ + (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f S (k + 1) : Set X) := + _root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSmoothPiece_range f _ variable [PerfectField K] [NoetherianSpace X] /-- The terminal index is the length of the finite list. -/ theorem reducedSmoothClosedFiltration_length (S : Closeds X) : - reducedSmoothClosedFiltration f S (reducedSmoothStratification f S).length = ⊥ := by + _root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedSmoothClosedFiltration f S (_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedSmoothStratification f S).length = ⊥ := by induction S using (wellFounded_lt (α := Closeds X)).induction with | h S ih => by_cases hS : S = ⊥ · subst S exact reducedSmoothClosedFiltration_bot f _ - · have hlen : (reducedSmoothStratification f S).length = - (reducedSmoothStratification f (reducedClosedSingularRemainder f S)).length + 1 := by - rw [reducedSmoothStratification, ite_eq_right hS, List.length_cons] + · have hlen : (_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedSmoothStratification f S).length = + (_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedSmoothStratification f (_root_.OAI.AlgebraicGeometry.Stratification.Basic.reducedClosedSingularRemainder f S)).length + 1 := by + rw [_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedSmoothStratification, ite_eq_right hS, List.length_cons] rw [hlen, reducedSmoothClosedFiltration_succ_start] - exact ih _ (reducedClosedSingularRemainder_lt f S hS) + exact ih _ (_root_.OAI.AlgebraicGeometry.Stratification.BasicLe.reducedClosedSingularRemainder_lt f S hS) + +end + +end -end AlgebraicGeometry +end OAI.AlgebraicGeometry.Stratification.ClosedFiltration diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/LocalSupportVanishing.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/LocalSupportVanishing.lean index 314ba62a3a..c9c6a6f525 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/LocalSupportVanishing.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicGeometry/Stratification/LocalSupportVanishing.lean @@ -1,15 +1,20 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.SingularClosedFiltration -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.SmoothPair.OpenTransport -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Transport.CohomologySheaf -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenRestrictedVanishing +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Component.SingularClosedFiltration +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.SmoothPair.OpenTransport +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cycle.Transport.CohomologySheaf +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenRestrictedVanishing + +namespace OAI.AlgebraicGeometry.Stratification.LocalSupportVanishing + +open _root_.AlgebraicGeometry /-! # Local support vanishing on canonical singular-filtration layers @@ -22,66 +27,67 @@ fixed supported injective resolution. The local lower vanishing follows from tho and the dimension bounds. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits Topology TopologicalSpace +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.Topology _root_.TopologicalSpace -namespace AlgebraicGeometry.ComplexPoint +section +namespace ComplexPoint -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable (X : Over (Spec ↧ℂ)) - [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] (x : X.left) + [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (x : X.left) {p : ℕ} (hx : Order.coheight x = p) (k : ℕ) include hx in /-- Every point in the `k`th layer has cofinal ambient neighborhoods whose relative cohomology below degree `2(p+1)` vanishes. -/ -theorem cycleComponentSingularLayer_exists_relativeCohomology_vanishing - (y : ComplexPoint X) - (hy : y ∈ cycleComponentSingularAnalyticClosedFiltration X x k) - (hyNext : y ∉ cycleComponentSingularAnalyticClosedFiltration X x (k + 1)) - (V : Opens (ComplexPoint X)) (hyV : y ∈ V) : - ∃ W : Opens (ComplexPoint X), W ≤ V ∧ - W ≤ (cycleComponentSingularAnalyticClosedFiltration X x (k + 1)).compl ∧ +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularLayer_exists_relativeCohomology_vanishing + (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k) + (hyNext : y ∉ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x (k + 1)) + (V : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (hyV : y ∈ V) : + ∃ W : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X), W ≤ V ∧ + W ≤ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x (k + 1)).compl ∧ y ∈ W ∧ ∀ n : ℕ, n < 2 * (p + 1) → - IsZero (ModuleCat.of ℚ (RelativeCohomology ℚ - (neighborhoodSupportComplementPair (W : Set (ComplexPoint X)) - (cycleComponentSingularAnalyticClosedFiltration X x k : Set (ComplexPoint X))) n)) := by - obtain ⟨z, rfl⟩ := (cycleComponentSingularAnalyticClosedFiltration_layer X x k).ge ⟨hy, hyNext⟩ - let O := cycleComponentSingularStratumAmbientOpen X x k - let OX := cycleComponentSingularStratumAmbientOpenOver X x k - let Y := cycleComponentSingularFiltrationStratumOver X x k - let i : Y ⟶ OX := cycleComponentSingularStratumClosedLiftOver X x k + IsZero (ModuleCat.of ℚ (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (W : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) n)) := by + obtain ⟨z, rfl⟩ := (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration_layer X x k).ge ⟨hy, hyNext⟩ + let O := _root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularStratumAmbientOpen X x k + let OX := _root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularStratumAmbientOpenOver X x k + let Y := _root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularFiltrationStratumOver X x k + let i : Y ⟶ OX := _root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularStratumClosedLiftOver X x k obtain ⟨A, hA, hzA, m, hm, hcodim, hdim⟩ := - cycleComponentSingularFiltrationStratum_exists_smooth_relativeDimension + _root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularFiltrationStratum_exists_smooth_relativeDimension X x hx k z.underlying - let : SmoothOfRelativeDimension m (openScheme Y A).hom := hdim - let zA := asOpenPoint Y A z hzA - let f := Point.map (openInclusion X O) + let : SmoothOfRelativeDimension m (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openScheme Y A).hom := hdim + let zA := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.asOpenPoint Y A z hzA + let f := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion X O) have hS : f ⁻¹' - (cycleComponentSingularAnalyticClosedFiltration X x k : Set (ComplexPoint X)) = - Set.range (Point.map i) := - (cycleComponentSingularStratumClosedLift_complexPoints_range X x k).symm - have he : f (Point.map (openInclusion Y A ≫ i) zA) = - Point.map (cycleComponentSingularFiltrationStratumOverι X x k) z := by + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) = + Set.range (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map i) := + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularStratumClosedLift_complexPoints_range X x k).symm + have he : f (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion Y A ≫ i) zA) = + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularFiltrationStratumOverι X x k) z := by apply Over.OverMorphism.ext - change (zA.left ≫ (A.ι ≫ cycleComponentSingularStratumClosedLift X x k)) ≫ O.ι = - z.left ≫ cycleComponentSingularFiltrationStratumι X x k - rw [Category.assoc, Category.assoc, cycleComponentSingularStratumClosedLift_ι, + change (zA.left ≫ (A.ι ≫ _root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularStratumClosedLift X x k)) ≫ O.ι = + z.left ≫ _root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularFiltrationStratumι X x k + rw [Category.assoc, Category.assoc, _root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularStratumClosedLift_ι, ← Category.assoc] - exact congrArg (fun g => g ≫ cycleComponentSingularFiltrationStratumι X x k) - (liftToOpen_fac Y A z hzA) - let V' := V ⊓ (cycleComponentSingularAnalyticClosedFiltration X x (k + 1)).compl - have hzV' : f (Point.map (openInclusion Y A ≫ i) zA) ∈ V' := by + exact congrArg (fun g => g ≫ _root_.OAI.AlgebraicGeometry.Cycle.ComponentSingularGe.cycleComponentSingularFiltrationStratumι X x k) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.liftToOpen_fac Y A z hzA) + let V' := V ⊓ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x (k + 1)).compl + have hzV' : f (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.Point.map (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.openInclusion Y A ≫ i) zA) ∈ V' := by rw [he] exact ⟨hyV, hyNext⟩ - have : SmoothOfRelativeDimension (dim X.left) OX.hom := by - change SmoothOfRelativeDimension (dim X.left) (O.ι ≫ X.hom) - simpa only [Nat.zero_add] using smoothOfRelativeDimension_comp 0 (dim X.left) O.ι X.hom - obtain ⟨W, hWV', hzW, hW⟩ := exists_smoothClosedSourceOpenImageNeighborhood - OX Y i m (dim X.left) f (isOpenEmbedding_map_open X O) - (cycleComponentSingularAnalyticClosedFiltration X x k : Set (ComplexPoint X)) + have : SmoothOfRelativeDimension (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) OX.hom := by + change SmoothOfRelativeDimension (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) (O.ι ≫ X.hom) + simpa only [Nat.zero_add] using smoothOfRelativeDimension_comp 0 (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) O.ι X.hom + obtain ⟨W, hWV', hzW, hW⟩ := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.exists_smoothClosedSourceOpenImageNeighborhood + OX Y i m (_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left) f (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.isOpenEmbedding_map_open X O) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) hS A zA V' hzV' exact ⟨W, hWV'.trans inf_le_left, hWV'.trans inf_le_right, he ▸ hzW, fun n hn ↦ hW n (by omega)⟩ @@ -89,64 +95,69 @@ theorem cycleComponentSingularLayer_exists_relativeCohomology_vanishing include hx in /-- The original ambient supported injective complex has cofinally vanishing section cohomology below `2(p+1)` at every point outside the next closed support. -/ -theorem cycleComponentSingularLayer_exists_supportedInjectiveSection_vanishing +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularLayer_exists_supportedInjectiveSection_vanishing (n : ℤ) (hn : n < 2 * ((p : ℤ) + 1)) - (y : ComplexPoint X) - (hyNext : y ∉ cycleComponentSingularAnalyticClosedFiltration X x (k + 1)) - (V : Opens (ComplexPoint X)) (hyV : y ∈ V) : - ∃ W : Opens (ComplexPoint X), W ≤ V ∧ y ∈ W ∧ - IsZero ((((TopCat.Sheaf.supportEvaluation (TopCat.of (ComplexPoint X)) W).mapHomologicalComplex - ℤᵘᵖ).obj (complexSupportInjectiveComplex X - (cycleComponentSingularAnalyticClosedFiltration X x k))).homology n) := by + (y : _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X) + (hyNext : y ∉ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x (k + 1)) + (V : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) (hyV : y ∈ V) : + ∃ W : Opens (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X), W ≤ V ∧ y ∈ W ∧ + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) W).mapHomologicalComplex + ℤᵘᵖ).obj (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k))).homology n) := by by_cases hneg : n < 0 · refine ⟨V, le_rfl, hyV, ?_⟩ apply ShortComplex.isZero_homology_of_isZero_X₂ - exact (TopCat.Sheaf.supportEvaluation (TopCat.of (ComplexPoint X)) V).map_isZero - ((complexSupportInjectiveComplex X - (cycleComponentSingularAnalyticClosedFiltration X x k)).isZero_of_isStrictlyGE 0 n hneg) + exact (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) V).map_isZero + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k)).isZero_of_isStrictlyGE 0 n hneg) · obtain ⟨q, rfl⟩ := Int.eq_ofNat_of_zero_le (le_of_not_gt hneg) - by_cases hy : y ∈ cycleComponentSingularAnalyticClosedFiltration X x k + by_cases hy : y ∈ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k · obtain ⟨W, hWV, _, hyW, hW⟩ := - cycleComponentSingularLayer_exists_relativeCohomology_vanishing X x hx k + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularLayer_exists_relativeCohomology_vanishing X x hx k y hy hyNext V hyV refine ⟨W, hWV, hyW, ?_⟩ - let : Subsingleton (RelativeCohomology ℚ - (neighborhoodSupportComplementPair (W : Set (ComplexPoint X)) - (cycleComponentSingularAnalyticClosedFiltration X x k : Set (ComplexPoint X))) q) := + let : Subsingleton (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (W : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k : Set (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X))) q) := ModuleCat.subsingleton_of_isZero (hW q (by exact_mod_cast hn)) - let e := complexSupportInjectiveSectionCohomologyEquiv X - (cycleComponentSingularAnalyticClosedFiltration X x k) W q - let : Subsingleton ((((TopCat.Sheaf.supportEvaluation - (TopCat.of (ComplexPoint X)) W).mapHomologicalComplex ℤᵘᵖ).obj - (complexSupportInjectiveComplex X - (cycleComponentSingularAnalyticClosedFiltration X x k))).homology (q : ℤ)) := + let e := _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveSectionCohomologyEquiv X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k) W q + let : Subsingleton ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) W).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k))).homology (q : ℤ)) := e.injective.subsingleton exact AddCommGrpCat.isZero_of_subsingleton _ - · let W := V ⊓ (cycleComponentSingularAnalyticClosedFiltration X x k).compl + · let W := V ⊓ (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k).compl refine ⟨W, inf_le_left, ⟨hyV, hy⟩, ?_⟩ apply ShortComplex.isZero_homology_of_isZero_X₂ - exact TopCat.Sheaf.supportedOutsideSections_isZero_of_le - (TopCat.of (ComplexPoint X)) - (cycleComponentSingularAnalyticClosedFiltration X x k).compl W - ((ambientRationalInjectiveComplex X).X (q : ℤ)) inf_le_right + exact _root_.OAI.AlgebraicTopology.Support.SectionRestrictionIs.TopCat.Sheaf.supportedOutsideSections_isZero_of_le + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k).compl W + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X).X (q : ℤ)) inf_le_right include hx in /-- The open-layer section complex needed by finite support localization has zero cohomology below `2(p+1)`. The resolution remains the one on the original projective ambient variety. -/ -theorem cycleComponentSingularLayerSectionCohomology_isZero_of_lt +theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularLayerSectionCohomology_isZero_of_lt (n : ℤ) (hn : n < 2 * ((p : ℤ) + 1)) : - IsZero ((((TopCat.Sheaf.supportEvaluation (TopCat.of (ComplexPoint X)) - (cycleComponentSingularAnalyticClosedFiltration X x (k + 1)).compl).mapHomologicalComplex - ℤᵘᵖ).obj (complexSupportInjectiveComplex X - (cycleComponentSingularAnalyticClosedFiltration X x k))).homology n) := by - apply TopCat.Sheaf.sectionCohomology_isZero_of_cofinal_lower_vanishing - (TopCat.of (ComplexPoint X)) _ _ 0 n - · exact fun j ↦ TopCat.Sheaf.sheafSectionsSupportedOutside_isFlasque - (TopCat.of (ComplexPoint X)) - (cycleComponentSingularAnalyticClosedFiltration X x k).compl - ((ambientRationalInjectiveComplex X).X j) + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x (k + 1)).compl).mapHomologicalComplex + ℤᵘᵖ).obj (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexSupportInjectiveComplex X + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k))).homology n) := by + apply _root_.OAI.AlgebraicTopology.Sheaf.OpenRestrictedVanishing.TopCat.sectionCohomology_isZero_of_cofinal_lower_vanishing + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) _ _ 0 n + · exact fun j ↦ _root_.OAI.AlgebraicTopology.Support.FlasqueSections.TopCat.Sheaf.sheafSectionsSupportedOutside_isFlasque + (TopCat.of (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint X)) + (_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x k).compl + ((_root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.ambientRationalInjectiveComplex X).X j) · exact fun j hj y hy V hyV ↦ - cycleComponentSingularLayer_exists_supportedInjectiveSection_vanishing + _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularLayer_exists_supportedInjectiveSection_vanishing X x hx k j (hj.trans_lt hn) y hy V hyV -end AlgebraicGeometry.ComplexPoint +end ComplexPoint +end + +end + +end OAI.AlgebraicGeometry.Stratification.LocalSupportVanishing diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/CenteredComplexOrientation.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/CenteredComplexOrientation.lean index 4a69403500..4ec1ac8ffd 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/CenteredComplexOrientation.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/CenteredComplexOrientation.lean @@ -12,14 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FundamentalClass -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.ChainStalk -public import Mathlib.Analysis.Normed.Module.Convex -public import HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.ComplexClass -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FundamentalClass +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.ChainStalk +import Mathlib.Analysis.Normed.Module.Convex +import HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.ComplexClass +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance + +namespace OAI.AlgebraicTopology.LocalHomology.CenteredComplexOrientation /-! # Moving the center of a complex-coordinate embedding @@ -33,19 +36,20 @@ at every center. Complex differentiability is used only at the model origin, whe derivative is a positive scalar times the identity. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory +open _root_.CategoryTheory -namespace AlgebraicTopology.Singular +section +namespace Singular variable (d : ℕ) /-- Recenter a continuous injection at a chosen source point. -/ def centeredComplexEmbeddingPair (F : (Fin d → ℂ) → (Fin d → ℂ)) (hF : Continuous F) (hFi : Function.Injective F) (v : Fin d → ℂ) : - puncturedPair ℂ d ⟶ puncturedPair ℂ d := - complexPuncturedPairMapOf d (fun w => F (w + v) - F v) + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ d ⟶ _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ d := + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassDifferentiableInvariance.Singular.complexPuncturedPairMapOf d (fun w => F (w + v) - F v) ((hF.comp (continuous_id.add continuous_const)).sub continuous_const) (fun w hw h => hw (add_right_cancel (show w + v = 0 + v by simpa using hFi (sub_eq_zero.mp h)))) @@ -86,9 +90,9 @@ def centeredComplexEmbeddingPairHomotopy (F : (Fin d → ℂ) → (Fin d → ℂ theorem centeredComplexEmbeddingPair_relativeHomologyMap_eq (F : (Fin d → ℂ) → (Fin d → ℂ)) (hF : Continuous F) (hFi : Function.Injective F) (v : Fin d → ℂ) (n : ℕ) : - relativeHomologyMap ℚ n (centeredComplexEmbeddingPair d F hF hFi v) = - relativeHomologyMap ℚ n (centeredComplexEmbeddingPair d F hF hFi 0) := - ((centeredComplexEmbeddingPairHomotopy d F hF hFi v).congr_relativeHomologyMap n).symm + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ n (centeredComplexEmbeddingPair d F hF hFi v) = + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ n (centeredComplexEmbeddingPair d F hF hFi 0) := + ((_root_.OAI.AlgebraicTopology.Singular.RelativeHomotopyInvariance.TopPair.Homotopy.congr_relativeHomologyMap (centeredComplexEmbeddingPairHomotopy d F hF hFi v)) n).symm /-- Global continuity of the radial coordinate compression. -/ @[fun_prop] @@ -108,10 +112,10 @@ lemma injective_complexUnivBall (c : Fin d → ℂ) (r : ℝ) : local homology class. -/ theorem centeredComplexUnivBall_preserves_standardComplexLocalClass (c : Fin d → ℂ) (r : ℝ) (hr : 0 < r) (v : Fin d → ℂ) : - relativeHomologyMap ℚ (2 * d) + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * d) (centeredComplexEmbeddingPair d (OpenPartialHomeomorph.univBall c r) (continuous_complexUnivBall d c r) (injective_complexUnivBall d c r) v) - (standardComplexLocalClass ℚ d) = standardComplexLocalClass ℚ d := by + (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ d) = _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ d := by rw [centeredComplexEmbeddingPair_relativeHomologyMap_eq] let L : (Fin d → ℂ) →L[ℂ] (Fin d → ℂ) := (r : ℂ) • ContinuousLinearMap.id ℂ (Fin d → ℂ) @@ -120,16 +124,21 @@ theorem centeredComplexUnivBall_preserves_standardComplexLocalClass change (r : ℂ) • w = (r : ℂ) • z at hwz have hr' : (r : ℂ) ≠ 0 := by exact_mod_cast hr.ne' exact (smul_right_injective _ hr') hwz - let A := complexMatrixOfContinuousLinearMap d L - have hA : A.det ≠ 0 := complexMatrixOfContinuousLinearMap_det_ne_zero d L hL + let A := _root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance.Singular.complexMatrixOfContinuousLinearMap d L + have hA : A.det ≠ 0 := _root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance.Singular.complexMatrixOfContinuousLinearMap_det_ne_zero d L hL have hAL : (A.mulVecLin.toContinuousLinearMap : (Fin d → ℂ) →L[ℂ] (Fin d → ℂ)) = L := - ContinuousLinearMap.ext (complexMatrixOfContinuousLinearMap_mulVec d L) - apply relativeHomologyMap_complexDifferentiable_standardComplexLocalClass d A hA + ContinuousLinearMap.ext (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance.Singular.complexMatrixOfContinuousLinearMap_mulVec d L) + apply _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassDifferentiableInvariance.Singular.relativeHomologyMap_complexDifferentiable_standardComplexLocalClass d A hA case hf0 => simp rw [hAL] simpa only [add_zero] using - (hasFDerivAt_univBall_complex d c r hr).sub_const + (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance.Singular.hasFDerivAt_univBall_complex d c r hr).sub_const ((OpenPartialHomeomorph.univBall c r) 0) -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.CenteredComplexOrientation diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ChartFundamentalClass.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ChartFundamentalClass.lean index 00309363f5..c5e2acd326 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ChartFundamentalClass.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ChartFundamentalClass.lean @@ -12,11 +12,14 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.ComplexClass -public import Mathlib.Analysis.Normed.Module.Ball.Homeomorph +import HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.ComplexClass +import Mathlib.Analysis.Normed.Module.Ball.Homeomorph + +namespace OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass /-! # Local fundamental classes from complex charts @@ -32,11 +35,12 @@ chart and a proof that the point lies in its source; no fundamental or orientati as data. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicTopology.Singular +section +namespace Singular variable {M : Type} [TopologicalSpace M] (d : ℕ) @@ -81,4 +85,9 @@ lemma chartModelEmbedding_zero : chartModelEmbedding d e x hx 0 = x := by OpenPartialHomeomorph.univBall_apply_zero] exact e.left_inv hx -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ChartFundamentalClassGenerator.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ChartFundamentalClassGenerator.lean index 81041f1ea1..1930843c92 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ChartFundamentalClassGenerator.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ChartFundamentalClassGenerator.lean @@ -12,14 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativePairExcision +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativePairExcision import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FundamentalClassGenerator import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.PuncturedEuclidean +namespace OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassGenerator + /-! # Generator properties of chart-local fundamental classes @@ -29,31 +32,32 @@ followed by open-neighborhood excision. Consequently the chart map is an isomor transported standard complex local class generates the full ambient local homology group. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicTopology.Singular +section +namespace Singular variable {M : Type} [TopologicalSpace M] variable (d : ℕ) (e : OpenPartialHomeomorph M (Fin d → ℂ)) (x : M) (hx : x ∈ e.source) lemma chartModelEmbedding_range_eq_target : - Set.range (chartModelEmbedding d e x hx) = (chartModelEmbedding d e x hx).target := by - rw [← Set.image_univ, ← chartModelEmbedding_source d e x hx] - exact (chartModelEmbedding d e x hx).image_source_eq_target + Set.range (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding d e x hx) = (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding d e x hx).target := by + rw [← Set.image_univ, ← _root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding_source d e x hx] + exact (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding d e x hx).image_source_eq_target /-- The compressed inverse chart as a homeomorphism onto its open target. -/ def chartModelTargetHomeomorph : - (Fin d → ℂ) ≃ₜ (chartModelEmbedding d e x hx).target := - ((chartModelEmbedding d e x hx).isOpenEmbedding - (chartModelEmbedding_source d e x hx)).isEmbedding.toHomeomorph |>.trans + (Fin d → ℂ) ≃ₜ (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding d e x hx).target := + ((_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding d e x hx).isOpenEmbedding + (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding_source d e x hx)).isEmbedding.toHomeomorph |>.trans (Homeomorph.setCongr (chartModelEmbedding_range_eq_target d e x hx)) @[simp] lemma chartModelTargetHomeomorph_apply_val (y : Fin d → ℂ) : - (chartModelTargetHomeomorph d e x hx y).1 = chartModelEmbedding d e x hx y := + (chartModelTargetHomeomorph d e x hx y).1 = _root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding d e x hx y := rfl variable [T1Space M] @@ -62,23 +66,28 @@ omit [T1Space M] in /-- The oriented standard complex class generates its local homology in every complex dimension. -/ lemma span_standardComplexLocalClass_eq_top_for_chart : - Submodule.span ℚ {standardComplexLocalClass ℚ d} = ⊤ := by + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ d} = ⊤ := by cases d with - | zero => exact span_standardComplexLocalClass_zero_eq_top + | zero => exact _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassGenerator.Singular.span_standardComplexLocalClass_zero_eq_top | succ n => - rw [span_standardComplexLocalClass_eq_top_iff] + rw [_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassGenerator.Singular.span_standardComplexLocalClass_eq_top_iff] have hdeg : (n + 1) * 2 = n * 2 + 2 := by lia rw [hdeg] - exact span_standardLocalClass_add_two_eq_top (n * 2) + exact _root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.span_standardLocalClass_add_two_eq_top (n * 2) /-- The oriented standard complex local class is nonzero in every complex dimension. -/ lemma standardComplexLocalClass_ne_zero_for_chart : - standardComplexLocalClass ℚ d ≠ 0 := by - rw [standardComplexLocalClass_ne_zero_iff] + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ d ≠ 0 := by + rw [_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassGenerator.Singular.standardComplexLocalClass_ne_zero_iff] by_cases hd : d = 0 · subst d - exact standardLocalClass_zero_ne_zero - · exact standardLocalClass_ne_zero_of_pos (d * 2) + exact _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassGenerator.Singular.standardLocalClass_zero_ne_zero + · exact _root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardLocalClass_ne_zero_of_pos (d * 2) (Nat.mul_pos (Nat.pos_of_ne_zero hd) (by norm_num)) -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassGenerator diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ChartFundamentalClassInvariance.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ChartFundamentalClassInvariance.lean index b938481e8c..c64ad2c5a2 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ChartFundamentalClassInvariance.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ChartFundamentalClassInvariance.lean @@ -12,14 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ComplexClassDifferentiableInvariance -public import Mathlib.Analysis.Calculus.FDeriv.Add -public import Mathlib.Analysis.Calculus.FDeriv.Analytic -public import Mathlib.Analysis.Calculus.FDeriv.Comp -public import Mathlib.Analysis.Calculus.FDeriv.Linear +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ComplexClassDifferentiableInvariance +import Mathlib.Analysis.Calculus.FDeriv.Add +import Mathlib.Analysis.Calculus.FDeriv.Analytic +import Mathlib.Analysis.Calculus.FDeriv.Comp +import Mathlib.Analysis.Calculus.FDeriv.Linear + +namespace OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance /-! # Chart-local class invariance under a differentiable transition germ @@ -34,18 +37,19 @@ and proves the factorization through the transition as an equality of maps of to pairs. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology Filter Set Asymptotics +open _root_.CategoryTheory _root_.Topology Filter Set Asymptotics -namespace AlgebraicTopology.Singular +section +namespace Singular variable {M : Type} [TopologicalSpace M] variable (d : ℕ) /-! ## Complex derivatives of the radial chart compression -/ -private lemma hasFDerivAt_univUnitBall_formula_normed : +lemma hasFDerivAt_univUnitBall_formula_normed : HasFDerivAt (fun x : Fin d → ℂ ↦ (√(1 + ‖x‖ ^ 2))⁻¹ • x) (ContinuousLinearMap.id ℂ (Fin d → ℂ)) 0 := by rw [hasFDerivAt_iff_isLittleO, isLittleO_iff] @@ -117,19 +121,24 @@ def compressedChartTransition (e e' : OpenPartialHomeomorph M (Fin d → ℂ)) (x : M) (hx : x ∈ e.source) (hx' : x ∈ e'.source) : OpenPartialHomeomorph (Fin d → ℂ) (Fin d → ℂ) := - (chartModelEmbedding d e x hx).trans (chartModelEmbedding d e' x hx').symm + (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding d e x hx).trans (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding d e' x hx').symm @[simp] lemma compressedChartTransition_zero (e e' : OpenPartialHomeomorph M (Fin d → ℂ)) (x : M) (hx : x ∈ e.source) (hx' : x ∈ e'.source) : compressedChartTransition d e e' x hx hx' 0 = 0 := by - change (chartModelEmbedding d e' x hx').symm - (chartModelEmbedding d e x hx 0) = 0 - have hleft := (chartModelEmbedding d e' x hx').left_inv - (show 0 ∈ (chartModelEmbedding d e' x hx').source by - rw [chartModelEmbedding_source] + change (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding d e' x hx').symm + (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding d e x hx 0) = 0 + have hleft := (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding d e' x hx').left_inv + (show 0 ∈ (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding d e' x hx').source by + rw [_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding_source] trivial) - simpa only [chartModelEmbedding_zero] using hleft + simpa only [_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.chartModelEmbedding_zero] using hleft + +end Singular +end + +end -end AlgebraicTopology.Singular +end OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ComplexClassDifferentiableInvariance.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ComplexClassDifferentiableInvariance.lean index 7ac033a018..fce8db06be 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ComplexClassDifferentiableInvariance.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ComplexClassDifferentiableInvariance.lean @@ -12,12 +12,15 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativePairExcision -public import Mathlib.Analysis.Calculus.FDeriv.Basic +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativePairExcision +import Mathlib.Analysis.Calculus.FDeriv.Basic + +namespace OAI.AlgebraicTopology.LocalHomology.ComplexClassDifferentiableInvariance /-! # Invariance of the complex local class under differentiable coordinate changes @@ -34,11 +37,12 @@ pair: the map has no zero away from the origin. In chart applications this foll injectivity of the coordinate change. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology Filter Asymptotics +open _root_.CategoryTheory _root_.Topology Filter Asymptotics -namespace AlgebraicTopology.Singular +section +namespace Singular variable (d : ℕ) @@ -47,7 +51,7 @@ affine-space pair. -/ def complexPuncturedPairMapOf (f : (Fin d → ℂ) → (Fin d → ℂ)) (hf : Continuous f) (hf_ne : ∀ z, z ≠ 0 → f z ≠ 0) : - puncturedPair ℂ d ⟶ puncturedPair ℂ d := + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ d ⟶ _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ d := TopPair.ofHom (TopCat.ofHom ⟨f, hf⟩) (TopCat.ofHom @@ -64,17 +68,17 @@ lemma complexPuncturedPairMapOf_fst_apply /-- Point excision upgrades a homotopy on any open neighborhood of the distinguished point to equality of the two induced maps on ambient relative homology. -/ theorem relativeHomologyMap_eq_of_neighborhood_pairHomotopy - {Y : TopPair} (n : ℕ) (F G : puncturedPair ℂ d ⟶ Y) + {Y : TopPair} (n : ℕ) (F G : _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ d ⟶ Y) (U : Set (Fin d → ℂ)) (hU : IsOpen U) (h0U : 0 ∈ U) (H : TopPair.Homotopy - (neighborhoodPointComplementPairMap U 0 ≫ F) - (neighborhoodPointComplementPairMap U 0 ≫ G)) : - relativeHomologyMap ℚ n F = relativeHomologyMap ℚ n G := by + (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPairMap U 0 ≫ F) + (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPairMap U 0 ≫ G)) : + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ n F = _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ n G := by ext a - obtain ⟨b, rfl⟩ := neighborhoodPointComplement_relativeHomologyMap_surjective + obtain ⟨b, rfl⟩ := _root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplement_relativeHomologyMap_surjective U 0 hU h0U n a - have h := H.relativeHomologyMap_apply_eq (R := ℚ) n b - simpa only [relativeHomologyMap_comp, LinearMap.comp_apply] using h + have h := (_root_.OAI.AlgebraicTopology.Singular.RelativeHomotopyInvariance.TopPair.Homotopy.relativeHomologyMap_apply_eq (R := ℚ) H) n b + simpa only [_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap_comp, LinearMap.comp_apply] using h /-- The straight line from a differentiable map to its injective derivative avoids zero on a sufficiently small punctured neighborhood. @@ -142,7 +146,7 @@ def complexNeighborhoodPuncturedPairMapOf (U : Set (Fin d → ℂ)) (f : (Fin d → ℂ) → (Fin d → ℂ)) (hf : ContinuousOn f U) (hf_ne : ∀ z, z ∈ U → z ≠ 0 → f z ≠ 0) : - neighborhoodPointComplementPair U 0 ⟶ puncturedPair ℂ d := + _root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPair U 0 ⟶ _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ d := TopPair.ofHom (TopCat.ofHom ⟨fun z ↦ f z.1, hf.domRestrict⟩) (TopCat.ofHom @@ -160,7 +164,7 @@ def complexStraightLineLocalPairHomotopy (hline : ∀ (t : unitInterval) (z : Fin d → ℂ), z ∈ U → z ≠ 0 → A.mulVec z + (((t : ℝ) : ℂ) • (f z - A.mulVec z)) ≠ 0) : TopPair.Homotopy - (neighborhoodPointComplementPairMap U 0 ≫ complexMatrixPuncturedPairMap d A hA) + (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPairMap U 0 ≫ _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Singular.complexMatrixPuncturedPairMap d A hA) (complexNeighborhoodPuncturedPairMapOf d U f hf hf_ne) where fst := { toFun := fun tx ↦ @@ -227,12 +231,12 @@ theorem exists_open_complexDifferentiable_localClass_invariance ∃ (V : Set (Fin d → ℂ)) (hVU : V ⊆ U) (hf_ne : ∀ z, z ∈ V → z ≠ 0 → f z ≠ 0), IsOpen V ∧ 0 ∈ V ∧ - ∀ c : RelativeHomology ℚ (neighborhoodPointComplementPair V 0) (2 * d), - relativeHomologyMap ℚ (2 * d) (neighborhoodPointComplementPairMap V 0) c = - standardComplexLocalClass ℚ d → - relativeHomologyMap ℚ (2 * d) + ∀ c : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPair V 0) (2 * d), + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * d) (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPairMap V 0) c = + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ d → + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * d) (complexNeighborhoodPuncturedPairMapOf d V f (hf.mono hVU) hf_ne) c = - standardComplexLocalClass ℚ d := by + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ d := by let f' : (Fin d → ℂ) →L[ℂ] (Fin d → ℂ) := A.mulVecLin.toContinuousLinearMap have hf'_apply (z : Fin d → ℂ) : f' z = A.mulVec z := rfl @@ -254,21 +258,21 @@ theorem exists_open_complexDifferentiable_localClass_invariance refine ⟨V, Set.inter_subset_left, hf_neV, hV, h0V, ?_⟩ intro c hc let H := complexStraightLineLocalPairHomotopy d A hA V f hfV hf_neV hlineV - have hhom := H.relativeHomologyMap_apply_eq (R := ℚ) (2 * d) c + have hhom := (_root_.OAI.AlgebraicTopology.Singular.RelativeHomotopyInvariance.TopPair.Homotopy.relativeHomologyMap_apply_eq (R := ℚ) H) (2 * d) c calc - relativeHomologyMap ℚ (2 * d) + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * d) (complexNeighborhoodPuncturedPairMapOf d V f hfV hf_neV) c = - relativeHomologyMap ℚ (2 * d) - (neighborhoodPointComplementPairMap V 0 ≫ - complexMatrixPuncturedPairMap d A hA) c := hhom.symm - _ = relativeHomologyMap ℚ (2 * d) (complexMatrixPuncturedPairMap d A hA) - (relativeHomologyMap ℚ (2 * d) (neighborhoodPointComplementPairMap V 0) c) := by - rw [relativeHomologyMap_comp] + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * d) + (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPairMap V 0 ≫ + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Singular.complexMatrixPuncturedPairMap d A hA) c := hhom.symm + _ = _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * d) (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Singular.complexMatrixPuncturedPairMap d A hA) + (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * d) (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPairMap V 0) c) := by + rw [_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap_comp] rfl - _ = relativeHomologyMap ℚ (2 * d) (complexMatrixPuncturedPairMap d A hA) - (standardComplexLocalClass ℚ d) := by rw [hc] - _ = standardComplexLocalClass ℚ d := - relativeHomologyMap_complexMatrix_standardComplexLocalClass d A hA + _ = _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * d) (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Singular.complexMatrixPuncturedPairMap d A hA) + (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ d) := by rw [hc] + _ = _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ d := + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Singular.relativeHomologyMap_complexMatrix_standardComplexLocalClass d A hA /-- A puncture-preserving straight line from an invertible complex-linear map to a nonlinear map gives a homotopy of pair maps after restricting the source to the neighborhood on which the @@ -281,9 +285,9 @@ def complexStraightLineNeighborhoodPairHomotopy (hline : ∀ (t : unitInterval) (z : Fin d → ℂ), z ∈ U → z ≠ 0 → A.mulVec z + (((t : ℝ) : ℂ) • (f z - A.mulVec z)) ≠ 0) : TopPair.Homotopy - (neighborhoodPointComplementPairMap U 0 ≫ - complexMatrixPuncturedPairMap d A hA) - (neighborhoodPointComplementPairMap U 0 ≫ + (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPairMap U 0 ≫ + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Singular.complexMatrixPuncturedPairMap d A hA) + (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPairMap U 0 ≫ complexPuncturedPairMapOf d f hf hf_ne) where fst := { toFun := fun tx ↦ @@ -327,9 +331,9 @@ theorem relativeHomologyMap_complexDifferentiable_standardComplexLocalClass (hf0 : f 0 = 0) (hf_ne : ∀ z, z ≠ 0 → f z ≠ 0) (hf' : HasFDerivAt f (A.mulVecLin.toContinuousLinearMap : (Fin d → ℂ) →L[ℂ] (Fin d → ℂ)) 0) : - relativeHomologyMap ℚ (2 * d) (complexPuncturedPairMapOf d f hf hf_ne) - (standardComplexLocalClass ℚ d) = - standardComplexLocalClass ℚ d := by + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * d) (complexPuncturedPairMapOf d f hf hf_ne) + (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ d) = + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ d := by let f' : (Fin d → ℂ) →L[ℂ] (Fin d → ℂ) := A.mulVecLin.toContinuousLinearMap have hf'_apply (z : Fin d → ℂ) : f' z = A.mulVec z := rfl @@ -342,9 +346,14 @@ theorem relativeHomologyMap_complexDifferentiable_standardComplexLocalClass simpa only [hf'_apply] using hline let H := complexStraightLineNeighborhoodPairHomotopy d A hA f hf hf_ne U hline' have hmaps := relativeHomologyMap_eq_of_neighborhood_pairHomotopy d (2 * d) - (complexMatrixPuncturedPairMap d A hA) + (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Singular.complexMatrixPuncturedPairMap d A hA) (complexPuncturedPairMapOf d f hf hf_ne) U hU h0U H rw [← hmaps] - exact relativeHomologyMap_complexMatrix_standardComplexLocalClass d A hA + exact _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Singular.relativeHomologyMap_complexMatrix_standardComplexLocalClass d A hA + +end Singular +end + +end -end AlgebraicTopology.Singular +end OAI.AlgebraicTopology.LocalHomology.ComplexClassDifferentiableInvariance diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ComplexClassLinearInvariance.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ComplexClassLinearInvariance.lean index 2e2d0b205d..013f9bca89 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ComplexClassLinearInvariance.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/ComplexClassLinearInvariance.lean @@ -12,15 +12,20 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeHomotopyInvariance -public import HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.ComplexClass -public import Mathlib.Analysis.Complex.Exponential -public import Mathlib.Analysis.SpecialFunctions.Complex.Log -public import Mathlib.Analysis.Normed.Module.FiniteDimension -public import Mathlib.LinearAlgebra.Matrix.Transvection +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeHomotopyInvariance +import HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.ComplexClass +import Mathlib.Analysis.Complex.Exponential +import Mathlib.Analysis.SpecialFunctions.Complex.Log +import Mathlib.Analysis.Normed.Module.FiniteDimension +import Mathlib.LinearAlgebra.Matrix.Transvection + +namespace OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance + +open _root_.Matrix /-! # Invariance of the complex local class under complex-linear coordinate changes @@ -36,11 +41,12 @@ This supplies the linear local-degree step needed to compare holomorphic coordin remaining nonlinear step is to replace a chart transition germ by its derivative. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology namespace Matrix +open _root_.Matrix variable {n : Type*} [Fintype n] [DecidableEq n] @@ -56,12 +62,14 @@ structure ComplexIsotopyToOne (A : Matrix n n ℂ) where det_ne_zero : ∀ t, (path t).det ≠ 0 namespace ComplexIsotopyToOne +open _root_.Matrix +open _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Matrix.ComplexIsotopyToOne /-- Pointwise multiplication concatenates isotopies algebraically. This is the construction used for products in the diagonal--transvection induction. -/ def mul {A B : Matrix n n ℂ} - (hA : ComplexIsotopyToOne A) (hB : ComplexIsotopyToOne B) : - ComplexIsotopyToOne (A * B) where + (hA : _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Matrix.ComplexIsotopyToOne A) (hB : _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Matrix.ComplexIsotopyToOne B) : + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Matrix.ComplexIsotopyToOne (A * B) where path := ⟨fun t ↦ hA.path t * hB.path t, by refine continuous_pi fun i ↦ continuous_pi fun j ↦ ?_ @@ -80,7 +88,7 @@ def mul {A B : Matrix n n ℂ} /-- An invertible diagonal complex matrix is isotopic to the identity. -/ def diagonal (D : n → ℂ) (hD : (Matrix.diagonal D).det ≠ 0) : - ComplexIsotopyToOne (Matrix.diagonal D) := + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Matrix.ComplexIsotopyToOne (Matrix.diagonal D) := have hDi : ∀ i, D i ≠ 0 := fun i hi ↦ hD <| by rw [Matrix.det_diagonal] exact Finset.prod_eq_zero (Finset.mem_univ i) hi @@ -116,7 +124,7 @@ def diagonal (D : n → ℂ) (hD : (Matrix.diagonal D).det ≠ 0) : /-- A complex transvection is isotopic to the identity by scaling its off-diagonal entry. -/ def transvection (t : Matrix.TransvectionStruct n ℂ) : - ComplexIsotopyToOne t.toMatrix := + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Matrix.ComplexIsotopyToOne t.toMatrix := let P : C(unitInterval, Matrix n n ℂ) := ⟨fun s ↦ Matrix.transvection t.i t.j (((s : ℝ) : ℂ) * t.c), by refine continuous_pi fun i ↦ continuous_pi fun j ↦ ?_ @@ -129,14 +137,17 @@ def transvection (t : Matrix.TransvectionStruct n ℂ) : · simp [h] exact continuous_const⟩ { path := P - map_zero := by simp [P] - map_one := by simp [P, Matrix.TransvectionStruct.toMatrix] + map_zero := by + change Matrix.transvection t.i t.j ((0 : ℂ) * t.c) = 1 + simp [Matrix.transvection] + map_one := by + change Matrix.transvection t.i t.j ((1 : ℂ) * t.c) = t.toMatrix + simp [Matrix.TransvectionStruct.toMatrix] det_ne_zero := by intro s - simpa only [P, ContinuousMap.coe_mk] using - (show (Matrix.transvection t.i t.j (((s : ℝ) : ℂ) * t.c)).det ≠ 0 by - rw [Matrix.det_transvection_of_ne _ _ t.hij] - exact one_ne_zero) } + change (Matrix.transvection t.i t.j (((s : ℝ) : ℂ) * t.c)).det ≠ 0 + rw [Matrix.det_transvection_of_ne _ _ t.hij] + exact one_ne_zero } end ComplexIsotopyToOne @@ -144,19 +155,20 @@ end ComplexIsotopyToOne This is a concrete form of path connectedness of `GLₙ(ℂ)`. -/ theorem nonempty_complexIsotopyToOne (A : Matrix n n ℂ) (hA : A.det ≠ 0) : - Nonempty (ComplexIsotopyToOne A) := by + Nonempty (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Matrix.ComplexIsotopyToOne A) := by apply Matrix.diagonal_transvection_induction_of_det_ne_zero - (fun B ↦ Nonempty (ComplexIsotopyToOne B)) A hA + (fun B ↦ Nonempty (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Matrix.ComplexIsotopyToOne B)) A hA · intro D hD - exact ⟨ComplexIsotopyToOne.diagonal D hD⟩ + exact ⟨_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Matrix.ComplexIsotopyToOne.diagonal D hD⟩ · intro t - exact ⟨ComplexIsotopyToOne.transvection t⟩ + exact ⟨_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Matrix.ComplexIsotopyToOne.transvection t⟩ · intro B C _hB _hC hB hC exact ⟨hB.some.mul hC.some⟩ end Matrix -namespace AlgebraicTopology.Singular +section +namespace Singular variable (d : ℕ) @@ -206,9 +218,9 @@ lemma complexMatrixPuncturedMap_apply /-- An invertible complex matrix acts on complex affine space and its punctured subspace. -/ def complexMatrixPuncturedPairMap (A : Matrix (Fin d) (Fin d) ℂ) (hA : A.det ≠ 0) : - puncturedPair ℂ d ⟶ puncturedPair ℂ d := - TopPair.ofHom (X := puncturedPair ℂ d) - (Y := puncturedPair ℂ d) + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ d ⟶ _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ d := + TopPair.ofHom (X := _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ d) + (Y := _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ d) (complexMatrixMap d A) (complexMatrixPuncturedMap d A hA) (by @@ -219,8 +231,8 @@ def complexMatrixPuncturedPairMap (A : Matrix (Fin d) (Fin d) ℂ) (hA : A.det /-- An isotopy of invertible matrices induces a homotopy of their maps of punctured pairs. -/ def complexMatrixPuncturedPairHomotopy {A : Matrix (Fin d) (Fin d) ℂ} (hA : A.det ≠ 0) - (H : Matrix.ComplexIsotopyToOne A) : - TopPair.Homotopy (𝟙 (puncturedPair ℂ d)) + (H : _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Matrix.ComplexIsotopyToOne A) : + TopPair.Homotopy (𝟙 (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ d)) (complexMatrixPuncturedPairMap d A hA) where fst := { toFun := fun tx ↦ (H.path tx.1).mulVec tx.2 @@ -255,12 +267,16 @@ def complexMatrixPuncturedPairHomotopy -/ theorem relativeHomologyMap_complexMatrix_standardComplexLocalClass (A : Matrix (Fin d) (Fin d) ℂ) (hA : A.det ≠ 0) : - relativeHomologyMap ℚ (2 * d) (complexMatrixPuncturedPairMap d A hA) - (standardComplexLocalClass ℚ d) = - standardComplexLocalClass ℚ d := by - let H := (Matrix.nonempty_complexIsotopyToOne A hA).some - have h := (complexMatrixPuncturedPairHomotopy d hA H).relativeHomologyMap_apply_eq - (R := ℚ) (2 * d) (standardComplexLocalClass ℚ d) + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * d) (complexMatrixPuncturedPairMap d A hA) + (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ d) = + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ d := by + let H := (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance.Matrix.nonempty_complexIsotopyToOne A hA).some + have h := (_root_.OAI.AlgebraicTopology.Singular.RelativeHomotopyInvariance.TopPair.Homotopy.relativeHomologyMap_apply_eq (R := ℚ) (complexMatrixPuncturedPairHomotopy d hA H)) (2 * d) (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ d) simpa using h.symm -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.ComplexClassLinearInvariance diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/Euclidean.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/Euclidean.lean index 27ef101158..72f8cb0988 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/Euclidean.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/Euclidean.lean @@ -12,22 +12,29 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric +import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FundamentalClass -public import Mathlib.Algebra.Homology.HomologySequence -public import Mathlib.AlgebraicTopology.SimplicialSet.Homology.HomologyZero -public import Mathlib.AlgebraicTopology.SimplicialSet.TopAdj -public import Mathlib.Topology.Homotopy.Equiv +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FundamentalClass +import Mathlib.Algebra.Homology.HomologySequence +import Mathlib.AlgebraicTopology.SimplicialSet.Homology.HomologyZero +import Mathlib.AlgebraicTopology.SimplicialSet.TopAdj +import Mathlib.Topology.Homotopy.Equiv import Mathlib.Algebra.Homology.HomologicalComplexAbelian import Mathlib.AlgebraicTopology.SingularHomology.HomotopyInvariance import Mathlib.Analysis.Convex.Contractible import Mathlib.Topology.Homotopy.TopCat.ZerothHomotopy +namespace OAI.AlgebraicTopology.LocalHomology.Euclidean + +open scoped OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex Simplicial + +open _root_.AlgebraicTopology + /-! # Euclidean local homology @@ -36,47 +43,48 @@ the connecting morphism on the explicit standard local class. These are the chai prerequisites for proving that the standard class generates local homology. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits ContinuousMap -open scoped Convexity.StdSimplex Simplicial +open _root_.CategoryTheory Limits ContinuousMap +open scoped _root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex Simplicial -namespace AlgebraicTopology.Singular +section +namespace Singular /-- The connecting map from relative homology in degree `n + 1` to subspace homology in degree `n`. -/ def relativeSingularBoundary (X : TopPair) (n : ℕ) : - RelativeHomology ℚ X (n + 1) ⟶ Homology ℚ X.snd n := - (relativeChainShortComplex_shortExact ℚ X).δ (n + 1) n + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ X (n + 1) ⟶ _root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology ℚ X.snd n := + (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeChainShortComplex_shortExact ℚ X).δ (n + 1) n (ComplexShape.down_mk (n + 1) n (by lia)) /-- Exactness at relative homology in the long exact sequence of a topological pair. -/ lemma relativeSingular_homology_exact_relative (X : TopPair) (n : ℕ) : (ShortComplex.mk - (relativeHomologyProjection ℚ X (n + 1)) + (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyProjection ℚ X (n + 1)) (relativeSingularBoundary X n) (by - exact (relativeChainShortComplex_shortExact ℚ X).comp_δ + exact (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeChainShortComplex_shortExact ℚ X).comp_δ (n + 1) n (ComplexShape.down_mk (n + 1) n (by lia)))).Exact := - (relativeChainShortComplex_shortExact ℚ X).homology_exact₃ + (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeChainShortComplex_shortExact ℚ X).homology_exact₃ (n + 1) n (ComplexShape.down_mk (n + 1) n (by lia)) lemma standardSubspaceBoundaryChain_inclusion (n : ℕ) : - standardSubspaceBoundaryChain n ≫ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ (n + 1))).hom.f n = - standardAmbientSimplexChain ℚ (n + 1) ≫ - ((chainPairFunctor ℚ).obj - (puncturedPair ℝ (n + 1))).right.d (n + 1) n := by - rw [standardSubspaceBoundaryChain, Preadditive.sum_comp] - simp_rw [Preadditive.zsmul_comp, standardFaceChain_inclusion] - exact (standardAmbientSimplexChain_boundary ℚ n).symm + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassBoundary.Singular.standardSubspaceBoundaryChain n ≫ + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1))).hom.f n = + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAmbientSimplexChain ℚ (n + 1) ≫ + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1))).right.d (n + 1) n := by + rw [_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassBoundary.Singular.standardSubspaceBoundaryChain, Preadditive.sum_comp] + simp_rw [Preadditive.zsmul_comp, _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceChain_inclusion] + exact (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAmbientSimplexChain_boundary ℚ n).symm lemma standardSubspaceBoundaryChain_boundary (n : ℕ) : - standardSubspaceBoundaryChain n ≫ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ (n + 1))).left.d n + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassBoundary.Singular.standardSubspaceBoundaryChain n ≫ + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1))).left.d n ((ComplexShape.down ℕ).next n) = 0 := by - let f := ((chainPairFunctor ℚ).obj (puncturedPair ℝ (n + 1))).hom - let : Mono f := relativeChainMap_mono ℚ (puncturedPair ℝ (n + 1)) + let f := ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1))).hom + let : Mono f := _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeChainMap_mono ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1)) rw [← cancel_mono (f.f ((ComplexShape.down ℕ).next n)), Category.assoc, ← f.comm, ← Category.assoc, standardSubspaceBoundaryChain_inclusion, Category.assoc, HomologicalComplex.d_comp_d, comp_zero] @@ -85,39 +93,39 @@ lemma standardSubspaceBoundaryChain_boundary (n : ℕ) : /-- The boundary of the standard affine simplex as a cycle in punctured Euclidean space. -/ def standardPuncturedBoundaryCycle (n : ℕ) : ModuleCat.of ℚ ℚ ⟶ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ (n + 1))).left.cycles n := - ((chainPairFunctor ℚ).obj (puncturedPair ℝ (n + 1))).left.liftCycles - (standardSubspaceBoundaryChain n) ((ComplexShape.down ℕ).next n) rfl + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1))).left.cycles n := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1))).left.liftCycles + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassBoundary.Singular.standardSubspaceBoundaryChain n) ((ComplexShape.down ℕ).next n) rfl (standardSubspaceBoundaryChain_boundary n) /-- The homology class of the boundary of the standard affine simplex in punctured Euclidean space. -/ def standardPuncturedBoundaryClass (n : ℕ) : - Homology ℚ (puncturedPair ℝ (n + 1)).snd n := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1)).snd n := ((standardPuncturedBoundaryCycle n ≫ - ((chainPairFunctor ℚ).obj - (puncturedPair ℝ (n + 1))).left.homologyπ n).hom) 1 + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1))).left.homologyπ n).hom) 1 lemma standardLocalCycle_comp_relativeSingularBoundary (n : ℕ) : - standardLocalCycle ℚ (n + 1) ≫ - (standardLocalRelativeChainComplex ℚ (n + 1)).homologyπ (n + 1) ≫ - relativeSingularBoundary (puncturedPair ℝ (n + 1)) n = + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalCycle ℚ (n + 1) ≫ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalRelativeChainComplex ℚ (n + 1)).homologyπ (n + 1) ≫ + relativeSingularBoundary (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1)) n = standardPuncturedBoundaryCycle n ≫ - ((chainPairFunctor ℚ).obj - (puncturedPair ℝ (n + 1))).left.homologyπ n := by - let hS := relativeChainShortComplex_shortExact ℚ - (puncturedPair ℝ (n + 1)) + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1))).left.homologyπ n := by + let hS := _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeChainShortComplex_shortExact ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1)) exact hS.δ_eq (n + 1) n (ComplexShape.down_mk (n + 1) n (by lia)) - (standardLocalChain ℚ (n + 1)) (standardLocalChain_boundary_succ ℚ n) - (standardAmbientSimplexChain ℚ (n + 1)) rfl - (standardSubspaceBoundaryChain n) (standardSubspaceBoundaryChain_inclusion n) + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalChain ℚ (n + 1)) (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalChain_boundary_succ ℚ n) + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAmbientSimplexChain ℚ (n + 1)) rfl + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassBoundary.Singular.standardSubspaceBoundaryChain n) (standardSubspaceBoundaryChain_inclusion n) ((ComplexShape.down ℕ).next n) rfl /-- The connecting map sends the standard local class to the homology class of the oriented boundary of the standard affine simplex. -/ lemma relativeSingularBoundary_standardLocalClass (n : ℕ) : - (relativeSingularBoundary (puncturedPair ℝ (n + 1)) n).hom - (standardLocalClass ℚ (n + 1)) = + (relativeSingularBoundary (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1)) n).hom + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (n + 1)) = standardPuncturedBoundaryClass n := ConcreteCategory.congr_hom (standardLocalCycle_comp_relativeSingularBoundary n) 1 @@ -127,7 +135,7 @@ lemma relativeSingularBoundary_standardLocalClass (n : ℕ) : def rationalSingularHomologyIsoOfHomotopyEquiv {X Y : Type} [TopologicalSpace X] [TopologicalSpace Y] (k : ℕ) (e : X ≃ₕ Y) : - Homology ℚ (TopCat.of X) k ≅ Homology ℚ (TopCat.of Y) k := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology ℚ (TopCat.of X) k ≅ _root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology ℚ (TopCat.of Y) k := let F := (singularHomologyFunctor (ModuleCat ℚ) k).obj (ModuleCat.of ℚ ℚ) let f : TopCat.of X ⟶ TopCat.of Y := TopCat.ofHom e.toFun let g : TopCat.of Y ⟶ TopCat.of X := TopCat.ofHom e.invFun @@ -141,7 +149,7 @@ def rationalSingularHomologyIsoOfHomotopyEquiv /-- Positive-degree rational singular homology of a real coordinate space vanishes. -/ lemma standardRealModel_homology_isZero (d k : ℕ) (hk : k ≠ 0) : - IsZero (Homology ℚ (TopCat.of (Fin d → ℝ)) k) := by + IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology ℚ (TopCat.of (Fin d → ℝ)) k) := by let e := (ContractibleSpace.hequiv_unit (Fin d → ℝ)).some exact (AlgebraicTopology.isZero_singularHomologyFunctor_of_totallyDisconnectedSpace (ModuleCat (R := ℚ)) k (ModuleCat.of ℚ ℚ) (TopCat.of Unit) hk).of_iso @@ -150,21 +158,21 @@ lemma standardRealModel_homology_isZero (d k : ℕ) (hk : k ≠ 0) : /-- In positive degree, the connecting map identifies the local homology of Euclidean space with the preceding homology of its punctured complement. -/ def standardPuncturedRelativeBoundaryIso (n : ℕ) (hn : n ≠ 0) : - RelativeHomology ℚ (puncturedPair ℝ (n + 1)) (n + 1) ≅ - Homology ℚ (puncturedPair ℝ (n + 1)).snd n := - (relativeChainShortComplex_shortExact ℚ (puncturedPair ℝ (n + 1))).δIso + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1)) (n + 1) ≅ + _root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1)).snd n := + (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeChainShortComplex_shortExact ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1))).δIso (n + 1) n (ComplexShape.down_mk (n + 1) n (by lia)) (standardRealModel_homology_isZero (n + 1) (n + 1) (by lia)) (standardRealModel_homology_isZero (n + 1) n hn) lemma standardPuncturedRelativeBoundaryIso_hom (n : ℕ) (hn : n ≠ 0) : (standardPuncturedRelativeBoundaryIso n hn).hom = - relativeSingularBoundary (puncturedPair ℝ (n + 1)) n := rfl + relativeSingularBoundary (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1)) n := rfl /-- Above dimension one, nonvanishing of the standard local class is equivalent to nonvanishing of its explicit oriented boundary in the punctured Euclidean space. -/ lemma standardLocalClass_succ_ne_zero_iff (n : ℕ) (hn : n ≠ 0) : - standardLocalClass ℚ (n + 1) ≠ 0 ↔ standardPuncturedBoundaryClass n ≠ 0 := by + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (n + 1) ≠ 0 ↔ standardPuncturedBoundaryClass n ≠ 0 := by rw [← relativeSingularBoundary_standardLocalClass n, ← standardPuncturedRelativeBoundaryIso_hom n hn] exact (standardPuncturedRelativeBoundaryIso n hn).toLinearEquiv.map_ne_zero_iff.symm @@ -172,16 +180,16 @@ lemma standardLocalClass_succ_ne_zero_iff (n : ℕ) (hn : n ≠ 0) : /-- Above dimension one, the standard local class spans exactly when its explicit oriented boundary spans the preceding homology of the punctured Euclidean space. -/ lemma span_standardLocalClass_succ_eq_top_iff (n : ℕ) (hn : n ≠ 0) : - Submodule.span ℚ {standardLocalClass ℚ (n + 1)} = ⊤ ↔ + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (n + 1)} = ⊤ ↔ Submodule.span ℚ {standardPuncturedBoundaryClass n} = ⊤ := by let e := (standardPuncturedRelativeBoundaryIso n hn).toLinearEquiv - have he : e (standardLocalClass ℚ (n + 1)) = standardPuncturedBoundaryClass n := by + have he : e (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (n + 1)) = standardPuncturedBoundaryClass n := by change (standardPuncturedRelativeBoundaryIso n hn).hom.hom - (standardLocalClass ℚ (n + 1)) = _ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (n + 1)) = _ rw [standardPuncturedRelativeBoundaryIso_hom, relativeSingularBoundary_standardLocalClass] have hmap : - (Submodule.span ℚ {standardLocalClass ℚ (n + 1)}).map e.toLinearMap = + (Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (n + 1)}).map e.toLinearMap = Submodule.span ℚ {standardPuncturedBoundaryClass n} := by rw [Submodule.map_span] simp [he] @@ -240,33 +248,33 @@ lemma standardPuncturedLine_components_ne : exact ht lemma standardFaceSimplex_zero_point : - TopCat.toSSetObj₀Equiv (standardFaceSimplex 0 (0 : Fin 2)) = + TopCat.toSSetObj₀Equiv (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceSimplex 0 (0 : Fin 2)) = standardNegativePoint := by - change standardFaceMap 0 (0 : Fin 2) + change _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceMap 0 (0 : Fin 2) (default : Convexity.StdSimplex ℝ (Fin 1)) = standardNegativePoint rw [Subsingleton.elim (default : Convexity.StdSimplex ℝ (Fin 1)) (Convexity.StdSimplex.single 0)] ext j fin_cases j - simp [standardFaceMap, standardAffineSimplex, Convexity.StdSimplex.map, standardNegativePoint] + simp [_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceMap, _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAffineSimplex, Convexity.StdSimplex.map, standardNegativePoint] lemma standardFaceSimplex_one_point : - TopCat.toSSetObj₀Equiv (standardFaceSimplex 0 (1 : Fin 2)) = + TopCat.toSSetObj₀Equiv (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceSimplex 0 (1 : Fin 2)) = standardPositivePoint := by - change standardFaceMap 0 (1 : Fin 2) + change _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceMap 0 (1 : Fin 2) (default : Convexity.StdSimplex ℝ (Fin 1)) = standardPositivePoint rw [Subsingleton.elim (default : Convexity.StdSimplex ℝ (Fin 1)) (Convexity.StdSimplex.single 0)] ext j fin_cases j - simp [standardFaceMap, standardAffineSimplex, Convexity.StdSimplex.map, standardPositivePoint] + simp [_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceMap, _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAffineSimplex, Convexity.StdSimplex.map, standardPositivePoint] /-- The two vertices of the standard one-simplex represent different components of the punctured line. -/ lemma standardFaceSimplex_components_ne : - SSet.π₀.mk (standardFaceSimplex 0 (0 : Fin 2)) ≠ - SSet.π₀.mk (standardFaceSimplex 0 (1 : Fin 2)) := by + SSet.π₀.mk (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceSimplex 0 (0 : Fin 2)) ≠ + SSet.π₀.mk (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceSimplex 0 (1 : Fin 2)) := by intro h have hz := congrArg - (TopCat.zerothHomotopyEquiv (X := (puncturedPair ℝ 1).snd)).symm h + (TopCat.zerothHomotopyEquiv (X := (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1).snd)).symm h simp only [TopCat.zerothHomotopyEquiv_symm_mk] at hz rw [standardFaceSimplex_zero_point, standardFaceSimplex_one_point] at hz exact standardPuncturedLine_components_ne hz @@ -274,66 +282,66 @@ lemma standardFaceSimplex_components_ne : /-- A vertex of the standard one-simplex, regarded as a zero-cycle in the punctured line. -/ def standardPuncturedFaceCycle (i : Fin 2) : ModuleCat.of ℚ ℚ ⟶ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 1)).left.cycles 0 := - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 1)).left.liftCycles - (standardSubspaceFaceChain ℚ 0 i) 0 (by simp) (by simp) + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1)).left.cycles 0 := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1)).left.liftCycles + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardSubspaceFaceChain ℚ 0 i) 0 (by simp) (by simp) lemma standardPuncturedBoundaryCycle_zero_eq : standardPuncturedBoundaryCycle 0 = standardPuncturedFaceCycle 0 - standardPuncturedFaceCycle 1 := by rw [← cancel_mono - (((chainPairFunctor ℚ).obj (puncturedPair ℝ 1)).left.iCycles 0)] + (((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1)).left.iCycles 0)] rw [Preadditive.sub_comp] simp only [standardPuncturedBoundaryCycle, standardPuncturedFaceCycle, HomologicalComplex.liftCycles_i] - change (∑ i : Fin 2, (-1 : ℤ) ^ i.val • standardSubspaceFaceChain ℚ 0 i) = - standardSubspaceFaceChain ℚ 0 0 - standardSubspaceFaceChain ℚ 0 1 + change (∑ i : Fin 2, (-1 : ℤ) ^ i.val • _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardSubspaceFaceChain ℚ 0 i) = + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardSubspaceFaceChain ℚ 0 0 - _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardSubspaceFaceChain ℚ 0 1 norm_num rw [sub_eq_add_neg] set_option backward.isDefEq.respectTransparency false in lemma standardPuncturedFaceCycle_homology₀Iso (i : Fin 2) : standardPuncturedFaceCycle i ≫ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 1)).left.homologyπ 0 ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ 1).snd).homology₀Iso + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1)).left.homologyπ 0 ≫ + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1).snd).homology₀Iso (ModuleCat.of ℚ ℚ)).hom = - Sigma.ι (fun (_ : (TopCat.toSSet.obj (puncturedPair ℝ 1).snd).π₀) ↦ - ModuleCat.of ℚ ℚ) (SSet.π₀.mk (standardFaceSimplex 0 i)) := + Sigma.ι (fun (_ : (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1).snd).π₀) ↦ + ModuleCat.of ℚ ℚ) (SSet.π₀.mk (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceSimplex 0 i)) := SSet.liftCycles_ιChainComplex_homologyπ_homology₀Iso_hom - (TopCat.toSSet.obj (puncturedPair ℝ 1).snd) (ModuleCat.of ℚ ℚ) - (standardFaceSimplex 0 i) + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1).snd) (ModuleCat.of ℚ ℚ) + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceSimplex 0 i) set_option backward.isDefEq.respectTransparency false in lemma standardPuncturedBoundaryCycle_homology₀Iso : standardPuncturedBoundaryCycle 0 ≫ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 1)).left.homologyπ 0 ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ 1).snd).homology₀Iso + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1)).left.homologyπ 0 ≫ + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1).snd).homology₀Iso (ModuleCat.of ℚ ℚ)).hom = - Sigma.ι (fun (_ : (TopCat.toSSet.obj (puncturedPair ℝ 1).snd).π₀) ↦ - ModuleCat.of ℚ ℚ) (SSet.π₀.mk (standardFaceSimplex 0 0)) - - Sigma.ι (fun (_ : (TopCat.toSSet.obj (puncturedPair ℝ 1).snd).π₀) ↦ - ModuleCat.of ℚ ℚ) (SSet.π₀.mk (standardFaceSimplex 0 1)) := by + Sigma.ι (fun (_ : (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1).snd).π₀) ↦ + ModuleCat.of ℚ ℚ) (SSet.π₀.mk (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceSimplex 0 0)) - + Sigma.ι (fun (_ : (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1).snd).π₀) ↦ + ModuleCat.of ℚ ℚ) (SSet.π₀.mk (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceSimplex 0 1)) := by rw [standardPuncturedBoundaryCycle_zero_eq, Preadditive.sub_comp, standardPuncturedFaceCycle_homology₀Iso, standardPuncturedFaceCycle_homology₀Iso] open scoped Classical in /-- A linear functional detecting the negative component of the punctured line. -/ def standardPuncturedBoundaryDetector : - (∐ (fun (_ : (TopCat.toSSet.obj (puncturedPair ℝ 1).snd).π₀) ↦ + (∐ (fun (_ : (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1).snd).π₀) ↦ ModuleCat.of ℚ ℚ)) ⟶ ModuleCat.of ℚ ℚ := Sigma.desc fun j ↦ - if j = SSet.π₀.mk (standardFaceSimplex 0 0) then 𝟙 _ else 0 + if j = SSet.π₀.mk (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceSimplex 0 0) then 𝟙 _ else 0 set_option backward.isDefEq.respectTransparency false in lemma standardPuncturedBoundaryCycle_detect : standardPuncturedBoundaryCycle 0 ≫ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 1)).left.homologyπ 0 ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ 1).snd).homology₀Iso + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1)).left.homologyπ 0 ≫ + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1).snd).homology₀Iso (ModuleCat.of ℚ ℚ)).hom ≫ standardPuncturedBoundaryDetector = 𝟙 _ := by calc _ = (standardPuncturedBoundaryCycle 0 ≫ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 1)).left.homologyπ 0 ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ 1).snd).homology₀Iso + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1)).left.homologyπ 0 ≫ + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1).snd).homology₀Iso (ModuleCat.of ℚ ℚ)).hom) ≫ standardPuncturedBoundaryDetector := by simp only [Category.assoc] _ = _ := by @@ -348,16 +356,21 @@ lemma standardPuncturedBoundaryClass_zero_ne_zero : intro h have hdet := ConcreteCategory.congr_hom standardPuncturedBoundaryCycle_detect 1 change (standardPuncturedBoundaryDetector.hom - (((TopCat.toSSet.obj (puncturedPair ℝ 1).snd).homology₀Iso + (((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 1).snd).homology₀Iso (ModuleCat.of ℚ ℚ)).hom.hom (standardPuncturedBoundaryClass 0))) = 1 at hdet rw [h] at hdet norm_num at hdet /-- The explicit standard local class is nonzero in `H₁(ℝ, ℝ ∖ {0}; ℚ)`. -/ -lemma standardLocalClass_one_ne_zero : standardLocalClass ℚ 1 ≠ 0 := by +lemma standardLocalClass_one_ne_zero : _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ 1 ≠ 0 := by intro h apply standardPuncturedBoundaryClass_zero_ne_zero rw [← relativeSingularBoundary_standardLocalClass 0, h, map_zero] -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.Euclidean diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/EuclideanVanishing.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/EuclideanVanishing.lean index 268d7e1bc4..d7c450d2e0 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/EuclideanVanishing.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/EuclideanVanishing.lean @@ -1,13 +1,16 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.PuncturedEuclidean -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.HomologyZeroNaturality -public import Mathlib.Algebra.Homology.HomologySequenceLemmas -public import Mathlib.Analysis.Normed.Module.Connected +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.PuncturedEuclidean +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.HomologyZeroNaturality +import Mathlib.Algebra.Homology.HomologySequenceLemmas +import Mathlib.Analysis.Normed.Module.Connected + +namespace OAI.AlgebraicTopology.LocalHomology.EuclideanVanishing /-! # Dimensional vanishing for Euclidean local homology @@ -17,28 +20,29 @@ and the dimension bound on normalized simplicial chains. They are prerequisites that the concrete relative-chain sheaf has cohomology only in the orientation degree. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits HomologicalComplex +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.HomologicalComplex open scoped Simplicial -namespace AlgebraicTopology.Singular +section +namespace Singular /-- In positive degrees strictly below its sphere dimension, the normalized boundary complex is exact: its three relevant groups agree with those of the full simplex. -/ theorem standardSphereSucc_normalizedChains_exactAt_of_lt (n k : ℕ) (hk : k ≠ 0) (hlt : k < n + 1) : - (standardSphereSuccNormalizedRationalChains n).ExactAt k := by + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n).ExactAt k := by obtain ⟨m, rfl⟩ := Nat.exists_eq_succ_of_ne_zero hk let f := SSet.normalizedChainComplexMap (SSet.boundary (n + 2) : SSet.Subcomplex (Δ[n + 2] : SSet.{0})).ι (ModuleCat.of ℚ ℚ) let : IsIso (f.f (m + 2)) := - (standardSphereSuccNormalizedChainsXIsoStandard n (m + 2) (by omega)).isIso_hom + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedChainsXIsoStandard n (m + 2) (by omega)).isIso_hom let : IsIso (f.f (m + 1)) := - (standardSphereSuccNormalizedChainsXIsoStandard n (m + 1) (by omega)).isIso_hom + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedChainsXIsoStandard n (m + 1) (by omega)).isIso_hom let : IsIso (f.f m) := - (standardSphereSuccNormalizedChainsXIsoStandard n m (by omega)).isIso_hom + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedChainsXIsoStandard n m (by omega)).isIso_hom let φ := (shortComplexFunctor' (ModuleCat ℚ) (ComplexShape.down ℕ) (m + 2) (m + 1) m).map f let : IsIso φ.τ₁ := by dsimp [φ, shortComplexFunctor']; infer_instance @@ -46,45 +50,45 @@ theorem standardSphereSucc_normalizedChains_exactAt_of_lt let : IsIso φ.τ₃ := by dsimp [φ, shortComplexFunctor']; infer_instance let : IsIso φ := ShortComplex.isIso_of_isIso φ have hfull := ShortComplex.exact_of_iso - ((standardSimplexSuccNormalizedRationalChains n).isoSc' + ((_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSimplexSuccNormalizedRationalChains n).isoSc' (m + 2) (m + 1) m (by simp) (by simp)) - (standardSimplexSucc_normalizedChains_exactAt n (m + 1) (by omega)) + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSimplexSucc_normalizedChains_exactAt n (m + 1) (by omega)) exact ShortComplex.exact_of_iso - ((standardSphereSuccNormalizedRationalChains n).isoSc' + ((_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n).isoSc' (m + 2) (m + 1) m (by simp) (by simp)).symm (ShortComplex.exact_of_iso (asIso φ).symm hfull) /-- Punctured real space has no positive homology strictly below the sphere degree. -/ theorem standardPuncturedHomology_isZero_of_lt (d k : ℕ) (hk : k ≠ 0) (hlt : k + 1 < d) : - IsZero (Homology ℚ (puncturedPair ℝ d).snd k) := by + IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd k) := by obtain ⟨n, rfl⟩ : ∃ n, d = n + 2 := ⟨d - 2, by omega⟩ have hnorm := standardSphereSucc_normalizedChains_exactAt_of_lt n k hk (by omega) have hchains := (exactAt_iff_of_quasiIsoAt ((∂Δ[n + 2] : SSet.{0}).toNormalizedChainComplex (ModuleCat.of ℚ ℚ)) k).mpr hnorm exact hchains.isZero_homology.of_iso - ((standardAffineBoundaryChainHomotopyEquiv (n + 2)).toHomologyIso k).symm + ((_root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardAffineBoundaryChainHomotopyEquiv (n + 2)).toHomologyIso k).symm /-- The punctured real `d`-space has no homology in degrees at least `d`, including the empty punctured zero-dimensional space. -/ theorem standardPuncturedHomology_isZero_of_dimension_le (d k : ℕ) (hk : d ≤ k) : - IsZero (Homology ℚ (puncturedPair ℝ d).snd k) := by + IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd k) := by exact ((∂Δ[d] : SSet.{0}).isZero_homology_of_hasDimensionLT (ModuleCat.of ℚ ℚ) k d hk).of_iso - ((standardAffineBoundaryChainHomotopyEquiv d).toHomologyIso k).symm + ((_root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardAffineBoundaryChainHomotopyEquiv d).toHomologyIso k).symm /-- Local homology of real `d`-space vanishes above degree `d`, degree one in dimension zero included. -/ theorem standardLocalHomology_isZero_of_dimension_lt (d k : ℕ) (hk : d < k) : - IsZero (RelativeHomology ℚ (puncturedPair ℝ d) k) := by + IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d) k) := by obtain ⟨n, rfl⟩ := Nat.exists_eq_succ_of_ne_zero (by omega : k ≠ 0) - exact (relativeSingular_homology_exact_relative (puncturedPair ℝ d) - n).isZero_of_both_isZero (standardRealModel_homology_isZero d (n + 1) (by omega)) + exact (_root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.relativeSingular_homology_exact_relative (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d) + n).isZero_of_both_isZero (_root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardRealModel_homology_isZero d (n + 1) (by omega)) (standardPuncturedHomology_isZero_of_dimension_le d n (by omega)) /-- Positive-dimensional punctured Euclidean space is nonempty. -/ theorem puncturedPair_nonempty (d : ℕ) (hd : 0 < d) : - Nonempty (puncturedPair ℝ d).snd := by + Nonempty (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd := by refine ⟨⟨fun _ ↦ 1, ?_⟩⟩ intro h have := congrFun h ⟨0, hd⟩ @@ -92,7 +96,7 @@ theorem puncturedPair_nonempty (d : ℕ) (hd : 0 < d) : /-- In real dimension greater than one, punctured Euclidean space is path-connected. -/ theorem puncturedPair_pathConnectedSpace (d : ℕ) (hd : 1 < d) : - PathConnectedSpace (puncturedPair ℝ d).snd := by + PathConnectedSpace (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd := by apply isPathConnected_iff_pathConnectedSpace.mp apply isPathConnected_compl_singleton_of_one_lt_rank simpa only [rank_fun', Fintype.card_fin] using @@ -102,56 +106,61 @@ theorem puncturedPair_pathConnectedSpace (d : ℕ) (hd : 1 < d) : relative homology vanishes. -/ theorem relativeHomology_zero_isZero_of_pathConnected (P : TopPair) [Nonempty P.snd] [PathConnectedSpace P.fst] : - IsZero (RelativeHomology ℚ P 0) := by + IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ P 0) := by apply HomologicalComplex.ExactAt.isZero_homology - refine (relativeChainShortComplex_shortExact ℚ P).exactAt_X₃ 0 ?_ ?_ - · exact TopCat.singularHomologyMap_zero_epi (X := P.snd) (Y := P.fst) + refine (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeChainShortComplex_shortExact ℚ P).exactAt_X₃ 0 ?_ ?_ + · exact _root_.OAI.AlgebraicTopology.Singular.HomologyZeroNaturality.TopCat.singularHomologyMap_zero_epi (X := P.snd) (Y := P.fst) P.map (ModuleCat.of ℚ ℚ) · intro j hj simp [ComplexShape.down_Rel] at hj /-- Local degree-zero homology vanishes in positive real dimension. -/ theorem standardLocalHomology_zero_isZero (d : ℕ) (hd : 0 < d) : - IsZero (RelativeHomology ℚ (puncturedPair ℝ d) 0) := by - let : Nonempty (puncturedPair ℝ d).snd := puncturedPair_nonempty d hd - let : PathConnectedSpace (puncturedPair ℝ d).fst := + IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d) 0) := by + let : Nonempty (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd := puncturedPair_nonempty d hd + let : PathConnectedSpace (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).fst := inferInstanceAs (PathConnectedSpace (Fin d → ℝ)) - exact relativeHomology_zero_isZero_of_pathConnected (puncturedPair ℝ d) + exact relativeHomology_zero_isZero_of_pathConnected (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d) /-- Local degree-one homology vanishes in real dimension greater than one. -/ theorem standardLocalHomology_one_isZero (d : ℕ) (hd : 1 < d) : - IsZero (RelativeHomology ℚ (puncturedPair ℝ d) 1) := by - let : PathConnectedSpace (puncturedPair ℝ d).snd := + IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d) 1) := by + let : PathConnectedSpace (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd := puncturedPair_pathConnectedSpace d hd - let : PathConnectedSpace (puncturedPair ℝ d).fst := + let : PathConnectedSpace (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).fst := inferInstanceAs (PathConnectedSpace (Fin d → ℝ)) apply HomologicalComplex.ExactAt.isZero_homology - refine (relativeChainShortComplex_shortExact ℚ (puncturedPair ℝ d)).exactAt_X₃ 1 ?_ ?_ - · exact (standardRealModel_homology_isZero d 1 (by omega)).epi _ + refine (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeChainShortComplex_shortExact ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d)).exactAt_X₃ 1 ?_ ?_ + · exact (_root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardRealModel_homology_isZero d 1 (by omega)).epi _ · intro j hj have hj0 : j = 0 := by simpa [ComplexShape.down_Rel] using hj subst j let : IsIso (HomologicalComplex.homologyMap - ((chainPairFunctor ℚ).obj (puncturedPair ℝ d)).hom 0) := - TopCat.singularHomologyMap_zero_isIso - (X := (puncturedPair ℝ d).snd) (Y := (puncturedPair ℝ d).fst) - (puncturedPair ℝ d).map (ModuleCat.of ℚ ℚ) + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d)).hom 0) := + _root_.OAI.AlgebraicTopology.Singular.HomologyZeroNaturality.TopCat.singularHomologyMap_zero_isIso + (X := (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd) (Y := (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).fst) + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).map (ModuleCat.of ℚ ℚ) change Mono (HomologicalComplex.homologyMap - ((chainPairFunctor ℚ).obj (puncturedPair ℝ d)).hom 0) + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d)).hom 0) infer_instance /-- Local homology of real coordinate space vanishes in every degree other than the real dimension, with the degree-zero and degree-one endpoints included. -/ theorem standardLocalHomology_isZero_of_ne (d k : ℕ) (hk : k ≠ d) : - IsZero (RelativeHomology ℚ (puncturedPair ℝ d) k) := by + IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d) k) := by rcases lt_or_gt_of_ne hk with hlt | hgt · rcases k with _ | _ | n · exact standardLocalHomology_zero_isZero d hlt · exact standardLocalHomology_one_isZero d hlt · exact - (relativeSingular_homology_exact_relative (puncturedPair ℝ d) - (n + 1)).isZero_of_both_isZero (standardRealModel_homology_isZero d (n + 2) (by omega)) + (_root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.relativeSingular_homology_exact_relative (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d) + (n + 1)).isZero_of_both_isZero (_root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardRealModel_homology_isZero d (n + 2) (by omega)) (standardPuncturedHomology_isZero_of_lt d (n + 1) (by omega) (by omega)) · exact standardLocalHomology_isZero_of_dimension_lt d k hgt -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.EuclideanVanishing diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/FlattenedSupport.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/FlattenedSupport.lean index c94938827a..8739a87008 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/FlattenedSupport.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/FlattenedSupport.lean @@ -1,11 +1,14 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.NormalSlicePurity -public import Mathlib.Analysis.Normed.Module.Ball.Homeomorph +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.NormalSlicePurity +import Mathlib.Analysis.Normed.Module.Ball.Homeomorph + +namespace OAI.AlgebraicTopology.LocalHomology.FlattenedSupport /-! # Relative homology near a flattened support @@ -18,11 +21,12 @@ homology calculation and the normalized class are transported. /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits Topology +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.Topology -namespace AlgebraicTopology.Singular +section +namespace Singular variable {M : Type} [TopologicalSpace M] (E : Type) [NormedAddCommGroup E] [NormedSpace ℝ E] (c : ℕ) @@ -41,7 +45,7 @@ theorem exists_flattenedSupportRadius : end /-- Radial compression centered on the zero-normal plane preserves that plane exactly. -/ -private theorem univBall_normal_eq_zero_iff (a : E) (r : ℝ) (hr : 0 < r) +theorem univBall_normal_eq_zero_iff (a : E) (r : ℝ) (hr : 0 < r) (v : E × (Fin c → ℂ)) : (OpenPartialHomeomorph.univBall (a, (0 : Fin c → ℂ)) r v).2 = 0 ↔ v.2 = 0 := by rw [OpenPartialHomeomorph.univBall, dite_eq_left hr] @@ -60,7 +64,7 @@ theorem flattenedSupportRadius_pos : 0 < flattenedSupportRadius E c e x hx := (exists_flattenedSupportRadius E c e x hx).choose_spec.1 omit [NormedSpace ℝ E] in -private theorem ball_flattenedSupportRadius_subset : +theorem ball_flattenedSupportRadius_subset : Metric.ball (e x) (flattenedSupportRadius E c e x hx) ⊆ e.target := (exists_flattenedSupportRadius E c e x hx).choose_spec.2 @@ -139,8 +143,8 @@ subset of `M` to `E × ℂ^c`, with `x` in its source. Suppose a subset `S ⊆ M chart by vanishing of the normal coordinate and `x ∈ S`. Let `W` be the inverse image of the chosen ball about `e(x)`. This isomorphism of topological pairs `(E × ℂ^c, E × (ℂ^c \ {0})) ≅ (W,W \ S)` is given by radial compression into the ball followed by `e⁻¹`. -/ -def flattenedSupportPairIso : normalSlicePair E c ≅ - neighborhoodSupportComplementPair (flattenedSupportNeighborhood E c e x hx) S where +def flattenedSupportPairIso : _root_.OAI.AlgebraicTopology.LocalHomology.NormalSlicePurity.Singular.normalSlicePair E c ≅ + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (flattenedSupportNeighborhood E c e x hx) S where hom := TopPair.ofHom (TopCat.ofHom ⟨flattenedSupportHomeomorph E c e x hx, (flattenedSupportHomeomorph E c e x hx).continuous⟩) @@ -170,28 +174,30 @@ chart by vanishing of the normal coordinate and `x ∈ S`. Let `W` be the invers chosen ball about `e(x)`. This isomorphism `H_n(W,W \ S;ℚ) ≅ H_n(ℂ^c,ℂ^c \ {0};ℚ)` uses the chart and contracts the `E` coordinate to zero. -/ def flattenedSupportRelativeHomologyIso (n : ℕ) : - RelativeHomology ℚ - (neighborhoodSupportComplementPair (flattenedSupportNeighborhood E c e x hx) S) n ≅ - RelativeHomology ℚ (puncturedPair ℂ c) n := - ((relativeHomologyFunctor ℚ n).mapIso (flattenedSupportPairIso E c e x hx S hS h0).symm) ≪≫ - normalSliceRelativeHomologyIso E c n + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (flattenedSupportNeighborhood E c e x hx) S) n ≅ + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ c) n := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeHomologyFunctor ℚ n).mapIso (flattenedSupportPairIso E c e x hx S hS h0).symm) ≪≫ + _root_.OAI.AlgebraicTopology.LocalHomology.NormalSlicePurity.Singular.normalSliceRelativeHomologyIso E c n /-- The local class is the transport of the fixed, exactly normalized complex normal class. -/ def flattenedSupportNormalClass : - RelativeHomology ℚ - (neighborhoodSupportComplementPair (flattenedSupportNeighborhood E c e x hx) S) (2 * c) := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (flattenedSupportNeighborhood E c e x hx) S) (2 * c) := (flattenedSupportRelativeHomologyIso E c e x hx S hS h0 (2 * c)).inv.hom - (standardComplexLocalClass ℚ c) + (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ c) -end AlgebraicTopology.Singular +end Singular +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits Topology +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.Topology -namespace AlgebraicTopology.Singular +section +namespace Singular variable {M : Type} [TopologicalSpace M] (E : Type) [NormedAddCommGroup E] [NormedSpace ℝ E] (c : ℕ) @@ -221,8 +227,13 @@ include hS h0 @[simp] theorem flattenedSupportNormalClass_normalization : (flattenedSupportRelativeHomologyIso E c e x hx S hS h0 (2 * c)).hom.hom - (flattenedSupportNormalClass E c e x hx S hS h0) = standardComplexLocalClass ℚ c := + (flattenedSupportNormalClass E c e x hx S hS h0) = _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ c := ConcreteCategory.congr_hom (flattenedSupportRelativeHomologyIso E c e x hx S hS h0 (2 * c)).inv_hom_id _ -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.FlattenedSupport diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/FundamentalClass.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/FundamentalClass.lean index 714777b4f6..7d1ac0193a 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/FundamentalClass.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/FundamentalClass.lean @@ -12,10 +12,13 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.FundamentalClass +import HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.FundamentalClass + +namespace OAI.AlgebraicTopology.LocalHomology.FundamentalClassBoundary /-! # A standard local fundamental cycle @@ -24,12 +27,13 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.FundamentalClass`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits +open _root_.CategoryTheory Limits open scoped Simplicial -namespace AlgebraicTopology.Singular +section +namespace Singular variable (R : Type) [CommRing R] @@ -37,13 +41,18 @@ variable (R : Type) [CommRing R] chain in punctured Euclidean space. -/ def standardSubspaceBoundaryChain (n : ℕ) : ModuleCat.of ℚ ℚ ⟶ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ (n + 1))).left.X n := - ∑ i : Fin (n + 2), (-1) ^ i.val • standardSubspaceFaceChain ℚ n i + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1))).left.X n := + ∑ i : Fin (n + 2), (-1) ^ i.val • _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardSubspaceFaceChain ℚ n i lemma standardLocalCycle_inclusion (d : ℕ) : - standardLocalCycle R d ≫ (standardLocalRelativeChainComplex R d).iCycles d = - standardLocalChain R d := - (standardLocalRelativeChainComplex R d).liftCycles_i (standardLocalChain R d) - ((ComplexShape.down ℕ).next d) rfl (standardLocalChain_boundary R d) + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalCycle R d ≫ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalRelativeChainComplex R d).iCycles d = + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalChain R d := + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalRelativeChainComplex R d).liftCycles_i (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalChain R d) + ((ComplexShape.down ℕ).next d) rfl (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalChain_boundary R d) + +end Singular +end + +end -end AlgebraicTopology.Singular +end OAI.AlgebraicTopology.LocalHomology.FundamentalClassBoundary diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/FundamentalClassGenerator.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/FundamentalClassGenerator.lean index c9b0f20010..b3983fca38 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/FundamentalClassGenerator.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/FundamentalClassGenerator.lean @@ -12,12 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.ComplexClass -public import Mathlib.AlgebraicTopology.SingularHomology.HomologyZero -public import Mathlib.Geometry.Convex.ConvexSpace.Barycenter +import HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.ComplexClass +import Mathlib.AlgebraicTopology.SingularHomology.HomologyZero +import Mathlib.Geometry.Convex.ConvexSpace.Barycenter + +namespace OAI.AlgebraicTopology.LocalHomology.FundamentalClassGenerator + +open _root_.AlgebraicTopology /-! # Generator properties of the standard complex local class @@ -30,44 +35,45 @@ These results isolate the remaining topological input for local purity: it suffi the explicit real affine cycle generates the corresponding real relative homology group. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits +open _root_.CategoryTheory Limits open scoped Simplicial -namespace AlgebraicTopology.Singular +section +namespace Singular def standardComplexLocalClassMul (p : ℕ) : - RelativeHomology ℚ (puncturedPair ℂ p) (p * 2) := - (standardComplexRealRelativeHomologyIso ℚ p).inv.hom (standardLocalClass ℚ (p * 2)) + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ p) (p * 2) := + (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexRealRelativeHomologyIso ℚ p).inv.hom (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (p * 2)) /-- Transport a relative homology class along an equality of degrees. -/ def relativeHomologyDegreeCast {X : TopPair} {i j : ℕ} (h : i = j) - (z : RelativeHomology ℚ X i) : RelativeHomology ℚ X j := + (z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ X i) : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ X j := h ▸ z lemma relativeHomologyDegreeCast_ne_zero_iff {X : TopPair} {i j : ℕ} (h : i = j) - (z : RelativeHomology ℚ X i) : + (z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ X i) : relativeHomologyDegreeCast h z ≠ 0 ↔ z ≠ 0 := by aesop lemma span_relativeHomologyDegreeCast_eq_top_iff {X : TopPair} {i j : ℕ} (h : i = j) - (z : RelativeHomology ℚ X i) : + (z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ X i) : Submodule.span ℚ {relativeHomologyDegreeCast h z} = ⊤ ↔ Submodule.span ℚ {z} = ⊤ := by aesop lemma standardComplexRealRelativeHomologyIso_hom_standardComplexLocalClassMul (p : ℕ) : - (standardComplexRealRelativeHomologyIso ℚ p).hom.hom + (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexRealRelativeHomologyIso ℚ p).hom.hom (standardComplexLocalClassMul p) = - standardLocalClass ℚ (p * 2) := by - exact (standardComplexRealRelativeHomologyIso ℚ p).inv_hom_id_apply - (standardLocalClass ℚ (p * 2)) + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (p * 2) := by + exact (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexRealRelativeHomologyIso ℚ p).inv_hom_id_apply + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (p * 2)) lemma standardComplexLocalClassMul_ne_zero_iff (p : ℕ) : - standardComplexLocalClassMul p ≠ 0 ↔ standardLocalClass ℚ (p * 2) ≠ 0 := by - exact (standardComplexRealRelativeHomologyIso ℚ p).symm.toLinearEquiv.map_ne_zero_iff + standardComplexLocalClassMul p ≠ 0 ↔ _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (p * 2) ≠ 0 := by + exact (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexRealRelativeHomologyIso ℚ p).symm.toLinearEquiv.map_ne_zero_iff lemma standardComplexLocalClass_ne_zero_iff (p : ℕ) : - standardComplexLocalClass ℚ p ≠ 0 ↔ standardLocalClass ℚ (p * 2) ≠ 0 := by + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ p ≠ 0 ↔ _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (p * 2) ≠ 0 := by change relativeHomologyDegreeCast (Nat.mul_comm p 2) (standardComplexLocalClassMul p) ≠ 0 ↔ _ rw [relativeHomologyDegreeCast_ne_zero_iff, @@ -75,13 +81,13 @@ lemma standardComplexLocalClass_ne_zero_iff (p : ℕ) : lemma span_standardComplexLocalClassMul_eq_top_iff (p : ℕ) : Submodule.span ℚ {standardComplexLocalClassMul p} = ⊤ ↔ - Submodule.span ℚ {standardLocalClass ℚ (p * 2)} = ⊤ := by - let e := (standardComplexRealRelativeHomologyIso ℚ p).toLinearEquiv - have he : e (standardComplexLocalClassMul p) = standardLocalClass ℚ (p * 2) := + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (p * 2)} = ⊤ := by + let e := (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexRealRelativeHomologyIso ℚ p).toLinearEquiv + have he : e (standardComplexLocalClassMul p) = _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (p * 2) := standardComplexRealRelativeHomologyIso_hom_standardComplexLocalClassMul p have hmap : (Submodule.span ℚ {standardComplexLocalClassMul p}).map e.toLinearMap = - Submodule.span ℚ {standardLocalClass ℚ (p * 2)} := by + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (p * 2)} := by rw [Submodule.map_span] simp [he] have etop : (⊤ : Submodule ℚ _).map e.toLinearMap = ⊤ := by @@ -95,25 +101,25 @@ lemma span_standardComplexLocalClassMul_eq_top_iff (p : ℕ) : rw [hmap, h, etop] lemma span_standardComplexLocalClass_eq_top_iff (p : ℕ) : - Submodule.span ℚ {standardComplexLocalClass ℚ p} = ⊤ ↔ - Submodule.span ℚ {standardLocalClass ℚ (p * 2)} = ⊤ := by + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ p} = ⊤ ↔ + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (p * 2)} = ⊤ := by change Submodule.span ℚ {relativeHomologyDegreeCast (Nat.mul_comm p 2) (standardComplexLocalClassMul p)} = ⊤ ↔ _ rw [span_relativeHomologyDegreeCast_eq_top_iff, span_standardComplexLocalClassMul_eq_top_iff] lemma isEmpty_puncturedPair_zero_simplices (n : ℕ) : - IsEmpty ((TopCat.toSSet.obj (puncturedPair ℝ 0).snd) _⦋n⦌) := by + IsEmpty ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0).snd) _⦋n⦌) := by constructor intro σ - let f := ((puncturedPair ℝ 0).snd.toSSetObjEquiv _ ) σ + let f := ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0).snd.toSSetObjEquiv _ ) σ let y := f Convexity.StdSimplex.barycenter apply y.2 funext j exact Fin.elim0 j lemma standardPairChainMap_zero : - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 0)).hom = 0 := by + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0)).hom = 0 := by apply HomologicalComplex.hom_ext intro n apply SSet.chainComplex_hom_ext @@ -121,28 +127,28 @@ lemma standardPairChainMap_zero : exact (isEmpty_puncturedPair_zero_simplices n).false σ |>.elim noncomputable instance standardLocalProjectionZeroIsIso : - IsIso (relativeChainProjection ℚ (puncturedPair ℝ 0)) := + IsIso (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0)) := cokernel.π_of_zero standardPairChainMap_zero /-- The relative-chain projection with its ambient source exposed through the pair functor. -/ def standardRelativeChainProjectionZero : - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 0)).right ⟶ - standardLocalRelativeChainComplex ℚ 0 := - relativeChainProjection ℚ (puncturedPair ℝ 0) + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0)).right ⟶ + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalRelativeChainComplex ℚ 0 := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0) noncomputable instance standardRelativeChainProjectionZeroIsIso : IsIso standardRelativeChainProjectionZero := cokernel.π_of_zero standardPairChainMap_zero def standardRelativeHomologyProjectionZeroIso : - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 0)).right.homology 0 ≅ - RelativeHomology ℚ (puncturedPair ℝ 0) 0 := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0)).right.homology 0 ≅ + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0) 0 := HomologicalComplex.homologyMapIso (asIso standardRelativeChainProjectionZero) 0 /-- The zero-dimensional standard relative local homology group is canonically one-dimensional. -/ def standardLocalRelativeHomologyZeroIso : - RelativeHomology ℚ (puncturedPair ℝ 0) 0 ≅ ModuleCat.of ℚ ℚ := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0) 0 ≅ ModuleCat.of ℚ ℚ := letI (j : Fin 0) : TotallyDisconnectedSpace ℝ := Fin.elim0 j letI : TotallyDisconnectedSpace (Fin 0 → ℝ) := inferInstance standardRelativeHomologyProjectionZeroIso.symm ≪≫ @@ -155,39 +161,39 @@ def standardLocalRelativeHomologyZeroIso : /-- The ambient zero-cycle represented by the unique singular point of `ℝ⁰`. -/ def standardAmbientCycleZero : ModuleCat.of ℚ ℚ ⟶ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 0)).right.cycles 0 := - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 0)).right.liftCycles - (standardAmbientSimplexChain ℚ 0) 0 (by simp) (by - rw [((chainPairFunctor ℚ).obj (puncturedPair ℝ 0)).right.shape 0 0 (by simp)] + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0)).right.cycles 0 := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0)).right.liftCycles + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAmbientSimplexChain ℚ 0) 0 (by simp) (by + rw [((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0)).right.shape 0 0 (by simp)] exact comp_zero) /-- The class of the unique singular point in the ambient homology of `ℝ⁰`. -/ def standardAmbientClassZero : - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 0)).right.homology 0 := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0)).right.homology 0 := ((standardAmbientCycleZero ≫ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 0)).right.homologyπ 0).hom) 1 + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0)).right.homologyπ 0).hom) 1 lemma standardAmbientCycleZero_projection : standardAmbientCycleZero ≫ HomologicalComplex.cyclesMap standardRelativeChainProjectionZero 0 = - standardLocalCycle ℚ 0 := by - apply (cancel_mono ((standardLocalRelativeChainComplex ℚ 0).iCycles 0)).mp - rw [Category.assoc, HomologicalComplex.cyclesMap_i, standardLocalCycle_inclusion, + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalCycle ℚ 0 := by + apply (cancel_mono ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalRelativeChainComplex ℚ 0).iCycles 0)).mp + rw [Category.assoc, HomologicalComplex.cyclesMap_i, _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassBoundary.Singular.standardLocalCycle_inclusion, ← Category.assoc, standardAmbientCycleZero, HomologicalComplex.liftCycles_i] rfl lemma standardAmbientClassZero_projection : standardRelativeHomologyProjectionZeroIso.hom.hom standardAmbientClassZero = - standardLocalClass ℚ 0 := by + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ 0 := by have hmor : standardAmbientCycleZero ≫ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 0)).right.homologyπ 0 ≫ + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0)).right.homologyπ 0 ≫ standardRelativeHomologyProjectionZeroIso.hom = - standardLocalCycle ℚ 0 ≫ (standardLocalRelativeChainComplex ℚ 0).homologyπ 0 := by + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalCycle ℚ 0 ≫ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalRelativeChainComplex ℚ 0).homologyπ 0 := by change standardAmbientCycleZero ≫ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 0)).right.homologyπ 0 ≫ + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0)).right.homologyπ 0 ≫ HomologicalComplex.homologyMap standardRelativeChainProjectionZero 0 = _ rw [HomologicalComplex.homologyπ_naturality, ← Category.assoc, standardAmbientCycleZero_projection] @@ -195,13 +201,13 @@ lemma standardAmbientClassZero_projection : /-- The ordinary `H₀` augmentation, with its source exposed through the pair functor. -/ def standardAmbientHomologyZeroε : - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 0)).right.homology 0 ⟶ + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0)).right.homology 0 ⟶ ModuleCat.of ℚ ℚ := - (puncturedPair ℝ 0).fst.singularHomology₀ε (ModuleCat.of ℚ ℚ) + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0).fst.singularHomology₀ε (ModuleCat.of ℚ ℚ) /-- The augmentation on zero-dimensional relative local homology. -/ def standardLocalRelativeHomologyZeroε : - RelativeHomology ℚ (puncturedPair ℝ 0) 0 ⟶ ModuleCat.of ℚ ℚ := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0) 0 ⟶ ModuleCat.of ℚ ℚ := standardRelativeHomologyProjectionZeroIso.inv ≫ standardAmbientHomologyZeroε @@ -209,25 +215,25 @@ lemma standardAmbientClassZero_epsilon : standardAmbientHomologyZeroε.hom standardAmbientClassZero = 1 := by have h := SSet.liftCycles_ιChainComplex_homologyπ_homology₀ε - (TopCat.toSSet.obj (puncturedPair ℝ 0).fst) (ModuleCat.of ℚ ℚ) - (standardSingularSimplex 0) + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0).fst) (ModuleCat.of ℚ ℚ) + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardSingularSimplex 0) have hmor : standardAmbientCycleZero ≫ - ((chainPairFunctor ℚ).obj (puncturedPair ℝ 0)).right.homologyπ 0 ≫ + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0)).right.homologyπ 0 ≫ standardAmbientHomologyZeroε = 𝟙 (ModuleCat.of ℚ ℚ) := by change - ((TopCat.toSSet.obj (puncturedPair ℝ 0).fst).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0).fst).chainComplex (ModuleCat.of ℚ ℚ)).liftCycles - ((TopCat.toSSet.obj (puncturedPair ℝ 0).fst).ιChainComplex - (standardSingularSimplex 0)) 0 (by simp) (by simp) ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ 0).fst).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0).fst).ιChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardSingularSimplex 0)) 0 (by simp) (by simp) ≫ + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0).fst).chainComplex (ModuleCat.of ℚ ℚ)).homologyπ 0 ≫ - (TopCat.toSSet.obj (puncturedPair ℝ 0).fst).homology₀ε + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ 0).fst).homology₀ε (ModuleCat.of ℚ ℚ) = 𝟙 (ModuleCat.of ℚ ℚ) exact h exact ConcreteCategory.congr_hom hmor 1 lemma standardLocalClass_zero_epsilon : - standardLocalRelativeHomologyZeroε.hom (standardLocalClass ℚ 0) = 1 := by + standardLocalRelativeHomologyZeroε.hom (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ 0) = 1 := by rw [← standardAmbientClassZero_projection] change standardAmbientHomologyZeroε.hom (standardRelativeHomologyProjectionZeroIso.inv.hom @@ -235,37 +241,42 @@ lemma standardLocalClass_zero_epsilon : rw [standardRelativeHomologyProjectionZeroIso.hom_inv_id_apply] exact standardAmbientClassZero_epsilon -lemma standardLocalClass_zero_ne_zero : standardLocalClass ℚ 0 ≠ 0 := by +lemma standardLocalClass_zero_ne_zero : _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ 0 ≠ 0 := by intro h have := standardLocalClass_zero_epsilon rw [h, map_zero] at this exact zero_ne_one this lemma span_standardLocalClass_zero_eq_top : - Submodule.span ℚ {standardLocalClass ℚ 0} = ⊤ := by + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ 0} = ⊤ := by let e := standardLocalRelativeHomologyZeroIso.toLinearEquiv - have he : e (standardLocalClass ℚ 0) ≠ (0 : ℚ) := + have he : e (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ 0) ≠ (0 : ℚ) := e.map_ne_zero_iff.mpr standardLocalClass_zero_ne_zero have hmap : - (Submodule.span ℚ {standardLocalClass ℚ 0}).map e.toLinearMap = - Submodule.span ℚ {e (standardLocalClass ℚ 0)} := by + (Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ 0}).map e.toLinearMap = + Submodule.span ℚ {e (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ 0)} := by rw [Submodule.map_span] simp only [Set.image_singleton] - change Submodule.span ℚ {e (standardLocalClass ℚ 0)} = _ + change Submodule.span ℚ {e (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ 0)} = _ rfl - have hone : Submodule.span ℚ {e (standardLocalClass ℚ 0)} = ⊤ := by - apply (Submodule.span_singleton_eq_top_iff ℚ (e (standardLocalClass ℚ 0))).mpr + have hone : Submodule.span ℚ {e (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ 0)} = ⊤ := by + apply (Submodule.span_singleton_eq_top_iff ℚ (e (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ 0))).mpr intro q - exact ⟨q / e (standardLocalClass ℚ 0), by + exact ⟨q / e (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ 0), by simpa only [smul_eq_mul] using div_mul_cancel₀ q he⟩ apply Submodule.map_injective_of_injective e.injective rw [hmap, hone, Submodule.map_top] exact (LinearMap.range_eq_top.mpr e.surjective).symm lemma span_standardComplexLocalClass_zero_eq_top : - Submodule.span ℚ {standardComplexLocalClass ℚ 0} = ⊤ := by + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ 0} = ⊤ := by have h := (span_standardComplexLocalClassMul_eq_top_iff 0).mpr span_standardLocalClass_zero_eq_top - simpa [standardComplexLocalClass, standardComplexLocalClassMul] using h + simpa [_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass, standardComplexLocalClassMul] using h + +end Singular +end + +end -end AlgebraicTopology.Singular +end OAI.AlgebraicTopology.LocalHomology.FundamentalClassGenerator diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/HolomorphicNormalTransition.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/HolomorphicNormalTransition.lean index 21dc9da99f..9b6d6b8433 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/HolomorphicNormalTransition.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/HolomorphicNormalTransition.lean @@ -1,12 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalClassGenerator -public import Mathlib.Analysis.Calculus.FDeriv.Prod +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalClassGenerator +import Mathlib.Analysis.Calculus.FDeriv.Prod + +namespace OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition /-! # The normal derivative of a support-preserving holomorphic transition @@ -17,11 +20,12 @@ Invertibility and orientation preservation of the normal map both follow from th holomorphic support-preserving coordinate transition. -/ -@[expose] public noncomputable section +noncomputable section -open Topology Filter CategoryTheory +open _root_.Topology Filter _root_.CategoryTheory -namespace AlgebraicTopology.Singular +section +namespace Singular section GeneralNormal @@ -185,22 +189,22 @@ theorem exists_open_normalTransition_localClass_invariance : ∃ (W : Set (Fin c → ℂ)) (hW : W ⊆ normalTransitionDomain c e a) (hne : ∀ v, v ∈ W → v ≠ 0 → normalTransitionMap c e a v ≠ 0), IsOpen W ∧ 0 ∈ W ∧ - ∀ z : RelativeHomology ℚ (neighborhoodPointComplementPair W 0) (2 * c), - relativeHomologyMap ℚ (2 * c) (neighborhoodPointComplementPairMap W 0) z = - standardComplexLocalClass ℚ c → - relativeHomologyMap ℚ (2 * c) - (complexNeighborhoodPuncturedPairMapOf c W (normalTransitionMap c e a) + ∀ z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPair W 0) (2 * c), + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * c) (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPairMap W 0) z = + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ c → + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * c) + (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassDifferentiableInvariance.Singular.complexNeighborhoodPuncturedPairMapOf c W (normalTransitionMap c e a) ((normalTransitionMap_continuousOn c e a).mono hW) - hne) z = standardComplexLocalClass ℚ c := by + hne) z = _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ c := by let L := normalTransitionDerivativeEquiv e a ha hplane he hei - let A := complexMatrixOfContinuousLinearMap c L.toContinuousLinearMap + let A := _root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance.Singular.complexMatrixOfContinuousLinearMap c L.toContinuousLinearMap have hA : A.det ≠ 0 := - complexMatrixOfContinuousLinearMap_det_ne_zero c L.toContinuousLinearMap L.injective + _root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance.Singular.complexMatrixOfContinuousLinearMap_det_ne_zero c L.toContinuousLinearMap L.injective have hAL : (A.mulVecLin.toContinuousLinearMap : (Fin c → ℂ) →L[ℂ] (Fin c → ℂ)) = L.toContinuousLinearMap := ContinuousLinearMap.ext fun v => - complexMatrixOfContinuousLinearMap_mulVec c L.toContinuousLinearMap v - apply exists_open_complexDifferentiable_localClass_invariance c A hA + _root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance.Singular.complexMatrixOfContinuousLinearMap_mulVec c L.toContinuousLinearMap v + apply _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassDifferentiableInvariance.Singular.exists_open_complexDifferentiable_localClass_invariance c A hA (normalTransitionDomain c e a) (normalTransitionDomain_isOpen c e a) ha (normalTransitionMap c e a) (normalTransitionMap_continuousOn c e a) (normalTransitionMap_zero c e a ha hplane) @@ -209,4 +213,9 @@ theorem exists_open_normalTransition_localClass_invariance : end StandardNormal -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/NormalProjectionCoclass.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/NormalProjectionCoclass.lean index 6d35c0653a..3a242a3f9b 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/NormalProjectionCoclass.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/NormalProjectionCoclass.lean @@ -1,10 +1,13 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.NormalProjectionCoclass +import HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.NormalProjectionCoclass + +namespace OAI.AlgebraicTopology.LocalHomology.NormalProjectionTop /-! # Normal projections and the local support coclass @@ -13,11 +16,12 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicTopology.LocalHomology.NormalProjectionCoclass`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicTopology.Singular +section +namespace Singular variable {M : Type} [TopologicalSpace M] @@ -28,17 +32,17 @@ variable (E : Type) [NormedAddCommGroup E] [NormedSpace ℝ E] (c : ℕ) omit [NormedSpace ℝ E] in theorem neighborhoodSupportInclusion_comp_chartNormalProjection {W V : Set M} (hWV : W ⊆ V) (hV : V ⊆ e.source) : - neighborhoodSupportInclusionPairMap hWV S ≫ chartNormalProjectionPair E c e S hS V hV = - chartNormalProjectionPair E c e S hS W (hWV.trans hV) := rfl + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap hWV S ≫ _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionPair E c e S hS V hV = + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionPair E c e S hS W (hWV.trans hV) := rfl omit [NormedSpace ℝ E] in /-- The chart coclass is compatible with neighborhood inclusion. -/ theorem chartNormalProjectionCoclass_restrict {W V : Set M} (hWV : W ⊆ V) (hV : V ⊆ e.source) : - relativeCohomologyMap ℚ (2 * c) (neighborhoodSupportInclusionPairMap hWV S) - (chartNormalProjectionCoclass E c e S hS V hV) = - chartNormalProjectionCoclass E c e S hS W (hWV.trans hV) := by - unfold chartNormalProjectionCoclass - rw [← LinearMap.comp_apply, ← relativeCohomologyMap_comp, + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ (2 * c) (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap hWV S) + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionCoclass E c e S hS V hV) = + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionCoclass E c e S hS W (hWV.trans hV) := by + unfold _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionCoclass + rw [← LinearMap.comp_apply, ← _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeCohomologyMap_comp, neighborhoodSupportInclusion_comp_chartNormalProjection] /-- On a zero-tangent fiber, the product radial compression has exactly the usual @@ -56,106 +60,111 @@ variable (x : M) (hx : x ∈ e.source) (h0 : (e x).2 = 0) /-- The normal fiber, local pair homeomorphism, and normal projection compose to the standard radial point-complement map, scale included. -/ theorem normalFiber_comp_chartNormalProjection : - normalSliceSection E c ≫ (flattenedSupportPairIso E c e x hx S hS h0).hom ≫ - chartNormalProjectionPair E c e S hS (flattenedSupportNeighborhood E c e x hx) - (flattenedSupportNeighborhood_subset_source E c e x hx) = - centeredComplexEmbeddingPair c - (OpenPartialHomeomorph.univBall (0 : Fin c → ℂ) (flattenedSupportRadius E c e x hx)) - (continuous_complexUnivBall c _ _) (injective_complexUnivBall c _ _) 0 := by + _root_.OAI.AlgebraicTopology.LocalHomology.NormalSlicePurity.Singular.normalSliceSection E c ≫ (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportPairIso E c e x hx S hS h0).hom ≫ + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionPair E c e S hS (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood E c e x hx) + (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood_subset_source E c e x hx) = + _root_.OAI.AlgebraicTopology.LocalHomology.CenteredComplexOrientation.Singular.centeredComplexEmbeddingPair c + (OpenPartialHomeomorph.univBall (0 : Fin c → ℂ) (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportRadius E c e x hx)) + (_root_.OAI.AlgebraicTopology.LocalHomology.CenteredComplexOrientation.Singular.continuous_complexUnivBall c _ _) (_root_.OAI.AlgebraicTopology.LocalHomology.CenteredComplexOrientation.Singular.injective_complexUnivBall c _ _) 0 := by have hp (v : Fin c → ℂ) : - (e (flattenedSupportHomeomorph E c e x hx (0, v))).2 = - OpenPartialHomeomorph.univBall (0 : Fin c → ℂ) (flattenedSupportRadius E c e x hx) v := by - rw [flattenedSupportHomeomorph_coordinates] + (e (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportHomeomorph E c e x hx (0, v))).2 = + OpenPartialHomeomorph.univBall (0 : Fin c → ℂ) (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportRadius E c e x hx) v := by + rw [_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportHomeomorph_coordinates] have he : e x = ((e x).1, (0 : Fin c → ℂ)) := Prod.ext rfl h0 rw [he] - exact univBall_zero_tangent_normal E c _ _ (flattenedSupportRadius_pos E c e x hx) v + exact univBall_zero_tangent_normal E c _ _ (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportRadius_pos E c e x hx) v apply MorphismProperty.Arrow.Hom.ext · ext v apply Subtype.ext - change (e (flattenedSupportHomeomorph E c e x hx (0, v.1))).2 = - OpenPartialHomeomorph.univBall (0 : Fin c → ℂ) (flattenedSupportRadius E c e x hx) (v.1 + 0) - - OpenPartialHomeomorph.univBall (0 : Fin c → ℂ) (flattenedSupportRadius E c e x hx) 0 + change (e (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportHomeomorph E c e x hx (0, v.1))).2 = + OpenPartialHomeomorph.univBall (0 : Fin c → ℂ) (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportRadius E c e x hx) (v.1 + 0) - + OpenPartialHomeomorph.univBall (0 : Fin c → ℂ) (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportRadius E c e x hx) 0 simpa only [add_zero, OpenPartialHomeomorph.univBall_apply_zero, sub_zero] using hp v.1 · ext v change Fin c → ℂ at v - change (e (flattenedSupportHomeomorph E c e x hx (0, v))).2 = - OpenPartialHomeomorph.univBall (0 : Fin c → ℂ) (flattenedSupportRadius E c e x hx) (v + 0) - - OpenPartialHomeomorph.univBall (0 : Fin c → ℂ) (flattenedSupportRadius E c e x hx) 0 + change (e (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportHomeomorph E c e x hx (0, v))).2 = + OpenPartialHomeomorph.univBall (0 : Fin c → ℂ) (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportRadius E c e x hx) (v + 0) - + OpenPartialHomeomorph.univBall (0 : Fin c → ℂ) (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportRadius E c e x hx) 0 simpa only [add_zero, OpenPartialHomeomorph.univBall_apply_zero, sub_zero] using hp v /-- The flattened-support normal class is the image of the fixed class on this normal fiber. -/ theorem flattenedSupportNormalClass_eq_normalFiber : - flattenedSupportNormalClass E c e x hx S hS h0 = - relativeHomologyMap ℚ (2 * c) - (normalSliceSection E c ≫ (flattenedSupportPairIso E c e x hx S hS h0).hom) - (standardComplexLocalClass ℚ c) := by aesop + _root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNormalClass E c e x hx S hS h0 = + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * c) + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalSlicePurity.Singular.normalSliceSection E c ≫ (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportPairIso E c e x hx S hS h0).hom) + (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ c) := by aesop /-- Normal projection sends the local normal class to the exactly normalized standard class. -/ theorem chartNormalProjection_normalClass : - relativeHomologyMap ℚ (2 * c) - (chartNormalProjectionPair E c e S hS (flattenedSupportNeighborhood E c e x hx) - (flattenedSupportNeighborhood_subset_source E c e x hx)) - (flattenedSupportNormalClass E c e x hx S hS h0) = standardComplexLocalClass ℚ c := by + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * c) + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionPair E c e S hS (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood E c e x hx) + (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood_subset_source E c e x hx)) + (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNormalClass E c e x hx S hS h0) = _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ c := by rw [flattenedSupportNormalClass_eq_normalFiber, ← LinearMap.comp_apply, - ← relativeHomologyMap_comp, Category.assoc, normalFiber_comp_chartNormalProjection] - exact centeredComplexUnivBall_preserves_standardComplexLocalClass c _ _ - (flattenedSupportRadius_pos E c e x hx) 0 + ← _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap_comp, Category.assoc, normalFiber_comp_chartNormalProjection] + exact _root_.OAI.AlgebraicTopology.LocalHomology.CenteredComplexOrientation.Singular.centeredComplexUnivBall_preserves_standardComplexLocalClass c _ _ + (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportRadius_pos E c e x hx) 0 /-- The chart-projection coclass has precisely the required normalization. -/ theorem chartNormalProjectionCoclass_apply_normalClass : - relativeCohomologyEquivDualHomology ℚ - (neighborhoodSupportComplementPair (flattenedSupportNeighborhood E c e x hx) S) (2 * c) - (chartNormalProjectionCoclass E c e S hS (flattenedSupportNeighborhood E c e x hx) - (flattenedSupportNeighborhood_subset_source E c e x hx)) - (flattenedSupportNormalClass E c e x hx S hS h0) = 1 := by - simp [chartNormalProjectionCoclass, relativeCohomologyEquivDualHomology_relativeCohomologyMap, - relativeCohomologyEquivDualHomology_normalizedRelativeCoclass, - chartNormalProjection_normalClass, normalizedDual_apply_self] + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood E c e x hx) S) (2 * c) + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionCoclass E c e S hS (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood E c e x hx) + (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood_subset_source E c e x hx)) + (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNormalClass E c e x hx S hS h0) = 1 := by + simp [_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionCoclass, _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeCohomologyEquivDualHomology_relativeCohomologyMap, + _root_.OAI.AlgebraicGeometry.Cycle.LocalPurityOf.AlgebraicTopology.Singular.relativeCohomologyEquivDualHomology_normalizedRelativeCoclass, + chartNormalProjection_normalClass, _root_.OAI.AlgebraicGeometry.Cycle.LocalPurityOf.AlgebraicTopology.Singular.normalizedDual_apply_self] /-- Generation follows from the pair isomorphism and contraction. -/ theorem span_flattenedSupportNormalClass_eq_top : - Submodule.span ℚ {flattenedSupportNormalClass E c e x hx S hS h0} = ⊤ := by - let eH := (flattenedSupportRelativeHomologyIso E c e x hx S hS h0 (2 * c)).symm.toLinearEquiv - have h := congrArg (Submodule.map eH.toLinearMap) (span_standardComplexLocalClass_eq_top_for_chart c) + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNormalClass E c e x hx S hS h0} = ⊤ := by + let eH := (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportRelativeHomologyIso E c e x hx S hS h0 (2 * c)).symm.toLinearEquiv + have h := congrArg (Submodule.map eH.toLinearMap) (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassGenerator.Singular.span_standardComplexLocalClass_eq_top_for_chart c) rwa [Submodule.map_span, Set.image_singleton, Submodule.map_top, LinearEquiv.range] at h include h0 in /-- In top normal degree the normal projection is injective, by the pair computation and its exact normalization. -/ theorem chartNormalProjection_relativeHomologyMap_injective : - Function.Injective (relativeHomologyMap ℚ (2 * c) - (chartNormalProjectionPair E c e S hS (flattenedSupportNeighborhood E c e x hx) - (flattenedSupportNeighborhood_subset_source E c e x hx))) := by + Function.Injective (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * c) + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionPair E c e S hS (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood E c e x hx) + (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood_subset_source E c e x hx))) := by intro v w hvw have hg := (Submodule.span_singleton_eq_top_iff ℚ - (flattenedSupportNormalClass E c e x hx S hS h0)).mp + (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNormalClass E c e x hx S hS h0)).mp (span_flattenedSupportNormalClass_eq_top E c e S hS x hx h0) obtain ⟨r, rfl⟩ := hg v obtain ⟨s, rfl⟩ := hg w rw [map_smul, map_smul, chartNormalProjection_normalClass] at hvw - rw [smul_left_injective ℚ (standardComplexLocalClass_ne_zero_for_chart c) hvw] + rw [smul_left_injective ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassGenerator.Singular.standardComplexLocalClass_ne_zero_for_chart c) hvw] /-- A local supported coclass equals the normal-projection coclass precisely when it evaluates to one on the normal class. -/ theorem chartNormalProjectionCoclass_unique - (α : RelativeCohomology ℚ - (neighborhoodSupportComplementPair (flattenedSupportNeighborhood E c e x hx) S) (2 * c)) - (hα : relativeCohomologyEquivDualHomology ℚ - (neighborhoodSupportComplementPair (flattenedSupportNeighborhood E c e x hx) S) (2 * c) α - (flattenedSupportNormalClass E c e x hx S hS h0) = 1) : - α = chartNormalProjectionCoclass E c e S hS (flattenedSupportNeighborhood E c e x hx) - (flattenedSupportNeighborhood_subset_source E c e x hx) := by - have hne : flattenedSupportNormalClass E c e x hx S hS h0 ≠ 0 := by + (α : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood E c e x hx) S) (2 * c)) + (hα : _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood E c e x hx) S) (2 * c) α + (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNormalClass E c e x hx S hS h0) = 1) : + α = _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionCoclass E c e S hS (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood E c e x hx) + (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood_subset_source E c e x hx) := by + have hne : _root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNormalClass E c e x hx S hS h0 ≠ 0 := by intro hz have h := chartNormalProjectionCoclass_apply_normalClass E c e S hS x hx h0 rw [hz, map_zero] at h exact zero_ne_one h - exact (normalizedRelativeCoclass_unique hne + exact (_root_.OAI.AlgebraicGeometry.Cycle.LocalPurityOf.AlgebraicTopology.Singular.normalizedRelativeCoclass_unique hne (span_flattenedSupportNormalClass_eq_top E c e S hS x hx h0) α hα).trans - (normalizedRelativeCoclass_unique hne + (_root_.OAI.AlgebraicGeometry.Cycle.LocalPurityOf.AlgebraicTopology.Singular.normalizedRelativeCoclass_unique hne (span_flattenedSupportNormalClass_eq_top E c e S hS x hx h0) _ (chartNormalProjectionCoclass_apply_normalClass E c e S hS x hx h0)).symm -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.NormalProjectionTop diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/NormalProjectionOverlap.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/NormalProjectionOverlap.lean index e11fa69f64..0265a045d8 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/NormalProjectionOverlap.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/NormalProjectionOverlap.lean @@ -1,11 +1,14 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.NormalProjectionCoclass -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.NormalProjectionCoclass +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition + +namespace OAI.AlgebraicTopology.LocalHomology.NormalProjectionOverlap /-! # Normal fibers and ambient overlap compatibility @@ -15,11 +18,12 @@ pairs. Complex orientation invariance of the normal transition therefore gives a of the ambient supported coclasses, not just an abstract transverse comparison. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace AlgebraicTopology.Singular +section +namespace Singular section Transverse @@ -35,28 +39,28 @@ normal neighborhood. This permits the transverse pair map to land in a chosen common ambient neighborhood. -/ theorem exists_open_normalTransition_localClass_invariance_within (U : Set (Fin c → ℂ)) (hU : IsOpen U) (h0U : 0 ∈ U) - (hUt : U ⊆ normalTransitionDomain c t a) : + (hUt : U ⊆ _root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransitionDomain c t a) : ∃ (V : Set (Fin c → ℂ)) (hV : V ⊆ U) - (hne : ∀ v, v ∈ V → v ≠ 0 → normalTransitionMap c t a v ≠ 0), + (hne : ∀ v, v ∈ V → v ≠ 0 → _root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransitionMap c t a v ≠ 0), IsOpen V ∧ 0 ∈ V ∧ - ∀ z : RelativeHomology ℚ (neighborhoodPointComplementPair V 0) (2 * c), - relativeHomologyMap ℚ (2 * c) (neighborhoodPointComplementPairMap V 0) z = - standardComplexLocalClass ℚ c → - relativeHomologyMap ℚ (2 * c) - (complexNeighborhoodPuncturedPairMapOf c V (normalTransitionMap c t a) - ((normalTransitionMap_continuousOn c t a).mono (hV.trans hUt)) - hne) z = standardComplexLocalClass ℚ c := by - let L := normalTransitionDerivativeEquiv t a ha hp ht hti - let A := complexMatrixOfContinuousLinearMap c L.toContinuousLinearMap - have hA := complexMatrixOfContinuousLinearMap_det_ne_zero c L.toContinuousLinearMap L.injective + ∀ z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPair V 0) (2 * c), + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * c) (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPairMap V 0) z = + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ c → + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * c) + (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassDifferentiableInvariance.Singular.complexNeighborhoodPuncturedPairMapOf c V (_root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransitionMap c t a) + ((_root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransitionMap_continuousOn c t a).mono (hV.trans hUt)) + hne) z = _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ c := by + let L := _root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransitionDerivativeEquiv t a ha hp ht hti + let A := _root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance.Singular.complexMatrixOfContinuousLinearMap c L.toContinuousLinearMap + have hA := _root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance.Singular.complexMatrixOfContinuousLinearMap_det_ne_zero c L.toContinuousLinearMap L.injective have hAL : (A.mulVecLin.toContinuousLinearMap : (Fin c → ℂ) →L[ℂ] (Fin c → ℂ)) = L.toContinuousLinearMap := - ContinuousLinearMap.ext (complexMatrixOfContinuousLinearMap_mulVec c L.toContinuousLinearMap) - apply exists_open_complexDifferentiable_localClass_invariance c A hA U hU h0U - (normalTransitionMap c t a) ((normalTransitionMap_continuousOn c t a).mono hUt) - (normalTransitionMap_zero c t a ha hp) + ContinuousLinearMap.ext (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassInvariance.Singular.complexMatrixOfContinuousLinearMap_mulVec c L.toContinuousLinearMap) + apply _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassDifferentiableInvariance.Singular.exists_open_complexDifferentiable_localClass_invariance c A hA U hU h0U + (_root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransitionMap c t a) ((_root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransitionMap_continuousOn c t a).mono hUt) + (_root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransitionMap_zero c t a ha hp) rw [hAL] - exact normalTransition_hasFDerivAt t a ha hp ht hti + exact _root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransition_hasFDerivAt t a ha hp ht hti end Transverse @@ -73,7 +77,7 @@ with the locus where the second coordinate is zero. Fix `a ∈ E`, `W ⊆ M`, an that `(a,v)` lies in the chart target and `e⁻¹(a,v) ∈ W` for every `v ∈ V`. This map of pairs `(V,V \ {0}) → (W,W \ S)` sends `v` to `e⁻¹(a,v)`. -/ def chartNormalFiberPair : - neighborhoodPointComplementPair V 0 ⟶ neighborhoodSupportComplementPair W S := + _root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPair V 0 ⟶ _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair W S := have hc : Continuous (fun v : V => e.symm (a, v.1)) := e.symm.continuousOn.comp_continuous (continuous_const.prodMk continuous_subtype_val) (fun v => (hV v.1 v.2).1) @@ -90,8 +94,8 @@ def chartNormalFiberPair : omit [NormedSpace ℝ E] in /-- In the chart used to define the fiber, normal projection is inclusion. -/ theorem chartNormalFiber_comp_projection (hW : W ⊆ e.source) : - chartNormalFiberPair c e S hS a W V hV ≫ chartNormalProjectionPair E c e S hS W hW = - neighborhoodPointComplementPairMap V 0 := by + chartNormalFiberPair c e S hS a W V hV ≫ _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionPair E c e S hS W hW = + _root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplementPairMap V 0 := by apply MorphismProperty.Arrow.Hom.ext · ext v apply Subtype.ext @@ -104,10 +108,10 @@ omit [NormedSpace ℝ E] in theorem chartNormalFiber_comp_other_projection (e' : OpenPartialHomeomorph M (E × (Fin c → ℂ))) (hS' : ∀ y ∈ e'.source, y ∈ S ↔ (e' y).2 = 0) (hW' : W ⊆ e'.source) - (hf : ContinuousOn (normalTransitionMap c (e.symm.trans e') a) V) - (hne : ∀ v, v ∈ V → v ≠ 0 → normalTransitionMap c (e.symm.trans e') a v ≠ 0) : - chartNormalFiberPair c e S hS a W V hV ≫ chartNormalProjectionPair E c e' S hS' W hW' = - complexNeighborhoodPuncturedPairMapOf c V (normalTransitionMap c (e.symm.trans e') a) + (hf : ContinuousOn (_root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransitionMap c (e.symm.trans e') a) V) + (hne : ∀ v, v ∈ V → v ≠ 0 → _root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransitionMap c (e.symm.trans e') a v ≠ 0) : + chartNormalFiberPair c e S hS a W V hV ≫ _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionPair E c e' S hS' W hW' = + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClassDifferentiableInvariance.Singular.complexNeighborhoodPuncturedPairMapOf c V (_root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransitionMap c (e.symm.trans e') a) hf hne := rfl end Fiber @@ -136,13 +140,13 @@ include h0 in normal-projection coclasses agree. The proof factors both projections through the same normal fiber and uses the complex normal-transition orientation theorem. -/ theorem chartNormalProjectionCoclass_eq_on_flattenedNeighborhood - (hW' : (flattenedSupportNeighborhood E c e x hx : Set M) ⊆ e'.source) + (hW' : (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood E c e x hx : Set M) ⊆ e'.source) (ht : AnalyticAt ℂ (e.symm.trans e') (e x)) (hti : AnalyticAt ℂ (e.symm.trans e').symm ((e.symm.trans e') (e x))) : - chartNormalProjectionCoclass E c e S hS (flattenedSupportNeighborhood E c e x hx) - (flattenedSupportNeighborhood_subset_source E c e x hx) = - chartNormalProjectionCoclass E c e' S hS' (flattenedSupportNeighborhood E c e x hx) hW' := by - let W := flattenedSupportNeighborhood E c e x hx + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionCoclass E c e S hS (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood E c e x hx) + (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood_subset_source E c e x hx) = + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionCoclass E c e' S hS' (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood E c e x hx) hW' := by + let W := _root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood E c e x hx let a := (e x).1 let t := e.symm.trans e' have hex : e x = (a, (0 : Fin c → ℂ)) := Prod.ext rfl h0 @@ -151,7 +155,7 @@ theorem chartNormalProjectionCoclass_eq_on_flattenedNeighborhood refine ⟨e.map_source hx, ?_⟩ change e.symm (e x) ∈ e'.source rw [e.left_inv hx] - exact hW' (mem_flattenedSupportNeighborhood E c e x hx) + exact hW' (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.mem_flattenedSupportNeighborhood E c e x hx) have hp := supportChartTransition_preserves_plane c e e' S hS hS' have hta : AnalyticAt ℂ t (a, 0) := hex ▸ ht have htia : AnalyticAt ℂ t.symm (t (a, 0)) := hex ▸ hti @@ -161,39 +165,39 @@ theorem chartNormalProjectionCoclass_eq_on_flattenedNeighborhood have h0U : 0 ∈ U := by change (a, 0) ∈ e.target ∧ e.symm (a, 0) ∈ W rw [← hex, e.left_inv hx] - exact ⟨e.map_source hx, mem_flattenedSupportNeighborhood E c e x hx⟩ - have hUt : U ⊆ normalTransitionDomain c t a := fun _ hv => ⟨hv.1, hW' hv.2⟩ + exact ⟨e.map_source hx, _root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.mem_flattenedSupportNeighborhood E c e x hx⟩ + have hUt : U ⊆ _root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransitionDomain c t a := fun _ hv => ⟨hv.1, hW' hv.2⟩ obtain ⟨V, hV, hne, hVo, h0V, hclass⟩ := exists_open_normalTransition_localClass_invariance_within c t a h0t hp hta htia U hU h0U hUt have hfiber : ∀ v ∈ V, (a, v) ∈ e.target ∧ e.symm (a, v) ∈ W := fun _ hv => hV hv let F := chartNormalFiberPair c e S hS a W V hfiber - obtain ⟨z, hz⟩ := (neighborhoodPointComplement_relativeHomologyMap_bijective - V 0 hVo h0V (2 * c)).2 (standardComplexLocalClass ℚ c) - have hFz : relativeHomologyMap ℚ (2 * c) F z = - flattenedSupportNormalClass E c e x hx S hS h0 := by - apply chartNormalProjection_relativeHomologyMap_injective E c e S hS x hx h0 - rw [chartNormalProjection_normalClass, ← LinearMap.comp_apply, ← relativeHomologyMap_comp] - change relativeHomologyMap ℚ (2 * c) - (chartNormalFiberPair c e S hS a W V hfiber ≫ chartNormalProjectionPair E c e S hS W _) z = _ + obtain ⟨z, hz⟩ := (_root_.OAI.AlgebraicTopology.Singular.RelativePairExcision.neighborhoodPointComplement_relativeHomologyMap_bijective + V 0 hVo h0V (2 * c)).2 (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ c) + have hFz : _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * c) F z = + _root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNormalClass E c e x hx S hS h0 := by + apply _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionTop.Singular.chartNormalProjection_relativeHomologyMap_injective E c e S hS x hx h0 + rw [_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionTop.Singular.chartNormalProjection_normalClass, ← LinearMap.comp_apply, ← _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap_comp] + change _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * c) + (chartNormalFiberPair c e S hS a W V hfiber ≫ _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionPair E c e S hS W _) z = _ rw [chartNormalFiber_comp_projection] exact hz - have hvalue : relativeCohomologyEquivDualHomology ℚ - (neighborhoodSupportComplementPair (W : Set M) S) (2 * c) - (chartNormalProjectionCoclass E c e' S hS' W hW') - (flattenedSupportNormalClass E c e x hx S hS h0) = 1 := by - rw [← hFz, chartNormalProjectionCoclass, - relativeCohomologyEquivDualHomology_relativeCohomologyMap, - relativeCohomologyEquivDualHomology_normalizedRelativeCoclass, - ← LinearMap.comp_apply (relativeHomologyMap ℚ (2 * c) - (chartNormalProjectionPair E c e' S hS' W hW')), ← relativeHomologyMap_comp] - change normalizedDual (standardComplexLocalClass ℚ c) - (standardComplexLocalClass_ne_zero_for_chart c) - (relativeHomologyMap ℚ (2 * c) - (chartNormalFiberPair c e S hS a W V hfiber ≫ chartNormalProjectionPair E c e' S hS' W hW') z) = 1 + have hvalue : _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology ℚ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (W : Set M) S) (2 * c) + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionCoclass E c e' S hS' W hW') + (_root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNormalClass E c e x hx S hS h0) = 1 := by + rw [← hFz, _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionCoclass, + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeCohomologyEquivDualHomology_relativeCohomologyMap, + _root_.OAI.AlgebraicGeometry.Cycle.LocalPurityOf.AlgebraicTopology.Singular.relativeCohomologyEquivDualHomology_normalizedRelativeCoclass, + ← LinearMap.comp_apply (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * c) + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionPair E c e' S hS' W hW')), ← _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap_comp] + change _root_.OAI.AlgebraicGeometry.Cycle.LocalPurity.AlgebraicTopology.Singular.normalizedDual (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ c) + (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClassGenerator.Singular.standardComplexLocalClass_ne_zero_for_chart c) + (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * c) + (chartNormalFiberPair c e S hS a W V hfiber ≫ _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionPair E c e' S hS' W hW') z) = 1 rw [chartNormalFiber_comp_other_projection c e S hS a W V hfiber e' hS' hW' - ((normalTransitionMap_continuousOn c t a).mono (hV.trans hUt)) - hne, hclass z hz, normalizedDual_apply_self] - exact (chartNormalProjectionCoclass_unique E c e S hS x hx h0 _ hvalue).symm + ((_root_.OAI.AlgebraicTopology.LocalHomology.HolomorphicNormalTransition.Singular.normalTransitionMap_continuousOn c t a).mono (hV.trans hUt)) + hne, hclass z hz, _root_.OAI.AlgebraicGeometry.Cycle.LocalPurityOf.AlgebraicTopology.Singular.normalizedDual_apply_self] + exact (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionTop.Singular.chartNormalProjectionCoclass_unique E c e S hS x hx h0 _ hvalue).symm include hx h0 in /-- Ambient overlap agreement on a sufficiently small common open neighborhood. The local class @@ -204,18 +208,23 @@ theorem exists_open_chartNormalProjectionCoclass_eq (hx' : x ∈ e'.source) (hti : AnalyticAt ℂ (e.symm.trans e').symm ((e.symm.trans e') (e x))) : ∃ (W : TopologicalSpace.Opens M) (hW : (W : Set M) ⊆ e.source) (hW' : (W : Set M) ⊆ e'.source), x ∈ W ∧ - chartNormalProjectionCoclass E c e S hS W hW = - chartNormalProjectionCoclass E c e' S hS' W hW' := by + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionCoclass E c e S hS W hW = + _root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.chartNormalProjectionCoclass E c e' S hS' W hW' := by let er := e.restrOpen e'.source e'.open_source have hxr : x ∈ er.source := ⟨hx, hx'⟩ have hSr : ∀ y ∈ er.source, y ∈ S ↔ (er y).2 = 0 := fun y hy => hS y hy.1 - let W := flattenedSupportNeighborhood E c er x hxr - have hWr := flattenedSupportNeighborhood_subset_source E c er x hxr + let W := _root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood E c er x hxr + have hWr := _root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.flattenedSupportNeighborhood_subset_source E c er x hxr have hW : (W : Set M) ⊆ e.source := fun _ hy => (hWr hy).1 have hW' : (W : Set M) ⊆ e'.source := fun _ hy => (hWr hy).2 - exact ⟨W, hW, hW', mem_flattenedSupportNeighborhood E c er x hxr, + exact ⟨W, hW, hW', _root_.OAI.AlgebraicTopology.LocalHomology.FlattenedSupport.Singular.mem_flattenedSupportNeighborhood E c er x hxr, chartNormalProjectionCoclass_eq_on_flattenedNeighborhood c er e' S hSr hS' x hxr h0 hW' ht hti⟩ end Overlap -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.NormalProjectionOverlap diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/NormalSlicePurity.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/NormalSlicePurity.lean index edc8078c24..538d043cb4 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/NormalSlicePurity.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/NormalSlicePurity.lean @@ -1,11 +1,14 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.LocalHomologyVanishing -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeHomotopyInvariance +import HodgeConjecture.Lemmas.AlgebraicGeometry.ComplexPoint.LocalHomologyVanishing +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeHomotopyInvariance + +namespace OAI.AlgebraicTopology.LocalHomology.NormalSlicePurity /-! # Normal-slice reduction for a product support @@ -17,11 +20,12 @@ relative class is the image of the normalized `standardComplexLocalClass`. This product-model computation for smooth-support purity. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits +open _root_.CategoryTheory _root_.CategoryTheory.Limits -namespace AlgebraicTopology.Singular +section +namespace Singular variable (E : Type) [NormedAddCommGroup E] [NormedSpace ℝ E] (c : ℕ) @@ -32,14 +36,14 @@ abbrev normalSlicePair : TopPair := /-- Let `E` be a real normed vector space and `c ∈ ℕ`. This map of pairs `(E × ℂ^c, E × (ℂ^c \ {0})) → (ℂ^c,ℂ^c \ {0})` is projection `(u,v) ↦ v`. -/ -def normalSliceProjection : normalSlicePair E c ⟶ puncturedPair ℂ c := +def normalSliceProjection : normalSlicePair E c ⟶ _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ c := TopPair.ofHom (TopCat.ofHom ⟨Prod.snd, continuous_snd⟩) (TopCat.ofHom ⟨fun z => ⟨z.1.2, z.2⟩, by fun_prop⟩) (by ext z; rfl) /-- Let `E` be a real normed vector space and `c ∈ ℕ`. This map of pairs `(ℂ^c,ℂ^c \ {0}) → (E × ℂ^c,E × (ℂ^c \ {0}))` sends `v` to `(0,v)`. -/ -def normalSliceSection : puncturedPair ℂ c ⟶ normalSlicePair E c := +def normalSliceSection : _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ c ⟶ normalSlicePair E c := TopPair.ofHom (TopCat.ofHom ⟨fun z => (0, z), continuous_const.prodMk continuous_id⟩) (TopCat.ofHom ⟨fun z => ⟨(0, z.1), z.2⟩, by fun_prop⟩) (by ext z; rfl) @@ -72,15 +76,15 @@ complexes of `(E × ℂ^c,E × (ℂ^c \ {0}))` and `(ℂ^c,ℂ^c \ {0})` are hom equivalence uses projection `(u,v) ↦ v`, section `v ↦ (0,v)`, and the prism chain homotopy induced by `(t,(u,v)) ↦ (tu,v)`. -/ def normalSliceRelativeChainHomotopyEquiv : - HomotopyEquiv ((relativeChainFunctor ℚ).obj (normalSlicePair E c)) - ((relativeChainFunctor ℚ).obj (puncturedPair ℂ c)) where - hom := (relativeChainFunctor ℚ).map (normalSliceProjection E c) - inv := (relativeChainFunctor ℚ).map (normalSliceSection E c) + HomotopyEquiv ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (normalSlicePair E c)) + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ c)) where + hom := (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).map (normalSliceProjection E c) + inv := (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).map (normalSliceSection E c) homotopyHomInvId := - (Homotopy.ofEq ((relativeChainFunctor ℚ).map_comp + (Homotopy.ofEq ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).map_comp (normalSliceProjection E c) (normalSliceSection E c)).symm).trans - (((normalSliceContraction E c).relativeChainHomotopy (R := ℚ)).trans - (Homotopy.ofEq ((relativeChainFunctor ℚ).map_id (normalSlicePair E c)))) + (((_root_.OAI.AlgebraicTopology.Singular.RelativeHomotopyInvariance.TopPair.Homotopy.relativeChainHomotopy (R := ℚ) (normalSliceContraction E c))).trans + (Homotopy.ofEq ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).map_id (normalSlicePair E c)))) homotopyInvHomId := Homotopy.ofEq (by rw [← CategoryTheory.Functor.map_comp, normalSliceSection_projection, CategoryTheory.Functor.map_id]) @@ -89,28 +93,33 @@ def normalSliceRelativeChainHomotopyEquiv : this isomorphism `H_n(E × ℂ^c,E × (ℂ^c \ {0});ℚ) ≅ H_n(ℂ^c,ℂ^c \ {0};ℚ)`. Its inverse is induced by `v ↦ (0,v)`. -/ def normalSliceRelativeHomologyIso (n : ℕ) : - RelativeHomology ℚ (normalSlicePair E c) n ≅ - RelativeHomology ℚ (puncturedPair ℂ c) n := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (normalSlicePair E c) n ≅ + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℂ c) n := (normalSliceRelativeChainHomotopyEquiv E c).toHomologyIso n @[simp] theorem normalSliceRelativeHomologyIso_hom (n : ℕ) : (normalSliceRelativeHomologyIso E c n).hom.hom = - relativeHomologyMap ℚ n (normalSliceProjection E c) := rfl + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ n (normalSliceProjection E c) := rfl @[simp] theorem normalSliceRelativeHomologyIso_inv (n : ℕ) : (normalSliceRelativeHomologyIso E c n).inv.hom = - relativeHomologyMap ℚ n (normalSliceSection E c) := rfl + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ n (normalSliceSection E c) := rfl /-- Let `E` be a real normed vector space and `c ∈ ℕ`. This class in `H_{2c}(E × ℂ^c,E × (ℂ^c \ {0});ℚ)` is the image under `v ↦ (0,v)` of the chosen local class in `H_{2c}(ℂ^c,ℂ^c \ {0};ℚ)`. The latter is obtained from the standard real simplex class using the ordered real and imaginary coordinates on `ℂ^c`. -/ -def normalSliceClass : RelativeHomology ℚ (normalSlicePair E c) (2 * c) := - relativeHomologyMap ℚ (2 * c) (normalSliceSection E c) (standardComplexLocalClass ℚ c) +def normalSliceClass : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (normalSlicePair E c) (2 * c) := + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * c) (normalSliceSection E c) (_root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ c) @[simp] theorem normalSliceProjection_class : - relativeHomologyMap ℚ (2 * c) (normalSliceProjection E c) (normalSliceClass E c) = - standardComplexLocalClass ℚ c := by + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ (2 * c) (normalSliceProjection E c) (normalSliceClass E c) = + _root_.OAI.AlgebraicTopology.LocalHomology.ComplexClass.Singular.standardComplexLocalClass ℚ c := by exact ConcreteCategory.congr_hom (normalSliceRelativeHomologyIso E c (2 * c)).inv_hom_id _ -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.NormalSlicePurity diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/PuncturedEuclidean.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/PuncturedEuclidean.lean index 6ea6b68dac..d220a6b500 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/PuncturedEuclidean.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/PuncturedEuclidean.lean @@ -12,17 +12,18 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric +import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.Euclidean -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.Field -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.SubsetChains -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.StandardSimplexCone -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.SphereAffineBoundary -public import Mathlib.Topology.Homotopy.Contractible +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.Euclidean +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.Field +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.SubsetChains +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.StandardSimplexCone +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.SphereAffineBoundary +import Mathlib.Topology.Homotopy.Contractible import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffinePrism import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Contractible @@ -33,6 +34,12 @@ import Mathlib.Logic.Equiv.PartialEquiv import Mathlib.Tactic.Bound import Mathlib.Topology.Homotopy.TopCat.ZerothHomotopy +namespace OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean + +open scoped OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex + +open _root_.AlgebraicTopology + /-! # The affine sphere class in punctured Euclidean space @@ -48,14 +55,15 @@ a chain-homotopy equivalence. Consequently the affine boundary map is an isomor homology, and the explicit punctured and positive-even-dimensional local classes generate. -/ -@[expose] public noncomputable section +noncomputable section -open scoped Convexity.StdSimplex +open scoped _root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex -open CategoryTheory CategoryTheory.Limits PartialOrder +open _root_.CategoryTheory _root_.CategoryTheory.Limits PartialOrder open scoped Simplicial -namespace AlgebraicTopology.Singular +section +namespace Singular /-- The affine barycentric coordinate indexed by the last vertex is normalized to zero; the other coordinates are the ordinary coordinates on `ℝ^d`. Only comparisons between these @@ -77,11 +85,11 @@ lemma standardExtendedCoordinate_last (d : ℕ) (x : Fin d → ℝ) : lemma standardExtendedCoordinate_standardAffineSimplex (d : ℕ) (i : Fin (d + 1)) (t : Convexity.StdSimplex ℝ (Fin (d + 1))) : - standardExtendedCoordinate d i (standardAffineSimplex d t) = + standardExtendedCoordinate d i (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAffineSimplex d t) = t i - t (Fin.last d) := by cases i using Fin.lastCases with | last => simp - | cast i => simp [standardAffineSimplex] + | cast i => simp [_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAffineSimplex] lemma stdSimplex_exists_pos {m : ℕ} (t : Convexity.StdSimplex ℝ (Fin (m + 1))) : ∃ i, 0 < t i := by @@ -91,7 +99,7 @@ lemma stdSimplex_exists_pos {m : ℕ} (t : Convexity.StdSimplex ℝ (Fin (m + 1) exact ⟨i, lt_of_le_of_ne (t.weights_nonneg i) hi.symm⟩ lemma continuous_standardExtendedCoordinate (d : ℕ) (i : Fin (d + 1)) : - Continuous (fun x : (puncturedPair ℝ d).snd ↦ + Continuous (fun x : (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd ↦ standardExtendedCoordinate d i x.1) := by change Continuous (fun x : ({0}ᶜ : Set (Fin d → ℝ)) ↦ standardExtendedCoordinate d i x.1) @@ -106,7 +114,7 @@ lemma continuous_standardExtendedCoordinate (d : ℕ) (i : Fin (d + 1)) : /-- The `i`th member of the finite facet cover consists of points for which the `i`th extended coordinate is not maximal. -/ def standardPuncturedFacetCover (d : ℕ) (i : Fin (d + 1)) : - Set ((puncturedPair ℝ d).snd) := + Set ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd) := {x | ∃ j : Fin (d + 1), standardExtendedCoordinate d i x.1 < standardExtendedCoordinate d j x.1} @@ -136,7 +144,7 @@ lemma iUnion_standardPuncturedFacetCover (d : ℕ) : /-- No point belongs to every member of the facet cover. -/ lemma not_forall_mem_standardPuncturedFacetCover (d : ℕ) - (x : (puncturedPair ℝ d).snd) : + (x : (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd) : ¬ ∀ i, x ∈ standardPuncturedFacetCover d i := by obtain ⟨i, -, hi⟩ := Finset.exists_max_image Finset.univ (fun i : Fin (d + 1) ↦ standardExtendedCoordinate d i x.1) @@ -240,7 +248,7 @@ lemma standardPuncturedFacetIntersection_contractibleSpace (d : ℕ) /-- The same facet intersection, now presented as a subspace of punctured coordinate space. -/ def standardPuncturedFacetIntersectionSubspace (d : ℕ) - (I : Finset (Fin (d + 1))) : Set ((puncturedPair ℝ d).snd) := + (I : Finset (Fin (d + 1))) : Set ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd) := {x | x.1 ∈ standardPuncturedFacetIntersectionSet d I} /-- The ambient and nested-subspace presentations of a nonempty facet intersection are @@ -278,9 +286,9 @@ def standardPuncturedFacetIntersectionMapOfSubset (d : ℕ) lemma standardPuncturedFacetIntersectionMapOfSubset_comp_inclusion (d : ℕ) {I J : Finset (Fin (d + 1))} (hIJ : I ⊆ J) : standardPuncturedFacetIntersectionMapOfSubset d hIJ ≫ - topologicalSubsetInclusion (puncturedPair ℝ d).snd + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetIntersectionSubspace d I) = - topologicalSubsetInclusion (puncturedPair ℝ d).snd + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetIntersectionSubspace d J) := rfl /-- Positive-degree integral singular homology of a nonempty proper facet intersection @@ -301,11 +309,11 @@ lemma standardPuncturedFacetIntersection_integralHomology_isZero have hunit := AlgebraicTopology.isZero_singularHomologyFunctor_of_totallyDisconnectedSpace AddCommGrpCat k (AddCommGrpCat.of ℤ) (TopCat.of Unit) hk - let : Subsingleton (IntegralSingularHomology k Unit) := + let : Subsingleton (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.IntegralSingularHomology k Unit) := AddCommGrpCat.subsingleton_of_isZero hunit - let he := integralSingularHomologyEquivOfHomotopyEquiv k e + let he := _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.integralSingularHomologyEquivOfHomotopyEquiv k e let : Subsingleton - (IntegralSingularHomology k + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.IntegralSingularHomology k (standardPuncturedFacetIntersectionSubspace d I)) := ⟨fun x y ↦ he.injective (Subsingleton.elim _ _)⟩ exact AddCommGrpCat.isZero_of_subsingleton _ @@ -396,63 +404,63 @@ lemma exists_integralSingularZeroChain_filler open scoped Classical in /-- Cover indices through which a cover-small singular simplex factors. -/ def standardFacetCarrier (d : ℕ) {n : SimplexCategoryᵒᵖ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).obj n) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).obj n) : Finset (Fin (d + 1)) := Finset.univ.filter fun i ↦ x.1 ∈ (SSet.Subcomplex.range (TopCat.toSSet.map - (topologicalSubsetInclusion (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d i)))).obj n lemma standardFacetCarrier_nonempty (d : ℕ) {n : SimplexCategoryᵒᵖ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).obj n) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).obj n) : (standardFacetCarrier d x).Nonempty := by classical have hx := x.2 - rw [mem_coverSmallSingularSubcomplex_iff] at hx + rw [_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.mem_coverSmallSingularSubcomplex_iff] at hx obtain ⟨i, hi⟩ := hx refine ⟨i, Finset.mem_filter.mpr ⟨Finset.mem_univ i, hi⟩⟩ lemma standardFacetCarrier_ne_univ (d : ℕ) {n : SimplexCategoryᵒᵖ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).obj n) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).obj n) : standardFacetCarrier d x ≠ Finset.univ := by classical intro hall let t : Convexity.StdSimplex ℝ (Fin (n.unop.len + 1)) := Convexity.StdSimplex.barycenter - let p : (puncturedPair ℝ d).snd := - ((puncturedPair ℝ d).snd.toSSetObjEquiv n x.1) t + let p : (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd := + ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv n x.1) t apply not_forall_mem_standardPuncturedFacetCover d p intro i have hi : i ∈ standardFacetCarrier d x := by rw [hall]; simp rw [standardFacetCarrier, Finset.mem_filter] at hi - exact (singularSimplex_mem_range_subset - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d i) x.1).mp hi.2 ⟨t, rfl⟩ + exact (_root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSimplex_mem_range_subset + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d i) x.1).mp hi.2 ⟨t, rfl⟩ lemma standardFacetCarrier_mono_map (d : ℕ) {m n : SimplexCategory} (f : m ⟶ n) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).obj + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).obj (Opposite.op n)) : standardFacetCarrier d x ⊆ standardFacetCarrier d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).map f.op x) := by + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).map f.op x) := by classical intro i hi rw [standardFacetCarrier, Finset.mem_filter] at hi ⊢ exact ⟨Finset.mem_univ i, (SSet.Subcomplex.range (TopCat.toSSet.map - (topologicalSubsetInclusion (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d i)))).map f.op hi.2⟩ lemma standardFacetCarrier_mono_delta (d n : ℕ) (i : Fin (n + 2)) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : standardFacetCarrier d x ⊆ standardFacetCarrier d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) := standardFacetCarrier_mono_map d (SimplexCategory.δ i) x @@ -460,18 +468,18 @@ lemma standardFacetCarrier_mono_delta (d n : ℕ) (i : Fin (n + 2)) intersection of the cover members containing `x`. -/ lemma standardFacetCarrierSource_image_subset_intersection (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (q : SimplexCategoryᵒᵖ) (y : (Δ[n] : SSet.{0}).obj q) : - Set.range ((puncturedPair ℝ d).snd.toSSetObjEquiv q + Set.range ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv q ((SSet.yonedaEquiv.symm x.1).app q y)) ⊆ standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x) := by classical rintro _ ⟨t, rfl⟩ i hi rw [standardFacetCarrier, Finset.mem_filter] at hi - apply (singularSimplex_mem_range_subset - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d i) x.1).mp hi.2 + apply (_root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSimplex_mem_range_subset + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d i) x.1).mp hi.2 let f : q.unop ⟶ SimplexCategory.mk n := SSet.stdSimplex.objEquiv y refine ⟨Convexity.StdSimplex.map f t, ?_⟩ have hy : y = SSet.stdSimplex.objEquiv.symm f := @@ -483,13 +491,13 @@ lemma standardFacetCarrierSource_image_subset_intersection carrier. -/ def standardFacetCarrierSourceIntersectionMap (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : (Δ[n] : SSet.{0}) ⟶ TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x))) := - singularSimplicialMapLiftToSubset _ (puncturedPair ℝ d).snd _ + _root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSimplicialMapLiftToSubset _ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd _ (SSet.yonedaEquiv.symm x.1) (standardFacetCarrierSource_image_subset_intersection d x) @@ -497,11 +505,11 @@ def standardFacetCarrierSourceIntersectionMap facet intersection. -/ lemma standardFacetCarrierSourceIntersectionMap_delta (d n : ℕ) (i : Fin (n + 2)) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : standardFacetCarrierSourceIntersectionMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ TopCat.toSSet.map (standardPuncturedFacetIntersectionMapOfSubset d (standardFacetCarrier_mono_delta d n i x)) = SSet.stdSimplex.map (SimplexCategory.δ i) ≫ @@ -509,99 +517,99 @@ lemma standardFacetCarrierSourceIntersectionMap_delta let hsub := standardFacetCarrier_mono_delta d n i x change standardFacetCarrier d x ⊆ standardFacetCarrier d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) at hsub + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) at hsub change standardFacetCarrierSourceIntersectionMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ TopCat.toSSet.map (standardPuncturedFacetIntersectionMapOfSubset d hsub) = _ - apply singularSimplicialMapToSubset_ext _ (puncturedPair ℝ d).snd + apply _root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSimplicialMapToSubset_ext _ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)) calc _ = standardFacetCarrierSourceIntersectionMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ TopCat.toSSet.map - (topologicalSubsetInclusion (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x)))) := by rw [Category.assoc, ← Functor.map_comp, standardPuncturedFacetIntersectionMapOfSubset_comp_inclusion] _ = SSet.yonedaEquiv.symm - (((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + (((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x).1) := by unfold standardFacetCarrierSourceIntersectionMap - rw [singularSimplicialMapLiftToSubset_comp_inclusion] + rw [_root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSimplicialMapLiftToSubset_comp_inclusion] _ = SSet.stdSimplex.map (SimplexCategory.δ i) ≫ SSet.yonedaEquiv.symm x.1 := (SSet.stdSimplex.δ_comp_yonedaEquiv_symm x.1 i).symm _ = _ := by unfold standardFacetCarrierSourceIntersectionMap rw [Category.assoc, - singularSimplicialMapLiftToSubset_comp_inclusion] + _root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSimplicialMapLiftToSubset_comp_inclusion] /-- Subdivision followed by last vertex, transported along the lifted source simplex. -/ def standardFacetCarrierSourceSubdivisionIntersectionMap (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : SimplexCategory.sd.{0}.obj (SimplexCategory.mk n) ⟶ TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x))) := - simplexSubdivisionLastVertex.app (SimplexCategory.mk n) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.simplexSubdivisionLastVertex.app (SimplexCategory.mk n) ≫ standardFacetCarrierSourceIntersectionMap d x /-- The lifted subdivision--last-vertex source maps are compatible with faces. -/ lemma standardFacetCarrierSourceSubdivisionIntersectionMap_delta (d n : ℕ) (i : Fin (n + 2)) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : standardFacetCarrierSourceSubdivisionIntersectionMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ TopCat.toSSet.map (standardPuncturedFacetIntersectionMapOfSubset d (standardFacetCarrier_mono_delta d n i x)) = SimplexCategory.sd.{0}.map (SimplexCategory.δ i) ≫ standardFacetCarrierSourceSubdivisionIntersectionMap d x := by unfold standardFacetCarrierSourceSubdivisionIntersectionMap rw [Category.assoc, standardFacetCarrierSourceIntersectionMap_delta, ← Category.assoc, - ← simplexSubdivisionLastVertex.naturality, Category.assoc] + ← _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.simplexSubdivisionLastVertex.naturality, Category.assoc] open scoped Classical in /-- Cover indices which contain the images of every vertex in `A`. -/ def standardFacetCarrierAtFace (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : Finset (Fin (d + 1)) := Finset.univ.filter fun i ↦ ∀ a ∈ A.finset, - ((puncturedPair ℝ d).snd.toSSetObjEquiv _ x.1) + ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv _ x.1) (Convexity.StdSimplex.single a.down) ∈ standardPuncturedFacetCover d i lemma standardFacetCarrierAtFace_nonempty (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : (standardFacetCarrierAtFace d x A).Nonempty := by classical obtain ⟨i, hi⟩ := standardFacetCarrier_nonempty d x rw [standardFacetCarrier, Finset.mem_filter] at hi refine ⟨i, Finset.mem_filter.mpr ⟨Finset.mem_univ i, fun a _ ↦ ?_⟩⟩ - exact (singularSimplex_mem_range_subset - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d i) x.1).mp hi.2 + exact (_root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSimplex_mem_range_subset + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d i) x.1).mp hi.2 ⟨Convexity.StdSimplex.single a.down, rfl⟩ lemma standardFacetCarrier_subset_atFace (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : standardFacetCarrier d x ⊆ standardFacetCarrierAtFace d x A := by classical @@ -609,20 +617,20 @@ lemma standardFacetCarrier_subset_atFace (d : ℕ) {n : ℕ} rw [standardFacetCarrier, Finset.mem_filter] at hi rw [standardFacetCarrierAtFace, Finset.mem_filter] refine ⟨Finset.mem_univ i, fun a _ ↦ ?_⟩ - exact (singularSimplex_mem_range_subset - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d i) x.1).mp hi.2 + exact (_root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSimplex_mem_range_subset + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d i) x.1).mp hi.2 ⟨Convexity.StdSimplex.single a.down, rfl⟩ lemma standardFacetCarrierAtFace_ne_univ (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : standardFacetCarrierAtFace d x A ≠ Finset.univ := by classical intro hall obtain ⟨a, ha⟩ := A.nonempty - let p : (puncturedPair ℝ d).snd := - ((puncturedPair ℝ d).snd.toSSetObjEquiv _ x.1) + let p : (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd := + ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv _ x.1) (Convexity.StdSimplex.single a.down) apply not_forall_mem_standardPuncturedFacetCover d p intro i @@ -631,8 +639,8 @@ lemma standardFacetCarrierAtFace_ne_univ (d : ℕ) {n : ℕ} exact hi.2 a ha lemma standardFacetCarrierAtFace_antitone (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) {A B : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))} (hAB : A ≤ B) : standardFacetCarrierAtFace d x B ⊆ standardFacetCarrierAtFace d x A := by classical @@ -642,15 +650,15 @@ lemma standardFacetCarrierAtFace_antitone (d : ℕ) {n : ℕ} /-- The complementary carrier is a nonempty proper set of vertices and grows with the face. -/ def standardFacetComplementCarrier (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : Finset (Fin (d + 1)) := (standardFacetCarrierAtFace d x A)ᶜ lemma standardFacetComplementCarrier_nonempty (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : (standardFacetComplementCarrier d x A).Nonempty := by rw [standardFacetComplementCarrier, Finset.nonempty_iff_ne_empty, @@ -658,8 +666,8 @@ lemma standardFacetComplementCarrier_nonempty (d : ℕ) {n : ℕ} exact standardFacetCarrierAtFace_ne_univ d x A lemma standardFacetComplementCarrier_mono (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : Monotone (standardFacetComplementCarrier d x) := by intro A B hAB exact Finset.compl_subset_compl.mpr @@ -667,15 +675,15 @@ lemma standardFacetComplementCarrier_mono (d : ℕ) {n : ℕ} /-- The maximum vertex in the complementary carrier. -/ def standardFacetComplementCarrierMax (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : Fin (d + 1) := (standardFacetComplementCarrier d x A).max' (standardFacetComplementCarrier_nonempty d x A) lemma standardFacetComplementCarrierMax_mono (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : Monotone (standardFacetComplementCarrierMax d x) := by intro A B hAB apply Finset.max'_le @@ -684,8 +692,8 @@ lemma standardFacetComplementCarrierMax_mono (d : ℕ) {n : ℕ} /-- The largest vertex outside the face carrier, monotone as the face grows. -/ def standardFacetCarrierVertexOrderHom (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : NonemptyFiniteChains (ULift.{0} (Fin (n + 1))) →o ULift.{0} (Fin (d + 1)) where toFun A := ULift.up (standardFacetComplementCarrierMax d x A) @@ -694,16 +702,16 @@ def standardFacetCarrierVertexOrderHom (d : ℕ) {n : ℕ} /-- The carrier map from the subdivision of a simplex to the standard simplex on cover indices. -/ def standardFacetCarrierSimplexMap (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : SimplexCategory.sd.{0}.obj (SimplexCategory.mk n) ⟶ (Δ[d] : SSet.{0}) := nerveMap (standardFacetCarrierVertexOrderHom d x).monotone.functor ≫ (SSet.stdSimplex.isoNerve d).inv @[simp] lemma standardFacetCarrierSimplexMap_objEquiv_apply (d : ℕ) {n k : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)) _⦋k⦌) (r : Fin (k + 1)) : (SSet.stdSimplex.objEquiv @@ -713,16 +721,16 @@ lemma standardFacetCarrierSimplexMap_objEquiv_apply (d : ℕ) {n k : ℕ} @[simp] lemma standardFacetCarrierSimplexMap_apply (d : ℕ) {n k : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)) _⦋k⦌) (r : Fin (k + 1)) : ((standardFacetCarrierSimplexMap d x).app _ F) r = standardFacetComplementCarrierMax d x (F.obj r) := rfl lemma standardFacetComplementCarrierMax_mem (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : standardFacetComplementCarrierMax d x A ∈ standardFacetComplementCarrier d x A := @@ -731,8 +739,8 @@ lemma standardFacetComplementCarrierMax_mem (d : ℕ) {n : ℕ} /-- Every simplex produced by the carrier misses a cover vertex and hence lies in the simplicial boundary. -/ lemma standardFacetCarrierSimplexMap_mem_boundary (d : ℕ) {n k : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)) _⦋k⦌) : (standardFacetCarrierSimplexMap d x).app _ F ∈ (∂Δ[d]).obj (Opposite.op (SimplexCategory.mk k)) := by @@ -751,8 +759,8 @@ lemma standardFacetCarrierSimplexMap_mem_boundary (d : ℕ) {n k : ℕ} /-- The carrier map lifted to the simplicial boundary of the cover-index simplex. -/ def standardFacetCarrierBoundarySimplexMap (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : SimplexCategory.sd.{0}.obj (SimplexCategory.mk n) ⟶ (∂Δ[d] : SSet.{0}) := SSet.Subcomplex.lift (standardFacetCarrierSimplexMap d x) (by rintro q y ⟨F, rfl⟩ @@ -760,8 +768,8 @@ def standardFacetCarrierBoundarySimplexMap (d : ℕ) {n : ℕ} @[reassoc (attr := simp)] lemma standardFacetCarrierBoundarySimplexMap_comp_inclusion (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : standardFacetCarrierBoundarySimplexMap d x ≫ (∂Δ[d]).ι = standardFacetCarrierSimplexMap d x := rfl @@ -769,8 +777,8 @@ lemma standardFacetCarrierBoundarySimplexMap_comp_inclusion (d : ℕ) {n : ℕ} simplex. -/ lemma standardFacetCarrierBoundarySimplexMap_avoids_carrier (d : ℕ) {n k : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk k))) (i : Fin (d + 1)) (hi : i ∈ standardFacetCarrier d x) : @@ -806,28 +814,28 @@ lemma standardFaceVertexOrderHom_apply (n : ℕ) (i : Fin (n + 2)) @[simp] lemma coverSmallFacet_toSSetObjEquiv_delta_vertex (d n : ℕ) (i : Fin (n + 2)) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) (a : Fin (n + 1)) : - ((puncturedPair ℝ d).snd.toSSetObjEquiv _ - (((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x).1)) + ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv _ + (((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x).1)) (Convexity.StdSimplex.single a) = - ((puncturedPair ℝ d).snd.toSSetObjEquiv _ x.1) + ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv _ x.1) (Convexity.StdSimplex.single (i.succAbove a)) := by - change ((puncturedPair ℝ d).snd.toSSetObjEquiv _ - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).δ i x.1)) + change ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv _ + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).δ i x.1)) (Convexity.StdSimplex.single a) = _ rw [TopCat.toSSetObjEquiv_δ_apply, Convexity.StdSimplex.map_single] /-- Vertex carriers commute exactly with taking a codimension-one face. -/ lemma standardFacetCarrierAtFace_delta (d n : ℕ) (i : Fin (n + 2)) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : standardFacetCarrierAtFace d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) A = + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) A = standardFacetCarrierAtFace d x (A.map (standardFaceVertexOrderHom n i)) := by ext j @@ -847,17 +855,17 @@ lemma standardFacetCarrierAtFace_delta (d n : ℕ) (i : Fin (n + 2)) coverSmallFacet_toSSetObjEquiv_delta_vertex] using hb lemma standardFacetComplementCarrierMax_delta (d n : ℕ) (i : Fin (n + 2)) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : standardFacetComplementCarrierMax d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) A = + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) A = standardFacetComplementCarrierMax d x (A.map (standardFaceVertexOrderHom n i)) := by have hcomp : standardFacetComplementCarrier d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) A = + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) A = standardFacetComplementCarrier d x (A.map (standardFaceVertexOrderHom n i)) := congrArg (fun s : Finset (Fin (d + 1)) ↦ sᶜ) @@ -868,13 +876,13 @@ lemma standardFacetComplementCarrierMax_delta (d n : ℕ) (i : Fin (n + 2)) /-- The carrier maps are natural for the codimension-one maps which occur in the chain differential. -/ lemma standardFacetCarrierSimplexMap_delta (d n : ℕ) (i : Fin (n + 2)) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : SimplexCategory.sd.{0}.map (SimplexCategory.δ i) ≫ standardFacetCarrierSimplexMap d x = standardFacetCarrierSimplexMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) := by + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) := by ext q F apply SSet.stdSimplex.objEquiv.injective apply SimplexCategory.Hom.ext @@ -885,25 +893,25 @@ lemma standardFacetCarrierSimplexMap_delta (d n : ℕ) (i : Fin (n + 2)) ((SimplexCategory.sd.{0}.map (SimplexCategory.δ i)).app _ F))).toOrderHom r = (SSet.stdSimplex.objEquiv ((standardFacetCarrierSimplexMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x)).app _ + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x)).app _ F)).toOrderHom r change standardFacetComplementCarrierMax d x ((F.obj r).map (standardFaceVertexOrderHom n i)) = standardFacetComplementCarrierMax d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) (F.obj r) exact (standardFacetComplementCarrierMax_delta d n i x (F.obj r)).symm lemma standardFacetCarrierBoundarySimplexMap_delta (d n : ℕ) (i : Fin (n + 2)) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : SimplexCategory.sd.{0}.map (SimplexCategory.δ i) ≫ standardFacetCarrierBoundarySimplexMap d x = standardFacetCarrierBoundarySimplexMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) := by + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) := by apply (cancel_mono (∂Δ[d]).ι).mp simpa only [Category.assoc, standardFacetCarrierBoundarySimplexMap_comp_inclusion] using @@ -911,27 +919,27 @@ lemma standardFacetCarrierBoundarySimplexMap_delta (d n : ℕ) (i : Fin (n + 2)) /-- The signed barycentric carrier chain attached to one cover-small simplex. -/ def standardFacetCarrierSimplexChain (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : AddCommGrpCat.of ℤ ⟶ ((∂Δ[d] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X n := - subdividedSimplexFundamentalChain n ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain n ≫ (SSet.chainComplexMap (standardFacetCarrierBoundarySimplexMap d x) (AddCommGrpCat.of ℤ)).f n /-- The degreewise carrier map on integral cover-small chains. -/ def standardFacetCarrierComponent (d n : ℕ) : - (CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).X n ⟶ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).X n ⟶ ((∂Δ[d] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X n := Sigma.desc (standardFacetCarrierSimplexChain d n) @[reassoc (attr := simp)] lemma iota_standardFacetCarrierComponent (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ standardFacetCarrierComponent d n = standardFacetCarrierSimplexChain d n x := Sigma.ι_comp_desc _ _ @@ -940,18 +948,18 @@ lemma standardFacetCarrierComponent_comm_d (d n : ℕ) : standardFacetCarrierComponent d (n + 1) ≫ ((∂Δ[d] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = - (CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).d (n + 1) n ≫ standardFacetCarrierComponent d n := by - let K := (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) + let K := (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) apply K.chainComplex_hom_ext intro x rw [← Category.assoc, iota_standardFacetCarrierComponent, standardFacetCarrierSimplexChain, Category.assoc, (SSet.chainComplexMap (standardFacetCarrierBoundarySimplexMap d x) (AddCommGrpCat.of ℤ)).comm (n + 1) n, ← Category.assoc, - barycentricFundamentalBoundaryIdentity n, subdividedSimplexAlternatingFaceChain, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricFundamentalBoundaryIdentity n, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexAlternatingFaceChain, Preadditive.sum_comp] simp_rw [Preadditive.zsmul_comp, Category.assoc] rw [← Category.assoc, SSet.ιChainComplex_d, Preadditive.sum_comp] @@ -967,8 +975,8 @@ lemma standardFacetCarrierComponent_comm_d (d n : ℕ) : (AddCommGrpCat.of ℤ)).f n = (SSet.chainComplexMap (standardFacetCarrierBoundarySimplexMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x)) (AddCommGrpCat.of ℤ)).f n := by have hn := congrArg (fun f ↦ f.f n) (((SSet.chainComplexFunctor AddCommGrpCat).obj @@ -978,8 +986,8 @@ lemma standardFacetCarrierComponent_comm_d (d n : ℕ) : /-- The integral finite-cover carrier chain map into the simplicial sphere. -/ def standardFacetCarrierChainMap (d : ℕ) : - CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) ⟶ + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) ⟶ ((∂Δ[d] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)) := ChainComplex.ofHom (standardFacetCarrierComponent d) (standardFacetCarrierComponent_comm_d d) @@ -994,32 +1002,32 @@ which it misses. -/ lemma standardAffineBoundarySimplex_image_subset_facetCover (d n : ℕ) (y : (∂Δ[d] : SSet.{0}) _⦋n⦌) (i : Fin (d + 1)) (hi : i ∉ Set.range y.1) : - Set.range ((puncturedPair ℝ d).snd.toSSetObjEquiv _ - ((standardAffineBoundarySimplicialMap d).app _ y)) ⊆ + Set.range ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv _ + ((_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundarySimplicialMap d).app _ y)) ⊆ standardPuncturedFacetCover d i := by rintro _ ⟨t, rfl⟩ let w := Convexity.StdSimplex.map y.1 t obtain ⟨j, hj⟩ := stdSimplex_exists_pos w refine ⟨j, ?_⟩ - change standardExtendedCoordinate d i (standardAffineSimplex d w) < - standardExtendedCoordinate d j (standardAffineSimplex d w) + change standardExtendedCoordinate d i (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAffineSimplex d w) < + standardExtendedCoordinate d j (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAffineSimplex d w) rw [standardExtendedCoordinate_standardAffineSimplex, standardExtendedCoordinate_standardAffineSimplex] have hzero : w i = 0 := - stdSimplex_map_apply_eq_zero_of_notMem_range y.1 t i hi + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.stdSimplex_map_apply_eq_zero_of_notMem_range y.1 t i hi linarith /-- The affine realization of the carrier of a simplex lies in the intersection of all cover members containing that simplex. -/ lemma standardFacetCarrierAffine_image_subset_intersection (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) (q : SimplexCategoryᵒᵖ) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj q) : - Set.range ((puncturedPair ℝ d).snd.toSSetObjEquiv q + Set.range ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv q ((standardFacetCarrierBoundarySimplexMap d x ≫ - standardAffineBoundarySimplicialMap d).app q F)) ⊆ + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundarySimplicialMap d).app q F)) ⊆ standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x) := by rintro _ ⟨t, rfl⟩ i hi @@ -1031,26 +1039,26 @@ lemma standardFacetCarrierAffine_image_subset_intersection simplex. -/ def standardFacetCarrierAffineIntersectionMap (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : SimplexCategory.sd.{0}.obj (SimplexCategory.mk n) ⟶ TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x))) := - singularSimplicialMapLiftToSubset _ (puncturedPair ℝ d).snd _ + _root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSimplicialMapLiftToSubset _ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd _ (standardFacetCarrierBoundarySimplexMap d x ≫ - standardAffineBoundarySimplicialMap d) + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundarySimplicialMap d) (standardFacetCarrierAffine_image_subset_intersection d x) /-- The lifted affine carrier maps are compatible with faces after restricting their assigned facet intersections. -/ lemma standardFacetCarrierAffineIntersectionMap_delta (d n : ℕ) (i : Fin (n + 2)) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : standardFacetCarrierAffineIntersectionMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ TopCat.toSSet.map (standardPuncturedFacetIntersectionMapOfSubset d (standardFacetCarrier_mono_delta d n i x)) = SimplexCategory.sd.{0}.map (SimplexCategory.δ i) ≫ @@ -1058,59 +1066,59 @@ lemma standardFacetCarrierAffineIntersectionMap_delta let hsub := standardFacetCarrier_mono_delta d n i x change standardFacetCarrier d x ⊆ standardFacetCarrier d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) at hsub + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) at hsub change standardFacetCarrierAffineIntersectionMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ TopCat.toSSet.map (standardPuncturedFacetIntersectionMapOfSubset d hsub) = _ - apply singularSimplicialMapToSubset_ext _ (puncturedPair ℝ d).snd + apply _root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSimplicialMapToSubset_ext _ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)) calc _ = standardFacetCarrierAffineIntersectionMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ TopCat.toSSet.map - (topologicalSubsetInclusion (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x)))) := by rw [Category.assoc, ← Functor.map_comp, standardPuncturedFacetIntersectionMapOfSubset_comp_inclusion] _ = standardFacetCarrierBoundarySimplexMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ - standardAffineBoundarySimplicialMap d := by + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundarySimplicialMap d := by unfold standardFacetCarrierAffineIntersectionMap - rw [singularSimplicialMapLiftToSubset_comp_inclusion] + rw [_root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSimplicialMapLiftToSubset_comp_inclusion] _ = SimplexCategory.sd.{0}.map (SimplexCategory.δ i) ≫ standardFacetCarrierBoundarySimplexMap d x ≫ - standardAffineBoundarySimplicialMap d := by + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundarySimplicialMap d := by rw [← Category.assoc, standardFacetCarrierBoundarySimplexMap_delta] _ = _ := by unfold standardFacetCarrierAffineIntersectionMap rw [Category.assoc, - singularSimplicialMapLiftToSubset_comp_inclusion] + _root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSimplicialMapLiftToSubset_comp_inclusion] /-- The difference, inside its assigned facet intersection, between the affine carrier and subdivision followed by the last vertex of the original singular simplex. -/ def standardFacetCarrierIntersectionDiscrepancy (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)))).chainComplex (AddCommGrpCat.of ℤ)).X n := - subdividedSimplexFundamentalChain n ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain n ≫ (SSet.chainComplexMap (standardFacetCarrierAffineIntersectionMap d x) (AddCommGrpCat.of ℤ)).f n - - subdividedSimplexFundamentalChain n ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain n ≫ (SSet.chainComplexMap (standardFacetCarrierSourceSubdivisionIntersectionMap d x) (AddCommGrpCat.of ℤ)).f n @@ -1119,8 +1127,8 @@ def standardFacetCarrierIntersectionDiscrepancy to the original simplex. -/ def standardFacetCarrierIntersectionDiscrepancyFaces (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d @@ -1128,8 +1136,8 @@ def standardFacetCarrierIntersectionDiscrepancyFaces (AddCommGrpCat.of ℤ)).X n := ∑ i : Fin (n + 2), (-1 : ℤ) ^ i.val • (standardFacetCarrierIntersectionDiscrepancy d n - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ (SSet.chainComplexMap (TopCat.toSSet.map (standardPuncturedFacetIntersectionMapOfSubset d @@ -1138,9 +1146,9 @@ def standardFacetCarrierIntersectionDiscrepancyFaces lemma standardFacetCarrierAffineIntersectionChain_boundary (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : - (subdividedSimplexFundamentalChain (n + 1) ≫ + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain (n + 1) ≫ (SSet.chainComplexMap (standardFacetCarrierAffineIntersectionMap d x) (AddCommGrpCat.of ℤ)).f (n + 1)) ≫ ((TopCat.toSSet.obj (TopCat.of @@ -1148,11 +1156,11 @@ lemma standardFacetCarrierAffineIntersectionChain_boundary (standardFacetCarrier d x)))).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = ∑ i : Fin (n + 2), (-1 : ℤ) ^ i.val • - (subdividedSimplexFundamentalChain n ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain n ≫ (SSet.chainComplexMap (standardFacetCarrierAffineIntersectionMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x)) (AddCommGrpCat.of ℤ)).f n ≫ (SSet.chainComplexMap @@ -1160,12 +1168,12 @@ lemma standardFacetCarrierAffineIntersectionChain_boundary (standardFacetCarrier_mono_delta d n i x))) (AddCommGrpCat.of ℤ)).f n) := by rw [Category.assoc, (SSet.chainComplexMap (standardFacetCarrierAffineIntersectionMap d x) - (AddCommGrpCat.of ℤ)).comm, ← Category.assoc, barycentricFundamentalBoundaryIdentity n, - subdividedSimplexAlternatingFaceChain, Preadditive.sum_comp] + (AddCommGrpCat.of ℤ)).comm, ← Category.assoc, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricFundamentalBoundaryIdentity n, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexAlternatingFaceChain, Preadditive.sum_comp] simp only [Preadditive.zsmul_comp, Category.assoc] refine Finset.sum_congr rfl fun i _ ↦ ?_ apply congrArg (fun k ↦ ((-1 : ℤ) ^ i.val) • - (subdividedSimplexFundamentalChain n ≫ k)) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain n ≫ k)) have hmap := ((SSet.chainComplexFunctor AddCommGrpCat).obj (AddCommGrpCat.of ℤ)).congr_map (standardFacetCarrierAffineIntersectionMap_delta d n i x) rw [Functor.map_comp, Functor.map_comp] at hmap @@ -1173,9 +1181,9 @@ lemma standardFacetCarrierAffineIntersectionChain_boundary lemma standardFacetCarrierSourceIntersectionChain_boundary (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : - (subdividedSimplexFundamentalChain (n + 1) ≫ + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain (n + 1) ≫ (SSet.chainComplexMap (standardFacetCarrierSourceSubdivisionIntersectionMap d x) (AddCommGrpCat.of ℤ)).f (n + 1)) ≫ @@ -1184,11 +1192,11 @@ lemma standardFacetCarrierSourceIntersectionChain_boundary (standardFacetCarrier d x)))).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = ∑ i : Fin (n + 2), (-1 : ℤ) ^ i.val • - (subdividedSimplexFundamentalChain n ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain n ≫ (SSet.chainComplexMap (standardFacetCarrierSourceSubdivisionIntersectionMap d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x)) (AddCommGrpCat.of ℤ)).f n ≫ (SSet.chainComplexMap @@ -1197,12 +1205,12 @@ lemma standardFacetCarrierSourceIntersectionChain_boundary (AddCommGrpCat.of ℤ)).f n) := by rw [Category.assoc, (SSet.chainComplexMap (standardFacetCarrierSourceSubdivisionIntersectionMap d x) - (AddCommGrpCat.of ℤ)).comm, ← Category.assoc, barycentricFundamentalBoundaryIdentity n, - subdividedSimplexAlternatingFaceChain, Preadditive.sum_comp] + (AddCommGrpCat.of ℤ)).comm, ← Category.assoc, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricFundamentalBoundaryIdentity n, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexAlternatingFaceChain, Preadditive.sum_comp] simp only [Preadditive.zsmul_comp, Category.assoc] refine Finset.sum_congr rfl fun i _ ↦ ?_ apply congrArg (fun k ↦ ((-1 : ℤ) ^ i.val) • - (subdividedSimplexFundamentalChain n ≫ k)) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain n ≫ k)) have hmap := ((SSet.chainComplexFunctor AddCommGrpCat).obj (AddCommGrpCat.of ℤ)).congr_map (standardFacetCarrierSourceSubdivisionIntersectionMap_delta d n i x) rw [Functor.map_comp, Functor.map_comp] at hmap @@ -1211,8 +1219,8 @@ lemma standardFacetCarrierSourceIntersectionChain_boundary /-- The discrepancy boundary is the alternating sum of the restricted face discrepancies. -/ lemma standardFacetCarrierIntersectionDiscrepancy_boundary (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : standardFacetCarrierIntersectionDiscrepancy d (n + 1) x ≫ ((TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d @@ -1231,17 +1239,17 @@ lemma standardFacetCarrierIntersectionDiscrepancy_boundary space. -/ def standardFacetCarrierIntersectionChainInclusion (d : ℕ) {n : ℕ} - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : (TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)))).chainComplex (AddCommGrpCat.of ℤ) ⟶ - (TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ) := SSet.chainComplexMap (TopCat.toSSet.map - (topologicalSubsetInclusion (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)))) (AddCommGrpCat.of ℤ) @@ -1249,43 +1257,43 @@ def standardFacetCarrierIntersectionChainInclusion /-- The carrier discrepancy, now regarded as a chain in the ambient punctured space. -/ def standardFacetCarrierDiscrepancySimplexChain (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : AddCommGrpCat.of ℤ ⟶ - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ)).X n := standardFacetCarrierIntersectionDiscrepancy d n x ≫ (standardFacetCarrierIntersectionChainInclusion d x).f n /-- The degreewise ambient discrepancy operator on cover-small integral chains. -/ def standardFacetCarrierDiscrepancyComponent (d n : ℕ) : - (CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).X n ⟶ - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).X n ⟶ + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ)).X n := Sigma.desc (standardFacetCarrierDiscrepancySimplexChain d n) @[reassoc (attr := simp)] lemma iota_standardFacetCarrierDiscrepancyComponent (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ standardFacetCarrierDiscrepancyComponent d n = standardFacetCarrierDiscrepancySimplexChain d n x := Sigma.ι_comp_desc _ _ lemma standardFacetCarrierDiscrepancyFaces_comp_inclusion (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : standardFacetCarrierIntersectionDiscrepancyFaces d n x ≫ (standardFacetCarrierIntersectionChainInclusion d x).f n = - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ - (CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).d (n + 1) n ≫ standardFacetCarrierDiscrepancyComponent d n := by rw [standardFacetCarrierIntersectionDiscrepancyFaces, @@ -1307,8 +1315,8 @@ lemma standardFacetCarrierDiscrepancyFaces_comp_inclusion (AddCommGrpCat.of ℤ) ≫ standardFacetCarrierIntersectionChainInclusion d x = standardFacetCarrierIntersectionChainInclusion d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) := by rw [Functor.map_comp] at hsset change F.map _ ≫ F.map _ = F.map _ @@ -1317,21 +1325,21 @@ lemma standardFacetCarrierDiscrepancyFaces_comp_inclusion have hn := congrArg (fun k ↦ k.f n) hchain simpa only [HomologicalComplex.comp_f, Category.assoc] using congrArg (fun k ↦ standardFacetCarrierIntersectionDiscrepancy d n - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ k) hn /-- The ambient carrier discrepancy commutes with the singular differential. -/ lemma standardFacetCarrierDiscrepancyComponent_comm_d (d n : ℕ) : standardFacetCarrierDiscrepancyComponent d (n + 1) ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = - (CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).d (n + 1) n ≫ standardFacetCarrierDiscrepancyComponent d n := by - apply (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + apply (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).chainComplex_hom_ext intro x rw [← Category.assoc, iota_standardFacetCarrierDiscrepancyComponent, @@ -1343,9 +1351,9 @@ lemma standardFacetCarrierDiscrepancyComponent_comm_d (d n : ℕ) : /-- The carrier discrepancy as a chain map from cover-small chains to ambient singular chains. -/ def standardFacetCarrierDiscrepancyChainMap (d : ℕ) : - CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) ⟶ - (TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) ⟶ + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ) := ChainComplex.ofHom (standardFacetCarrierDiscrepancyComponent d) (standardFacetCarrierDiscrepancyComponent_comm_d d) @@ -1360,8 +1368,8 @@ lemma standardFacetCarrierDiscrepancyChainMap_f (d n : ℕ) : simplex. -/ abbrev StandardFacetCarrierPrismFamily (d : ℕ) := ∀ (n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌), + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌), AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d @@ -1373,16 +1381,16 @@ abbrev StandardFacetCarrierPrismFamily (d : ℕ) := into the intersection of cover members containing `σ` before summing. -/ def standardFacetCarrierPrismFaces (d : ℕ) (P : StandardFacetCarrierPrismFamily d) (n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)))).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) := ∑ i : Fin (n + 2), (-1 : ℤ) ^ i.val • - (P n ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + (P n ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ (SSet.chainComplexMap (TopCat.toSSet.map (standardPuncturedFacetIntersectionMapOfSubset d @@ -1392,43 +1400,43 @@ def standardFacetCarrierPrismFaces /-- One local prism chain, included into ambient punctured coordinate space. -/ def standardFacetCarrierPrismSimplexChain (d : ℕ) (P : StandardFacetCarrierPrismFamily d) (n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : AddCommGrpCat.of ℤ ⟶ - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) := P n x ≫ (standardFacetCarrierIntersectionChainInclusion d x).f (n + 1) /-- The global degree-raising carrier-prism operator induced by local prism chains. -/ def standardFacetCarrierPrismComponent (d : ℕ) (P : StandardFacetCarrierPrismFamily d) (n : ℕ) : - (CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).X n ⟶ - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).X n ⟶ + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) := Sigma.desc (standardFacetCarrierPrismSimplexChain d P n) @[reassoc (attr := simp)] lemma iota_standardFacetCarrierPrismComponent (d : ℕ) (P : StandardFacetCarrierPrismFamily d) (n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ standardFacetCarrierPrismComponent d P n = standardFacetCarrierPrismSimplexChain d P n x := Sigma.ι_comp_desc _ _ lemma standardFacetCarrierPrismFaces_comp_inclusion (d : ℕ) (P : StandardFacetCarrierPrismFamily d) (n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : standardFacetCarrierPrismFaces d P n x ≫ (standardFacetCarrierIntersectionChainInclusion d x).f (n + 1) = - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ - (CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).d (n + 1) n ≫ standardFacetCarrierPrismComponent d P n := by rw [standardFacetCarrierPrismFaces, Preadditive.sum_comp] @@ -1449,8 +1457,8 @@ lemma standardFacetCarrierPrismFaces_comp_inclusion (AddCommGrpCat.of ℤ) ≫ standardFacetCarrierIntersectionChainInclusion d x = standardFacetCarrierIntersectionChainInclusion d - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) := by rw [Functor.map_comp] at hsset change F.map _ ≫ F.map _ = F.map _ @@ -1459,15 +1467,15 @@ lemma standardFacetCarrierPrismFaces_comp_inclusion have hn := congrArg (fun k ↦ k.f (n + 1)) hchain simpa only [HomologicalComplex.comp_f, Category.assoc] using congrArg (fun k ↦ P n - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ k) hn /-- Local degree-zero prism equations assemble into the ambient homotopy equation. -/ lemma standardFacetCarrierPrismComponent_boundary_zero (d : ℕ) (P : StandardFacetCarrierPrismFamily d) - (h : ∀ x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋0⦌, + (h : ∀ x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋0⦌, standardFacetCarrierIntersectionDiscrepancy d 0 x = P 0 x ≫ ((TopCat.toSSet.obj (TopCat.of @@ -1476,10 +1484,10 @@ lemma standardFacetCarrierPrismComponent_boundary_zero (AddCommGrpCat.of ℤ)).d 1 0) : (standardFacetCarrierDiscrepancyChainMap d).f 0 = standardFacetCarrierPrismComponent d P 0 ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ)).d 1 0 := by - apply (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + apply (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).chainComplex_hom_ext intro x rw [standardFacetCarrierDiscrepancyChainMap_f, @@ -1492,8 +1500,8 @@ lemma standardFacetCarrierPrismComponent_boundary_zero /-- Local positive-degree prism equations assemble into the ambient homotopy equation. -/ lemma standardFacetCarrierPrismComponent_boundary_succ (d : ℕ) (P : StandardFacetCarrierPrismFamily d) (n : ℕ) - (h : ∀ x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌, + (h : ∀ x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌, standardFacetCarrierIntersectionDiscrepancy d (n + 1) x = P (n + 1) x ≫ ((TopCat.toSSet.obj (TopCat.of @@ -1502,15 +1510,15 @@ lemma standardFacetCarrierPrismComponent_boundary_succ (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1) + standardFacetCarrierPrismFaces d P n x) : (standardFacetCarrierDiscrepancyChainMap d).f (n + 1) = - (CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).d (n + 1) n ≫ standardFacetCarrierPrismComponent d P n + standardFacetCarrierPrismComponent d P (n + 1) ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1) := by - apply (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + apply (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).chainComplex_hom_ext intro x simp only [Preadditive.comp_add] @@ -1543,12 +1551,12 @@ lemma standardFacetCarrierPrismComponent_boundary_succ Category.assoc _ _ _ _ = P (n + 1) x ≫ ((standardFacetCarrierIntersectionChainInclusion d x).f (n + 2) ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1)) := by rw [(standardFacetCarrierIntersectionChainInclusion d x).comm] _ = (P (n + 1) x ≫ (standardFacetCarrierIntersectionChainInclusion d x).f (n + 2)) ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1) := (Category.assoc _ _ _).symm @@ -1556,8 +1564,8 @@ lemma standardFacetCarrierPrismComponent_boundary_succ carrier intersection. -/ lemma standardFacetCarrierIntersectionDiscrepancy_zero_augmentation (d : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋0⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋0⦌) : standardFacetCarrierIntersectionDiscrepancy d 0 x ≫ SSet.π₀.fromChainComplexXZero (TopCat.toSSet.obj (TopCat.of @@ -1571,15 +1579,15 @@ lemma standardFacetCarrierIntersectionDiscrepancy_zero_augmentation (standardPuncturedFacetIntersectionSubspace d I) := standardPuncturedFacetIntersectionSubspace_contractibleSpace d I hI hproper rw [standardFacetCarrierIntersectionDiscrepancy, Preadditive.sub_comp, - subdividedSimplexFundamentalChain] + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain] simp have heq : SSet.π₀.mk ((standardFacetCarrierAffineIntersectionMap d x).app _ - (permutationMaximalFlagSimplex (1 : Equiv.Perm (Fin 1)))) = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationMaximalFlagSimplex (1 : Equiv.Perm (Fin 1)))) = SSet.π₀.mk ((standardFacetCarrierSourceSubdivisionIntersectionMap d x).app _ - (permutationMaximalFlagSimplex (1 : Equiv.Perm (Fin 1)))) := + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationMaximalFlagSimplex (1 : Equiv.Perm (Fin 1)))) := Subsingleton.elim _ _ rw [heq, sub_self] @@ -1587,8 +1595,8 @@ lemma standardFacetCarrierIntersectionDiscrepancy_zero_augmentation intersection. -/ lemma exists_standardFacetCarrierIntersectionPrism_zero (d : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋0⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋0⦌) : ∃ p : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d @@ -1611,8 +1619,8 @@ minus `∑_i (-1)^i P(∂_i σ)`. All terms are integral chains in the intersect containing `σ`. -/ def standardFacetCarrierPrismResidual (d : ℕ) (P : StandardFacetCarrierPrismFamily d) (n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d @@ -1623,17 +1631,17 @@ def standardFacetCarrierPrismResidual lemma standardFacetCarrierPrismResidual_comp_inclusion (d : ℕ) (P : StandardFacetCarrierPrismFamily d) (n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : standardFacetCarrierPrismResidual d P n x ≫ (standardFacetCarrierIntersectionChainInclusion d x).f (n + 1) = - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ (standardFacetCarrierDiscrepancyChainMap d).f (n + 1) - - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ - (CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).ιChainComplex x ≫ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).d (n + 1) n ≫ standardFacetCarrierPrismComponent d P n := by rw [standardFacetCarrierPrismResidual, Preadditive.sub_comp] @@ -1643,14 +1651,13 @@ lemma standardFacetCarrierPrismResidual_comp_inclusion standardFacetCarrierDiscrepancySimplexChain] · exact standardFacetCarrierPrismFaces_comp_inclusion d P n x -set_option linter.style.haveILetI false in /-- If the local prism equation holds one degree lower, the next local residual is a cycle. This is the acyclic-carrier cancellation step. -/ lemma standardFacetCarrierPrismResidual_cycle (d : ℕ) (P : StandardFacetCarrierPrismFamily d) (n : ℕ) (hzero : n = 0 → - ∀ x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋0⦌, + ∀ x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋0⦌, standardFacetCarrierIntersectionDiscrepancy d 0 x = P 0 x ≫ ((TopCat.toSSet.obj (TopCat.of @@ -1658,8 +1665,8 @@ lemma standardFacetCarrierPrismResidual_cycle (standardFacetCarrier d x)))).chainComplex (AddCommGrpCat.of ℤ)).d 1 0) (hsucc : ∀ k, n = k + 1 → - ∀ x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋k + 1⦌, + ∀ x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋k + 1⦌, standardFacetCarrierIntersectionDiscrepancy d (k + 1) x = P (k + 1) x ≫ ((TopCat.toSSet.obj (TopCat.of @@ -1667,18 +1674,18 @@ lemma standardFacetCarrierPrismResidual_cycle (standardFacetCarrier d x)))).chainComplex (AddCommGrpCat.of ℤ)).d (k + 2) (k + 1) + standardFacetCarrierPrismFaces d P k x) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : standardFacetCarrierPrismResidual d P n x ≫ ((TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)))).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = 0 := by let I := standardFacetCarrierIntersectionChainInclusion d x - haveI : Mono (I.f n) := by + have : Mono (I.f n) := by dsimp [I, standardFacetCarrierIntersectionChainInclusion] - exact singularSubsetIntegralChainInclusionComponent_mono - (puncturedPair ℝ d).snd + exact _root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSubsetIntegralChainInclusionComponent_mono + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)) n apply (cancel_mono (I.f n)).mp @@ -1697,11 +1704,11 @@ lemma standardFacetCarrierPrismResidual_cycle Category.assoc _ _ _ _ = standardFacetCarrierPrismResidual d P n x ≫ (I.f (n + 1) ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n) := by rw [I.comm] _ = (standardFacetCarrierPrismResidual d P n x ≫ I.f (n + 1)) ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n := (Category.assoc _ _ _).symm rw [standardFacetCarrierPrismResidual_comp_inclusion, Preadditive.sub_comp, Category.assoc, @@ -1716,38 +1723,38 @@ lemma standardFacetCarrierPrismResidual_cycle have hprev := standardFacetCarrierPrismComponent_boundary_succ d P k (hsucc k rfl) rw [hprev, Preadditive.comp_add, ← Category.assoc, - (CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).d_comp_d] simp only [zero_comp, zero_add, sub_self] /-- The local acyclic-carrier prism equation in one degree. -/ def StandardFacetCarrierPrismEquation (d : ℕ) (P : StandardFacetCarrierPrismFamily d) : ℕ → Prop := - fun n ↦ match n with - | 0 => ∀ x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋0⦌, + fun n => Nat.casesOn n + (∀ x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋0⦌, standardFacetCarrierIntersectionDiscrepancy d 0 x = P 0 x ≫ ((TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)))).chainComplex - (AddCommGrpCat.of ℤ)).d 1 0 - | n + 1 => ∀ x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌, + (AddCommGrpCat.of ℤ)).d 1 0) + (fun n => ∀ x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌, standardFacetCarrierIntersectionDiscrepancy d (n + 1) x = P (n + 1) x ≫ ((TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)))).chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1) + - standardFacetCarrierPrismFaces d P n x + standardFacetCarrierPrismFaces d P n x) lemma standardFacetCarrierPrismResidual_cycle_of_equation (d : ℕ) (P : StandardFacetCarrierPrismFamily d) (n : ℕ) (h : StandardFacetCarrierPrismEquation d P n) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : standardFacetCarrierPrismResidual d P n x ≫ ((TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d @@ -1808,63 +1815,63 @@ lemma standardPuncturedFacetIntersectionIntegralTotalCycleFiller_boundary /-- The canonical local acyclic-carrier prism, recursively obtained by filling the discrepancy left after the prisms on all faces. -/ def standardFacetCarrierPrism (d n : ℕ) : - ∀ (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌), + ∀ (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌), AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)))).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) := - match n with - | 0 => fun x ↦ Classical.choose - (exists_standardFacetCarrierIntersectionPrism_zero d x) - | n + 1 => fun x ↦ + Nat.rec + (fun x ↦ Classical.choose + (exists_standardFacetCarrierIntersectionPrism_zero d x)) + (fun n previous => + fun x ↦ standardPuncturedFacetIntersectionIntegralTotalCycleFiller d n (standardFacetCarrier d x) (standardFacetCarrier_nonempty d x) (standardFacetCarrier_ne_univ d x) (standardFacetCarrierIntersectionDiscrepancy d (n + 1) x - ∑ i : Fin (n + 2), (-1 : ℤ) ^ i.val • - (standardFacetCarrierPrism d n - ((coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + (previous + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ (SSet.chainComplexMap (TopCat.toSSet.map (standardPuncturedFacetIntersectionMapOfSubset d (standardFacetCarrier_mono_delta d n i x))) - (AddCommGrpCat.of ℤ)).f (n + 1))) -termination_by n + (AddCommGrpCat.of ℤ)).f (n + 1)))) n @[simp] lemma standardFacetCarrierPrism_zero (d : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋0⦌) : - standardFacetCarrierPrism d 0 x = + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋0⦌) : + _root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardFacetCarrierPrism d 0 x = Classical.choose (exists_standardFacetCarrierIntersectionPrism_zero d x) := - by simp [standardFacetCarrierPrism] + by simp [_root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardFacetCarrierPrism] /-- The successor prism is the total filler of the local residual. -/ lemma standardFacetCarrierPrism_succ (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : - standardFacetCarrierPrism d (n + 1) x = + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌) : + _root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardFacetCarrierPrism d (n + 1) x = standardPuncturedFacetIntersectionIntegralTotalCycleFiller d n (standardFacetCarrier d x) (standardFacetCarrier_nonempty d x) (standardFacetCarrier_ne_univ d x) (standardFacetCarrierPrismResidual d - (standardFacetCarrierPrism d) n x) := by - simp [standardFacetCarrierPrism, + (_root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardFacetCarrierPrism d) n x) := by + simp [_root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardFacetCarrierPrism, standardFacetCarrierPrismResidual, standardFacetCarrierPrismFaces] /-- The recursively selected local prisms satisfy the complete acyclic-carrier boundary equation in every degree. -/ lemma standardFacetCarrierPrism_equation (d n : ℕ) : - StandardFacetCarrierPrismEquation d (standardFacetCarrierPrism d) n := by + StandardFacetCarrierPrismEquation d (_root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardFacetCarrierPrism d) n := by induction n with | zero => intro x @@ -1874,34 +1881,34 @@ lemma standardFacetCarrierPrism_equation (d n : ℕ) : | succ n ih => intro x have hcycle := standardFacetCarrierPrismResidual_cycle_of_equation - d (standardFacetCarrierPrism d) n ih x + d (_root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardFacetCarrierPrism d) n ih x have hfill := standardPuncturedFacetIntersectionIntegralTotalCycleFiller_boundary d n (standardFacetCarrier d x) (standardFacetCarrier_nonempty d x) (standardFacetCarrier_ne_univ d x) (standardFacetCarrierPrismResidual d - (standardFacetCarrierPrism d) n x) hcycle + (_root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardFacetCarrierPrism d) n x) hcycle rw [standardFacetCarrierPrism_succ, hfill, standardFacetCarrierPrismResidual] abel /-- The degree-raising carrier-prism family, extended by zero away from adjacent degrees. -/ def standardFacetCarrierPrismHom (d i j : ℕ) : - (CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).X i ⟶ - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).X i ⟶ + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ)).X j := if h : j = i + 1 then by subst j exact standardFacetCarrierPrismComponent d - (standardFacetCarrierPrism d) i + (_root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardFacetCarrierPrism d) i else 0 @[simp] lemma standardFacetCarrierPrismHom_succ (d i : ℕ) : standardFacetCarrierPrismHom d i (i + 1) = standardFacetCarrierPrismComponent d - (standardFacetCarrierPrism d) i := by + (_root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardFacetCarrierPrism d) i := by simp [standardFacetCarrierPrismHom] /-- The ambient carrier discrepancy is integrally chain-homotopic to zero. -/ @@ -1921,7 +1928,7 @@ def standardFacetCarrierDiscrepancyIntegralHomotopy (d : ℕ) : simp only [standardFacetCarrierPrismHom_succ, HomologicalComplex.zero_f, add_zero, zero_add] exact standardFacetCarrierPrismComponent_boundary_zero d - (standardFacetCarrierPrism d) + (_root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardFacetCarrierPrism d) (standardFacetCarrierPrism_equation d 0) | succ n => rw [Homotopy.dNext_succ_chainComplex, @@ -1929,71 +1936,71 @@ def standardFacetCarrierDiscrepancyIntegralHomotopy (d : ℕ) : simp only [standardFacetCarrierPrismHom_succ, HomologicalComplex.zero_f, add_zero] exact standardFacetCarrierPrismComponent_boundary_succ d - (standardFacetCarrierPrism d) n + (_root_.OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean.Singular.standardFacetCarrierPrism d) n (standardFacetCarrierPrism_equation d (n + 1)) /-- Rationalization of the acyclic-carrier homotopy. -/ def standardFacetCarrierDiscrepancyRationalHomotopy (d : ℕ) : Homotopy - (rationalizeSimplicialChainMap - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) - (TopCat.toSSet.obj (puncturedPair ℝ d).snd) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd) (standardFacetCarrierDiscrepancyChainMap d)) 0 := - (rationalizeSimplicialChainHomotopy - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) - (TopCat.toSSet.obj (puncturedPair ℝ d).snd) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainHomotopy + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd) (standardFacetCarrierDiscrepancyIntegralHomotopy d)).trans - (Homotopy.ofEq (rationalizeSimplicialChainMap_zero - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) - (TopCat.toSSet.obj (puncturedPair ℝ d).snd))) + (Homotopy.ofEq (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap_zero + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd))) /-- The integral affine-boundary chain map. -/ def standardAffineBoundaryIntegralChainMap (d : ℕ) : ((∂Δ[d] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)) ⟶ - (TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (AddCommGrpCat.of ℤ) := - SSet.chainComplexMap (standardAffineBoundarySimplicialMap d) + SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundarySimplicialMap d) (AddCommGrpCat.of ℤ) /-- Barycentric subdivision followed by last vertex on the facet-small simplicial set. -/ def standardFacetSmallBarycentricLastVertexIntegralChainMap (d : ℕ) : - CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) ⟶ - CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) := - barycentricSubdivisionChainMapCanonical - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) ≫ - subdivisionLastVertexChainMap - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) ⟶ + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) := + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) lemma standardFacetCarrierAffineIntersectionMap_comp_ambientInclusion (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : standardFacetCarrierAffineIntersectionMap d x ≫ TopCat.toSSet.map - (topologicalSubsetInclusion (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x))) = standardFacetCarrierBoundarySimplexMap d x ≫ - standardAffineBoundarySimplicialMap d := rfl + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundarySimplicialMap d := rfl set_option backward.isDefEq.respectTransparency false in lemma standardFacetCarrierSourceSubdivisionIntersectionMap_comp_ambientInclusion (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : standardFacetCarrierSourceSubdivisionIntersectionMap d x ≫ TopCat.toSSet.map - (topologicalSubsetInclusion (puncturedPair ℝ d).snd + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x))) = - simplexSubdivisionLastVertex.app (SimplexCategory.mk n) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.simplexSubdivisionLastVertex.app (SimplexCategory.mk n) ≫ SSet.yonedaEquiv.symm x.1 := rfl set_option backward.isDefEq.respectTransparency false in @@ -2001,79 +2008,79 @@ set_option backward.isDefEq.respectTransparency false in formed in the cover-small simplicial set or directly in the ambient singular set. -/ lemma standardFacetSmall_subdivision_to_source (d n : ℕ) - (x : (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n⦌) : SSet.stdSimplex.sdIso.inv.app (SimplexCategory.mk n) ≫ SSet.sd.map (SSet.yonedaEquiv.symm x) ≫ - subdivisionLastVertex.app - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) ≫ - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).ι = - simplexSubdivisionLastVertex.app (SimplexCategory.mk n) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) ≫ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).ι = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.simplexSubdivisionLastVertex.app (SimplexCategory.mk n) ≫ SSet.yonedaEquiv.symm x.1 := by - let K : SSet.{0} := coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) - let inc : K ⟶ TopCat.toSSet.obj (puncturedPair ℝ d).snd := - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).ι + let K : SSet.{0} := _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) + let inc : K ⟶ TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd := + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).ι have hy : SSet.yonedaEquiv.symm x ≫ inc = SSet.yonedaEquiv.symm x.1 := SSet.yonedaEquiv_symm_comp x - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).ι - have hnatInc : subdivisionLastVertex.app K ≫ inc = - SSet.sd.map inc ≫ subdivisionLastVertex.app - (TopCat.toSSet.obj (puncturedPair ℝ d).snd) := - (subdivisionLastVertex.naturality inc).symm + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).ι + have hnatInc : _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app K ≫ inc = + SSet.sd.map inc ≫ _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd) := + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.naturality inc).symm have hnatSimplex : SSet.sd.map (SSet.yonedaEquiv.symm x.1) ≫ - subdivisionLastVertex.app - (TopCat.toSSet.obj (puncturedPair ℝ d).snd) = - subdivisionLastVertex.app (Δ[n] : SSet.{0}) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd) = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app (Δ[n] : SSet.{0}) ≫ SSet.yonedaEquiv.symm x.1 := - subdivisionLastVertex.naturality (SSet.yonedaEquiv.symm x.1) + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.naturality (SSet.yonedaEquiv.symm x.1) let A := SSet.stdSimplex.sdIso.inv.app (SimplexCategory.mk n) let B := SSet.sd.map (SSet.yonedaEquiv.symm x) - let L := subdivisionLastVertex.app K + let L := _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app K calc ((A ≫ B) ≫ L) ≫ inc = (A ≫ B) ≫ (L ≫ inc) := Category.assoc _ _ _ _ = (A ≫ B) ≫ - (SSet.sd.map inc ≫ subdivisionLastVertex.app - (TopCat.toSSet.obj (puncturedPair ℝ d).snd)) := by rw [hnatInc] + (SSet.sd.map inc ≫ _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd)) := by rw [hnatInc] _ = A ≫ ((B ≫ SSet.sd.map inc) ≫ - subdivisionLastVertex.app - (TopCat.toSSet.obj (puncturedPair ℝ d).snd)) := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd)) := by simp only [Category.assoc] _ = A ≫ (SSet.sd.map (SSet.yonedaEquiv.symm x ≫ inc) ≫ - subdivisionLastVertex.app - (TopCat.toSSet.obj (puncturedPair ℝ d).snd)) := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd)) := by rw [SSet.sd.map_comp] _ = A ≫ (SSet.sd.map (SSet.yonedaEquiv.symm x.1) ≫ - subdivisionLastVertex.app - (TopCat.toSSet.obj (puncturedPair ℝ d).snd)) := by rw [hy] - _ = A ≫ (subdivisionLastVertex.app (Δ[n] : SSet.{0}) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd)) := by rw [hy] + _ = A ≫ (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app (Δ[n] : SSet.{0}) ≫ SSet.yonedaEquiv.symm x.1) := by rw [hnatSimplex] - _ = (A ≫ subdivisionLastVertex.app (Δ[n] : SSet.{0})) ≫ + _ = (A ≫ _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app (Δ[n] : SSet.{0})) ≫ SSet.yonedaEquiv.symm x.1 := (Category.assoc _ _ _).symm _ = _ := by - rw [subdivisionLastVertex_standardSimplex] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex_standardSimplex] set_option backward.isDefEq.respectTransparency false in lemma standardFacetCarrierDiscrepancyChainMap_eq (d : ℕ) : standardFacetCarrierDiscrepancyChainMap d = (standardFacetCarrierChainMap d ≫ standardAffineBoundaryIntegralChainMap d : - CoverSmallIntegralSingularChainComplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) ⟶ - IntegralSingularChainComplexObj (puncturedPair ℝ d).snd) - + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) ⟶ + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd) - standardFacetSmallBarycentricLastVertexIntegralChainMap d ≫ - coverSmallIntegralSingularChainInclusion - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) := by + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) := by apply HomologicalComplex.Hom.ext funext n - apply (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd + apply (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).chainComplex_hom_ext intro x simp only [HomologicalComplex.sub_f_apply, HomologicalComplex.comp_f] @@ -2089,11 +2096,11 @@ lemma standardFacetCarrierDiscrepancyChainMap_eq (d : ℕ) : have hmap := ((SSet.chainComplexFunctor AddCommGrpCat).obj (AddCommGrpCat.of ℤ)).congr_map (standardFacetCarrierAffineIntersectionMap_comp_ambientInclusion d n x) rw [Functor.map_comp, Functor.map_comp] at hmap - exact congrArg (fun k ↦ subdividedSimplexFundamentalChain n ≫ k.f n) hmap + exact congrArg (fun k ↦ _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain n ≫ k.f n) hmap · rw [← Category.assoc, standardFacetSmallBarycentricLastVertexIntegralChainMap, - HomologicalComplex.comp_f, barycentricSubdivisionChainMapCanonical_f, ← Category.assoc, - iota_barycentricSubdivisionComponent, barycentricSubdivisionSimplexChain, - subdividedStandardSimplexFundamentalChain] + HomologicalComplex.comp_f, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical_f, ← Category.assoc, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.iota_barycentricSubdivisionComponent, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionSimplexChain, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexFundamentalChain] simp only [Category.assoc] let F := (SSet.chainComplexFunctor AddCommGrpCat).obj (AddCommGrpCat.of ℤ) have hleft := F.congr_map @@ -2105,50 +2112,50 @@ lemma standardFacetCarrierDiscrepancyChainMap_eq (d : ℕ) : have htotal := hleft.trans hright.symm have hntotal := congrArg (fun k ↦ k.f n) htotal simp only [HomologicalComplex.comp_f] at hntotal - unfold standardFacetCarrierIntersectionChainInclusion subdivisionLastVertexChainMap - coverSmallIntegralSingularChainInclusion + unfold standardFacetCarrierIntersectionChainInclusion _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion dsimp only [F] at hntotal simpa only [Category.assoc] using - congrArg (fun k ↦ subdividedSimplexFundamentalChain n ≫ k) hntotal + congrArg (fun k ↦ _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain n ≫ k) hntotal lemma standardAffineBoundarySimplicialMap_range_le_coverSmall (d : ℕ) : - SSet.Subcomplex.range (standardAffineBoundarySimplicialMap d) ≤ - coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) := by + SSet.Subcomplex.range (_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundarySimplicialMap d) ≤ + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) := by rintro q _ ⟨y, rfl⟩ obtain ⟨i, hi⟩ := (SSet.mem_boundary_iff_notMem_range y.1).mp y.2 - rw [mem_coverSmallSingularSubcomplex_iff] - exact ⟨i, (singularSimplex_mem_range_subset - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d i) _).mpr + rw [_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.mem_coverSmallSingularSubcomplex_iff] + exact ⟨i, (_root_.OAI.AlgebraicTopology.Singular.SubsetChains.singularSimplex_mem_range_subset + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d i) _).mpr (standardAffineBoundarySimplex_image_subset_facetCover d q.unop.len y i hi)⟩ /-- The affine boundary simplicial map factored through cover-small singular simplices. -/ def standardAffineBoundaryToFacetSmall (d : ℕ) : (∂Δ[d] : SSet.{0}) ⟶ - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) := - SSet.Subcomplex.lift (standardAffineBoundarySimplicialMap d) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) := + SSet.Subcomplex.lift (_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundarySimplicialMap d) (standardAffineBoundarySimplicialMap_range_le_coverSmall d) @[reassoc (attr := simp)] lemma standardAffineBoundaryToFacetSmall_comp_inclusion (d : ℕ) : standardAffineBoundaryToFacetSmall d ≫ - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).ι = - standardAffineBoundarySimplicialMap d := rfl + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).ι = + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundarySimplicialMap d := rfl lemma standardAffineBoundary_vertex_mem_facetCover_iff (d n : ℕ) (y : (∂Δ[d] : SSet.{0}) _⦋n⦌) (a : Fin (n + 1)) (i : Fin (d + 1)) : - ((puncturedPair ℝ d).snd.toSSetObjEquiv _ - ((standardAffineBoundarySimplicialMap d).app _ y)) + ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv _ + ((_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundarySimplicialMap d).app _ y)) (Convexity.StdSimplex.single a) ∈ standardPuncturedFacetCover d i ↔ i ≠ y.1 a := by change (∃ j : Fin (d + 1), standardExtendedCoordinate d i - (standardAffineSimplex d (Convexity.StdSimplex.map y.1 (Convexity.StdSimplex.single a))) < + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAffineSimplex d (Convexity.StdSimplex.map y.1 (Convexity.StdSimplex.single a))) < standardExtendedCoordinate d j - (standardAffineSimplex d (Convexity.StdSimplex.map y.1 (Convexity.StdSimplex.single a)))) ↔ _ + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAffineSimplex d (Convexity.StdSimplex.map y.1 (Convexity.StdSimplex.single a)))) ↔ _ rw [Convexity.StdSimplex.map_single] simp only [standardExtendedCoordinate_standardAffineSimplex, sub_lt_sub_iff_right] @@ -2168,7 +2175,7 @@ lemma standardAffineBoundary_vertex_mem_facetCover_iff lemma standardAffineBoundarySmall_vertex_mem_facetCover_iff (d n : ℕ) (y : (∂Δ[d] : SSet.{0}) _⦋n⦌) (a : Fin (n + 1)) (i : Fin (d + 1)) : - ((puncturedPair ℝ d).snd.toSSetObjEquiv _ + ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv _ ((standardAffineBoundaryToFacetSmall d).app _ y).1) (Convexity.StdSimplex.single a) ∈ standardPuncturedFacetCover d i ↔ i ≠ y.1 a := @@ -2217,7 +2224,7 @@ lemma standardFacetCarrierSimplexMap_affine (d n : ℕ) (y : (∂Δ[d] : SSet.{0}) _⦋n⦌) : standardFacetCarrierSimplexMap d ((standardAffineBoundaryToFacetSmall d).app _ y) = - simplexSubdivisionLastVertex.app (SimplexCategory.mk n) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.simplexSubdivisionLastVertex.app (SimplexCategory.mk n) ≫ SSet.yonedaEquiv.symm y.1 := by ext q F apply SSet.stdSimplex.objEquiv.injective @@ -2227,7 +2234,7 @@ lemma standardFacetCarrierSimplexMap_affine (d n : ℕ) let A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1))) := F.obj r change standardFacetComplementCarrierMax d ((standardAffineBoundaryToFacetSmall d).app _ y) A = - y.1 (nonemptyFiniteChainMaximum + y.1 (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.nonemptyFiniteChainMaximum (ULift.{0} (Fin (n + 1))) A).down exact standardFacetComplementCarrierMax_affine d n y A @@ -2235,7 +2242,7 @@ lemma standardFacetCarrierBoundarySimplexMap_affine (d n : ℕ) (y : (∂Δ[d] : SSet.{0}) _⦋n⦌) : standardFacetCarrierBoundarySimplexMap d ((standardAffineBoundaryToFacetSmall d).app _ y) = - simplexSubdivisionLastVertex.app (SimplexCategory.mk n) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.simplexSubdivisionLastVertex.app (SimplexCategory.mk n) ≫ SSet.yonedaEquiv.symm y := by apply (cancel_mono (∂Δ[d]).ι).mp rw [standardFacetCarrierBoundarySimplexMap_comp_inclusion, @@ -2249,11 +2256,11 @@ lemma standardSubdivisionToCarrierBoundary_affine (d n : ℕ) (y : (∂Δ[d] : SSet.{0}) _⦋n⦌) : SSet.stdSimplex.sdIso.inv.app (SimplexCategory.mk n) ≫ SSet.sd.map (SSet.yonedaEquiv.symm y) ≫ - subdivisionLastVertex.app (∂Δ[d] : SSet.{0}) = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app (∂Δ[d] : SSet.{0}) = standardFacetCarrierBoundarySimplexMap d ((standardAffineBoundaryToFacetSmall d).app _ y) := by - rw [standardFacetCarrierBoundarySimplexMap_affine, subdivisionLastVertex.naturality, - ← Category.assoc, subdivisionLastVertex_standardSimplex] + rw [standardFacetCarrierBoundarySimplexMap_affine, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.naturality, + ← Category.assoc, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex_standardSimplex] rfl /-- On each affine simplex, carrier after subdivision is the usual subdivision--last-vertex @@ -2263,13 +2270,13 @@ lemma standardFacetCarrierSimplexChain_affine (d n : ℕ) standardFacetCarrierSimplexChain d n ((standardAffineBoundaryToFacetSmall d).app _ y) = (∂Δ[d] : SSet.{0}).ιChainComplex y ≫ - (barycentricSubdivisionChainMapCanonical (∂Δ[d] : SSet.{0}) ≫ - subdivisionLastVertexChainMap (∂Δ[d] : SSet.{0})).f n := by + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical (∂Δ[d] : SSet.{0}) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap (∂Δ[d] : SSet.{0})).f n := by rw [standardFacetCarrierSimplexChain] simp only [HomologicalComplex.comp_f] - rw [← Category.assoc, barycentricSubdivisionChainMapCanonical_f, - iota_barycentricSubdivisionComponent, barycentricSubdivisionSimplexChain, - subdividedStandardSimplexFundamentalChain] + rw [← Category.assoc, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical_f, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.iota_barycentricSubdivisionComponent, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionSimplexChain, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexFundamentalChain] simp only [Category.assoc] congr 1 have hmap := ((SSet.chainComplexFunctor AddCommGrpCat).obj (AddCommGrpCat.of ℤ)).congr_map @@ -2281,8 +2288,8 @@ lemma standardAffineSmall_comp_standardFacetCarrierChainMap (d : ℕ) : SSet.chainComplexMap (standardAffineBoundaryToFacetSmall d) (AddCommGrpCat.of ℤ) ≫ standardFacetCarrierChainMap d = - barycentricSubdivisionChainMapCanonical (∂Δ[d] : SSet.{0}) ≫ - subdivisionLastVertexChainMap (∂Δ[d] : SSet.{0}) := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical (∂Δ[d] : SSet.{0}) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap (∂Δ[d] : SSet.{0}) := by apply HomologicalComplex.Hom.ext funext n apply (∂Δ[d] : SSet.{0}).chainComplex_hom_ext @@ -2294,52 +2301,52 @@ lemma standardAffineSmall_comp_standardFacetCarrierChainMap (d : ℕ) : /-- The rationalized carrier chain map. -/ def standardFacetCarrierRationalChainMap (d : ℕ) : - CoverSmallRationalSingularChainComplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) ⟶ + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.CoverSmallRationalSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) ⟶ ((∂Δ[d] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ)) := - rationalizeSimplicialChainMap - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) (∂Δ[d] : SSet.{0}) (standardFacetCarrierChainMap d) /-- The rational subdivision--last-vertex endomorphism. -/ def standardBarycentricLastVertexRationalChainMap (d : ℕ) : ((∂Δ[d] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ)) ⟶ ((∂Δ[d] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ)) := - rationalizeSimplicialChainMap (∂Δ[d] : SSet.{0}) (∂Δ[d] : SSet.{0}) - (barycentricSubdivisionChainMapCanonical (∂Δ[d] : SSet.{0}) ≫ - subdivisionLastVertexChainMap (∂Δ[d] : SSet.{0})) + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap (∂Δ[d] : SSet.{0}) (∂Δ[d] : SSet.{0}) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical (∂Δ[d] : SSet.{0}) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap (∂Δ[d] : SSet.{0})) /-- The rational subdivision--last-vertex endomorphism is chain-homotopic to the identity. -/ def standardBarycentricLastVertexRationalHomotopy (d : ℕ) : Homotopy (standardBarycentricLastVertexRationalChainMap d) (𝟙 _) := - (rationalizeSimplicialChainHomotopy (∂Δ[d] : SSet.{0}) (∂Δ[d] : SSet.{0}) - (barycentricSubdivisionLastVertexHomotopyCanonical (∂Δ[d] : SSet.{0}))).trans - (Homotopy.ofEq (rationalizeSimplicialChainMap_id (∂Δ[d] : SSet.{0}))) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainHomotopy (∂Δ[d] : SSet.{0}) (∂Δ[d] : SSet.{0}) + (_root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.barycentricSubdivisionLastVertexHomotopyCanonical (∂Δ[d] : SSet.{0}))).trans + (Homotopy.ofEq (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap_id (∂Δ[d] : SSet.{0}))) lemma standardAffineSmallRational_comp_standardFacetCarrierRationalChainMap (d : ℕ) : SSet.chainComplexMap (standardAffineBoundaryToFacetSmall d) (ModuleCat.of ℚ ℚ) ≫ standardFacetCarrierRationalChainMap d = standardBarycentricLastVertexRationalChainMap d := by - rw [← rationalizeSimplicialChainMap_chainComplexMap] + rw [← _root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap_chainComplexMap] unfold standardFacetCarrierRationalChainMap - rw [← rationalizeSimplicialChainMap_comp, standardAffineSmall_comp_standardFacetCarrierChainMap] + rw [← _root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap_comp, standardAffineSmall_comp_standardFacetCarrierChainMap] rfl lemma standardAffineBoundaryChainMap_factor_facetSmall (d : ℕ) : SSet.chainComplexMap (standardAffineBoundaryToFacetSmall d) (ModuleCat.of ℚ ℚ) ≫ - coverSmallRationalSingularChainInclusion - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) = - standardAffineBoundaryChainMap d := by + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) = + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap d := by change SSet.chainComplexMap (standardAffineBoundaryToFacetSmall d) (ModuleCat.of ℚ ℚ) ≫ SSet.chainComplexMap - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).ι + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)).ι (ModuleCat.of ℚ ℚ) = - SSet.chainComplexMap (standardAffineBoundarySimplicialMap d) + SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundarySimplicialMap d) (ModuleCat.of ℚ ℚ) rw [← Functor.map_comp, standardAffineBoundaryToFacetSmall_comp_inclusion] @@ -2348,101 +2355,101 @@ lemma rationalizeSimplicialChainMap_sub (X Y : SSet.{0}) (f g : X.chainComplex (AddCommGrpCat.of ℤ) ⟶ Y.chainComplex (AddCommGrpCat.of ℤ)) : - rationalizeSimplicialChainMap X Y (f - g) = - rationalizeSimplicialChainMap X Y f - - rationalizeSimplicialChainMap X Y g := by + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap X Y (f - g) = + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap X Y f - + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap X Y g := by apply HomologicalComplex.hom_ext intro n - simp only [rationalizeSimplicialChainMap_f, + simp only [_root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap_f, sub_eq_add_neg, - rationalizeSimplicialChainComponent_add, - rationalizeSimplicialChainComponent_neg, + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainComponent_add, + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainComponent_neg, HomologicalComplex.add_f_apply, HomologicalComplex.neg_f_apply] /-- Rational subdivision followed by last vertex on the facet-small simplicial set. -/ def standardFacetSmallBarycentricLastVertexRationalChainMap (d : ℕ) : - CoverSmallRationalSingularChainComplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) ⟶ - CoverSmallRationalSingularChainComplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) := - rationalizeSimplicialChainMap - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.CoverSmallRationalSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) ⟶ + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.CoverSmallRationalSingularChainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) := + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) (standardFacetSmallBarycentricLastVertexIntegralChainMap d) /-- The rationalized carrier discrepancy is the difference between carrier followed by affine realization and subdivision--last-vertex followed by small-chain inclusion. -/ lemma standardFacetCarrierDiscrepancyRationalChainMap_eq (d : ℕ) : - rationalizeSimplicialChainMap - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) - (TopCat.toSSet.obj (puncturedPair ℝ d).snd) + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd) (standardFacetCarrierDiscrepancyChainMap d) = standardFacetCarrierRationalChainMap d ≫ - standardAffineBoundaryChainMap d - + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap d - standardFacetSmallBarycentricLastVertexRationalChainMap d ≫ - coverSmallRationalSingularChainInclusion - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) := by + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) := by rw [standardFacetCarrierDiscrepancyChainMap_eq] calc - _ = rationalizeSimplicialChainMap - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) - (TopCat.toSSet.obj (puncturedPair ℝ d).snd) + _ = _root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd) (standardFacetCarrierChainMap d ≫ standardAffineBoundaryIntegralChainMap d) - - rationalizeSimplicialChainMap - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) - (TopCat.toSSet.obj (puncturedPair ℝ d).snd) + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd) (standardFacetSmallBarycentricLastVertexIntegralChainMap d ≫ - coverSmallIntegralSingularChainInclusion - (puncturedPair ℝ d).snd + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)) := rationalizeSimplicialChainMap_sub _ _ _ _ _ = _ := by apply congrArg₂ (fun f g ↦ f - g) - · rw [rationalizeSimplicialChainMap_comp] + · rw [_root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap_comp] unfold standardFacetCarrierRationalChainMap standardAffineBoundaryIntegralChainMap - standardAffineBoundaryChainMap - rw [rationalizeSimplicialChainMap_chainComplexMap] - · unfold coverSmallIntegralSingularChainInclusion - rw [rationalizeSimplicialChainMap_comp] + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap + rw [_root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap_chainComplexMap] + · unfold _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion + rw [_root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap_comp] unfold standardFacetSmallBarycentricLastVertexRationalChainMap - coverSmallRationalSingularChainInclusion - rw [rationalizeSimplicialChainMap_chainComplexMap] + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion + rw [_root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap_chainComplexMap] /-- On facet-small rational chains, subdivision followed by last vertex is homotopic to the identity. -/ def standardFacetSmallBarycentricLastVertexRationalHomotopy (d : ℕ) : Homotopy (standardFacetSmallBarycentricLastVertexRationalChainMap d) ( 𝟙 _) := - (rationalizeSimplicialChainHomotopy - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) - (barycentricSubdivisionLastVertexHomotopyCanonical - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet))).trans - (Homotopy.ofEq (rationalizeSimplicialChainMap_id - (coverSmallSingularSubcomplex - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet))) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainHomotopy + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) + (_root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.barycentricSubdivisionLastVertexHomotopyCanonical + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet))).trans + (Homotopy.ofEq (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.rationalizeSimplicialChainMap_id + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet))) /-- The rational carrier followed by affine realization is homotopic to the inclusion of facet-small rational chains. -/ def standardFacetCarrierAffineRationalHomotopy (d : ℕ) : Homotopy (standardFacetCarrierRationalChainMap d ≫ - standardAffineBoundaryChainMap d) - (coverSmallRationalSingularChainInclusion - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d)) := + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap d) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d)) := let C := standardFacetCarrierRationalChainMap d ≫ - standardAffineBoundaryChainMap d + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap d let B := standardFacetSmallBarycentricLastVertexRationalChainMap d - let I := coverSmallRationalSingularChainInclusion - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) + let I := _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) have hnull : Homotopy (C - B ≫ I) 0 := (Homotopy.ofEq (standardFacetCarrierDiscrepancyRationalChainMap_eq d).symm).trans @@ -2453,11 +2460,11 @@ def standardFacetCarrierAffineRationalHomotopy (d : ℕ) : /-- A chain-level left inverse of affine realization, obtained by smallifying with respect to the facet cover and then applying the explicit carrier map. -/ def standardAffineBoundaryChainRetraction (d : ℕ) : - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (ModuleCat.of ℚ ℚ)) ⟶ ((∂Δ[d] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ)) := - (coverSmallRationalChainHomotopyEquiv_of_openCover - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalChainHomotopyEquiv_of_openCover + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) (isOpen_standardPuncturedFacetCover d) (iUnion_standardPuncturedFacetCover d)).inv ≫ standardFacetCarrierRationalChainMap d @@ -2466,20 +2473,20 @@ def standardAffineBoundaryChainRetraction (d : ℕ) : identity. -/ def standardAffineBoundaryChainRetractionHomotopy (d : ℕ) : Homotopy - (standardAffineBoundaryChainMap d ≫ + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap d ≫ standardAffineBoundaryChainRetraction d) (𝟙 ((∂Δ[d] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ))) := let A := SSet.chainComplexMap (standardAffineBoundaryToFacetSmall d) (ModuleCat.of ℚ ℚ) - let E := coverSmallRationalChainHomotopyEquiv_of_openCover - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) + let E := _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalChainHomotopyEquiv_of_openCover + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) (isOpen_standardPuncturedFacetCover d) (iUnion_standardPuncturedFacetCover d) let C := standardFacetCarrierRationalChainMap d - have hfac : standardAffineBoundaryChainMap d = A ≫ E.hom := by - rw [coverSmallRationalChainHomotopyEquiv_of_openCover_hom] + have hfac : _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap d = A ≫ E.hom := by + rw [_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalChainHomotopyEquiv_of_openCover_hom] exact (standardAffineBoundaryChainMap_factor_facetSmall d).symm - have hstart : standardAffineBoundaryChainMap d ≫ (E.inv ≫ C) = + have hstart : _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap d ≫ (E.inv ≫ C) = (A ≫ (E.hom ≫ E.inv)) ≫ C := by rw [hfac] simp only [Category.assoc] @@ -2498,20 +2505,20 @@ identity on punctured-space rational chains. -/ def standardAffineBoundaryChainCoretractionHomotopy (d : ℕ) : Homotopy (standardAffineBoundaryChainRetraction d ≫ - standardAffineBoundaryChainMap d) - (𝟙 ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap d) + (𝟙 ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (ModuleCat.of ℚ ℚ))) := - let E := coverSmallRationalChainHomotopyEquiv_of_openCover - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) + let E := _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalChainHomotopyEquiv_of_openCover + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) (isOpen_standardPuncturedFacetCover d) (iUnion_standardPuncturedFacetCover d) let C := standardFacetCarrierRationalChainMap d - let A := standardAffineBoundaryChainMap d - let I := coverSmallRationalSingularChainInclusion - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) + let A := _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap d + let I := _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) have hE : E.hom = I := - coverSmallRationalChainHomotopyEquiv_of_openCover_hom - (puncturedPair ℝ d).snd (standardPuncturedFacetCover d) + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalChainHomotopyEquiv_of_openCover_hom + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) (isOpen_standardPuncturedFacetCover d) (iUnion_standardPuncturedFacetCover d) have hcarrier : Homotopy (C ≫ A) E.hom := @@ -2526,9 +2533,9 @@ equivalence onto punctured Euclidean space. -/ def standardAffineBoundaryChainHomotopyEquiv (d : ℕ) : HomotopyEquiv ((∂Δ[d] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ)) - ((TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (ModuleCat.of ℚ ℚ)) where - hom := standardAffineBoundaryChainMap d + hom := _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap d inv := standardAffineBoundaryChainRetraction d homotopyHomInvId := standardAffineBoundaryChainRetractionHomotopy d homotopyInvHomId := standardAffineBoundaryChainCoretractionHomotopy d @@ -2538,14 +2545,14 @@ sphere in punctured Euclidean space. -/ def standardAffineBoundaryHomologyMap (n : ℕ) : ((∂Δ[n + 2] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ)).homology (n + 1) ⟶ - ((TopCat.toSSet.obj (puncturedPair ℝ (n + 2)).snd).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 2)).snd).chainComplex (ModuleCat.of ℚ ℚ)).homology (n + 1) := HomologicalComplex.homologyMap - (standardAffineBoundaryChainMap (n + 2)) (n + 1) + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap (n + 2)) (n + 1) /-- The induced map on homology back to the simplicial boundary. -/ def standardAffineBoundaryHomologyRetraction (n : ℕ) : - ((TopCat.toSSet.obj (puncturedPair ℝ (n + 2)).snd).chainComplex + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 2)).snd).chainComplex (ModuleCat.of ℚ ℚ)).homology (n + 1) ⟶ ((∂Δ[n + 2] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ)).homology (n + 1) := @@ -2587,71 +2594,71 @@ lemma standardAffineBoundaryHomologyMap_injective (n : ℕ) : using hcomp y lemma standardPuncturedBoundaryCycle_inclusion' (n : ℕ) : - standardPuncturedBoundaryCycle n ≫ - ((chainPairFunctor ℚ).obj - (puncturedPair ℝ (n + 1))).left.iCycles n = - standardSubspaceBoundaryChain n := by - rw [standardPuncturedBoundaryCycle, HomologicalComplex.liftCycles_i] + _root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardPuncturedBoundaryCycle n ≫ + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj + (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1))).left.iCycles n = + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassBoundary.Singular.standardSubspaceBoundaryChain n := by + rw [_root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardPuncturedBoundaryCycle, HomologicalComplex.liftCycles_i] lemma standardPuncturedBoundaryCycle_direct_inclusion (n : ℕ) : - standardPuncturedBoundaryCycle n ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ (n + 1)).snd).chainComplex + _root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardPuncturedBoundaryCycle n ≫ + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 1)).snd).chainComplex (ModuleCat.of ℚ ℚ)).iCycles n = - standardSubspaceBoundaryChain n := + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassBoundary.Singular.standardSubspaceBoundaryChain n := standardPuncturedBoundaryCycle_inclusion' n lemma standardSphereSimplicialBoundaryCycle_inclusion' (n : ℕ) : - standardSphereSimplicialBoundaryCycle n ≫ + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardSphereSimplicialBoundaryCycle n ≫ ((∂Δ[n + 2] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ)).iCycles (n + 1) = - standardSphereSimplicialBoundaryChain (n + 1) := by - rw [standardSphereSimplicialBoundaryCycle, + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardSphereSimplicialBoundaryChain (n + 1) := by + rw [_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardSphereSimplicialBoundaryCycle, HomologicalComplex.liftCycles_i] set_option backward.isDefEq.respectTransparency false in /-- The affine image of the simplicial alternating-facet cycle is the punctured Euclidean alternating-facet cycle. -/ lemma standardSphereSimplicialBoundaryCycle_affine (n : ℕ) : - standardSphereSimplicialBoundaryCycle n ≫ + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardSphereSimplicialBoundaryCycle n ≫ HomologicalComplex.cyclesMap - (standardAffineBoundaryChainMap (n + 2)) (n + 1) = - standardPuncturedBoundaryCycle (n + 1) := by + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap (n + 2)) (n + 1) = + _root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardPuncturedBoundaryCycle (n + 1) := by have hcycles : HomologicalComplex.cyclesMap - (standardAffineBoundaryChainMap (n + 2)) (n + 1) ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ (n + 2)).snd).chainComplex + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap (n + 2)) (n + 1) ≫ + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 2)).snd).chainComplex (ModuleCat.of ℚ ℚ)).iCycles (n + 1) = ((∂Δ[n + 2] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ)).iCycles (n + 1) ≫ - (standardAffineBoundaryChainMap (n + 2)).f (n + 1) := - HomologicalComplex.cyclesMap_i (standardAffineBoundaryChainMap (n + 2)) (n + 1) + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap (n + 2)).f (n + 1) := + HomologicalComplex.cyclesMap_i (_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap (n + 2)) (n + 1) apply (cancel_mono - (((TopCat.toSSet.obj (puncturedPair ℝ (n + 2)).snd).chainComplex + (((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 2)).snd).chainComplex (ModuleCat.of ℚ ℚ)).iCycles (n + 1))).mp rw [Category.assoc, hcycles, standardPuncturedBoundaryCycle_direct_inclusion, ← Category.assoc, standardSphereSimplicialBoundaryCycle_inclusion'] - exact standardAffineBoundaryChainMap_standardSphereSimplicialBoundaryChain (n + 1) + exact _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap_standardSphereSimplicialBoundaryChain (n + 1) set_option backward.isDefEq.respectTransparency false in /-- On homology, the affine realization sends the known simplicial sphere generator to the explicit boundary class in punctured Euclidean space. -/ lemma standardAffineBoundaryHomologyMap_standardSphereSimplicialBoundaryClass (n : ℕ) : (standardAffineBoundaryHomologyMap n).hom - (standardSphereSimplicialBoundaryClass n) = - standardPuncturedBoundaryClass (n + 1) := by + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardSphereSimplicialBoundaryClass n) = + _root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardPuncturedBoundaryClass (n + 1) := by have hmor : - standardSphereSimplicialBoundaryCycle n ≫ + _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardSphereSimplicialBoundaryCycle n ≫ ((∂Δ[n + 2] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ)).homologyπ (n + 1) ≫ standardAffineBoundaryHomologyMap n = - standardPuncturedBoundaryCycle (n + 1) ≫ - ((TopCat.toSSet.obj (puncturedPair ℝ (n + 2)).snd).chainComplex + _root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardPuncturedBoundaryCycle (n + 1) ≫ + ((TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ (n + 2)).snd).chainComplex (ModuleCat.of ℚ ℚ)).homologyπ (n + 1) := by - change standardSphereSimplicialBoundaryCycle n ≫ + change _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardSphereSimplicialBoundaryCycle n ≫ ((∂Δ[n + 2] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ)).homologyπ (n + 1) ≫ HomologicalComplex.homologyMap - (standardAffineBoundaryChainMap (n + 2)) (n + 1) = _ + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardAffineBoundaryChainMap (n + 2)) (n + 1) = _ rw [HomologicalComplex.homologyπ_naturality, ← Category.assoc, standardSphereSimplicialBoundaryCycle_affine] exact ConcreteCategory.congr_hom hmor 1 @@ -2660,9 +2667,9 @@ lemma standardAffineBoundaryHomologyMap_standardSphereSimplicialBoundaryClass (n punctured Euclidean boundary class. -/ lemma standardPuncturedBoundaryClass_succ_ne_zero_of_affine_injective (n : ℕ) (h : Function.Injective (standardAffineBoundaryHomologyMap n).hom) : - standardPuncturedBoundaryClass (n + 1) ≠ 0 := by + _root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardPuncturedBoundaryClass (n + 1) ≠ 0 := by intro hz - apply standardSphereSimplicialBoundaryClass_ne_zero n + apply _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardSphereSimplicialBoundaryClass_ne_zero n apply h rw [standardAffineBoundaryHomologyMap_standardSphereSimplicialBoundaryClass, hz, map_zero] @@ -2670,7 +2677,7 @@ lemma standardPuncturedBoundaryClass_succ_ne_zero_of_affine_injective /-- The explicit oriented boundary class is nonzero in every degree. -/ lemma standardPuncturedBoundaryClass_succ_ne_zero (n : ℕ) : - standardPuncturedBoundaryClass (n + 1) ≠ 0 := + _root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardPuncturedBoundaryClass (n + 1) ≠ 0 := standardPuncturedBoundaryClass_succ_ne_zero_of_affine_injective n (standardAffineBoundaryHomologyMap_injective n) @@ -2678,47 +2685,52 @@ lemma standardPuncturedBoundaryClass_succ_ne_zero (n : ℕ) : top homology. -/ lemma span_standardPuncturedBoundaryClass_succ_eq_top_of_affine_isIso (n : ℕ) [IsIso (standardAffineBoundaryHomologyMap n)] : - Submodule.span ℚ {standardPuncturedBoundaryClass (n + 1)} = ⊤ := by + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardPuncturedBoundaryClass (n + 1)} = ⊤ := by let e := (asIso (standardAffineBoundaryHomologyMap n)).toLinearEquiv - have he : e (standardSphereSimplicialBoundaryClass n) = - standardPuncturedBoundaryClass (n + 1) := + have he : e (_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardSphereSimplicialBoundaryClass n) = + _root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardPuncturedBoundaryClass (n + 1) := standardAffineBoundaryHomologyMap_standardSphereSimplicialBoundaryClass n have hmap : - (Submodule.span ℚ {standardSphereSimplicialBoundaryClass n}).map e.toLinearMap = - Submodule.span ℚ {standardPuncturedBoundaryClass (n + 1)} := by + (Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.standardSphereSimplicialBoundaryClass n}).map e.toLinearMap = + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardPuncturedBoundaryClass (n + 1)} := by rw [Submodule.map_span] simp [he] rfl have etop : (⊤ : Submodule ℚ _).map e.toLinearMap = ⊤ := by rw [Submodule.map_top] exact LinearMap.range_eq_top.mpr e.surjective - rw [← hmap, span_standardSphereSimplicialBoundaryClass_eq_top, etop] + rw [← hmap, _root_.OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary.Singular.span_standardSphereSimplicialBoundaryClass_eq_top, etop] rfl /-- The explicit standard local class is nonzero in every positive dimension. -/ lemma standardLocalClass_ne_zero_of_pos (d : ℕ) (hd : 0 < d) : - standardLocalClass ℚ d ≠ 0 := by + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ d ≠ 0 := by cases d with | zero => lia | succ n => cases n with - | zero => exact standardLocalClass_one_ne_zero + | zero => exact _root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardLocalClass_one_ne_zero | succ n => - rw [standardLocalClass_succ_ne_zero_iff (n + 1) (by lia)] + rw [_root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.standardLocalClass_succ_ne_zero_iff (n + 1) (by lia)] exact standardPuncturedBoundaryClass_succ_ne_zero n /-- In dimensions at least two, an affine-boundary homology isomorphism makes the standard relative local class a generator. -/ lemma span_standardLocalClass_add_two_eq_top_of_affine_isIso (n : ℕ) [IsIso (standardAffineBoundaryHomologyMap n)] : - Submodule.span ℚ {standardLocalClass ℚ (n + 2)} = ⊤ := by - rw [span_standardLocalClass_succ_eq_top_iff (n + 1) (by lia)] + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (n + 2)} = ⊤ := by + rw [_root_.OAI.AlgebraicTopology.LocalHomology.Euclidean.Singular.span_standardLocalClass_succ_eq_top_iff (n + 1) (by lia)] exact span_standardPuncturedBoundaryClass_succ_eq_top_of_affine_isIso n /-- In every dimension at least two, the explicit standard relative local class generates rational local homology. -/ lemma span_standardLocalClass_add_two_eq_top (n : ℕ) : - Submodule.span ℚ {standardLocalClass ℚ (n + 2)} = ⊤ := + Submodule.span ℚ {_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardLocalClass ℚ (n + 2)} = ⊤ := span_standardLocalClass_add_two_eq_top_of_affine_isIso n -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.PuncturedEuclidean diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/SphereAffineBoundary.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/SphereAffineBoundary.lean index e22653278c..6afee502f6 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/SphereAffineBoundary.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/SphereAffineBoundary.lean @@ -12,16 +12,21 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric +import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FundamentalClass -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.SphereSimplicialHomology +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.FundamentalClass +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.SphereSimplicialHomology import Mathlib.AlgebraicTopology.SimplicialSet.TopAdj +namespace OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary + +open scoped OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex Simplicial + /-! # The affine boundary map into punctured Euclidean space @@ -30,12 +35,13 @@ simplicial boundary therefore gives a simplicial map into punctured Euclidean sp constructs that map in every dimension. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Simplicial Opposite -open scoped Convexity.StdSimplex Simplicial +open _root_.CategoryTheory Limits Simplicial Opposite +open scoped _root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex Simplicial -namespace AlgebraicTopology.Singular +section +namespace Singular lemma stdSimplex_map_apply_eq_zero_of_notMem_range {X Y : Type*} [Fintype X] [Fintype Y] @@ -48,25 +54,25 @@ lemma stdSimplex_map_apply_eq_zero_of_notMem_range def standardAffineBoundarySimplex (d k : ℕ) (x : (∂Δ[d] : SSet.{0}).obj (op (SimplexCategory.mk k))) : C(Convexity.StdSimplex ℝ (Fin (k + 1)), ({0}ᶜ : Set (Fin d → ℝ))) where - toFun t := ⟨standardAffineSimplex d (Convexity.StdSimplex.map x.1 t), by + toFun t := ⟨_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAffineSimplex d (Convexity.StdSimplex.map x.1 t), by obtain ⟨j, hj⟩ := (SSet.mem_boundary_iff_notMem_range x.1).mp x.2 - exact standardAffineSimplex_ne_zero_of_coord_zero d _ j + exact _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardAffineSimplex_ne_zero_of_coord_zero d _ j (stdSimplex_map_apply_eq_zero_of_notMem_range x.1 t j hj)⟩ continuous_toFun := by fun_prop /-- The boundary of the universal affine `d`-simplex as a map of simplicial sets into the singular simplicial set of punctured `ℝ^d`. -/ def standardAffineBoundarySimplicialMap (d : ℕ) : - (∂Δ[d] : SSet.{0}) ⟶ TopCat.toSSet.obj (puncturedPair ℝ d).snd where - app n := ↾ fun x ↦ ((puncturedPair ℝ d).snd.toSSetObjEquiv _).symm + (∂Δ[d] : SSet.{0}) ⟶ TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd where + app n := ↾ fun x ↦ ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv _).symm (standardAffineBoundarySimplex d n.unop.len x) naturality n m f := by ext x - change ((puncturedPair ℝ d).snd.toSSetObjEquiv m).symm + change ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv m).symm (standardAffineBoundarySimplex d m.unop.len ((∂Δ[d] : SSet.{0}).map f x)) = _ calc - _ = ((puncturedPair ℝ d).snd.toSSetObjEquiv m).symm + _ = ((_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd.toSSetObjEquiv m).symm ((standardAffineBoundarySimplex d n.unop.len x).comp ⟨Convexity.StdSimplex.map f.unop, Convexity.StdSimplex.continuous_map ℝ f.unop⟩) := by congr 1 @@ -76,7 +82,7 @@ def standardAffineBoundarySimplicialMap (d : ℕ) : rw [← Convexity.StdSimplex.map_comp] rfl _ = _ := (TopCat.toSSetObjEquiv_symm_naturality - (X := (puncturedPair ℝ d).snd) (f := f.unop) + (X := (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd) (f := f.unop) (g := standardAffineBoundarySimplex d n.unop.len x)).symm /-- The unique nondegenerate simplex in the top dimension of a standard simplex. -/ @@ -118,12 +124,12 @@ lemma standardSphereBoundaryFaceSimplex_injective (n : ℕ) : lemma standardAffineBoundarySimplicialMap_face (n : ℕ) (i : Fin (n + 2)) : (standardAffineBoundarySimplicialMap (n + 1)).app _ (standardSphereBoundaryFaceSimplex n i) = - standardFaceSimplex n i := rfl + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.standardFaceSimplex n i := rfl /-- The chain map from a simplicial boundary to singular chains of punctured coordinate space. -/ def standardAffineBoundaryChainMap (d : ℕ) : ((∂Δ[d] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ)) ⟶ - (TopCat.toSSet.obj (puncturedPair ℝ d).snd).chainComplex + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.puncturedPair ℝ d).snd).chainComplex (ModuleCat.of ℚ ℚ) := SSet.chainComplexMap (standardAffineBoundarySimplicialMap d) (ModuleCat.of ℚ ℚ) @@ -231,7 +237,7 @@ def standardSphereSimplicialBoundaryClass (n : ℕ) : /-- The alternating facet chain after passage to normalized chains. -/ def standardSphereSimplicialNormalizedBoundaryChain (n : ℕ) : ModuleCat.of ℚ ℚ ⟶ - (standardSphereSuccNormalizedRationalChains n).X (n + 1) := + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n).X (n + 1) := standardSphereSimplicialBoundaryChain (n + 1) ≫ ((∂Δ[n + 2] : SSet.{0}).toNormalizedChainComplex (ModuleCat.of ℚ ℚ)).f (n + 1) @@ -239,7 +245,7 @@ def standardSphereSimplicialNormalizedBoundaryChain (n : ℕ) : open scoped Classical in /-- The coefficient functional of the zeroth oriented facet in normalized top chains. -/ def standardSphereSimplicialNormalizedBoundaryDetector (n : ℕ) : - (standardSphereSuccNormalizedRationalChains n).X (n + 1) ⟶ + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n).X (n + 1) ⟶ ModuleCat.of ℚ ℚ := Cofan.IsColimit.desc ((∂Δ[n + 2] : SSet.{0}).isColimitCofanNormalizedChainComplex @@ -282,7 +288,7 @@ lemma standardSphereSimplicialNormalizedBoundaryChain_detect (n : ℕ) : lemma standardSphereSimplicialNormalizedBoundaryChain_boundary (n : ℕ) : standardSphereSimplicialNormalizedBoundaryChain n ≫ - (standardSphereSuccNormalizedRationalChains n).d (n + 1) n = 0 := by + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n).d (n + 1) n = 0 := by let K := (∂Δ[n + 2] : SSet.{0}).chainComplex (ModuleCat.of ℚ ℚ) let L := (∂Δ[n + 2] : SSet.{0}).normalizedChainComplex (ModuleCat.of ℚ ℚ) let q : K ⟶ L := @@ -303,8 +309,8 @@ lemma standardSphereSimplicialNormalizedBoundaryChain_boundary (n : ℕ) : /-- The normalized alternating facets as a top cycle. -/ def standardSphereSimplicialNormalizedBoundaryCycle (n : ℕ) : ModuleCat.of ℚ ℚ ⟶ - (standardSphereSuccNormalizedRationalChains n).cycles (n + 1) := - (standardSphereSuccNormalizedRationalChains n).liftCycles + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n).cycles (n + 1) := + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n).liftCycles (standardSphereSimplicialNormalizedBoundaryChain n) ((ComplexShape.down ℕ).next (n + 1)) rfl (by rw [ChainComplex.next_nat_succ] @@ -312,24 +318,24 @@ def standardSphereSimplicialNormalizedBoundaryCycle (n : ℕ) : lemma standardSphereSimplicialNormalizedBoundaryCycle_inclusion (n : ℕ) : standardSphereSimplicialNormalizedBoundaryCycle n ≫ - (standardSphereSuccNormalizedRationalChains n).iCycles (n + 1) = + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n).iCycles (n + 1) = standardSphereSimplicialNormalizedBoundaryChain n := - (standardSphereSuccNormalizedRationalChains n).liftCycles_i + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n).liftCycles_i (standardSphereSimplicialNormalizedBoundaryChain n) ((ComplexShape.down ℕ).next (n + 1)) rfl _ /-- The normalized homology class of the alternating facets. -/ def standardSphereSimplicialNormalizedBoundaryClass (n : ℕ) : - (standardSphereSuccNormalizedRationalChains n).homology (n + 1) := + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n).homology (n + 1) := ((standardSphereSimplicialNormalizedBoundaryCycle n ≫ - (standardSphereSuccNormalizedRationalChains n).homologyπ (n + 1)).hom) 1 + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n).homologyπ (n + 1)).hom) 1 /-- The explicit alternating-facet class is nonzero in normalized top homology. -/ lemma standardSphereSimplicialNormalizedBoundaryClass_ne_zero (n : ℕ) : standardSphereSimplicialNormalizedBoundaryClass n ≠ 0 := by - let K := standardSphereSuccNormalizedRationalChains n + let K := _root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n have hd : K.d (n + 2) (n + 1) = 0 := - (standardSphereSucc_normalizedChains_aboveTop_isZero n).eq_of_src _ _ + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSucc_normalizedChains_aboveTop_isZero n).eq_of_src _ _ let : IsIso (K.homologyπ (n + 1)) := K.isIso_homologyπ (n + 2) (n + 1) (by simp) hd intro h @@ -359,7 +365,7 @@ lemma standardSphereSimplicialBoundaryCycle_normalization (n : ℕ) : (ModuleCat.of ℚ ℚ)) (n + 1) = standardSphereSimplicialNormalizedBoundaryCycle n := by apply (cancel_mono - ((standardSphereSuccNormalizedRationalChains n).iCycles (n + 1))).mp + ((_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n).iCycles (n + 1))).mp rw [Category.assoc, HomologicalComplex.cyclesMap_i, standardSphereSimplicialNormalizedBoundaryCycle_inclusion, ← Category.assoc, standardSphereSimplicialBoundaryCycle, HomologicalComplex.liftCycles_i] @@ -378,7 +384,7 @@ lemma standardSphereSimplicialBoundaryClass_normalization (n : ℕ) : (ModuleCat.of ℚ ℚ)).homologyπ (n + 1) ≫ HomologicalComplex.homologyMap q (n + 1) = standardSphereSimplicialNormalizedBoundaryCycle n ≫ - (standardSphereSuccNormalizedRationalChains n).homologyπ (n + 1) := by + (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccNormalizedRationalChains n).homologyπ (n + 1) := by rw [HomologicalComplex.homologyπ_naturality, ← Category.assoc, standardSphereSimplicialBoundaryCycle_normalization] exact ConcreteCategory.congr_hom hmor 1 @@ -394,7 +400,7 @@ lemma standardSphereSimplicialBoundaryClass_ne_zero (n : ℕ) : /-- The explicit alternating-facet class spans ordinary rational simplicial top homology. -/ lemma span_standardSphereSimplicialBoundaryClass_eq_top (n : ℕ) : Submodule.span ℚ {standardSphereSimplicialBoundaryClass n} = ⊤ := by - let e := (standardSphereSuccSimplicialHomologyTopIsoRat n).toLinearEquiv + let e := (_root_.OAI.AlgebraicTopology.LocalHomology.SphereSimplicial.Singular.standardSphereSuccSimplicialHomologyTopIsoRat n).toLinearEquiv have he : e (standardSphereSimplicialBoundaryClass n) ≠ 0 := e.map_ne_zero_iff.mpr (standardSphereSimplicialBoundaryClass_ne_zero n) have hone : Submodule.span ℚ {e (standardSphereSimplicialBoundaryClass n)} = ⊤ := @@ -409,8 +415,8 @@ lemma span_standardSphereSimplicialBoundaryClass_eq_top (n : ℕ) : lemma standardAffineBoundaryChainMap_standardSphereSimplicialBoundaryChain (n : ℕ) : standardSphereSimplicialBoundaryChain n ≫ (standardAffineBoundaryChainMap (n + 1)).f n = - standardSubspaceBoundaryChain n := by - rw [standardSphereSimplicialBoundaryChain, standardSubspaceBoundaryChain, + _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassBoundary.Singular.standardSubspaceBoundaryChain n := by + rw [standardSphereSimplicialBoundaryChain, _root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClassBoundary.Singular.standardSubspaceBoundaryChain, Preadditive.sum_comp] apply Finset.sum_congr rfl intro i _ @@ -423,4 +429,9 @@ lemma standardAffineBoundaryChainMap_standardSphereSimplicialBoundaryChain (n : rw [SSet.ι_chainComplexMap_f, standardAffineBoundarySimplicialMap_face] rfl -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.SphereAffineBoundary diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/SphereSimplicialHomology.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/SphereSimplicialHomology.lean index 43477269c3..d3958d6972 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/SphereSimplicialHomology.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/LocalHomology/SphereSimplicialHomology.lean @@ -12,17 +12,20 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Category.ModuleCat.Abelian -public import Mathlib.Algebra.Category.ModuleCat.Colimits -public import Mathlib.AlgebraicTopology.SimplicialSet.Boundary -public import Mathlib.AlgebraicTopology.SimplicialSet.Homology.Nondegenerate +import Mathlib.Algebra.Category.ModuleCat.Abelian +import Mathlib.Algebra.Category.ModuleCat.Colimits +import Mathlib.AlgebraicTopology.SimplicialSet.Boundary +import Mathlib.AlgebraicTopology.SimplicialSet.Homology.Nondegenerate import Mathlib.Algebra.Homology.SingleHomology import Mathlib.AlgebraicTopology.ExtraDegeneracy +namespace OAI.AlgebraicTopology.LocalHomology.SphereSimplicial + /-! # Rational top homology of simplicial spheres @@ -31,12 +34,13 @@ dimensional standard simplex. The proof compares normalized chains below the top the full simplex and uses its extra degeneracy. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Simplicial HomologicalComplex +open _root_.CategoryTheory Limits Simplicial _root_.HomologicalComplex open scoped Simplicial -namespace AlgebraicTopology.Singular +section +namespace Singular /-- Normalized rational chains of the standard `(n + 2)`-simplex. -/ abbrev standardSimplexSuccNormalizedRationalChains (n : ℕ) : @@ -240,4 +244,9 @@ def standardSphereSuccSimplicialHomologyTopIsoRat (n : ℕ) : ((∂Δ[n + 2] : SSet.{0}).toNormalizedChainComplex (ModuleCat.of ℚ ℚ)) (n + 1) ≪≫ standardSphereSuccNormalizedHomologyTopIsoRat n -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.LocalHomology.SphereSimplicial diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/CohomologyStalkVanishing.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/CohomologyStalkVanishing.lean index 63d3667b34..756a5fbf0d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/CohomologyStalkVanishing.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/CohomologyStalkVanishing.lean @@ -1,12 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.CohomologyStalkVanishing +import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.CohomologyStalkVanishing + +namespace OAI.AlgebraicTopology.Sheaf.CohomologyStalkIs + +open _root_.TopCat +open _root_.TopCat.Presheaf +open _root_.TopCat.Sheaf /-! # Cohomology-sheaf stalk vanishing from cofinal local section calculations @@ -17,15 +24,17 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite HomologicalComplex +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite _root_.HomologicalComplex universe u -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable (X : TopCat.{u}) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) @@ -33,26 +42,31 @@ variable (X : TopCat.{u}) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) ∈ X`. The stalk at `x` of the presheaf `U ↦ H^n(K(U))` is naturally isomorphic to the stalk of the cohomology sheaf `H^n(K)`. This is that isomorphism; both groups identify with `H^n(K_x)`. -/ def sectionCohomologyPresheafStalkIso (n : ℤ) (x : X) : - (Presheaf.stalkFunctor AddCommGrpCat.{u} x).obj (sectionCohomologyPresheaf X K n) ≅ - (additiveSheafStalkFunctor X x).obj (K.homology n) := + (Presheaf.stalkFunctor AddCommGrpCat.{u} x).obj (_root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheaf X K n) ≅ + (_root_.OAI.AlgebraicTopology.Sheaf.HomologySection.Singular.additiveSheafStalkFunctor X x).obj (K.homology n) := let S : ShortComplex (CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat.{u}) := K.sc n let P : ShortComplex ((Opens X)ᵒᵖ ⥤ AddCommGrpCat.{u}) := (((forget AddCommGrpCat.{u} X).mapHomologicalComplex ℤᵘᵖ).obj K).sc n - (P.mapHomologyIso (additivePresheafStalkFunctor X x)).symm ≪≫ - S.mapHomologyIso (additiveSheafStalkFunctor X x) + (P.mapHomologyIso (_root_.OAI.AlgebraicTopology.Sheaf.HomologySection.Singular.additivePresheafStalkFunctor X x)).symm ≪≫ + S.mapHomologyIso (_root_.OAI.AlgebraicTopology.Sheaf.HomologySection.Singular.additiveSheafStalkFunctor X x) -end TopCat.Sheaf +end TopCat +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite HomologicalComplex +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite _root_.HomologicalComplex universe u -namespace TopCat.Presheaf +namespace TopCat +open _root_.TopCat +namespace Presheaf +open _root_.TopCat +open _root_.TopCat.Presheaf variable {X : TopCat.{u}} @@ -71,11 +85,14 @@ lemma isZero_stalk_of_cofinal_sections have hs : P.map (homOfLE hVU).op s = 0 := Subsingleton.elim _ _ rw [← P.germ_res_apply (homOfLE hVU) x hxV, hs, map_zero] -end TopCat.Presheaf +end Presheaf +end TopCat -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat -open AlgebraicTopology.Singular +open _root_.OAI.AlgebraicTopology.Singular variable (X : TopCat.{u}) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) @@ -84,20 +101,20 @@ local input taken as a hypothesis. -/ lemma cohomologySheaf_stalk_isZero_of_cofinal_sections (n : ℤ) (x : X) (hlocal : ∀ (U : Opens X), x ∈ U → ∃ (V : Opens X), V ≤ U ∧ x ∈ V ∧ - IsZero ((((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj K).homology n)) : - IsZero ((additiveSheafStalkFunctor X x).obj (K.homology n)) := by + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj K).homology n)) : + IsZero ((_root_.OAI.AlgebraicTopology.Sheaf.HomologySection.Singular.additiveSheafStalkFunctor X x).obj (K.homology n)) := by apply (sectionCohomologyPresheafStalkIso X K n x).isZero_iff.mp - apply Presheaf.isZero_stalk_of_cofinal_sections + apply _root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkIs.TopCat.Presheaf.isZero_stalk_of_cofinal_sections intro U hxU obtain ⟨V, hVU, hxV, hV⟩ := hlocal U hxU - exact ⟨V, hVU, hxV, (sectionCohomologyPresheafOnOpenIso X K n V).isZero_iff.mp hV⟩ + exact ⟨V, hVU, hxV, (_root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkVanishing.TopCat.sectionCohomologyPresheafOnOpenIso X K n V).isZero_iff.mp hV⟩ /-- If all points admit the cofinal local calculation, the cohomology sheaf vanishes globally. -/ lemma cohomologySheaf_isZero_of_cofinal_sections (n : ℤ) (hlocal : ∀ (x : X) (U : Opens X), x ∈ U → ∃ (V : Opens X), V ≤ U ∧ x ∈ V ∧ - IsZero ((((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj K).homology n)) : + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj K).homology n)) : IsZero (K.homology n) := by exact (isZero_iff_stalkFunctor_obj_isZero _).mpr fun x => cohomologySheaf_stalk_isZero_of_cofinal_sections X K n x (hlocal x) @@ -108,19 +125,24 @@ lemma quasiIso_of_cofinal_section_quasiIso {K L : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ} (f : K ⟶ L) (hlocal : ∀ (x : X) (U : Opens X), x ∈ U → ∃ (V : Opens X), V ≤ U ∧ x ∈ V ∧ - QuasiIso (((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map f)) : + QuasiIso (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map f)) : QuasiIso f := by - apply IsFlasque.BoundedBelowComplex.quasiIso_of_mappingCone_acyclic + apply _root_.OAI.AlgebraicTopology.Sheaf.FlasqueQuasiIso.TopCat.IsFlasque.BoundedBelowComplex.quasiIso_of_mappingCone_acyclic intro n rw [exactAt_iff_isZero_homology] apply cohomologySheaf_isZero_of_cofinal_sections intro x U hxU obtain ⟨V, hVU, hxV, hV⟩ := hlocal x U hxU refine ⟨V, hVU, hxV, ?_⟩ - let F := supportEvaluation X V - have h := IsFlasque.BoundedBelowComplex.mappingCone_acyclic_of_quasiIso + let F := _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V + have h := _root_.OAI.AlgebraicTopology.Sheaf.FlasqueQuasiIso.TopCat.IsFlasque.BoundedBelowComplex.mappingCone_acyclic_of_quasiIso ((F.mapHomologicalComplex ℤᵘᵖ).map f) n exact (homologyMapIso (CochainComplex.mappingCone.mapHomologicalComplexIso f F) n).isZero_iff.mpr h.isZero_homology -end TopCat.Sheaf +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.CohomologyStalkIs diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueAcyclic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueAcyclic.lean index 6b9eb45c5a..3859d42323 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueAcyclic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueAcyclic.lean @@ -12,15 +12,20 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.CategoryTheory.Abelian.GrothendieckCategory.HasExt -public import Mathlib.CategoryTheory.Sites.SheafCohomology.Basic -public import Mathlib.Topology.Sheaves.Flasque +import Mathlib.CategoryTheory.Abelian.GrothendieckCategory.HasExt +import Mathlib.CategoryTheory.Sites.SheafCohomology.Basic +import Mathlib.Topology.Sheaves.Flasque import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.InjectiveFlasque +namespace OAI.AlgebraicTopology.Sheaf.FlasqueAcyclic + +open _root_.TopCat + /-! # Flasque sheaves are acyclic @@ -29,13 +34,15 @@ every positive degree. The proof uses an injective embedding and dimension shif degree-one step uses surjectivity on global sections, which follows from flasqueness. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Opposite TopologicalSpace +open _root_.CategoryTheory Limits Opposite _root_.TopologicalSpace universe u -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable {X : TopCat.{u}} @@ -45,4 +52,9 @@ local instance extAddCommGroup AddCommGroup (Abelian.Ext A B n) := Abelian.Ext.instAddCommGroup -end TopCat.Sheaf +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.FlasqueAcyclic diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueBoundedBelow.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueBoundedBelow.lean index d0a400dc36..917ec11cf5 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueBoundedBelow.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueBoundedBelow.lean @@ -12,12 +12,19 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.FlasqueBoundedBelow +import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.FlasqueBoundedBelow + +namespace OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs + +open _root_.TopCat +open _root_.TopCat.Sheaf +open _root_.TopCat.Sheaf.IsFlasque /-! # Global sections of bounded-below exact flasque complexes @@ -28,17 +35,24 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Opposite TopologicalSpace +open _root_.CategoryTheory Limits Opposite _root_.TopologicalSpace -namespace TopCat.Sheaf.IsFlasque +section +namespace TopCat +open _root_.TopCat +namespace IsFlasque +open _root_.TopCat +open _root_.TopCat.Sheaf.IsFlasque universe u variable {X : TopCat.{u}} namespace BoundedBelowComplex +open _root_.TopCat +open _root_.TopCat.Sheaf.IsFlasque variable (K : CochainComplex (TopCat.Sheaf AddCommGrpCat.{u} X) ℤ) @@ -52,15 +66,22 @@ def cyclesShortComplex (i : ℤ) : end BoundedBelowComplex -end TopCat.Sheaf.IsFlasque +end IsFlasque +end TopCat +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Opposite TopologicalSpace +open _root_.CategoryTheory Limits Opposite _root_.TopologicalSpace -namespace TopCat.Sheaf.IsFlasque +section +namespace TopCat +open _root_.TopCat +namespace IsFlasque +open _root_.TopCat +open _root_.TopCat.Sheaf.IsFlasque universe u @@ -76,6 +97,8 @@ lemma of_isZero (F : TopCat.Sheaf AddCommGrpCat.{u} X) (hF : IsZero F) : F.IsFla exact hV.epi (F.obj.map i) namespace BoundedBelowComplex +open _root_.TopCat +open _root_.TopCat.Sheaf.IsFlasque variable (K : CochainComplex (TopCat.Sheaf AddCommGrpCat.{u} X) ℤ) @@ -127,7 +150,7 @@ lemma cycles_isFlasque_add_nat (N : ℤ) [K.IsStrictlyGE N] have htarget : IsZero S.X₃ := IsZero.of_epi S.g hsource have hzero : IsZero (K.cycles N) := by simpa only [S, cyclesShortComplex, sub_add_cancel] using htarget - simpa using of_isZero (K.cycles N) hzero + simpa using _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs.TopCat.IsFlasque.of_isZero (K.cycles N) hzero | succ m ih => let i : ℤ := N + (m : ℤ) let S := cyclesShortComplex K i @@ -146,7 +169,7 @@ lemma cycles_isFlasque (N : ℤ) [K.IsStrictlyGE N] (hK : K.Acyclic) (hflasque : ∀ i, (K.X i).IsFlasque) (i : ℤ) : (K.cycles i).IsFlasque := by by_cases hi : i < N - · exact of_isZero _ (IsZero.of_mono (K.iCycles i) (K.isZero_of_isStrictlyGE N i hi)) + · exact _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs.TopCat.IsFlasque.of_isZero _ (IsZero.of_mono (K.iCycles i) (K.isZero_of_isStrictlyGE N i hi)) · let m : ℕ := (i - N).toNat have hm : i = N + (m : ℤ) := by dsimp [m] @@ -158,10 +181,10 @@ lemma cycles_isFlasque (N : ℤ) [K.IsStrictlyGE N] /-- Global sections preserve exactness of an acyclic bounded-below complex of flasque sheaves. -/ theorem globalSectionsComplex_acyclic (N : ℤ) [K.IsStrictlyGE N] (hK : K.Acyclic) (hflasque : ∀ i, (K.X i).IsFlasque) : - (globalSectionsComplex K).Acyclic := by + (_root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsComplex K).Acyclic := by intro i - let F := globalSectionsFunctor X - let L := globalSectionsComplex K + let F := _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsFunctor X + let L := _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsComplex K let A : ShortComplex (TopCat.Sheaf AddCommGrpCat.{u} X) := ShortComplex.mk (K.iCycles i) (K.d i (i + 1)) (K.iCycles_d i (i + 1)) have hA : A.Exact ∧ Mono A.f := by @@ -216,4 +239,10 @@ theorem globalSectionsComplex_acyclic (N : ℤ) [K.IsStrictlyGE N] end BoundedBelowComplex -end TopCat.Sheaf.IsFlasque +end IsFlasque +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueCokernel.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueCokernel.lean index fc976a7fd0..1016d0ab0c 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueCokernel.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueCokernel.lean @@ -1,11 +1,18 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueBoundedBelow -public import Mathlib.CategoryTheory.Abelian.Exact +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueBoundedBelow +import Mathlib.CategoryTheory.Abelian.Exact + +namespace OAI.AlgebraicTopology.Sheaf.FlasqueCokernel + +open _root_.TopCat +open _root_.TopCat.Sheaf +open _root_.TopCat.Sheaf.IsFlasque /-! # Cokernel preservation for a map with flasque source and kernel @@ -17,13 +24,18 @@ forgetful functor. This is a local hypothesis on one map, not a fabricated exactness instance for the whole forgetful functor. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Opposite TopologicalSpace +open _root_.CategoryTheory Limits Opposite _root_.TopologicalSpace universe u -namespace TopCat.Sheaf.IsFlasque +section +namespace TopCat +open _root_.TopCat +namespace IsFlasque +open _root_.TopCat +open _root_.TopCat.Sheaf.IsFlasque variable {X : TopCat.{u}} @@ -115,4 +127,10 @@ lemma forget_preservesCokernel [A.IsFlasque] [(kernel f).IsFlasque] : exact preservesColimit_of_preserves_colimit_cocone (cokernelIsCokernel f) ((isColimitMapCoconeCoforkEquiv' F (cokernel.condition f)).symm he.gIsCokernel) -end TopCat.Sheaf.IsFlasque +end IsFlasque +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.FlasqueCokernel diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueExtendNat.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueExtendNat.lean index aa3af2bffe..d7ddac50b7 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueExtendNat.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueExtendNat.lean @@ -12,14 +12,20 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueQuasiIso -public import HodgeConjecture.Lemmas.Algebra.Homology.MapExtendNaturality +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueQuasiIso +import HodgeConjecture.Lemmas.Algebra.Homology.MapExtendNaturality import HodgeConjecture.Mathlib.Algebra.Homology.Notation +namespace OAI.AlgebraicTopology.Sheaf.FlasqueExtendNat + +open _root_.TopCat +open _root_.TopCat.Sheaf + /-! # Global sections of quasi-isomorphisms between flasque complexes indexed by `ℕ` @@ -27,11 +33,13 @@ A quasi-isomorphism of nonnegatively indexed termwise-flasque complexes of sheav quasi-isomorphism after taking global sections. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat /-- Extension by zero of a natural-number-indexed termwise-flasque complex remains termwise flasque. -/ @@ -45,9 +53,9 @@ theorem extendNat_term_isFlasque let hP : TopCat.Presheaf.IsFlasque (K.X m).obj := hK m change TopCat.Presheaf.IsFlasque ((K.extend ComplexShape.embeddingUpNat).X (m : ℤ)).obj - exact @TopCat.Presheaf.IsFlasque.of_iso _ _ _ + exact @_root_.OAI.AlgebraicTopology.Sheaf.FlasqueQuasiIso.TopCat.Presheaf.IsFlasque.of_iso _ _ _ ((TopCat.Sheaf.forget AddCommGrpCat Y).mapIso e) hP - · apply TopCat.Sheaf.IsFlasque.of_isZero + · apply _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs.TopCat.IsFlasque.of_isZero exact K.isZero_extend_X ComplexShape.embeddingUpNat q (fun i hi ↦ hq ⟨i, hi⟩) @@ -59,25 +67,25 @@ theorem globalSectionsNat_map_quasiIso (f : K ⟶ L) [QuasiIso f] (hK : ∀ m, (K.X m).IsFlasque) (hL : ∀ m, (L.X m).IsFlasque) : QuasiIso - (((TopCat.Sheaf.IsFlasque.BoundedBelowComplex.globalSectionsFunctor Y + (((_root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsFunctor Y ).mapHomologicalComplex (ComplexShape.up ℕ)).map f) := by - let Γ := TopCat.Sheaf.IsFlasque.BoundedBelowComplex.globalSectionsFunctor Y + let Γ := _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsFunctor Y let KInt : CochainComplex (TopCat.Sheaf AddCommGrpCat Y) ℤ := K.extend ComplexShape.embeddingUpNat let LInt : CochainComplex (TopCat.Sheaf AddCommGrpCat Y) ℤ := L.extend ComplexShape.embeddingUpNat let fInt : KInt ⟶ LInt := HomologicalComplex.extendMap f ComplexShape.embeddingUpNat - let eK := HomologicalComplex.mapExtendCanonicalIso Γ K ComplexShape.embeddingUpNat - let eL := HomologicalComplex.mapExtendCanonicalIso Γ L ComplexShape.embeddingUpNat + let eK := _root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso Γ K ComplexShape.embeddingUpNat + let eL := _root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso Γ L ComplexShape.embeddingUpNat let : QuasiIso ((Γ.mapHomologicalComplex ℤᵘᵖ).map fInt) := - TopCat.Sheaf.IsFlasque.BoundedBelowComplex.globalSectionsComplex_map_quasiIso + _root_.OAI.AlgebraicTopology.Sheaf.FlasqueQuasiIso.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsComplex_map_quasiIso fInt 0 0 (extendNat_term_isFlasque K hK) (extendNat_term_isFlasque L hL) have h : HomologicalComplex.extendMap ((Γ.mapHomologicalComplex (ComplexShape.up ℕ)).map f) ComplexShape.embeddingUpNat ≫ eL.inv = eK.inv ≫ (Γ.mapHomologicalComplex ℤᵘᵖ).map fInt := - HomologicalComplex.mapExtendCanonicalIso_inv_naturality Γ f ComplexShape.embeddingUpNat + _root_.OAI.Algebra.Homology.MapExtendNaturality.HomologicalComplex.mapExtendCanonicalIso_inv_naturality Γ f ComplexShape.embeddingUpNat have hcomp : QuasiIso (HomologicalComplex.extendMap ((Γ.mapHomologicalComplex (ComplexShape.up ℕ)).map f) @@ -92,6 +100,9 @@ theorem globalSectionsNat_map_quasiIso ((Γ.mapHomologicalComplex (ComplexShape.up ℕ)).map f) ComplexShape.embeddingUpNat).mp hext -end TopCat.Sheaf +end TopCat +end end + +end OAI.AlgebraicTopology.Sheaf.FlasqueExtendNat diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueLowerVanishing.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueLowerVanishing.lean index 353f80fac3..d29460584e 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueLowerVanishing.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueLowerVanishing.lean @@ -1,10 +1,18 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueBoundedBelow +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueBoundedBelow + +namespace OAI.AlgebraicTopology.Sheaf.FlasqueLowerVanishing + +open _root_.TopCat +open _root_.TopCat.Sheaf +open _root_.TopCat.Sheaf.IsFlasque + /-! # Global lower-degree vanishing for flasque coefficient complexes @@ -16,13 +24,21 @@ The proof inductively establishes flasqueness of the cycle sheaves in that range the short exact cycles sequence. This is the globalization step for supported semipurity. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Opposite TopologicalSpace HomologicalComplex +open _root_.CategoryTheory Limits Opposite _root_.TopologicalSpace _root_.HomologicalComplex universe u -namespace TopCat.Sheaf.IsFlasque.BoundedBelowComplex +section +namespace TopCat +open _root_.TopCat +namespace IsFlasque +open _root_.TopCat +open _root_.TopCat.Sheaf.IsFlasque +namespace BoundedBelowComplex +open _root_.TopCat +open _root_.TopCat.Sheaf.IsFlasque variable {X : TopCat.{u}} (K : CochainComplex (TopCat.Sheaf AddCommGrpCat.{u} X) ℤ) @@ -33,24 +49,24 @@ lemma cycles_isFlasque_add_nat_of_exact_le (N M : ℤ) [K.IsStrictlyGE N] (K.cycles (N + (m : ℤ))).IsFlasque := by induction m with | zero => - let S := cyclesShortComplex K (N - 1) + let S := _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs.TopCat.IsFlasque.BoundedBelowComplex.cyclesShortComplex K (N - 1) have hS : S.ShortExact := by - apply cyclesShortComplex_shortExact + apply _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs.TopCat.IsFlasque.BoundedBelowComplex.cyclesShortComplex_shortExact simpa only [sub_add_cancel] using hK N (by simpa using hm) have hsource : IsZero S.X₂ := K.isZero_of_isStrictlyGE N (N - 1) (by omega) let : Epi S.g := hS.epi_g have hzero : IsZero (K.cycles N) := by - simpa only [S, cyclesShortComplex, sub_add_cancel] using IsZero.of_epi S.g hsource - simpa using of_isZero (K.cycles N) hzero + simpa only [S, _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs.TopCat.IsFlasque.BoundedBelowComplex.cyclesShortComplex, sub_add_cancel] using IsZero.of_epi S.g hsource + simpa using _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs.TopCat.IsFlasque.of_isZero (K.cycles N) hzero | succ m ih => let i : ℤ := N + (m : ℤ) - let S := cyclesShortComplex K i + let S := _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs.TopCat.IsFlasque.BoundedBelowComplex.cyclesShortComplex K i have hS : S.ShortExact := - cyclesShortComplex_shortExact K i (hK (i + 1) (by dsimp [i]; omega)) + _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs.TopCat.IsFlasque.BoundedBelowComplex.cyclesShortComplex_shortExact K i (hK (i + 1) (by dsimp [i]; omega)) let : S.X₁.IsFlasque := ih (by omega) let : S.X₂.IsFlasque := hflasque i have htarget : S.X₃.IsFlasque := of_shortExact_of_isFlasque₁₂ hS - simpa only [Nat.cast_succ, i, S, cyclesShortComplex, add_assoc] using htarget + simpa only [Nat.cast_succ, i, S, _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs.TopCat.IsFlasque.BoundedBelowComplex.cyclesShortComplex, add_assoc] using htarget /-- All cycle sheaves through the specified exactness bound are flasque, including those below the strict starting degree, which are zero. -/ @@ -58,7 +74,7 @@ lemma cycles_isFlasque_of_exact_le (N M : ℤ) [K.IsStrictlyGE N] (hK : ∀ i, i ≤ M → K.ExactAt i) (hflasque : ∀ i, (K.X i).IsFlasque) (i : ℤ) (hi : i ≤ M) : (K.cycles i).IsFlasque := by by_cases hiN : i < N - · exact of_isZero _ (IsZero.of_mono (K.iCycles i) (K.isZero_of_isStrictlyGE N i hiN)) + · exact _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs.TopCat.IsFlasque.of_isZero _ (IsZero.of_mono (K.iCycles i) (K.isZero_of_isStrictlyGE N i hiN)) · let m := (i - N).toNat have hm : i = N + (m : ℤ) := by dsimp [m] @@ -66,4 +82,11 @@ lemma cycles_isFlasque_of_exact_le (N M : ℤ) [K.IsStrictlyGE N] rw [hm] exact cycles_isFlasque_add_nat_of_exact_le K N M hK hflasque m (by omega) -end TopCat.Sheaf.IsFlasque.BoundedBelowComplex +end BoundedBelowComplex +end IsFlasque +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.FlasqueLowerVanishing diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueLowestCohomology.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueLowestCohomology.lean index c78bb643c6..3e401386ea 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueLowestCohomology.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueLowestCohomology.lean @@ -1,10 +1,16 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.FlasqueLowestCohomology +import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.FlasqueLowestCohomology + +namespace OAI.AlgebraicTopology.Sheaf.FlasqueLowestIsoHom + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # The lowest-degree cohomology comparison for flasque complexes @@ -13,20 +19,27 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.FlasqueLowestCohomology`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite HomologicalComplex +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite _root_.HomologicalComplex universe u -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable (X : TopCat.{u}) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) @[simp] theorem lowestSectionCohomologyIso_hom (N n : ℤ) [K.IsStrictlyGE N] (hK : ∀ j, j < n → IsZero (K.homology j)) (hflasque : ∀ j, (K.X j).IsFlasque) (U : Opens X) : - (lowestSectionCohomologyIso X K N n hK hflasque U).hom = - sectionCohomologyToSheafSection X K n U := rfl + (_root_.OAI.AlgebraicTopology.Sheaf.FlasqueLowestCohomology.TopCat.lowestSectionCohomologyIso X K N n hK hflasque U).hom = + _root_.OAI.AlgebraicTopology.Sheaf.CohomologySection.TopCat.sectionCohomologyToSheafSection X K n U := rfl + +end TopCat +end + +end -end TopCat.Sheaf +end OAI.AlgebraicTopology.Sheaf.FlasqueLowestIsoHom diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueQuasiIso.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueQuasiIso.lean index 509fcd24b6..f578663d41 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueQuasiIso.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/FlasqueQuasiIso.lean @@ -12,16 +12,25 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueBoundedBelow -public import Mathlib.Algebra.Homology.HomotopyCategory.MappingCone +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueBoundedBelow +import Mathlib.Algebra.Homology.HomotopyCategory.MappingCone import Mathlib.Algebra.Homology.HomotopyCategory.Plus +namespace OAI.AlgebraicTopology.Sheaf.FlasqueQuasiIso + +open _root_.TopCat +open _root_.TopCat.Presheaf +open _root_.TopCat.Presheaf.IsFlasque +open _root_.TopCat.Sheaf +open _root_.TopCat.Sheaf.IsFlasque + /-! # Global sections and quasi-isomorphisms of flasque complexes @@ -30,14 +39,22 @@ quasi-isomorphism between bounded-below complexes of flasque sheaves remains a q after taking global sections. The proof applies the exact-complex theorem to the mapping cone. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Opposite TopologicalSpace -open CategoryTheory.Pretriangulated +open _root_.CategoryTheory Limits Opposite _root_.TopologicalSpace +open _root_.CategoryTheory.Pretriangulated universe u -namespace TopCat.Presheaf.IsFlasque +namespace TopCat +open _root_.TopCat +namespace Presheaf +open _root_.TopCat +open _root_.TopCat.Presheaf +namespace IsFlasque +open _root_.TopCat +open _root_.TopCat.Presheaf +open _root_.TopCat.Presheaf.IsFlasque variable {X : TopCat.{u}} @@ -53,7 +70,6 @@ lemma of_iso {F G : TopCat.Presheaf AddCommGrpCat.{u} X} (e : F ≅ G) [G.IsFlas rw [hmap] infer_instance -set_option linter.style.haveILetI false in /-- A binary biproduct of flasque presheaves is flasque. -/ lemma biprod (F G : TopCat.Presheaf AddCommGrpCat.{u} X) [F.IsFlasque] [G.IsFlasque] : (F ⊞ G).IsFlasque where @@ -63,10 +79,10 @@ lemma biprod (F G : TopCat.Presheaf AddCommGrpCat.{u} X) [F.IsFlasque] [G.IsFlas let : evalU.PreservesZeroMorphisms := evalU.preservesZeroMorphisms_of_additive let : evalV.PreservesZeroMorphisms := evalV.preservesZeroMorphisms_of_additive let : PreservesLimit (pair F G) evalU := by - letI : PreservesLimitsOfShape (Discrete WalkingPair) evalU := by infer_instance + let : PreservesLimitsOfShape (Discrete WalkingPair) evalU := by infer_instance exact PreservesLimitsOfShape.preservesLimit let : PreservesLimit (pair F G) evalV := by - letI : PreservesLimitsOfShape (Discrete WalkingPair) evalV := by infer_instance + let : PreservesLimitsOfShape (Discrete WalkingPair) evalV := by infer_instance exact PreservesLimitsOfShape.preservesLimit let : PreservesBinaryBiproduct F G evalU := preservesBinaryBiproduct_of_preservesBinaryProduct _ @@ -110,34 +126,41 @@ lemma biprod (F G : TopCat.Presheaf AddCommGrpCat.{u} X) [F.IsFlasque] [G.IsFlas rw [hmap] infer_instance -end TopCat.Presheaf.IsFlasque +end IsFlasque +end Presheaf +end TopCat -namespace TopCat.Sheaf.IsFlasque +section +namespace TopCat +open _root_.TopCat +namespace IsFlasque +open _root_.TopCat +open _root_.TopCat.Sheaf.IsFlasque variable {X : TopCat.{u}} -set_option linter.style.haveILetI false in /-- Flasqueness of sheaves is invariant under isomorphism. -/ lemma of_iso {F G : TopCat.Sheaf AddCommGrpCat.{u} X} (e : F ≅ G) [hG : G.IsFlasque] : F.IsFlasque := by - letI : TopCat.Presheaf.IsFlasque G.obj := hG - exact TopCat.Presheaf.IsFlasque.of_iso (G := G.obj) + let : TopCat.Presheaf.IsFlasque G.obj := hG + exact _root_.OAI.AlgebraicTopology.Sheaf.FlasqueQuasiIso.TopCat.Presheaf.IsFlasque.of_iso (G := G.obj) ((TopCat.Sheaf.forget AddCommGrpCat.{u} X).mapIso e) -set_option linter.style.haveILetI false in /-- A binary biproduct of flasque sheaves is flasque. -/ lemma biprod (F G : TopCat.Sheaf AddCommGrpCat.{u} X) [hF : F.IsFlasque] [hG : G.IsFlasque] : (F ⊞ G).IsFlasque := by - letI : TopCat.Presheaf.IsFlasque (F.obj ⊞ G.obj) := - TopCat.Presheaf.IsFlasque.biprod F.obj G.obj + let : TopCat.Presheaf.IsFlasque (F.obj ⊞ G.obj) := + _root_.OAI.AlgebraicTopology.Sheaf.FlasqueQuasiIso.TopCat.Presheaf.IsFlasque.biprod F.obj G.obj let forget := TopCat.Sheaf.forget AddCommGrpCat.{u} X let : PreservesBinaryBiproduct F G forget := preservesBinaryBiproduct_of_preservesBinaryProduct forget - exact TopCat.Presheaf.IsFlasque.of_iso (G := F.obj ⊞ G.obj) (forget.mapBiprod F G) + exact _root_.OAI.AlgebraicTopology.Sheaf.FlasqueQuasiIso.TopCat.Presheaf.IsFlasque.of_iso (G := F.obj ⊞ G.obj) (forget.mapBiprod F G) namespace BoundedBelowComplex +open _root_.TopCat +open _root_.TopCat.Sheaf.IsFlasque /-- The mapping cone of a quasi-isomorphism is acyclic. -/ lemma mappingCone_acyclic_of_quasiIso @@ -182,8 +205,8 @@ variable {K L : CochainComplex (TopCat.Sheaf AddCommGrpCat.{u} X) ℤ} lemma mappingCone_term_isFlasque (f : K ⟶ L) (hK : ∀ i, (K.X i).IsFlasque) (hL : ∀ i, (L.X i).IsFlasque) (i : ℤ) : ((CochainComplex.mappingCone f).X i).IsFlasque := by - let : (K.X (i + 1) ⊞ L.X i).IsFlasque := biprod _ _ - exact of_iso (HomologicalComplex.homotopyCofiber.XIsoBiprod f i (i + 1) rfl) + let : (K.X (i + 1) ⊞ L.X i).IsFlasque := _root_.OAI.AlgebraicTopology.Sheaf.FlasqueQuasiIso.TopCat.IsFlasque.biprod _ _ + exact _root_.OAI.AlgebraicTopology.Sheaf.FlasqueQuasiIso.TopCat.IsFlasque.of_iso (HomologicalComplex.homotopyCofiber.XIsoBiprod f i (i + 1) rfl) /-- A quasi-isomorphism between bounded-below termwise-flasque complexes remains a quasi-isomorphism after taking global sections. -/ @@ -191,7 +214,7 @@ theorem globalSectionsComplex_map_quasiIso (f : K ⟶ L) [QuasiIso f] (nK nL : ℤ) [K.IsStrictlyGE nK] [L.IsStrictlyGE nL] (hK : ∀ i, (K.X i).IsFlasque) (hL : ∀ i, (L.X i).IsFlasque) : QuasiIso - (((globalSectionsFunctor X).mapHomologicalComplex ℤᵘᵖ).map f) := by + (((_root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsFunctor X).mapHomologicalComplex ℤᵘᵖ).map f) := by let M := CochainComplex.mappingCone f let n := min nK nL - 1 let : M.IsStrictlyGE n := by @@ -205,9 +228,9 @@ theorem globalSectionsComplex_map_quasiIso (f : K ⟶ L) [QuasiIso f] intro i dsimp [M] exact mappingCone_term_isFlasque f hK hL i - have hglobal : (globalSectionsComplex M).Acyclic := - globalSectionsComplex_acyclic M n hM hMflasque - let F := globalSectionsFunctor X + have hglobal : (_root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsComplex M).Acyclic := + _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedIs.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsComplex_acyclic M n hM hMflasque + let F := _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsFunctor X have hcone : (CochainComplex.mappingCone ((F.mapHomologicalComplex ℤᵘᵖ).map f)).Acyclic := @@ -215,6 +238,10 @@ theorem globalSectionsComplex_map_quasiIso (f : K ⟶ L) [QuasiIso f] exact quasiIso_of_mappingCone_acyclic _ hcone end BoundedBelowComplex -end TopCat.Sheaf.IsFlasque +end IsFlasque +end TopCat +end end + +end OAI.AlgebraicTopology.Sheaf.FlasqueQuasiIso diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/HomologySection.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/HomologySection.lean index a7a2824174..92c4f1dfbf 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/HomologySection.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/HomologySection.lean @@ -9,10 +9,13 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.ChainStalk +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.ChainStalk + +namespace OAI.AlgebraicTopology.Sheaf.HomologySection /-! # Sections of the homology sheaf from relative homology @@ -23,13 +26,14 @@ the homology sheaf. The germ comparison records the restriction to local relativ homology, which is essential for preserving normalized fundamental classes. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace HomologicalComplex Opposite +open _root_.CategoryTheory Limits _root_.TopologicalSpace _root_.HomologicalComplex Opposite universe u -namespace AlgebraicTopology.Singular +section +namespace Singular variable (R : Type u) [CommRing R] (X : TopCat.{u}) @@ -94,4 +98,9 @@ instance additivePresheafStalkFunctor_preservesFiniteColimits (x : X) : PreservesFiniteColimits (additivePresheafStalkFunctor X x) := inferInstanceAs (PreservesFiniteColimits (TopCat.Presheaf.stalkFunctor AddCommGrpCat.{u} x)) -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.Sheaf.HomologySection diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/InjectiveFlasque.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/InjectiveFlasque.lean index 25c7ae93ed..549d7046b0 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/InjectiveFlasque.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/InjectiveFlasque.lean @@ -12,11 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Category.Grp.Adjunctions -public import Mathlib.Topology.Sheaves.Flasque +import Mathlib.Algebra.Category.Grp.Adjunctions +import Mathlib.Topology.Sheaves.Flasque + +namespace OAI.AlgebraicTopology.Sheaf.InjectiveFlasque + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Injective sheaves are flasque @@ -27,13 +33,15 @@ sets induces a monomorphism between these representing sheaves. The extension p injective sheaf therefore makes every restriction map surjective. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Opposite TopologicalSpace +open _root_.CategoryTheory Limits Opposite _root_.TopologicalSpace universe u -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable (X : TopCat.{u}) @@ -106,4 +114,9 @@ instance injective_isFlasque rw [Injective.comp_factorThru] _ = s := (freeAbelianYonedaSheafHomEquiv X V.unop F).apply_symm_apply s -end TopCat.Sheaf +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.InjectiveFlasque diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenInjectiveResolution.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenInjectiveResolution.lean index fd6838deab..ad461e86fc 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenInjectiveResolution.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenInjectiveResolution.lean @@ -1,14 +1,21 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.OpenInjectiveResolution -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueExtendNat +import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.OpenInjectiveResolution +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueExtendNat import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicTopology.Sheaf.OpenInjectiveTo + +open _root_.CochainComplex +open _root_.TopCat +open _root_.TopCat.Sheaf + /-! # Comparing an ambient resolution with a resolution on an open subspace @@ -18,11 +25,13 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable (X : TopCat.{0}) (U : Opens X) (A : AddCommGrpCat.{0}) @@ -32,7 +41,7 @@ injective resolution `I` of the constant sheaf `A_X`, this is the nonnegative co def restrictedAmbientConstantResolution : CochainComplex (Sheaf AddCommGrpCat.{0} (TopCat.of U)) ℕ := ((U.isOpenEmbedding.sheafPullback AddCommGrpCat).mapHomologicalComplex (.up ℕ)).obj - (ambientConstantInjectiveResolution X A).cocomplex + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).cocomplex /-- Let `U` be open in a topological space `X`, and let `A` be an abelian group. For the chosen injective resolution `I` of the constant sheaf `A_X`, this augmentation `A_U[0] → I|_U` @@ -41,16 +50,16 @@ def restrictedAmbientConstantAugmentation : (CochainComplex.single₀ (Sheaf AddCommGrpCat.{0} (TopCat.of U))).obj 𝓒[↧U; A] ⟶ restrictedAmbientConstantResolution X U A := - (CochainComplex.single₀ _).map (constantOpenSheafRestrictionIso X U A).hom ≫ + (CochainComplex.single₀ _).map (_root_.OAI.AlgebraicTopology.Sheaf.OpenRestriction.TopCat.constantOpenSheafRestrictionIso X U A).hom ≫ (HomologicalComplex.singleMapHomologicalComplex (U.isOpenEmbedding.sheafPullback AddCommGrpCat) (.up ℕ) 0).inv.app _ ≫ ((U.isOpenEmbedding.sheafPullback AddCommGrpCat).mapHomologicalComplex (.up ℕ)).map - (ambientConstantInjectiveResolution X A).ι + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).ι set_option backward.isDefEq.respectTransparency false in instance restrictedAmbientConstantAugmentation_mono : Mono (restrictedAmbientConstantAugmentation X U A) := by - let : Mono (ambientConstantInjectiveResolution X A).ι := + let : Mono (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).ι := HomologicalComplex.mono_of_mono_f _ (fun _ => inferInstance) dsimp only [restrictedAmbientConstantAugmentation] infer_instance @@ -58,11 +67,11 @@ instance restrictedAmbientConstantAugmentation_mono : set_option backward.isDefEq.respectTransparency false in instance restrictedAmbientConstantAugmentation_quasiIso : QuasiIso (restrictedAmbientConstantAugmentation X U A) := by - let : QuasiIso (ambientConstantInjectiveResolution X A).ι := - (ambientConstantInjectiveResolution X A).quasiIso + let : QuasiIso (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).ι := + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).quasiIso have : QuasiIso (((U.isOpenEmbedding.sheafPullback AddCommGrpCat).mapHomologicalComplex (.up ℕ)).map - (ambientConstantInjectiveResolution X A).ι) := + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).ι) := HomologicalComplex.quasiIso_map_of_preservesHomology _ _ dsimp only [restrictedAmbientConstantAugmentation] infer_instance @@ -73,39 +82,39 @@ extends the identity on `A_U`: composing with the restricted augmentation gives of `J`. -/ def restrictedAmbientToOpenResolution : restrictedAmbientConstantResolution X U A ⟶ - (ambientConstantInjectiveResolution (TopCat.of U) A).cocomplex := - CochainComplex.liftToInjectiveNat (restrictedAmbientConstantAugmentation X U A) - (ambientConstantInjectiveResolution (TopCat.of U) A).ι - (fun n => (ambientConstantInjectiveResolution (TopCat.of U) A).injective n) + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution (TopCat.of U) A).cocomplex := + _root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.liftToInjectiveNat (restrictedAmbientConstantAugmentation X U A) + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution (TopCat.of U) A).ι + (fun n => (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution (TopCat.of U) A).injective n) instance restrictedAmbientConstantResolution_isFlasque (n : ℕ) : ((restrictedAmbientConstantResolution X U A).X n).IsFlasque := by change ((U.isOpenEmbedding.sheafPullback AddCommGrpCat).obj - ((ambientConstantInjectiveResolution X A).cocomplex.X n)).IsFlasque - let : IsFlasque ((ambientConstantInjectiveResolution X A).cocomplex.X n) := - @injective_isFlasque _ _ ((ambientConstantInjectiveResolution X A).injective n) - exact openSheafRestriction_isFlasque X U _ + ((_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).cocomplex.X n)).IsFlasque + let : IsFlasque ((_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).cocomplex.X n) := + @_root_.OAI.AlgebraicTopology.Sheaf.InjectiveFlasque.TopCat.injective_isFlasque _ _ ((_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).injective n) + exact _root_.OAI.AlgebraicTopology.Sheaf.OpenRestriction.TopCat.openSheafRestriction_isFlasque X U _ /-- Let `U` be open in a topological space `X`, with inclusion `j`, and let `A` be an abelian group. For the chosen injective resolution `I` of `A_X`, this cochain map `I → j_*(I|_U)` restricts sections to `U`. In degree `q`, on an open `V`, it is `I^q(V) → I^q(V ∩ U)`. -/ def ambientInjectiveRestriction : - (ambientConstantInjectiveResolution X A).cocomplex ⟶ + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).cocomplex ⟶ ((pushforward AddCommGrpCat U.inclusion').mapHomologicalComplex (.up ℕ)).obj (restrictedAmbientConstantResolution X U A) where - f n := (toOpenRestrictionPushforward X U).app - ((ambientConstantInjectiveResolution X A).cocomplex.X n) - comm' i j _h := ((toOpenRestrictionPushforward X U).naturality - ((ambientConstantInjectiveResolution X A).cocomplex.d i j)).symm + f n := (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app + ((_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).cocomplex.X n) + comm' i j _h := ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).naturality + ((_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).cocomplex.d i j)).symm /-- Let `U` be open in a topological space `X`, with inclusion `j`, and let `A` be an abelian group. For the chosen injective resolutions `I,J` of the constant sheaves `A_X,A_U`, this map `I → j_*J` composes restriction with the direct image of the comparison `I|_U → J` extending the identity on `A_U`. -/ def ambientToOpenInjectiveResolution : - (ambientConstantInjectiveResolution X A).cocomplex ⟶ + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).cocomplex ⟶ ((pushforward AddCommGrpCat U.inclusion').mapHomologicalComplex (.up ℕ)).obj - (ambientConstantInjectiveResolution (TopCat.of U) A).cocomplex := + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution (TopCat.of U) A).cocomplex := ambientInjectiveRestriction X U A ≫ ((pushforward AddCommGrpCat U.inclusion').mapHomologicalComplex (.up ℕ)).map (restrictedAmbientToOpenResolution X U A) @@ -115,30 +124,32 @@ For the chosen injective resolutions `I,J` of the constant sheaves `A_X,A_U`, th `Γ(U,I|_U) → Γ(U,J)` takes sections of the comparison extending the identity on `A_U`. Both sides are expressed as global sections of direct images under `j`. -/ def globalRestrictedAmbientToOpenResolution : - ((IsFlasque.BoundedBelowComplex.globalSectionsFunctor X).mapHomologicalComplex + ((_root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsFunctor X).mapHomologicalComplex (.up ℕ)).obj (((pushforward AddCommGrpCat U.inclusion').mapHomologicalComplex (.up ℕ)).obj (restrictedAmbientConstantResolution X U A)) ⟶ - ((IsFlasque.BoundedBelowComplex.globalSectionsFunctor X).mapHomologicalComplex + ((_root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsFunctor X).mapHomologicalComplex (.up ℕ)).obj (((pushforward AddCommGrpCat U.inclusion').mapHomologicalComplex (.up ℕ)).obj - (ambientConstantInjectiveResolution (TopCat.of U) A).cocomplex) := - ((IsFlasque.BoundedBelowComplex.globalSectionsFunctor X).mapHomologicalComplex + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution (TopCat.of U) A).cocomplex) := + ((_root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsFunctor X).mapHomologicalComplex (.up ℕ)).map (((pushforward AddCommGrpCat U.inclusion').mapHomologicalComplex (.up ℕ)).map (restrictedAmbientToOpenResolution X U A)) -end TopCat.Sheaf +end TopCat +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite namespace CochainComplex +open _root_.CochainComplex -variable {C : Type*} [Category* C] [Abelian C] [EnoughInjectives C] +variable {C : Type*} [Category* C] [Abelian C] variable {A K I : CochainComplex C ℕ} (a : A ⟶ K) [Mono a] [QuasiIso a] (r : A ⟶ I) (hI : ∀ n, Injective (I.X n)) @@ -146,40 +157,42 @@ variable {A K I : CochainComplex C ℕ} (a : A ⟶ K) [Mono a] [QuasiIso a] set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in @[reassoc (attr := simp)] -lemma comp_liftToInjectiveNat : a ≫ liftToInjectiveNat a r hI = r := by - let := mono_extendMap_nat a +lemma comp_liftToInjectiveNat : a ≫ _root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.liftToInjectiveNat a r hI = r := by + let := _root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.mono_extendMap_nat a apply (ComplexShape.embeddingUpNat.extendFunctor C).map_injective rw [Functor.map_comp] - dsimp only [liftToInjectiveNat] + dsimp only [_root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.liftToInjectiveNat] rw [Functor.map_preimage] - exact comp_liftToInjective + exact _root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.comp_liftToInjective (HomologicalComplex.extendMap a ComplexShape.embeddingUpNat) (HomologicalComplex.extendMap r ComplexShape.embeddingUpNat) - (injective_extend_nat I hI) + (_root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.injective_extend_nat I hI) -lemma liftToInjectiveNat_quasiIso [QuasiIso r] : QuasiIso (liftToInjectiveNat a r hI) := by - have : QuasiIso (a ≫ liftToInjectiveNat a r hI) := by +lemma liftToInjectiveNat_quasiIso [QuasiIso r] : QuasiIso (_root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.liftToInjectiveNat a r hI) := by + have : QuasiIso (a ≫ _root_.OAI.Algebra.Homology.LiftToInjective.CochainComplex.liftToInjectiveNat a r hI) := by rw [comp_liftToInjectiveNat] infer_instance exact quasiIso_of_comp_left a _ end CochainComplex -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable (X : TopCat.{0}) (U : Opens X) (A : AddCommGrpCat.{0}) @[reassoc (attr := simp)] lemma restrictedAmbientAugmentation_comp_comparison : restrictedAmbientConstantAugmentation X U A ≫ - restrictedAmbientToOpenResolution X U A = (ambientConstantInjectiveResolution (TopCat.of U) A).ι := - CochainComplex.comp_liftToInjectiveNat _ _ _ + restrictedAmbientToOpenResolution X U A = (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution (TopCat.of U) A).ι := + _root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveTo.CochainComplex.comp_liftToInjectiveNat _ _ _ lemma restrictedAmbientToOpenResolution_quasiIso : QuasiIso (restrictedAmbientToOpenResolution X U A) := by - let : QuasiIso (ambientConstantInjectiveResolution (TopCat.of U) A).ι := - (ambientConstantInjectiveResolution (TopCat.of U) A).quasiIso - exact CochainComplex.liftToInjectiveNat_quasiIso _ _ _ + let : QuasiIso (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution (TopCat.of U) A).ι := + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution (TopCat.of U) A).quasiIso + exact _root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveTo.CochainComplex.liftToInjectiveNat_quasiIso _ _ _ set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in @@ -187,41 +200,41 @@ set_option backward.isDefEq.respectTransparency false in the restriction map of constant sheaves. -/ @[reassoc] lemma ambientAugmentation_comp_openResolution : - (ambientConstantInjectiveResolution X A).ι ≫ ambientToOpenInjectiveResolution X U A = - (CochainComplex.single₀ _).map (constantRestriction U.inclusion' A) ≫ + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).ι ≫ ambientToOpenInjectiveResolution X U A = + (CochainComplex.single₀ _).map (_root_.OAI.AlgebraicTopology.Support.SheafCohomology.TopCat.Sheaf.constantRestriction U.inclusion' A) ≫ (HomologicalComplex.singleMapHomologicalComplex (pushforward AddCommGrpCat U.inclusion') (.up ℕ) 0).inv.app _ ≫ ((pushforward AddCommGrpCat U.inclusion').mapHomologicalComplex (.up ℕ)).map - (ambientConstantInjectiveResolution (TopCat.of U) A).ι := by + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution (TopCat.of U) A).ι := by apply HomologicalComplex.Hom.ext funext n cases n with | zero => - change (ambientConstantInjectiveResolution X A).ι.f 0 ≫ - ((toOpenRestrictionPushforward X U).app _ ≫ + change (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).ι.f 0 ≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app _ ≫ (pushforward AddCommGrpCat U.inclusion').map ((restrictedAmbientToOpenResolution X U A).f 0)) = - constantRestriction U.inclusion' A ≫ + _root_.OAI.AlgebraicTopology.Support.SheafCohomology.TopCat.Sheaf.constantRestriction U.inclusion' A ≫ (pushforward AddCommGrpCat U.inclusion').map - ((ambientConstantInjectiveResolution (TopCat.of U) A).ι.f 0) - have hnat := (toOpenRestrictionPushforward X U).naturality - ((ambientConstantInjectiveResolution X A).ι.f 0) + ((_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution (TopCat.of U) A).ι.f 0) + have hnat := (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).naturality + ((_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).ι.f 0) dsimp only [Functor.id_map] at hnat rw [← Category.assoc, hnat] - change ((toOpenRestrictionPushforward X U).app 𝓒[X; A] ≫ _) ≫ _ = _ - rw [← constantRestriction_pushforward_constantToOpen] - dsimp only [openRestrictionPushforward, Functor.comp_map] + change ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app 𝓒[X; A] ≫ _) ≫ _ = _ + rw [← _root_.OAI.AlgebraicTopology.Sheaf.OpenRestriction.TopCat.constantRestriction_pushforward_constantToOpen] + dsimp only [_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward, Functor.comp_map] simp only [Category.assoc] rw [← Functor.map_comp, ← Functor.map_comp] have h := HomologicalComplex.congr_hom (restrictedAmbientAugmentation_comp_comparison X U A) 0 - change (constantOpenSheafRestrictionIso X U A).hom ≫ + change (_root_.OAI.AlgebraicTopology.Sheaf.OpenRestriction.TopCat.constantOpenSheafRestrictionIso X U A).hom ≫ (U.isOpenEmbedding.sheafPullback AddCommGrpCat).map - ((ambientConstantInjectiveResolution X A).ι.f 0) ≫ + ((_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution X A).ι.f 0) ≫ (restrictedAmbientToOpenResolution X U A).f 0 = - (ambientConstantInjectiveResolution (TopCat.of U) A).ι.f 0 at h - dsimp only [constantOpenSheafRestrictionIso] at h - exact congrArg (fun f => constantRestriction U.inclusion' A ≫ + (_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution (TopCat.of U) A).ι.f 0 at h + dsimp only [_root_.OAI.AlgebraicTopology.Sheaf.OpenRestriction.TopCat.constantOpenSheafRestrictionIso] at h + exact congrArg (fun f => _root_.OAI.AlgebraicTopology.Support.SheafCohomology.TopCat.Sheaf.constantRestriction U.inclusion' A ≫ (pushforward AddCommGrpCat U.inclusion').map f) h | succ n => exact (HomologicalComplex.isZero_single_obj_X (.up ℕ) 0 _ (n + 1) (by omega)).eq_of_src _ _ @@ -232,12 +245,17 @@ subspace both resolutions are termwise flasque. -/ theorem globalRestrictedAmbientToOpenResolution_quasiIso : QuasiIso (globalRestrictedAmbientToOpenResolution X U A) := by change QuasiIso - (((IsFlasque.BoundedBelowComplex.globalSectionsFunctor (TopCat.of U)).mapHomologicalComplex + (((_root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsFunctor (TopCat.of U)).mapHomologicalComplex (.up ℕ)).map (restrictedAmbientToOpenResolution X U A)) let : QuasiIso (restrictedAmbientToOpenResolution X U A) := restrictedAmbientToOpenResolution_quasiIso X U A - apply TopCat.Sheaf.globalSectionsNat_map_quasiIso + apply _root_.OAI.AlgebraicTopology.Sheaf.FlasqueExtendNat.TopCat.globalSectionsNat_map_quasiIso · exact restrictedAmbientConstantResolution_isFlasque X U A - · exact fun n => @injective_isFlasque _ _ ((ambientConstantInjectiveResolution (TopCat.of U) A).injective n) + · exact fun n => @_root_.OAI.AlgebraicTopology.Sheaf.InjectiveFlasque.TopCat.injective_isFlasque _ _ ((_root_.OAI.AlgebraicTopology.Sheaf.OpenInjectiveResolution.TopCat.ambientConstantInjectiveResolution (TopCat.of U) A).injective n) + +end TopCat +end + +end -end TopCat.Sheaf +end OAI.AlgebraicTopology.Sheaf.OpenInjectiveTo diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenRestrictedVanishing.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenRestrictedVanishing.lean index 6757761f8e..3de7c75aed 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenRestrictedVanishing.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenRestrictedVanishing.lean @@ -1,14 +1,21 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.CohomologyStalkVanishing -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenRestriction -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueLowestCohomology +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.CohomologyStalkVanishing +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenRestriction +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueLowestCohomology + +namespace OAI.AlgebraicTopology.Sheaf.OpenRestrictedVanishing + +open _root_.TopCat +open _root_.TopCat.Sheaf + /-! # Local vanishing on an open subset and restricted section complexes @@ -19,13 +26,15 @@ flasque complex, lower local vanishing therefore implies lower cohomology vanishing of sections on that open. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable (X : TopCat.{u}) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) (U : Opens X) @@ -35,10 +44,10 @@ vanishing of the restricted complex. -/ theorem openRestriction_homology_isZero_of_cofinal_sections (n : ℤ) (hlocal : ∀ (x : X), x ∈ U → ∀ (V : Opens X), x ∈ V → ∃ W : Opens X, W ≤ V ∧ x ∈ W ∧ - IsZero ((((supportEvaluation X W).mapHomologicalComplex ℤᵘᵖ).obj K).homology n)) : + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W).mapHomologicalComplex ℤᵘᵖ).obj K).homology n)) : IsZero ((((U.isOpenEmbedding.sheafPullback AddCommGrpCat.{u}).mapHomologicalComplex ℤᵘᵖ).obj K).homology n) := by - apply cohomologySheaf_isZero_of_cofinal_sections + apply _root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkIs.TopCat.cohomologySheaf_isZero_of_cofinal_sections intro x V hxV let V' := U.isOpenEmbedding.functor.obj V have hxV' : x.1 ∈ V' := ⟨x, hxV, rfl⟩ @@ -54,7 +63,7 @@ theorem openRestriction_homology_isZero_of_cofinal_sections (n : ℤ) · intro y hy obtain ⟨v, hv, hvy⟩ := hWV' hy exact (Subtype.ext hvy : v = y) ▸ hv - · change IsZero ((((supportEvaluation X (U.isOpenEmbedding.functor.obj W')).mapHomologicalComplex + · change IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X (U.isOpenEmbedding.functor.obj W')).mapHomologicalComplex ℤᵘᵖ).obj K).homology n) rwa [he] @@ -66,20 +75,25 @@ theorem sectionCohomology_isZero_of_cofinal_lower_vanishing (N n : ℤ) [K.IsStr (hflasque : ∀ j, (K.X j).IsFlasque) (hlocal : ∀ j : ℤ, j ≤ n → ∀ (x : X), x ∈ U → ∀ (V : Opens X), x ∈ V → ∃ W : Opens X, W ≤ V ∧ x ∈ W ∧ - IsZero ((((supportEvaluation X W).mapHomologicalComplex ℤᵘᵖ).obj K).homology j)) : - IsZero ((((supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj K).homology n) := by + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W).mapHomologicalComplex ℤᵘᵖ).obj K).homology j)) : + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj K).homology n) := by let L := ((U.isOpenEmbedding.sheafPullback AddCommGrpCat.{u}).mapHomologicalComplex ℤᵘᵖ).obj K have hL (j : ℤ) (hj : j ≤ n) : IsZero (L.homology j) := openRestriction_homology_isZero_of_cofinal_sections X K U j (hlocal j hj) have hLF (j : ℤ) : (L.X j).IsFlasque := by let := hflasque j - exact openSheafRestriction_isFlasque X U (K.X j) - let e := lowestSectionCohomologyIso (TopCat.of U) L N n + exact _root_.OAI.AlgebraicTopology.Sheaf.OpenRestriction.TopCat.openSheafRestriction_isFlasque X U (K.X j) + let e := _root_.OAI.AlgebraicTopology.Sheaf.FlasqueLowestCohomology.TopCat.lowestSectionCohomologyIso (TopCat.of U) L N n (fun j hj => hL j hj.le) hLF ⊤ - have hzero := ((supportEvaluation (TopCat.of U) ⊤).map_isZero (hL n le_rfl)).of_iso e - change IsZero ((((supportEvaluation X (U.isOpenEmbedding.functor.obj ⊤)).mapHomologicalComplex + have hzero := ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation (TopCat.of U) ⊤).map_isZero (hL n le_rfl)).of_iso e + change IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X (U.isOpenEmbedding.functor.obj ⊤)).mapHomologicalComplex ℤᵘᵖ).obj K).homology n) at hzero rwa [Opens.isOpenEmbedding_obj_top] at hzero -end TopCat.Sheaf +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.OpenRestrictedVanishing diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenRestriction.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenRestriction.lean index d1b6cabf97..34fcd904f1 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenRestriction.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenRestriction.lean @@ -1,17 +1,23 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsLocalization -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SheafCohomology -public import Mathlib.CategoryTheory.Sites.GlobalSections +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsLocalization +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SheafCohomology +import Mathlib.CategoryTheory.Sites.GlobalSections import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicTopology.Sheaf.OpenRestriction + +open _root_.TopCat +open _root_.TopCat.Sheaf + /-! # Exact open restriction with its adjunction @@ -21,13 +27,15 @@ Its adjunction to open direct image is displayed with the restriction unit used to define sections with support. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable (X : TopCat.{u}) (U : Opens X) @@ -98,7 +106,7 @@ def openSheafRestrictionAdjunction : U.isOpenEmbedding.sheafPullback AddCommGrpCat.{u} ⊣ pushforward AddCommGrpCat.{u} U.inclusion' := Adjunction.mkOfUnitCounit - { unit := toOpenRestrictionPushforward X U + { unit := _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U counit := openSheafRestrictionCounit X U left_triangle := by ext F : 2 @@ -140,23 +148,23 @@ set_option backward.isDefEq.respectTransparency false in comparison, is the support-defining restriction unit. -/ @[reassoc] lemma constantRestriction_pushforward_constantToOpen (A : AddCommGrpCat.{u}) : - constantRestriction U.inclusion' A ≫ + _root_.OAI.AlgebraicTopology.Support.SheafCohomology.TopCat.Sheaf.constantRestriction U.inclusion' A ≫ (pushforward AddCommGrpCat U.inclusion').map (constantToOpenSheafRestriction X U A) = - (toOpenRestrictionPushforward X U).app + (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app 𝓒[X; A] := by apply CategoryTheory.Sheaf.hom_ext_iff.mpr apply sheafify_hom_ext - · exact ((openRestrictionPushforward X U).obj 𝓒[X; A]).property + · exact ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X U).obj 𝓒[X; A]).property rw [ObjectProperty.FullSubcategory.comp_hom, ← Category.assoc, - toSheafify_constantRestriction] + _root_.OAI.AlgebraicTopology.Support.SheafCohomology.TopCat.Sheaf.toSheafify_constantRestriction] ext V : 2 change (toSheafify (Opens.grothendieckTopology (TopCat.of U)) 𝓒ᵖ[↧U; A]).app _ ≫ (constantToOpenSheafRestriction X U A).hom.app _ = _ rw [← NatTrans.comp_app, toSheafify_constantToOpenSheafRestriction] - simpa [toOpenRestrictionPushforward, Topology.IsOpenEmbedding.sheafPullback, - Functor.sheafPushforwardContinuous, constantSheaf, TopCat.Sheaf.const, - TopCat.Sheaf.constantFunctor] using + simpa [_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward, Topology.IsOpenEmbedding.sheafPullback, + Functor.sheafPushforwardContinuous, constantSheaf, _root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.const, + _root_.OAI.AlgebraicTopology.Sheaf.Constant.TopCat.constantFunctor] using ((toSheafify (Opens.grothendieckTopology X) 𝓒ᵖ[X; A]).naturality (U.isOpenEmbedding.isOpenMap.adjunction.counit.app V.unop).op) @@ -167,7 +175,7 @@ def openSheafRestrictionToConstant (A : AddCommGrpCat.{u}) : (U.isOpenEmbedding.sheafPullback AddCommGrpCat).obj 𝓒[X; A] ⟶ 𝓒[↧U; A] := ((openSheafRestrictionAdjunction X U).homEquiv _ _).symm - (constantRestriction U.inclusion' A) + (_root_.OAI.AlgebraicTopology.Support.SheafCohomology.TopCat.Sheaf.constantRestriction U.inclusion' A) set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in @@ -191,11 +199,11 @@ lemma constantToOpen_openSheafRestrictionToConstant (A : AddCommGrpCat.{u}) : toSheafify_constantToOpenSheafRestriction] ext V : 2 change _ ≫ (((U.isOpenEmbedding.sheafPullback AddCommGrpCat).map - (constantRestriction U.inclusion' A)).hom.app V ≫ + (_root_.OAI.AlgebraicTopology.Support.SheafCohomology.TopCat.Sheaf.constantRestriction U.inclusion' A)).hom.app V ≫ ((openSheafRestrictionCounit X U).app _).hom.app V) = _ change (toSheafify (Opens.grothendieckTopology X) 𝓒ᵖ[X; A] ≫ - (constantRestriction U.inclusion' A).hom).app _ ≫ _ = _ - rw [toSheafify_constantRestriction] + (_root_.OAI.AlgebraicTopology.Support.SheafCohomology.TopCat.Sheaf.constantRestriction U.inclusion' A).hom).app _ ≫ _ = _ + rw [_root_.OAI.AlgebraicTopology.Support.SheafCohomology.TopCat.Sheaf.toSheafify_constantRestriction] exact ((toSheafify (Opens.grothendieckTopology (TopCat.of U)) 𝓒ᵖ[↧U; A]).naturality (U.isOpenEmbedding.isOpenMap.adjunction.unit.app V.unop).op).symm @@ -209,4 +217,9 @@ def constantOpenSheafRestrictionIso (A : AddCommGrpCat.{u}) : hom_inv_id := constantToOpen_openSheafRestrictionToConstant X U A inv_hom_id := openSheafRestrictionToConstant_constantToOpen X U A -end TopCat.Sheaf +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.OpenRestriction diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenSheafification.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenSheafification.lean index 597d25eb91..9f8f9723bd 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenSheafification.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Sheaf/OpenSheafification.lean @@ -1,11 +1,18 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenRestriction -public import Mathlib.CategoryTheory.Sites.CoverLifting +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenRestriction +import Mathlib.CategoryTheory.Sites.CoverLifting + +namespace OAI.AlgebraicTopology.Sheaf.OpenSheafification + +open _root_.TopCat +open _root_.Topology +open _root_.Topology.IsOpenEmbedding /-! # Sheafification commutes with open restriction @@ -13,13 +20,17 @@ Open-image functors lift covering sieves. The resulting sheafification comparison is the sheafification lift of the restricted unit. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory TopologicalSpace Opposite +open _root_.CategoryTheory _root_.TopologicalSpace Opposite universe u -namespace Topology.IsOpenEmbedding +namespace Topology +open _root_.Topology +namespace IsOpenEmbedding +open _root_.Topology +open _root_.Topology.IsOpenEmbedding variable {X Y : TopCat.{u}} {f : X ⟶ Y} (hf : IsOpenEmbedding f) @@ -37,9 +48,12 @@ lemma functor_isCocontinuous : exact hf.injective hzy ▸ hz exact ⟨V', homOfLE hle, S.downward_closed hV (homOfLE (Set.image_preimage_subset f V)), hxV⟩ -end Topology.IsOpenEmbedding +end IsOpenEmbedding +end Topology -namespace TopCat.Sheaf +section +namespace TopCat +open _root_.TopCat variable (X : TopCat.{u}) (U : Opens X) @@ -58,7 +72,7 @@ def openRestrictionSheafificationIso (P : Presheaf AddCommGrpCat.{u} X) : U.isOpenEmbedding.functor_isContinuous letI : U.isOpenEmbedding.functor.IsCocontinuous (Opens.grothendieckTopology (TopCat.of U)) (Opens.grothendieckTopology X) := - U.isOpenEmbedding.functor_isCocontinuous + (_root_.OAI.AlgebraicTopology.Sheaf.OpenSheafification.Topology.IsOpenEmbedding.functor_isCocontinuous U.isOpenEmbedding) (U.isOpenEmbedding.functor.pushforwardContinuousSheafificationCompatibility AddCommGrpCat (Opens.grothendieckTopology (TopCat.of U)) (Opens.grothendieckTopology X)).app P @@ -78,7 +92,7 @@ lemma toSheafify_openRestrictionSheafificationIso (P : Presheaf AddCommGrpCat.{u U.isOpenEmbedding.functor_isContinuous let : U.isOpenEmbedding.functor.IsCocontinuous (Opens.grothendieckTopology (TopCat.of U)) (Opens.grothendieckTopology X) := - U.isOpenEmbedding.functor_isCocontinuous + (_root_.OAI.AlgebraicTopology.Sheaf.OpenSheafification.Topology.IsOpenEmbedding.functor_isCocontinuous U.isOpenEmbedding) exact U.isOpenEmbedding.functor.toSheafify_pullbackSheafificationCompatibility AddCommGrpCat (Opens.grothendieckTopology (TopCat.of U)) (Opens.grothendieckTopology X) P @@ -99,9 +113,14 @@ lemma openRestrictionSheafificationIso_naturality U.isOpenEmbedding.functor_isContinuous let : U.isOpenEmbedding.functor.IsCocontinuous (Opens.grothendieckTopology (TopCat.of U)) (Opens.grothendieckTopology X) := - U.isOpenEmbedding.functor_isCocontinuous + (_root_.OAI.AlgebraicTopology.Sheaf.OpenSheafification.Topology.IsOpenEmbedding.functor_isCocontinuous U.isOpenEmbedding) exact (U.isOpenEmbedding.functor.pushforwardContinuousSheafificationCompatibility AddCommGrpCat (Opens.grothendieckTopology (TopCat.of U)) (Opens.grothendieckTopology X)).hom.naturality f -end TopCat.Sheaf +end TopCat +end + +end + +end OAI.AlgebraicTopology.Sheaf.OpenSheafification diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Cohomology.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Cohomology.lean index 0598167cb4..a0cd3dc6a0 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Cohomology.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Cohomology.lean @@ -12,15 +12,20 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.AlgebraicTopology.SimplicialSet.ChainComplexSplit -public import Mathlib.Algebra.Homology.HomologicalComplexAbelian -public import HodgeConjecture.Definitions.AlgebraicTopology.Singular.Cohomology +import HodgeConjecture.Mathlib.AlgebraicTopology.SimplicialSet.ChainComplexSplit +import Mathlib.Algebra.Homology.HomologicalComplexAbelian +import HodgeConjecture.Definitions.AlgebraicTopology.Singular.Cohomology import Mathlib.Algebra.Homology.HomologicalComplexAbelian +namespace OAI.AlgebraicTopology.Singular.CohomologyTo + +open _root_.AlgebraicTopology + /-! # Singular cohomology over a commutative ring @@ -34,17 +39,18 @@ against a homology class is mediated by the universal-coefficient equivalence /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits +open _root_.CategoryTheory Limits universe u -namespace AlgebraicTopology.Singular +section +section /-- The singular chain map induced by a continuous map. -/ abbrev singularChainComplexMap (R : Type u) [CommRing R] {X Y : TopCat.{u}} (f : X ⟶ Y) : - SingularChainComplex R X ⟶ SingularChainComplex R Y := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.SingularChainComplex R X ⟶ _root_.OAI.AlgebraicTopology.Singular.Cohomology.SingularChainComplex R Y := ((singularChainComplexFunctor (ModuleCat.{u} R)).obj (ModuleCat.of R R)).map f /-- Let `X` be a topological space and `R` a commutative ring. The singular cochain complex @@ -52,7 +58,7 @@ abbrev singularChainComplexMap (R : Type u) [CommRing R] {X Y : TopCat.{u}} (f : `n`-simplices. Its coboundary sends `φ` to `φ ∘ ∂`, with `∂` the singular boundary. -/ abbrev SingularCochainComplex (R : Type u) [CommRing R] (X : TopCat.{u}) : CochainComplex (ModuleCat.{u} R) ℕ := - (SingularChainComplex R X).linearDualCochainComplex + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (_root_.OAI.AlgebraicTopology.Singular.Cohomology.SingularChainComplex R X)) /-- `C^n(X; R)` is the module of singular `n`-cochains of `X` with coefficients in `R`. -/ scoped notation:max "C^" n:max "(" Y "; " R ")" => @@ -61,7 +67,7 @@ scoped notation:max "C^" n:max "(" Y "; " R ")" => /-- The singular cochain map induced by a continuous map, obtained by dualising the chain map. -/ abbrev singularCochainComplexMap (R : Type u) [CommRing R] {X Y : TopCat.{u}} (f : X ⟶ Y) : SingularCochainComplex R Y ⟶ SingularCochainComplex R X := - HomologicalComplex.linearDualMap (singularChainComplexMap R f) + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap (singularChainComplexMap R f) /-- Let `X` be a topological space and `R` a commutative ring. Singular cohomology `H^n(X;R)` is `ker(δ : C^n → C^{n+1}) / im(δ : C^{n-1} → C^n)`, where `C^n = Hom_R(C_n(X;R),R)` and `δφ = φ ∘ @@ -70,51 +76,51 @@ abbrev Cohomology (R : Type u) [CommRing R] (X : TopCat.{u}) (n : ℕ) : ModuleC (SingularCochainComplex R X).homology n /-- `H^n(X; R)` is singular cohomology of `X` in degree `n` with coefficients in `R`. -/ -scoped notation:max "H^" n:max "(" X "; " R ")" => Cohomology R X n +scoped notation:max "H^" n:max "(" X "; " R ")" => _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.Cohomology R X n /-- Pullback in singular cohomology, induced by the dualised chain map. -/ def cohomologyMap (R : Type u) [CommRing R] {X Y : TopCat.{u}} (n : ℕ) (f : X ⟶ Y) : - Cohomology R Y n →ₗ[R] Cohomology R X n := + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.Cohomology R Y n →ₗ[R] _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.Cohomology R X n := (HomologicalComplex.homologyMap (singularCochainComplexMap R f) n).hom /-- Let `X` be a topological space and `R` a field. This linear equivalence `H^n(X;R) ≅ Hom_R(H_n(X;R),R)` sends a singular cohomology class `[φ]` to the functional `[c] ↦ φ(c)` on homology classes. It is the universal coefficient isomorphism over a field. -/ def cohomologyEquivDualHomology (R : Type u) [Field R] (X : TopCat.{u}) (n : ℕ) : - Cohomology R X n ≃ₗ[R] Module.Dual R (Homology R X n) := - (SingularChainComplex R X).linearDualHomologyEquiv n + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.Cohomology R X n ≃ₗ[R] Module.Dual R (_root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology R X n) := + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualHomologyEquiv (_root_.OAI.AlgebraicTopology.Singular.Cohomology.SingularChainComplex R X)) n /-- The map on relative homology induced by a map of pairs. -/ def relativeHomologyMap (R : Type u) [CommRing R] {X Y : TopPair.{u}} (n : ℕ) - (f : X ⟶ Y) : RelativeHomology R X n →ₗ[R] RelativeHomology R Y n := - ((relativeHomologyFunctor R n).map f).hom + (f : X ⟶ Y) : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R X n →ₗ[R] _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R Y n := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeHomologyFunctor R n).map f).hom /-- The quotient map from absolute homology to relative homology. -/ def relativeHomologyProjection (R : Type u) [CommRing R] (X : TopPair.{u}) (n : ℕ) : - Homology R X.fst n ⟶ RelativeHomology R X n := - HomologicalComplex.homologyMap (relativeChainProjection R X) n + _root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology R X.fst n ⟶ _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R X n := + HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X) n /-- The canonical map from relative cohomology to absolute cohomology, induced by the dual of the projection from absolute chains to relative chains. -/ def relativeCohomologyToAbsolute (R : Type u) [CommRing R] (X : TopPair.{u}) (n : ℕ) : - RelativeCohomology R X n →ₗ[R] Cohomology R X.fst n := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology R X n →ₗ[R] _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.Cohomology R X.fst n := (HomologicalComplex.homologyMap - (HomologicalComplex.linearDualMap (relativeChainProjection R X)) n).hom + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X)) n).hom /-- Let `X` be a topological space, `R` a commutative ring, and `Z ⊆ X` any subset. This defines `H_Z^n(X;R)` as relative singular cohomology `H^n(X,X \ Z;R)`, computed from the `R`-linear dual of `C_*(X;R)/C_*(X \ Z;R)`. For closed `Z`, this is singular cohomology with support in `Z`. -/ abbrev CohomologyWithSupport (R : Type u) [CommRing R] (X : TopCat.{u}) (Z : Set X) (n : ℕ) : ModuleCat.{u} R := - RelativeCohomology R (TopPair.ofSubset Zᶜ) n + _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology R (TopPair.ofSubset Zᶜ) n /-- `H_[Z]^n(X; R)` is singular cohomology of `X` with support in `Z`, in degree `n` with coefficients in `R`. -/ -scoped notation:max "H_[" Z "]^" n:max "(" X "; " R ")" => CohomologyWithSupport R X Z n +scoped notation:max "H_[" Z "]^" n:max "(" X "; " R ")" => _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.CohomologyWithSupport R X Z n /-- Forget support in `Z`, mapping a supported class to ordinary singular cohomology. -/ def forgetSupport (R : Type u) [CommRing R] (X : TopCat.{u}) (Z : Set X) (n : ℕ) : - CohomologyWithSupport R X Z n →ₗ[R] Cohomology R X n := + CohomologyWithSupport R X Z n →ₗ[R] _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.Cohomology R X n := relativeCohomologyToAbsolute R (TopPair.ofSubset Zᶜ) n /-- A continuous map, regarded as a map of pairs for a closed support and its preimage. -/ @@ -130,7 +136,7 @@ def cohomologyWithSupportMap (R : Type u) [CommRing R] {X Y : TopCat.{u}} (n : ℕ) (f : X ⟶ Y) (Z : Set Y) : CohomologyWithSupport R Y Z n →ₗ[R] CohomologyWithSupport R X (f ⁻¹' Z) n := - relativeCohomologyMap R n (preimageSupportPairMap f Z) + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap R n (preimageSupportPairMap f Z) /-- The identity map as a map of pairs for an inclusion of supports `Z ⊆ W`. -/ def supportInclusionPairMap (X : TopCat.{u}) {Z W : Set X} (h : Z ⊆ W) : @@ -143,23 +149,25 @@ def supportInclusionPairMap (X : TopCat.{u}) {Z W : Set X} (h : Z ⊆ W) : def enlargeSupport (R : Type u) [CommRing R] (X : TopCat.{u}) {Z W : Set X} (h : Z ⊆ W) (n : ℕ) : CohomologyWithSupport R X Z n →ₗ[R] CohomologyWithSupport R X W n := - relativeCohomologyMap R n (supportInclusionPairMap X h) + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap R n (supportInclusionPairMap X h) -end AlgebraicTopology.Singular +end +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits +open _root_.CategoryTheory Limits universe u -namespace AlgebraicTopology.Singular +section +section @[simp] lemma homologyMap_id (R : Type u) [CommRing R] (X : TopCat.{u}) (n : ℕ) : - homologyMap R n (𝟙 X) = LinearMap.id := by + _root_.OAI.AlgebraicTopology.Singular.Cohomology.homologyMap R n (𝟙 X) = LinearMap.id := by calc _ = ModuleCat.Hom.hom (𝟙 (((singularHomologyFunctor (ModuleCat.{u} R) n).obj (ModuleCat.of R R)).obj X)) := congrArg ModuleCat.Hom.hom @@ -169,7 +177,7 @@ lemma homologyMap_id (R : Type u) [CommRing R] (X : TopCat.{u}) (n : ℕ) : @[simp] lemma homologyMap_comp (R : Type u) [CommRing R] {X Y Z : TopCat.{u}} (n : ℕ) (f : X ⟶ Y) (g : Y ⟶ Z) : - homologyMap R n (f ≫ g) = (homologyMap R n g).comp (homologyMap R n f) := by + _root_.OAI.AlgebraicTopology.Singular.Cohomology.homologyMap R n (f ≫ g) = (_root_.OAI.AlgebraicTopology.Singular.Cohomology.homologyMap R n g).comp (_root_.OAI.AlgebraicTopology.Singular.Cohomology.homologyMap R n f) := by calc _ = ((((singularHomologyFunctor (ModuleCat.{u} R) n).obj (ModuleCat.of R R)).map f) ≫ @@ -183,10 +191,10 @@ pushing the homology class forward and pairing there: the universal-coefficient natural. -/ @[simp] lemma cohomologyEquivDualHomology_cohomologyMap (R : Type u) [Field R] {X Y : TopCat.{u}} - (n : ℕ) (f : X ⟶ Y) (α : Cohomology R Y n) (z : Homology R X n) : + (n : ℕ) (f : X ⟶ Y) (α : _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.Cohomology R Y n) (z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology R X n) : cohomologyEquivDualHomology R X n (cohomologyMap R n f α) z = - cohomologyEquivDualHomology R Y n α (homologyMap R n f z) := - HomologicalComplex.linearDualHomologyEquiv_naturality (singularChainComplexMap R f) n α z + cohomologyEquivDualHomology R Y n α (_root_.OAI.AlgebraicTopology.Singular.Cohomology.homologyMap R n f z) := + _root_.OAI.Algebra.Homology.LinearDualNaturality.HomologicalComplex.linearDualHomologyEquiv_naturality (singularChainComplexMap R f) n α z @[simp] lemma cohomologyMap_id (R : Type u) [CommRing R] (X : TopCat.{u}) (n : ℕ) : @@ -204,8 +212,8 @@ lemma cohomologyMap_comp (R : Type u) [CommRing R] {X Y Z : TopCat.{u}} (n : ℕ lemma relativeHomologyMap_id (R : Type u) [CommRing R] (X : TopPair.{u}) (n : ℕ) : relativeHomologyMap R n (𝟙 X) = LinearMap.id := by calc - _ = ModuleCat.Hom.hom (𝟙 ((relativeHomologyFunctor R n).obj X)) := - congrArg ModuleCat.Hom.hom ((relativeHomologyFunctor R n).map_id X) + _ = ModuleCat.Hom.hom (𝟙 ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeHomologyFunctor R n).obj X)) := + congrArg ModuleCat.Hom.hom ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeHomologyFunctor R n).map_id X) _ = LinearMap.id := rfl @[simp] @@ -214,49 +222,49 @@ lemma relativeHomologyMap_comp (R : Type u) [CommRing R] {X Y Z : TopPair.{u}} ( relativeHomologyMap R n (f ≫ g) = (relativeHomologyMap R n g).comp (relativeHomologyMap R n f) := by calc - _ = (((relativeHomologyFunctor R n).map f) ≫ - (relativeHomologyFunctor R n).map g).hom := - congrArg ModuleCat.Hom.hom ((relativeHomologyFunctor R n).map_comp f g) + _ = (((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeHomologyFunctor R n).map f) ≫ + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeHomologyFunctor R n).map g).hom := + congrArg ModuleCat.Hom.hom ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeHomologyFunctor R n).map_comp f g) _ = _ := rfl /-- The universal-coefficient equivalence for pairs is natural in the pair. -/ @[simp] lemma relativeCohomologyEquivDualHomology_relativeCohomologyMap (R : Type u) [Field R] - {X Y : TopPair.{u}} (n : ℕ) (f : X ⟶ Y) (α : RelativeCohomology R Y n) - (z : RelativeHomology R X n) : - relativeCohomologyEquivDualHomology R X n (relativeCohomologyMap R n f α) z = - relativeCohomologyEquivDualHomology R Y n α (relativeHomologyMap R n f z) := - HomologicalComplex.linearDualHomologyEquiv_naturality ((relativeChainFunctor R).map f) n α z + {X Y : TopPair.{u}} (n : ℕ) (f : X ⟶ Y) (α : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology R Y n) + (z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R X n) : + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology R X n (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap R n f α) z = + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology R Y n α (relativeHomologyMap R n f z) := + _root_.OAI.Algebra.Homology.LinearDualNaturality.HomologicalComplex.linearDualHomologyEquiv_naturality ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).map f) n α z @[simp] lemma relativeCohomologyMap_id (R : Type u) [CommRing R] (X : TopPair.{u}) (n : ℕ) : - relativeCohomologyMap R n (𝟙 X) = LinearMap.id := by - simp [relativeCohomologyMap, relativeCochainComplexMap] + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap R n (𝟙 X) = LinearMap.id := by + simp [_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap, _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCochainComplexMap] @[simp] lemma relativeCohomologyMap_comp (R : Type u) [CommRing R] {X Y Z : TopPair.{u}} (n : ℕ) (f : X ⟶ Y) (g : Y ⟶ Z) : - relativeCohomologyMap R n (f ≫ g) = - (relativeCohomologyMap R n f).comp (relativeCohomologyMap R n g) := by - simp [relativeCohomologyMap, relativeCochainComplexMap, + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap R n (f ≫ g) = + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap R n f).comp (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap R n g) := by + simp [_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap, _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCochainComplexMap, HomologicalComplex.homologyMap_comp] @[reassoc (attr := simp)] lemma subspaceChainMap_relativeChainProjection (R : Type u) [CommRing R] (X : TopPair.{u}) : - ((chainPairFunctor R).obj X).hom ≫ relativeChainProjection R X = 0 := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).hom ≫ _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X = 0 := cokernel.condition _ /-- The short exact sequence of subspace, ambient, and relative singular chains. -/ def relativeChainShortComplex (R : Type u) [CommRing R] (X : TopPair.{u}) : ShortComplex (ChainComplex (ModuleCat.{u} R) ℕ) := - ShortComplex.mk ((chainPairFunctor R).obj X).hom - (relativeChainProjection R X) + ShortComplex.mk ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).hom + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X) (subspaceChainMap_relativeChainProjection R X) /-- The singular-chain map of a topological-pair inclusion is a monomorphism. -/ lemma relativeChainMap_mono (R : Type u) [CommRing R] (X : TopPair.{u}) : - Mono ((chainPairFunctor R).obj X).hom := by + Mono ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).hom := by let : Mono X.hom := (TopCat.mono_iff_injective X.hom).mpr X.prop.injective change Mono (((singularChainComplexFunctor (ModuleCat.{u} R)).obj @@ -266,39 +274,39 @@ lemma relativeChainMap_mono (R : Type u) [CommRing R] (X : TopPair.{u}) : /-- The singular-chain map of a topological-pair inclusion is a split monomorphism in every degree. -/ lemma relativeChainMap_isSplitMono (R : Type u) [CommRing R] (X : TopPair.{u}) (n : ℕ) : - IsSplitMono (((chainPairFunctor R).obj X).hom.f n) := + IsSplitMono (((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).hom.f n) := let _ : Mono X.hom := (TopCat.mono_iff_injective X.hom).mpr X.prop.injective - AlgebraicTopology.isSplitMono_singularChainComplexFunctor_map_f X.hom (ModuleCat.of R R) n + _root_.OAI.AlgebraicTopology.SimplicialSet.ChainComplexSplit.isSplitMono_singularChainComplexFunctor_map_f X.hom (ModuleCat.of R R) n /-- Singular chains of a pair form a short exact sequence. See mathlib PR https://github.com/leanprover-community/mathlib4/pull/37659. -/ lemma relativeChainShortComplex_shortExact (R : Type u) [CommRing R] (X : TopPair.{u}) : (relativeChainShortComplex R X).ShortExact := by - let : Mono ((chainPairFunctor R).obj X).hom := relativeChainMap_mono R X + let : Mono ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).hom := relativeChainMap_mono R X exact - { exact := ShortComplex.cokernelSequence_exact ((chainPairFunctor R).obj X).hom + { exact := ShortComplex.cokernelSequence_exact ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).hom mono_f := by dsimp [relativeChainShortComplex] infer_instance epi_g := by - dsimp [relativeChainShortComplex, relativeChainProjection] + dsimp [relativeChainShortComplex, _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection] exact coequalizer.π_epi } /-- Forgetting that a class is relative and then pairing it with an absolute homology class is the same as projecting the homology class to relative homology and pairing there. -/ @[simp] lemma cohomologyEquivDualHomology_relativeCohomologyToAbsolute (R : Type u) [Field R] - (X : TopPair.{u}) (n : ℕ) (α : RelativeCohomology R X n) (z : Homology R X.fst n) : + (X : TopPair.{u}) (n : ℕ) (α : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology R X n) (z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology R X.fst n) : cohomologyEquivDualHomology R X.fst n (relativeCohomologyToAbsolute R X n α) z = - relativeCohomologyEquivDualHomology R X n α ((relativeHomologyProjection R X n).hom z) := - HomologicalComplex.linearDualHomologyEquiv_naturality (relativeChainProjection R X) n α z + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology R X n α ((relativeHomologyProjection R X n).hom z) := + _root_.OAI.Algebra.Homology.LinearDualNaturality.HomologicalComplex.linearDualHomologyEquiv_naturality (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X) n α z @[simp] lemma cohomologyEquivDualHomology_forgetSupport (R : Type u) [Field R] (X : TopCat.{u}) - (Z : Set X) (n : ℕ) (α : CohomologyWithSupport R X Z n) (z : Homology R X n) : + (Z : Set X) (n : ℕ) (α : CohomologyWithSupport R X Z n) (z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.Homology R X n) : cohomologyEquivDualHomology R X n (forgetSupport R X Z n α) z = - relativeCohomologyEquivDualHomology R (TopPair.ofSubset Zᶜ) n α + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology R (TopPair.ofSubset Zᶜ) n α ((relativeHomologyProjection R (TopPair.ofSubset Zᶜ) n).hom z) := cohomologyEquivDualHomology_relativeCohomologyToAbsolute R (TopPair.ofSubset Zᶜ) n α z @@ -330,16 +338,21 @@ lemma enlargeSupport_rfl (R : Type u) [CommRing R] (X : TopCat.{u}) (Z : Set X) /-- If relative homology is a subsingleton, so is relative cohomology, by the universal-coefficient equivalence. -/ lemma relativeCohomology_subsingleton (R : Type u) [Field R] (X : TopPair.{u}) (n : ℕ) - (h : Subsingleton (RelativeHomology R X n)) : - Subsingleton (RelativeCohomology R X n) := - have : Subsingleton (Module.Dual R (RelativeHomology R X n)) := + (h : Subsingleton (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R X n)) : + Subsingleton (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology R X n) := + have : Subsingleton (Module.Dual R (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R X n)) := ⟨fun φ ψ => LinearMap.ext fun x => by rw [h.elim x 0, map_zero, map_zero]⟩ - (relativeCohomologyEquivDualHomology R X n).toEquiv.subsingleton + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyEquivDualHomology R X n).toEquiv.subsingleton /-- If relative homology is a zero object, so is relative cohomology. -/ lemma relativeCohomology_isZero (R : Type u) [Field R] (X : TopPair.{u}) (n : ℕ) - (h : IsZero (RelativeHomology R X n)) : IsZero (RelativeCohomology R X n) := + (h : IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R X n)) : IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology R X n) := have := relativeCohomology_subsingleton R X n (ModuleCat.subsingleton_of_isZero h) ModuleCat.isZero_of_subsingleton _ -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.CohomologyTo diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Contractible.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Contractible.lean index 1cb16963f6..95cdd22cec 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Contractible.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Contractible.lean @@ -12,17 +12,22 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.Algebra.Homology.LinearDual -public import Mathlib.Algebra.Category.ModuleCat.Colimits -public import Mathlib.AlgebraicTopology.SingularHomology.HomotopyInvariance -public import Mathlib.Topology.Homotopy.Contractible +import HodgeConjecture.Lemmas.Algebra.Homology.LinearDual +import Mathlib.Algebra.Category.ModuleCat.Colimits +import Mathlib.AlgebraicTopology.SingularHomology.HomotopyInvariance +import Mathlib.Topology.Homotopy.Contractible import Mathlib.Algebra.Category.ModuleCat.Abelian import Mathlib.Algebra.Homology.QuasiIso +namespace OAI.AlgebraicTopology.Singular.Contractible + +open _root_.AlgebraicTopology + /-! # Singular chains of contractible spaces @@ -38,14 +43,14 @@ The comparison with a point uses Mathlib's explicit calculation for totally disc spaces. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory +open _root_.CategoryTheory open scoped ContinuousMap universe u -namespace AlgebraicTopology +section variable (R : Type u) [CommRing R] @@ -104,10 +109,10 @@ lemma singularChainComplex_exactAt_of_contractible lemma singularCochainComplex_exactAt_of_contractible (X : Type u) [TopologicalSpace X] [ContractibleSpace X] (n : ℕ) : HomologicalComplex.ExactAt - ((((singularChainComplexFunctor (ModuleCat.{u} R)).obj (ModuleCat.of R R)).obj - (TopCat.of X)).linearDualCochainComplex) (n + 1) := by + ((_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (((singularChainComplexFunctor (ModuleCat.{u} R)).obj (ModuleCat.of R R)).obj + (TopCat.of X)))) (n + 1) := by -- `C_*(X)` is chain homotopy equivalent to the coefficients placed in degree zero. - let e := HomologicalComplex.linearDualHomotopyEquiv + let e := _root_.OAI.Algebra.Homology.LinearDualHomotopy.HomologicalComplex.linearDualHomotopyEquiv ((contractibleSingularChainHomotopyEquiv R X).trans <| (HomotopyEquiv.ofIso (singularChainComplexFunctorIsoOfTotallyDisconnectedSpace (ModuleCat.{u} R) (ModuleCat.of R R) (TopCat.of (ULift.{u} Unit)))).trans @@ -136,4 +141,8 @@ lemma singularChain_dual_range_eq_ker_of_contractible rw [HomologicalComplex.exactAt_iff' _ n (n + 1) (n + 2) (by simp) (by simp)] at h exact h.moduleCat_range_eq_ker -end AlgebraicTopology +end + +end + +end OAI.AlgebraicTopology.Singular.Contractible diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/CoverSmall.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/CoverSmall.lean index ef2e8dbd23..c636148c10 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/CoverSmall.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/CoverSmall.lean @@ -12,11 +12,16 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Category.Grp.Abelian -public import Mathlib.AlgebraicTopology.SingularHomology.Basic +import Mathlib.Algebra.Category.Grp.Abelian +import Mathlib.AlgebraicTopology.SingularHomology.Basic + +namespace OAI.AlgebraicTopology.Singular.ExcisionCoverSmall + +open _root_.AlgebraicTopology /-! This module is ported from Paul Lezeau's corresponding file in @@ -36,13 +41,14 @@ does not yet provide a last-vertex map, a subdivision chain map, or its chain ho identity, so that theorem cannot yet be constructed from library primitives. -/ -@[expose] public section +section noncomputable section -open AlgebraicTopology CategoryTheory CategoryTheory.Limits Set +open _root_.AlgebraicTopology _root_.CategoryTheory _root_.CategoryTheory.Limits Set -namespace AlgebraicTopology.Singular +section +section /-- Integral singular chains of a categorical topological space. -/ abbrev IntegralSingularChainComplexObj (X : TopCat) : @@ -59,17 +65,17 @@ section SmallChains variable {ι : Type} (X : TopCat) (U : ι → Set X) /-- The categorical inclusion of a topological subspace. -/ -public noncomputable def topologicalSubsetInclusion (s : Set X) : +noncomputable def topologicalSubsetInclusion (s : Set X) : TopCat.of s ⟶ X := TopCat.ofHom ⟨Subtype.val, continuous_subtype_val⟩ /-- Singular simplices which factor through one member of `U`. -/ -public noncomputable def coverSmallSingularSubcomplex : +noncomputable def coverSmallSingularSubcomplex : (TopCat.toSSet.obj X).Subcomplex := ⨆ j, SSet.Subcomplex.range (TopCat.toSSet.map (topologicalSubsetInclusion X (U j))) -public theorem mem_coverSmallSingularSubcomplex_iff +theorem mem_coverSmallSingularSubcomplex_iff {n : SimplexCategoryᵒᵖ} (x : (TopCat.toSSet.obj X).obj n) : x ∈ (coverSmallSingularSubcomplex X U).obj n ↔ ∃ j, x ∈ (SSet.Subcomplex.range @@ -78,7 +84,7 @@ public theorem mem_coverSmallSingularSubcomplex_iff /-- Membership means exactly that the singular simplex is the image of a simplex in one cover member. -/ -public theorem mem_coverSmallSingularSubcomplex_iff_exists_preimage +theorem mem_coverSmallSingularSubcomplex_iff_exists_preimage {n : SimplexCategoryᵒᵖ} (x : (TopCat.toSSet.obj X).obj n) : x ∈ (coverSmallSingularSubcomplex X U).obj n ↔ ∃ (j : ι) (y : (TopCat.toSSet.obj (TopCat.of (U j))).obj n), @@ -86,12 +92,12 @@ public theorem mem_coverSmallSingularSubcomplex_iff_exists_preimage simp [mem_coverSmallSingularSubcomplex_iff, Subfunctor.range_obj] /-- Integral chains on the cover-small singular simplicial set. -/ -public noncomputable abbrev CoverSmallIntegralSingularChainComplex : +noncomputable abbrev CoverSmallIntegralSingularChainComplex : ChainComplex AddCommGrpCat ℕ := (coverSmallSingularSubcomplex X U : SSet).chainComplex (AddCommGrpCat.of ℤ) /-- Inclusion of cover-small integral singular chains into all integral singular chains. -/ -public noncomputable def coverSmallIntegralSingularChainInclusion : +noncomputable def coverSmallIntegralSingularChainInclusion : CoverSmallIntegralSingularChainComplex X U ⟶ IntegralSingularChainComplexObj X := SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ) @@ -102,7 +108,7 @@ instance coverSmallIntegralSingularChainInclusion_mono : apply +allowSynthFailures Functor.map_mono /-- The singular set of each cover member factors through the small singular subcomplex. -/ -public noncomputable def coverMemberToSmallSingularSet (j : ι) : +noncomputable def coverMemberToSmallSingularSet (j : ι) : TopCat.toSSet.obj (TopCat.of (U j)) ⟶ coverSmallSingularSubcomplex X U := SSet.Subcomplex.lift (TopCat.toSSet.map (topologicalSubsetInclusion X (U j))) @@ -110,20 +116,20 @@ public noncomputable def coverMemberToSmallSingularSet (j : ι) : (TopCat.toSSet.map (topologicalSubsetInclusion X (U k)))) j)) @[reassoc (attr := simp)] -public theorem coverMemberToSmallSingularSet_comp_inclusion (j : ι) : +theorem coverMemberToSmallSingularSet_comp_inclusion (j : ι) : coverMemberToSmallSingularSet X U j ≫ (coverSmallSingularSubcomplex X U).ι = TopCat.toSSet.map (topologicalSubsetInclusion X (U j)) := SSet.Subcomplex.lift_ι _ _ /-- The chain map from a cover member into the small singular chains. -/ -public noncomputable def coverMemberToSmallIntegralSingularChains (j : ι) : +noncomputable def coverMemberToSmallIntegralSingularChains (j : ι) : IntegralSingularChainComplexObj (TopCat.of (U j)) ⟶ CoverSmallIntegralSingularChainComplex X U := SSet.chainComplexMap (coverMemberToSmallSingularSet X U j) (AddCommGrpCat.of ℤ) /-- Chains from a cover member factor coherently through the small-chain inclusion. -/ @[reassoc] -public theorem coverMemberToSmallIntegralSingularChains_comp_inclusion (j : ι) : +theorem coverMemberToSmallIntegralSingularChains_comp_inclusion (j : ι) : coverMemberToSmallIntegralSingularChains X U j ≫ coverSmallIntegralSingularChainInclusion X U = integralSingularChainMapObj (topologicalSubsetInclusion X (U j)) := by @@ -139,4 +145,10 @@ public theorem coverMemberToSmallIntegralSingularChains_comp_inclusion (j : ι) end SmallChains -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.ExcisionCoverSmall diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/CoverSmallProjective.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/CoverSmallProjective.lean index a9e190ae8e..6f6228becb 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/CoverSmallProjective.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/CoverSmallProjective.lean @@ -12,15 +12,18 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmall -public import Mathlib.Algebra.Homology.QuasiIso +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmall +import Mathlib.Algebra.Homology.QuasiIso import Mathlib.Algebra.Category.ModuleCat.Projective import Mathlib.Algebra.Homology.DerivedCategory.KProjective +namespace OAI.AlgebraicTopology.Singular.ExcisionCoverSmallProjective + /-! This module is ported from Paul Lezeau's corresponding file in `sphere-six-complex` pull request #49, under the Apache-2.0 license. @@ -33,41 +36,47 @@ prove that the cover-small inclusion is a quasi-isomorphism: projectivity upgrad chain-homotopy equivalence. -/ -@[expose] public section +section noncomputable section -open AlgebraicTopology CategoryTheory +open _root_.AlgebraicTopology _root_.CategoryTheory open scoped Simplicial -namespace AlgebraicTopology.Singular +section +section -set_option linter.style.haveILetI false in /-- If the cover-small inclusion is a quasi-isomorphism, then it is a chain-homotopy equivalence, because all the chain groups involved are projective. -/ -public theorem coverSmallChainApproximation_of_quasiIso +theorem coverSmallChainApproximation_of_quasiIso {i : Type} (X : TopCat) (U : i → Set X) - (h : QuasiIso (coverSmallIntegralSingularChainInclusion X U)) : + (h : QuasiIso (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U)) : HomologicalComplex.homotopyEquivalences AddCommGrpCat (ComplexShape.down ℕ) - (coverSmallIntegralSingularChainInclusion X U) := by - letI : QuasiIso (coverSmallIntegralSingularChainInclusion X U) := h - letI projectiveInteger : Projective (AddCommGrpCat.of ℤ) := + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U) := by + let : QuasiIso (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U) := h + let projectiveInteger : Projective (AddCommGrpCat.of ℤ) := ((forget₂ (ModuleCat ℤ) AddCommGrpCat).asEquivalence.map_projective_iff (ModuleCat.of ℤ ℤ)).mpr inferInstance - letI projectiveSmall (n : ℕ) : - Projective ((CoverSmallIntegralSingularChainComplex X U).X n) := by + let projectiveSmall (n : ℕ) : + Projective ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X n) := by change Projective - (∐ fun _ : (coverSmallSingularSubcomplex X U : SSet).obj + (∐ fun _ : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).obj (Opposite.op (SimplexCategory.mk n)) ↦ AddCommGrpCat.of ℤ) infer_instance - letI projectiveFull (n : ℕ) : - Projective ((IntegralSingularChainComplexObj X).X n) := by + let projectiveFull (n : ℕ) : + Projective ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n) := by change Projective (∐ fun _ : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n)) ↦ AddCommGrpCat.of ℤ) infer_instance exact (ChainComplex.quasiIso_iff_of_projective - (coverSmallIntegralSingularChainInclusion X U)).mp (by infer_instance) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U)).mp (by infer_instance) + +end +end + +end +end -end AlgebraicTopology.Singular +end OAI.AlgebraicTopology.Singular.ExcisionCoverSmallProjective diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/CoverSmallQuasiIso.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/CoverSmallQuasiIso.lean index 5d9397c65a..b82ac70b43 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/CoverSmallQuasiIso.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/CoverSmallQuasiIso.lean @@ -12,16 +12,19 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffineIteration -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmallProjective +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffineIteration +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmallProjective import Mathlib.Algebra.Category.Grp.Zero import Mathlib.Algebra.Homology.HomologicalComplexLimits import Mathlib.Algebra.Homology.ShortComplex.Ab +namespace OAI.AlgebraicTopology.Singular.CoverSmallQuasiIso + /-! This module is ported from Paul Lezeau's corresponding file in `sphere-six-complex` pull request #49, under the Apache-2.0 license. @@ -35,13 +38,14 @@ quasi-isomorphism when compatible endomorphisms on the source and target are hom identity and every target chain is eventually carried into the image of the inclusion. -/ -@[expose] public section +section noncomputable section -open CategoryTheory CategoryTheory.Limits +open _root_.CategoryTheory _root_.CategoryTheory.Limits -namespace AlgebraicTopology.Singular +section +section section Abstract @@ -52,7 +56,7 @@ identity, makes a monomorphic inclusion of nonnegative chain complexes a quasi-i The exponent is allowed to depend on the individual chain. This is the form needed for singular chains, whose elements have finite support but do not admit a uniform subdivision exponent. -/ -public theorem chainComplex_quasiIso_of_eventually_factors +theorem chainComplex_quasiIso_of_eventually_factors (I : K ⟶ L) [Mono I] (smallIterate : ℕ → (K ⟶ K)) (largeIterate : ℕ → (L ⟶ L)) @@ -209,32 +213,38 @@ variable {iota : Type} (X : TopCat) (U : iota → Set X) /-- Eventual smallness of every finite singular chain -- each is carried into the cover-small subcomplex by some finite affine-subdivision iterate -- implies that the cover-small inclusion is a quasi-isomorphism. -/ -public theorem coverSmallChainQuasiIsomorphism_of_eventuallySmall - (h : ∀ (n : ℕ) (x : (IntegralSingularChainComplexObj X).X n), - ∃ (m : ℕ) (y : (CoverSmallIntegralSingularChainComplex X U).X n), - (coverSmallIntegralSingularChainInclusion X U).f n y = - (affineSingularSubdivisionIterate X m).f n x) : - QuasiIso (coverSmallIntegralSingularChainInclusion X U) := +theorem coverSmallChainQuasiIsomorphism_of_eventuallySmall + (h : ∀ (n : ℕ) (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n), + ∃ (m : ℕ) (y : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X n), + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n y = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n x) : + QuasiIso (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U) := chainComplex_quasiIso_of_eventually_factors - (coverSmallIntegralSingularChainInclusion X U) - (coverSmallAffineSubdivisionIterate X U) - (affineSingularSubdivisionIterate X) - (coverSmallAffineSubdivisionIterate_comp_inclusion X U) - (coverSmallAffineSubdivisionIterateHomotopy X U) - (affineSingularSubdivisionIterateHomotopy X) h + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.coverSmallAffineSubdivisionIterate X U) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.coverSmallAffineSubdivisionIterate_comp_inclusion X U) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.coverSmallAffineSubdivisionIterateHomotopy X U) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterateHomotopy X) h /-- The same geometric input supplies the stronger chain-homotopy equivalence, via projectivity of integral singular chain groups. -/ -public theorem coverSmallChainApproximation_of_eventuallySmall - (h : ∀ (n : ℕ) (x : (IntegralSingularChainComplexObj X).X n), - ∃ (m : ℕ) (y : (CoverSmallIntegralSingularChainComplex X U).X n), - (coverSmallIntegralSingularChainInclusion X U).f n y = - (affineSingularSubdivisionIterate X m).f n x) : +theorem coverSmallChainApproximation_of_eventuallySmall + (h : ∀ (n : ℕ) (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n), + ∃ (m : ℕ) (y : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X n), + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n y = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n x) : HomologicalComplex.homotopyEquivalences AddCommGrpCat (ComplexShape.down ℕ) - (coverSmallIntegralSingularChainInclusion X U) := - coverSmallChainApproximation_of_quasiIso X U + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U) := + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmallProjective.coverSmallChainApproximation_of_quasiIso X U (coverSmallChainQuasiIsomorphism_of_eventuallySmall X U h) end Singular -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.CoverSmallQuasiIso diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/Field.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/Field.lean index ef7b3dcfee..4ae02b5db1 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/Field.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/Field.lean @@ -12,14 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmall -public import Mathlib.Algebra.Category.ModuleCat.Colimits +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmall +import Mathlib.Algebra.Category.ModuleCat.Colimits import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.OpenCover +namespace OAI.AlgebraicTopology.Singular.ExcisionField + /-! # Small singular chains with rational coefficients @@ -28,12 +31,13 @@ transport is constructed directly from the universal bases of the two simplicial complexes. In particular, it does not assume a universal-coefficient theorem. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits +open _root_.CategoryTheory _root_.CategoryTheory.Limits open scoped Simplicial -namespace AlgebraicTopology.Singular +section +section /-- Rational chains on a simplicial set. -/ abbrev RationalSimplicialChainComplex (X : SSet.{0}) : @@ -349,13 +353,13 @@ variable {ι : Type} (X : TopCat.{0}) (U : ι → Set X) /-- Rational chains generated by singular simplices subordinate to one member of a cover. -/ abbrev CoverSmallRationalSingularChainComplex : ChainComplex (ModuleCat ℚ) ℕ := - (coverSmallSingularSubcomplex X U : SSet).chainComplex (ModuleCat.of ℚ ℚ) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).chainComplex (ModuleCat.of ℚ ℚ) /-- Inclusion of cover-small rational singular chains into all rational singular chains. -/ def coverSmallRationalSingularChainInclusion : CoverSmallRationalSingularChainComplex X U ⟶ (TopCat.toSSet.obj X).chainComplex (ModuleCat.of ℚ ℚ) := - SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι (ModuleCat.of ℚ ℚ) + SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (ModuleCat.of ℚ ℚ) instance coverSmallRationalSingularChainInclusion_mono : Mono (coverSmallRationalSingularChainInclusion X U) := by @@ -369,16 +373,16 @@ theorem coverSmallRationalChainApproximation_of_openCover (hUopen : ∀ i, IsOpen (U i)) (hUcover : ⋃ i, U i = Set.univ) : HomologicalComplex.homotopyEquivalences (ModuleCat ℚ) (ComplexShape.down ℕ) (coverSmallRationalSingularChainInclusion X U) := by - let eZ := coverSmallChainHomotopyEquiv_of_openCover X U hUopen hUcover + let eZ := _root_.OAI.AlgebraicTopology.Singular.ExcisionOpenCover.coverSmallChainHomotopyEquiv_of_openCover X U hUopen hUcover refine ⟨rationalizeSimplicialChainHomotopyEquiv - (coverSmallSingularSubcomplex X U : SSet) (TopCat.toSSet.obj X) eZ, ?_⟩ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet) (TopCat.toSSet.obj X) eZ, ?_⟩ change rationalizeSimplicialChainMap - (coverSmallSingularSubcomplex X U : SSet) (TopCat.toSSet.obj X) eZ.hom = + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet) (TopCat.toSSet.obj X) eZ.hom = coverSmallRationalSingularChainInclusion X U - rw [show eZ.hom = coverSmallIntegralSingularChainInclusion X U from - coverSmallChainHomotopyEquiv_of_openCover_hom X U hUopen hUcover] + rw [show eZ.hom = _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U from + _root_.OAI.AlgebraicTopology.Singular.ExcisionOpenCover.coverSmallChainHomotopyEquiv_of_openCover_hom X U hUopen hUcover] exact rationalizeSimplicialChainMap_chainComplexMap - (coverSmallSingularSubcomplex X U).ι + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι /-- A selected rational small-chain homotopy equivalence for an open cover. -/ def coverSmallRationalChainHomotopyEquiv_of_openCover @@ -397,4 +401,9 @@ lemma coverSmallRationalChainHomotopyEquiv_of_openCover_hom end RationalSmallChains -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.ExcisionField diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/Lebesgue.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/Lebesgue.lean index 2708c1d9f7..2e0f69f040 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/Lebesgue.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/Lebesgue.lean @@ -12,12 +12,15 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric +import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric + +import Mathlib.AlgebraicTopology.SingularSet -public import Mathlib.AlgebraicTopology.SingularSet +namespace OAI.AlgebraicTopology.Singular.ExcisionLebesgue /-! This module is ported from Paul Lezeau's corresponding file in @@ -30,16 +33,17 @@ compact standard-simplex domain. This file packages the resulting Lebesgue numb of the barycentric mesh estimate. -/ -@[expose] public section +section noncomputable section open Set -namespace AlgebraicTopology.Singular +section +section /-- The pullback of an open cover along one singular simplex has a positive Lebesgue number. -/ -public theorem singularSimplex_openCover_lebesgueNumber +theorem singularSimplex_openCover_lebesgueNumber {ι : Type} (X : TopCat.{0}) (U : ι → Set X) (hUopen : ∀ i, IsOpen (U i)) (hUcover : ⋃ i, U i = Set.univ) (n : ℕ) @@ -58,4 +62,10 @@ public theorem singularSimplex_openCover_lebesgueNumber exact ⟨i, hi⟩) exact ⟨δ, hδ, fun w ↦ hLeb w (Set.mem_univ w)⟩ -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.ExcisionLebesgue diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/OpenCover.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/OpenCover.lean index 72df4697c5..4f929bda8e 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/OpenCover.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Excision/OpenCover.lean @@ -12,14 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmallQuasiIso +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmallQuasiIso import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffineRelativeMesh import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffineSupport +namespace OAI.AlgebraicTopology.Singular.ExcisionOpenCover + /-! This module is ported from Paul Lezeau's corresponding file in `sphere-six-complex` pull request #49, under the Apache-2.0 license. @@ -31,36 +34,43 @@ the adaptive quasi-isomorphism argument, and projectivity. The result is the cl small-singular-chain theorem for every open cover, with no additional hypothesis. -/ -@[expose] public section +section noncomputable section -open CategoryTheory CategoryTheory.Limits Set +open _root_.CategoryTheory _root_.CategoryTheory.Limits Set -namespace AlgebraicTopology.Singular +section +section variable {ι : Type} (X : TopCat) (U : ι → Set X) /-- Classical small-chain approximation: the inclusion of chains subordinate to an open cover is a chain-homotopy equivalence for integral singular chains. -/ -public theorem coverSmallChainApproximation_of_openCover +theorem coverSmallChainApproximation_of_openCover (hUopen : ∀ i, IsOpen (U i)) (hUcover : ⋃ i, U i = Set.univ) : HomologicalComplex.homotopyEquivalences AddCommGrpCat (ComplexShape.down ℕ) - (coverSmallIntegralSingularChainInclusion X U) := - coverSmallChainApproximation_of_eventuallySmall X U - (coverSmallAffineSubdivisionEventuallySmall_of_openCover X U hUopen hUcover) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U) := + _root_.OAI.AlgebraicTopology.Singular.CoverSmallQuasiIso.coverSmallChainApproximation_of_eventuallySmall X U + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSupport.coverSmallAffineSubdivisionEventuallySmall_of_openCover X U hUopen hUcover) /-- A selected chain-homotopy equivalence witnessing small-chain approximation. -/ -public noncomputable def coverSmallChainHomotopyEquiv_of_openCover +noncomputable def coverSmallChainHomotopyEquiv_of_openCover (hUopen : ∀ i, IsOpen (U i)) (hUcover : ⋃ i, U i = Set.univ) : - HomotopyEquiv (CoverSmallIntegralSingularChainComplex X U) - (IntegralSingularChainComplexObj X) := + HomotopyEquiv (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X) := (coverSmallChainApproximation_of_openCover X U hUopen hUcover).choose -public theorem coverSmallChainHomotopyEquiv_of_openCover_hom +theorem coverSmallChainHomotopyEquiv_of_openCover_hom (hUopen : ∀ i, IsOpen (U i)) (hUcover : ⋃ i, U i = Set.univ) : (coverSmallChainHomotopyEquiv_of_openCover X U hUopen hUcover).hom = - coverSmallIntegralSingularChainInclusion X U := + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U := (coverSmallChainApproximation_of_openCover X U hUopen hUcover).choose_spec -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.ExcisionOpenCover diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/GlobalRestriction.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/GlobalRestriction.lean index 3a4dbacb3a..ea86d52fec 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/GlobalRestriction.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/GlobalRestriction.lean @@ -12,11 +12,15 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainRestriction -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.SubdivisionCochain +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainRestriction +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.SubdivisionCochain + +namespace OAI.AlgebraicTopology.Singular.GlobalRestriction + /-! # Global singular restriction @@ -26,32 +30,33 @@ needed to compare a support cone built from singular-cochain sheaves with the co singular-cochain cone. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory TopologicalSpace +open _root_.CategoryTheory _root_.TopologicalSpace -namespace AlgebraicTopology.Singular +section +section variable (R : Type) [CommRing R] {U X : TopCat.{0}} (j : U ⟶ X) /-- Restriction of the raw singular-cochain presheaf complexes. -/ def singularRawRestrictionComplex : - singularCochainPresheafComplex R X ⟶ + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X ⟶ ((Functor.whiskeringLeft _ _ _).obj (Opens.map j).op).mapHomologicalComplex - (ComplexShape.up ℕ) |>.obj (singularCochainPresheafComplex R U) where - f n := singularRestrictionToRawPushforward R j n + (ComplexShape.up ℕ) |>.obj (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R U) where + f n := _root_.OAI.AlgebraicTopology.Singular.SheafCochainRestriction.singularRestrictionToRawPushforward R j n comm' i k hik := by obtain rfl := hik - rw [singularCochainPresheafComplex_d, Functor.mapHomologicalComplex_obj_d, - singularCochainPresheafComplex_d] - exact (singularRestrictionToRawPushforward_coboundary R j i).symm + rw [_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex_d, Functor.mapHomologicalComplex_obj_d, + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex_d] + exact (_root_.OAI.AlgebraicTopology.Singular.SheafCochainRestriction.singularRestrictionToRawPushforward_coboundary R j i).symm /-- Raw singular cochains on the inverse image of the top open. -/ def globalRawPushforwardSingularCochainComplex : CochainComplex AddCommGrpCat ℕ := ((((evaluation (Opens X)ᵒᵖ AddCommGrpCat).obj (.op (⊤ : Opens X))).mapHomologicalComplex (ComplexShape.up ℕ)).obj ((((Functor.whiskeringLeft _ _ _).obj (Opens.map j).op).mapHomologicalComplex - (ComplexShape.up ℕ)).obj (singularCochainPresheafComplex R U))) + (ComplexShape.up ℕ)).obj (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R U))) /-- Global sections of the pushforward singular-cochain sheaf complex. -/ def globalPushforwardSingularCochainSheafComplex : CochainComplex AddCommGrpCat ℕ := @@ -60,23 +65,23 @@ def globalPushforwardSingularCochainSheafComplex : CochainComplex AddCommGrpCat (((TopCat.Sheaf.forget AddCommGrpCat X).mapHomologicalComplex (ComplexShape.up ℕ)).obj (((TopCat.Sheaf.pushforward AddCommGrpCat j).mapHomologicalComplex - (ComplexShape.up ℕ)).obj (singularCochainSheafComplex R U))) + (ComplexShape.up ℕ)).obj (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex R U))) /-- Restriction of raw global singular cochains to the inverse image of the top open. -/ def globalRawSingularRestriction : - globalRawSingularCochainComplex R X ⟶ + _root_.OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain.globalRawSingularCochainComplex R X ⟶ globalRawPushforwardSingularCochainComplex R j := (((evaluation (Opens X)ᵒᵖ AddCommGrpCat).obj (.op ⊤)).mapHomologicalComplex (ComplexShape.up ℕ)).map (singularRawRestrictionComplex R j) /-- Restriction on the global-section complexes of singular-cochain sheaves. -/ def globalSingularSheafRestriction : - globalSingularCochainSheafComplex R X ⟶ + _root_.OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain.globalSingularCochainSheafComplex R X ⟶ globalPushforwardSingularCochainSheafComplex R j := (((evaluation (Opens X)ᵒᵖ AddCommGrpCat).obj (.op ⊤)).mapHomologicalComplex (ComplexShape.up ℕ)).map (((TopCat.Sheaf.forget AddCommGrpCat X).mapHomologicalComplex - (ComplexShape.up ℕ)).map (singularRestrictionSheafComplex R j)) + (ComplexShape.up ℕ)).map (_root_.OAI.AlgebraicTopology.Singular.SheafCochainRestriction.singularRestrictionSheafComplex R j)) /-- The sheafification unit evaluated after restriction to the inverse image of the top open. -/ def globalRawPushforwardToSingularSheaf : @@ -85,27 +90,27 @@ def globalRawPushforwardToSingularSheaf : (((evaluation (Opens X)ᵒᵖ AddCommGrpCat).obj (.op ⊤)).mapHomologicalComplex (ComplexShape.up ℕ)).map ((((Functor.whiskeringLeft _ _ _).obj (Opens.map j).op).mapHomologicalComplex - (ComplexShape.up ℕ)).map (singularCochainSheafificationUnit R U)) + (ComplexShape.up ℕ)).map (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafificationUnit R U)) /-- The double-plus presentation of the comparison is the chosen sheafification unit in each degree. -/ lemma topOpenToGlobalSingularCochainSheafComplex_f (n : ℕ) : - (topOpenToGlobalSingularCochainSheafComplex R X).f n = + (_root_.OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain.topOpenToGlobalSingularCochainSheafComplex R X).f n = (toSheafify (Opens.grothendieckTopology X) - (singularCochainPresheaf R X n)).app (.op ⊤) := by - change ((singularCochainToPlusPlusPresheafComplex R X).f n ≫ - (singularCochainPlusPlusPresheafComplexIsoSheafComplex R X).hom.f n).app + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).app (.op ⊤) := by + change ((_root_.OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain.singularCochainToPlusPlusPresheafComplex R X).f n ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain.singularCochainPlusPlusPresheafComplexIsoSheafComplex R X).hom.f n).app (.op ⊤) = _ - rw [singularCochainToPlusPlusPresheafComplex_f] + rw [_root_.OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain.singularCochainToPlusPlusPresheafComplex_f] change ((Opens.grothendieckTopology X).toSheafify - (singularCochainPresheaf R X n) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n) ≫ (plusPlusIsoSheafify (Opens.grothendieckTopology X) - AddCommGrpCat (singularCochainPresheaf R X n)).hom).app (.op ⊤) = _ + AddCommGrpCat (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).hom).app (.op ⊤) = _ rw [toSheafify_plusPlusIsoSheafify_hom] /-- Global restriction commutes strictly with sheafification. -/ lemma globalSingularSheafRestriction_naturality : - topOpenToGlobalSingularCochainSheafComplex R X ≫ + _root_.OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain.topOpenToGlobalSingularCochainSheafComplex R X ≫ globalSingularSheafRestriction R j = globalRawSingularRestriction R j ≫ globalRawPushforwardToSingularSheaf R j := by @@ -114,6 +119,11 @@ lemma globalSingularSheafRestriction_naturality : rw [HomologicalComplex.comp_f, HomologicalComplex.comp_f, topOpenToGlobalSingularCochainSheafComplex_f] exact congrArg (fun f ↦ f.app (.op ⊤)) - (toSheafify_comp_singularRestrictionSheaf R j n) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainRestriction.toSheafify_comp_singularRestrictionSheaf R j n) + +end +end + +end -end AlgebraicTopology.Singular +end OAI.AlgebraicTopology.Singular.GlobalRestriction diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/HomologyZeroNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/HomologyZeroNaturality.lean index de16146fe6..ba33cedcf5 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/HomologyZeroNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/HomologyZeroNaturality.lean @@ -1,10 +1,16 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.AlgebraicTopology.SingularHomology.HomologyZero +import Mathlib.AlgebraicTopology.SingularHomology.HomologyZero + +namespace OAI.AlgebraicTopology.Singular.HomologyZeroNaturality + +open _root_.SSet +open _root_.TopCat /-! # Naturality of the degree-zero homology augmentation @@ -18,17 +24,18 @@ The augmentation proof generalizes the additive-group-valued proof in to arbitrary coefficient objects. -/ -@[expose] public noncomputable section +noncomputable section universe w v u -open CategoryTheory Limits AlgebraicTopology HomologicalComplex +open _root_.CategoryTheory Limits _root_.AlgebraicTopology _root_.HomologicalComplex open scoped Simplicial variable {C : Type u} [Category.{v} C] [HasCoproducts.{w} C] [Preadditive C] [CategoryWithHomology C] namespace SSet +open _root_.SSet /-- In a nonnegative chain complex the degree-zero chains are the degree-zero cycles. -/ def chainComplexXZeroIsoCyclesZero (K : ChainComplex C ℕ) : K.X 0 ≅ K.cycles 0 where @@ -82,18 +89,19 @@ theorem homology₀ε_epi_of_vertex (X : SSet.{w}) (R : C) (x : X _⦋0⦌) : end SSet namespace TopCat +open _root_.TopCat /-- Naturality of the singular degree-zero augmentation. -/ @[reassoc] theorem singularHomology₀ε_naturality {X Y : TopCat.{w}} (f : X ⟶ Y) (R : C) : ((singularHomologyFunctor C 0).obj R).map f ≫ Y.singularHomology₀ε R = X.singularHomology₀ε R := - SSet.homology₀ε_naturality (toSSet.map f) R + _root_.OAI.AlgebraicTopology.Singular.HomologyZeroNaturality.SSet.homology₀ε_naturality (toSSet.map f) R /-- A nonempty space has a surjective degree-zero augmentation. -/ theorem singularHomology₀ε_epi (X : TopCat.{w}) [Nonempty X] (R : C) : Epi (X.singularHomology₀ε R) := - SSet.homology₀ε_epi_of_vertex (toSSet.obj X) R + _root_.OAI.AlgebraicTopology.Singular.HomologyZeroNaturality.SSet.homology₀ε_epi_of_vertex (toSSet.obj X) R ((X.toSSetObjEquiv _).symm (ContinuousMap.const _ (Classical.arbitrary X))) /-- Any map into a path-connected space is surjective on degree-zero homology @@ -101,7 +109,7 @@ provided its source is nonempty. -/ theorem singularHomologyMap_zero_epi {X Y : TopCat.{w}} [Nonempty X] [PathConnectedSpace Y] (f : X ⟶ Y) (R : C) : Epi (((singularHomologyFunctor C 0).obj R).map f) := by - let : Epi (X.singularHomology₀ε R) := X.singularHomology₀ε_epi R + let : Epi (X.singularHomology₀ε R) := (singularHomology₀ε_epi X) R have : Epi (((singularHomologyFunctor C 0).obj R).map f ≫ Y.singularHomology₀ε R) := by rw [singularHomology₀ε_naturality] @@ -119,3 +127,7 @@ theorem singularHomologyMap_zero_isIso {X Y : TopCat.{w}} exact IsIso.of_isIso_comp_right _ (Y.singularHomology₀ε R) end TopCat + +end + +end OAI.AlgebraicTopology.Singular.HomologyZeroNaturality diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativeCochainCone.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativeCochainCone.lean index d674eb3212..271095fbbf 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativeCochainCone.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativeCochainCone.lean @@ -12,17 +12,20 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Definitions.AlgebraicTopology.Singular.RelativeCochainCone -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.SubdivisionCochain -public import Mathlib.Algebra.Category.ModuleCat.Projective -public import Mathlib.Analysis.Normed.Group.Basic -public import Mathlib.LinearAlgebra.Dual.Lemmas -public import Mathlib.Topology.Algebra.InfiniteSum.Order +import HodgeConjecture.Definitions.AlgebraicTopology.Singular.RelativeCochainCone +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.SubdivisionCochain +import Mathlib.Algebra.Category.ModuleCat.Projective +import Mathlib.Analysis.Normed.Group.Basic +import Mathlib.LinearAlgebra.Dual.Lemmas +import Mathlib.Topology.Algebra.InfiniteSum.Order + +namespace OAI.AlgebraicTopology.Singular.RelativeCochainG /-! # Relative singular cohomology as a cochain mapping cone @@ -33,126 +36,129 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section -open CategoryTheory Limits -open CategoryTheory.Pretriangulated +noncomputable section +open _root_.CategoryTheory Limits +open _root_.CategoryTheory.Pretriangulated universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] @[simp] lemma relativeDualCochainShortComplexInt_g (X : TopPair.{u}) : - (relativeDualCochainShortComplexInt R X).g = relativeCochainRestrictionInt R X := + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt R X).g = _root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R X := rfl set_option backward.isDefEq.respectTransparency false in /-- In a nonnegative degree, evaluation of the integer extension recovers evaluation of the original nonnegative short complex. -/ def relativeDualCochainShortComplexIntEvalIso (X : TopPair.{u}) (n : ℕ) : - (relativeDualCochainShortComplexInt R X).map + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt R X).map (HomologicalComplex.eval (ModuleCat.{u} R) ℤᵘᵖ (n : ℤ)) ≅ - (relativeDualCochainShortComplexNat R X).map + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).map (HomologicalComplex.eval (ModuleCat.{u} R) (ComplexShape.up ℕ) n) := have hn : ComplexShape.embeddingUpNat.f n = (n : ℤ) := rfl ShortComplex.isoMk - ((relativeDualCochainShortComplexNat R X).X₁.extendXIso + ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).X₁.extendXIso ComplexShape.embeddingUpNat hn) - ((relativeDualCochainShortComplexNat R X).X₂.extendXIso + ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).X₂.extendXIso ComplexShape.embeddingUpNat hn) - ((relativeDualCochainShortComplexNat R X).X₃.extendXIso + ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).X₃.extendXIso ComplexShape.embeddingUpNat hn) (by - change ((relativeDualCochainShortComplexNat R X).X₁.extendXIso + change ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).X₁.extendXIso ComplexShape.embeddingUpNat hn).hom ≫ - (relativeDualCochainShortComplexNat R X).f.f n = + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).f.f n = (HomologicalComplex.extendMap - (relativeDualCochainShortComplexNat R X).f + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).f ComplexShape.embeddingUpNat).f (n : ℤ) ≫ - ((relativeDualCochainShortComplexNat R X).X₂.extendXIso + ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).X₂.extendXIso ComplexShape.embeddingUpNat hn).hom rw [HomologicalComplex.extendMap_f _ _ hn] simp only [Category.assoc, Iso.inv_hom_id, Category.comp_id]) (by - change ((relativeDualCochainShortComplexNat R X).X₂.extendXIso + change ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).X₂.extendXIso ComplexShape.embeddingUpNat hn).hom ≫ - (relativeDualCochainShortComplexNat R X).g.f n = + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).g.f n = (HomologicalComplex.extendMap - (relativeDualCochainShortComplexNat R X).g + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).g ComplexShape.embeddingUpNat).f (n : ℤ) ≫ - ((relativeDualCochainShortComplexNat R X).X₃.extendXIso + ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).X₃.extendXIso ComplexShape.embeddingUpNat hn).hom rw [HomologicalComplex.extendMap_f _ _ hn] simp only [Category.assoc, Iso.inv_hom_id, Category.comp_id]) -end AlgebraicTopology.Singular +end +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits -open CategoryTheory.Pretriangulated +open _root_.CategoryTheory Limits +open _root_.CategoryTheory.Pretriangulated universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] set_option backward.isDefEq.respectTransparency false in /-- A degreewise splitting of the dual singular-chain sequence of a pair. -/ def relativeDualCochainShortComplexNatDegreewiseSplitting (X : TopPair.{u}) (n : ℕ) : - ((relativeDualCochainShortComplexNat R X).map + ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).map (HomologicalComplex.eval (ModuleCat.{u} R) (ComplexShape.up ℕ) n)).Splitting := by -- Split the chain sequence in degree `n`, then dualise the splitting. have hT := ((HomologicalComplex.shortExact_iff_degreewise_shortExact - (relativeChainShortComplex R X)).mp (relativeChainShortComplex_shortExact R X)) n - let sm := (relativeChainMap_isSplitMono R X n).exists_splitMono.some - exact (ShortComplex.Splitting.ofExactOfRetraction _ hT.exact sm.retraction sm.id - hT.epi_g).linearDual + (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeChainShortComplex R X)).mp (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeChainShortComplex_shortExact R X)) n + let sm := (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeChainMap_isSplitMono R X n).exists_splitMono.some + exact (_root_.OAI.Algebra.Homology.LinearDualHomotopy.CategoryTheory.ShortComplex.Splitting.linearDual (ShortComplex.Splitting.ofExactOfRetraction _ hT.exact sm.retraction sm.id + hT.epi_g)) /-- Dualizing the singular-chain sequence of a pair gives a short exact sequence of nonnegative cochain complexes. -/ -private lemma relativeDualCochainShortComplexNat_shortExact (X : TopPair.{u}) : - (relativeDualCochainShortComplexNat R X).ShortExact := by +lemma relativeDualCochainShortComplexNat_shortExact (X : TopPair.{u}) : + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).ShortExact := by rw [HomologicalComplex.shortExact_iff_degreewise_shortExact] exact fun n => (relativeDualCochainShortComplexNatDegreewiseSplitting R X n).shortExact /-- The integer-indexed dual cochain sequence of a pair is short exact. -/ lemma relativeDualCochainShortComplexInt_shortExact (X : TopPair.{u}) : - (relativeDualCochainShortComplexInt R X).ShortExact := by + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt R X).ShortExact := by rw [HomologicalComplex.shortExact_iff_degreewise_shortExact] intro z by_cases hz : 0 ≤ z · have hn : ((z.toNat : ℕ) : ℤ) = z := Int.toNat_of_nonneg hz let e : - (relativeDualCochainShortComplexNat R X).map + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).map (HomologicalComplex.eval (ModuleCat.{u} R) (ComplexShape.up ℕ) z.toNat) ≅ - (relativeDualCochainShortComplexInt R X).map + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt R X).map (HomologicalComplex.eval (ModuleCat.{u} R) ℤᵘᵖ z) := by simpa only [hn] using (relativeDualCochainShortComplexIntEvalIso R X z.toNat).symm exact ShortComplex.shortExact_of_iso e (((HomologicalComplex.shortExact_iff_degreewise_shortExact - (relativeDualCochainShortComplexNat R X)).mp + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X)).mp (relativeDualCochainShortComplexNat_shortExact R X)) z.toNat) · have hi : ∀ n : ℕ, ComplexShape.embeddingUpNat.f n ≠ z := by intro n hn apply hz rw [← hn] exact Int.natCast_nonneg n - let S := (relativeDualCochainShortComplexInt R X).map + let S := (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt R X).map (HomologicalComplex.eval (ModuleCat.{u} R) ℤᵘᵖ z) have h₁ : IsZero S.X₁ := by - dsimp [S, relativeDualCochainShortComplexInt] - exact (relativeDualCochainShortComplexNat R X).X₁.isZero_extend_X + dsimp [S, _root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt] + exact (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).X₁.isZero_extend_X ComplexShape.embeddingUpNat z hi have h₂ : IsZero S.X₂ := by - dsimp [S, relativeDualCochainShortComplexInt] - exact (relativeDualCochainShortComplexNat R X).X₂.isZero_extend_X + dsimp [S, _root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt] + exact (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).X₂.isZero_extend_X ComplexShape.embeddingUpNat z hi have h₃ : IsZero S.X₃ := by - dsimp [S, relativeDualCochainShortComplexInt] - exact (relativeDualCochainShortComplexNat R X).X₃.isZero_extend_X + dsimp [S, _root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt] + exact (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X).X₃.isZero_extend_X ComplexShape.embeddingUpNat z hi exact ShortComplex.Splitting.shortExact { r := 0 @@ -161,6 +167,9 @@ lemma relativeDualCochainShortComplexInt_shortExact (X : TopPair.{u}) : s_g := h₃.eq_of_tgt _ _ id := h₂.eq_of_src _ _ } -end AlgebraicTopology.Singular +end +end end + +end OAI.AlgebraicTopology.Singular.RelativeCochainG diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativeCochainConeNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativeCochainConeNaturality.lean index 386edfe390..c670edffab 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativeCochainConeNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativeCochainConeNaturality.lean @@ -1,10 +1,13 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Singular.RelativeCochainConeNaturality +import HodgeConjecture.Definitions.AlgebraicTopology.Singular.RelativeCochainConeNaturality + +namespace OAI.AlgebraicTopology.Singular.RelativeCochainIntMap /-! # Canonical natural relative-cochain cone comparison @@ -15,13 +18,14 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits +open _root_.CategoryTheory _root_.CategoryTheory.Limits universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] @@ -32,32 +36,32 @@ Pullback of singular cochains gives this map from the sequence `C^•(Y,B;R) → C^•(B;R)` to the corresponding sequence for `(X,A)`. Relative cochains are the `R`-linear duals of the quotient chain complexes, and the complexes are indexed by nonnegative integers. -/ def relativeDualCochainShortComplexNatMap {X Y : TopPair.{u}} (f : X ⟶ Y) : - relativeDualCochainShortComplexNat R Y ⟶ relativeDualCochainShortComplexNat R X where - τ₁ := HomologicalComplex.linearDualMap ((relativeChainFunctor R).map f) - τ₂ := HomologicalComplex.linearDualMap ((chainPairFunctor R).map f).right - τ₃ := HomologicalComplex.linearDualMap ((chainPairFunctor R).map f).left + _root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R Y ⟶ _root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexNat R X where + τ₁ := _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).map f) + τ₂ := _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).map f).right + τ₃ := _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).map f).left comm₁₂ := by - change HomologicalComplex.linearDualMap ((relativeChainFunctor R).map f) ≫ - HomologicalComplex.linearDualMap (relativeChainProjection R X) = - HomologicalComplex.linearDualMap (relativeChainProjection R Y) ≫ - HomologicalComplex.linearDualMap ((chainPairFunctor R).map f).right - rw [← HomologicalComplex.linearDualMap_comp, ← HomologicalComplex.linearDualMap_comp] - exact congrArg HomologicalComplex.linearDualMap - ((coker.π (C := ChainCategory R)).naturality ((chainPairFunctor R).map f)).symm + change _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).map f) ≫ + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X) = + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y) ≫ + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).map f).right + rw [← _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap_comp, ← _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap_comp] + exact congrArg _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap + ((coker.π (C := _root_.OAI.AlgebraicTopology.Singular.Cohomology.ChainCategory R)).naturality ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).map f)).symm comm₂₃ := by - change HomologicalComplex.linearDualMap ((chainPairFunctor R).map f).right ≫ - HomologicalComplex.linearDualMap ((chainPairFunctor R).obj X).hom = - HomologicalComplex.linearDualMap ((chainPairFunctor R).obj Y).hom ≫ - HomologicalComplex.linearDualMap ((chainPairFunctor R).map f).left - rw [← HomologicalComplex.linearDualMap_comp, ← HomologicalComplex.linearDualMap_comp] - exact congrArg HomologicalComplex.linearDualMap ((chainPairFunctor R).map f).w.symm + change _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).map f).right ≫ + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).hom = + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj Y).hom ≫ + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).map f).left + rw [← _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap_comp, ← _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap_comp] + exact congrArg _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).map f).w.symm /-- Let `R` be a commutative ring and `f : (X,A) → (Y,B)` a continuous map of topological pairs. This is the pullback map between the sequences `C^•(Y,B;R) → C^•(Y;R) → C^•(B;R)` and `C^•(X,A;R) → C^•(X;R) → C^•(A;R)`, after extending all singular cochain complexes by zero to negative degrees. -/ def relativeDualCochainShortComplexIntMap {X Y : TopPair.{u}} (f : X ⟶ Y) : - relativeDualCochainShortComplexInt R Y ⟶ relativeDualCochainShortComplexInt R X := + _root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt R Y ⟶ _root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt R X := ((ComplexShape.embeddingUpNat.extendFunctor (ModuleCat R)).mapShortComplex).map (relativeDualCochainShortComplexNatMap R f) @@ -66,24 +70,26 @@ This cochain map `Cone(C^•(Y;R) → C^•(B;R)) → Cone(C^•(X;R) → C^•( on the ambient spaces and subspaces. The complexes are extended by zero to negative degrees before forming the cones. -/ def relativeCochainConeMap {X Y : TopPair.{u}} (f : X ⟶ Y) : - CochainComplex.mappingCone (relativeCochainRestrictionInt R Y) ⟶ - CochainComplex.mappingCone (relativeCochainRestrictionInt R X) := + CochainComplex.mappingCone (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R Y) ⟶ + CochainComplex.mappingCone (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R X) := CochainComplex.mappingCone.map _ _ (relativeDualCochainShortComplexIntMap R f).τ₂ (relativeDualCochainShortComplexIntMap R f).τ₃ (relativeDualCochainShortComplexIntMap R f).comm₂₃.symm -end AlgebraicTopology.Singular +end +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits +open _root_.CategoryTheory _root_.CategoryTheory.Limits universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] @@ -93,25 +99,25 @@ set_option backward.isDefEq.respectTransparency false in @[reassoc] lemma relativeDualCochainHomologyIsoCone_naturality {X Y : TopPair.{u}} (f : X ⟶ Y) (n : ℕ) : HomologicalComplex.homologyMap (relativeDualCochainShortComplexIntMap R f).τ₁ n ≫ - (relativeDualCochainHomologyIsoCone R X n).hom = - (relativeDualCochainHomologyIsoCone R Y n).hom ≫ + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainHomologyIsoCone R X n).hom = + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainHomologyIsoCone R Y n).hom ≫ HomologicalComplex.homologyMap (relativeCochainConeMap R f) ((n : ℤ) - 1) := - CochainComplex.mappingCocone.shortExactHomologyIsoCone_naturality + _root_.OAI.Algebra.Homology.DerivedCategoryConeNaturality.CochainComplex.mappingCocone.shortExactHomologyIsoCone_naturality (relativeDualCochainShortComplexIntMap R f) - (relativeDualCochainShortComplexInt_shortExact R Y) - (relativeDualCochainShortComplexInt_shortExact R X) ((n : ℤ) - 1) n (by omega) + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainG.relativeDualCochainShortComplexInt_shortExact R Y) + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainG.relativeDualCochainShortComplexInt_shortExact R X) ((n : ℤ) - 1) n (by omega) set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in /-- Integer extension and universal coefficients preserve the relative pullback map. -/ lemma relativeDualCochainCohomologyEquiv_naturality {X Y : TopPair.{u}} (f : X ⟶ Y) (n : ℕ) - (a : (relativeDualCochainShortComplexInt R Y).X₁.homology (n : ℤ)) : - relativeDualCochainCohomologyEquiv R X n + (a : (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeDualCochainShortComplexInt R Y).X₁.homology (n : ℤ)) : + _root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainCohomologyEquiv R X n (HomologicalComplex.homologyMap (relativeDualCochainShortComplexIntMap R f).τ₁ n a) = - relativeCohomologyMap R n f (relativeDualCochainCohomologyEquiv R Y n a) := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap R n f (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainCohomologyEquiv R Y n a) := ConcreteCategory.congr_hom (HomologicalComplex.extendHomologyIso_hom_naturality - (HomologicalComplex.linearDualMap ((relativeChainFunctor R).map f)) + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).map f)) ComplexShape.embeddingUpNat (j := n) (j' := (n : ℤ)) rfl) a set_option backward.defeqAttrib.useBackward true in @@ -120,30 +126,35 @@ set_option backward.isDefEq.respectTransparency false in pairs with the relative cohomology pullback. -/ lemma relativeCochainConeCohomologyEquivCanonical_naturality {X Y : TopPair.{u}} (f : X ⟶ Y) (n : ℕ) - (a : (CochainComplex.mappingCone (relativeCochainRestrictionInt R Y)).homology + (a : (CochainComplex.mappingCone (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R Y)).homology ((n : ℤ) - 1)) : - relativeCochainConeCohomologyEquivCanonical R X n + _root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeCochainConeCohomologyEquivCanonical R X n (HomologicalComplex.homologyMap (relativeCochainConeMap R f) ((n : ℤ) - 1) a) = - relativeCohomologyMap R n f (relativeCochainConeCohomologyEquivCanonical R Y n a) := by - obtain ⟨b, rfl⟩ := (relativeDualCochainHomologyIsoCone R Y n).toLinearEquiv.surjective a - change relativeCochainConeCohomologyEquivCanonical R X n + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap R n f (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeCochainConeCohomologyEquivCanonical R Y n a) := by + obtain ⟨b, rfl⟩ := (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainHomologyIsoCone R Y n).toLinearEquiv.surjective a + change _root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeCochainConeCohomologyEquivCanonical R X n (HomologicalComplex.homologyMap (relativeCochainConeMap R f) ((n : ℤ) - 1) - ((relativeDualCochainHomologyIsoCone R Y n).hom b)) = - relativeCohomologyMap R n f (relativeCochainConeCohomologyEquivCanonical R Y n - ((relativeDualCochainHomologyIsoCone R Y n).hom b)) + ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainHomologyIsoCone R Y n).hom b)) = + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap R n f (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeCochainConeCohomologyEquivCanonical R Y n + ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainHomologyIsoCone R Y n).hom b)) have h := ConcreteCategory.congr_hom (relativeDualCochainHomologyIsoCone_naturality R f n) b - change (relativeDualCochainHomologyIsoCone R X n).hom + change (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainHomologyIsoCone R X n).hom (HomologicalComplex.homologyMap (relativeDualCochainShortComplexIntMap R f).τ₁ n b) = HomologicalComplex.homologyMap (relativeCochainConeMap R f) ((n : ℤ) - 1) - ((relativeDualCochainHomologyIsoCone R Y n).hom b) at h + ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainHomologyIsoCone R Y n).hom b) at h rw [← h] - change relativeDualCochainCohomologyEquiv R X n - ((relativeDualCochainHomologyIsoCone R X n).toLinearEquiv.symm - ((relativeDualCochainHomologyIsoCone R X n).toLinearEquiv _)) = - relativeCohomologyMap R n f (relativeDualCochainCohomologyEquiv R Y n - ((relativeDualCochainHomologyIsoCone R Y n).toLinearEquiv.symm - ((relativeDualCochainHomologyIsoCone R Y n).toLinearEquiv b))) + change _root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainCohomologyEquiv R X n + ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainHomologyIsoCone R X n).toLinearEquiv.symm + ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainHomologyIsoCone R X n).toLinearEquiv _)) = + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap R n f (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainCohomologyEquiv R Y n + ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainHomologyIsoCone R Y n).toLinearEquiv.symm + ((_root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeDualCochainHomologyIsoCone R Y n).toLinearEquiv b))) simp only [LinearEquiv.symm_apply_apply] exact relativeDualCochainCohomologyEquiv_naturality R f n b -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.RelativeCochainIntMap diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativeHomotopyInvariance.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativeHomotopyInvariance.lean index e12b8b8236..22d26327ce 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativeHomotopyInvariance.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativeHomotopyInvariance.lean @@ -12,11 +12,22 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Cohomology -public import Mathlib.AlgebraicTopology.SingularHomology.HomotopyInvariance +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Cohomology +import Mathlib.AlgebraicTopology.SingularHomology.HomotopyInvariance + +namespace OAI.AlgebraicTopology.Singular.RelativeHomotopyInvariance + +open _root_.CategoryTheory +open _root_.CategoryTheory.SimplicialObject +open _root_.CategoryTheory.SimplicialObject.Homotopy +open _root_.TopCat +open _root_.TopCat.Homotopy +open _root_.TopPair +open _root_.TopPair.Homotopy /-! # Homotopy invariance of relative singular homology @@ -27,15 +38,19 @@ topological pairs descends from the usual singular prism operator to this cokern homotopic maps of pairs induce the same map on relative singular homology. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits AlgebraicTopology -open AlgebraicTopology.Singular MonoidalCategory +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.AlgebraicTopology +open _root_.OAI.AlgebraicTopology.Singular MonoidalCategory open scoped Simplicial universe u v w -namespace TopCat.Homotopy +namespace TopCat +open _root_.TopCat +namespace Homotopy +open _root_.TopCat +open _root_.TopCat.Homotopy variable {X X' Y Y' : TopCat.{u}} variable {f g : X ⟶ Y} {f' g' : X' ⟶ Y'} @@ -65,9 +80,18 @@ lemma toSimplicialObjectHomotopy_h_naturality Functor.LaxMonoidal.μ_natural_left_assoc, ← Functor.map_comp, hw] exact ConcreteCategory.congr_hom (congr_app hmap _) _ -end TopCat.Homotopy +end Homotopy +end TopCat -namespace CategoryTheory.SimplicialObject.Homotopy +namespace CategoryTheory +open _root_.CategoryTheory +namespace SimplicialObject +open _root_.CategoryTheory +open _root_.CategoryTheory.SimplicialObject +namespace Homotopy +open _root_.CategoryTheory +open _root_.CategoryTheory.SimplicialObject +open _root_.CategoryTheory.SimplicialObject.Homotopy variable {C : Type u} [Category.{v} C] [Preadditive C] variable {X X' Y Y' : SimplicialObject C} @@ -95,9 +119,15 @@ lemma chainHomotopy_hom_naturality rw [hw k] · simp -end CategoryTheory.SimplicialObject.Homotopy +end Homotopy +end SimplicialObject +end CategoryTheory -namespace TopCat.Homotopy +namespace TopCat +open _root_.TopCat +namespace Homotopy +open _root_.TopCat +open _root_.TopCat.Homotopy variable {C : Type u} [Category.{v} C] [Preadditive C] [HasCoproducts C] variable {X X' Y Y' : TopCat.{w}} @@ -113,7 +143,7 @@ lemma singularChainHomotopy_hom_naturality (H.singularChainComplexFunctorObjMap R).hom i j = (H'.singularChainComplexFunctorObjMap R).hom i j ≫ (((singularChainComplexFunctor C).obj R).map b).f j := by - apply CategoryTheory.SimplicialObject.Homotopy.chainHomotopy_hom_naturality + apply _root_.OAI.AlgebraicTopology.Singular.RelativeHomotopyInvariance.CategoryTheory.SimplicialObject.Homotopy.chainHomotopy_hom_naturality intro n k change (sigmaConst.obj R).map ((TopCat.toSSet.map a).app _) ≫ (sigmaConst.obj R).map (H.toSSet.toSimplicialObjectHomotopy.h k) = @@ -124,9 +154,14 @@ lemma singularChainHomotopy_hom_naturality congrArg (fun z ↦ (sigmaConst.obj R).map z) (toSimplicialObjectHomotopy_h_naturality H H' a b hw k) -end TopCat.Homotopy +end Homotopy +end TopCat -namespace TopPair.Homotopy +namespace TopPair +open _root_.TopPair +namespace Homotopy +open _root_.TopPair +open _root_.TopPair.Homotopy variable {R : Type u} [CommRing R] variable {X Y : TopPair.{u}} {f g : X ⟶ Y} @@ -134,37 +169,37 @@ variable {X Y : TopPair.{u}} {f g : X ⟶ Y} /-- The component of the relative-chain projection in each degree is a cokernel. -/ noncomputable def relativeChainProjectionComponentIsCokernel (X : TopPair.{u}) (i : ℕ) : IsColimit (CokernelCofork.ofπ - (f := ((chainPairFunctor R).obj X).hom.f i) - ((relativeChainProjection R X).f i) (by + (f := ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).hom.f i) + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X).f i) (by have h := congrArg (fun q ↦ q.f i) - (subspaceChainMap_relativeChainProjection R X) - change ((chainPairFunctor R).obj X).hom.f i ≫ - (relativeChainProjection R X).f i = 0 at h + (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.subspaceChainMap_relativeChainProjection R X) + change ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).hom.f i ≫ + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X).f i = 0 at h exact h)) := CokernelCofork.mapIsColimit _ - (cokernelIsCokernel ((chainPairFunctor R).obj X).hom) + (cokernelIsCokernel ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).obj X).hom) (HomologicalComplex.eval (ModuleCat R) (ComplexShape.down ℕ) i) /-- A component of the ordinary singular prism, descended to relative chains. -/ noncomputable def relativeChainHomotopyComponent (H : TopPair.Homotopy f g) (i j : ℕ) : - ((relativeChainFunctor R).obj X).X i ⟶ - ((relativeChainFunctor R).obj Y).X j := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).obj X).X i ⟶ + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).obj Y).X j := (relativeChainProjectionComponentIsCokernel (R := R) X i).desc (CokernelCofork.ofπ ((H.fst.singularChainComplexFunctorObjMap (ModuleCat.of R R)).hom i j ≫ - (relativeChainProjection R Y).f j) (by + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y).f j) (by change ((((singularChainComplexFunctor (ModuleCat.{u} R)).obj (ModuleCat.of R R)).map X.map).f i ≫ (H.fst.singularChainComplexFunctorObjMap (ModuleCat.of R R)).hom i j) ≫ - (relativeChainProjection R Y).f j = 0 - rw [TopCat.Homotopy.singularChainHomotopy_hom_naturality + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y).f j = 0 + rw [_root_.OAI.AlgebraicTopology.Singular.RelativeHomotopyInvariance.TopCat.Homotopy.singularChainHomotopy_hom_naturality H.fst H.snd X.map Y.map H.w (ModuleCat.of R R) i j, Category.assoc] have hz : ((((singularChainComplexFunctor (ModuleCat.{u} R)).obj (ModuleCat.of R R)).map Y.map).f j ≫ - (relativeChainProjection R Y).f j) = 0 := - congrArg (fun q ↦ q.f j) (subspaceChainMap_relativeChainProjection R Y) + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y).f j) = 0 := + congrArg (fun q ↦ q.f j) (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.subspaceChainMap_relativeChainProjection R Y) rw [hz, comp_zero])) set_option backward.isDefEq.respectTransparency false in @@ -182,75 +217,75 @@ set_option backward.isDefEq.respectTransparency false in @[reassoc] lemma relativeChainHomotopyComponent_fac (H : TopPair.Homotopy f g) (i j : ℕ) : - (relativeChainProjection R X).f i ≫ + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X).f i ≫ relativeChainHomotopyComponent (R := R) H i j = (H.fst.singularChainComplexFunctorObjMap (ModuleCat.of R R)).hom i j ≫ - (relativeChainProjection R Y).f j := by + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y).f j := by exact (Cofork.IsColimit.π_desc (relativeChainProjectionComponentIsCokernel (R := R) X i) (t := CokernelCofork.ofπ ((H.fst.singularChainComplexFunctorObjMap (ModuleCat.of R R)).hom i j ≫ - (relativeChainProjection R Y).f j) _)).trans + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y).f j) _)).trans (CokernelCofork.π_ofπ _ _ _) @[reassoc] lemma relativeChainProjection_naturality (a : X ⟶ Y) : - relativeChainProjection R X ≫ (relativeChainFunctor R).map a = + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X ≫ (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).map a = ((singularChainComplexFunctor (ModuleCat.{u} R)).obj - (ModuleCat.of R R)).map (TopPair.Hom.fst a) ≫ relativeChainProjection R Y := by - exact ((coker.π (C := ChainCategory R)).naturality - ((chainPairFunctor R).map a)).symm + (ModuleCat.of R R)).map (TopPair.Hom.fst a) ≫ _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y := by + exact ((coker.π (C := _root_.OAI.AlgebraicTopology.Singular.Cohomology.ChainCategory R)).naturality + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor R).map a)).symm lemma relativeChainHomotopy_dNext_fac (H : TopPair.Homotopy f g) (i : ℕ) : - (relativeChainProjection R X).f i ≫ + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X).f i ≫ dNext i (relativeChainHomotopyComponent (R := R) H) = dNext i (H.fst.singularChainComplexFunctorObjMap (ModuleCat.of R R)).hom ≫ - (relativeChainProjection R Y).f i := by + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y).f i := by calc _ = dNext i (fun p q ↦ - (relativeChainProjection R X).f p ≫ + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X).f p ≫ relativeChainHomotopyComponent (R := R) H p q) := - (dNext_comp_left (relativeChainProjection R X) + (dNext_comp_left (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X) (relativeChainHomotopyComponent (R := R) H) i).symm _ = dNext i (fun p q ↦ (H.fst.singularChainComplexFunctorObjMap (ModuleCat.of R R)).hom p q ≫ - (relativeChainProjection R Y).f q) := by + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y).f q) := by congr 1 funext p q exact relativeChainHomotopyComponent_fac H p q _ = _ := dNext_comp_right (H.fst.singularChainComplexFunctorObjMap (ModuleCat.of R R)).hom - (relativeChainProjection R Y) i + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y) i lemma relativeChainHomotopy_prevD_fac (H : TopPair.Homotopy f g) (i : ℕ) : - (relativeChainProjection R X).f i ≫ + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X).f i ≫ prevD i (relativeChainHomotopyComponent (R := R) H) = prevD i (H.fst.singularChainComplexFunctorObjMap (ModuleCat.of R R)).hom ≫ - (relativeChainProjection R Y).f i := by + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y).f i := by calc _ = prevD i (fun p q ↦ - (relativeChainProjection R X).f p ≫ + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X).f p ≫ relativeChainHomotopyComponent (R := R) H p q) := - (prevD_comp_left (relativeChainProjection R X) + (prevD_comp_left (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X) (relativeChainHomotopyComponent (R := R) H) i).symm _ = prevD i (fun p q ↦ (H.fst.singularChainComplexFunctorObjMap (ModuleCat.of R R)).hom p q ≫ - (relativeChainProjection R Y).f q) := by + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y).f q) := by congr 1 funext p q exact relativeChainHomotopyComponent_fac H p q _ = _ := prevD_comp_right (H.fst.singularChainComplexFunctorObjMap (ModuleCat.of R R)).hom - (relativeChainProjection R Y) i + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y) i set_option backward.isDefEq.respectTransparency false in /-- A homotopy of maps of topological pairs induces a chain homotopy on relative singular chains. -/ noncomputable def relativeChainHomotopy (H : TopPair.Homotopy f g) : - _root_.Homotopy ((relativeChainFunctor R).map f) - ((relativeChainFunctor R).map g) where + _root_.Homotopy ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).map f) + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).map g) where hom := relativeChainHomotopyComponent (R := R) H zero := relativeChainHomotopyComponent_zero H comm i := by @@ -263,30 +298,35 @@ noncomputable def relativeChainHomotopy (H : TopPair.Homotopy f g) : (relativeChainProjection_naturality (R := R) f) have hg := congrArg (fun q ↦ q.f i) (relativeChainProjection_naturality (R := R) g) - change (relativeChainProjection R X).f i ≫ - ((relativeChainFunctor R).map f).f i = + change (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X).f i ≫ + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).map f).f i = (((singularChainComplexFunctor (ModuleCat.{u} R)).obj (ModuleCat.of R R)).map (TopPair.Hom.fst f)).f i ≫ - (relativeChainProjection R Y).f i at hf - change (relativeChainProjection R X).f i ≫ - ((relativeChainFunctor R).map g).f i = + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y).f i at hf + change (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R X).f i ≫ + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).map g).f i = (((singularChainComplexFunctor (ModuleCat.{u} R)).obj (ModuleCat.of R R)).map (TopPair.Hom.fst g)).f i ≫ - (relativeChainProjection R Y).f i at hg + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection R Y).f i at hg rw [hf, hg, (H.fst.singularChainComplexFunctorObjMap (ModuleCat.of R R)).comm i, Preadditive.add_comp, Preadditive.add_comp] /-- Homotopic maps of topological pairs induce equal maps on relative singular homology. -/ theorem congr_relativeHomologyMap (H : TopPair.Homotopy f g) (n : ℕ) : - relativeHomologyMap R n f = relativeHomologyMap R n g := by + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap R n f = _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap R n g := by exact congrArg ModuleCat.Hom.hom ((relativeChainHomotopy (R := R) H).homologyMap_eq n) /-- Homotopic maps of pairs send each relative homology class to the same class. -/ theorem relativeHomologyMap_apply_eq (H : TopPair.Homotopy f g) (n : ℕ) - (z : RelativeHomology R X n) : - relativeHomologyMap R n f z = relativeHomologyMap R n g z := by + (z : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology R X n) : + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap R n f z = _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap R n g z := by rw [congr_relativeHomologyMap H n] -end TopPair.Homotopy +end Homotopy +end TopPair + +end + +end OAI.AlgebraicTopology.Singular.RelativeHomotopyInvariance diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativePairExcision.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativePairExcision.lean index 80905c5fc5..3d3164779a 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativePairExcision.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/RelativePairExcision.lean @@ -12,16 +12,19 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalClass -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.Field -public import Mathlib.Algebra.Homology.HomologicalComplexAbelian -public import Mathlib.Algebra.Homology.QuasiIso +import HodgeConjecture.Lemmas.AlgebraicTopology.LocalHomology.ChartFundamentalClass +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.Field +import Mathlib.Algebra.Homology.HomologicalComplexAbelian +import Mathlib.Algebra.Homology.QuasiIso import Mathlib.Algebra.Homology.HomologySequenceLemmas +namespace OAI.AlgebraicTopology.Singular.RelativePairExcision + /-! # Relative excision for an open neighborhood of a point @@ -35,12 +38,13 @@ The proof uses the already established affine-subdivision small-chain theorem fo cover `U, X ∖ {x}`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits Simplicial Set +open _root_.CategoryTheory _root_.CategoryTheory.Limits Simplicial Set open scoped Simplicial -namespace AlgebraicTopology.Singular +section +section variable {X : Type} [TopologicalSpace X] [T1Space X] @@ -51,7 +55,7 @@ abbrev neighborhoodPointComplementPair (U : Set X) (x : X) : TopPair := /-- The inclusion from a neighborhood point-complement pair into the ambient point-complement pair. -/ def neighborhoodPointComplementPairMap (U : Set X) (x : X) : - neighborhoodPointComplementPair U x ⟶ pointComplementPair x := + neighborhoodPointComplementPair U x ⟶ _root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x := TopPair.ofHom (TopCat.ofHom ⟨Subtype.val, continuous_subtype_val⟩) (TopCat.ofHom ⟨fun u ↦ ⟨u.1.1, u.2⟩, @@ -82,33 +86,33 @@ lemma pointExcisionCover_iUnion (U : Set X) (x : X) (hx : x ∈ U) : /-- Rational chains on the small singular subcomplex for the point-excision cover. -/ abbrev PointExcisionSmallChainComplex (U : Set X) (x : X) : ChainComplex (ModuleCat ℚ) ℕ := - CoverSmallRationalSingularChainComplex (TopCat.of X) (pointExcisionCover U x) + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.CoverSmallRationalSingularChainComplex (TopCat.of X) (pointExcisionCover U x) /-- The inclusion of the point complement into the ambient space, with its codomain fixed explicitly to avoid transports between definitionally equal presentations of the subspace. -/ def pointComplementAmbientInclusion (x : X) : - (pointComplementPair x).snd ⟶ TopCat.of X := + (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd ⟶ TopCat.of X := TopCat.ofHom ⟨fun y ↦ y.1, continuous_subtype_val⟩ /-- The identity-on-points map from the point complement to the `false` member of the point-excision cover. -/ def pointComplementToFalseCoverMember (U : Set X) (x : X) : - (pointComplementPair x).snd ⟶ TopCat.of (pointExcisionCover U x false) := + (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd ⟶ TopCat.of (pointExcisionCover U x false) := TopCat.ofHom ⟨Set.codRestrict (pointComplementAmbientInclusion x) (pointExcisionCover U x false) (fun y ↦ by change y.1 ≠ x; exact y.2), (pointComplementAmbientInclusion x).hom.continuous.codRestrict _⟩ /-- The chain map from the point complement into the small chains. -/ def pointComplementToExcisionSmallSingularSet (U : Set X) (x : X) : - TopCat.toSSet.obj (pointComplementPair x).snd ⟶ - coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) := + TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd ⟶ + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) := SSet.Subcomplex.lift (TopCat.toSSet.map (pointComplementAmbientInclusion x)) (by intro n z hz - rw [mem_coverSmallSingularSubcomplex_iff] + rw [_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.mem_coverSmallSingularSubcomplex_iff] refine ⟨false, ?_⟩ change z ∈ Set.range ((TopCat.toSSet.map - (topologicalSubsetInclusion (TopCat.of X) (pointExcisionCover U x false))).app n) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (TopCat.of X) (pointExcisionCover U x false))).app n) obtain ⟨a, rfl⟩ := hz refine ⟨(TopCat.toSSet.map (pointComplementToFalseCoverMember U x)).app n a, ?_⟩ apply ((TopCat.of X).toSSetObjEquiv n).injective @@ -120,11 +124,11 @@ omit [T1Space X] in lemma pointComplementToExcisionSmallSingularSet_comp_inclusion (U : Set X) (x : X) : pointComplementToExcisionSmallSingularSet U x ≫ - (coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x)).ι = + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x)).ι = TopCat.toSSet.map (pointComplementAmbientInclusion x) := rfl def pointComplementToExcisionSmallChains (U : Set X) (x : X) : - (TopCat.toSSet.obj (pointComplementPair x).snd).chainComplex + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd).chainComplex (ModuleCat.of ℚ ℚ) ⟶ PointExcisionSmallChainComplex U x := SSet.chainComplexMap @@ -133,49 +137,49 @@ def pointComplementToExcisionSmallChains (U : Set X) (x : X) : /-- The arrow whose cokernel is the small relative chain complex for point excision. -/ def pointExcisionSmallChainArrow (U : Set X) (x : X) : - Arrow (ChainCategory ℚ) := + Arrow (_root_.OAI.AlgebraicTopology.Singular.Cohomology.ChainCategory ℚ) := Arrow.mk (pointComplementToExcisionSmallChains U x) /-- The relative quotient of point-excision-small chains by chains avoiding the point. -/ abbrev PointExcisionSmallRelativeChainComplex (U : Set X) (x : X) : - ChainCategory ℚ := - (Limits.coker (C := ChainCategory ℚ)).obj (pointExcisionSmallChainArrow U x) + _root_.OAI.AlgebraicTopology.Singular.Cohomology.ChainCategory ℚ := + (Limits.coker (C := _root_.OAI.AlgebraicTopology.Singular.Cohomology.ChainCategory ℚ)).obj (pointExcisionSmallChainArrow U x) /-- A small simplex lies away from `x` when it comes from the point-complement member of the cover. -/ def PointExcisionSmallSimplex.AvoidsPoint (U : Set X) (x : X) {n : ℕ} - (σ : (coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) + (σ : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) _⦋n⦌) : Prop := - ∃ a : (TopCat.toSSet.obj (pointComplementPair x).snd) _⦋n⦌, + ∃ a : (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd) _⦋n⦌, (TopCat.toSSet.map (pointComplementAmbientInclusion x)).app _ a = σ.1 instance (U : Set X) (x : X) {n : ℕ} - (σ : (coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) + (σ : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) _⦋n⦌) : Decidable (PointExcisionSmallSimplex.AvoidsPoint U x σ) := Classical.propDecidable _ omit [T1Space X] in lemma PointExcisionSmallSimplex.avoidsPoint_face (U : Set X) (x : X) {n : ℕ} - (σ : (coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) + (σ : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) _⦋n + 1⦌) (hσ : PointExcisionSmallSimplex.AvoidsPoint U x σ) (i : Fin (n + 2)) : PointExcisionSmallSimplex.AvoidsPoint U x - ((coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet).δ i σ) := by + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet).δ i σ) := by obtain ⟨a, ha⟩ := hσ - exact ⟨(TopCat.toSSet.obj (pointComplementPair x).snd).δ i a, + exact ⟨(TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd).δ i a, congrArg (fun z ↦ (TopCat.toSSet.obj (TopCat.of X)).δ i z) ha⟩ omit [T1Space X] in /-- A small simplex which does not avoid `x` comes from the neighborhood member of the cover. -/ lemma PointExcisionSmallSimplex.exists_neighborhoodPreimage (U : Set X) (x : X) {n : ℕ} - (σ : (coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) + (σ : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) _⦋n⦌) (hσ : ¬ PointExcisionSmallSimplex.AvoidsPoint U x σ) : ∃ y : (TopCat.toSSet.obj (TopCat.of U)) _⦋n⦌, - (TopCat.toSSet.map (topologicalSubsetInclusion (TopCat.of X) U)).app _ y = σ.1 := by + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (TopCat.of X) U)).app _ y = σ.1 := by obtain ⟨b, y, hy⟩ := - (mem_coverSmallSingularSubcomplex_iff_exists_preimage + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.mem_coverSmallSingularSubcomplex_iff_exists_preimage (TopCat.of X) (pointExcisionCover U x) σ.1).mp σ.2 cases b with | false => @@ -187,7 +191,7 @@ lemma PointExcisionSmallSimplex.exists_neighborhoodPreimage (U : Set X) (x : X) /-- The chosen neighborhood lift of a small simplex which does not avoid `x`. -/ def PointExcisionSmallSimplex.neighborhoodPreimage (U : Set X) (x : X) {n : ℕ} - (σ : (coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) + (σ : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) _⦋n⦌) (hσ : ¬ PointExcisionSmallSimplex.AvoidsPoint U x σ) : (TopCat.toSSet.obj (TopCat.of U)) _⦋n⦌ := @@ -195,10 +199,10 @@ def PointExcisionSmallSimplex.neighborhoodPreimage (U : Set X) (x : X) {n : ℕ} omit [T1Space X] in lemma PointExcisionSmallSimplex.neighborhoodPreimage_map (U : Set X) (x : X) {n : ℕ} - (σ : (coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) + (σ : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) _⦋n⦌) (hσ : ¬ PointExcisionSmallSimplex.AvoidsPoint U x σ) : - (TopCat.toSSet.map (topologicalSubsetInclusion (TopCat.of X) U)).app _ + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (TopCat.of X) U)).app _ (PointExcisionSmallSimplex.neighborhoodPreimage U x σ hσ) = σ.1 := Classical.choose_spec (PointExcisionSmallSimplex.exists_neighborhoodPreimage U x σ hσ) @@ -222,21 +226,21 @@ omit [T1Space X] in /-- Equality with a simplex in `X ∖ {x}` shows that a simplex of `U` avoids `x`. -/ lemma neighborhoodSimplex_avoids_of_ambient_eq (U : Set X) (x : X) {n : ℕ} (u : (TopCat.toSSet.obj (TopCat.of U)) _⦋n⦌) - (a : (TopCat.toSSet.obj (pointComplementPair x).snd) _⦋n⦌) - (h : (TopCat.toSSet.map (topologicalSubsetInclusion (TopCat.of X) U)).app _ u = + (a : (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd) _⦋n⦌) + (h : (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (TopCat.of X) U)).app _ u = (TopCat.toSSet.map (pointComplementAmbientInclusion x)).app _ a) : ∀ t, (((TopCat.of U).toSSetObjEquiv _ u) t).1 ≠ x := by intro t hut have ht := congrArg (fun z ↦ ((TopCat.of X).toSSetObjEquiv _ z) t) h change (((TopCat.of U).toSSetObjEquiv _ u) t).1 = - (((pointComplementPair x).snd.toSSetObjEquiv _ a) t).1 at ht - exact (((pointComplementPair x).snd.toSSetObjEquiv _ a) t).2 + (((_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd.toSSetObjEquiv _ a) t).1 at ht + exact (((_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd.toSSetObjEquiv _ a) t).2 (by simpa using ht.symm.trans hut) omit [T1Space X] in lemma neighborhoodInclusion_singular_injective (U : Set X) {n : ℕ} : Function.Injective - ((TopCat.toSSet.map (topologicalSubsetInclusion (TopCat.of X) U)).app + ((TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (TopCat.of X) U)).app (Opposite.op (SimplexCategory.mk n))) := by intro a b h apply ((TopCat.of U).toSSetObjEquiv _).injective @@ -256,36 +260,36 @@ abbrev neighborhoodSubspaceChainMap (U : Set X) (x : X) : chain complex exposed as its source. -/ abbrev neighborhoodRelativeProjection (U : Set X) (x : X) : (TopCat.toSSet.obj (TopCat.of U)).chainComplex (ModuleCat.of ℚ ℚ) ⟶ - (relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x) := - relativeChainProjection ℚ (neighborhoodPointComplementPair U x) + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x) := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection ℚ (neighborhoodPointComplementPair U x) def neighborhoodRelativeProjectionComponent (U : Set X) (x : X) (n : ℕ) : ((TopCat.toSSet.obj (TopCat.of U)).chainComplex (ModuleCat.of ℚ ℚ)).X n ⟶ - (relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x) |>.X n := + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x) |>.X n := (neighborhoodRelativeProjection U x).f n omit [T1Space X] in lemma neighborhoodRelativeProjectionComponent_comm (U : Set X) (x : X) (n : ℕ) : neighborhoodRelativeProjectionComponent U x (n + 1) ≫ - ((relativeChainFunctor ℚ).obj + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x)).d (n + 1) n = ((TopCat.toSSet.obj (TopCat.of U)).chainComplex (ModuleCat.of ℚ ℚ)).d (n + 1) n ≫ neighborhoodRelativeProjectionComponent U x n := - (relativeChainProjection ℚ (neighborhoodPointComplementPair U x)).comm (n + 1) n + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection ℚ (neighborhoodPointComplementPair U x)).comm (n + 1) n omit [T1Space X] in lemma neighborhoodSubspaceChainMap_comp_relativeProjection (U : Set X) (x : X) : neighborhoodSubspaceChainMap U x ≫ neighborhoodRelativeProjection U x = 0 := - subspaceChainMap_relativeChainProjection ℚ (neighborhoodPointComplementPair U x) + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.subspaceChainMap_relativeChainProjection ℚ (neighborhoodPointComplementPair U x) omit [T1Space X] in lemma neighborhoodSimplex_projection_zero_of_ambient_eq (U : Set X) (x : X) {n : ℕ} (u : (TopCat.toSSet.obj (TopCat.of U)) _⦋n⦌) - (a : (TopCat.toSSet.obj (pointComplementPair x).snd) _⦋n⦌) - (h : (TopCat.toSSet.map (topologicalSubsetInclusion (TopCat.of X) U)).app _ u = + (a : (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd) _⦋n⦌) + (h : (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (TopCat.of X) U)).app _ u = (TopCat.toSSet.map (pointComplementAmbientInclusion x)).app _ a) : (TopCat.toSSet.obj (TopCat.of U)).ιChainComplex u ≫ neighborhoodRelativeProjectionComponent U x n = 0 := by @@ -322,8 +326,8 @@ lemma neighborhoodSimplex_projection_zero_of_ambient_eq neighborhood before projecting to relative chains. -/ def pointExcisionSmallToNeighborhoodRelativeComponent (U : Set X) (x : X) (n : ℕ) : (PointExcisionSmallChainComplex U x).X n ⟶ - ((relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x)).X n := - ((coverSmallSingularSubcomplex (TopCat.of X) + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x)).X n := + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet).isColimitChainComplexXCofan (ModuleCat.of ℚ ℚ) n).desc (Cofan.mk _ fun σ ↦ @@ -336,16 +340,16 @@ omit [T1Space X] in @[reassoc] lemma iota_pointExcisionSmallToNeighborhoodRelativeComponent (U : Set X) (x : X) (n : ℕ) - (σ : (coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) + (σ : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) _⦋n⦌) : - (coverSmallSingularSubcomplex (TopCat.of X) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet).ιChainComplex σ ≫ pointExcisionSmallToNeighborhoodRelativeComponent U x n = if hσ : PointExcisionSmallSimplex.AvoidsPoint U x σ then 0 else (TopCat.toSSet.obj (TopCat.of U)).ιChainComplex (PointExcisionSmallSimplex.neighborhoodPreimage U x σ hσ) ≫ neighborhoodRelativeProjectionComponent U x n := - ((coverSmallSingularSubcomplex (TopCat.of X) + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet).isColimitChainComplexXCofan (ModuleCat.of ℚ ℚ) n).fac _ (Discrete.mk σ) @@ -353,7 +357,7 @@ omit [T1Space X] in lemma pointExcisionSmallToNeighborhoodRelativeComponent_comm (U : Set X) (x : X) (n : ℕ) : pointExcisionSmallToNeighborhoodRelativeComponent U x (n + 1) ≫ - ((relativeChainFunctor ℚ).obj + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x)).d (n + 1) n = (PointExcisionSmallChainComplex U x).d (n + 1) n ≫ pointExcisionSmallToNeighborhoodRelativeComponent U x n := by @@ -380,7 +384,7 @@ lemma pointExcisionSmallToNeighborhoodRelativeComponent_comm rw [Preadditive.zsmul_comp, Preadditive.zsmul_comp] congr 1 by_cases hi : PointExcisionSmallSimplex.AvoidsPoint U x - ((coverSmallSingularSubcomplex (TopCat.of X) + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet).δ i σ) · rw [iota_pointExcisionSmallToNeighborhoodRelativeComponent U x n, dite_eq_left hi] obtain ⟨a, ha⟩ := hi @@ -399,7 +403,7 @@ lemma pointExcisionSmallToNeighborhoodRelativeComponent_comm discarding simplices which avoid the distinguished point. -/ def pointExcisionSmallToNeighborhoodRelativeChainMap (U : Set X) (x : X) : PointExcisionSmallChainComplex U x ⟶ - (relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x) where + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x) where f n := pointExcisionSmallToNeighborhoodRelativeComponent U x n comm' i j hij := by simp only [ComplexShape.down_Rel] at hij @@ -410,7 +414,7 @@ omit [T1Space X] in /-- A simplex entering the small complex through the point-complement cover member is recognized as point-avoiding. -/ lemma pointComplementCoverMember_avoidsPoint (U : Set X) (x : X) {n : ℕ} - (a : (TopCat.toSSet.obj (pointComplementPair x).snd) _⦋n⦌) : + (a : (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd) _⦋n⦌) : PointExcisionSmallSimplex.AvoidsPoint U x ((pointComplementToExcisionSmallSingularSet U x).app _ a) := by refine ⟨a, ?_⟩ @@ -446,7 +450,7 @@ abbrev pointExcisionSmallRelativeProjection (U : Set X) (x : X) : /-- The chain map from the small relative quotient back to neighborhood relative chains. -/ def pointExcisionSmallRelativeToNeighborhoodRelativeChainMap (U : Set X) (x : X) : PointExcisionSmallRelativeChainComplex U x ⟶ - (relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x) := + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x) := cokernel.desc (pointComplementToExcisionSmallChains U x) (pointExcisionSmallToNeighborhoodRelativeChainMap U x) (pointComplementToExcisionSmallChains_comp_smallToNeighborhood U x) @@ -462,7 +466,7 @@ lemma pointExcisionSmallRelativeProjection_comp_toNeighborhood /-- The inclusion from `U ∖ {x}` to `X ∖ {x}`. -/ def neighborhoodPointComplementToPointComplement (U : Set X) (x : X) : - (neighborhoodPointComplementPair U x).snd ⟶ (pointComplementPair x).snd := + (neighborhoodPointComplementPair U x).snd ⟶ (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd := TopCat.ofHom ⟨fun u ↦ ⟨u.1.1, u.2⟩, continuous_subtype_val.comp continuous_subtype_val |>.subtype_mk _⟩ @@ -470,21 +474,21 @@ def neighborhoodPointComplementToPointComplement (U : Set X) (x : X) : point-excision cover. -/ def neighborhoodToTrueCoverMember (U : Set X) (x : X) : TopCat.of U ⟶ TopCat.of (pointExcisionCover U x true) := - TopCat.ofHom ⟨Set.codRestrict (topologicalSubsetInclusion (TopCat.of X) U) + TopCat.ofHom ⟨Set.codRestrict (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (TopCat.of X) U) (pointExcisionCover U x true) (fun y ↦ by change y.1 ∈ U; exact y.2), - (topologicalSubsetInclusion (TopCat.of X) U).hom.continuous.codRestrict _⟩ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (TopCat.of X) U).hom.continuous.codRestrict _⟩ /-- The chain map from neighborhood chains to the point-excision-small chains. -/ def neighborhoodToPointExcisionSmallSingularSet (U : Set X) (x : X) : TopCat.toSSet.obj (TopCat.of U) ⟶ - coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) := + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) := SSet.Subcomplex.lift - (TopCat.toSSet.map (topologicalSubsetInclusion (TopCat.of X) U)) (by + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (TopCat.of X) U)) (by intro n z hz - rw [mem_coverSmallSingularSubcomplex_iff] + rw [_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.mem_coverSmallSingularSubcomplex_iff] refine ⟨true, ?_⟩ change z ∈ Set.range ((TopCat.toSSet.map - (topologicalSubsetInclusion (TopCat.of X) (pointExcisionCover U x true))).app n) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (TopCat.of X) (pointExcisionCover U x true))).app n) obtain ⟨a, rfl⟩ := hz refine ⟨(TopCat.toSSet.map (neighborhoodToTrueCoverMember U x)).app n a, ?_⟩ apply ((TopCat.of X).toSSetObjEquiv n).injective @@ -496,8 +500,8 @@ omit [T1Space X] in lemma neighborhoodToPointExcisionSmallSingularSet_comp_inclusion (U : Set X) (x : X) : neighborhoodToPointExcisionSmallSingularSet U x ≫ - (coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x)).ι = - TopCat.toSSet.map (topologicalSubsetInclusion (TopCat.of X) U) := rfl + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x)).ι = + TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (TopCat.of X) U) := rfl def neighborhoodToPointExcisionSmallChains (U : Set X) (x : X) : (TopCat.toSSet.obj (TopCat.of U)).chainComplex (ModuleCat.of ℚ ℚ) ⟶ @@ -510,7 +514,7 @@ def neighborhoodToPointExcisionSmallChains (U : Set X) (x : X) : def neighborhoodPointComplementToPointComplementChains (U : Set X) (x : X) : (TopCat.toSSet.obj (neighborhoodPointComplementPair U x).snd).chainComplex (ModuleCat.of ℚ ℚ) ⟶ - (TopCat.toSSet.obj (pointComplementPair x).snd).chainComplex (ModuleCat.of ℚ ℚ) := + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd).chainComplex (ModuleCat.of ℚ ℚ) := SSet.chainComplexMap (TopCat.toSSet.map (neighborhoodPointComplementToPointComplement U x)) (ModuleCat.of ℚ ℚ) @@ -543,7 +547,7 @@ lemma neighborhoodPointComplementToSmall_chain_square (U : Set X) (x : X) : /-- The morphism of chain-complex arrows from the neighborhood pair to the small pair. -/ def neighborhoodPairChainsToPointExcisionSmallArrow (U : Set X) (x : X) : - (chainPairFunctor ℚ).obj (neighborhoodPointComplementPair U x) ⟶ + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (neighborhoodPointComplementPair U x) ⟶ pointExcisionSmallChainArrow U x := Arrow.homMk (neighborhoodPointComplementToPointComplementChains U x) @@ -552,9 +556,9 @@ def neighborhoodPairChainsToPointExcisionSmallArrow (U : Set X) (x : X) : /-- Inclusion of the neighborhood pair into the small relative quotient. -/ def neighborhoodRelativeToPointExcisionSmallRelativeChainMap (U : Set X) (x : X) : - (relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x) ⟶ + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x) ⟶ PointExcisionSmallRelativeChainComplex U x := - (Limits.coker (C := ChainCategory ℚ)).map + (Limits.coker (C := _root_.OAI.AlgebraicTopology.Singular.Cohomology.ChainCategory ℚ)).map (neighborhoodPairChainsToPointExcisionSmallArrow U x) omit [T1Space X] in @@ -565,15 +569,15 @@ lemma neighborhoodRelativeProjection_comp_toPointExcisionSmall neighborhoodRelativeToPointExcisionSmallRelativeChainMap U x = neighborhoodToPointExcisionSmallChains U x ≫ pointExcisionSmallRelativeProjection U x := - ((coker.π (C := ChainCategory ℚ)).naturality + ((coker.π (C := _root_.OAI.AlgebraicTopology.Singular.Cohomology.ChainCategory ℚ)).naturality (neighborhoodPairChainsToPointExcisionSmallArrow U x)).symm omit [T1Space X] in lemma pointComplementCoverMember_eq_of_avoidsPoint (U : Set X) (x : X) {n : ℕ} - (σ : (coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) + (σ : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) _⦋n⦌) - (a : (TopCat.toSSet.obj (pointComplementPair x).snd) _⦋n⦌) + (a : (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd) _⦋n⦌) (ha : (TopCat.toSSet.map (pointComplementAmbientInclusion x)).app _ a = σ.1) : (pointComplementToExcisionSmallSingularSet U x).app _ a = σ := by apply Subtype.ext @@ -585,7 +589,7 @@ lemma pointComplementCoverMember_eq_of_avoidsPoint omit [T1Space X] in lemma neighborhoodCoverMember_eq_of_not_avoidsPoint (U : Set X) (x : X) {n : ℕ} - (σ : (coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) + (σ : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x) : SSet) _⦋n⦌) (hσ : ¬ PointExcisionSmallSimplex.AvoidsPoint U x σ) : (neighborhoodToPointExcisionSmallSingularSet U x).app _ @@ -624,7 +628,7 @@ lemma pointExcisionSmallToNeighborhood_comp_toSmallRelative (cokernel.condition (pointComplementToExcisionSmallChains U x)) change (pointComplementToExcisionSmallChains U x).f n ≫ (pointExcisionSmallRelativeProjection U x).f n = 0 at hc - change (TopCat.toSSet.obj (pointComplementPair x).snd).ιChainComplex a ≫ + change (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd).ιChainComplex a ≫ ((pointComplementToExcisionSmallChains U x).f n ≫ (pointExcisionSmallRelativeProjection U x).f n) = 0 rw [hc, comp_zero] @@ -715,11 +719,11 @@ lemma neighborhoodToSmall_comp_pointExcisionSmallRelativeToNeighborhood (U : Set X) (x : X) : neighborhoodRelativeToPointExcisionSmallRelativeChainMap U x ≫ pointExcisionSmallRelativeToNeighborhoodRelativeChainMap U x = - 𝟙 ((relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x)) := by + 𝟙 ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x)) := by let : Epi (neighborhoodRelativeProjection U x) := by change Epi (colimit.ι (parallelPair - ((chainPairFunctor ℚ).obj (neighborhoodPointComplementPair U x)).hom 0) + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (neighborhoodPointComplementPair U x)).hom 0) WalkingParallelPair.one) infer_instance apply (cancel_epi @@ -730,7 +734,7 @@ lemma neighborhoodToSmall_comp_pointExcisionSmallRelativeToNeighborhood /-- Neighborhood-relative chains are isomorphic to the point-excision-small relative quotient. -/ def neighborhoodRelativePointExcisionSmallIso (U : Set X) (x : X) : - (relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x) ≅ + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (neighborhoodPointComplementPair U x) ≅ PointExcisionSmallRelativeChainComplex U x where hom := neighborhoodRelativeToPointExcisionSmallRelativeChainMap U x inv := pointExcisionSmallRelativeToNeighborhoodRelativeChainMap U x @@ -739,19 +743,19 @@ def neighborhoodRelativePointExcisionSmallIso (U : Set X) (x : X) : omit [T1Space X] in lemma pointComplementAmbientInclusion_eq_pairMap (x : X) : - pointComplementAmbientInclusion x = (pointComplementPair x).map := rfl + pointComplementAmbientInclusion x = (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).map := rfl /-- The chain inclusion for the ambient point-complement pair, with both singular chain complexes exposed. -/ abbrev ambientPointComplementSubspaceChainMap (x : X) : - (TopCat.toSSet.obj (pointComplementPair x).snd).chainComplex + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd).chainComplex (ModuleCat.of ℚ ℚ) ⟶ (TopCat.toSSet.obj (TopCat.of X)).chainComplex (ModuleCat.of ℚ ℚ) := - ((chainPairFunctor ℚ).obj (pointComplementPair x)).hom + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x)).hom /-- The explicit singular-chain map underlying the ambient point-complement inclusion. -/ def pointComplementAmbientChainMap (x : X) : - (TopCat.toSSet.obj (pointComplementPair x).snd).chainComplex + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd).chainComplex (ModuleCat.of ℚ ℚ) ⟶ (TopCat.toSSet.obj (TopCat.of X)).chainComplex (ModuleCat.of ℚ ℚ) := SSet.chainComplexMap (TopCat.toSSet.map (pointComplementAmbientInclusion x)) @@ -779,8 +783,8 @@ instance ambientPointComplementSubspaceChainMap_mono (x : X) : /-- The ambient relative-chain projection, with its absolute chain source exposed. -/ abbrev ambientPointComplementRelativeProjection (x : X) : (TopCat.toSSet.obj (TopCat.of X)).chainComplex (ModuleCat.of ℚ ℚ) ⟶ - (relativeChainFunctor ℚ).obj (pointComplementPair x) := - relativeChainProjection ℚ (pointComplementPair x) + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x) := + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainProjection ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x) omit [T1Space X] in /-- The point-complement-to-small map followed by small-chain inclusion is the ordinary @@ -788,16 +792,16 @@ point-complement chain inclusion. -/ lemma pointComplementToExcisionSmallChains_comp_ambientInclusion (U : Set X) (x : X) : pointComplementToExcisionSmallChains U x ≫ - coverSmallRationalSingularChainInclusion + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion (TopCat.of X) (pointExcisionCover U x) = ambientPointComplementSubspaceChainMap x := by let F := (SSet.chainComplexFunctor (ModuleCat ℚ)).obj (ModuleCat.of ℚ ℚ) calc pointComplementToExcisionSmallChains U x ≫ - coverSmallRationalSingularChainInclusion + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion (TopCat.of X) (pointExcisionCover U x) = F.map (pointComplementToExcisionSmallSingularSet U x ≫ - (coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x)).ι) := + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x)).ι) := (F.map_comp _ _).symm _ = F.map (TopCat.toSSet.map (pointComplementAmbientInclusion x)) := by rw [pointComplementToExcisionSmallSingularSet_comp_inclusion] @@ -813,9 +817,9 @@ instance pointComplementToExcisionSmallChains_mono (U : Set X) (x : X) : /-- The identity map on point-complement chains, with the codomain presented as the left object of the ambient chain-pair arrow. -/ def pointComplementChainsToAmbientPairLeft (x : X) : - (TopCat.toSSet.obj (pointComplementPair x).snd).chainComplex + (TopCat.toSSet.obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x).snd).chainComplex (ModuleCat.of ℚ ℚ) ⟶ - ((chainPairFunctor ℚ).obj (pointComplementPair x)).left := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x)).left := 𝟙 _ instance pointComplementChainsToAmbientPairLeft_isIso (x : X) : @@ -826,9 +830,9 @@ omit [T1Space X] in lemma pointComplementChainsToAmbientPairLeft_comp (U : Set X) (x : X) : pointComplementChainsToAmbientPairLeft x ≫ - ((chainPairFunctor ℚ).obj (pointComplementPair x)).hom = + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x)).hom = pointComplementToExcisionSmallChains U x ≫ - coverSmallRationalSingularChainInclusion + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion (TopCat.of X) (pointExcisionCover U x) := by change 𝟙 _ ≫ ambientPointComplementSubspaceChainMap x = _ exact (pointComplementToExcisionSmallChains_comp_ambientInclusion U x).symm @@ -837,18 +841,18 @@ lemma pointComplementChainsToAmbientPairLeft_comp point-complement pair. -/ def pointExcisionSmallToAmbientPairArrow (U : Set X) (x : X) : pointExcisionSmallChainArrow U x ⟶ - (chainPairFunctor ℚ).obj (pointComplementPair x) := + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x) := Arrow.homMk (pointComplementChainsToAmbientPairLeft x) - (coverSmallRationalSingularChainInclusion + (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion (TopCat.of X) (pointExcisionCover U x)) (pointComplementChainsToAmbientPairLeft_comp U x) /-- The map from the point-excision-small relative quotient to ambient relative chains. -/ def pointExcisionSmallRelativeToAmbientRelativeChainMap (U : Set X) (x : X) : PointExcisionSmallRelativeChainComplex U x ⟶ - (relativeChainFunctor ℚ).obj (pointComplementPair x) := - (Limits.coker (C := ChainCategory ℚ)).map + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.ChartFundamentalClass.Singular.pointComplementPair x) := + (Limits.coker (C := _root_.OAI.AlgebraicTopology.Singular.Cohomology.ChainCategory ℚ)).map (pointExcisionSmallToAmbientPairArrow U x) omit [T1Space X] in @@ -857,10 +861,10 @@ lemma pointExcisionSmallRelativeProjection_comp_toAmbient (U : Set X) (x : X) : pointExcisionSmallRelativeProjection U x ≫ pointExcisionSmallRelativeToAmbientRelativeChainMap U x = - coverSmallRationalSingularChainInclusion + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion (TopCat.of X) (pointExcisionCover U x) ≫ ambientPointComplementRelativeProjection x := - ((coker.π (C := ChainCategory ℚ)).naturality + ((coker.π (C := _root_.OAI.AlgebraicTopology.Singular.Cohomology.ChainCategory ℚ)).naturality (pointExcisionSmallToAmbientPairArrow U x)).symm /-- The morphism between the two cokernel short complexes used in point excision. -/ @@ -870,7 +874,7 @@ def pointExcisionSmallToAmbientCokernelSequenceHom (U : Set X) (x : X) : (ambientPointComplementSubspaceChainMap x) := ShortComplex.homMk (pointComplementChainsToAmbientPairLeft x) - (coverSmallRationalSingularChainInclusion + (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion (TopCat.of X) (pointExcisionCover U x)) (pointExcisionSmallRelativeToAmbientRelativeChainMap U x) (pointComplementChainsToAmbientPairLeft_comp U x) @@ -906,11 +910,11 @@ two-set point-excision cover is open and covers the ambient space. -/ theorem pointExcisionSmallRelativeToAmbient_quasiIso (U : Set X) (x : X) (hU : IsOpen U) (hx : x ∈ U) : QuasiIso (pointExcisionSmallRelativeToAmbientRelativeChainMap U x) := by - let e := coverSmallRationalChainHomotopyEquiv_of_openCover + let e := _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalChainHomotopyEquiv_of_openCover (TopCat.of X) (pointExcisionCover U x) (pointExcisionCover_isOpen U x hU) (pointExcisionCover_iUnion U x hx) have hsmall : QuasiIso e.hom := e.quasiIso_hom - rw [coverSmallRationalChainHomotopyEquiv_of_openCover_hom] at hsmall + rw [_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalChainHomotopyEquiv_of_openCover_hom] at hsmall exact HomologicalComplex.HomologySequence.quasiIso_τ₃ (pointExcisionSmallToAmbientCokernelSequenceHom U x) (pointExcisionSmallCokernelSequence_shortExact U x) @@ -923,26 +927,26 @@ def neighborhoodAmbientChainMap (U : Set X) : (TopCat.toSSet.obj (TopCat.of U)).chainComplex (ModuleCat.of ℚ ℚ) ⟶ (TopCat.toSSet.obj (TopCat.of X)).chainComplex (ModuleCat.of ℚ ℚ) := SSet.chainComplexMap - (TopCat.toSSet.map (topologicalSubsetInclusion (TopCat.of X) U)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (TopCat.of X) U)) (ModuleCat.of ℚ ℚ) omit [T1Space X] in lemma neighborhoodToPointExcisionSmallChains_comp_ambientInclusion (U : Set X) (x : X) : neighborhoodToPointExcisionSmallChains U x ≫ - coverSmallRationalSingularChainInclusion + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion (TopCat.of X) (pointExcisionCover U x) = neighborhoodAmbientChainMap U := by let F := (SSet.chainComplexFunctor (ModuleCat ℚ)).obj (ModuleCat.of ℚ ℚ) calc neighborhoodToPointExcisionSmallChains U x ≫ - coverSmallRationalSingularChainInclusion + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion (TopCat.of X) (pointExcisionCover U x) = F.map (neighborhoodToPointExcisionSmallSingularSet U x ≫ - (coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x)).ι) := + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (TopCat.of X) (pointExcisionCover U x)).ι) := (F.map_comp _ _).symm _ = F.map (TopCat.toSSet.map - (topologicalSubsetInclusion (TopCat.of X) U)) := by + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion (TopCat.of X) U)) := by rw [neighborhoodToPointExcisionSmallSingularSet_comp_inclusion] _ = neighborhoodAmbientChainMap U := rfl @@ -951,11 +955,11 @@ omit [T1Space X] in lemma neighborhoodRelativeProjection_comp_ambientRelativeMap (U : Set X) (x : X) : neighborhoodRelativeProjection U x ≫ - (relativeChainFunctor ℚ).map (neighborhoodPointComplementPairMap U x) = + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).map (neighborhoodPointComplementPairMap U x) = neighborhoodAmbientChainMap U ≫ ambientPointComplementRelativeProjection x := by - exact ((coker.π (C := ChainCategory ℚ)).naturality - ((chainPairFunctor ℚ).map (neighborhoodPointComplementPairMap U x))).symm + exact ((coker.π (C := _root_.OAI.AlgebraicTopology.Singular.Cohomology.ChainCategory ℚ)).naturality + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).map (neighborhoodPointComplementPairMap U x))).symm omit [T1Space X] in lemma neighborhoodToSmallProjection_comp_toAmbient @@ -975,11 +979,11 @@ lemma neighborhoodToSmallRelative_comp_smallRelativeToAmbient (U : Set X) (x : X) : neighborhoodRelativeToPointExcisionSmallRelativeChainMap U x ≫ pointExcisionSmallRelativeToAmbientRelativeChainMap U x = - (relativeChainFunctor ℚ).map (neighborhoodPointComplementPairMap U x) := by + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).map (neighborhoodPointComplementPairMap U x) := by let : Epi (neighborhoodRelativeProjection U x) := by change Epi (colimit.ι (parallelPair - ((chainPairFunctor ℚ).obj (neighborhoodPointComplementPair U x)).hom 0) + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj (neighborhoodPointComplementPair U x)).hom 0) WalkingParallelPair.one) infer_instance apply (cancel_epi (neighborhoodRelativeProjection U x)).1 @@ -992,7 +996,7 @@ complexes defined by removing the distinguished point. -/ theorem neighborhoodPointComplement_relativeChainMap_quasiIso (U : Set X) (x : X) (hU : IsOpen U) (hx : x ∈ U) : QuasiIso - ((relativeChainFunctor ℚ).map (neighborhoodPointComplementPairMap U x)) := by + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).map (neighborhoodPointComplementPairMap U x)) := by let : IsIso (neighborhoodRelativeToPointExcisionSmallRelativeChainMap U x) := (neighborhoodRelativePointExcisionSmallIso U x).isIso_hom let : QuasiIso (pointExcisionSmallRelativeToAmbientRelativeChainMap U x) := @@ -1004,14 +1008,14 @@ theorem neighborhoodPointComplement_relativeChainMap_quasiIso theorem neighborhoodPointComplement_relativeHomologyMap_bijective (U : Set X) (x : X) (hU : IsOpen U) (hx : x ∈ U) (n : ℕ) : Function.Bijective - (relativeHomologyMap ℚ n (neighborhoodPointComplementPairMap U x)) := by + (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ n (neighborhoodPointComplementPairMap U x)) := by let : QuasiIso - ((relativeChainFunctor ℚ).map (neighborhoodPointComplementPairMap U x)) := + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).map (neighborhoodPointComplementPairMap U x)) := neighborhoodPointComplement_relativeChainMap_quasiIso U x hU hx - have hIso : IsIso ((relativeHomologyFunctor ℚ n).map + have hIso : IsIso ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeHomologyFunctor ℚ n).map (neighborhoodPointComplementPairMap U x)) := by change IsIso (HomologicalComplex.homologyMap - ((relativeChainFunctor ℚ).map (neighborhoodPointComplementPairMap U x)) n) + ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).map (neighborhoodPointComplementPairMap U x)) n) infer_instance exact (ConcreteCategory.isIso_iff_bijective _).mp hIso @@ -1019,7 +1023,12 @@ theorem neighborhoodPointComplement_relativeHomologyMap_bijective theorem neighborhoodPointComplement_relativeHomologyMap_surjective (U : Set X) (x : X) (hU : IsOpen U) (hx : x ∈ U) (n : ℕ) : Function.Surjective - (relativeHomologyMap ℚ n (neighborhoodPointComplementPairMap U x)) := + (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeHomologyMap ℚ n (neighborhoodPointComplementPairMap U x)) := (neighborhoodPointComplement_relativeHomologyMap_bijective U x hU hx n).2 -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.RelativePairExcision diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/Chain.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/Chain.lean index 2216d40acb..deaa32431b 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/Chain.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/Chain.lean @@ -12,16 +12,19 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Cohomology -public import Mathlib.Algebra.Category.Grp.Basic -public import Mathlib.Algebra.Category.ModuleCat.Basic -public import Mathlib.Algebra.Category.ModuleCat.Presheaf.Sheafification -public import Mathlib.Algebra.Homology.Embedding.CochainComplex -public import Mathlib.Topology.Sheaves.Abelian -public import Mathlib.Topology.Sheaves.Sheafify +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Cohomology +import Mathlib.Algebra.Category.Grp.Basic +import Mathlib.Algebra.Category.ModuleCat.Basic +import Mathlib.Algebra.Category.ModuleCat.Presheaf.Sheafification +import Mathlib.Algebra.Homology.Embedding.CochainComplex +import Mathlib.Topology.Sheaves.Abelian +import Mathlib.Topology.Sheaves.Sheafify + +namespace OAI.AlgebraicTopology.Singular.SheafChain /-! # The relative singular-chain sheaf complex @@ -43,30 +46,31 @@ homology, and the identification of its hypercohomology with intrinsic Borel--Mo all separate tasks. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] (X : TopCat.{u}) /-- The contravariant functor sending an open set `U` to the pair `(X, X ∖ U)`. -/ def openComplementPairFunctor : (Opens X)ᵒᵖ ⥤ TopPair.{u} where obj U := TopPair.ofSubset (U.unop : Set X)ᶜ - map i := supportInclusionPairMap X (leOfHom i.unop) - map_id U := supportInclusionPairMap_rfl X (U.unop : Set X) + map i := _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.supportInclusionPairMap X (leOfHom i.unop) + map_id U := _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.supportInclusionPairMap_rfl X (U.unop : Set X) map_comp i j := - supportInclusionPairMap_trans X (leOfHom j.unop) (leOfHom i.unop) + _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.supportInclusionPairMap_trans X (leOfHom j.unop) (leOfHom i.unop) /-- Let `X` be a topological space and `R` a commutative ring. This functor sends an open `U ⊆ X` to the relative singular chain complex `C_*(X,X \ U;R) = C_*(X;R)/C_*(X \ U;R)`. For `V ⊆ U`, restriction is the quotient map induced by `X \ U ⊆ X \ V`. -/ def openRelativeSingularChainComplexFunctor : (Opens X)ᵒᵖ ⥤ ChainComplex (ModuleCat.{u} R) ℕ := - openComplementPairFunctor X ⋙ relativeChainFunctor R + openComplementPairFunctor X ⋙ _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R /-- Relative chains of `(X, X ∖ U)` in degree `n`, forgetting only the scalar structure. -/ def singularChainPresheaf (n : ℕ) : TopCat.Presheaf AddCommGrpCat.{u} X := @@ -78,8 +82,8 @@ def singularChainPresheaf (n : ℕ) : TopCat.Presheaf AddCommGrpCat.{u} X := @[simp] lemma singularChainPresheaf_map {U V : Opens X} (i : V ⟶ U) (n : ℕ) : (singularChainPresheaf R X n).map i.op = (forget₂ (ModuleCat.{u} R) AddCommGrpCat.{u}).map - (((relativeChainFunctor R).map - (supportInclusionPairMap X (leOfHom i))).f n) := + (((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor R).map + (_root_.OAI.AlgebraicTopology.Singular.CohomologyTo.supportInclusionPairMap X (leOfHom i))).f n) := rfl /-- The singular boundary in the relative-chain presheaves. -/ @@ -167,4 +171,9 @@ instance singularChainSheafCochainComplex_isStrictlyLE : unfold singularChainSheafCochainComplex infer_instance -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.SheafChain diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/ChainStalk.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/ChainStalk.lean index c23c5f1675..79f0a0b0ec 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/ChainStalk.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/ChainStalk.lean @@ -9,11 +9,14 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.Chain -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeHomotopyInvariance +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.Chain +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.RelativeHomotopyInvariance + +namespace OAI.AlgebraicTopology.Singular.SheafChainStalk /-! # Stalks of the relative singular-chain presheaf @@ -23,19 +26,20 @@ in a Hausdorff space, therefore avoids an open neighborhood of that point. This local relative chain complex to be identified with the colimit over open neighborhoods. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace open scoped Simplicial universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] (X : TopCat.{u}) /-- Evaluating a chain complex in degree `n` and forgetting its scalar structure. -/ -def chainDegreeAdditiveFunctor (n : ℕ) : ChainCategory R ⥤ AddCommGrpCat.{u} := +def chainDegreeAdditiveFunctor (n : ℕ) : _root_.OAI.AlgebraicTopology.Singular.Cohomology.ChainCategory R ⥤ AddCommGrpCat.{u} := HomologicalComplex.eval (ModuleCat.{u} R) (ComplexShape.down ℕ) n ⋙ forget₂ (ModuleCat.{u} R) AddCommGrpCat.{u} @@ -45,4 +49,9 @@ instance chainDegreeAdditiveFunctor_preservesColimits (n : ℕ) : unfold chainDegreeAdditiveFunctor infer_instance -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.SheafChainStalk diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/Cochain.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/Cochain.lean index 48e7a4d1b4..0b13eb5a99 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/Cochain.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/Cochain.lean @@ -12,10 +12,11 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Singular.Sheaf.Cochain +import HodgeConjecture.Definitions.AlgebraicTopology.Singular.Sheaf.Cochain import HodgeConjecture.Mathlib.Topology.Sheaves.StalkExact import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Contractible @@ -23,6 +24,8 @@ import Mathlib.AlgebraicTopology.SimplicialSet.Homology.HomologyZero import Mathlib.Topology.Homotopy.TopCat.ZerothHomotopy import Mathlib.Topology.Sheaves.Sheafify +namespace OAI.AlgebraicTopology.Singular.SheafCochainAt + /-! # The singular-cochain sheaf @@ -32,29 +35,30 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] (X : TopCat.{u}) /-- The augmented singular zero-cochain short complex before sheafification. -/ noncomputable def constantsToSingularCochainPresheafShortComplex : ShortComplex (TopCat.Presheaf AddCommGrpCat X) := - ShortComplex.mk (constantsToSingularCochainZero R X) - (singularCochainCoboundary R X 0) - (constantsToSingularCochainZero_comp_coboundary R X) + ShortComplex.mk (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZero R X) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X 0) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZero_comp_coboundary R X) /-- The augmented singular zero-cochain short complex after sheafification. -/ noncomputable def constantsToSingularCochainSheafShortComplex : ShortComplex (TopCat.Sheaf AddCommGrpCat X) := - ShortComplex.mk (constantsToSingularCochainZeroSheaf R X) - (singularCochainSheafCoboundary R X 0) - (constantsToSingularCochainZeroSheaf_comp_coboundary R X) + ShortComplex.mk (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZeroSheaf R X) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafCoboundary R X 0) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZeroSheaf_comp_coboundary R X) set_option backward.isDefEq.respectTransparency false in /-- The sheafification unit between the augmented presheaf and sheaf short complexes. -/ @@ -63,24 +67,26 @@ noncomputable def constantsToSingularCochainShortComplexSheafificationUnit : (constantsToSingularCochainSheafShortComplex R X).map (TopCat.Sheaf.forget AddCommGrpCat.{u} X) where τ₁ := toSheafify (Opens.grothendieckTopology X) 𝓒ᵖ(X; R) - τ₂ := toSheafify (Opens.grothendieckTopology X) (singularCochainPresheaf R X 0) - τ₃ := toSheafify (Opens.grothendieckTopology X) (singularCochainPresheaf R X 1) + τ₂ := toSheafify (Opens.grothendieckTopology X) (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0) + τ₃ := toSheafify (Opens.grothendieckTopology X) (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 1) comm₁₂ := (toSheafify_naturality (Opens.grothendieckTopology X) - (constantsToSingularCochainZero R X)).symm + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZero R X)).symm comm₂₃ := (toSheafify_naturality (Opens.grothendieckTopology X) - (singularCochainCoboundary R X 0)).symm + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X 0)).symm -end AlgebraicTopology.Singular +end +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] (X : TopCat.{u}) @@ -90,54 +96,54 @@ sheafified singular-cochain complex is exact in degree `n + 1`. The hypothesis e the primitive after restricting to a smaller neighborhood. -/ lemma singularCochainSheafComplex_exactAt_succ_of_locallyPrimitive (n : ℕ) (hlocal : ∀ (x : X) (U : Opens X) (_hx : x ∈ U) - (φ : OpenCochains R X (.op U) (n + 1)), - (singularCochainCoboundary R X (n + 1)).app (.op U) φ = 0 → + (φ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op U) (n + 1)), + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X (n + 1)).app (.op U) φ = 0 → ∃ (V : Opens X) (_hxV : x ∈ V) (i : V ⟶ U) - (ψ : OpenCochains R X (.op V) n), - (singularCochainCoboundary R X n).app (.op V) ψ = - (singularCochainPresheaf R X (n + 1)).map i.op φ) : - (singularCochainSheafComplex R X).ExactAt (n + 1) := by + (ψ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op V) n), + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X n).app (.op V) ψ = + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X (n + 1)).map i.op φ) : + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex R X).ExactAt (n + 1) := by rw [HomologicalComplex.exactAt_iff' - (K := singularCochainSheafComplex R X) + (K := _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex R X) (i := n) (j := n + 1) (k := (n + 1) + 1) (by simp) (by simp)] rw [TopCat.Sheaf.exact_iff_stalkFunctor_map_exact] intro x let stalk := TopCat.Presheaf.stalkFunctor AddCommGrpCat.{u} x - let P := singularCochainPresheafComplex R X + let P := _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X have hP : (P.sc' n (n + 1) ((n + 1) + 1)).map stalk |>.Exact := - TopCat.Presheaf.stalkExact_of_locallyPrimitive (P.sc' n (n + 1) ((n + 1) + 1)) (by + _root_.OAI.Topology.Sheaves.StalkExact.TopCat.Presheaf.stalkExact_of_locallyPrimitive (P.sc' n (n + 1) ((n + 1) + 1)) (by intro y U hyU φ hφ dsimp [P, HomologicalComplex.sc', HomologicalComplex.shortComplexFunctor'] at hφ ⊢ - rw [singularCochainPresheafComplex_d] at hφ - rw [singularCochainPresheafComplex_d] - change (singularCochainCoboundary R X (n + 1)).app (.op U) φ = 0 at hφ + rw [_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex_d] at hφ + rw [_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex_d] + change (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X (n + 1)).app (.op U) φ = 0 at hφ exact hlocal y U hyU φ hφ) x - let unit := singularCochainSheafificationUnit R X + let unit := _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafificationUnit R X let stalkUnit := (stalk.mapHomologicalComplex (ComplexShape.up ℕ)).map unit let η := (HomologicalComplex.shortComplexFunctor' AddCommGrpCat.{u} (ComplexShape.up ℕ) n (n + 1) ((n + 1) + 1)).map stalkUnit let : IsIso η.τ₁ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat.{u} - (singularCochainPresheaf R X n) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n) let : IsIso η.τ₂ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat.{u} - (singularCochainPresheaf R X (n + 1)) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X (n + 1)) let : IsIso η.τ₃ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat.{u} - (singularCochainPresheaf R X ((n + 1) + 1)) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X ((n + 1) + 1)) let : IsIso η := ShortComplex.isIso_of_isIso η exact ShortComplex.exact_of_iso (asIso η) hP /-- Scaling the zero-chain augmentation is injective when the simplicial set has a vertex. -/ lemma smul_simplicialZeroAugmentation_injective (S : SSet.{u}) [Nonempty (S.obj (.op ⟨0⟩))] : - Function.Injective (fun r : R ↦ r • (simplicialZeroAugmentation R S).hom) := by + Function.Injective (fun r : R ↦ r • (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.simplicialZeroAugmentation R S).hom) := by intro r s h let x : S.obj (.op ⟨0⟩) := Classical.arbitrary _ - have heval : (simplicialZeroAugmentation R S).hom + have heval : (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.simplicialZeroAugmentation R S).hom ((S.ιChainComplex (R := ModuleCat.of R R) x).hom 1) = 1 := congrArg (fun f ↦ f.hom 1) - (ιChainComplex_comp_simplicialZeroAugmentation R S x) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.ιChainComplex_comp_simplicialZeroAugmentation R S x) have hvalue := LinearMap.congr_fun h ((S.ιChainComplex (R := ModuleCat.of R R) x).hom 1) simpa [heval] using hvalue @@ -147,7 +153,7 @@ the augmented singular cochain complex in degree zero. -/ lemma exists_eq_smul_simplicialZeroAugmentation_of_connected (S : SSet.{u}) [S.IsConnected] (φ : Module.Dual R ((S.chainComplex (ModuleCat.of R R)).X 0)) (hφ : ((S.chainComplex (ModuleCat.of R R)).d 1 0).hom.dualMap φ = 0) : - ∃ r : R, r • (simplicialZeroAugmentation R S).hom = φ := by + ∃ r : R, r • (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.simplicialZeroAugmentation R S).hom = φ := by have hd : (S.chainComplex (ModuleCat.of R R)).d 1 0 ≫ ModuleCat.ofHom φ = 0 := ModuleCat.hom_ext (LinearMap.ext (LinearMap.congr_fun hφ)) let s := CokernelCofork.ofπ (ModuleCat.ofHom φ) hd @@ -162,7 +168,7 @@ lemma exists_eq_smul_simplicialZeroAugmentation_of_connected (S : SSet.{u}) [S.I refine ⟨r, ?_⟩ apply LinearMap.ext intro c - have heq : ModuleCat.ofHom (r • (simplicialZeroAugmentation R S).hom) = + have heq : ModuleCat.ofHom (r • (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.simplicialZeroAugmentation R S).hom) = ModuleCat.ofHom φ := by apply SSet.chainComplex_hom_ext intro x @@ -201,12 +207,12 @@ lemma exists_eq_smul_simplicialZeroAugmentation_of_connected (S : SSet.{u}) [S.I rw [show t = t • (1 : R) by simp, map_smul, map_smul, smul_eq_mul] calc _ = r * t := by - change r * (simplicialZeroAugmentation R S).hom + change r * (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.simplicialZeroAugmentation R S).hom ((S.ιChainComplex (R := ModuleCat.of R R) x).hom t) = r * t - rw [show (simplicialZeroAugmentation R S).hom + rw [show (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.simplicialZeroAugmentation R S).hom ((S.ιChainComplex (R := ModuleCat.of R R) x).hom t) = t by exact congrArg (fun f ↦ f.hom t) - (ιChainComplex_comp_simplicialZeroAugmentation R S x)] + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.ιChainComplex_comp_simplicialZeroAugmentation R S x)] _ = t * r := mul_comm _ _ _ = φ ((S.ιChainComplex (R := ModuleCat.of R R) x₀).hom t) := hscale.symm _ = φ ((S.ιChainComplex (R := ModuleCat.of R R) x).hom t) := hvalue.symm @@ -214,7 +220,7 @@ lemma exists_eq_smul_simplicialZeroAugmentation_of_connected (S : SSet.{u}) [S.I /-- Constant singular zero-cochains on a nonempty open set have unique coefficients. -/ lemma constantSingularZeroCochain_injective (U : (Opens X)ᵒᵖ) [Nonempty U.unop] : - Function.Injective (constantSingularZeroCochain R X U) := by + Function.Injective (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantSingularZeroCochain R X U) := by let : Nonempty ((TopCat.toSSet.obj ((Opens.toTopCat X).obj U.unop)).obj (.op ⟨0⟩)) := ⟨(TopCat.toSSetObj₀Equiv (X := (Opens.toTopCat X).obj U.unop)).symm @@ -225,9 +231,9 @@ lemma constantSingularZeroCochain_injective (U : (Opens X)ᵒᵖ) [Nonempty U.un /-- On a path-connected open subset, every singular zero-cocycle is a constant cochain. -/ lemma exists_eq_constantSingularZeroCochain_of_pathConnected (U : (Opens X)ᵒᵖ) [PathConnectedSpace U.unop] - (φ : OpenCochains R X U 0) - (hφ : (((openSingularChainComplexFunctor R X).obj U.unop).d 1 0).hom.dualMap φ = 0) : - ∃ r : R, constantSingularZeroCochain R X U r = φ := by + (φ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X U 0) + (hφ : (((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).obj U.unop).d 1 0).hom.dualMap φ = 0) : + ∃ r : R, _root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantSingularZeroCochain R X U r = φ := by let : PathConnectedSpace ((Opens.toTopCat X).obj U.unop) := show PathConnectedSpace U.unop from inferInstance exact exists_eq_smul_simplicialZeroAugmentation_of_connected R @@ -237,7 +243,7 @@ set_option backward.isDefEq.respectTransparency false in /-- The inclusion of constant zero-cochains is a monomorphism on every stalk. -/ lemma constantsToSingularCochainZero_stalk_mono (x : X) : Mono ((TopCat.Presheaf.stalkFunctor AddCommGrpCat.{u} x).map - (constantsToSingularCochainZero R X)) := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZero R X)) := by rw [AddCommGrpCat.mono_iff_injective] intro z z' h obtain ⟨U, hxU, r, rfl⟩ := 𝓒ᵖ(X; R).exists_germ_eq z @@ -245,26 +251,26 @@ lemma constantsToSingularCochainZero_stalk_mono (x : X) : rw [TopCat.Presheaf.stalkFunctor_map_germ_apply, TopCat.Presheaf.stalkFunctor_map_germ_apply] at h obtain ⟨W, hxW, iWU, iWV, hW⟩ := - (singularCochainPresheaf R X 0).germ_eq x hxU hxV - ((constantsToSingularCochainZero R X).app (.op U) r) - ((constantsToSingularCochainZero R X).app (.op V) s) h + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0).germ_eq x hxU hxV + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZero R X).app (.op U) r) + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZero R X).app (.op V) s) h let : Nonempty W := ⟨⟨x, hxW⟩⟩ have hrs : r = s := by apply constantSingularZeroCochain_injective R X (.op W) have hr := congrArg (fun k : 𝓒ᵖ(X; R).obj (.op U) ⟶ - (singularCochainPresheaf R X 0).obj (.op W) ↦ k r) - ((constantsToSingularCochainZero R X).naturality iWU.op) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0).obj (.op W) ↦ k r) + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZero R X).naturality iWU.op) have hs := congrArg (fun k : 𝓒ᵖ(X; R).obj (.op V) ⟶ - (singularCochainPresheaf R X 0).obj (.op W) ↦ k s) - ((constantsToSingularCochainZero R X).naturality iWV.op) - change constantSingularZeroCochain R X (.op W) r = - (singularCochainPresheaf R X 0).map iWU.op - ((constantsToSingularCochainZero R X).app (.op U) r) at hr - change constantSingularZeroCochain R X (.op W) s = - (singularCochainPresheaf R X 0).map iWV.op - ((constantsToSingularCochainZero R X).app (.op V) s) at hs + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0).obj (.op W) ↦ k s) + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZero R X).naturality iWV.op) + change _root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantSingularZeroCochain R X (.op W) r = + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0).map iWU.op + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZero R X).app (.op U) r) at hr + change _root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantSingularZeroCochain R X (.op W) s = + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0).map iWV.op + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZero R X).app (.op V) s) at hs exact hr.trans (hW.trans hs.symm) subst s rw [← 𝓒ᵖ(X; R).germ_res_apply iWU x hxW, @@ -276,21 +282,21 @@ set_option backward.isDefEq.respectTransparency false in neighborhood of any chosen point. -/ lemma exists_local_constantSingularZeroCochain [LocallyPathConnectedSpace X] (x : X) (U : Opens X) (hx : x ∈ U) - (φ : OpenCochains R X (.op U) 0) - (hφ : (singularCochainCoboundary R X 0).app (.op U) φ = 0) : + (φ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op U) 0) + (hφ : (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X 0).app (.op U) φ = 0) : ∃ (V : Opens X) (_hxV : x ∈ V) (i : V ⟶ U) (r : R), - constantSingularZeroCochain R X (.op V) r = - (singularCochainPresheaf R X 0).map i.op φ := by + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantSingularZeroCochain R X (.op V) r = + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0).map i.op φ := by let V : Opens X := ⟨pathComponentIn U x, U.2.pathComponentIn x⟩ have hxV : x ∈ V := mem_pathComponentIn_self hx let i : V ⟶ U := homOfLE pathComponentIn_subset let : PathConnectedSpace V := isPathConnected_iff_pathConnectedSpace.mp (isPathConnected_pathComponentIn hx) - let φV := (singularCochainPresheaf R X 0).map i.op φ - have hφV : (singularCochainCoboundary R X 0).app (.op V) φV = 0 := by + let φV := (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0).map i.op φ + have hφV : (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X 0).app (.op V) φV = 0 := by dsimp [φV] rw [← ConcreteCategory.comp_apply, - (singularCochainCoboundary R X 0).naturality, + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X 0).naturality, ConcreteCategory.comp_apply, hφ, map_zero] obtain ⟨r, hr⟩ := exists_eq_constantSingularZeroCochain_of_pathConnected R X (.op V) φV hφV @@ -305,10 +311,10 @@ lemma constantsToSingularCochainSheafShortComplex_exact [LocallyPathConnectedSpa intro x let stalk := TopCat.Presheaf.stalkFunctor AddCommGrpCat.{u} x have hP : ((constantsToSingularCochainPresheafShortComplex R X).map stalk).Exact := - TopCat.Presheaf.stalkExact_of_locallyPrimitive + _root_.OAI.Topology.Sheaves.StalkExact.TopCat.Presheaf.stalkExact_of_locallyPrimitive (constantsToSingularCochainPresheafShortComplex R X) (by intro y U hyU φ hφ - change (singularCochainCoboundary R X 0).app (.op U) φ = 0 at hφ + change (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X 0).app (.op U) φ = 0 at hφ exact exists_local_constantSingularZeroCochain R X y U hyU φ hφ) x let unit := constantsToSingularCochainShortComplexSheafificationUnit R X let η := (stalk.mapShortComplex).map unit @@ -317,17 +323,17 @@ lemma constantsToSingularCochainSheafShortComplex_exact [LocallyPathConnectedSpa 𝓒ᵖ(X; R) let : IsIso η.τ₂ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat.{u} - (singularCochainPresheaf R X 0) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0) let : IsIso η.τ₃ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat.{u} - (singularCochainPresheaf R X 1) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 1) let : IsIso η := ShortComplex.isIso_of_isIso η exact ShortComplex.exact_of_iso (asIso η) hP set_option backward.isDefEq.respectTransparency false in /-- The sheafified inclusion of constants into singular zero-cochains is a monomorphism. -/ lemma constantsToSingularCochainZeroSheaf_mono : - Mono (constantsToSingularCochainZeroSheaf R X) := by + Mono (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZeroSheaf R X) := by rw [TopCat.Presheaf.mono_iff_stalk_mono] intro x let stalk := TopCat.Presheaf.stalkFunctor AddCommGrpCat.{u} x @@ -341,7 +347,7 @@ lemma constantsToSingularCochainZeroSheaf_mono : 𝓒ᵖ(X; R) let : IsIso η.τ₂ := TopCat.Presheaf.stalkFunctor_map_unit_toSheafify_isIso x AddCommGrpCat.{u} - (singularCochainPresheaf R X 0) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0) let : Mono S.f := constantsToSingularCochainZero_stalk_mono R X x change Mono T.f have h : T.f = inv η.τ₁ ≫ S.f ≫ η.τ₂ := by @@ -355,11 +361,11 @@ set_option backward.isDefEq.respectTransparency false in quasi-isomorphism in degree zero. -/ lemma constantsToSingularCochainSheafComplex_quasiIsoAt_zero [LocallyPathConnectedSpace X] : - QuasiIsoAt (constantsToSingularCochainSheafComplex R X) 0 := by + QuasiIsoAt (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex R X) 0 := by rw [CochainComplex.quasiIsoAt₀_iff, ShortComplex.quasiIso_iff_of_zeros] · exact ⟨constantsToSingularCochainSheafShortComplex_exact R X, constantsToSingularCochainZeroSheaf_mono R X⟩ - all_goals simp [singularCochainSheafComplex] + all_goals simp [_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex] set_option backward.isDefEq.respectTransparency false in /-- A neighborhood-wise primitive condition makes the constant-to-singular comparison a @@ -367,13 +373,13 @@ quasi-isomorphism in positive degree. In degree `n + 1` the constant sheaf compl exact, so the claim follows from exactness of the singular-cochain sheaf complex there. -/ lemma constantsToSingularCochainSheafComplex_quasiIsoAt_succ_of_locallyPrimitive (n : ℕ) (hlocal : ∀ (x : X) (U : Opens X) (_hx : x ∈ U) - (φ : OpenCochains R X (.op U) (n + 1)), - (singularCochainCoboundary R X (n + 1)).app (.op U) φ = 0 → + (φ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op U) (n + 1)), + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X (n + 1)).app (.op U) φ = 0 → ∃ (V : Opens X) (_hxV : x ∈ V) (i : V ⟶ U) - (ψ : OpenCochains R X (.op V) n), - (singularCochainCoboundary R X n).app (.op V) ψ = - (singularCochainPresheaf R X (n + 1)).map i.op φ) : - QuasiIsoAt (constantsToSingularCochainSheafComplex R X) (n + 1) := by + (ψ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op V) n), + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X n).app (.op V) ψ = + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X (n + 1)).map i.op φ) : + QuasiIsoAt (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex R X) (n + 1) := by rw [quasiIsoAt_iff_exactAt _ _ (CochainComplex.exactAt_succ_single_obj 𝓒(X; R) n)] exact singularCochainSheafComplex_exactAt_succ_of_locallyPrimitive R X n hlocal @@ -385,27 +391,27 @@ lemma exists_local_singularCochain_primitive_of_contractibleOpenBasis (hbasis : ∀ (x : X) (U : Opens X), x ∈ U → ∃ (V : Opens X), x ∈ V ∧ ContractibleSpace V ∧ V ≤ U) (n : ℕ) (x : X) (U : Opens X) (hxU : x ∈ U) - (φ : OpenCochains R X (.op U) (n + 1)) - (hφ : (singularCochainCoboundary R X (n + 1)).app (.op U) φ = 0) : + (φ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op U) (n + 1)) + (hφ : (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X (n + 1)).app (.op U) φ = 0) : ∃ (V : Opens X) (_hxV : x ∈ V) (i : V ⟶ U) - (ψ : OpenCochains R X (.op V) n), - (singularCochainCoboundary R X n).app (.op V) ψ = - (singularCochainPresheaf R X (n + 1)).map i.op φ := by + (ψ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op V) n), + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X n).app (.op V) ψ = + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X (n + 1)).map i.op φ := by obtain ⟨V, hxV, hVcontractible, hVU⟩ := hbasis x U hxU let i : V ⟶ U := homOfLE hVU - let K := (openSingularChainComplexFunctor R X).obj V - let φV : OpenCochains R X (.op V) (n + 1) := - (singularCochainPresheaf R X (n + 1)).map i.op φ + let K := (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).obj V + let φV : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op V) (n + 1) := + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X (n + 1)).map i.op φ have hφV : (K.d (n + 2) (n + 1)).hom.dualMap φV = 0 := by - change (singularCochainCoboundary R X (n + 1)).app (.op V) φV = 0 + change (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X (n + 1)).app (.op V) φV = 0 dsimp [φV] rw [← ConcreteCategory.comp_apply, - (singularCochainCoboundary R X (n + 1)).naturality, + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X (n + 1)).naturality, ConcreteCategory.comp_apply, hφ, map_zero] have hker : φV ∈ LinearMap.ker (K.d (n + 2) (n + 1)).hom.dualMap := hφV have hrange : LinearMap.range (K.d (n + 1) n).hom.dualMap = LinearMap.ker (K.d (n + 2) (n + 1)).hom.dualMap := - singularChain_dual_range_eq_ker_of_contractible R V n + _root_.OAI.AlgebraicTopology.Singular.Contractible.singularChain_dual_range_eq_ker_of_contractible R V n rw [← hrange] at hker obtain ⟨ψ, hψ⟩ := hker exact ⟨V, hxV, i, ψ, hψ⟩ @@ -416,8 +422,13 @@ lemma constantsToSingularCochainSheafComplex_quasiIsoAt_succ_of_contractibleOpen (hbasis : ∀ (x : X) (U : Opens X), x ∈ U → ∃ (V : Opens X), x ∈ V ∧ ContractibleSpace V ∧ V ≤ U) (n : ℕ) : - QuasiIsoAt (constantsToSingularCochainSheafComplex R X) (n + 1) := + QuasiIsoAt (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex R X) (n + 1) := constantsToSingularCochainSheafComplex_quasiIsoAt_succ_of_locallyPrimitive R X n (exists_local_singularCochain_primitive_of_contractibleOpenBasis R X hbasis n) -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.SheafCochainAt diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainDescent.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainDescent.lean index cd74150ad7..2c7466f035 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainDescent.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainDescent.lean @@ -12,18 +12,21 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric +import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.Cochain -public import Mathlib.AlgebraicTopology.SimplicialSet.TopAdj -public import Mathlib.Topology.Sheaves.Flasque +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.Cochain +import Mathlib.AlgebraicTopology.SimplicialSet.TopAdj +import Mathlib.Topology.Sheaves.Flasque import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainFlasque import Mathlib.Topology.Sheaves.SheafOfFunctions +namespace OAI.AlgebraicTopology.Singular.SheafCochainDescent + /-! # Descent for singular cochains @@ -38,14 +41,15 @@ functions. Consequently its sheafification is flasque in degree zero. No positiv flasqueness claim is made for the second plus construction or abstract sheafification. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace open scoped Simplicial universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] (X : TopCat.{u}) @@ -56,19 +60,19 @@ abbrev OpenSimplex (U : (Opens X)ᵒᵖ) (n : ℕ) := /-- The singular chain consisting of one simplex with coefficient one. -/ noncomputable def singularChainOfSimplex (U : (Opens X)ᵒᵖ) (n : ℕ) - (s : OpenSimplex X U n) : OpenChains R X U n := + (s : OpenSimplex X U n) : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenChains R X U n := (Sigma.ι (fun _ : OpenSimplex X U n ↦ ModuleCat.of R R) s).hom 1 /-- Evaluate a singular cochain on every basis simplex. -/ def singularCochainToSimplexFunction (U : (Opens X)ᵒᵖ) (n : ℕ) : - OpenCochains R X U n →ₗ[R] (OpenSimplex X U n → R) where + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X U n →ₗ[R] (OpenSimplex X U n → R) where toFun φ s := φ (singularChainOfSimplex R X U n s) map_add' _ _ := rfl map_smul' _ _ := rfl /-- Construct a singular cochain from its values on basis simplices. -/ noncomputable def singularCochainOfSimplexFunction (U : (Opens X)ᵒᵖ) (n : ℕ) : - (OpenSimplex X U n → R) →ₗ[R] OpenCochains R X U n where + (OpenSimplex X U n → R) →ₗ[R] _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X U n where toFun f := ((Sigma.desc fun s ↦ ModuleCat.ofHom <| (LinearMap.ringLmapEquivSelf R R R).symm (f s)).hom : @@ -117,7 +121,7 @@ lemma singularCochainToSimplexFunction_ofFunction (U : (Opens X)ᵒᵖ) (n : ℕ @[simp] lemma singularCochainOfSimplexFunction_toFunction (U : (Opens X)ᵒᵖ) (n : ℕ) - (φ : OpenCochains R X U n) : + (φ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X U n) : singularCochainOfSimplexFunction R X U n (singularCochainToSimplexFunction R X U n φ) = φ := by change Module.Dual R @@ -138,7 +142,7 @@ lemma singularCochainOfSimplexFunction_toFunction (U : (Opens X)ᵒᵖ) (n : ℕ /-- Singular cochains are precisely arbitrary functions on singular simplices. -/ noncomputable def singularCochainEquivSimplexFunction (U : (Opens X)ᵒᵖ) (n : ℕ) : - OpenCochains R X U n ≃ₗ[R] (OpenSimplex X U n → R) := + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X U n ≃ₗ[R] (OpenSimplex X U n → R) := LinearEquiv.ofLinearMap (singularCochainToSimplexFunction R X U n) (singularCochainOfSimplexFunction R X U n) (by @@ -159,7 +163,7 @@ def openSimplexMap {U V : (Opens X)ᵒᵖ} (i : U ⟶ V) (n : ℕ) : /-- Basis singular chains are natural under inclusion of open subsets. -/ lemma singularChainOfSimplex_naturality {U V : (Opens X)ᵒᵖ} (i : U ⟶ V) (n : ℕ) (s : OpenSimplex X V n) : - (((openSingularChainComplexFunctor R X).map i.unop).f n).hom + (((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map i.unop).f n).hom (singularChainOfSimplex R X V n s) = singularChainOfSimplex R X U n (openSimplexMap X i n s) := by have hs := SSet.ι_chainComplexMap_f _ _ @@ -171,13 +175,13 @@ lemma singularChainOfSimplex_naturality {U V : (Opens X)ᵒᵖ} (i : U ⟶ V) singular simplices. -/ lemma singularCochainToSimplexFunction_naturality {U V : (Opens X)ᵒᵖ} (i : U ⟶ V) (n : ℕ) - (φ : OpenCochains R X U n) : + (φ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X U n) : singularCochainToSimplexFunction R X V n - ((singularCochainPresheaf R X n).map i φ) = + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map i φ) = (singularCochainToSimplexFunction R X U n φ) ∘ openSimplexMap X i n := by ext s - change φ ((((openSingularChainComplexFunctor R X).map i.unop).f n).hom + change φ ((((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map i.unop).f n).hom (singularChainOfSimplex R X V n s)) = φ (singularChainOfSimplex R X U n (openSimplexMap X i n s)) rw [singularChainOfSimplex_naturality] @@ -214,13 +218,13 @@ set. Compatibility is expressed on basis simplices after mapping them into the c open. -/ lemma exists_openCochain_of_compatibleOnSimplexBasis {U : (Opens X)ᵒᵖ} {ι : Type*} (V : ι → (Opens X)ᵒᵖ) - (e : ∀ i, U ⟶ V i) (n : ℕ) (φ : ∀ i, OpenCochains R X (V i) n) + (e : ∀ i, U ⟶ V i) (n : ℕ) (φ : ∀ i, _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (V i) n) (hφ : ∀ (i j) (s : OpenSimplex X (V i) n) (t : OpenSimplex X (V j) n), openSimplexMap X (e i) n s = openSimplexMap X (e j) n t → singularCochainToSimplexFunction R X (V i) n (φ i) s = singularCochainToSimplexFunction R X (V j) n (φ j) t) : - ∃ ψ : OpenCochains R X U n, - ∀ i, (singularCochainPresheaf R X n).map (e i) ψ = φ i := by + ∃ ψ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X U n, + ∀ i, (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map (e i) ψ = φ i := by classical let Lift (s : OpenSimplex X U n) := Σ i, {t : OpenSimplex X (V i) n // openSimplexMap X (e i) n t = s} @@ -231,7 +235,7 @@ lemma exists_openCochain_of_compatibleOnSimplexBasis refine ⟨singularCochainOfSimplexFunction R X U n f, fun i ↦ ?_⟩ apply (singularCochainEquivSimplexFunction R X (V i) n).injective change singularCochainToSimplexFunction R X (V i) n - ((singularCochainPresheaf R X n).map (e i) + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map (e i) (singularCochainOfSimplexFunction R X U n f)) = singularCochainToSimplexFunction R X (V i) n (φ i) ext s @@ -250,9 +254,9 @@ lemma exists_openCochain_of_compatibleOnSimplexBasis cochain on the covered open set. -/ lemma exists_openCochain_of_meq {U : Opens X} (S : (Opens.grothendieckTopology X).Cover U) - (n : ℕ) (x : Meq (singularCochainPresheaf R X n) S) : - ∃ φ : OpenCochains R X (.op U) n, - ∀ I : S.Arrow, (singularCochainPresheaf R X n).map I.f.op φ = x I := by + (n : ℕ) (x : Meq (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n) S) : + ∃ φ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op U) n, + ∀ I : S.Arrow, (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map I.f.op φ = x I := by apply exists_openCochain_of_compatibleOnSimplexBasis R X (fun I : S.Arrow ↦ .op I.Y) (fun I ↦ I.f.op) n (fun I ↦ x I) intro I J s t hst @@ -272,10 +276,10 @@ lemma exists_openCochain_of_meq {U : Opens X} _ = singularCochainToSimplexFunction R X (.op I.Y) n (x I) (openSimplexMap X (homOfLE inf_le_left).op n r) := by rw [hrs] _ = singularCochainToSimplexFunction R X (.op (I.Y ⊓ J.Y)) n - ((singularCochainPresheaf R X n).map + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map (homOfLE inf_le_left).op (x I)) r := hl.symm _ = singularCochainToSimplexFunction R X (.op (I.Y ⊓ J.Y)) n - ((singularCochainPresheaf R X n).map + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map (homOfLE inf_le_right).op (x J)) r := hrel _ = singularCochainToSimplexFunction R X (.op J.Y) n (x J) (openSimplexMap X (homOfLE inf_le_right).op n r) := hr @@ -286,13 +290,13 @@ on the whole open set. This pointwise form avoids unfolding the large categorica plus map into a `Function.Surjective` proposition. -/ lemma singularCochain_toPlus_exists_rep (U : Opens X) (n : ℕ) (y : ToType (((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n)).obj (.op U))) : - ∃ φ : OpenCochains R X (.op U) n, + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).obj (.op U))) : + ∃ φ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op U) n, ((Opens.grothendieckTopology X).toPlus - (singularCochainPresheaf R X n)).app (.op U) φ = y := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).app (.op U) φ = y := by obtain ⟨S, x, hy⟩ := GrothendieckTopology.Plus.exists_rep y obtain ⟨φ, hφ⟩ := exists_openCochain_of_meq R X S n x - let φ' : ToType ((singularCochainPresheaf R X n).obj (.op U)) := φ + let φ' : ToType ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).obj (.op U)) := φ refine ⟨φ', ?_⟩ rw [hy] calc @@ -309,29 +313,29 @@ so raw cochain extension proves surjectivity of all its restriction maps. -/ instance singularCochainPlus_isFlasque (n : ℕ) : TopCat.Presheaf.IsFlasque ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n)) where + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)) where epi {U V} i := by rw [AddCommGrpCat.epi_iff_surjective] intro y obtain ⟨φV, hφV⟩ := singularCochain_toPlus_exists_rep R X V.unop n y - obtain ⟨φU, hφU⟩ := openSingularCochainRestriction_surjective R X i n φV + obtain ⟨φU, hφU⟩ := _root_.OAI.AlgebraicTopology.Singular.SheafCochainFlasque.openSingularCochainRestriction_surjective R X i n φV refine ⟨((Opens.grothendieckTopology X).toPlus - (singularCochainPresheaf R X n)).app U φU, ?_⟩ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).app U φU, ?_⟩ rw [← ConcreteCategory.comp_apply, ← ((Opens.grothendieckTopology X).toPlus - (singularCochainPresheaf R X n)).naturality i, + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).naturality i, ConcreteCategory.comp_apply, hφU, hφV] /-- The degree-zero singular chain associated to a point of an open subset. -/ noncomputable def singularZeroChainOfPoint (U : (Opens X)ᵒᵖ) (x : U.unop) : - OpenChains R X U 0 := + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenChains R X U 0 := singularChainOfSimplex R X U 0 ((@TopCat.toSSetObj₀Equiv.{u} ((Opens.toTopCat X).obj U.unop)).symm x) /-- The zero-chain associated to a point is natural under inclusion of open subsets. -/ lemma singularZeroChainOfPoint_naturality {U V : (Opens X)ᵒᵖ} (i : U ⟶ V) (x : V.unop) : - (((openSingularChainComplexFunctor R X).map i.unop).f 0).hom + (((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map i.unop).f 0).hom (singularZeroChainOfPoint R X V x) = singularZeroChainOfPoint R X U (i.unop x) := by let f := TopCat.toSSet.map ((Opens.toTopCat X).map i.unop) @@ -341,7 +345,7 @@ lemma singularZeroChainOfPoint_naturality {U V : (Opens X)ᵒᵖ} (i : U ⟶ V) /-- Evaluate a degree-zero singular cochain on the chain associated to each point. -/ def singularZeroCochainToFunction (U : (Opens X)ᵒᵖ) : - OpenCochains R X U 0 →ₗ[R] (U.unop → R) where + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X U 0 →ₗ[R] (U.unop → R) where toFun φ x := singularCochainToSimplexFunction R X U 0 φ ((@TopCat.toSSetObj₀Equiv.{u} ((Opens.toTopCat X).obj U.unop)).symm x) map_add' _ _ := rfl @@ -349,11 +353,11 @@ def singularZeroCochainToFunction (U : (Opens X)ᵒᵖ) : /-- Evaluation of zero-cochains commutes with restriction to an open subset. -/ lemma singularZeroCochainToFunction_naturality {U V : (Opens X)ᵒᵖ} (i : U ⟶ V) - (φ : OpenCochains R X U 0) : - singularZeroCochainToFunction R X V ((singularCochainPresheaf R X 0).map i φ) = + (φ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X U 0) : + singularZeroCochainToFunction R X V ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0).map i φ) = fun x ↦ singularZeroCochainToFunction R X U φ (i.unop x) := by ext x - change φ ((((openSingularChainComplexFunctor R X).map i.unop).f 0).hom + change φ ((((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map i.unop).f 0).hom (singularZeroChainOfPoint R X V x)) = φ (singularZeroChainOfPoint R X U (i.unop x)) rw [singularZeroChainOfPoint_naturality] @@ -361,7 +365,7 @@ lemma singularZeroCochainToFunction_naturality {U V : (Opens X)ᵒᵖ} (i : U /-- Construct a degree-zero singular cochain by transporting a function on points along the canonical equivalence between points and singular zero-simplices. -/ noncomputable def singularZeroCochainOfFunction (U : (Opens X)ᵒᵖ) : - (U.unop → R) →ₗ[R] OpenCochains R X U 0 where + (U.unop → R) →ₗ[R] _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X U 0 where toFun f := singularCochainOfSimplexFunction R X U 0 (f ∘ (@TopCat.toSSetObj₀Equiv.{u} ((Opens.toTopCat X).obj U.unop))) map_add' f g := by @@ -385,7 +389,7 @@ lemma singularZeroCochainToFunction_ofFunction (U : (Opens X)ᵒᵖ) (f : U.unop @[simp] lemma singularZeroCochainOfFunction_toFunction (U : (Opens X)ᵒᵖ) - (φ : OpenCochains R X U 0) : + (φ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X U 0) : singularZeroCochainOfFunction R X U (singularZeroCochainToFunction R X U φ) = φ := by change singularCochainOfSimplexFunction R X U 0 ((singularZeroCochainToFunction R X U φ) ∘ @@ -404,7 +408,7 @@ lemma singularZeroCochainOfFunction_toFunction (U : (Opens X)ᵒᵖ) /-- Degree-zero singular cochains are the all-degree simplex-function equivalence specialized at zero, transported along Mathlib's equivalence between zero-simplices and points. -/ noncomputable def singularZeroCochainEquivFunction (U : (Opens X)ᵒᵖ) : - OpenCochains R X U 0 ≃ₗ[R] (U.unop → R) := + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X U 0 ≃ₗ[R] (U.unop → R) := LinearEquiv.ofLinearMap (singularZeroCochainToFunction R X U) (singularZeroCochainOfFunction R X U) (by @@ -427,7 +431,7 @@ def functionPresheaf : TopCat.Presheaf AddCommGrpCat X where /-- The degree-zero singular-cochain presheaf is the presheaf of arbitrary functions. -/ noncomputable def singularZeroCochainPresheafIsoFunction : - singularCochainPresheaf R X 0 ≅ functionPresheaf R X := + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0 ≅ functionPresheaf R X := NatIso.ofComponents (fun U ↦ (singularZeroCochainEquivFunction R X U).toAddEquiv.toAddCommGrpIso) (fun i ↦ by @@ -443,7 +447,7 @@ lemma functionPresheaf_isSheaf : /-- The degree-zero singular-cochain presheaf is already a sheaf. -/ lemma singularCochainPresheaf_zero_isSheaf : - TopCat.Presheaf.IsSheaf (singularCochainPresheaf R X 0) := + TopCat.Presheaf.IsSheaf (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0) := (TopCat.Presheaf.isSheaf_iso_iff (singularZeroCochainPresheafIsoFunction R X)).mpr (functionPresheaf_isSheaf R X) @@ -451,16 +455,16 @@ lemma singularCochainPresheaf_zero_isSheaf : /-- Sheafification does not change the degree-zero singular-cochain presheaf. -/ noncomputable instance singularCochainPresheaf_zero_toSheafify_isIso : IsIso (toSheafify (Opens.grothendieckTopology X) - (singularCochainPresheaf R X 0)) := + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0)) := CategoryTheory.isIso_toSheafify (Opens.grothendieckTopology X) (singularCochainPresheaf_zero_isSheaf R X) /-- The degree-zero singular-cochain sheaf is flasque. -/ instance singularCochainSheaf_zero_isFlasque : - TopCat.Sheaf.IsFlasque (singularCochainSheaf R X 0) where + TopCat.Sheaf.IsFlasque (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R X 0) where epi {U V} i := by let J := Opens.grothendieckTopology X - let P := singularCochainPresheaf R X 0 + let P := _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X 0 let η := toSheafify J P let : IsIso η := singularCochainPresheaf_zero_toSheafify_isIso R X change Epi ((CategoryTheory.sheafify J P).map i) @@ -470,4 +474,9 @@ instance singularCochainSheaf_zero_isFlasque : exact CategoryTheory.epi_of_epi (η.app U) ((CategoryTheory.sheafify J P).map i) -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.SheafCochainDescent diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainFlasque.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainFlasque.lean index f332a43ae6..262413000f 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainFlasque.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainFlasque.lean @@ -12,18 +12,21 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.Cochain -public import HodgeConjecture.Mathlib.AlgebraicTopology.SimplicialSet.ChainComplexSplit -public import HodgeConjecture.Mathlib.LinearAlgebra.Dual.Defs -public import Mathlib.Algebra.Module.Projective -- shake: keep -public import Mathlib.Topology.Sheaves.Flasque +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.Cochain +import HodgeConjecture.Mathlib.AlgebraicTopology.SimplicialSet.ChainComplexSplit +import HodgeConjecture.Mathlib.LinearAlgebra.Dual.Defs +import Mathlib.Algebra.Module.Projective -- shake: keep +import Mathlib.Topology.Sheaves.Flasque import Mathlib.Algebra.Homology.HomologicalComplexLimits import Mathlib.LinearAlgebra.Dual.Lemmas +namespace OAI.AlgebraicTopology.Singular.SheafCochainFlasque + /-! # Flasqueness of open singular cochains @@ -36,58 +39,64 @@ ordinary singular cochains of the ambient space. These statements concern the pr sheafification; no claim that sheafification preserves flasqueness is used. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] (X : TopCat.{u}) /-- Inclusion of open subsets induces a monomorphism of singular chain complexes. -/ lemma openSingularChainComplexMap_mono {U V : Opens X} (i : U ⟶ V) : - Mono ((openSingularChainComplexFunctor R X).map i) := by + Mono ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map i) := by let : Mono ((Opens.toTopCat X).map i) := (TopCat.mono_iff_injective ((Opens.toTopCat X).map i)).mpr fun x y h ↦ Subtype.ext (congrArg (fun z : V ↦ z.1) h) - dsimp [openSingularChainComplexFunctor] + dsimp [_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor] apply Functor.map_mono /-- Inclusion of open subsets is injective on singular chains in every degree. -/ lemma openSingularChainMap_injective {U V : Opens X} (i : U ⟶ V) (n : ℕ) : - Function.Injective (((openSingularChainComplexFunctor R X).map i).f n).hom := by - let : Mono ((openSingularChainComplexFunctor R X).map i) := + Function.Injective (((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map i).f n).hom := by + let : Mono ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map i) := openSingularChainComplexMap_mono R X i rw [← ModuleCat.mono_iff_injective] exact Functor.map_mono (HomologicalComplex.eval (ModuleCat R) _ n) - ((openSingularChainComplexFunctor R X).map i) + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map i) /-- Inclusion of open subsets induces a split monomorphism on singular chains in each degree. -/ lemma openSingularChainMap_isSplitMono {U V : Opens X} (i : U ⟶ V) (n : ℕ) : - IsSplitMono (((openSingularChainComplexFunctor R X).map i).f n) := + IsSplitMono (((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map i).f n) := let _ : Mono ((Opens.toTopCat X).map i) := (TopCat.mono_iff_injective ((Opens.toTopCat X).map i)).mpr fun _ _ h ↦ Subtype.ext (congrArg (fun z : V ↦ z.1) h) - AlgebraicTopology.isSplitMono_singularChainComplexFunctor_map_f + _root_.OAI.AlgebraicTopology.SimplicialSet.ChainComplexSplit.isSplitMono_singularChainComplexFunctor_map_f ((Opens.toTopCat X).map i) (ModuleCat.of R R) n /-- Every cochain on an open subset extends linearly to a containing open subset. -/ lemma openSingularCochainRestriction_surjective {U V : (Opens X)ᵒᵖ} (i : U ⟶ V) (n : ℕ) : Function.Surjective - ((singularCochainPresheaf R X n).map i) := + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map i) := let _ := openSingularChainMap_isSplitMono R X i.unop n - LinearMap.dualMap_surjective_of_comp_eq_id + _root_.OAI.LinearAlgebra.Foundations.DualDefs.LinearMap.dualMap_surjective_of_comp_eq_id (congrArg ModuleCat.Hom.hom - (IsSplitMono.id (((openSingularChainComplexFunctor R X).map i.unop).f n))) + (IsSplitMono.id (((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map i.unop).f n))) /-- The presheaf of singular cochains in every fixed degree is flasque. -/ instance singularCochainPresheaf_isFlasque (n : ℕ) : - TopCat.Presheaf.IsFlasque (singularCochainPresheaf R X n) where + TopCat.Presheaf.IsFlasque (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n) where epi i := by rw [AddCommGrpCat.epi_iff_surjective] exact openSingularCochainRestriction_surjective R X i n -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.SheafCochainFlasque diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainOpenConeNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainOpenConeNaturality.lean index 5b15afa9ef..6fc030dc05 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainOpenConeNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainOpenConeNaturality.lean @@ -1,53 +1,57 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Definitions.AlgebraicTopology.Singular.Sheaf.CochainOpenCone -public import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingConeMapNaturality +import HodgeConjecture.Definitions.AlgebraicTopology.Singular.Sheaf.CochainOpenCone +import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingConeMapNaturality + +namespace OAI.AlgebraicTopology.Singular.CochainOpenConeNaturality /-! # Local restriction-cone naturality -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace -namespace AlgebraicTopology.Singular +section +section variable (R : Type) [CommRing R] (X : TopCat.{0}) {V W V' W' : Opens X} (i : W ⟶ V) (i' : W' ⟶ V') (a : V' ⟶ V) (b : W' ⟶ W) /-- Let `X` be a topological space and `W ⊆ V`, `W′ ⊆ V′` open subsets, with `V′ ⊆ V` and `W′ ⊆ W`. This map of topological pairs `(V′,W′) → (V,W)` is given by the two inclusions. -/ -def openInclusionPairMap : openInclusionPair X i' ⟶ openInclusionPair X i := +def openInclusionPairMap : _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openInclusionPair X i' ⟶ _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openInclusionPair X i := TopPair.ofHom ((Opens.toTopCat X).map a) ((Opens.toTopCat X).map b) (by ext x; rfl) /-- Restriction of raw cochains around an open-inclusion square. -/ lemma openRawSingularRestriction_square : - openRawSingularRestriction R X i ≫ openRawSingularRestriction R X b = - openRawSingularRestriction R X a ≫ openRawSingularRestriction R X i' := by + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularRestriction R X i ≫ _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularRestriction R X b = + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularRestriction R X a ≫ _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularRestriction R X i' := by apply HomologicalComplex.Hom.ext funext n - change (singularCochainPresheaf R X n).map i.op ≫ - (singularCochainPresheaf R X n).map b.op = - (singularCochainPresheaf R X n).map a.op ≫ - (singularCochainPresheaf R X n).map i'.op + change (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map i.op ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map b.op = + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map a.op ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map i'.op rw [← Functor.map_comp, ← Functor.map_comp] congr 1 /-- Sheaf-section restriction around the same square. -/ lemma openSingularSheafRestriction_square : - openSingularSheafRestriction R X i ≫ openSingularSheafRestriction R X b = - openSingularSheafRestriction R X a ≫ openSingularSheafRestriction R X i' := by + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openSingularSheafRestriction R X i ≫ _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openSingularSheafRestriction R X b = + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openSingularSheafRestriction R X a ≫ _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openSingularSheafRestriction R X i' := by apply HomologicalComplex.Hom.ext funext n - change (singularCochainSheaf R X n).obj.map i.op ≫ - (singularCochainSheaf R X n).obj.map b.op = - (singularCochainSheaf R X n).obj.map a.op ≫ - (singularCochainSheaf R X n).obj.map i'.op + change (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R X n).obj.map i.op ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R X n).obj.map b.op = + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R X n).obj.map a.op ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R X n).obj.map i'.op rw [← Functor.map_comp, ← Functor.map_comp] congr 1 @@ -56,10 +60,10 @@ For a commutative ring `R`, restriction of singular cochains induces this map `C C^•(W;R)) → Cone(C^•(V′;R) → C^•(W′;R))`, with all complexes extended by zero to negative degrees and regarded as complexes of abelian groups. -/ def openRawSingularRestrictionConeMap : - openRawSingularRestrictionCone R X i ⟶ openRawSingularRestrictionCone R X i' := + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionCone R X i ⟶ _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionCone R X i' := CochainComplex.mappingCone.map _ _ - (HomologicalComplex.extendMap (openRawSingularRestriction R X a) ComplexShape.embeddingUpNat) - (HomologicalComplex.extendMap (openRawSingularRestriction R X b) ComplexShape.embeddingUpNat) + (HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularRestriction R X a) ComplexShape.embeddingUpNat) + (HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularRestriction R X b) ComplexShape.embeddingUpNat) (by rw [← HomologicalComplex.extendMap_comp, ← HomologicalComplex.extendMap_comp, openRawSingularRestriction_square R X i i' a b]) @@ -68,10 +72,10 @@ Let `C` be the complex of sheafified singular cochains with coefficients in a co `R`. Restriction of sections gives this map `Cone(C(V) → C(W)) → Cone(C(V′) → C(W′))`, after extension by zero to negative degrees. -/ def openSingularSheafRestrictionConeMap : - openSingularSheafRestrictionCone R X i ⟶ openSingularSheafRestrictionCone R X i' := + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openSingularSheafRestrictionCone R X i ⟶ _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openSingularSheafRestrictionCone R X i' := CochainComplex.mappingCone.map _ _ - (HomologicalComplex.extendMap (openSingularSheafRestriction R X a) ComplexShape.embeddingUpNat) - (HomologicalComplex.extendMap (openSingularSheafRestriction R X b) ComplexShape.embeddingUpNat) + (HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openSingularSheafRestriction R X a) ComplexShape.embeddingUpNat) + (HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openSingularSheafRestriction R X b) ComplexShape.embeddingUpNat) (by rw [← HomologicalComplex.extendMap_comp, ← HomologicalComplex.extendMap_comp, openSingularSheafRestriction_square R X i i' a b]) @@ -81,24 +85,24 @@ set_option backward.isDefEq.respectTransparency false in @[reassoc] lemma openRawToSingularSheafRestrictionCone_naturality : openRawSingularRestrictionConeMap R X i i' a b ≫ - openRawToSingularSheafRestrictionCone R X i' = - openRawToSingularSheafRestrictionCone R X i ≫ + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawToSingularSheafRestrictionCone R X i' = + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawToSingularSheafRestrictionCone R X i ≫ openSingularSheafRestrictionConeMap R X i i' a b := by dsimp only [openRawSingularRestrictionConeMap, openSingularSheafRestrictionConeMap, - openRawToSingularSheafRestrictionCone] + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawToSingularSheafRestrictionCone] rw [← CochainComplex.mappingCone.map_comp, ← CochainComplex.mappingCone.map_comp] congr 1 <;> rw [← HomologicalComplex.extendMap_comp, - ← HomologicalComplex.extendMap_comp, openSingularSheafRestriction_naturality] + ← HomologicalComplex.extendMap_comp, _root_.OAI.AlgebraicTopology.Singular.SheafCochainTop.openSingularSheafRestriction_naturality] /-- The open raw-cone identification is exactly the standard cone map with its prescribed two components. -/ lemma openRawSingularRestrictionConeIsoRelative_hom : - (openRawSingularRestrictionConeIsoRelative R X i).hom = + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionConeIsoRelative R X i).hom = CochainComplex.mappingCone.map _ _ - (openRawSingularCochainComplexIntIsoDual R X V).hom - (openRawSingularCochainComplexIntIsoDual R X W).hom - (openRawSingularRestrictionInt_transport R X i) := - CochainComplex.mappingCone.mapArrowHom_eq_map _ _ _ _ _ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularCochainComplexIntIsoDual R X V).hom + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularCochainComplexIntIsoDual R X W).hom + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionInt_transport R X i) := + _root_.OAI.Algebra.Homology.MappingConeMapNaturality.CochainComplex.mappingCone.mapArrowHom_eq_map _ _ _ _ _ set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in @@ -110,18 +114,18 @@ scalar structure is forgotten before taking cones. -/ def forgottenRelativeCochainConeMap {P Q : TopPair.{0}} (f : P ⟶ Q) : CochainComplex.mappingCone (((forget₂ (ModuleCat R) AddCommGrpCat).mapHomologicalComplex ℤᵘᵖ).map - (relativeCochainRestrictionInt R Q)) ⟶ + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R Q)) ⟶ CochainComplex.mappingCone (((forget₂ (ModuleCat R) AddCommGrpCat).mapHomologicalComplex ℤᵘᵖ).map - (relativeCochainRestrictionInt R P)) := + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R P)) := CochainComplex.mappingCone.map _ _ (((forget₂ (ModuleCat R) AddCommGrpCat).mapHomologicalComplex ℤᵘᵖ).map - (relativeDualCochainShortComplexIntMap R f).τ₂) + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainIntMap.relativeDualCochainShortComplexIntMap R f).τ₂) (((forget₂ (ModuleCat R) AddCommGrpCat).mapHomologicalComplex ℤᵘᵖ).map - (relativeDualCochainShortComplexIntMap R f).τ₃) + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainIntMap.relativeDualCochainShortComplexIntMap R f).τ₃) (by rw [← Functor.map_comp, ← Functor.map_comp] exact congrArg ((forget₂ (ModuleCat R) AddCommGrpCat).mapHomologicalComplex ℤᵘᵖ).map - (relativeDualCochainShortComplexIntMap R f).comm₂₃.symm) + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainIntMap.relativeDualCochainShortComplexIntMap R f).comm₂₃.symm) set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in @@ -130,26 +134,26 @@ set_option backward.isDefEq.respectTransparency.types false in @[reassoc] lemma openRawSingularRestrictionConeIsoRelative_naturality : openRawSingularRestrictionConeMap R X i i' a b ≫ - (openRawSingularRestrictionConeIsoRelative R X i').hom = - (openRawSingularRestrictionConeIsoRelative R X i).hom ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionConeIsoRelative R X i').hom = + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionConeIsoRelative R X i).hom ≫ forgottenRelativeCochainConeMap R (openInclusionPairMap X i i' a b) := by rw [openRawSingularRestrictionConeIsoRelative_hom, openRawSingularRestrictionConeIsoRelative_hom] dsimp only [openRawSingularRestrictionConeMap, forgottenRelativeCochainConeMap] rw [← CochainComplex.mappingCone.map_comp, ← CochainComplex.mappingCone.map_comp] congr 1 - · exact openRawSingularRestrictionInt_transport R X a - · exact openRawSingularRestrictionInt_transport R X b + · exact _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionInt_transport R X a + · exact _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionInt_transport R X b /-- The raw local cone identified with the forgotten relative cone, including the canonical comparison for forgetting scalars. -/ def openRawSingularRestrictionConeIsoForgottenRelative : - openRawSingularRestrictionCone R X i ≅ + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionCone R X i ≅ ((forget₂ (ModuleCat R) AddCommGrpCat).mapHomologicalComplex ℤᵘᵖ).obj - (CochainComplex.mappingCone (relativeCochainRestrictionInt R (openInclusionPair X i))) := - openRawSingularRestrictionConeIsoRelative R X i ≪≫ + (CochainComplex.mappingCone (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openInclusionPair X i))) := + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionConeIsoRelative R X i ≪≫ (CochainComplex.mappingCone.mapHomologicalComplexIso - (relativeCochainRestrictionInt R (openInclusionPair X i)) + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openInclusionPair X i)) (forget₂ (ModuleCat R) AddCommGrpCat)).symm set_option backward.defeqAttrib.useBackward true in @@ -161,16 +165,16 @@ lemma openRawSingularRestrictionConeIsoForgottenRelative_naturality : (openRawSingularRestrictionConeIsoForgottenRelative R X i').hom = (openRawSingularRestrictionConeIsoForgottenRelative R X i).hom ≫ ((forget₂ (ModuleCat R) AddCommGrpCat).mapHomologicalComplex ℤᵘᵖ).map - (relativeCochainConeMap R (openInclusionPairMap X i i' a b)) := by + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainIntMap.relativeCochainConeMap R (openInclusionPairMap X i i' a b)) := by dsimp only [openRawSingularRestrictionConeIsoForgottenRelative, Iso.trans_hom, Iso.symm_hom] rw [← Category.assoc, openRawSingularRestrictionConeIsoRelative_naturality, Category.assoc, Category.assoc] apply (cancel_mono (CochainComplex.mappingCone.mapHomologicalComplexIso - (relativeCochainRestrictionInt R (openInclusionPair X i')) + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openInclusionPair X i')) (forget₂ (ModuleCat R) AddCommGrpCat)).hom).1 simp only [Category.assoc, Iso.inv_hom_id, Category.comp_id] - dsimp only [relativeCochainConeMap] - rw [CochainComplex.mappingCone.mapHomologicalComplexIso_naturality, + dsimp only [_root_.OAI.AlgebraicTopology.Singular.RelativeCochainIntMap.relativeCochainConeMap] + rw [_root_.OAI.Algebra.Homology.MappingConeMapNaturality.CochainComplex.mappingCone.mapHomologicalComplexIso_naturality, Iso.inv_hom_id_assoc] rfl @@ -180,15 +184,15 @@ underlying additive group of `H^n(Cone(C^•(V;R) → C^•(W;R)))` formed in `R the identification of open-subspace cochains with the fact that forgetting scalars commutes with cohomology. -/ def openRawSingularRestrictionConeHomologyIso (n : ℤ) : - (openRawSingularRestrictionCone R X i).homology n ≅ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionCone R X i).homology n ≅ (forget₂ (ModuleCat R) AddCommGrpCat).obj ((CochainComplex.mappingCone - (relativeCochainRestrictionInt R (openInclusionPair X i))).homology n) := + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openInclusionPair X i))).homology n) := HomologicalComplex.homologyMapIso (openRawSingularRestrictionConeIsoForgottenRelative R X i) n ≪≫ ShortComplex.mapHomologyIso ((CochainComplex.mappingCone - (relativeCochainRestrictionInt R (openInclusionPair X i))).sc n) + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openInclusionPair X i))).sc n) (forget₂ (ModuleCat R) AddCommGrpCat) set_option backward.defeqAttrib.useBackward true in @@ -201,7 +205,7 @@ lemma openRawSingularRestrictionConeHomologyIso_naturality (n : ℤ) : (openRawSingularRestrictionConeHomologyIso R X i n).hom ≫ (forget₂ (ModuleCat R) AddCommGrpCat).map (HomologicalComplex.homologyMap - (relativeCochainConeMap R (openInclusionPairMap X i i' a b)) n) := by + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainIntMap.relativeCochainConeMap R (openInclusionPairMap X i i' a b)) n) := by let H := HomologicalComplex.homologyFunctor AddCommGrpCat ℤᵘᵖ n change H.map (openRawSingularRestrictionConeMap R X i i' a b) ≫ (H.map (openRawSingularRestrictionConeIsoForgottenRelative R X i').hom ≫ _) = @@ -213,7 +217,7 @@ lemma openRawSingularRestrictionConeHomologyIso_naturality (n : ℤ) : (openRawSingularRestrictionConeIsoForgottenRelative R X i).hom ≫ f) (ShortComplex.mapHomologyIso_hom_naturality ((HomologicalComplex.shortComplexFunctor (ModuleCat R) ℤᵘᵖ n).map - (relativeCochainConeMap R (openInclusionPairMap X i i' a b))) + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainIntMap.relativeCochainConeMap R (openInclusionPairMap X i i' a b))) (forget₂ (ModuleCat R) AddCommGrpCat)) set_option backward.defeqAttrib.useBackward true in @@ -221,19 +225,19 @@ set_option backward.isDefEq.respectTransparency false in /-- The open-cone equivalence factors through this canonical homology comparison and the natural relative evaluation pairing. -/ lemma openRawSingularRestrictionConeCohomologyEquivRelative_eq (n : ℕ) - (z : (openRawSingularRestrictionCone R X i).homology ((n : ℤ) - 1)) : - openRawSingularRestrictionConeCohomologyEquivRelative R X i n z = - relativeCochainConeCohomologyEquivCanonical R (openInclusionPair X i) n + (z : (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionCone R X i).homology ((n : ℤ) - 1)) : + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionConeCohomologyEquivRelative R X i n z = + _root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeCochainConeCohomologyEquivCanonical R (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openInclusionPair X i) n ((openRawSingularRestrictionConeHomologyIso R X i ((n : ℤ) - 1)).hom z) := by - let eA := openRawSingularRestrictionConeIsoRelative R X i + let eA := _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionConeIsoRelative R X i let eB := CochainComplex.mappingCone.mapHomologicalComplexIso - (relativeCochainRestrictionInt R (openInclusionPair X i)) + (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainCone.relativeCochainRestrictionInt R (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openInclusionPair X i)) (forget₂ (ModuleCat R) AddCommGrpCat) let H := HomologicalComplex.homologyFunctor AddCommGrpCat ℤᵘᵖ ((n : ℤ) - 1) - change relativeCochainConeCohomologyEquivCanonical R (openInclusionPair X i) n + change _root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeCochainConeCohomologyEquivCanonical R (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openInclusionPair X i) n ((ShortComplex.mapHomologyIso _ (forget₂ (ModuleCat R) AddCommGrpCat)).hom (H.map eB.inv (H.map eA.hom z))) = - relativeCochainConeCohomologyEquivCanonical R (openInclusionPair X i) n + _root_.OAI.AlgebraicTopology.Singular.RelativeCochainConeNaturality.relativeCochainConeCohomologyEquivCanonical R (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openInclusionPair X i) n ((ShortComplex.mapHomologyIso _ (forget₂ (ModuleCat R) AddCommGrpCat)).hom (H.map (eA.hom ≫ eB.inv) z)) rw [H.map_comp] @@ -244,12 +248,12 @@ set_option backward.isDefEq.respectTransparency false in /-- Exact relative-cohomology naturality of the local raw-cone comparison, including all grading and scalar-forgetting identifications. -/ lemma openRawSingularRestrictionConeCohomologyEquivRelative_naturality (n : ℕ) - (z : (openRawSingularRestrictionCone R X i).homology ((n : ℤ) - 1)) : - openRawSingularRestrictionConeCohomologyEquivRelative R X i' n + (z : (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionCone R X i).homology ((n : ℤ) - 1)) : + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionConeCohomologyEquivRelative R X i' n (HomologicalComplex.homologyMap (openRawSingularRestrictionConeMap R X i i' a b) ((n : ℤ) - 1) z) = - relativeCohomologyMap R n (openInclusionPairMap X i i' a b) - (openRawSingularRestrictionConeCohomologyEquivRelative R X i n z) := by + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap R n (openInclusionPairMap X i i' a b) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionConeCohomologyEquivRelative R X i n z) := by rw [openRawSingularRestrictionConeCohomologyEquivRelative_eq, openRawSingularRestrictionConeCohomologyEquivRelative_eq] have h := ConcreteCategory.congr_hom @@ -257,10 +261,10 @@ lemma openRawSingularRestrictionConeCohomologyEquivRelative_naturality (n : ℕ) change (openRawSingularRestrictionConeHomologyIso R X i' ((n : ℤ) - 1)).hom (HomologicalComplex.homologyMap (openRawSingularRestrictionConeMap R X i i' a b) ((n : ℤ) - 1) z) = - HomologicalComplex.homologyMap (relativeCochainConeMap R (openInclusionPairMap X i i' a b)) + HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Singular.RelativeCochainIntMap.relativeCochainConeMap R (openInclusionPairMap X i i' a b)) ((n : ℤ) - 1) ((openRawSingularRestrictionConeHomologyIso R X i ((n : ℤ) - 1)).hom z) at h rw [h] - exact relativeCochainConeCohomologyEquivCanonical_naturality _ _ _ _ + exact _root_.OAI.AlgebraicTopology.Singular.RelativeCochainIntMap.relativeCochainConeCohomologyEquivCanonical_naturality _ _ _ _ /-- Let `W ⊆ V` be open subsets of a topological space `X`, each Hausdorff and paracompact. Write `C` for the sheafified rational singular cochain complex. Sheafification induces this @@ -268,10 +272,10 @@ isomorphism `H^n(Cone(C^•(V;ℚ) → C^•(W;ℚ))) ≅ H^n(Cone(C(V) → C(W) comparing raw cochains with sections of the cochain sheaves. -/ def openRawToSingularSheafRestrictionConeHomologyIso [ParacompactSpace V] [T2Space V] [ParacompactSpace W] [T2Space W] (n : ℤ) : - (openRawSingularRestrictionCone ℚ X i).homology n ≅ - (openSingularSheafRestrictionCone ℚ X i).homology n := - letI := openRawToSingularSheafRestrictionCone_quasiIso X i - asIso (HomologicalComplex.homologyMap (openRawToSingularSheafRestrictionCone ℚ X i) n) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionCone ℚ X i).homology n ≅ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openSingularSheafRestrictionCone ℚ X i).homology n := + letI := _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawToSingularSheafRestrictionCone_quasiIso X i + asIso (HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawToSingularSheafRestrictionCone ℚ X i) n) set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in @@ -303,18 +307,18 @@ ambient-open restriction with the relative-cohomology pullback. -/ lemma openSingularSheafRestrictionConeCohomologyEquivRelative_naturality [ParacompactSpace V] [T2Space V] [ParacompactSpace W] [T2Space W] [ParacompactSpace V'] [T2Space V'] [ParacompactSpace W'] [T2Space W'] (n : ℕ) - (z : (openSingularSheafRestrictionCone ℚ X i).homology ((n : ℤ) - 1)) : - openSingularSheafRestrictionConeCohomologyEquivRelative X i' n + (z : (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openSingularSheafRestrictionCone ℚ X i).homology ((n : ℤ) - 1)) : + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openSingularSheafRestrictionConeCohomologyEquivRelative X i' n (HomologicalComplex.homologyMap (openSingularSheafRestrictionConeMap ℚ X i i' a b) ((n : ℤ) - 1) z) = - relativeCohomologyMap ℚ n (openInclusionPairMap X i i' a b) - (openSingularSheafRestrictionConeCohomologyEquivRelative X i n z) := by - change openRawSingularRestrictionConeCohomologyEquivRelative ℚ X i' n + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n (openInclusionPairMap X i i' a b) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openSingularSheafRestrictionConeCohomologyEquivRelative X i n z) := by + change _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionConeCohomologyEquivRelative ℚ X i' n ((openRawToSingularSheafRestrictionConeHomologyIso X i' ((n : ℤ) - 1)).inv (HomologicalComplex.homologyMap (openSingularSheafRestrictionConeMap ℚ X i i' a b) ((n : ℤ) - 1) z)) = - relativeCohomologyMap ℚ n (openInclusionPairMap X i i' a b) - (openRawSingularRestrictionConeCohomologyEquivRelative ℚ X i n + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n (openInclusionPairMap X i i' a b) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openRawSingularRestrictionConeCohomologyEquivRelative ℚ X i n ((openRawToSingularSheafRestrictionConeHomologyIso X i ((n : ℤ) - 1)).inv z)) have h := ConcreteCategory.congr_hom (openRawToSingularSheafRestrictionConeHomologyIso_inv_naturality X i i' a b @@ -327,4 +331,9 @@ lemma openSingularSheafRestrictionConeCohomologyEquivRelative_naturality rw [h] exact openRawSingularRestrictionConeCohomologyEquivRelative_naturality _ _ _ _ _ _ _ _ -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.CochainOpenConeNaturality diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainOpenRestriction.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainOpenRestriction.lean index 2b70ee05e1..012af0b977 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainOpenRestriction.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainOpenRestriction.lean @@ -1,20 +1,27 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenSheafification -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.SubdivisionCochain +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenSheafification +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.SubdivisionCochain + +namespace OAI.AlgebraicTopology.Singular.SheafCochainOpenRestriction + +open _root_.AlgebraicTopology + /-! # Singular cochains and restriction to open subspaces -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] (X : TopCat.{u}) (U : Opens X) @@ -37,18 +44,18 @@ lemma openSubspaceImageIso_naturality {V W : Opens U} (f : V ⟶ W) : subspace `U`, the identification of `V` with its image in `X` induces this isomorphism of singular chain complexes with coefficients in `R`. -/ def openSubspaceImageChainIso (V : Opens U) : - (openSingularChainComplexFunctor R (TopCat.of U)).obj V ≅ - (openSingularChainComplexFunctor R X).obj (U.isOpenEmbedding.functor.obj V) := + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R (TopCat.of U)).obj V ≅ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).obj (U.isOpenEmbedding.functor.obj V) := ((singularChainComplexFunctor (ModuleCat.{u} R)).obj (ModuleCat.of R R)).mapIso (openSubspaceImageIso X U V) @[reassoc] lemma openSubspaceImageChainIso_naturality {V W : Opens U} (f : V ⟶ W) : - (openSingularChainComplexFunctor R (TopCat.of U)).map f ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R (TopCat.of U)).map f ≫ (openSubspaceImageChainIso R X U W).hom = (openSubspaceImageChainIso R X U V).hom ≫ - (openSingularChainComplexFunctor R X).map (U.isOpenEmbedding.functor.map f) := by - dsimp only [openSubspaceImageChainIso, openSingularChainComplexFunctor, + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map (U.isOpenEmbedding.functor.map f) := by + dsimp only [openSubspaceImageChainIso, _root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor, Functor.comp_map, Functor.mapIso_hom] rw [← Functor.map_comp, ← Functor.map_comp, openSubspaceImageIso_naturality] @@ -57,16 +64,16 @@ degree `n`, this isomorphism identifies the restriction to `U` of the presheaf o `R`-valued `n`-cochains on `X` with the singular cochain presheaf defined on `U` itself. It is induced by identifying each open subset of `U` with its image in `X`. -/ def singularCochainPresheafOpenRestrictionIso (n : ℕ) : - U.isOpenEmbedding.functor.op ⋙ singularCochainPresheaf R X n ≅ - singularCochainPresheaf R (TopCat.of U) n := + U.isOpenEmbedding.functor.op ⋙ _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n ≅ + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R (TopCat.of U) n := NatIso.ofComponents (fun V => (forget₂ (ModuleCat.{u} R) AddCommGrpCat).mapIso ((HomologicalComplex.eval (ModuleCat.{u} R) (.up ℕ) n).mapIso - (HomologicalComplex.linearDualIso (openSubspaceImageChainIso R X U V.unop)))) + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualIso (openSubspaceImageChainIso R X U V.unop)))) (by intro V W f ext φ - change OpenCochains R X (.op (U.isOpenEmbedding.functor.obj V.unop)) n at φ + change _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op (U.isOpenEmbedding.functor.obj V.unop)) n at φ apply LinearMap.ext intro c exact congrArg φ (ConcreteCategory.congr_hom @@ -74,14 +81,14 @@ def singularCochainPresheafOpenRestrictionIso (n : ℕ) : (openSubspaceImageChainIso_naturality R X U f.unop)).symm c)) lemma singularCochainPresheafOpenRestrictionIso_coboundary (n : ℕ) : - Functor.whiskerLeft U.isOpenEmbedding.functor.op (singularCochainCoboundary R X n) ≫ + Functor.whiskerLeft U.isOpenEmbedding.functor.op (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X n) ≫ (singularCochainPresheafOpenRestrictionIso R X U (n + 1)).hom = (singularCochainPresheafOpenRestrictionIso R X U n).hom ≫ - singularCochainCoboundary R (TopCat.of U) n := by + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R (TopCat.of U) n := by apply NatTrans.ext funext V ext φ - change OpenCochains R X (.op (U.isOpenEmbedding.functor.obj V.unop)) n at φ + change _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op (U.isOpenEmbedding.functor.obj V.unop)) n at φ apply LinearMap.ext intro c exact congrArg φ (ConcreteCategory.congr_hom @@ -97,22 +104,22 @@ in `X`; these identifications commute with the coboundary. -/ def singularCochainPresheafComplexOpenRestrictionIso : (Functor.mapHomologicalComplex ((Functor.whiskeringLeft _ _ AddCommGrpCat).obj U.isOpenEmbedding.functor.op) - (.up ℕ)).obj (singularCochainPresheafComplex R X) ≅ - singularCochainPresheafComplex R (TopCat.of U) := + (.up ℕ)).obj (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X) ≅ + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R (TopCat.of U) := HomologicalComplex.Hom.isoOfComponents (singularCochainPresheafOpenRestrictionIso R X U) (by intro i j hij obtain rfl := hij - rw [Functor.mapHomologicalComplex_obj_d, singularCochainPresheafComplex_d, - singularCochainPresheafComplex_d] + rw [Functor.mapHomologicalComplex_obj_d, _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex_d, + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex_d] exact (singularCochainPresheafOpenRestrictionIso_coboundary R X U i).symm) /-- Restriction of the ambient singular cochain sheaf is the intrinsic singular cochain sheaf of the open subspace, with its unit normalization. -/ def singularCochainSheafOpenRestrictionIso (n : ℕ) : - (U.isOpenEmbedding.sheafPullback AddCommGrpCat).obj (singularCochainSheaf R X n) ≅ - singularCochainSheaf R (TopCat.of U) n := - (TopCat.Sheaf.openRestrictionSheafificationIso X U (singularCochainPresheaf R X n)).symm ≪≫ + (U.isOpenEmbedding.sheafPullback AddCommGrpCat).obj (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R X n) ≅ + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R (TopCat.of U) n := + (_root_.OAI.AlgebraicTopology.Sheaf.OpenSheafification.TopCat.openRestrictionSheafificationIso X U (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).symm ≪≫ (presheafToSheaf (Opens.grothendieckTopology (TopCat.of U)) AddCommGrpCat).mapIso (singularCochainPresheafOpenRestrictionIso R X U n) @@ -120,16 +127,16 @@ set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in lemma singularCochainSheafOpenRestrictionIso_coboundary (n : ℕ) : (U.isOpenEmbedding.sheafPullback AddCommGrpCat).map - (singularCochainSheafCoboundary R X n) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafCoboundary R X n) ≫ (singularCochainSheafOpenRestrictionIso R X U (n + 1)).hom = (singularCochainSheafOpenRestrictionIso R X U n).hom ≫ - singularCochainSheafCoboundary R (TopCat.of U) n := by - apply (cancel_epi (TopCat.Sheaf.openRestrictionSheafificationIso X U - (singularCochainPresheaf R X n)).hom).1 - dsimp only [singularCochainSheafOpenRestrictionIso, singularCochainSheafCoboundary] + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafCoboundary R (TopCat.of U) n := by + apply (cancel_epi (_root_.OAI.AlgebraicTopology.Sheaf.OpenSheafification.TopCat.openRestrictionSheafificationIso X U + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).hom).1 + dsimp only [singularCochainSheafOpenRestrictionIso, _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafCoboundary] simp only [Iso.trans_hom, Iso.symm_hom, Functor.mapIso_hom, Category.assoc, Iso.hom_inv_id_assoc] - rw [← TopCat.Sheaf.openRestrictionSheafificationIso_naturality_assoc, + rw [← _root_.OAI.AlgebraicTopology.Sheaf.OpenSheafification.TopCat.openRestrictionSheafificationIso_naturality_assoc, Iso.hom_inv_id_assoc, ← Functor.map_comp, ← Functor.map_comp, singularCochainPresheafOpenRestrictionIso_coboundary] @@ -141,13 +148,13 @@ the degreewise sheafifications of the presheaf complexes of singular `R`-cochain and the compatibility of sheafification with open restriction. -/ def singularCochainSheafComplexOpenRestrictionIso : ((U.isOpenEmbedding.sheafPullback AddCommGrpCat).mapHomologicalComplex (.up ℕ)).obj - (singularCochainSheafComplex R X) ≅ - singularCochainSheafComplex R (TopCat.of U) := + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex R X) ≅ + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex R (TopCat.of U) := HomologicalComplex.Hom.isoOfComponents (singularCochainSheafOpenRestrictionIso R X U) (by intro i j hij obtain rfl := hij - simpa only [Functor.mapHomologicalComplex_obj_d, singularCochainSheafComplex_d] using + simpa only [Functor.mapHomologicalComplex_obj_d, _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex_d] using (singularCochainSheafOpenRestrictionIso_coboundary R X U i).symm) set_option backward.defeqAttrib.useBackward true in @@ -156,12 +163,12 @@ set_option backward.isDefEq.respectTransparency false in @[reassoc] lemma toSheafify_singularCochainSheafOpenRestrictionIso (n : ℕ) : Functor.whiskerLeft U.isOpenEmbedding.functor.op - (toSheafify (Opens.grothendieckTopology X) (singularCochainPresheaf R X n)) ≫ + (toSheafify (Opens.grothendieckTopology X) (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)) ≫ (singularCochainSheafOpenRestrictionIso R X U n).hom.hom = (singularCochainPresheafOpenRestrictionIso R X U n).hom ≫ toSheafify (Opens.grothendieckTopology (TopCat.of U)) - (singularCochainPresheaf R (TopCat.of U) n) := by - rw [← TopCat.Sheaf.toSheafify_openRestrictionSheafificationIso] + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R (TopCat.of U) n) := by + rw [← _root_.OAI.AlgebraicTopology.Sheaf.OpenSheafification.TopCat.toSheafify_openRestrictionSheafificationIso] dsimp only [singularCochainSheafOpenRestrictionIso] rw [Iso.trans_hom, ObjectProperty.FullSubcategory.comp_hom, Category.assoc] simp only [Iso.symm_hom, Functor.mapIso_hom, ← Category.assoc, @@ -169,4 +176,9 @@ lemma toSheafify_singularCochainSheafOpenRestrictionIso (n : ℕ) : exact (toSheafify_naturality (Opens.grothendieckTopology (TopCat.of U)) (singularCochainPresheafOpenRestrictionIso R X U n).hom).symm -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.SheafCochainOpenRestriction diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainOpenSections.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainOpenSections.lean index 8d7b7cfbf2..8d346a74cd 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainOpenSections.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainOpenSections.lean @@ -1,10 +1,13 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Singular.Sheaf.CochainOpenSections +import HodgeConjecture.Definitions.AlgebraicTopology.Singular.Sheaf.CochainOpenSections + +namespace OAI.AlgebraicTopology.Singular.SheafCochainTop /-! # Singular cochains compute sheafified cochains on an arbitrary open @@ -15,11 +18,12 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite -namespace AlgebraicTopology.Singular +section +section variable (R : Type) [CommRing R] (X : TopCat.{0}) @@ -34,44 +38,46 @@ this identifies the singular cochain presheaf on `X` evaluated at `V` with the s presheaf on the space `V` evaluated at its whole space. Both are the complex `C^•(V;R)`, regarded as a complex of abelian groups. -/ def openRawSingularCochainComplexIsoGlobal (V : Opens X) : - openRawSingularCochainComplex R X V ≅ globalRawSingularCochainComplex R (TopCat.of V) := + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularCochainComplex R X V ≅ _root_.OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain.globalRawSingularCochainComplex R (TopCat.of V) := (NatIso.mapHomologicalComplex ((evaluation (Opens X)ᵒᵖ AddCommGrpCat).mapIso (openSubspaceImageTopIso X V).op) - (.up ℕ)).app (singularCochainPresheafComplex R X) ≪≫ + (.up ℕ)).app (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X) ≪≫ (((evaluation (Opens (TopCat.of V))ᵒᵖ AddCommGrpCat).obj (.op ⊤)).mapHomologicalComplex - (.up ℕ)).mapIso (singularCochainPresheafComplexOpenRestrictionIso R X V) + (.up ℕ)).mapIso (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenRestriction.singularCochainPresheafComplexOpenRestrictionIso R X V) set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in /-- Sections of the ambient singular sheaf on `V` identified with global sections of its intrinsic singular sheaf, using the normalized open restriction. -/ def openSingularCochainSheafComplexIsoGlobal (V : Opens X) : - openSingularCochainSheafComplex R X V ≅ - globalSingularCochainSheafComplex R (TopCat.of V) := + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openSingularCochainSheafComplex R X V ≅ + _root_.OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain.globalSingularCochainSheafComplex R (TopCat.of V) := letI : (TopCat.Sheaf.forget AddCommGrpCat X ⋙ (evaluation (Opens X)ᵒᵖ AddCommGrpCat).obj (.op V)).PreservesZeroMorphisms := - inferInstanceAs ((TopCat.Sheaf.supportEvaluation X V).PreservesZeroMorphisms) + inferInstanceAs ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).PreservesZeroMorphisms) letI : (TopCat.Sheaf.forget AddCommGrpCat X ⋙ (evaluation (Opens X)ᵒᵖ AddCommGrpCat).obj (.op (V.isOpenEmbedding.functor.obj ⊤))).PreservesZeroMorphisms := - inferInstanceAs ((TopCat.Sheaf.supportEvaluation X + inferInstanceAs ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X (V.isOpenEmbedding.functor.obj ⊤)).PreservesZeroMorphisms) (NatIso.mapHomologicalComplex (Functor.isoWhiskerLeft (TopCat.Sheaf.forget AddCommGrpCat X) ((evaluation (Opens X)ᵒᵖ AddCommGrpCat).mapIso (openSubspaceImageTopIso X V).op)) - (.up ℕ)).app (singularCochainSheafComplex R X) ≪≫ - ((TopCat.Sheaf.supportEvaluation (TopCat.of V) ⊤).mapHomologicalComplex (.up ℕ)).mapIso - (singularCochainSheafComplexOpenRestrictionIso R X V) + (.up ℕ)).app (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex R X) ≪≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation (TopCat.of V) ⊤).mapHomologicalComplex (.up ℕ)).mapIso + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenRestriction.singularCochainSheafComplexOpenRestrictionIso R X V) -end AlgebraicTopology.Singular +end +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite -namespace AlgebraicTopology.Singular +section +section variable (R : Type) [CommRing R] (X : TopCat.{0}) @@ -80,43 +86,43 @@ set_option backward.isDefEq.respectTransparency false in /-- The intrinsic/global comparison retains the sheafification unit. -/ @[reassoc] lemma openRawToSingularCochainSheafComplex_global (V : Opens X) : - openRawToSingularCochainSheafComplex R X V ≫ + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawToSingularCochainSheafComplex R X V ≫ (openSingularCochainSheafComplexIsoGlobal R X V).hom = (openRawSingularCochainComplexIsoGlobal R X V).hom ≫ - topOpenToGlobalSingularCochainSheafComplex R (TopCat.of V) := by + _root_.OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain.topOpenToGlobalSingularCochainSheafComplex R (TopCat.of V) := by apply HomologicalComplex.Hom.ext funext n - change (toSheafify (Opens.grothendieckTopology X) (singularCochainPresheaf R X n)).app + change (toSheafify (Opens.grothendieckTopology X) (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).app (.op V) ≫ - ((singularCochainSheaf R X n).obj.map (openSubspaceImageTopIso X V).hom.op ≫ - (singularCochainSheafOpenRestrictionIso R X V n).hom.hom.app (.op ⊤)) = - ((singularCochainPresheaf R X n).map (openSubspaceImageTopIso X V).hom.op ≫ - (singularCochainPresheafOpenRestrictionIso R X V n).hom.app (.op ⊤)) ≫ _ + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R X n).obj.map (openSubspaceImageTopIso X V).hom.op ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenRestriction.singularCochainSheafOpenRestrictionIso R X V n).hom.hom.app (.op ⊤)) = + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map (openSubspaceImageTopIso X V).hom.op ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenRestriction.singularCochainPresheafOpenRestrictionIso R X V n).hom.app (.op ⊤)) ≫ _ calc - _ = (singularCochainPresheaf R X n).map (openSubspaceImageTopIso X V).hom.op ≫ + _ = (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map (openSubspaceImageTopIso X V).hom.op ≫ (toSheafify (Opens.grothendieckTopology X) - (singularCochainPresheaf R X n)).app + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).app (.op (V.isOpenEmbedding.functor.obj ⊤)) ≫ - (singularCochainSheafOpenRestrictionIso R X V n).hom.hom.app (.op ⊤) := + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenRestriction.singularCochainSheafOpenRestrictionIso R X V n).hom.hom.app (.op ⊤) := ((toSheafify (Opens.grothendieckTopology X) - (singularCochainPresheaf R X n)).naturality_assoc + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).naturality_assoc (openSubspaceImageTopIso X V).hom.op _).symm _ = _ := by - rw [Category.assoc, topOpenToGlobalSingularCochainSheafComplex_f] + rw [Category.assoc, _root_.OAI.AlgebraicTopology.Singular.GlobalRestriction.topOpenToGlobalSingularCochainSheafComplex_f] exact congrArg - (fun f => (singularCochainPresheaf R X n).map + (fun f => (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map (openSubspaceImageTopIso X V).hom.op ≫ f.app (.op ⊤)) - (toSheafify_singularCochainSheafOpenRestrictionIso R X V n) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenRestriction.toSheafify_singularCochainSheafOpenRestrictionIso R X V n) /-- On any paracompact Hausdorff ambient open, raw rational singular cochains map quasi-isomorphically to sections of the singular sheaf. The hypothesis is on that open alone. -/ theorem openRawToSingularCochainSheafComplex_quasiIso (V : Opens X) [ParacompactSpace V] [T2Space V] : - QuasiIso (openRawToSingularCochainSheafComplex ℚ X V) := by - have := topOpenToGlobalSingularCochainSheafComplex_quasiIso (Y := TopCat.of V) + QuasiIso (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawToSingularCochainSheafComplex ℚ X V) := by + have := _root_.OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain.topOpenToGlobalSingularCochainSheafComplex_quasiIso (Y := TopCat.of V) have : QuasiIso ((openRawSingularCochainComplexIsoGlobal ℚ X V).hom ≫ - topOpenToGlobalSingularCochainSheafComplex ℚ (TopCat.of V)) := inferInstance + _root_.OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain.topOpenToGlobalSingularCochainSheafComplex ℚ (TopCat.of V)) := inferInstance rw [← openRawToSingularCochainSheafComplex_global] at this exact (quasiIso_iff_comp_right _ _).mp this @@ -124,11 +130,16 @@ theorem openRawToSingularCochainSheafComplex_quasiIso (V : Opens X) In particular this applies to `W = V ⊓ U`. -/ @[reassoc] lemma openSingularSheafRestriction_naturality {V W : Opens X} (i : W ⟶ V) : - openRawToSingularCochainSheafComplex R X V ≫ openSingularSheafRestriction R X i = - openRawSingularRestriction R X i ≫ openRawToSingularCochainSheafComplex R X W := by + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawToSingularCochainSheafComplex R X V ≫ _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openSingularSheafRestriction R X i = + _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawSingularRestriction R X i ≫ _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenSections.openRawToSingularCochainSheafComplex R X W := by apply HomologicalComplex.Hom.ext funext n exact ((toSheafify (Opens.grothendieckTopology X) - (singularCochainPresheaf R X n)).naturality i.op).symm + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).naturality i.op).symm + +end +end + +end -end AlgebraicTopology.Singular +end OAI.AlgebraicTopology.Singular.SheafCochainTop diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainResolution.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainResolution.lean index 12b4a30387..772b195a4c 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainResolution.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainResolution.lean @@ -12,10 +12,13 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Cohomology.SingularSheafComparison +import HodgeConjecture.Lemmas.AlgebraicGeometry.Cohomology.SingularSheafComparison + +namespace OAI.AlgebraicTopology.Singular.SheafCochainResolution /-! # The singular-cochain resolution of a constant sheaf @@ -24,23 +27,24 @@ The map from a constant sheaf to its sheafified singular-cochain complex is a mo a quasi-isomorphism on a space with a basis of contractible open sets. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Filter Limits TopologicalSpace +open _root_.CategoryTheory Filter Limits _root_.TopologicalSpace -namespace AlgebraicTopology.Singular +section +section set_option backward.isDefEq.respectTransparency false in /-- The constant-to-singular-cochain resolution is a monomorphism of complexes. -/ lemma constantsToSingularCochainSheafComplex_mono (R : Type) [CommRing R] (Y : TopCat.{0}) : - Mono (constantsToSingularCochainSheafComplex R Y) := by + Mono (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex R Y) := by apply HomologicalComplex.mono_of_mono_f intro n cases n with | zero => - change Mono (constantsToSingularCochainZeroSheaf R Y) - exact constantsToSingularCochainZeroSheaf_mono R Y + change Mono (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainZeroSheaf R Y) + exact _root_.OAI.AlgebraicTopology.Singular.SheafCochainAt.constantsToSingularCochainZeroSheaf_mono R Y | succ n => exact (HomologicalComplex.isZero_single_obj_X (ComplexShape.up ℕ) 0 𝓒(Y; R) (n + 1) (by lia)).mono _ @@ -49,8 +53,8 @@ lemma constantsToSingularCochainSheafComplex_mono lemma constantsToSingularCochainComplexInt_mono (R : Type) [CommRing R] (Y : TopCat.{0}) : Mono (HomologicalComplex.extendMap - (constantsToSingularCochainSheafComplex R Y) ComplexShape.embeddingUpNat) := by - let a := constantsToSingularCochainSheafComplex R Y + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex R Y) ComplexShape.embeddingUpNat) := by + let a := _root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex R Y let : Mono a := constantsToSingularCochainSheafComplex_mono R Y apply HomologicalComplex.mono_of_mono_f intro n @@ -64,9 +68,11 @@ lemma constantsToSingularCochainComplexInt_mono 𝓒(Y; R)).isZero_extend_X ComplexShape.embeddingUpNat n (fun i hi ↦ hn ⟨i, hi⟩)).mono _ -end AlgebraicTopology.Singular +end +end -namespace AlgebraicTopology.Singular +section +section universe u @@ -113,17 +119,20 @@ lemma locallyPathConnectedSpace_of_contractibleOpenBasis lemma constantsToSingularCochainSheafComplex_quasiIso_of_contractibleOpenBasis (hX : ∀ (x : X) (V : Opens X), x ∈ V → ∃ (W : Opens X), x ∈ W ∧ ContractibleSpace W ∧ W ≤ V) : - QuasiIso (constantsToSingularCochainSheafComplex R X) := by + QuasiIso (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.constantsToSingularCochainSheafComplex R X) := by let : LocallyPathConnectedSpace X := locallyPathConnectedSpace_of_contractibleOpenBasis hX constructor intro n cases n with - | zero => exact constantsToSingularCochainSheafComplex_quasiIsoAt_zero R X + | zero => exact _root_.OAI.AlgebraicTopology.Singular.SheafCochainAt.constantsToSingularCochainSheafComplex_quasiIsoAt_zero R X | succ n => - exact constantsToSingularCochainSheafComplex_quasiIsoAt_succ_of_contractibleOpenBasis + exact _root_.OAI.AlgebraicTopology.Singular.SheafCochainAt.constantsToSingularCochainSheafComplex_quasiIsoAt_succ_of_contractibleOpenBasis R X hX n -end AlgebraicTopology.Singular +end +end end + +end OAI.AlgebraicTopology.Singular.SheafCochainResolution diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainRestriction.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainRestriction.lean index 6b6d746935..0d8575c108 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainRestriction.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/CochainRestriction.lean @@ -12,13 +12,18 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainResolution +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainResolution import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicTopology.Singular.SheafCochainRestriction + +open _root_.AlgebraicTopology + /-! # Restriction of singular cochains through direct image @@ -26,13 +31,14 @@ For an open embedding `j : U → X`, restriction of singular cochains from `X` t cochain complexes of sheaves `C^•_X → j_* C^•_U`, natural with respect to sheafification. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Filter TopologicalSpace +open _root_.CategoryTheory Filter _root_.TopologicalSpace universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] {U X : TopCat.{u}} (j : U ⟶ X) @@ -43,15 +49,15 @@ def preimageOpenToOpen (V : Opens X) : Continuous.subtype_mk (j.hom.continuous.comp continuous_subtype_val) _⟩ noncomputable def preimageOpenChainMap (V : Opens X) : - (openSingularChainComplexFunctor R U).obj ((Opens.map j).obj V) ⟶ - (openSingularChainComplexFunctor R X).obj V := + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R U).obj ((Opens.map j).obj V) ⟶ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).obj V := ((AlgebraicTopology.singularChainComplexFunctor (ModuleCat.{u} R)).obj (ModuleCat.of R R)).map (preimageOpenToOpen j V) lemma preimageOpenChainMap_naturality {V W : Opens X} (i : V ⟶ W) : - (openSingularChainComplexFunctor R U).map ((Opens.map j).map i) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R U).map ((Opens.map j).map i) ≫ preimageOpenChainMap R j W = - preimageOpenChainMap R j V ≫ (openSingularChainComplexFunctor R X).map i := by + preimageOpenChainMap R j V ≫ (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map i := by let F := (AlgebraicTopology.singularChainComplexFunctor (ModuleCat.{u} R)).obj (ModuleCat.of R R) change F.map ((Opens.toTopCat U).map ((Opens.map j).map i)) ≫ @@ -61,64 +67,64 @@ lemma preimageOpenChainMap_naturality {V W : Opens X} (i : V ⟶ W) : congr 1 noncomputable def singularRestrictionToRawPushforward (n : ℕ) : - singularCochainPresheaf R X n ⟶ - (Opens.map j).op ⋙ singularCochainPresheaf R U n where + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n ⟶ + (Opens.map j).op ⋙ _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R U n where app V := AddCommGrpCat.ofHom ((preimageOpenChainMap R j V.unop).f n).hom.dualMap.toAddMonoidHom naturality {V W} i := by apply AddCommGrpCat.hom_ext apply AddMonoidHom.ext intro φ - change OpenCochains R X V n at φ + change _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X V n at φ apply LinearMap.ext intro c change φ - (((((openSingularChainComplexFunctor R X).map i.unop).f n).hom) + (((((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map i.unop).f n).hom) (((preimageOpenChainMap R j W.unop).f n).hom c)) = φ ((((preimageOpenChainMap R j V.unop).f n).hom) - ((((openSingularChainComplexFunctor R U).map + ((((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R U).map ((Opens.map j).map i.unop)).f n).hom c)) exact congrArg φ (ConcreteCategory.congr_hom (congrArg (fun f ↦ f.f n) (preimageOpenChainMap_naturality R j i.unop)).symm c) noncomputable def singularRestrictionPresheaf (n : ℕ) : - singularCochainPresheaf R X n ⟶ + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n ⟶ ((TopCat.Sheaf.pushforward AddCommGrpCat j).obj - (singularCochainSheaf R U n)).obj := + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R U n)).obj := singularRestrictionToRawPushforward R j n ≫ Functor.whiskerLeft (Opens.map j).op - (toSheafify (Opens.grothendieckTopology U) (singularCochainPresheaf R U n)) + (toSheafify (Opens.grothendieckTopology U) (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R U n)) noncomputable def singularRestrictionSheaf (n : ℕ) : - singularCochainSheaf R X n ⟶ + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R X n ⟶ (TopCat.Sheaf.pushforward AddCommGrpCat j).obj - (singularCochainSheaf R U n) := + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R U n) := ⟨sheafifyLift (Opens.grothendieckTopology X) (singularRestrictionPresheaf R j n) ((TopCat.Sheaf.pushforward AddCommGrpCat j).obj - (singularCochainSheaf R U n)).property⟩ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R U n)).property⟩ lemma toSheafify_comp_singularRestrictionSheaf (n : ℕ) : toSheafify (Opens.grothendieckTopology X) - (singularCochainPresheaf R X n) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n) ≫ (singularRestrictionSheaf R j n).hom = singularRestrictionPresheaf R j n := toSheafify_sheafifyLift (J := Opens.grothendieckTopology X) (singularRestrictionPresheaf R j n) (((TopCat.Sheaf.pushforward AddCommGrpCat j).obj - (singularCochainSheaf R U n)).property) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R U n)).property) lemma singularRestrictionToRawPushforward_coboundary (n : ℕ) : - singularCochainCoboundary R X n ≫ singularRestrictionToRawPushforward R j (n + 1) = + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X n ≫ singularRestrictionToRawPushforward R j (n + 1) = singularRestrictionToRawPushforward R j n ≫ - Functor.whiskerLeft (Opens.map j).op (singularCochainCoboundary R U n) := by + Functor.whiskerLeft (Opens.map j).op (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R U n) := by apply NatTrans.ext funext V apply AddCommGrpCat.hom_ext apply AddMonoidHom.ext intro φ - change OpenCochains R X V n at φ + change _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X V n at φ apply LinearMap.ext intro c exact congrArg φ (ConcreteCategory.congr_hom @@ -126,110 +132,113 @@ lemma singularRestrictionToRawPushforward_coboundary (n : ℕ) : set_option backward.isDefEq.respectTransparency false in lemma singularRestrictionPresheaf_coboundary (n : ℕ) : - singularCochainCoboundary R X n ≫ singularRestrictionPresheaf R j (n + 1) = + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X n ≫ singularRestrictionPresheaf R j (n + 1) = singularRestrictionPresheaf R j n ≫ ((TopCat.Sheaf.pushforward AddCommGrpCat j).map - (singularCochainSheafCoboundary R U n)).hom := by - change singularCochainCoboundary R X n ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafCoboundary R U n)).hom := by + change _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X n ≫ singularRestrictionToRawPushforward R j (n + 1) ≫ Functor.whiskerLeft (Opens.map j).op (toSheafify (Opens.grothendieckTopology U) - (singularCochainPresheaf R U (n + 1))) = + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R U (n + 1))) = singularRestrictionToRawPushforward R j n ≫ Functor.whiskerLeft (Opens.map j).op (toSheafify (Opens.grothendieckTopology U) - (singularCochainPresheaf R U n)) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R U n)) ≫ Functor.whiskerLeft (Opens.map j).op - ((singularCochainSheafCoboundary R U n).hom) + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafCoboundary R U n).hom) calc - _ = (singularCochainCoboundary R X n ≫ + _ = (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X n ≫ singularRestrictionToRawPushforward R j (n + 1)) ≫ Functor.whiskerLeft (Opens.map j).op (toSheafify (Opens.grothendieckTopology U) - (singularCochainPresheaf R U (n + 1))) := (Category.assoc _ _ _).symm + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R U (n + 1))) := (Category.assoc _ _ _).symm _ = (singularRestrictionToRawPushforward R j n ≫ Functor.whiskerLeft (Opens.map j).op - (singularCochainCoboundary R U n)) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R U n)) ≫ Functor.whiskerLeft (Opens.map j).op (toSheafify (Opens.grothendieckTopology U) - (singularCochainPresheaf R U (n + 1))) := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R U (n + 1))) := by rw [singularRestrictionToRawPushforward_coboundary] _ = singularRestrictionToRawPushforward R j n ≫ Functor.whiskerLeft (Opens.map j).op - (singularCochainCoboundary R U n ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R U n ≫ toSheafify (Opens.grothendieckTopology U) - (singularCochainPresheaf R U (n + 1))) := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R U (n + 1))) := by rw [Category.assoc, Functor.whiskerLeft_comp] _ = singularRestrictionToRawPushforward R j n ≫ Functor.whiskerLeft (Opens.map j).op (toSheafify (Opens.grothendieckTopology U) - (singularCochainPresheaf R U n) ≫ - (singularCochainSheafCoboundary R U n).hom) := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R U n) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafCoboundary R U n).hom) := by rw [toSheafify_naturality] rfl _ = _ := by rw [Functor.whiskerLeft_comp] noncomputable def singularRestrictionSheafComplex : - singularCochainSheafComplex R X ⟶ + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex R X ⟶ ((TopCat.Sheaf.pushforward AddCommGrpCat j).mapHomologicalComplex - (ComplexShape.up ℕ)).obj (singularCochainSheafComplex R U) where + (ComplexShape.up ℕ)).obj (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex R U) where f n := singularRestrictionSheaf R j n comm' i k hik := by obtain rfl := hik - rw [singularCochainSheafComplex_d, Functor.mapHomologicalComplex_obj_d, - singularCochainSheafComplex_d] + rw [_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex_d, Functor.mapHomologicalComplex_obj_d, + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex_d] apply Sheaf.hom_ext - let η := singularCochainCoboundary R X i ≫ + let η := _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X i ≫ singularRestrictionPresheaf R j (i + 1) apply (sheafifyLift_unique (J := Opens.grothendieckTopology X) η (((TopCat.Sheaf.pushforward AddCommGrpCat j).obj - (singularCochainSheaf R U (i + 1))).property) _ ?_).trans + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R U (i + 1))).property) _ ?_).trans · apply (sheafifyLift_unique (J := Opens.grothendieckTopology X) η (((TopCat.Sheaf.pushforward AddCommGrpCat j).obj - (singularCochainSheaf R U (i + 1))).property) _ ?_).symm + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R U (i + 1))).property) _ ?_).symm unfold η change toSheafify (Opens.grothendieckTopology X) - (singularCochainPresheaf R X i) ≫ - (singularCochainSheafCoboundary R X i).hom ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X i) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafCoboundary R X i).hom ≫ (singularRestrictionSheaf R j (i + 1)).hom = _ calc _ = (toSheafify (Opens.grothendieckTopology X) - (singularCochainPresheaf R X i) ≫ - (singularCochainSheafCoboundary R X i).hom) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X i) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafCoboundary R X i).hom) ≫ (singularRestrictionSheaf R j (i + 1)).hom := (Category.assoc _ _ _).symm - _ = (singularCochainCoboundary R X i ≫ + _ = (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X i ≫ toSheafify (Opens.grothendieckTopology X) - (singularCochainPresheaf R X (i + 1))) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X (i + 1))) ≫ (singularRestrictionSheaf R j (i + 1)).hom := by rw [toSheafify_naturality] rfl - _ = singularCochainCoboundary R X i ≫ + _ = _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary R X i ≫ (toSheafify (Opens.grothendieckTopology X) - (singularCochainPresheaf R X (i + 1)) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X (i + 1)) ≫ (singularRestrictionSheaf R j (i + 1)).hom) := Category.assoc _ _ _ _ = _ := by rw [toSheafify_comp_singularRestrictionSheaf] · unfold η change toSheafify (Opens.grothendieckTopology X) - (singularCochainPresheaf R X i) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X i) ≫ (singularRestrictionSheaf R j i).hom ≫ ((TopCat.Sheaf.pushforward AddCommGrpCat j).map - (singularCochainSheafCoboundary R U i)).hom = _ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafCoboundary R U i)).hom = _ calc _ = (toSheafify (Opens.grothendieckTopology X) - (singularCochainPresheaf R X i) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X i) ≫ (singularRestrictionSheaf R j i).hom) ≫ ((TopCat.Sheaf.pushforward AddCommGrpCat j).map - (singularCochainSheafCoboundary R U i)).hom := + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafCoboundary R U i)).hom := (Category.assoc _ _ _).symm _ = singularRestrictionPresheaf R j i ≫ ((TopCat.Sheaf.pushforward AddCommGrpCat j).map - (singularCochainSheafCoboundary R U i)).hom := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafCoboundary R U i)).hom := by rw [toSheafify_comp_singularRestrictionSheaf] _ = _ := (singularRestrictionPresheaf_coboundary R j i).symm -end AlgebraicTopology.Singular +end +end end + +end OAI.AlgebraicTopology.Singular.SheafCochainRestriction diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/SubdivisionCochain.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/SubdivisionCochain.lean index a930c85a11..74ebc251ea 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/SubdivisionCochain.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Sheaf/SubdivisionCochain.lean @@ -12,18 +12,23 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module import Mathlib.LinearAlgebra.Dual.Lemmas import Mathlib.Topology.ShrinkingLemma -public import HodgeConjecture.Mathlib.Algebra.Homology.KernelAcyclic -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueAcyclic -public import HodgeConjecture.Lemmas.Algebra.Homology.LinearDual -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Cohomology -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainDescent -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.Field -public import HodgeConjecture.Mathlib.Topology.ChartedSpaceParacompact +import HodgeConjecture.Mathlib.Algebra.Homology.KernelAcyclic +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.FlasqueAcyclic +import HodgeConjecture.Lemmas.Algebra.Homology.LinearDual +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Cohomology +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainDescent +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.Field +import HodgeConjecture.Mathlib.Topology.ChartedSpaceParacompact + +namespace OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain + +open _root_.AlgebraicTopology /-! # Global and locally defined singular cochains @@ -33,27 +38,28 @@ conjecture only through proofs, so the statement never inspects them: by proof i nothing about how they were built can change what it asserts. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace open scoped Simplicial universe u -namespace AlgebraicTopology.Singular +section +section /-- The domains of a covering sieve, regarded as open subsets of the covered open set. -/ def coveringSieveOpenFamilyOn (X : TopCat.{u}) {U : Opens X} (S : (Opens.grothendieckTopology X).Cover U) : S.Arrow → Set U := fun I ↦ Subtype.val ⁻¹' (I.Y : Set X) -private lemma coveringSieveOpenFamilyOn_isOpen (X : TopCat.{u}) {U : Opens X} +lemma coveringSieveOpenFamilyOn_isOpen (X : TopCat.{u}) {U : Opens X} (S : (Opens.grothendieckTopology X).Cover U) (I : S.Arrow) : IsOpen (coveringSieveOpenFamilyOn X S I) := I.Y.isOpen.preimage continuous_subtype_val /-- The domains of a covering sieve cover the covered open set. -/ -private lemma coveringSieveOpenFamilyOn_iUnion (X : TopCat.{u}) {U : Opens X} +lemma coveringSieveOpenFamilyOn_iUnion (X : TopCat.{u}) {U : Opens X} (S : (Opens.grothendieckTopology X).Cover U) : ⋃ I, coveringSieveOpenFamilyOn X S I = Set.univ := by apply Set.eq_univ_of_forall @@ -65,7 +71,7 @@ private lemma coveringSieveOpenFamilyOn_iUnion (X : TopCat.{u}) {U : Opens X} /-- On a paracompact Hausdorff open set, a covering sieve admits an open refinement whose closures are locally finite and remain subordinate to the original sieve members. -/ -private theorem exists_coveringSieve_locallyFinite_closedRefinement +theorem exists_coveringSieve_locallyFinite_closedRefinement (X : TopCat.{u}) {U : Opens X} [ParacompactSpace U] [T2Space U] (S : (Opens.grothendieckTopology X).Cover U) : ∃ W : S.Arrow → Set U, @@ -85,31 +91,31 @@ variable (R : Type u) [CommRing R] (X : TopCat.{u}) /-- The singular chain complex of the top open subset of `X`. -/ abbrev TopOpenSingularChainComplex : ChainComplex (ModuleCat.{u} R) ℕ := - (openSingularChainComplexFunctor R X).obj ⊤ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).obj ⊤ /-- The inclusion of the top open subset into `X` identifies their singular chain complexes. -/ noncomputable def topOpenSingularChainComplexIso : - TopOpenSingularChainComplex R X ≅ SingularChainComplex R X := + TopOpenSingularChainComplex R X ≅ _root_.OAI.AlgebraicTopology.Singular.Cohomology.SingularChainComplex R X := ((singularChainComplexFunctor (ModuleCat.{u} R)).obj (ModuleCat.of R R)).mapIso (Opens.inclusionTopIso X) /-- Ordinary singular cochains and top-open singular cochains are isomorphic as cochain complexes. -/ noncomputable def singularCochainComplexIsoTopOpen : - (SingularChainComplex R X).linearDualCochainComplex ≅ - (TopOpenSingularChainComplex R X).linearDualCochainComplex := - HomologicalComplex.linearDualIso (topOpenSingularChainComplexIso R X) + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (_root_.OAI.AlgebraicTopology.Singular.Cohomology.SingularChainComplex R X)) ≅ + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (TopOpenSingularChainComplex R X)) := + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualIso (topOpenSingularChainComplexIso R X) /-- The singular-cochain presheaf complex evaluated on the top open subset. -/ def globalRawSingularCochainComplex : CochainComplex AddCommGrpCat ℕ := (((evaluation (Opens X)ᵒᵖ AddCommGrpCat).obj (.op ⊤)).mapHomologicalComplex - (ComplexShape.up ℕ)).obj (singularCochainPresheafComplex R X) + (ComplexShape.up ℕ)).obj (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X) /-- Top-open singular cochains, with their scalar structure forgotten. -/ def topOpenForgottenSingularCochainComplex : CochainComplex AddCommGrpCat ℕ := ((forget₂ (ModuleCat.{u} R) AddCommGrpCat).mapHomologicalComplex (ComplexShape.up ℕ)).obj - (TopOpenSingularChainComplex R X).linearDualCochainComplex + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (TopOpenSingularChainComplex R X)) set_option backward.isDefEq.respectTransparency false in /-- Evaluation of the cochain presheaf and forgetting the scalar structure on top-open cochains @@ -145,11 +151,11 @@ def globalRawSingularCochainComplexIso : topOpenForgottenSingularCochainComplex] rw [Functor.mapHomologicalComplex_obj_d, Functor.mapHomologicalComplex_obj_d, - singularCochainPresheafComplex_d, - HomologicalComplex.linearDualCochainComplex_d] + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex_d, + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex_d_succ] dsimp [globalRawSingularCochainXIso, globalRawSingularCochainAddEquiv, - TopOpenSingularChainComplex, singularCochainCoboundary] + TopOpenSingularChainComplex, _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainCoboundary] rfl) @[simp] @@ -165,19 +171,19 @@ singular coboundaries make these presheaves into this nonnegative cochain comple def singularCochainPlusPresheafComplex : CochainComplex (TopCat.Presheaf AddCommGrpCat X) ℕ := ((Opens.grothendieckTopology X).plusFunctor AddCommGrpCat).mapHomologicalComplex - (ComplexShape.up ℕ) |>.obj (singularCochainPresheafComplex R X) + (ComplexShape.up ℕ) |>.obj (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X) /-- The degreewise first-plus unit on the singular-cochain presheaf complex. -/ def singularCochainToPlusPresheafComplex : - singularCochainPresheafComplex R X ⟶ singularCochainPlusPresheafComplex R X := + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X ⟶ singularCochainPlusPresheafComplex R X := (NatTrans.mapHomologicalComplex ((Opens.grothendieckTopology X).toPlusNatTrans AddCommGrpCat) - (ComplexShape.up ℕ)).app (singularCochainPresheafComplex R X) + (ComplexShape.up ℕ)).app (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X) @[simp] lemma singularCochainToPlusPresheafComplex_f (n : ℕ) : (singularCochainToPlusPresheafComplex R X).f n = - (Opens.grothendieckTopology X).toPlus (singularCochainPresheaf R X n) := + (Opens.grothendieckTopology X).toPlus (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n) := rfl /-- The singular-cochain presheaf complex after applying the plus construction twice @@ -186,7 +192,7 @@ def singularCochainPlusPlusPresheafComplex : CochainComplex (TopCat.Presheaf AddCommGrpCat X) ℕ := (((Opens.grothendieckTopology X).sheafification AddCommGrpCat).mapHomologicalComplex - (ComplexShape.up ℕ)).obj (singularCochainPresheafComplex R X) + (ComplexShape.up ℕ)).obj (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X) /-- The degreewise second-plus unit on the singular-cochain complex. -/ def singularCochainPlusToPlusPlusPresheafComplex : @@ -196,19 +202,19 @@ def singularCochainPlusToPlusPlusPresheafComplex : (Functor.whiskerLeft ((Opens.grothendieckTopology X).plusFunctor AddCommGrpCat) ((Opens.grothendieckTopology X).toPlusNatTrans AddCommGrpCat)) - (ComplexShape.up ℕ)).app (singularCochainPresheafComplex R X) + (ComplexShape.up ℕ)).app (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X) @[simp] lemma singularCochainPlusToPlusPlusPresheafComplex_f (n : ℕ) : (singularCochainPlusToPlusPlusPresheafComplex R X).f n = (Opens.grothendieckTopology X).toPlus ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n)) := + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)) := rfl /-- The degreewise double-plus comparison from raw singular cochains. -/ def singularCochainToPlusPlusPresheafComplex : - singularCochainPresheafComplex R X ⟶ + _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X ⟶ singularCochainPlusPlusPresheafComplex R X := singularCochainToPlusPresheafComplex R X ≫ singularCochainPlusToPlusPlusPresheafComplex R X @@ -218,21 +224,21 @@ set_option backward.isDefEq.respectTransparency false in lemma singularCochainToPlusPlusPresheafComplex_f (n : ℕ) : (singularCochainToPlusPlusPresheafComplex R X).f n = (Opens.grothendieckTopology X).toSheafify - (singularCochainPresheaf R X n) := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n) := by change (Opens.grothendieckTopology X).toPlus - (singularCochainPresheaf R X n) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n) ≫ (Opens.grothendieckTopology X).toPlus ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n)) = _ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)) = _ rw [← (Opens.grothendieckTopology X).plusMap_toPlus - (singularCochainPresheaf R X n)] + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)] rfl /-- The underlying presheaf complex of the chosen degreewise sheafification. -/ def forgottenSingularCochainSheafComplex : CochainComplex (TopCat.Presheaf AddCommGrpCat X) ℕ := ((TopCat.Sheaf.forget AddCommGrpCat X).mapHomologicalComplex - (ComplexShape.up ℕ)).obj (singularCochainSheafComplex R X) + (ComplexShape.up ℕ)).obj (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex R X) /-- Double-plus sheafification agrees with Mathlib's chosen sheafification, compatibly with the singular coboundary. -/ @@ -242,7 +248,7 @@ def singularCochainPlusPlusPresheafComplexIsoSheafComplex : (NatIso.mapHomologicalComplex (plusPlusFunctorIsoSheafification (Opens.grothendieckTopology X) AddCommGrpCat) - (ComplexShape.up ℕ)).app (singularCochainPresheafComplex R X) + (ComplexShape.up ℕ)).app (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheafComplex R X) /-- Flasqueness descends along a pointwise epimorphism of additive presheaves. -/ lemma presheaf_isFlasque_of_epi @@ -259,7 +265,7 @@ instance singularCochainPlusPresheafComplex_isFlasque (n : ℕ) : TopCat.Presheaf.IsFlasque ((singularCochainPlusPresheafComplex R X).X n) := by change TopCat.Presheaf.IsFlasque ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n)) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)) infer_instance /-- Evaluation of the first-plus singular-cochain complex on the top open subset. -/ @@ -319,7 +325,7 @@ def topOpenToGlobalSingularCochainSheafComplex : lemma topOpenToGlobalSingularCochainPlusComplex_surjective (n : ℕ) : Function.Surjective ((topOpenToGlobalSingularCochainPlusComplex R X).f n) := - singularCochain_toPlus_exists_rep R X ⊤ n + _root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.singularCochain_toPlus_exists_rep R X ⊤ n /-- The map from top-open cochains to global first-plus cochains is degreewise an epimorphism. -/ instance topOpenToGlobalSingularCochainPlusComplex_epi_f (n : ℕ) : @@ -331,14 +337,14 @@ set_option backward.isDefEq.respectTransparency false in /-- A singular cochain maps to zero in the first plus construction exactly when it vanishes after restriction along every arrow of some covering sieve. -/ lemma singularCochain_toPlus_eq_zero_iff (V : Opens X) (n : ℕ) - (φ : OpenCochains R X (.op V) n) : + (φ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op V) n) : ((Opens.grothendieckTopology X).toPlus - (singularCochainPresheaf R X n)).app (.op V) φ = 0 ↔ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).app (.op V) φ = 0 ↔ ∃ S : (Opens.grothendieckTopology X).Cover V, ∀ I : S.Arrow, - (singularCochainPresheaf R X n).map I.f.op φ = 0 := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map I.f.op φ = 0 := by let J := Opens.grothendieckTopology X - let P := singularCochainPresheaf R X n + let P := _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n rw [← map_zero (ConcreteCategory.hom ((J.toPlus P).app (.op V)))] constructor · intro h @@ -358,18 +364,18 @@ lemma singularCochain_toPlus_eq_zero_iff (V : Opens X) (n : ℕ) set_option backward.isDefEq.respectTransparency false in /-- Raw representatives of a matching family of first-plus singular cochains agree on some neighborhood of every point of a pairwise overlap. -/ -private lemma exists_open_eq_of_plus_matchingFamily +lemma exists_open_eq_of_plus_matchingFamily {U : Opens X} (S : (Opens.grothendieckTopology X).Cover U) (n : ℕ) (s : Meq ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n)) S) - (φ : ∀ I : S.Arrow, OpenCochains R X (.op I.Y) n) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)) S) + (φ : ∀ I : S.Arrow, _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op I.Y) n) (hφ : ∀ I : S.Arrow, ((Opens.grothendieckTopology X).toPlus - (singularCochainPresheaf R X n)).app (.op I.Y) (φ I) = s I) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).app (.op I.Y) (φ I) = s I) (I J : S.Arrow) (x : X) (hxI : x ∈ I.Y) (hxJ : x ∈ J.Y) : ∃ (V : Opens X) (a : V ⟶ I.Y) (b : V ⟶ J.Y), x ∈ V ∧ - (singularCochainPresheaf R X n).map a.op (φ I) = - (singularCochainPresheaf R X n).map b.op (φ J) := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map a.op (φ I) = + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map b.op (φ J) := by let eI : I.Y ⊓ J.Y ⟶ I.Y := homOfLE inf_le_left let eJ : I.Y ⊓ J.Y ⟶ J.Y := homOfLE inf_le_right let rel : S.Relation := GrothendieckTopology.Cover.Relation.mk' @@ -378,35 +384,35 @@ private lemma exists_open_eq_of_plus_matchingFamily g₂ := eJ } have hplus := s.condition rel let η := (Opens.grothendieckTopology X).toPlus - (singularCochainPresheaf R X n) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n) have hplus' : η.app (.op (I.Y ⊓ J.Y)) - ((singularCochainPresheaf R X n).map eI.op (φ I)) = + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map eI.op (φ I)) = η.app (.op (I.Y ⊓ J.Y)) - ((singularCochainPresheaf R X n).map eJ.op (φ J)) := by + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map eJ.op (φ J)) := by calc _ = ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n)).map eI.op + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).map eI.op (η.app (.op I.Y) (φ I)) := by simpa only [ConcreteCategory.comp_apply] using ConcreteCategory.congr_hom (η.naturality eI.op) (φ I) _ = ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n)).map eI.op (s I) := by rw [hφ I] + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).map eI.op (s I) := by rw [hφ I] _ = ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n)).map eJ.op (s J) := hplus + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).map eJ.op (s J) := hplus _ = ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n)).map eJ.op + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).map eJ.op (η.app (.op J.Y) (φ J)) := by rw [hφ J] _ = η.app (.op (I.Y ⊓ J.Y)) - ((singularCochainPresheaf R X n).map eJ.op (φ J)) := by + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map eJ.op (φ J)) := by simpa only [ConcreteCategory.comp_apply] using (ConcreteCategory.congr_hom (η.naturality eJ.op) (φ J)).symm - let δ : OpenCochains R X (.op (I.Y ⊓ J.Y)) n := - (singularCochainPresheaf R X n).map eI.op (φ I) - - (singularCochainPresheaf R X n).map eJ.op (φ J) + let δ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op (I.Y ⊓ J.Y)) n := + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map eI.op (φ I) - + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n).map eJ.op (φ J) have hδplus : ((Opens.grothendieckTopology X).toPlus - (singularCochainPresheaf R X n)).app (.op (I.Y ⊓ J.Y)) δ = 0 := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)).app (.op (I.Y ⊓ J.Y)) δ = 0 := by rw [map_sub, hplus', sub_self] obtain ⟨T, hT⟩ := (singularCochain_toPlus_eq_zero_iff R X (I.Y ⊓ J.Y) n δ).mp hδplus @@ -431,16 +437,16 @@ def coveringSieveOpenFamily /-- Restriction of rational singular cochains to chains subordinate to a family of subsets. -/ def rationalCochainRestrictionToCoverSmall : - ((TopCat.toSSet.obj Y).chainComplex - (ModuleCat.of ℚ ℚ)).linearDualCochainComplex ⟶ - (CoverSmallRationalSingularChainComplex Y U).linearDualCochainComplex := - HomologicalComplex.linearDualMap (coverSmallRationalSingularChainInclusion Y U) + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex ((TopCat.toSSet.obj Y).chainComplex + (ModuleCat.of ℚ ℚ))) ⟶ + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.CoverSmallRationalSingularChainComplex Y U)) := + _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion Y U) /-- The chain map from one member of a family into the cover-small rational chains. -/ def coverMemberToSmallRationalSingularChains (j : κ) : (TopCat.toSSet.obj (TopCat.of (U j))).chainComplex (ModuleCat.of ℚ ℚ) ⟶ - CoverSmallRationalSingularChainComplex Y U := - SSet.chainComplexMap (coverMemberToSmallSingularSet Y U j) (ModuleCat.of ℚ ℚ) + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.CoverSmallRationalSingularChainComplex Y U := + SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverMemberToSmallSingularSet Y U j) (ModuleCat.of ℚ ℚ) /-- Restriction to cover-small rational chains is surjective in every cochain degree. -/ lemma rationalCochainRestrictionToCoverSmall_surjective (n : ℕ) : @@ -449,7 +455,7 @@ lemma rationalCochainRestrictionToCoverSmall_surjective (n : ℕ) : rw [← ModuleCat.mono_iff_injective] exact Functor.map_mono (HomologicalComplex.eval (ModuleCat ℚ) (ComplexShape.down ℕ) n) - (coverSmallRationalSingularChainInclusion Y U) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion Y U) /-- Restriction to cover-small rational chains is an epimorphism of cochain complexes. -/ instance rationalCochainRestrictionToCoverSmall_epi : @@ -463,11 +469,11 @@ cochains. -/ def rationalCochainHomotopyEquivCoverSmall (hUopen : ∀ i, IsOpen (U i)) (hUcover : ⋃ i, U i = Set.univ) : HomotopyEquiv - ((TopCat.toSSet.obj Y).chainComplex - (ModuleCat.of ℚ ℚ)).linearDualCochainComplex - (CoverSmallRationalSingularChainComplex Y U).linearDualCochainComplex := - HomologicalComplex.linearDualHomotopyEquiv - (coverSmallRationalChainHomotopyEquiv_of_openCover Y U hUopen hUcover) + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex ((TopCat.toSSet.obj Y).chainComplex + (ModuleCat.of ℚ ℚ))) + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.CoverSmallRationalSingularChainComplex Y U)) := + _root_.OAI.Algebra.Homology.LinearDualHomotopy.HomologicalComplex.linearDualHomotopyEquiv + (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalChainHomotopyEquiv_of_openCover Y U hUopen hUcover) /-- The map from top-open cochains to global first-plus cochains is an epimorphism of complexes. -/ @@ -478,8 +484,8 @@ instance topOpenToGlobalSingularCochainPlusComplex_epi : /-- Restriction from cochains on the top open subset to chains subordinate to a family of subsets. -/ def topOpenRationalCochainRestrictionToCoverSmall : - (TopOpenSingularChainComplex ℚ Y).linearDualCochainComplex ⟶ - (CoverSmallRationalSingularChainComplex Y U).linearDualCochainComplex := + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (TopOpenSingularChainComplex ℚ Y)) ⟶ + (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.CoverSmallRationalSingularChainComplex Y U)) := (singularCochainComplexIsoTopOpen ℚ Y).inv ≫ rationalCochainRestrictionToCoverSmall Y U @@ -518,7 +524,7 @@ lemma mem_ambientOpen_iff (U : Opens X) (V : Opens U) (x : U) : have h : y = x := Subtype.ext hxy exact show x ∈ (V : Set U) from h ▸ hy -private lemma ambientOpen_le (U : Opens X) (V : Opens U) : ambientOpen U V ≤ U := by +lemma ambientOpen_le (U : Opens X) (V : Opens U) : ambientOpen U V ≤ U := by rintro x ⟨y, -, rfl⟩ exact y.2 @@ -530,7 +536,7 @@ def openFamilySieve {U : Opens X} {I : Type*} (V : I → Opens X) : Sieve U wher exact ⟨i, g.le.trans hi⟩ /-- A pointwise covering family defines a covering sieve. -/ -private lemma openFamilySieve_mem {U : Opens X} {I : Type*} (V : I → Opens X) +lemma openFamilySieve_mem {U : Opens X} {I : Type*} (V : I → Opens X) (hV : ∀ i, V i ≤ U) (hcover : ∀ x ∈ U, ∃ i, x ∈ V i) : openFamilySieve V ∈ Opens.grothendieckTopology X U := by intro x hx @@ -546,14 +552,14 @@ theorem singularCochain_plusToPlus_surjective_on Function.Surjective (((Opens.grothendieckTopology X).toPlus ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n))).app (.op U)) := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n))).app (.op U)) := by classical let J := Opens.grothendieckTopology X - let P := singularCochainPresheaf R X n + let P := _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n intro y obtain ⟨S, s, rfl⟩ := GrothendieckTopology.Plus.exists_rep y choose φ hφ using fun I : S.Arrow ↦ - singularCochain_toPlus_exists_rep R X I.Y n (s I) + _root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.singularCochain_toPlus_exists_rep R X I.Y n (s I) obtain ⟨W, hWopen, hWcover, hWfinite, hWsub⟩ := exists_coveringSieve_locallyFinite_closedRefinement X S have hWmem (x : U) : ∃ I : S.Arrow, x ∈ W I := by @@ -626,12 +632,12 @@ theorem singularCochain_plusToPlus_surjective_on exact hznot (subset_closure hzW) let iNU (x : U) : N x ⟶ U := homOfLE (hN_le_U x) let iNB (x : U) : N x ⟶ (b x).Y := homOfLE (hN_le_component x) - let φN (x : U) : OpenCochains R X (.op (N x)) n := + let φN (x : U) : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains R X (.op (N x)) n := P.map (iNB x).op (φ (b x)) have hφN (x z : U) : P.map (homOfLE (inf_le_left : N x ⊓ N z ≤ N x)).op (φN x) = P.map (homOfLE (inf_le_right : N x ⊓ N z ≤ N z)).op (φN z) := by - apply (singularCochainEquivSimplexFunction R X (.op (N x ⊓ N z)) n).injective + apply (_root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.singularCochainEquivSimplexFunction R X (.op (N x ⊓ N z)) n).injective ext r let q : ↑(N x ⊓ N z) := (TopCat.of ↑(N x ⊓ N z)).toSSetObjEquiv @@ -670,31 +676,31 @@ theorem singularCochain_plusToPlus_surjective_on _ = P.map rgt.op (P.map (iNB z).op (φ (b z))) := by rw [P.map_comp, ConcreteCategory.comp_apply] exact congrArg - (fun θ ↦ singularCochainToSimplexFunction R X (.op (N x ⊓ N z)) n θ r) + (fun θ ↦ _root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.singularCochainToSimplexFunction R X (.op (N x ⊓ N z)) n θ r) hres - obtain ⟨ψ, hψ⟩ := exists_openCochain_of_compatibleOnSimplexBasis R X + obtain ⟨ψ, hψ⟩ := _root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.exists_openCochain_of_compatibleOnSimplexBasis R X (U := .op U) (fun x : U ↦ .op (N x)) (fun x ↦ (iNU x).op) n φN (by intro x z sx sz hs - obtain ⟨r, hrs, hrz⟩ := exists_openSimplex_inf_of_eq X (iNU x) (iNU z) n sx sz hs + obtain ⟨r, hrs, hrz⟩ := _root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.exists_openSimplex_inf_of_eq X (iNU x) (iNU z) n sx sz hs have heval := congrArg - (fun θ ↦ singularCochainToSimplexFunction R X (.op (N x ⊓ N z)) n θ r) + (fun θ ↦ _root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.singularCochainToSimplexFunction R X (.op (N x ⊓ N z)) n θ r) (hφN x z) - have hl := congrFun (singularCochainToSimplexFunction_naturality R X + have hl := congrFun (_root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.singularCochainToSimplexFunction_naturality R X (homOfLE inf_le_left).op n (φN x)) r - have hr := congrFun (singularCochainToSimplexFunction_naturality R X + have hr := congrFun (_root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.singularCochainToSimplexFunction_naturality R X (homOfLE inf_le_right).op n (φN z)) r calc - singularCochainToSimplexFunction R X (.op (N x)) n (φN x) sx = - singularCochainToSimplexFunction R X (.op (N x)) n (φN x) - (openSimplexMap X (homOfLE inf_le_left).op n r) := + _root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.singularCochainToSimplexFunction R X (.op (N x)) n (φN x) sx = + _root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.singularCochainToSimplexFunction R X (.op (N x)) n (φN x) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.openSimplexMap X (homOfLE inf_le_left).op n r) := congrArg _ hrs.symm - _ = singularCochainToSimplexFunction R X (.op (N x ⊓ N z)) n + _ = _root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.singularCochainToSimplexFunction R X (.op (N x ⊓ N z)) n (P.map (homOfLE inf_le_left).op (φN x)) r := hl.symm - _ = singularCochainToSimplexFunction R X (.op (N x ⊓ N z)) n + _ = _root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.singularCochainToSimplexFunction R X (.op (N x ⊓ N z)) n (P.map (homOfLE inf_le_right).op (φN z)) r := heval - _ = singularCochainToSimplexFunction R X (.op (N z)) n (φN z) - (openSimplexMap X (homOfLE inf_le_right).op n r) := hr - _ = singularCochainToSimplexFunction R X (.op (N z)) n (φN z) sz := + _ = _root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.singularCochainToSimplexFunction R X (.op (N z)) n (φN z) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.openSimplexMap X (homOfLE inf_le_right).op n r) := hr + _ = _root_.OAI.AlgebraicTopology.Singular.SheafCochainDescent.singularCochainToSimplexFunction R X (.op (N z)) n (φN z) sz := congrArg _ hrz) let t : ToType ((J.plusObj P).obj (.op U)) := (J.toPlus P).app (.op U) ψ have htN (x : U) : @@ -774,26 +780,26 @@ instance singularCochainPlusPlus_isFlasque TopCat.Presheaf.IsFlasque ((Opens.grothendieckTopology X).plusObj ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n))) := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n))) := by have hEpi : ∀ V : (Opens X)ᵒᵖ, Epi (((Opens.grothendieckTopology X).toPlus ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n))).app V) := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n))).app V) := by intro V rw [AddCommGrpCat.epi_iff_surjective] exact singularCochain_plusToPlus_surjective_on V.unop n exact @presheaf_isFlasque_of_epi X _ _ ((Opens.grothendieckTopology X).toPlus ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n))) inferInstance hEpi + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n))) inferInstance hEpi /-- On a hereditarily paracompact Hausdorff space, every term of the sheafified rational singular cochain complex is flasque. -/ instance singularCochainSheaf_isFlasque_of_opens_paracompact [T2Space X] [∀ V : Opens X, ParacompactSpace V] (n : ℕ) : - TopCat.Sheaf.IsFlasque (singularCochainSheaf R X n) := by + TopCat.Sheaf.IsFlasque (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheaf R X n) := by let J := Opens.grothendieckTopology X - let P := singularCochainPresheaf R X n + let P := _root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n let e : J.sheafify P ≅ CategoryTheory.sheafify J P := plusPlusIsoSheafify J AddCommGrpCat P change TopCat.Presheaf.IsFlasque (CategoryTheory.sheafify J P) @@ -814,33 +820,35 @@ noncomputable instance globalSingularCochainPlusToPlusPlusComplex_isIso change IsIso (((Opens.grothendieckTopology X).toPlus ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n))).app (.op ⊤)) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n))).app (.op ⊤)) rw [ConcreteCategory.isIso_iff_bijective] constructor · apply GrothendieckTopology.Plus.inj_of_sep ((Opens.grothendieckTopology X).plusObj - (singularCochainPresheaf R X n)) + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n)) intro V S x y h exact GrothendieckTopology.Plus.sep - (singularCochainPresheaf R X n) S x y h + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf R X n) S x y h · exact singularCochain_plusToPlus_surjective_on (⊤ : Opens X) n exact HomologicalComplex.Hom.isIso_of_components (globalSingularCochainPlusToPlusPlusComplex R X) end HereditarilyParacompact -end AlgebraicTopology.Singular +end +end end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace +open _root_.CategoryTheory Limits _root_.TopologicalSpace open scoped Simplicial universe u -namespace AlgebraicTopology.Singular +section +section variable (R : Type u) [CommRing R] (X : TopCat.{u}) @@ -848,16 +856,16 @@ variable (R : Type u) [CommRing R] (X : TopCat.{u}) space, is the usual subspace inclusion. -/ lemma openToTop_comp_inclusionTopIso {V : Opens X} (i : V ⟶ ⊤) : (Opens.toTopCat X).map i ≫ (Opens.inclusionTopIso X).hom = - topologicalSubsetInclusion X V := + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X V := rfl set_option backward.isDefEq.respectTransparency false in /-- The corresponding identity on singular chain complexes. -/ lemma openSingularChainToTop_comp_topOpenIso {V : Opens X} (i : V ⟶ ⊤) : - (openSingularChainComplexFunctor R X).map i ≫ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor R X).map i ≫ (topOpenSingularChainComplexIso R X).hom = SSet.chainComplexMap - (TopCat.toSSet.map (topologicalSubsetInclusion X V)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X V)) (ModuleCat.of R R) := by change ((singularChainComplexFunctor (ModuleCat.{u} R)).obj (ModuleCat.of R R)).map ((Opens.toTopCat X).map i) ≫ @@ -888,25 +896,25 @@ lemma coveringSieveOpenFamily_iUnion @[reassoc] lemma coverMemberToSmallRationalSingularChains_comp_inclusion (j : κ) : coverMemberToSmallRationalSingularChains Y U j ≫ - coverSmallRationalSingularChainInclusion Y U = + _root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion Y U = SSet.chainComplexMap - (TopCat.toSSet.map (topologicalSubsetInclusion Y (U j))) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion Y (U j))) (ModuleCat.of ℚ ℚ) := by change ((SSet.chainComplexFunctor (ModuleCat ℚ)).obj - (ModuleCat.of ℚ ℚ)).map (coverMemberToSmallSingularSet Y U j) ≫ + (ModuleCat.of ℚ ℚ)).map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverMemberToSmallSingularSet Y U j) ≫ ((SSet.chainComplexFunctor (ModuleCat ℚ)).obj - (ModuleCat.of ℚ ℚ)).map (coverSmallSingularSubcomplex Y U).ι = _ - rw [← Functor.map_comp, coverMemberToSmallSingularSet_comp_inclusion] + (ModuleCat.of ℚ ℚ)).map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex Y U).ι = _ + rw [← Functor.map_comp, _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverMemberToSmallSingularSet_comp_inclusion] set_option backward.isDefEq.respectTransparency false in /-- Vanishing on every member of a covering sieve implies vanishing on all chains subordinate to the associated family of open subsets. -/ lemma rationalCochainRestrictionToCoveringSieve_eq_zero (S : (Opens.grothendieckTopology Y).Cover (⊤ : Opens Y)) (n : ℕ) - (φ : ((TopCat.toSSet.obj Y).chainComplex - (ModuleCat.of ℚ ℚ)).linearDualCochainComplex.X n) + (φ : (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex ((TopCat.toSSet.obj Y).chainComplex + (ModuleCat.of ℚ ℚ))).X n) (hφ : ∀ I : S.Arrow, - (singularCochainPresheaf ℚ Y n).map I.f.op + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf ℚ Y n).map I.f.op ((singularCochainComplexIsoTopOpen ℚ Y).hom.f n φ) = 0) : (rationalCochainRestrictionToCoverSmall Y (coveringSieveOpenFamily Y S)).f n φ = 0 := by @@ -916,28 +924,28 @@ lemma rationalCochainRestrictionToCoveringSieve_eq_zero apply SSet.chainComplex_hom_ext intro x obtain ⟨I, y, hy⟩ := - (mem_coverSmallSingularSubcomplex_iff_exists_preimage Y + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.mem_coverSmallSingularSubcomplex_iff_exists_preimage Y (coveringSieveOpenFamily Y S) x.1).mp x.2 apply ModuleCat.hom_ext apply LinearMap.ext intro a have hI := congrArg - (fun ψ : OpenCochains ℚ Y (.op I.Y) n ↦ ψ + (fun ψ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains ℚ Y (.op I.Y) n ↦ ψ (((TopCat.toSSet.obj (TopCat.of (coveringSieveOpenFamily Y S I))).ιChainComplex (R := ModuleCat.of ℚ ℚ) y).hom a)) (hφ I) change φ (ModuleCat.Hom.hom - (((openSingularChainComplexFunctor ℚ Y).map I.f).f n ≫ + (((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor ℚ Y).map I.f).f n ≫ (topOpenSingularChainComplexIso ℚ Y).hom.f n) (((TopCat.toSSet.obj (TopCat.of (coveringSieveOpenFamily Y S I))).ιChainComplex (R := ModuleCat.of ℚ ℚ) y).hom a)) = 0 at hI have hchain := HomologicalComplex.congr_hom (openSingularChainToTop_comp_topOpenIso ℚ Y I.f) n have hchain' : - ((openSingularChainComplexFunctor ℚ Y).map I.f).f n ≫ + ((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor ℚ Y).map I.f).f n ≫ (topOpenSingularChainComplexIso ℚ Y).hom.f n = (SSet.chainComplexMap - (TopCat.toSSet.map (topologicalSubsetInclusion Y I.Y)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion Y I.Y)) (ModuleCat.of ℚ ℚ)).f n := by simpa only [HomologicalComplex.comp_f] using hchain rw [hchain'] at hI @@ -945,17 +953,17 @@ lemma rationalCochainRestrictionToCoveringSieve_eq_zero (SSet.ι_chainComplexMap_f (TopCat.toSSet.obj (TopCat.of (coveringSieveOpenFamily Y S I))) (TopCat.toSSet.obj Y) - (TopCat.toSSet.map (topologicalSubsetInclusion Y + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion Y (coveringSieveOpenFamily Y S I))) (ModuleCat.of ℚ ℚ) y) a have hI' : φ (((TopCat.toSSet.obj Y).ιChainComplex (R := ModuleCat.of ℚ ℚ) - ((TopCat.toSSet.map (topologicalSubsetInclusion Y + ((TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion Y (coveringSieveOpenFamily Y S I))).app _ y)).hom a) = 0 := by calc _ = φ ((SSet.chainComplexMap - (TopCat.toSSet.map (topologicalSubsetInclusion Y + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion Y (coveringSieveOpenFamily Y S I))) (ModuleCat.of ℚ ℚ)).f n (((TopCat.toSSet.obj @@ -963,12 +971,12 @@ lemma rationalCochainRestrictionToCoveringSieve_eq_zero (R := ModuleCat.of ℚ ℚ) y).hom a)) := congrArg φ hiota.symm _ = 0 := hI change φ (ModuleCat.Hom.hom - (((coverSmallSingularSubcomplex Y + (((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex Y (coveringSieveOpenFamily Y S) : SSet).ιChainComplex (R := ModuleCat.of ℚ ℚ) x) ≫ - (coverSmallRationalSingularChainInclusion Y + (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion Y (coveringSieveOpenFamily Y S)).f n) a) = 0 - dsimp only [coverSmallRationalSingularChainInclusion] at ⊢ + dsimp only [_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion] at ⊢ simpa [hy] using hI' · intro f g h exact congrArg ModuleCat.Hom.hom h @@ -978,12 +986,12 @@ set_option backward.isDefEq.respectTransparency false in vanishing after restriction along every arrow of that sieve. -/ lemma rationalCochainRestrictionToCoveringSieve_local_zero (S : (Opens.grothendieckTopology Y).Cover (⊤ : Opens Y)) (n : ℕ) - (φ : ((TopCat.toSSet.obj Y).chainComplex - (ModuleCat.of ℚ ℚ)).linearDualCochainComplex.X n) + (φ : (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex ((TopCat.toSSet.obj Y).chainComplex + (ModuleCat.of ℚ ℚ))).X n) (hφ : (rationalCochainRestrictionToCoverSmall Y (coveringSieveOpenFamily Y S)).f n φ = 0) : ∀ I : S.Arrow, - (singularCochainPresheaf ℚ Y n).map I.f.op + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf ℚ Y n).map I.f.op ((singularCochainComplexIsoTopOpen ℚ Y).hom.f n φ) = 0 := by intro I change Module.Dual ℚ @@ -1000,12 +1008,12 @@ lemma rationalCochainRestrictionToCoveringSieve_local_zero (coveringSieveOpenFamily Y S) I) n calc φ ((topOpenSingularChainComplexIso ℚ Y).hom.f n - (((openSingularChainComplexFunctor ℚ Y).map I.f).f n c)) = + (((_root_.OAI.AlgebraicTopology.Singular.SheafCochain.openSingularChainComplexFunctor ℚ Y).map I.f).f n c)) = φ ((SSet.chainComplexMap - (TopCat.toSSet.map (topologicalSubsetInclusion Y I.Y)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion Y I.Y)) (ModuleCat.of ℚ ℚ)).f n c) := congrArg φ (ConcreteCategory.congr_hom htop c) - _ = φ ((coverSmallRationalSingularChainInclusion Y + _ = φ ((_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalSingularChainInclusion Y (coveringSieveOpenFamily Y S)).f n ((coverMemberToSmallRationalSingularChains Y (coveringSieveOpenFamily Y S) I).f n c)) := @@ -1018,10 +1026,10 @@ lemma rationalCochainHomotopyEquivCoverSmall_hom rationalCochainRestrictionToCoverSmall Y U := by dsimp [rationalCochainHomotopyEquivCoverSmall, rationalCochainRestrictionToCoverSmall] - change HomologicalComplex.linearDualMap - (coverSmallRationalChainHomotopyEquiv_of_openCover + change _root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualMap + (_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalChainHomotopyEquiv_of_openCover Y U hUopen hUcover).hom = _ - rw [coverSmallRationalChainHomotopyEquiv_of_openCover_hom] + rw [_root_.OAI.AlgebraicTopology.Singular.ExcisionField.coverSmallRationalChainHomotopyEquiv_of_openCover_hom] /-- Restriction from all rational cochains to cover-small cochains is a quasi-isomorphism for an open cover. -/ @@ -1037,7 +1045,7 @@ theorem rationalCoverSmallCochainKernel_acyclic (hUopen : ∀ i, IsOpen (U i)) (hUcover : ⋃ i, U i = Set.univ) : (kernel (rationalCochainRestrictionToCoverSmall Y U)).Acyclic := by let := rationalCochainRestrictionToCoverSmall_quasiIso Y U hUopen hUcover - exact HomologicalComplex.kernel_acyclic_of_epi_of_quasiIso + exact _root_.OAI.Algebra.Homology.KernelAcyclic.HomologicalComplex.kernel_acyclic_of_epi_of_quasiIso (rationalCochainRestrictionToCoverSmall Y U) set_option backward.isDefEq.respectTransparency false in @@ -1045,20 +1053,20 @@ set_option backward.isDefEq.respectTransparency false in also vanishes on all cover-small chains. -/ theorem exists_coverSmallKernel_primitive (hUopen : ∀ i, IsOpen (U i)) (hUcover : ⋃ i, U i = Set.univ) (n : ℕ) - (φ : ((TopCat.toSSet.obj Y).chainComplex - (ModuleCat.of ℚ ℚ)).linearDualCochainComplex.X n) + (φ : (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex ((TopCat.toSSet.obj Y).chainComplex + (ModuleCat.of ℚ ℚ))).X n) (hφsmall : (rationalCochainRestrictionToCoverSmall Y U).f n φ = 0) - (hφclosed : (((TopCat.toSSet.obj Y).chainComplex - (ModuleCat.of ℚ ℚ)).linearDualCochainComplex.d n (n + 1)) φ = 0) : - ∃ ψ : ((TopCat.toSSet.obj Y).chainComplex - (ModuleCat.of ℚ ℚ)).linearDualCochainComplex.X + (hφclosed : ((_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex ((TopCat.toSSet.obj Y).chainComplex + (ModuleCat.of ℚ ℚ))).d n (n + 1)) φ = 0) : + ∃ ψ : (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex ((TopCat.toSSet.obj Y).chainComplex + (ModuleCat.of ℚ ℚ))).X ((ComplexShape.up ℕ).prev n), - (((TopCat.toSSet.obj Y).chainComplex - (ModuleCat.of ℚ ℚ)).linearDualCochainComplex.sc n).f ψ = φ ∧ + ((_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex ((TopCat.toSSet.obj Y).chainComplex + (ModuleCat.of ℚ ℚ))).sc n).f ψ = φ ∧ (rationalCochainRestrictionToCoverSmall Y U).f ((ComplexShape.up ℕ).prev n) ψ = 0 := by - let F := ((TopCat.toSSet.obj Y).chainComplex - (ModuleCat.of ℚ ℚ)).linearDualCochainComplex + let F := (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex ((TopCat.toSSet.obj Y).chainComplex + (ModuleCat.of ℚ ℚ))) let q := rationalCochainRestrictionToCoverSmall Y U let K := kernel q let E : (kernel q).X n ≅ ModuleCat.of ℚ (q.f n).hom.ker := @@ -1111,18 +1119,18 @@ set_option backward.isDefEq.respectTransparency false in still vanishes along the same sieve. -/ theorem exists_topOpenLocallyZero_primitive (S : (Opens.grothendieckTopology Y).Cover (⊤ : Opens Y)) (n : ℕ) - (φ : (TopOpenSingularChainComplex ℚ Y).linearDualCochainComplex.X n) + (φ : (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (TopOpenSingularChainComplex ℚ Y)).X n) (hφlocal : ∀ I : S.Arrow, - (singularCochainPresheaf ℚ Y n).map I.f.op φ = 0) - (hφclosed : ((TopOpenSingularChainComplex ℚ Y).linearDualCochainComplex.d + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf ℚ Y n).map I.f.op φ = 0) + (hφclosed : ((_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (TopOpenSingularChainComplex ℚ Y)).d n (n + 1)) φ = 0) : - ∃ ψ : (TopOpenSingularChainComplex ℚ Y).linearDualCochainComplex.X + ∃ ψ : (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (TopOpenSingularChainComplex ℚ Y)).X ((ComplexShape.up ℕ).prev n), - ((TopOpenSingularChainComplex ℚ Y).linearDualCochainComplex.sc n).f ψ = φ ∧ + ((_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (TopOpenSingularChainComplex ℚ Y)).sc n).f ψ = φ ∧ ∀ I : S.Arrow, - (singularCochainPresheaf ℚ Y ((ComplexShape.up ℕ).prev n)).map I.f.op ψ = 0 := by - let A := (SingularChainComplex ℚ Y).linearDualCochainComplex - let B := (TopOpenSingularChainComplex ℚ Y).linearDualCochainComplex + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf ℚ Y ((ComplexShape.up ℕ).prev n)).map I.f.op ψ = 0 := by + let A := (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (_root_.OAI.AlgebraicTopology.Singular.Cohomology.SingularChainComplex ℚ Y)) + let B := (_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (TopOpenSingularChainComplex ℚ Y)) let e := singularCochainComplexIsoTopOpen ℚ Y let φ' : A.X n := e.inv.f n φ have heφ : e.hom.f n φ' = φ := by @@ -1131,7 +1139,7 @@ theorem exists_topOpenLocallyZero_primitive simpa only [HomologicalComplex.comp_f, ConcreteCategory.comp_apply, HomologicalComplex.id_f, ConcreteCategory.id_apply, φ'] using hc have hlocal' : ∀ I : S.Arrow, - (singularCochainPresheaf ℚ Y n).map I.f.op (e.hom.f n φ') = 0 := by + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf ℚ Y n).map I.f.op (e.hom.f n φ') = 0 := by intro I rw [heφ] exact hφlocal I @@ -1176,13 +1184,13 @@ theorem topOpenToGlobalSingularCochainPlusComplex_kernel_acyclic : intro n rw [K.exactAt_iff, ShortComplex.ab_exact_iff] intro z hzclosed - let φ : OpenCochains ℚ Y (.op ⊤) n := (kernel.ι f).f n z + let φ : _root_.OAI.AlgebraicTopology.Singular.SheafCochain.OpenCochains ℚ Y (.op ⊤) n := (kernel.ι f).f n z have hφplus : f.f n φ = 0 := by have hcondition := HomologicalComplex.congr_hom (kernel.condition f) n exact ConcreteCategory.congr_hom hcondition z obtain ⟨S, hφlocal⟩ := (singularCochain_toPlus_eq_zero_iff ℚ Y ⊤ n φ).mp hφplus - have hφclosed : ((TopOpenSingularChainComplex ℚ Y).linearDualCochainComplex.d + have hφclosed : ((_root_.OAI.Algebra.Homology.LinearDual.HomologicalComplex.linearDualCochainComplex (TopOpenSingularChainComplex ℚ Y)).d n (n + 1)) φ = 0 := by change K.d n ((ComplexShape.up ℕ).next n) z = 0 at hzclosed rw [show (ComplexShape.up ℕ).next n = n + 1 by simp] at hzclosed @@ -1205,7 +1213,7 @@ theorem topOpenToGlobalSingularCochainPlusComplex_kernel_acyclic : exists_topOpenLocallyZero_primitive Y S n φ hφlocal hφclosed have hψplus : f.f ((ComplexShape.up ℕ).prev n) ψ = 0 := by change ((Opens.grothendieckTopology Y).toPlus - (singularCochainPresheaf ℚ Y ((ComplexShape.up ℕ).prev n))).app + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainPresheaf ℚ Y ((ComplexShape.up ℕ).prev n))).app (.op ⊤) ψ = 0 exact (singularCochain_toPlus_eq_zero_iff ℚ Y ⊤ ((ComplexShape.up ℕ).prev n) ψ).mpr ⟨S, hψlocal⟩ @@ -1258,7 +1266,7 @@ theorem topOpenToGlobalSingularCochainPlusComplex_kernel_acyclic : quasi-isomorphism. -/ theorem topOpenToGlobalSingularCochainPlusComplex_quasiIso : QuasiIso (topOpenToGlobalSingularCochainPlusComplex ℚ Y) := - HomologicalComplex.quasiIso_of_epi_of_kernel_acyclic + _root_.OAI.Algebra.Homology.KernelAcyclic.HomologicalComplex.quasiIso_of_epi_of_kernel_acyclic (topOpenToGlobalSingularCochainPlusComplex ℚ Y) (topOpenToGlobalSingularCochainPlusComplex_kernel_acyclic Y) @@ -1292,4 +1300,9 @@ theorem topOpenToGlobalSingularCochainSheafComplex_quasiIso end HereditarilyParacompact -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.SheafSubdivisionCochain diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/StandardSimplexCone.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/StandardSimplexCone.lean index 4c107cffce..cf11aa93ef 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/StandardSimplexCone.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/StandardSimplexCone.lean @@ -12,10 +12,13 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.BarycentricHomotopy +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.BarycentricHomotopy + +namespace OAI.AlgebraicTopology.Singular.StandardSimplexCone /-! This module is ported from Paul Lezeau's corresponding file in @@ -28,16 +31,17 @@ simplicial chains this is the classical cone operator. This file constructs it coproduct basis used by `SSet.chainComplex` and proves its positive-degree contraction identity. -/ -@[expose] public section +section noncomputable section -open CategoryTheory CategoryTheory.Limits PartialOrder Simplicial +open _root_.CategoryTheory _root_.CategoryTheory.Limits PartialOrder Simplicial -namespace AlgebraicTopology.Singular +section +section /-- Prepend the zero vertex to a simplex of `Δ[m]`. -/ -public noncomputable def standardSimplexZeroConeSimplex +noncomputable def standardSimplexZeroConeSimplex (m n : ℕ) (x : (Δ[m] : SSet.{0}).obj (Opposite.op (SimplexCategory.mk n))) : (Δ[m] : SSet.{0}).obj (Opposite.op (SimplexCategory.mk (n + 1))) := @@ -46,7 +50,7 @@ public noncomputable def standardSimplexZeroConeSimplex /-- Removing the newly prepended zero vertex recovers the original simplex. -/ @[simp] -public theorem standardSimplexZeroConeSimplex_delta_zero +theorem standardSimplexZeroConeSimplex_delta_zero (m n : ℕ) (x : (Δ[m] : SSet.{0}).obj (Opposite.op (SimplexCategory.mk n))) : (Δ[m] : SSet.{0}).δ 0 (standardSimplexZeroConeSimplex m n x) = x := @@ -55,7 +59,7 @@ public theorem standardSimplexZeroConeSimplex_delta_zero /-- Every later face of a cone is the cone on the preceding face. -/ @[simp] -public theorem standardSimplexZeroConeSimplex_delta_succ +theorem standardSimplexZeroConeSimplex_delta_succ (m n : ℕ) (i : Fin (n + 2)) (x : (Δ[m] : SSet.{0}).obj (Opposite.op (SimplexCategory.mk (n + 1)))) : (Δ[m] : SSet.{0}).δ i.succ (standardSimplexZeroConeSimplex m (n + 1) x) = @@ -64,7 +68,7 @@ public theorem standardSimplexZeroConeSimplex_delta_succ ((SSet.Augmented.StandardSimplex.extraDegeneracy (SimplexCategory.mk m)).s_comp_δ n i) x /-- The integral cone operator on all basis simplices in degree `n`. -/ -public noncomputable def standardSimplexZeroConeComponent +noncomputable def standardSimplexZeroConeComponent (m n : ℕ) : ((Δ[m] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X n ⟶ ((Δ[m] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) := @@ -73,7 +77,7 @@ public noncomputable def standardSimplexZeroConeComponent (standardSimplexZeroConeSimplex m n x)) @[reassoc (attr := simp)] -public theorem iota_standardSimplexZeroConeComponent +theorem iota_standardSimplexZeroConeComponent (m n : ℕ) (x : (Δ[m] : SSet.{0}).obj (Opposite.op (SimplexCategory.mk n))) : (Δ[m] : SSet.{0}).ιChainComplex x ≫ @@ -84,7 +88,7 @@ public theorem iota_standardSimplexZeroConeComponent /-- In every positive degree, the zero-vertex cone contracts the integral chains of a standard simplex. -/ -public theorem standardSimplexZeroConeComponent_boundary_succ +theorem standardSimplexZeroConeComponent_boundary_succ (m n : ℕ) : standardSimplexZeroConeComponent m (n + 1) ≫ ((Δ[m] : SSet.{0}).chainComplex @@ -108,7 +112,7 @@ public theorem standardSimplexZeroConeComponent_boundary_succ simp /-- The positive-degree cone fills every cycle in a standard simplex. -/ -public theorem standardSimplexZeroConeComponent_fills_cycle +theorem standardSimplexZeroConeComponent_fills_cycle (m n : ℕ) (z : AddCommGrpCat.of ℤ ⟶ ((Δ[m] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1)) @@ -125,70 +129,70 @@ public theorem standardSimplexZeroConeComponent_fills_cycle exact h /-- Subdivision followed by last vertex, minus the identity, as a chain map. -/ -public noncomputable def barycentricLastVertexDiscrepancyChainMap (X : SSet.{0}) : +noncomputable def barycentricLastVertexDiscrepancyChainMap (X : SSet.{0}) : X.chainComplex (AddCommGrpCat.of ℤ) ⟶ X.chainComplex (AddCommGrpCat.of ℤ) := - barycentricSubdivisionChainMapCanonical X ≫ - subdivisionLastVertexChainMap X - 𝟙 _ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical X ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap X - 𝟙 _ /-- The universal discrepancy is the value of the discrepancy chain map on the universal top-dimensional simplex. -/ -public theorem standardBarycentricLastVertexDiscrepancy_eq_top_comp +theorem standardBarycentricLastVertexDiscrepancy_eq_top_comp (n : ℕ) : - standardBarycentricLastVertexDiscrepancy n = - (Δ[n] : SSet.{0}).ιChainComplex (standardSimplexTopSimplex n) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy n = + (Δ[n] : SSet.{0}).ιChainComplex (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardSimplexTopSimplex n) ≫ (barycentricLastVertexDiscrepancyChainMap (Δ[n] : SSet.{0})).f n := by - rw [standardBarycentricLastVertexDiscrepancy, + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy, barycentricLastVertexDiscrepancyChainMap] simp only [HomologicalComplex.comp_f, HomologicalComplex.sub_f_apply, HomologicalComplex.id_f, Preadditive.comp_sub, Category.comp_id] - rw [← Category.assoc, barycentricSubdivisionChainMapCanonical_f, - iota_barycentricSubdivisionComponent] + rw [← Category.assoc, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical_f, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.iota_barycentricSubdivisionComponent] /-- Evaluating the discrepancy chain map on a simplex is transport of the universal discrepancy along that simplex. -/ -public theorem iota_barycentricLastVertexDiscrepancyChainMap +theorem iota_barycentricLastVertexDiscrepancyChainMap (X : SSet.{0}) (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk n))) : X.ιChainComplex x ≫ (barycentricLastVertexDiscrepancyChainMap X).f n = - standardBarycentricLastVertexDiscrepancy n ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy n ≫ (SSet.chainComplexMap (SSet.yonedaEquiv.symm x) (AddCommGrpCat.of ℤ)).f n := by - rw [standardBarycentricLastVertexDiscrepancy_transport, + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy_transport, barycentricLastVertexDiscrepancyChainMap] simp only [HomologicalComplex.comp_f, HomologicalComplex.sub_f_apply, HomologicalComplex.id_f, Preadditive.comp_sub, Category.comp_id] - rw [← Category.assoc, barycentricSubdivisionChainMapCanonical_f, - iota_barycentricSubdivisionComponent] + rw [← Category.assoc, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical_f, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.iota_barycentricSubdivisionComponent] /-- A face of the universal simplex represents the corresponding standard coface map. -/ -public theorem yonedaEquiv_symm_standardSimplexTopSimplex_delta +theorem yonedaEquiv_symm_standardSimplexTopSimplex_delta (n : ℕ) (i : Fin (n + 2)) : SSet.yonedaEquiv.symm ((Δ[n + 1] : SSet.{0}).δ i - (standardSimplexTopSimplex (n + 1))) = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardSimplexTopSimplex (n + 1))) = SSet.stdSimplex.map (SimplexCategory.δ i) := by have h := SSet.stdSimplex.δ_comp_yonedaEquiv_symm - (standardSimplexTopSimplex (n + 1)) i - rw [standardSimplexTopSimplex, + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardSimplexTopSimplex (n + 1)) i + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardSimplexTopSimplex, SSet.yonedaEquiv_symm_stdSimplex_id, Category.comp_id] at h exact h.symm /-- The boundary of the universal discrepancy is the alternating transport of the lower-dimensional universal discrepancy over all faces. -/ -public theorem standardBarycentricLastVertexDiscrepancy_boundary +theorem standardBarycentricLastVertexDiscrepancy_boundary (n : ℕ) : - standardBarycentricLastVertexDiscrepancy (n + 1) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy (n + 1) ≫ ((Δ[n + 1] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = ∑ i : Fin (n + 2), (-1 : ℤ) ^ i.val • - (standardBarycentricLastVertexDiscrepancy n ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy n ≫ (SSet.chainComplexMap (SSet.yonedaEquiv.symm ((Δ[n + 1] : SSet.{0}).δ i - (standardSimplexTopSimplex (n + 1)))) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardSimplexTopSimplex (n + 1)))) (AddCommGrpCat.of ℤ)).f n) := by rw [standardBarycentricLastVertexDiscrepancy_eq_top_comp, Category.assoc, (barycentricLastVertexDiscrepancyChainMap (Δ[n + 1] : SSet.{0})).comm, @@ -199,13 +203,13 @@ public theorem standardBarycentricLastVertexDiscrepancy_boundary /-- The same discrepancy boundary formula, written using the standard coface maps appearing in the recursive prism equation. -/ -public theorem standardBarycentricLastVertexDiscrepancy_boundary_stdSimplex +theorem standardBarycentricLastVertexDiscrepancy_boundary_stdSimplex (n : ℕ) : - standardBarycentricLastVertexDiscrepancy (n + 1) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy (n + 1) ≫ ((Δ[n + 1] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = ∑ i : Fin (n + 2), (-1 : ℤ) ^ i.val • - (standardBarycentricLastVertexDiscrepancy n ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy n ≫ (SSet.chainComplexMap (SSet.stdSimplex.map (SimplexCategory.δ i)) (AddCommGrpCat.of ℤ)).f n) := by @@ -214,52 +218,52 @@ public theorem standardBarycentricLastVertexDiscrepancy_boundary_stdSimplex rw [yonedaEquiv_symm_standardSimplexTopSimplex_delta] /-- The unique maximal flag of the zero-simplex is its singleton vertex. -/ -public theorem permutationMaximalFlagSimplex_one_zero : - permutationMaximalFlagSimplex (1 : Equiv.Perm (Fin 1)) = - subdividedZeroSimplexVertex := by +theorem permutationMaximalFlagSimplex_one_zero : + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationMaximalFlagSimplex (1 : Equiv.Perm (Fin 1)) = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricChains.subdividedZeroSimplexVertex := by refine ComposableArrows.ext (fun k ↦ ?_) (fun k hk ↦ ?_) · fin_cases k apply NonemptyFiniteChains.ext - change permutationPrefixFinset (1 : Equiv.Perm (Fin 1)) 0 = + change _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationPrefixFinset (1 : Equiv.Perm (Fin 1)) 0 = {ULift.up (0 : Fin 1)} ext z rcases z with ⟨z⟩ fin_cases z - simp [permutationPrefixFinset] + simp [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationPrefixFinset] · apply Subsingleton.elim /-- The canonical all-degree subdivision chain map agrees in degree zero with the direct vertex-level construction. -/ -public theorem barycentricSubdivisionChainMapCanonical_f_zero +theorem barycentricSubdivisionChainMapCanonical_f_zero (X : SSet.{0}) : - (barycentricSubdivisionChainMapCanonical X).f 0 = - barycentricSubdivisionChainMapZero X := by + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical X).f 0 = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricChains.barycentricSubdivisionChainMapZero X := by apply X.chainComplex_hom_ext intro x - rw [barycentricSubdivisionChainMapCanonical_f, - iota_barycentricSubdivisionComponent, - iota_barycentricSubdivisionChainMapZero] - simp [barycentricSubdivisionSimplexChain, - subdividedStandardSimplexFundamentalChain, - subdividedSimplexFundamentalChain, - barycentricSubdivisionVertex, permutationSignInteger, - permutationMaximalFlagSimplex_one_zero, subdividedStandardZeroVertex] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical_f, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.iota_barycentricSubdivisionComponent, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricChains.iota_barycentricSubdivisionChainMapZero] + simp [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionSimplexChain, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexFundamentalChain, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricChains.barycentricSubdivisionVertex, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger, + permutationMaximalFlagSimplex_one_zero, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricChains.subdividedStandardZeroVertex] /-- The universal discrepancy vanishes in degree zero. -/ @[simp] -public theorem standardBarycentricLastVertexDiscrepancy_zero : - standardBarycentricLastVertexDiscrepancy 0 = 0 := by +theorem standardBarycentricLastVertexDiscrepancy_zero : + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy 0 = 0 := by rw [standardBarycentricLastVertexDiscrepancy_eq_top_comp, barycentricLastVertexDiscrepancyChainMap] simp only [HomologicalComplex.comp_f, HomologicalComplex.sub_f_apply, HomologicalComplex.id_f] rw [barycentricSubdivisionChainMapCanonical_f_zero, - barycentricSubdivisionChainMapZero_comp_lastVertex] + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricChains.barycentricSubdivisionChainMapZero_comp_lastVertex] simp /-- Transport one universal degree-raising chain along every simplex of an arbitrary simplicial set. -/ -public noncomputable def universalStandardSimplexPrismComponent +noncomputable def universalStandardSimplexPrismComponent (n : ℕ) (p : AddCommGrpCat.of ℤ ⟶ ((Δ[n] : SSet.{0}).chainComplex @@ -272,7 +276,7 @@ public noncomputable def universalStandardSimplexPrismComponent (AddCommGrpCat.of ℤ)).f (n + 1)) @[reassoc (attr := simp)] -public theorem iota_universalStandardSimplexPrismComponent +theorem iota_universalStandardSimplexPrismComponent (n : ℕ) (p : AddCommGrpCat.of ℤ ⟶ ((Δ[n] : SSet.{0}).chainComplex @@ -286,19 +290,19 @@ public theorem iota_universalStandardSimplexPrismComponent /-- The face-prism sum is the boundary of the universal top simplex followed by the transported lower-dimensional prism operator. -/ -public theorem standardPrismFaceChain_eq_top_boundary_comp +theorem standardPrismFaceChain_eq_top_boundary_comp (prism : ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((Δ[n] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1)) (n : ℕ) : - standardPrismFaceChain prism (n + 1) = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain prism (n + 1) = (Δ[n + 1] : SSet.{0}).ιChainComplex - (standardSimplexTopSimplex (n + 1)) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardSimplexTopSimplex (n + 1)) ≫ ((Δ[n + 1] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n ≫ universalStandardSimplexPrismComponent n (prism n) (Δ[n + 1] : SSet.{0}) := by - rw [standardPrismFaceChain, ← Category.assoc, + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain, ← Category.assoc, SSet.ιChainComplex_d, Preadditive.sum_comp] simp only [Preadditive.zsmul_comp, iota_universalStandardSimplexPrismComponent] @@ -307,19 +311,19 @@ public theorem standardPrismFaceChain_eq_top_boundary_comp /-- Transporting a raw face-prism sum is the source boundary followed by the transported raw prism operator. -/ -public theorem standardPrismFaceChain_transport_raw +theorem standardPrismFaceChain_transport_raw (prism : ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((Δ[n] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1)) (X : SSet.{0}) (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk (n + 1)))) : - standardPrismFaceChain prism (n + 1) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain prism (n + 1) ≫ (SSet.chainComplexMap (SSet.yonedaEquiv.symm x) (AddCommGrpCat.of ℤ)).f (n + 1) = X.ιChainComplex x ≫ (X.chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n ≫ universalStandardSimplexPrismComponent n (prism n) X := by - rw [standardPrismFaceChain, Preadditive.sum_comp] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain, Preadditive.sum_comp] simp only [Preadditive.zsmul_comp, Category.assoc] rw [← Category.assoc, SSet.ιChainComplex_d, Preadditive.sum_comp] simp only [Preadditive.zsmul_comp, @@ -350,16 +354,16 @@ public theorem standardPrismFaceChain_transport_raw /-- One universal prism equation induces the corresponding operator equation on every simplicial set in that degree. -/ -public theorem universalStandardSimplexPrismComponent_boundary_succ +theorem universalStandardSimplexPrismComponent_boundary_succ (prism : ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((Δ[n] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1)) (n : ℕ) - (h : standardBarycentricLastVertexDiscrepancy (n + 1) = + (h : _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy (n + 1) = prism (n + 1) ≫ ((Δ[n + 1] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1) + - standardPrismFaceChain prism (n + 1)) + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain prism (n + 1)) (X : SSet.{0}) : (barycentricLastVertexDiscrepancyChainMap X).f (n + 1) = universalStandardSimplexPrismComponent (n + 1) @@ -383,18 +387,18 @@ public theorem universalStandardSimplexPrismComponent_boundary_succ /-- Once the prism equation is known in degree `n+1`, the residual used to define the next prism is a cycle. The cancellation is exactly `∂² = 0`, expressed through the transported universal prism operator. -/ -public theorem standardBarycentricLastVertexPrismResidual_cycle_succ +theorem standardBarycentricLastVertexPrismResidual_cycle_succ (prism : ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((Δ[n] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1)) (n : ℕ) - (h : standardBarycentricLastVertexDiscrepancy (n + 1) = + (h : _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy (n + 1) = prism (n + 1) ≫ ((Δ[n + 1] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1) + - standardPrismFaceChain prism (n + 1)) : - (standardBarycentricLastVertexDiscrepancy (n + 2) - - standardPrismFaceChain prism (n + 2)) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain prism (n + 1)) : + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy (n + 2) - + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain prism (n + 2)) ≫ ((Δ[n + 2] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1) = 0 := by let X : SSet.{0} := (Δ[n + 2] : SSet.{0}) @@ -412,23 +416,23 @@ public theorem standardBarycentricLastVertexPrismResidual_cycle_succ rw [hop] abel rw [Preadditive.sub_comp] - have hface : standardPrismFaceChain prism (n + 2) ≫ + have hface : _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain prism (n + 2) ≫ (X.chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1) = - standardBarycentricLastVertexDiscrepancy (n + 2) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy (n + 2) ≫ (X.chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1) := by rw [standardPrismFaceChain_eq_top_boundary_comp] - change ((X.ιChainComplex (standardSimplexTopSimplex (n + 2)) ≫ + change ((X.ιChainComplex (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardSimplexTopSimplex (n + 2)) ≫ (X.chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1)) ≫ U) ≫ (X.chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1) = _ rw [Category.assoc, hU, Preadditive.comp_sub] have hdd : - (X.ιChainComplex (standardSimplexTopSimplex (n + 2)) ≫ + (X.ιChainComplex (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardSimplexTopSimplex (n + 2)) ≫ (X.chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1)) ≫ (X.chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = 0 := by rw [Category.assoc, (X.chainComplex (AddCommGrpCat.of ℤ)).d_comp_d, comp_zero] have hddV : - (X.ιChainComplex (standardSimplexTopSimplex (n + 2)) ≫ + (X.ιChainComplex (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardSimplexTopSimplex (n + 2)) ≫ (X.chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1)) ≫ (X.chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n ≫ V = 0 := by rw [← Category.assoc, hdd, zero_comp] @@ -440,64 +444,63 @@ public theorem standardBarycentricLastVertexPrismResidual_cycle_succ /-- The universal prism chains obtained recursively by filling each residual with the zero-vertex cone. -/ -public noncomputable def canonicalBarycentricLastVertexPrism +noncomputable def canonicalBarycentricLastVertexPrism (n : ℕ) : AddCommGrpCat.of ℤ ⟶ ((Δ[n] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) := - match n with - | 0 => 0 - | n + 1 => - (standardBarycentricLastVertexDiscrepancy (n + 1) - + Nat.rec + 0 + (fun n previous => + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy (n + 1) - ∑ i : Fin (n + 2), (-1 : ℤ) ^ i.val • - (canonicalBarycentricLastVertexPrism n ≫ + (previous ≫ (SSet.chainComplexMap (SSet.stdSimplex.map (SimplexCategory.δ i)) (AddCommGrpCat.of ℤ)).f (n + 1))) ≫ - standardSimplexZeroConeComponent (n + 1) (n + 1) -termination_by n + standardSimplexZeroConeComponent (n + 1) (n + 1)) n @[simp] -public theorem canonicalBarycentricLastVertexPrism_zero : - canonicalBarycentricLastVertexPrism 0 = 0 := by - simp [canonicalBarycentricLastVertexPrism] +theorem canonicalBarycentricLastVertexPrism_zero : + _root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.canonicalBarycentricLastVertexPrism 0 = 0 := by + simp [_root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.canonicalBarycentricLastVertexPrism] /-- The recursive prism is the cone on discrepancy minus the face prisms. -/ -public theorem canonicalBarycentricLastVertexPrism_succ +theorem canonicalBarycentricLastVertexPrism_succ (n : ℕ) : - canonicalBarycentricLastVertexPrism (n + 1) = - (standardBarycentricLastVertexDiscrepancy (n + 1) - - standardPrismFaceChain canonicalBarycentricLastVertexPrism (n + 1)) ≫ + _root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.canonicalBarycentricLastVertexPrism (n + 1) = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy (n + 1) - + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain _root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.canonicalBarycentricLastVertexPrism (n + 1)) ≫ standardSimplexZeroConeComponent (n + 1) (n + 1) := by - simp [canonicalBarycentricLastVertexPrism, standardPrismFaceChain] + simp [_root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.canonicalBarycentricLastVertexPrism, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain] /-- The first recursive residual is a cycle; both its degree-zero discrepancy and its previous prism vanish. -/ -public theorem canonicalBarycentricLastVertexPrismResidual_cycle_one : - (standardBarycentricLastVertexDiscrepancy 1 - - standardPrismFaceChain canonicalBarycentricLastVertexPrism 1) ≫ +theorem canonicalBarycentricLastVertexPrismResidual_cycle_one : + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy 1 - + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain _root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.canonicalBarycentricLastVertexPrism 1) ≫ ((Δ[1] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).d 1 0 = 0 := by rw [Preadditive.sub_comp, standardBarycentricLastVertexDiscrepancy_boundary_stdSimplex] - simp [standardPrismFaceChain] + simp [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain] /-- The recursively coned universal chains satisfy the complete universal prism equation in every degree. -/ -public theorem canonicalBarycentricLastVertexPrism_boundary +theorem canonicalBarycentricLastVertexPrism_boundary (n : ℕ) : - standardBarycentricLastVertexDiscrepancy n = - canonicalBarycentricLastVertexPrism n ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy n = + _root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.canonicalBarycentricLastVertexPrism n ≫ ((Δ[n] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n + - standardPrismFaceChain canonicalBarycentricLastVertexPrism n := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain _root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.canonicalBarycentricLastVertexPrism n := by induction n with | zero => - simp [standardPrismFaceChain] + simp [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain] | succ n ih => have hcycle : - (standardBarycentricLastVertexDiscrepancy (n + 1) - - standardPrismFaceChain canonicalBarycentricLastVertexPrism (n + 1)) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy (n + 1) - + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain _root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.canonicalBarycentricLastVertexPrism (n + 1)) ≫ ((Δ[n + 1] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = 0 := by cases n with @@ -505,25 +508,31 @@ public theorem canonicalBarycentricLastVertexPrism_boundary exact canonicalBarycentricLastVertexPrismResidual_cycle_one | succ k => exact standardBarycentricLastVertexPrismResidual_cycle_succ - canonicalBarycentricLastVertexPrism k ih + _root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.canonicalBarycentricLastVertexPrism k ih have hfill := standardSimplexZeroConeComponent_fills_cycle (n + 1) n - (standardBarycentricLastVertexDiscrepancy (n + 1) - - standardPrismFaceChain canonicalBarycentricLastVertexPrism (n + 1)) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy (n + 1) - + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.standardPrismFaceChain _root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.canonicalBarycentricLastVertexPrism (n + 1)) hcycle rw [canonicalBarycentricLastVertexPrism_succ, Category.assoc, hfill] abel /-- The explicit canonical chain homotopy from subdivision followed by last vertex to the identity, built from the recursively coned universal prisms. -/ -public noncomputable def barycentricSubdivisionLastVertexHomotopyCanonical +noncomputable def barycentricSubdivisionLastVertexHomotopyCanonical (X : SSet.{0}) : Homotopy - (barycentricSubdivisionChainMapCanonical X ≫ - subdivisionLastVertexChainMap X) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical X ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap X) (𝟙 (X.chainComplex (AddCommGrpCat.of ℤ))) := - barycentricSubdivisionLastVertexHomotopy - { prism := canonicalBarycentricLastVertexPrism + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy.barycentricSubdivisionLastVertexHomotopy + { prism := _root_.OAI.AlgebraicTopology.Singular.StandardSimplexCone.canonicalBarycentricLastVertexPrism boundary := canonicalBarycentricLastVertexPrism_boundary } X -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.StandardSimplexCone diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/Affine.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/Affine.lean index 18eca81450..8e996ca495 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/Affine.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/Affine.lean @@ -12,16 +12,21 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.BarycentricAllDegrees -public import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric -public import Mathlib.Geometry.Convex.ConvexSpace.Barycenter +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.BarycentricAllDegrees +import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric +import Mathlib.Geometry.Convex.ConvexSpace.Barycenter import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.BarycentricOuterFaces import Mathlib.Logic.Equiv.PartialEquiv +namespace OAI.AlgebraicTopology.Singular.SubdivisionAffine + +open scoped OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex + /-! This module is ported from Paul Lezeau's corresponding file in `sphere-six-complex` pull request #49, under the Apache-2.0 license. @@ -35,22 +40,23 @@ is the piece needed to transport the combinatorial subdivision-chain boundary ca ordinary singular chains. -/ -@[expose] public section +section noncomputable section -open CategoryTheory CategoryTheory.Limits PartialOrder Simplicial +open _root_.CategoryTheory _root_.CategoryTheory.Limits PartialOrder Simplicial -open scoped Convexity.StdSimplex +open scoped _root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex -namespace AlgebraicTopology.Singular +section +section /-- The affine combination of a finite family of points in a standard simplex. -/ -public noncomputable def stdSimplexAffineCombination +noncomputable def stdSimplexAffineCombination {X Y : Type*} [Fintype X] [Fintype Y] (p : X → Convexity.StdSimplex ℝ Y) (w : Convexity.StdSimplex ℝ X) : Convexity.StdSimplex ℝ Y := - Convexity.StdSimplex.ofCoordinates (fun y ↦ ∑ x, w x * p x y) + _root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex.ofCoordinates (fun y ↦ ∑ x, w x * p x y) (fun y ↦ Finset.sum_nonneg (fun x _ ↦ mul_nonneg (Convexity.StdSimplex.weights_nonneg (w := w) x) (Convexity.StdSimplex.weights_nonneg (w := p x) y))) @@ -59,14 +65,14 @@ public noncomputable def stdSimplexAffineCombination simp only [← Finset.mul_sum, Convexity.StdSimplex.total_of_fintype, mul_one]) @[simp] -public theorem stdSimplexAffineCombination_apply +theorem stdSimplexAffineCombination_apply {X Y : Type*} [Fintype X] [Fintype Y] (p : X → Convexity.StdSimplex ℝ Y) (w : Convexity.StdSimplex ℝ X) (y : Y) : stdSimplexAffineCombination p w y = ∑ x, w x * p x y := by - exact Convexity.StdSimplex.ofCoordinates_weights _ _ _ _ + exact _root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex.ofCoordinates_weights _ _ _ _ /-- Affine combination varies continuously with its simplex of coefficients. -/ -public theorem continuous_stdSimplexAffineCombination +theorem continuous_stdSimplexAffineCombination {X Y : Type*} [Fintype X] [Fintype Y] (p : X → Convexity.StdSimplex ℝ Y) : Continuous (stdSimplexAffineCombination p) := by @@ -80,14 +86,14 @@ public theorem continuous_stdSimplexAffineCombination (Convexity.StdSimplex.continuous_weights_apply ℝ x).mul continuous_const /-- Reindexing the coefficients reindexes the vertices of an affine simplex. -/ -public theorem stdSimplexAffineCombination_map +theorem stdSimplexAffineCombination_map {X Y Z : Type*} [Fintype X] [Fintype Y] [Fintype Z] (f : X → Y) (p : Y → Convexity.StdSimplex ℝ Z) (w : Convexity.StdSimplex ℝ X) : stdSimplexAffineCombination p (Convexity.StdSimplex.map f w) = stdSimplexAffineCombination (p ∘ f) w := by classical ext z - simp only [stdSimplexAffineCombination_apply, Convexity.StdSimplex.weights_map_sum, Function.comp_apply, Finset.sum_mul] + simp only [stdSimplexAffineCombination_apply, _root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex.weights_map_sum, Function.comp_apply, Finset.sum_mul] calc ∑ y, ∑ x with f x = y, w x * p y z = ∑ y, ∑ x with f x = y, w x * p (f x) z := by @@ -101,13 +107,13 @@ public theorem stdSimplexAffineCombination_map /-- An injective reindexing preserves the coefficient over every point of its image. -/ @[simp] -public theorem stdSimplex_map_apply_injective +theorem stdSimplex_map_apply_injective {X Y : Type*} [Fintype X] [Fintype Y] (f : X → Y) (hf : Function.Injective f) (w : Convexity.StdSimplex ℝ X) (x : X) : Convexity.StdSimplex.map f w (f x) = w x := by classical - simp only [Convexity.StdSimplex.weights_map_sum, hf.eq_iff] + simp only [_root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex.weights_map_sum, hf.eq_iff] have hfilter : Finset.univ.filter (fun a : X ↦ a = x) = {x} := by ext a simp [eq_comm] @@ -115,26 +121,26 @@ public theorem stdSimplex_map_apply_injective simp /-- An injective reindexing has zero coefficient away from its image. -/ -public theorem stdSimplex_map_apply_eq_zero_of_not_mem_range +theorem stdSimplex_map_apply_eq_zero_of_not_mem_range {X Y : Type*} [Fintype X] [Fintype Y] (f : X → Y) (w : Convexity.StdSimplex ℝ X) (y : Y) (hy : y ∉ Set.range f) : Convexity.StdSimplex.map f w y = 0 := by classical - simp only [Convexity.StdSimplex.weights_map_sum] + simp only [_root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex.weights_map_sum] apply Finset.sum_eq_zero intro x hx exact (hy ⟨x, (Finset.mem_filter.mp hx).2⟩).elim /-- Mapping a standard simplex commutes with taking a finite affine combination. -/ -public theorem stdSimplex_map_affineCombination +theorem stdSimplex_map_affineCombination {X Y Z : Type*} [Fintype X] [Fintype Y] [Fintype Z] (f : Y → Z) (p : X → Convexity.StdSimplex ℝ Y) (w : Convexity.StdSimplex ℝ X) : Convexity.StdSimplex.map f (stdSimplexAffineCombination p w) = stdSimplexAffineCombination (fun x ↦ Convexity.StdSimplex.map f (p x)) w := by classical ext z - simp only [Convexity.StdSimplex.weights_map_sum, + simp only [_root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex.weights_map_sum, stdSimplexAffineCombination_apply] change (Finset.univ.filter (fun y ↦ f y = z)).sum (fun y ↦ ∑ x, w x * p x y) = @@ -144,25 +150,24 @@ public theorem stdSimplex_map_affineCombination /-- The barycenter of a nonempty face of the standard `n`-simplex, embedded in the ambient standard simplex. -/ -public noncomputable def nonemptyFiniteChainBarycenter {n : ℕ} +noncomputable def nonemptyFiniteChainBarycenter {n : ℕ} (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : Convexity.StdSimplex ℝ (Fin (n + 1)) := by haveI : Nonempty A.finset := A.nonempty.to_subtype exact Convexity.StdSimplex.map (fun a : A.finset ↦ a.1.down) (Convexity.StdSimplex.barycenter : Convexity.StdSimplex ℝ A.finset) -set_option linter.style.haveILetI false in /-- Coordinate formula for the barycenter of a face. -/ @[simp] -public theorem nonemptyFiniteChainBarycenter_apply {n : ℕ} +theorem nonemptyFiniteChainBarycenter_apply {n : ℕ} (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) (i : Fin (n + 1)) : nonemptyFiniteChainBarycenter A i = if ULift.up i ∈ A.finset then (A.finset.card : ℝ)⁻¹ else 0 := by classical - letI : Nonempty A.finset := A.nonempty.to_subtype + let : Nonempty A.finset := A.nonempty.to_subtype unfold nonemptyFiniteChainBarycenter - simp only [Convexity.StdSimplex.weights_map_sum] + simp only [_root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex.weights_map_sum] by_cases hi : ULift.up i ∈ A.finset · rw [ite_eq_left hi] have hfilter : @@ -191,14 +196,14 @@ public theorem nonemptyFiniteChainBarycenter_apply {n : ℕ} simp /-- The order embedding of vertices associated to a standard-simplex face inclusion. -/ -public def standardSimplexFaceVertexOrderHom +def standardSimplexFaceVertexOrderHom (n : ℕ) (p : Fin (n + 2)) : ULift.{0} (Fin (n + 1)) →o ULift.{0} (Fin (n + 2)) where toFun a := ULift.up (p.succAbove a.down) monotone' _ _ h := (Fin.strictMono_succAbove p).monotone h /-- The explicit face vertex embedding is the vertex map used by `SimplexCategory.sd`. -/ -public theorem standardSimplexFaceVertexOrderHom_eq_toPartOrd +theorem standardSimplexFaceVertexOrderHom_eq_toPartOrd (n : ℕ) (p : Fin (n + 2)) : standardSimplexFaceVertexOrderHom n p = (SimplexCategory.toPartOrd.{0}.map (SimplexCategory.δ p)).hom := by @@ -206,9 +211,8 @@ public theorem standardSimplexFaceVertexOrderHom_eq_toPartOrd induction a rfl -set_option linter.style.haveILetI false in /-- Face inclusions send face barycenters to the corresponding ambient face barycenters. -/ -public theorem nonemptyFiniteChainBarycenter_face +theorem nonemptyFiniteChainBarycenter_face (n : ℕ) (p : Fin (n + 2)) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : nonemptyFiniteChainBarycenter @@ -227,7 +231,7 @@ public theorem nonemptyFiniteChainBarycenter_face rw [hg a, hg b] at hab exact ULift.down_injective (Fin.succAbove_right_injective (congrArg ULift.down hab)) have hcard : (A.map g).finset.card = A.finset.card := by - letI : DecidableEq (ULift.{0} (Fin (n + 2))) := Classical.decEq _ + let : DecidableEq (ULift.{0} (Fin (n + 2))) := Classical.decEq _ unfold NonemptyFiniteChains.map exact Finset.card_image_of_injective A.finset hginj ext y @@ -261,7 +265,7 @@ public theorem nonemptyFiniteChainBarycenter_face exact hy ⟨a.down, ULift.up_injective hga⟩ /-- The affine map associated to a flag of nonempty faces. -/ -public noncomputable def affineFlagContinuousMap (n k : ℕ) +noncomputable def affineFlagContinuousMap (n k : ℕ) (F : ComposableArrows (NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) k) : C(Convexity.StdSimplex ℝ (Fin (k + 1)), Convexity.StdSimplex ℝ (Fin (n + 1))) := @@ -270,13 +274,13 @@ public noncomputable def affineFlagContinuousMap (n k : ℕ) continuous_stdSimplexAffineCombination _⟩ /-- The continuous affine inclusion of a codimension-one face of a standard simplex. -/ -public noncomputable def standardSimplexFaceContinuousMap +noncomputable def standardSimplexFaceContinuousMap (n : ℕ) (p : Fin (n + 2)) : C(Convexity.StdSimplex ℝ (Fin (n + 1)), Convexity.StdSimplex ℝ (Fin (n + 2))) := ⟨Convexity.StdSimplex.map p.succAbove, Convexity.StdSimplex.continuous_map ℝ p.succAbove⟩ /-- Affine realization of flags is natural under ambient coface inclusions. -/ -public theorem affineFlagContinuousMap_face +theorem affineFlagContinuousMap_face (n k : ℕ) (p : Fin (n + 2)) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk k))) : @@ -302,7 +306,7 @@ public theorem affineFlagContinuousMap_face exact nonemptyFiniteChainBarycenter_face n p (F.obj j) /-- The face inclusion as a morphism of topological spaces. -/ -public noncomputable def standardSimplexFaceTopCatMap +noncomputable def standardSimplexFaceTopCatMap (n : ℕ) (p : Fin (n + 2)) : TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))) ⟶ TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 2))) := @@ -310,7 +314,7 @@ public noncomputable def standardSimplexFaceTopCatMap /-- A flag in the barycentric subdivision nerve, regarded as an ordinary singular simplex of the ambient topological standard simplex. -/ -public noncomputable def affineFlagSingularSimplex (n k : ℕ) +noncomputable def affineFlagSingularSimplex (n k : ℕ) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk k))) : (TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).obj @@ -320,7 +324,7 @@ public noncomputable def affineFlagSingularSimplex (n k : ℕ) /-- Under the continuous-map description of singular simplices, functoriality in the topological space is postcomposition. -/ @[simp] -public theorem toSSetObjEquiv_map_apply +theorem toSSetObjEquiv_map_apply {X Y : TopCat.{0}} (f : X ⟶ Y) {k : ℕ} (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk k))) @@ -330,7 +334,7 @@ public theorem toSSetObjEquiv_map_apply rfl /-- Affine flag singular simplices commute with ambient coface inclusions. -/ -public theorem affineFlagSingularSimplex_face +theorem affineFlagSingularSimplex_face (n k : ℕ) (p : Fin (n + 2)) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk k))) : @@ -352,7 +356,7 @@ public theorem affineFlagSingularSimplex_face /-- Deleting a vertex of a flag agrees with restricting its affine singular simplex to the corresponding face. -/ @[simp] -public theorem affineFlagSingularSimplex_delta +theorem affineFlagSingularSimplex_delta (n k : ℕ) (i : Fin (k + 2)) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk (k + 1)))) : @@ -373,7 +377,7 @@ public theorem affineFlagSingularSimplex_delta rfl /-- The degree-`k` homomorphism which realizes every flag as its affine singular simplex. -/ -public noncomputable def affineFlagChainComponent (n k : ℕ) : +noncomputable def affineFlagChainComponent (n k : ℕ) : ((SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).chainComplex (AddCommGrpCat.of ℤ)).X k ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex @@ -383,7 +387,7 @@ public noncomputable def affineFlagChainComponent (n k : ℕ) : (affineFlagSingularSimplex n k F)) @[reassoc (attr := simp)] -public theorem iota_affineFlagChainComponent +theorem iota_affineFlagChainComponent (n k : ℕ) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk k))) : @@ -394,7 +398,7 @@ public theorem iota_affineFlagChainComponent apply Sigma.ι_comp_desc /-- The affine flag realization commutes with the simplicial differentials. -/ -public theorem affineFlagChainComponents_commute (n k : ℕ) : +theorem affineFlagChainComponents_commute (n k : ℕ) : affineFlagChainComponent n (k + 1) ≫ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex @@ -412,7 +416,7 @@ public theorem affineFlagChainComponents_commute (n k : ℕ) : /-- The all-degree affine realization from the barycentric nerve model to the ordinary singular chain complex of the topological standard simplex. -/ -public noncomputable def affineFlagChainMap (n : ℕ) : +noncomputable def affineFlagChainMap (n : ℕ) : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).chainComplex (AddCommGrpCat.of ℤ) ⟶ (TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex @@ -421,12 +425,12 @@ public noncomputable def affineFlagChainMap (n : ℕ) : (affineFlagChainComponents_commute n) @[simp] -public theorem affineFlagChainMap_f (n k : ℕ) : +theorem affineFlagChainMap_f (n k : ℕ) : (affineFlagChainMap n).f k = affineFlagChainComponent n k := rfl /-- The affine flag chain maps commute with ambient coface inclusions. -/ -public theorem affineFlagChainMap_face +theorem affineFlagChainMap_face (n : ℕ) (p : Fin (n + 2)) : affineFlagChainMap n ≫ SSet.chainComplexMap @@ -460,21 +464,21 @@ public theorem affineFlagChainMap_face /-- The signed affine barycentric subdivision of the topological standard `n`-simplex, now as an integral singular chain. -/ -public noncomputable def affineSubdividedSimplexFundamentalChain (n : ℕ) : +noncomputable def affineSubdividedSimplexFundamentalChain (n : ℕ) : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex (AddCommGrpCat.of ℤ)).X n := - subdividedSimplexFundamentalChain n ≫ (affineFlagChainMap n).f n + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain n ≫ (affineFlagChainMap n).f n /-- Realizing a subdivided face in its ambient simplex agrees with first realizing the face and then applying the topological coface inclusion. -/ -public theorem affineSubdividedSimplexFundamentalChain_face +theorem affineSubdividedSimplexFundamentalChain_face (n : ℕ) (p : Fin (n + 2)) : affineSubdividedSimplexFundamentalChain n ≫ (SSet.chainComplexMap (TopCat.toSSet.map (standardSimplexFaceTopCatMap n p)) (AddCommGrpCat.of ℤ)).f n = - (subdividedSimplexFundamentalChain n ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain n ≫ (SSet.chainComplexMap (SimplexCategory.sd.{0}.map (SimplexCategory.δ p)) (AddCommGrpCat.of ℤ)).f n) ≫ @@ -492,15 +496,15 @@ public theorem affineSubdividedSimplexFundamentalChain_face /-- The realized alternating boundary chain: each subdivided face flag is interpreted inside the ambient topological `(n+1)`-simplex. -/ -public noncomputable def affineSubdividedSimplexAlternatingFaceChain (n : ℕ) : +noncomputable def affineSubdividedSimplexAlternatingFaceChain (n : ℕ) : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 2))))).chainComplex (AddCommGrpCat.of ℤ)).X n := - subdividedSimplexAlternatingFaceChain n ≫ (affineFlagChainMap (n + 1)).f n + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexAlternatingFaceChain n ≫ (affineFlagChainMap (n + 1)).f n /-- The alternating sum of the affine subdivided faces, each included into the ambient topological standard simplex. -/ -public noncomputable def affineSubdividedSimplexExpectedBoundaryChain (n : ℕ) : +noncomputable def affineSubdividedSimplexExpectedBoundaryChain (n : ℕ) : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 2))))).chainComplex (AddCommGrpCat.of ℤ)).X n := @@ -511,11 +515,11 @@ public noncomputable def affineSubdividedSimplexExpectedBoundaryChain (n : ℕ) (AddCommGrpCat.of ℤ)).f n) /-- The model alternating face chain realizes to the geometric alternating face chain. -/ -public theorem affineSubdividedSimplexAlternatingFaceChain_eq_expected +theorem affineSubdividedSimplexAlternatingFaceChain_eq_expected (n : ℕ) : affineSubdividedSimplexAlternatingFaceChain n = affineSubdividedSimplexExpectedBoundaryChain n := by - rw [affineSubdividedSimplexAlternatingFaceChain, subdividedSimplexAlternatingFaceChain, + rw [affineSubdividedSimplexAlternatingFaceChain, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexAlternatingFaceChain, Preadditive.sum_comp, affineSubdividedSimplexExpectedBoundaryChain] apply Finset.sum_congr rfl intro p _ @@ -525,29 +529,29 @@ public theorem affineSubdividedSimplexAlternatingFaceChain_eq_expected /-- The affine barycentric fundamental chain has exactly the expected alternating boundary in ordinary singular chains. -/ -public theorem affineSubdividedSimplexFundamentalChain_boundary (n : ℕ) : +theorem affineSubdividedSimplexFundamentalChain_boundary (n : ℕ) : affineSubdividedSimplexFundamentalChain (n + 1) ≫ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 2))))).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = affineSubdividedSimplexAlternatingFaceChain n := by let F := affineFlagChainMap (n + 1) - change (subdividedSimplexFundamentalChain (n + 1) ≫ F.f (n + 1)) ≫ _ = _ + change (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain (n + 1) ≫ F.f (n + 1)) ≫ _ = _ calc - _ = subdividedSimplexFundamentalChain (n + 1) ≫ + _ = _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain (n + 1) ≫ (F.f (n + 1) ≫ _) := Category.assoc _ _ _ - _ = subdividedSimplexFundamentalChain (n + 1) ≫ + _ = _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain (n + 1) ≫ (_ ≫ F.f n) := by rw [F.comm] - _ = (subdividedSimplexFundamentalChain (n + 1) ≫ + _ = (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain (n + 1) ≫ ((SimplexCategory.sd.{0}.obj (SimplexCategory.mk (n + 1))).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n) ≫ F.f n := (Category.assoc _ _ _).symm - _ = subdividedSimplexAlternatingFaceChain n ≫ F.f n := by - rw [barycentricFundamentalBoundaryIdentity n] + _ = _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexAlternatingFaceChain n ≫ F.f n := by + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricFundamentalBoundaryIdentity n] _ = _ := rfl /-- Geometric form of the affine subdivision boundary theorem. -/ -public theorem affineSubdividedSimplexFundamentalChain_boundary_expected +theorem affineSubdividedSimplexFundamentalChain_boundary_expected (n : ℕ) : affineSubdividedSimplexFundamentalChain (n + 1) ≫ ((TopCat.toSSet.obj @@ -558,7 +562,7 @@ public theorem affineSubdividedSimplexFundamentalChain_boundary_expected affineSubdividedSimplexAlternatingFaceChain_eq_expected] /-- The topological map represented by a singular simplex. -/ -public noncomputable def singularSimplexTopCatMap +noncomputable def singularSimplexTopCatMap (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) : @@ -567,7 +571,7 @@ public noncomputable def singularSimplexTopCatMap /-- The map represented by a face of a singular simplex is obtained by precomposing with the standard topological coface inclusion. -/ -public theorem singularSimplexTopCatMap_delta +theorem singularSimplexTopCatMap_delta (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk (n + 1)))) @@ -579,7 +583,7 @@ public theorem singularSimplexTopCatMap_delta rfl /-- Mapping a singular simplex postcomposes its represented topological map. -/ -public theorem singularSimplexTopCatMap_map +theorem singularSimplexTopCatMap_map {X Y : TopCat.{0}} (f : X ⟶ Y) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) : @@ -589,7 +593,7 @@ public theorem singularSimplexTopCatMap_map rfl /-- The affine barycentric subdivision chain associated to one singular simplex. -/ -public noncomputable def affineSubdivisionSingularSimplexChain +noncomputable def affineSubdivisionSingularSimplexChain (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) : @@ -601,7 +605,7 @@ public noncomputable def affineSubdivisionSingularSimplexChain (AddCommGrpCat.of ℤ)).f n /-- Subdivision of a single singular simplex is natural in the target space. -/ -public theorem affineSubdivisionSingularSimplexChain_naturality +theorem affineSubdivisionSingularSimplexChain_naturality {X Y : TopCat.{0}} (f : X ⟶ Y) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) : @@ -643,7 +647,7 @@ public theorem affineSubdivisionSingularSimplexChain_naturality rw [hn] /-- The alternating sum of the affine subdivisions of the faces of a singular simplex. -/ -public noncomputable def affineSubdivisionSingularSimplexAlternatingFaceChain +noncomputable def affineSubdivisionSingularSimplexAlternatingFaceChain (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk (n + 1)))) : @@ -655,7 +659,7 @@ public noncomputable def affineSubdivisionSingularSimplexAlternatingFaceChain /-- The affine subdivision of one singular simplex has the alternating sum of the subdivisions of its faces as boundary. -/ -public theorem affineSubdivisionSingularSimplexChain_boundary +theorem affineSubdivisionSingularSimplexChain_boundary (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk (n + 1)))) : @@ -712,14 +716,14 @@ public theorem affineSubdivisionSingularSimplexChain_boundary rw [affineSubdivisionSingularSimplexChain, hn] /-- The degreewise affine barycentric subdivision operator on integral singular chains. -/ -public noncomputable def affineSingularSubdivisionComponent +noncomputable def affineSingularSubdivisionComponent (X : TopCat.{0}) (n : ℕ) : ((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ)).X n ⟶ ((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ)).X n := Sigma.desc (affineSubdivisionSingularSimplexChain X n) @[reassoc (attr := simp)] -public theorem iota_affineSingularSubdivisionComponent +theorem iota_affineSingularSubdivisionComponent (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) : @@ -729,7 +733,7 @@ public theorem iota_affineSingularSubdivisionComponent apply Sigma.ι_comp_desc /-- The degreewise affine singular subdivision operators are natural. -/ -public theorem affineSingularSubdivisionComponent_naturality +theorem affineSingularSubdivisionComponent_naturality {X Y : TopCat.{0}} (f : X ⟶ Y) (n : ℕ) : (SSet.chainComplexMap (TopCat.toSSet.map f) (AddCommGrpCat.of ℤ)).f n ≫ @@ -744,7 +748,7 @@ public theorem affineSingularSubdivisionComponent_naturality affineSubdivisionSingularSimplexChain_naturality] /-- The affine singular subdivision components commute with the boundary maps. -/ -public theorem affineSingularSubdivisionComponents_commute +theorem affineSingularSubdivisionComponents_commute (X : TopCat.{0}) (n : ℕ) : affineSingularSubdivisionComponent X (n + 1) ≫ ((TopCat.toSSet.obj X).chainComplex @@ -763,7 +767,7 @@ public theorem affineSingularSubdivisionComponents_commute /-- The affine barycentric subdivision endomorphism of the integral singular chain complex of a topological space. -/ -public noncomputable def affineSingularSubdivisionChainMap +noncomputable def affineSingularSubdivisionChainMap (X : TopCat.{0}) : (TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ) ⟶ (TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ) := @@ -771,14 +775,14 @@ public noncomputable def affineSingularSubdivisionChainMap (affineSingularSubdivisionComponents_commute X) @[simp] -public theorem affineSingularSubdivisionChainMap_f +theorem affineSingularSubdivisionChainMap_f (X : TopCat.{0}) (n : ℕ) : (affineSingularSubdivisionChainMap X).f n = affineSingularSubdivisionComponent X n := rfl /-- The affine singular subdivision chain endomorphisms are natural in continuous maps. -/ -public theorem affineSingularSubdivisionChainMap_naturality +theorem affineSingularSubdivisionChainMap_naturality {X Y : TopCat.{0}} (f : X ⟶ Y) : SSet.chainComplexMap (TopCat.toSSet.map f) (AddCommGrpCat.of ℤ) ≫ @@ -790,4 +794,10 @@ public theorem affineSingularSubdivisionChainMap_naturality funext n exact affineSingularSubdivisionComponent_naturality f n -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.SubdivisionAffine diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineIteration.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineIteration.lean index 510c52b9b2..9680a2ade5 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineIteration.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineIteration.lean @@ -12,10 +12,13 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffineSmallPrism +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffineSmallPrism + +namespace OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration /-! This module is ported from Paul Lezeau's corresponding file in @@ -28,107 +31,114 @@ singular chains. Every iterate is chain homotopic to the identity, and the smal commute with the canonical inclusion. -/ -@[expose] public section +section noncomputable section -open AlgebraicTopology CategoryTheory +open _root_.AlgebraicTopology _root_.CategoryTheory -namespace AlgebraicTopology.Singular +section +section /-- Finite iteration of affine subdivision on all integral singular chains. -/ -public noncomputable def affineSingularSubdivisionIterate (X : TopCat.{0}) : +noncomputable def affineSingularSubdivisionIterate (X : TopCat.{0}) : ℕ → ((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ) ⟶ (TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ)) | 0 => 𝟙 _ | m + 1 => affineSingularSubdivisionIterate X m ≫ - affineSingularSubdivisionChainMap X + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X @[simp] -public theorem affineSingularSubdivisionIterate_zero (X : TopCat.{0}) : - affineSingularSubdivisionIterate X 0 = 𝟙 _ := +theorem affineSingularSubdivisionIterate_zero (X : TopCat.{0}) : + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X 0 = 𝟙 _ := rfl -public theorem affineSingularSubdivisionIterate_succ +theorem affineSingularSubdivisionIterate_succ (X : TopCat.{0}) (m : ℕ) : - affineSingularSubdivisionIterate X (m + 1) = - affineSingularSubdivisionIterate X m ≫ - affineSingularSubdivisionChainMap X := + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X (m + 1) = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X := rfl /-- Every finite affine-subdivision iterate is chain homotopic to the identity. -/ -public noncomputable def affineSingularSubdivisionIterateHomotopy +noncomputable def affineSingularSubdivisionIterateHomotopy (X : TopCat.{0}) : ∀ m : ℕ, - Homotopy (affineSingularSubdivisionIterate X m) + Homotopy (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m) (𝟙 ((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ))) | 0 => Homotopy.refl _ | m + 1 => by simpa [affineSingularSubdivisionIterate_succ] using (affineSingularSubdivisionIterateHomotopy X m).comp - (affineSingularSubdivisionHomotopy X) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.affineSingularSubdivisionHomotopy X) section Small variable {iota : Type} (X : TopCat) (U : iota → Set X) /-- Finite iteration of affine subdivision on cover-small chains. -/ -public noncomputable def coverSmallAffineSubdivisionIterate : - ℕ → (CoverSmallIntegralSingularChainComplex X U ⟶ - CoverSmallIntegralSingularChainComplex X U) +noncomputable def coverSmallAffineSubdivisionIterate : + ℕ → (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U ⟶ + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U) | 0 => 𝟙 _ | m + 1 => coverSmallAffineSubdivisionIterate m ≫ - coverSmallAffineSubdivisionChainMap X U + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionChainMap X U @[simp] -public theorem coverSmallAffineSubdivisionIterate_zero : - coverSmallAffineSubdivisionIterate X U 0 = 𝟙 _ := +theorem coverSmallAffineSubdivisionIterate_zero : + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.coverSmallAffineSubdivisionIterate X U 0 = 𝟙 _ := rfl -public theorem coverSmallAffineSubdivisionIterate_succ (m : ℕ) : - coverSmallAffineSubdivisionIterate X U (m + 1) = - coverSmallAffineSubdivisionIterate X U m ≫ - coverSmallAffineSubdivisionChainMap X U := +theorem coverSmallAffineSubdivisionIterate_succ (m : ℕ) : + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.coverSmallAffineSubdivisionIterate X U (m + 1) = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.coverSmallAffineSubdivisionIterate X U m ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionChainMap X U := rfl /-- Every cover-small affine-subdivision iterate is chain homotopic to the identity. -/ -public noncomputable def coverSmallAffineSubdivisionIterateHomotopy : - ∀ m : ℕ, Homotopy (coverSmallAffineSubdivisionIterate X U m) - (𝟙 (CoverSmallIntegralSingularChainComplex X U)) +noncomputable def coverSmallAffineSubdivisionIterateHomotopy : + ∀ m : ℕ, Homotopy (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.coverSmallAffineSubdivisionIterate X U m) + (𝟙 (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U)) | 0 => Homotopy.refl _ | m + 1 => by simpa [coverSmallAffineSubdivisionIterate_succ] using (coverSmallAffineSubdivisionIterateHomotopy m).comp - (coverSmallAffineSubdivisionHomotopy X U) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmallPrism.coverSmallAffineSubdivisionHomotopy X U) /-- Small and full affine-subdivision iterates commute with the small-chain inclusion. -/ -public theorem coverSmallAffineSubdivisionIterate_comp_inclusion : ∀ m : ℕ, - coverSmallAffineSubdivisionIterate X U m ≫ - coverSmallIntegralSingularChainInclusion X U = - coverSmallIntegralSingularChainInclusion X U ≫ - affineSingularSubdivisionIterate X m +theorem coverSmallAffineSubdivisionIterate_comp_inclusion : ∀ m : ℕ, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.coverSmallAffineSubdivisionIterate X U m ≫ + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U = + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m | 0 => by - change (SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + change (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ)) = - SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ) ≫ 𝟙 _ simp | m + 1 => by - let I := SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + let I := SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ) have hm := coverSmallAffineSubdivisionIterate_comp_inclusion m - change coverSmallAffineSubdivisionIterate X U m ≫ I = - I ≫ affineSingularSubdivisionIterate X m at hm - have hA := coverSmallAffineSubdivisionChainMap_comp_inclusion X U - change coverSmallAffineSubdivisionChainMap X U ≫ I = - I ≫ affineSingularSubdivisionChainMap X at hA + change _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.coverSmallAffineSubdivisionIterate X U m ≫ I = + I ≫ _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m at hm + have hA := _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionChainMap_comp_inclusion X U + change _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionChainMap X U ≫ I = + I ≫ _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X at hA rw [coverSmallAffineSubdivisionIterate_succ, affineSingularSubdivisionIterate_succ] - change (coverSmallAffineSubdivisionIterate X U m ≫ - coverSmallAffineSubdivisionChainMap X U) ≫ I = - I ≫ (affineSingularSubdivisionIterate X m ≫ - affineSingularSubdivisionChainMap X) + change (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.coverSmallAffineSubdivisionIterate X U m ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionChainMap X U) ≫ I = + I ≫ (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X) rw [Category.assoc, hA, ← Category.assoc, hm, Category.assoc] end Small -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineMesh.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineMesh.lean index 20438025da..1aa78a2d2d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineMesh.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineMesh.lean @@ -12,14 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmallQuasiIso +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmallQuasiIso import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.Lebesgue import Mathlib.Analysis.Normed.Module.Convex +namespace OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh + /-! This module is ported from Paul Lezeau's corresponding file in `sphere-six-complex` pull request #49, under the Apache-2.0 license. @@ -38,31 +41,32 @@ family to the chain-level iterate requires keeping the ancestry of every iterate that combinatorial bookkeeping is intentionally separate from the metric argument here. -/ -@[expose] public section +section noncomputable section -open CategoryTheory CategoryTheory.Limits PartialOrder Set Simplicial +open _root_.CategoryTheory _root_.CategoryTheory.Limits PartialOrder Set Simplicial -namespace AlgebraicTopology.Singular +section +section /-- The classical mesh-contraction factor for barycentric subdivision of an `n`-simplex. -/ -public noncomputable def barycentricContractionFactor (n : ℕ) : ℝ := +noncomputable def barycentricContractionFactor (n : ℕ) : ℝ := (n : ℝ) / (n + 1) -public theorem barycentricContractionFactor_nonneg (n : ℕ) : +theorem barycentricContractionFactor_nonneg (n : ℕ) : 0 ≤ barycentricContractionFactor n := by unfold barycentricContractionFactor positivity -public theorem barycentricContractionFactor_lt_one (n : ℕ) : +theorem barycentricContractionFactor_lt_one (n : ℕ) : barycentricContractionFactor n < 1 := by unfold barycentricContractionFactor rw [div_lt_one (by positivity)] norm_num /-- The intrinsic diameter of a nonempty standard simplex is one in the sup metric. -/ -public theorem diam_univ_stdSimplex (n : ℕ) (hn : 1 ≤ n) : +theorem diam_univ_stdSimplex (n : ℕ) (hn : 1 ≤ n) : Metric.diam (Set.univ : Set (Convexity.StdSimplex ℝ (Fin (n + 1)))) = 1 := by let : Nontrivial (Fin (n + 1)) := Fin.nontrivial_iff_two_le.mpr (Nat.add_le_add_right hn 1) @@ -70,11 +74,11 @@ public theorem diam_univ_stdSimplex (n : ℕ) (hn : 1 ≤ n) : Metric.diam (Set.univ : Set (Convexity.StdSimplex ℝ (Fin (n + 1)))) = Metric.diam (Set.range (fun x : Convexity.StdSimplex ℝ (Fin (n + 1)) => (x.weights : Fin (n + 1) → ℝ))) := - (Convexity.StdSimplex.isometry_weights (Fin (n + 1))).diam_range.symm + (_root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex.isometry_weights (Fin (n + 1))).diam_range.symm _ = 1 := Convexity.StdSimplex.diam_range_toFun_comp_weights_subset_closedBall_eq_one _ /-- Powers of the barycentric mesh factor eventually fall below every positive tolerance. -/ -public theorem exists_barycentricContractionFactor_pow_lt +theorem exists_barycentricContractionFactor_pow_lt (n : ℕ) {ε : ℝ} (hε : 0 < ε) : ∃ m : ℕ, barycentricContractionFactor n ^ m < ε := exists_pow_lt_of_lt_one hε (barycentricContractionFactor_lt_one n) @@ -82,31 +86,31 @@ public theorem exists_barycentricContractionFactor_pow_lt /-! ## Iterated affine-cell ancestry -/ /-- A top-dimensional flag in the barycentric subdivision of the standard `n`-simplex. -/ -public abbrev TopAffineFlag (n : ℕ) := +abbrev TopAffineFlag (n : ℕ) := (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk n)) /-- The affine cell map described by a finite ancestry of top-dimensional flags. The head of the list is the newest (innermost) subdivision cell and the tail records its parent ancestry. -/ -public noncomputable def iteratedAffineCellMap (n : ℕ) +noncomputable def iteratedAffineCellMap (n : ℕ) (ancestry : List (TopAffineFlag n)) : C(Convexity.StdSimplex ℝ (Fin (n + 1)), Convexity.StdSimplex ℝ (Fin (n + 1))) := match ancestry with | [] => ContinuousMap.id _ | F :: ancestry => - (iteratedAffineCellMap n ancestry).comp (affineFlagContinuousMap n n F) + (iteratedAffineCellMap n ancestry).comp (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n n F) @[simp] -public theorem iteratedAffineCellMap_nil (n : ℕ) : - iteratedAffineCellMap n [] = ContinuousMap.id _ := +theorem iteratedAffineCellMap_nil (n : ℕ) : + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n [] = ContinuousMap.id _ := rfl @[simp] -public theorem iteratedAffineCellMap_cons +theorem iteratedAffineCellMap_cons (n : ℕ) (F : TopAffineFlag n) (ancestry : List (TopAffineFlag n)) : - iteratedAffineCellMap n (F :: ancestry) = - (iteratedAffineCellMap n ancestry).comp - (affineFlagContinuousMap n n F) := + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n (F :: ancestry) = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry).comp + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n n F) := rfl /-! ## Chain-level endpoint -/ @@ -114,29 +118,35 @@ public theorem iteratedAffineCellMap_cons /-- Iterating affine subdivision is additive in the exponent. This synchronization identity is the algebraic tool for putting finitely many generatorwise subdivision depths over one common depth. -/ -public theorem affineSingularSubdivisionIterate_add +theorem affineSingularSubdivisionIterate_add (X : TopCat) (m r : ℕ) : - affineSingularSubdivisionIterate X (m + r) = - affineSingularSubdivisionIterate X m ≫ - affineSingularSubdivisionIterate X r := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X (m + r) = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X r := by induction r with | zero => simp | succ r ih => - rw [Nat.add_succ, affineSingularSubdivisionIterate_succ, ih, - affineSingularSubdivisionIterate_succ, Category.assoc] + rw [Nat.add_succ, _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate_succ, ih, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate_succ, Category.assoc] /-- A sharply stated range bridge from geometry to the algebraic small-chain endpoint: it is enough to prove that some affine-subdivision iterate of every chain lies in the degreewise range of the cover-small inclusion. -/ -public theorem coverSmallAffineSubdivisionEventuallySmall_of_iterate_mem_range +theorem coverSmallAffineSubdivisionEventuallySmall_of_iterate_mem_range {iota : Type} (X : TopCat) (U : iota → Set X) - (h : ∀ (n : ℕ) (x : (IntegralSingularChainComplexObj X).X n), - ∃ m : ℕ, (affineSingularSubdivisionIterate X m).f n x ∈ - Set.range ((coverSmallIntegralSingularChainInclusion X U).f n)) : - ∀ (n : ℕ) (x : (IntegralSingularChainComplexObj X).X n), - ∃ (m : ℕ) (y : (CoverSmallIntegralSingularChainComplex X U).X n), - (coverSmallIntegralSingularChainInclusion X U).f n y = - (affineSingularSubdivisionIterate X m).f n x := + (h : ∀ (n : ℕ) (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n), + ∃ m : ℕ, (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n x ∈ + Set.range ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n)) : + ∀ (n : ℕ) (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n), + ∃ (m : ℕ) (y : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X n), + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n y = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n x := fun n x ↦ h n x -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffinePrism.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffinePrism.lean index b450f7fc86..e031df3e69 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffinePrism.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffinePrism.lean @@ -12,11 +12,12 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.Affine -public import Mathlib.Topology.Homotopy.Contractible +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.Affine +import Mathlib.Topology.Homotopy.Contractible import Mathlib.Algebra.Category.Grp.Zero import Mathlib.Algebra.Homology.ShortComplex.Ab @@ -24,6 +25,10 @@ import Mathlib.AlgebraicTopology.SingularHomology.HomotopyInvariance import Mathlib.Analysis.Convex.Contractible import Mathlib.Logic.Equiv.PartialEquiv +namespace OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism + +open _root_.AlgebraicTopology + /-! This module is ported from Paul Lezeau's corresponding file in `sphere-six-complex` pull request #49, under the Apache-2.0 license. @@ -36,13 +41,14 @@ prism between affine barycentric subdivision and the identity. The first part o establishes the exactness and packages a selected filler for every positive-degree cycle. -/ -@[expose] public section +section noncomputable section -open AlgebraicTopology CategoryTheory CategoryTheory.Limits ContinuousMap Set +open _root_.AlgebraicTopology _root_.CategoryTheory _root_.CategoryTheory.Limits ContinuousMap Set -namespace AlgebraicTopology.Singular +section +section /-- Integral singular homology with coefficients in `ℤ`. -/ abbrev IntegralSingularHomology (k : ℕ) (X : Type) [TopologicalSpace X] : Type := @@ -66,12 +72,12 @@ noncomputable def integralSingularHomologyEquivOfHomotopyEquiv i.addCommGroupIsoToAddEquiv /-- A real topological standard simplex is contractible because it is nonempty and convex. -/ -public theorem standardTopologicalSimplex_contractibleSpace (m : ℕ) : +theorem standardTopologicalSimplex_contractibleSpace (m : ℕ) : ContractibleSpace (Convexity.StdSimplex ℝ (Fin (m + 1))) := inferInstance /-- Positive-degree integral singular homology of a topological standard simplex vanishes. -/ -public theorem standardTopologicalSimplex_integralSingularHomology_isZero +theorem standardTopologicalSimplex_integralSingularHomology_isZero (m k : ℕ) (hk : k ≠ 0) : IsZero (((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (m + 1))))).chainComplex @@ -95,7 +101,7 @@ public theorem standardTopologicalSimplex_integralSingularHomology_isZero exact AddCommGrpCat.isZero_of_subsingleton _ /-- The singular chain complex of a standard simplex is exact in every positive degree. -/ -public theorem standardTopologicalSimplex_singularChainExactAt +theorem standardTopologicalSimplex_singularChainExactAt (m k : ℕ) (hk : k ≠ 0) : ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (m + 1))))).chainComplex @@ -108,7 +114,7 @@ public theorem standardTopologicalSimplex_singularChainExactAt /-- Every positive-degree cycle in a topological standard simplex bounds. This is stated for morphisms from `ℤ`, matching the chain representation used throughout the subdivision files. -/ -public theorem exists_standardTopologicalSimplex_cycleFiller +theorem exists_standardTopologicalSimplex_cycleFiller (m n : ℕ) (z : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj @@ -146,7 +152,7 @@ public theorem exists_standardTopologicalSimplex_cycleFiller exact hp /-- A selected filler of a positive-degree cycle in a topological standard simplex. -/ -public noncomputable def standardTopologicalSimplexCycleFiller +noncomputable def standardTopologicalSimplexCycleFiller (m n : ℕ) (z : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj @@ -163,7 +169,7 @@ public noncomputable def standardTopologicalSimplexCycleFiller (exists_standardTopologicalSimplex_cycleFiller m n z hz).choose /-- The selected filler has the prescribed boundary. -/ -public theorem standardTopologicalSimplexCycleFiller_boundary +theorem standardTopologicalSimplexCycleFiller_boundary (m n : ℕ) (z : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj @@ -182,7 +188,7 @@ public theorem standardTopologicalSimplexCycleFiller_boundary /-- A total version of the positive-degree filler. It is the selected filler when its input is a cycle and zero otherwise; this form can be used in a structurally recursive definition before the cycle condition has been proved. -/ -public noncomputable def standardTopologicalSimplexTotalCycleFiller +noncomputable def standardTopologicalSimplexTotalCycleFiller (m n : ℕ) (z : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj @@ -201,7 +207,7 @@ public noncomputable def standardTopologicalSimplexTotalCycleFiller else 0 /-- The total filler has the prescribed boundary whenever its input is a cycle. -/ -public theorem standardTopologicalSimplexTotalCycleFiller_boundary +theorem standardTopologicalSimplexTotalCycleFiller_boundary (m n : ℕ) (z : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj @@ -220,7 +226,7 @@ public theorem standardTopologicalSimplexTotalCycleFiller_boundary /-- The identity map of the topological standard simplex, regarded as its universal singular simplex. -/ -public noncomputable def standardTopologicalSimplexIdentitySimplex (n : ℕ) : +noncomputable def standardTopologicalSimplexIdentitySimplex (n : ℕ) : (TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).obj (Opposite.op (SimplexCategory.mk n)) := @@ -229,26 +235,26 @@ public noncomputable def standardTopologicalSimplexIdentitySimplex (n : ℕ) : /-- Mapping the universal identity simplex along the map represented by a singular simplex recovers that singular simplex. -/ @[simp] -public theorem standardTopologicalSimplexIdentitySimplex_map +theorem standardTopologicalSimplexIdentitySimplex_map (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) : - (TopCat.toSSet.map (singularSimplexTopCatMap X n x)).app _ + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n x)).app _ (standardTopologicalSimplexIdentitySimplex n) = x := by apply (TopCat.toSSetObjEquiv _ _).injective ext w rfl /-- Affine singular subdivision minus the identity, as a natural chain endomorphism. -/ -public noncomputable def affineSingularSubdivisionDiscrepancyChainMap +noncomputable def affineSingularSubdivisionDiscrepancyChainMap (X : TopCat.{0}) : (TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ) ⟶ (TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ) := - affineSingularSubdivisionChainMap X - 𝟙 _ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X - 𝟙 _ /-- The universal degree-`n` affine-subdivision discrepancy on the topological standard `n`-simplex. -/ -public noncomputable def standardAffineSubdivisionDiscrepancy (n : ℕ) : +noncomputable def standardAffineSubdivisionDiscrepancy (n : ℕ) : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex @@ -261,7 +267,7 @@ public noncomputable def standardAffineSubdivisionDiscrepancy (n : ℕ) : /-- Evaluating the discrepancy on a singular simplex transports the universal discrepancy along the continuous map represented by that simplex. -/ -public theorem iota_affineSingularSubdivisionDiscrepancyChainMap +theorem iota_affineSingularSubdivisionDiscrepancyChainMap (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) : @@ -269,22 +275,22 @@ public theorem iota_affineSingularSubdivisionDiscrepancyChainMap (affineSingularSubdivisionDiscrepancyChainMap X).f n = standardAffineSubdivisionDiscrepancy n ≫ (SSet.chainComplexMap - (TopCat.toSSet.map (singularSimplexTopCatMap X n x)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n x)) (AddCommGrpCat.of ℤ)).f n := by unfold standardAffineSubdivisionDiscrepancy change (TopCat.toSSet.obj X).ιChainComplex x ≫ - ((affineSingularSubdivisionChainMap X).f n - 𝟙 _) = + ((_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X).f n - 𝟙 _) = ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).ιChainComplex (standardTopologicalSimplexIdentitySimplex n) ≫ - ((affineSingularSubdivisionChainMap + ((_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).f n - 𝟙 _)) ≫ (SSet.chainComplexMap - (TopCat.toSSet.map (singularSimplexTopCatMap X n x)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n x)) (AddCommGrpCat.of ℤ)).f n simp only [Preadditive.comp_sub, Category.comp_id, Preadditive.sub_comp] let F := SSet.chainComplexMap - (TopCat.toSSet.map (singularSimplexTopCatMap X n x)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n x)) (AddCommGrpCat.of ℤ) have htop : (TopCat.toSSet.obj @@ -295,80 +301,80 @@ public theorem iota_affineSingularSubdivisionDiscrepancyChainMap rw [SSet.ι_chainComplexMap_f, standardTopologicalSimplexIdentitySimplex_map] have hnat := congrArg (fun K ↦ K.f n) - (affineSingularSubdivisionChainMap_naturality - (singularSimplexTopCatMap X n x)) - change F.f n ≫ (affineSingularSubdivisionChainMap X).f n = - (affineSingularSubdivisionChainMap + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap_naturality + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n x)) + change F.f n ≫ (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X).f n = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).f n ≫ F.f n at hnat have hA : (TopCat.toSSet.obj X).ιChainComplex x ≫ - (affineSingularSubdivisionChainMap X).f n = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X).f n = ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).ιChainComplex (standardTopologicalSimplexIdentitySimplex n) ≫ - (affineSingularSubdivisionChainMap + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).f n) ≫ F.f n := by rw [← htop, Category.assoc, hnat, ← Category.assoc] change _ = _ - _ rw [hA, htop] /-- Affine subdivision fixes every singular zero-simplex. -/ -public theorem affineSubdivisionSingularSimplexChain_zero +theorem affineSubdivisionSingularSimplexChain_zero (X : TopCat.{0}) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk 0))) : - affineSubdivisionSingularSimplexChain X 0 x = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSubdivisionSingularSimplexChain X 0 x = (TopCat.toSSet.obj X).ιChainComplex x := by - rw [affineSubdivisionSingularSimplexChain, - affineSubdividedSimplexFundamentalChain, - subdividedSimplexFundamentalChain] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSubdivisionSingularSimplexChain, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSubdividedSimplexFundamentalChain, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain] classical have hperm : (Finset.univ : Finset (Equiv.Perm (Fin 1))) = {1} := by ext σ simp [Subsingleton.elim σ 1] rw [hperm, Finset.sum_singleton] - simp only [permutationSignInteger, Equiv.Perm.sign_one, Units.val_one, - one_zsmul, affineFlagChainMap_f] - rw [iota_affineFlagChainComponent, SSet.ι_chainComplexMap_f] + simp only [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger, Equiv.Perm.sign_one, Units.val_one, + one_zsmul, _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagChainMap_f] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.iota_affineFlagChainComponent, SSet.ι_chainComplexMap_f] congr 1 apply (TopCat.toSSetObjEquiv _ _).injective ext w - rw [toSSetObjEquiv_map_apply] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.toSSetObjEquiv_map_apply] change X.toSSetObjEquiv _ x - (affineFlagContinuousMap 0 0 (permutationMaximalFlagSimplex 1) w) = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap 0 0 (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationMaximalFlagSimplex 1) w) = X.toSSetObjEquiv _ x w rw [Subsingleton.elim - (affineFlagContinuousMap 0 0 (permutationMaximalFlagSimplex 1) w) w] + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap 0 0 (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationMaximalFlagSimplex 1) w) w] /-- The universal affine-subdivision discrepancy vanishes in degree zero. -/ @[simp] -public theorem standardAffineSubdivisionDiscrepancy_zero : +theorem standardAffineSubdivisionDiscrepancy_zero : standardAffineSubdivisionDiscrepancy 0 = 0 := by rw [standardAffineSubdivisionDiscrepancy, affineSingularSubdivisionDiscrepancyChainMap] simp only [HomologicalComplex.sub_f_apply, HomologicalComplex.id_f, Preadditive.comp_sub, Category.comp_id] - rw [affineSingularSubdivisionChainMap_f, - iota_affineSingularSubdivisionComponent, + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap_f, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.iota_affineSingularSubdivisionComponent, affineSubdivisionSingularSimplexChain_zero] exact sub_self _ /-- The map represented by a face of the universal identity simplex is the standard affine coface inclusion. -/ -public theorem singularSimplexTopCatMap_identity_delta +theorem singularSimplexTopCatMap_identity_delta (n : ℕ) (p : Fin (n + 2)) : - singularSimplexTopCatMap + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 2)))) n ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 2))))).δ p (standardTopologicalSimplexIdentitySimplex (n + 1))) = - standardSimplexFaceTopCatMap n p := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.standardSimplexFaceTopCatMap n p := by ext w rfl /-- The boundary of the universal discrepancy is the alternating transport of the lower dimensional universal discrepancy over all affine coface inclusions. -/ -public theorem standardAffineSubdivisionDiscrepancy_boundary +theorem standardAffineSubdivisionDiscrepancy_boundary (n : ℕ) : standardAffineSubdivisionDiscrepancy (n + 1) ≫ ((TopCat.toSSet.obj @@ -377,7 +383,7 @@ public theorem standardAffineSubdivisionDiscrepancy_boundary ∑ p : Fin (n + 2), (-1 : ℤ) ^ p.val • (standardAffineSubdivisionDiscrepancy n ≫ (SSet.chainComplexMap - (TopCat.toSSet.map (standardSimplexFaceTopCatMap n p)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.standardSimplexFaceTopCatMap n p)) (AddCommGrpCat.of ℤ)).f n) := by rw [standardAffineSubdivisionDiscrepancy, Category.assoc] rw [(affineSingularSubdivisionDiscrepancyChainMap @@ -392,7 +398,7 @@ public theorem standardAffineSubdivisionDiscrepancy_boundary /-- Transport one universal degree-raising singular chain along every singular simplex of an arbitrary topological space. -/ -public noncomputable def universalAffinePrismComponent +noncomputable def universalAffinePrismComponent (n : ℕ) (p : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj @@ -403,11 +409,11 @@ public noncomputable def universalAffinePrismComponent ((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) := Sigma.desc (fun x ↦ p ≫ (SSet.chainComplexMap - (TopCat.toSSet.map (singularSimplexTopCatMap X n x)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n x)) (AddCommGrpCat.of ℤ)).f (n + 1)) @[reassoc (attr := simp)] -public theorem iota_universalAffinePrismComponent +theorem iota_universalAffinePrismComponent (n : ℕ) (p : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj @@ -419,12 +425,12 @@ public theorem iota_universalAffinePrismComponent (TopCat.toSSet.obj X).ιChainComplex x ≫ universalAffinePrismComponent n p X = p ≫ (SSet.chainComplexMap - (TopCat.toSSet.map (singularSimplexTopCatMap X n x)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n x)) (AddCommGrpCat.of ℤ)).f (n + 1) := by apply Sigma.ι_comp_desc /-- The raw sum of the prisms over the faces of a standard simplex. -/ -public noncomputable def standardAffinePrismFaceChain +noncomputable def standardAffinePrismFaceChain (prism : ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex @@ -432,17 +438,16 @@ public noncomputable def standardAffinePrismFaceChain ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex - (AddCommGrpCat.of ℤ)).X n - | 0 => 0 - | n + 1 => + (AddCommGrpCat.of ℤ)).X n := + fun n => Nat.casesOn n 0 (fun n => ∑ p : Fin (n + 2), (-1 : ℤ) ^ p.val • (prism n ≫ (SSet.chainComplexMap - (TopCat.toSSet.map (standardSimplexFaceTopCatMap n p)) - (AddCommGrpCat.of ℤ)).f (n + 1)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.standardSimplexFaceTopCatMap n p)) + (AddCommGrpCat.of ℤ)).f (n + 1))) @[simp] -public theorem standardAffinePrismFaceChain_zero +theorem standardAffinePrismFaceChain_zero (prism : ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex @@ -452,7 +457,7 @@ public theorem standardAffinePrismFaceChain_zero /-- The face-prism sum is the boundary of the universal identity simplex followed by the transported lower-dimensional prism operator. -/ -public theorem standardAffinePrismFaceChain_eq_identity_boundary_comp +theorem standardAffinePrismFaceChain_eq_identity_boundary_comp (prism : ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex @@ -478,7 +483,7 @@ public theorem standardAffinePrismFaceChain_eq_identity_boundary_comp /-- Transporting the raw face-prism sum along a singular simplex is its source boundary followed by the transported lower-dimensional prism operator. -/ -public theorem standardAffinePrismFaceChain_transport_raw +theorem standardAffinePrismFaceChain_transport_raw (prism : ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex @@ -488,7 +493,7 @@ public theorem standardAffinePrismFaceChain_transport_raw (Opposite.op (SimplexCategory.mk (n + 1)))) : standardAffinePrismFaceChain prism (n + 1) ≫ (SSet.chainComplexMap - (TopCat.toSSet.map (singularSimplexTopCatMap X (n + 1) x)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X (n + 1) x)) (AddCommGrpCat.of ℤ)).f (n + 1) = (TopCat.toSSet.obj X).ιChainComplex x ≫ ((TopCat.toSSet.obj X).chainComplex @@ -505,29 +510,29 @@ public theorem standardAffinePrismFaceChain_transport_raw let G := (SSet.chainComplexFunctor AddCommGrpCat).obj (AddCommGrpCat.of ℤ) have hsset : - TopCat.toSSet.map (standardSimplexFaceTopCatMap n p) ≫ - TopCat.toSSet.map (singularSimplexTopCatMap X (n + 1) x) = + TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.standardSimplexFaceTopCatMap n p) ≫ + TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X (n + 1) x) = TopCat.toSSet.map - (singularSimplexTopCatMap X n ((TopCat.toSSet.obj X).δ p x)) := by - rw [← Functor.map_comp, singularSimplexTopCatMap_delta] + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n ((TopCat.toSSet.obj X).δ p x)) := by + rw [← Functor.map_comp, _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap_delta] have hmap := G.congr_map hsset rw [Functor.map_comp] at hmap have hn := congrArg (fun K ↦ K.f (n + 1)) hmap change (SSet.chainComplexMap - (TopCat.toSSet.map (standardSimplexFaceTopCatMap n p)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.standardSimplexFaceTopCatMap n p)) (AddCommGrpCat.of ℤ)).f (n + 1) ≫ (SSet.chainComplexMap - (TopCat.toSSet.map (singularSimplexTopCatMap X (n + 1) x)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X (n + 1) x)) (AddCommGrpCat.of ℤ)).f (n + 1) = (SSet.chainComplexMap (TopCat.toSSet.map - (singularSimplexTopCatMap X n ((TopCat.toSSet.obj X).δ p x))) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n ((TopCat.toSSet.obj X).δ p x))) (AddCommGrpCat.of ℤ)).f (n + 1) at hn rw [hn] /-- A universal prism equation induces the corresponding operator equation on every topological space in that degree. -/ -public theorem universalAffinePrismComponent_boundary_succ +theorem universalAffinePrismComponent_boundary_succ (prism : ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex @@ -558,13 +563,13 @@ public theorem universalAffinePrismComponent_boundary_succ congr 1 symm exact (SSet.chainComplexMap - (TopCat.toSSet.map (singularSimplexTopCatMap X (n + 1) x)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X (n + 1) x)) (AddCommGrpCat.of ℤ)).comm (n + 2) (n + 1) · exact standardAffinePrismFaceChain_transport_raw prism X n x /-- Once the prism equation is known in degree `n+1`, the residual used to define the next prism is a cycle. The cancellation is the chain identity `∂² = 0`. -/ -public theorem standardAffinePrismResidual_cycle_succ +theorem standardAffinePrismResidual_cycle_succ (prism : ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex @@ -637,41 +642,40 @@ public theorem standardAffinePrismResidual_cycle_succ /-- The universal affine prisms, defined recursively by filling the discrepancy left after the face prisms. -/ -public noncomputable def canonicalAffineSubdivisionPrism +noncomputable def canonicalAffineSubdivisionPrism (n : ℕ) : AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) := - match n with - | 0 => 0 - | n + 1 => + Nat.rec + 0 + (fun n previous => standardTopologicalSimplexTotalCycleFiller (n + 1) n (standardAffineSubdivisionDiscrepancy (n + 1) - ∑ p : Fin (n + 2), (-1 : ℤ) ^ p.val • - (canonicalAffineSubdivisionPrism n ≫ + (previous ≫ (SSet.chainComplexMap - (TopCat.toSSet.map (standardSimplexFaceTopCatMap n p)) - (AddCommGrpCat.of ℤ)).f (n + 1))) -termination_by n + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.standardSimplexFaceTopCatMap n p)) + (AddCommGrpCat.of ℤ)).f (n + 1)))) n @[simp] -public theorem canonicalAffineSubdivisionPrism_zero : - canonicalAffineSubdivisionPrism 0 = 0 := by - simp [canonicalAffineSubdivisionPrism] +theorem canonicalAffineSubdivisionPrism_zero : + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism 0 = 0 := by + simp [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism] /-- The successor prism is the chosen filler of discrepancy minus the face-prism sum. -/ -public theorem canonicalAffineSubdivisionPrism_succ (n : ℕ) : - canonicalAffineSubdivisionPrism (n + 1) = +theorem canonicalAffineSubdivisionPrism_succ (n : ℕ) : + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism (n + 1) = standardTopologicalSimplexTotalCycleFiller (n + 1) n (standardAffineSubdivisionDiscrepancy (n + 1) - - standardAffinePrismFaceChain canonicalAffineSubdivisionPrism (n + 1)) := by - simp [canonicalAffineSubdivisionPrism, standardAffinePrismFaceChain] + standardAffinePrismFaceChain _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism (n + 1)) := by + simp [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism, standardAffinePrismFaceChain] /-- The first recursive residual is a cycle; its degree-zero discrepancy and previous prism both vanish. -/ -public theorem canonicalAffineSubdivisionPrismResidual_cycle_one : +theorem canonicalAffineSubdivisionPrismResidual_cycle_one : (standardAffineSubdivisionDiscrepancy 1 - - standardAffinePrismFaceChain canonicalAffineSubdivisionPrism 1) ≫ + standardAffinePrismFaceChain _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism 1) ≫ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin 2)))).chainComplex (AddCommGrpCat.of ℤ)).d 1 0 = 0 := by @@ -681,20 +685,20 @@ public theorem canonicalAffineSubdivisionPrismResidual_cycle_one : /-- The recursively filled universal chains satisfy the complete prism equation in every degree. -/ -public theorem canonicalAffineSubdivisionPrism_boundary (n : ℕ) : +theorem canonicalAffineSubdivisionPrism_boundary (n : ℕ) : standardAffineSubdivisionDiscrepancy n = - canonicalAffineSubdivisionPrism n ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism n ≫ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n + - standardAffinePrismFaceChain canonicalAffineSubdivisionPrism n := by + standardAffinePrismFaceChain _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism n := by induction n with | zero => simp | succ n ih => have hcycle : (standardAffineSubdivisionDiscrepancy (n + 1) - - standardAffinePrismFaceChain canonicalAffineSubdivisionPrism (n + 1)) ≫ + standardAffinePrismFaceChain _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism (n + 1)) ≫ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 2))))).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = 0 := by @@ -703,37 +707,37 @@ public theorem canonicalAffineSubdivisionPrism_boundary (n : ℕ) : exact canonicalAffineSubdivisionPrismResidual_cycle_one | succ k => exact standardAffinePrismResidual_cycle_succ - canonicalAffineSubdivisionPrism k ih + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism k ih have hfill := standardTopologicalSimplexTotalCycleFiller_boundary (n + 1) n (standardAffineSubdivisionDiscrepancy (n + 1) - - standardAffinePrismFaceChain canonicalAffineSubdivisionPrism (n + 1)) + standardAffinePrismFaceChain _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism (n + 1)) hcycle rw [canonicalAffineSubdivisionPrism_succ, hfill] abel /-- The canonical universal prism transported to every singular simplex in degree `n`. -/ -public noncomputable def affineSingularSubdivisionPrismComponent +noncomputable def affineSingularSubdivisionPrismComponent (X : TopCat.{0}) (n : ℕ) : ((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ)).X n ⟶ ((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) := - universalAffinePrismComponent n (canonicalAffineSubdivisionPrism n) X + universalAffinePrismComponent n (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism n) X @[reassoc (attr := simp)] -public theorem iota_affineSingularSubdivisionPrismComponent +theorem iota_affineSingularSubdivisionPrismComponent (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) : (TopCat.toSSet.obj X).ιChainComplex x ≫ affineSingularSubdivisionPrismComponent X n = - canonicalAffineSubdivisionPrism n ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism n ≫ (SSet.chainComplexMap - (TopCat.toSSet.map (singularSimplexTopCatMap X n x)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n x)) (AddCommGrpCat.of ℤ)).f (n + 1) := - iota_universalAffinePrismComponent n (canonicalAffineSubdivisionPrism n) X x + iota_universalAffinePrismComponent n (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism n) X x /-- The canonical affine prism components are natural in continuous maps. -/ -public theorem affineSingularSubdivisionPrismComponent_naturality +theorem affineSingularSubdivisionPrismComponent_naturality {X Y : TopCat.{0}} (f : X ⟶ Y) (n : ℕ) : (SSet.chainComplexMap (TopCat.toSSet.map f) (AddCommGrpCat.of ℤ)).f n ≫ @@ -749,27 +753,27 @@ public theorem affineSingularSubdivisionPrismComponent_naturality let G := (SSet.chainComplexFunctor AddCommGrpCat).obj (AddCommGrpCat.of ℤ) have hsset : - TopCat.toSSet.map (singularSimplexTopCatMap X n x) ≫ + TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n x) ≫ TopCat.toSSet.map f = TopCat.toSSet.map - (singularSimplexTopCatMap Y n ((TopCat.toSSet.map f).app _ x)) := by - rw [← Functor.map_comp, ← singularSimplexTopCatMap_map] + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap Y n ((TopCat.toSSet.map f).app _ x)) := by + rw [← Functor.map_comp, ← _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap_map] have hmap := G.congr_map hsset rw [Functor.map_comp] at hmap have hn := congrArg (fun K ↦ K.f (n + 1)) hmap change (SSet.chainComplexMap - (TopCat.toSSet.map (singularSimplexTopCatMap X n x)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n x)) (AddCommGrpCat.of ℤ)).f (n + 1) ≫ (SSet.chainComplexMap (TopCat.toSSet.map f) (AddCommGrpCat.of ℤ)).f (n + 1) = (SSet.chainComplexMap (TopCat.toSSet.map - (singularSimplexTopCatMap Y n ((TopCat.toSSet.map f).app _ x))) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap Y n ((TopCat.toSSet.map f).app _ x))) (AddCommGrpCat.of ℤ)).f (n + 1) at hn rw [Category.assoc, hn] /-- In positive degrees the canonical transported prism satisfies the discrepancy equation. -/ -public theorem affineSingularSubdivisionPrismComponent_discrepancy_succ +theorem affineSingularSubdivisionPrismComponent_discrepancy_succ (X : TopCat.{0}) (n : ℕ) : (affineSingularSubdivisionDiscrepancyChainMap X).f (n + 1) = affineSingularSubdivisionPrismComponent X (n + 1) ≫ @@ -780,12 +784,12 @@ public theorem affineSingularSubdivisionPrismComponent_discrepancy_succ affineSingularSubdivisionPrismComponent X n := by simpa only [affineSingularSubdivisionPrismComponent] using universalAffinePrismComponent_boundary_succ - canonicalAffineSubdivisionPrism n + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.canonicalAffineSubdivisionPrism n (canonicalAffineSubdivisionPrism_boundary (n + 1)) X /-- In degree zero the canonical transported prism satisfies the discrepancy equation, with no lower-dimensional face term. -/ -public theorem affineSingularSubdivisionPrismComponent_discrepancy_zero +theorem affineSingularSubdivisionPrismComponent_discrepancy_zero (X : TopCat.{0}) : (affineSingularSubdivisionDiscrepancyChainMap X).f 0 = affineSingularSubdivisionPrismComponent X 0 ≫ @@ -798,9 +802,9 @@ public theorem affineSingularSubdivisionPrismComponent_discrepancy_zero simp /-- The transported prism gives the chain-homotopy identity in every positive degree. -/ -public theorem affineSingularSubdivisionPrismComponent_identity_succ +theorem affineSingularSubdivisionPrismComponent_identity_succ (X : TopCat.{0}) (n : ℕ) : - (affineSingularSubdivisionChainMap X).f (n + 1) = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X).f (n + 1) = ((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n ≫ affineSingularSubdivisionPrismComponent X n + @@ -810,26 +814,26 @@ public theorem affineSingularSubdivisionPrismComponent_identity_succ 𝟙 (((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1)) := by have h := affineSingularSubdivisionPrismComponent_discrepancy_succ X n - change (affineSingularSubdivisionChainMap X).f (n + 1) - 𝟙 _ = _ at h + change (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X).f (n + 1) - 𝟙 _ = _ at h rw [sub_eq_iff_eq_add] at h rw [h] abel /-- The transported prism gives the chain-homotopy identity in degree zero. -/ -public theorem affineSingularSubdivisionPrismComponent_identity_zero +theorem affineSingularSubdivisionPrismComponent_identity_zero (X : TopCat.{0}) : - (affineSingularSubdivisionChainMap X).f 0 = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X).f 0 = affineSingularSubdivisionPrismComponent X 0 ≫ ((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ)).d 1 0 + 𝟙 (((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ)).X 0) := by have h := affineSingularSubdivisionPrismComponent_discrepancy_zero X - change (affineSingularSubdivisionChainMap X).f 0 - 𝟙 _ = _ at h + change (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X).f 0 - 𝟙 _ = _ at h rwa [sub_eq_iff_eq_add] at h /-- The homotopy family, supported from degree `i` to degree `i+1`. -/ -public noncomputable def affineSingularSubdivisionPrismHom +noncomputable def affineSingularSubdivisionPrismHom (X : TopCat.{0}) (i j : ℕ) : ((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ)).X i ⟶ ((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ)).X j := @@ -839,7 +843,7 @@ public noncomputable def affineSingularSubdivisionPrismHom else 0 @[simp] -public theorem affineSingularSubdivisionPrismHom_succ +theorem affineSingularSubdivisionPrismHom_succ (X : TopCat.{0}) (i : ℕ) : affineSingularSubdivisionPrismHom X i (i + 1) = affineSingularSubdivisionPrismComponent X i := by @@ -847,9 +851,9 @@ public theorem affineSingularSubdivisionPrismHom_succ /-- Affine barycentric subdivision is chain homotopic to the identity on the integral singular chain complex of every topological space. -/ -public noncomputable def affineSingularSubdivisionHomotopy +noncomputable def affineSingularSubdivisionHomotopy (X : TopCat.{0}) : - Homotopy (affineSingularSubdivisionChainMap X) + Homotopy (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X) (𝟙 ((TopCat.toSSet.obj X).chainComplex (AddCommGrpCat.of ℤ))) where hom := affineSingularSubdivisionPrismHom X zero i j hij := by @@ -876,4 +880,10 @@ public noncomputable def affineSingularSubdivisionHomotopy exact affineSingularSubdivisionPrismComponent_identity_succ X n -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineRelativeMesh.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineRelativeMesh.lean index ca297e87be..cd697315eb 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineRelativeMesh.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineRelativeMesh.lean @@ -12,15 +12,20 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffineMesh -public import Mathlib.Analysis.Normed.Module.Basic +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffineMesh +import Mathlib.Analysis.Normed.Module.Basic import Mathlib.Analysis.Normed.Module.Convex import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.Lebesgue +namespace OAI.AlgebraicTopology.Singular.SubdivisionAffineRelativeMesh + +open scoped OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex + /-! This module is ported from Paul Lezeau's corresponding file in `sphere-six-complex` pull request #49, under the Apache-2.0 license. @@ -35,24 +40,25 @@ The result is stated first in an arbitrary real normed vector space and then spe affine self-maps used by iterated singular subdivision. -/ -@[expose] public section +section -open scoped Convexity.StdSimplex +open scoped _root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex noncomputable section -open CategoryTheory CategoryTheory.Limits PartialOrder Set Simplicial +open _root_.CategoryTheory _root_.CategoryTheory.Limits PartialOrder Set Simplicial -namespace AlgebraicTopology.Singular +section +section /-- The centroid of the vertices indexed by a nonempty face. -/ -public noncomputable def affineParentFaceCentroid +noncomputable def affineParentFaceCentroid {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] {n : ℕ} (p : Fin (n + 1) → E) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : E := A.finset.centroid ℝ (fun i ↦ p i.down) -public theorem affineParentFaceCentroid_eq_smul_sum +theorem affineParentFaceCentroid_eq_smul_sum {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] {n : ℕ} (p : Fin (n + 1) → E) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : @@ -64,7 +70,7 @@ public theorem affineParentFaceCentroid_eq_smul_sum · exact A.finset.sum_centroidWeights_eq_one_of_nonempty ℝ A.nonempty /-- A face centroid belongs to the convex hull of the parent vertices. -/ -public theorem affineParentFaceCentroid_mem_convexHull +theorem affineParentFaceCentroid_mem_convexHull {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] {n : ℕ} (p : Fin (n + 1) → E) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : @@ -82,7 +88,7 @@ public theorem affineParentFaceCentroid_mem_convexHull rwa [hrange] at h /-- Translation formula for a parent-face centroid, in vector-space notation. -/ -public theorem affineParentFaceCentroid_sub +theorem affineParentFaceCentroid_sub {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] {n : ℕ} (p : Fin (n + 1) → E) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) (c : E) : @@ -98,7 +104,7 @@ public theorem affineParentFaceCentroid_sub _ = _ := affineParentFaceCentroid_eq_smul_sum _ _ /-- The unnormalized displacement vectors from a face centroid sum to zero. -/ -public theorem sum_sub_affineParentFaceCentroid_eq_zero +theorem sum_sub_affineParentFaceCentroid_eq_zero {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] {n : ℕ} (p : Fin (n + 1) → E) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : @@ -113,9 +119,9 @@ public theorem sum_sub_affineParentFaceCentroid_eq_zero /-- The proportion of vertices introduced between nested nonempty faces is bounded by the barycentric contraction factor. -/ -public theorem card_sub_div_card_le_barycentricContractionFactor +theorem card_sub_div_card_le_barycentricContractionFactor (n a b : ℕ) (ha : 1 ≤ a) (hab : a ≤ b) (hb : b ≤ n + 1) : - ((b - a : ℕ) : ℝ) / (b : ℝ) ≤ barycentricContractionFactor n := by + ((b - a : ℕ) : ℝ) / (b : ℝ) ≤ _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n := by have haR : (1 : ℝ) ≤ a := by exact_mod_cast ha have habR : (a : ℝ) ≤ b := by exact_mod_cast hab have hbR : (b : ℝ) ≤ n + 1 := by exact_mod_cast hb @@ -130,8 +136,8 @@ public theorem card_sub_div_card_le_barycentricContractionFactor have hcast : ((b - a : ℕ) : ℝ) = (b : ℝ) - a := Nat.cast_sub hab have hlhs : ((b : ℝ) - a) / b = 1 - a / b := by field_simp - have hrhs : barycentricContractionFactor n = 1 - 1 / (n + 1 : ℝ) := by - unfold barycentricContractionFactor + have hrhs : _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n = 1 - 1 / (n + 1 : ℝ) := by + unfold _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor field_simp ring rw [hcast, hlhs, hrhs] @@ -139,12 +145,12 @@ public theorem card_sub_div_card_le_barycentricContractionFactor /-- Centroids of two nested nonempty faces contract by the standard barycentric factor, measured relative to the diameter of the arbitrary affine parent vertex family. -/ -public theorem dist_affineParentFaceCentroid_le +theorem dist_affineParentFaceCentroid_le {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] (n : ℕ) (p : Fin (n + 1) → E) (A B : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) (hAB : A ≤ B) : dist (affineParentFaceCentroid p A) (affineParentFaceCentroid p B) ≤ - barycentricContractionFactor n * Metric.diam (Set.range p) := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n * Metric.diam (Set.range p) := by classical let cA := affineParentFaceCentroid p A let D := Metric.diam (Set.range p) @@ -186,30 +192,30 @@ public theorem dist_affineParentFaceCentroid_le _ = (((B.finset.card - A.finset.card : ℕ) : ℝ) / B.finset.card) * D := by rw [Finset.card_sdiff_of_subset hAB] - _ ≤ barycentricContractionFactor n * D := by + _ ≤ _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n * D := by apply mul_le_mul_of_nonneg_right _ (Metric.diam_nonneg) exact card_sub_div_card_le_barycentricContractionFactor n A.finset.card B.finset.card A.nonempty.card_pos (Finset.card_le_card hAB) (by simpa using B.finset.card_le_univ) /-- The affine combination of a family in a real normed vector space. -/ -public noncomputable def normedAffineCombination +noncomputable def normedAffineCombination {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] {I : Type*} [Fintype I] (p : I → E) (w : Convexity.StdSimplex ℝ I) : E := ∑ i, w i • p i /-- Evaluating an affine parent on a face barycenter gives the centroid of the corresponding parent vertices. -/ -public theorem normedAffineCombination_nonemptyFiniteChainBarycenter +theorem normedAffineCombination_nonemptyFiniteChainBarycenter {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] {n : ℕ} (p : Fin (n + 1) → E) (A : NonemptyFiniteChains (ULift.{0} (Fin (n + 1)))) : - normedAffineCombination p (nonemptyFiniteChainBarycenter A) = + normedAffineCombination p (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.nonemptyFiniteChainBarycenter A) = affineParentFaceCentroid p A := by classical rw [affineParentFaceCentroid_eq_smul_sum] unfold normedAffineCombination - simp only [nonemptyFiniteChainBarycenter_apply, ite_smul, zero_smul] + simp only [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.nonemptyFiniteChainBarycenter_apply, ite_smul, zero_smul] rw [Finset.sum_ite] simp only [Finset.sum_const_zero, add_zero] rw [Finset.smul_sum] @@ -230,19 +236,19 @@ public theorem normedAffineCombination_nonemptyFiniteChainBarycenter /-- Applying an affine parent after a flag simplex is the affine combination of the images of the flag's barycenter vertices. -/ -public theorem normedAffineCombination_affineFlagContinuousMap +theorem normedAffineCombination_affineFlagContinuousMap {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] (n k : ℕ) (p : Fin (n + 1) → E) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk k))) (w : Convexity.StdSimplex ℝ (Fin (k + 1))) : - normedAffineCombination p (affineFlagContinuousMap n k F w) = + normedAffineCombination p (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n k F w) = normedAffineCombination (fun j ↦ affineParentFaceCentroid p (F.obj j)) w := by classical - unfold normedAffineCombination affineFlagContinuousMap - simp only [ContinuousMap.coe_mk, stdSimplexAffineCombination_apply] - change (∑ i, (∑ j, w j * nonemptyFiniteChainBarycenter (F.obj j) i) • p i) = + unfold normedAffineCombination _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap + simp only [ContinuousMap.coe_mk, _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination_apply] + change (∑ i, (∑ j, w j * _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.nonemptyFiniteChainBarycenter (F.obj j) i) • p i) = ∑ j, w j • affineParentFaceCentroid p (F.obj j) simp_rw [← normedAffineCombination_nonemptyFiniteChainBarycenter p (F.obj _)] unfold normedAffineCombination @@ -250,7 +256,7 @@ public theorem normedAffineCombination_affineFlagContinuousMap rw [Finset.sum_comm] /-- The parent images of the barycenter vertices in an affine flag. -/ -public noncomputable def affineParentFlagVertexSet +noncomputable def affineParentFlagVertexSet {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] (n k : ℕ) (p : Fin (n + 1) → E) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj @@ -258,15 +264,15 @@ public noncomputable def affineParentFlagVertexSet Set.range fun j ↦ affineParentFaceCentroid p (F.obj j) /-- The vertices of a subdivided affine parent satisfy the relative mesh estimate. -/ -public theorem diam_affineParentFlagVertexSet_le +theorem diam_affineParentFlagVertexSet_le {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] (n k : ℕ) (p : Fin (n + 1) → E) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk k))) : Metric.diam (affineParentFlagVertexSet n k p F) ≤ - barycentricContractionFactor n * Metric.diam (Set.range p) := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n * Metric.diam (Set.range p) := by apply Metric.diam_le_of_forall_dist_le - (mul_nonneg (barycentricContractionFactor_nonneg n) Metric.diam_nonneg) + (mul_nonneg (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor_nonneg n) Metric.diam_nonneg) rintro _ ⟨i, rfl⟩ _ ⟨j, rfl⟩ rcases le_total i j with hij | hji · exact dist_affineParentFaceCentroid_le n p _ _ @@ -276,13 +282,13 @@ public theorem diam_affineParentFlagVertexSet_le (CategoryTheory.leOfHom (F.map (CategoryTheory.homOfLE hji))) /-- Every point in the subdivided affine parent lies in the convex hull of its new vertices. -/ -public theorem normedAffineCombination_affineFlag_mem_convexHull_vertices +theorem normedAffineCombination_affineFlag_mem_convexHull_vertices {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] (n k : ℕ) (p : Fin (n + 1) → E) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk k))) (w : Convexity.StdSimplex ℝ (Fin (k + 1))) : - normedAffineCombination p (affineFlagContinuousMap n k F w) ∈ + normedAffineCombination p (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n k F w) ∈ convexHull ℝ (affineParentFlagVertexSet n k p F) := by rw [normedAffineCombination_affineFlagContinuousMap] unfold normedAffineCombination @@ -296,17 +302,17 @@ public theorem normedAffineCombination_affineFlag_mem_convexHull_vertices /-- Diameter form of the relative mesh estimate for an arbitrary affine parent in a normed vector space. -/ -public theorem diam_range_normedAffineCombination_affineFlag_le +theorem diam_range_normedAffineCombination_affineFlag_le {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] (n k : ℕ) (p : Fin (n + 1) → E) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk k))) : Metric.diam (Set.range fun w ↦ - normedAffineCombination p (affineFlagContinuousMap n k F w)) ≤ - barycentricContractionFactor n * Metric.diam (Set.range p) := by + normedAffineCombination p (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n k F w)) ≤ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n * Metric.diam (Set.range p) := by calc Metric.diam (Set.range fun w ↦ - normedAffineCombination p (affineFlagContinuousMap n k F w)) ≤ + normedAffineCombination p (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n k F w)) ≤ Metric.diam (convexHull ℝ (affineParentFlagVertexSet n k p F)) := by apply Metric.diam_mono · rintro _ ⟨w, rfl⟩ @@ -319,47 +325,47 @@ public theorem diam_range_normedAffineCombination_affineFlag_le /-- An affine combination evaluated at a standard-simplex vertex returns that vertex's image. -/ @[simp] -public theorem stdSimplexAffineCombination_vertex +theorem stdSimplexAffineCombination_vertex {X Y : Type*} [Fintype X] [Fintype Y] [DecidableEq X] (p : X → Convexity.StdSimplex ℝ Y) (i : X) : - stdSimplexAffineCombination p (Convexity.StdSimplex.single i) = p i := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination p (Convexity.StdSimplex.single i) = p i := by classical ext y - simp [stdSimplexAffineCombination_apply, Finsupp.single_apply] + simp [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination_apply, Finsupp.single_apply] /-- Coercing a standard-simplex affine combination to its ambient vector space gives the corresponding normed-space affine combination. -/ -public theorem coe_stdSimplexAffineCombination_eq_normedAffineCombination +theorem coe_stdSimplexAffineCombination_eq_normedAffineCombination {X Y : Type*} [Fintype X] [Fintype Y] (p : X → Convexity.StdSimplex ℝ Y) (w : Convexity.StdSimplex ℝ X) : - (stdSimplexAffineCombination p w : Y → ℝ) = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination p w : Y → ℝ) = normedAffineCombination (fun i ↦ (p i : Y → ℝ)) w := by ext y - simp only [stdSimplexAffineCombination_apply, normedAffineCombination, + simp only [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination_apply, normedAffineCombination, Finset.sum_apply, Pi.smul_apply, smul_eq_mul] /-- The affine map determined by vertices in a standard simplex. -/ -public noncomputable def affineParentContinuousMap +noncomputable def affineParentContinuousMap {X Y : Type*} [Fintype X] [Fintype Y] (p : X → Convexity.StdSimplex ℝ Y) : C(Convexity.StdSimplex ℝ X, Convexity.StdSimplex ℝ Y) := - ⟨stdSimplexAffineCombination p, continuous_stdSimplexAffineCombination p⟩ + ⟨_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination p, _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.continuous_stdSimplexAffineCombination p⟩ /-- Subdividing an arbitrary affine parent simplex contracts its image diameter by at most the standard barycentric factor. -/ -public theorem diam_range_affineParentContinuousMap_comp_affineFlag_le +theorem diam_range_affineParentContinuousMap_comp_affineFlag_le (n k : ℕ) (p : Fin (n + 1) → Convexity.StdSimplex ℝ (Fin (n + 1))) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk k))) : Metric.diam (Set.range - ((affineParentContinuousMap p).comp (affineFlagContinuousMap n k F))) ≤ - barycentricContractionFactor n * + ((affineParentContinuousMap p).comp (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n k F))) ≤ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n * Metric.diam (Set.range (affineParentContinuousMap p)) := by classical let p' : Fin (n + 1) → (Fin (n + 1) → ℝ) := fun i ↦ (p i : Fin (n + 1) → ℝ) let s : Set (Fin (n + 1) → ℝ) := Set.range fun w ↦ - normedAffineCombination p' (affineFlagContinuousMap n k F w) + normedAffineCombination p' (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n k F w) have hsbounded : Bornology.IsBounded s := by apply (show Bornology.IsBounded (convexHull ℝ (affineParentFlagVertexSet n k p' F)) by @@ -369,9 +375,9 @@ public theorem diam_range_affineParentContinuousMap_comp_affineFlag_le rintro _ ⟨w, rfl⟩ exact normedAffineCombination_affineFlag_mem_convexHull_vertices n k p' F w have hpoint (w w' : Convexity.StdSimplex ℝ (Fin (k + 1))) : - dist (normedAffineCombination p' (affineFlagContinuousMap n k F w)) - (normedAffineCombination p' (affineFlagContinuousMap n k F w')) ≤ - barycentricContractionFactor n * Metric.diam (Set.range p') := + dist (normedAffineCombination p' (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n k F w)) + (normedAffineCombination p' (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n k F w')) ≤ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n * Metric.diam (Set.range p') := (Metric.dist_le_diam_of_mem hsbounded ⟨w, rfl⟩ ⟨w', rfl⟩).trans (diam_range_normedAffineCombination_affineFlag_le n k p' F) have hpdiam : Metric.diam (Set.range p') = Metric.diam (Set.range p) := by @@ -379,7 +385,7 @@ public theorem diam_range_affineParentContinuousMap_comp_affineFlag_le (fun x : Convexity.StdSimplex ℝ (Fin (n + 1)) => (x.weights : Fin (n + 1) → ℝ)) '' Set.range p = Set.range p' := (Set.range_comp _ p).symm - rw [← himage, (Convexity.StdSimplex.isometry_weights (Fin (n + 1))).diam_image] + rw [← himage, (_root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex.isometry_weights (Fin (n + 1))).diam_image] have hvertices : Set.range p ⊆ Set.range (affineParentContinuousMap p) := by rintro _ ⟨i, rfl⟩ exact ⟨Convexity.StdSimplex.single i, stdSimplexAffineCombination_vertex p i⟩ @@ -388,41 +394,41 @@ public theorem diam_range_affineParentContinuousMap_comp_affineFlag_le apply Metric.diam_mono hvertices exact isCompact_univ.isBounded.subset (Set.subset_univ _) apply Metric.diam_le_of_forall_dist_le - (mul_nonneg (barycentricContractionFactor_nonneg n) Metric.diam_nonneg) + (mul_nonneg (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor_nonneg n) Metric.diam_nonneg) rintro _ ⟨w, rfl⟩ _ ⟨w', rfl⟩ - rw [Convexity.StdSimplex.dist_eq_weights] + rw [_root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex.dist_eq_weights] change dist - (stdSimplexAffineCombination p (affineFlagContinuousMap n k F w) : + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination p (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n k F w) : Fin (n + 1) → ℝ) - (stdSimplexAffineCombination p (affineFlagContinuousMap n k F w') : + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination p (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n k F w') : Fin (n + 1) → ℝ) ≤ _ rw [coe_stdSimplexAffineCombination_eq_normedAffineCombination, coe_stdSimplexAffineCombination_eq_normedAffineCombination] change dist - (normedAffineCombination p' (affineFlagContinuousMap n k F w)) - (normedAffineCombination p' (affineFlagContinuousMap n k F w')) ≤ _ + (normedAffineCombination p' (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n k F w)) + (normedAffineCombination p' (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n k F w')) ≤ _ exact (hpoint w w').trans <| by rw [hpdiam] exact mul_le_mul_of_nonneg_left hparentdiam - (barycentricContractionFactor_nonneg n) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor_nonneg n) /-- Associativity of standard-simplex affine combinations. -/ -public theorem stdSimplexAffineCombination_assoc +theorem stdSimplexAffineCombination_assoc {I J K : Type*} [Fintype I] [Fintype J] [Fintype K] (p : I → Convexity.StdSimplex ℝ K) (q : J → Convexity.StdSimplex ℝ I) (w : Convexity.StdSimplex ℝ J) : - stdSimplexAffineCombination p (stdSimplexAffineCombination q w) = - stdSimplexAffineCombination - (fun j ↦ stdSimplexAffineCombination p (q j)) w := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination p (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination q w) = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination + (fun j ↦ _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination p (q j)) w := by classical ext z - simp only [stdSimplexAffineCombination_apply] + simp only [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination_apply] simp_rw [Finset.sum_mul, Finset.mul_sum] rw [Finset.sum_comm] exact Finset.sum_congr rfl fun j _ ↦ Finset.sum_congr rfl fun i _ ↦ by ring /-- Composition of two explicitly affine standard-simplex maps is explicitly affine. -/ -public theorem affineParentContinuousMap_comp +theorem affineParentContinuousMap_comp {I J K : Type*} [Fintype I] [Fintype J] [Fintype K] (p : I → Convexity.StdSimplex ℝ K) (q : J → Convexity.StdSimplex ℝ I) : (affineParentContinuousMap p).comp (affineParentContinuousMap q) = @@ -431,32 +437,32 @@ public theorem affineParentContinuousMap_comp ContinuousMap.ext (stdSimplexAffineCombination_assoc p q) /-- The flag map itself is the affine map determined by its face-barycenter vertices. -/ -public theorem affineFlagContinuousMap_eq_affineParentContinuousMap +theorem affineFlagContinuousMap_eq_affineParentContinuousMap (n k : ℕ) (F : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk k))) : - affineFlagContinuousMap n k F = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n k F = affineParentContinuousMap - (fun j ↦ nonemptyFiniteChainBarycenter (F.obj j)) := + (fun j ↦ _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.nonemptyFiniteChainBarycenter (F.obj j)) := rfl /-- An iterated affine cell is still the affine map determined by the images of the original vertices. -/ -public theorem iteratedAffineCellMap_eq_affineParentContinuousMap_vertices - (n : ℕ) (ancestry : List (TopAffineFlag n)) : - iteratedAffineCellMap n ancestry = +theorem iteratedAffineCellMap_eq_affineParentContinuousMap_vertices + (n : ℕ) (ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n)) : + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry = affineParentContinuousMap - (fun i ↦ iteratedAffineCellMap n ancestry (Convexity.StdSimplex.single i)) := by + (fun i ↦ _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry (Convexity.StdSimplex.single i)) := by classical induction ancestry with | nil => apply ContinuousMap.ext intro w ext y - simp [affineParentContinuousMap, stdSimplexAffineCombination_apply, + simp [affineParentContinuousMap, _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.stdSimplexAffineCombination_apply, Finsupp.single_apply] | cons F ancestry ih => - rw [iteratedAffineCellMap_cons, ih, + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap_cons, ih, affineFlagContinuousMap_eq_affineParentContinuousMap, affineParentContinuousMap_comp] congr 1 @@ -466,60 +472,60 @@ public theorem iteratedAffineCellMap_eq_affineParentContinuousMap_vertices /-- The relative mesh contraction estimate required by the iterated-cell argument: subdividing inside an affine parent cell built from a flag ancestry multiplies that parent's diameter by at most the standard barycentric factor. It holds unconditionally for every standard simplex. -/ -public theorem affineFlagRelativeMeshContraction - (n : ℕ) (ancestry : List (TopAffineFlag n)) (F : TopAffineFlag n) : +theorem affineFlagRelativeMeshContraction + (n : ℕ) (ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n)) (F : _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n) : Metric.diam (Set.range - ((iteratedAffineCellMap n ancestry).comp - (affineFlagContinuousMap n n F))) ≤ - barycentricContractionFactor n * - Metric.diam (Set.range (iteratedAffineCellMap n ancestry)) := by + ((_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry).comp + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagContinuousMap n n F))) ≤ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n * + Metric.diam (Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry)) := by rw [iteratedAffineCellMap_eq_affineParentContinuousMap_vertices n ancestry] exact diam_range_affineParentContinuousMap_comp_affineFlag_le n n - (fun i ↦ iteratedAffineCellMap n ancestry (Convexity.StdSimplex.single i)) F + (fun i ↦ _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry (Convexity.StdSimplex.single i)) F /-- An affine cell at ancestry depth `m` has diameter at most the `m`th power of the barycentric factor. -/ -public theorem diam_range_iteratedAffineCellMap_le_pow - (n : ℕ) (hn : 1 ≤ n) (ancestry : List (TopAffineFlag n)) : - Metric.diam (Set.range (iteratedAffineCellMap n ancestry)) ≤ - barycentricContractionFactor n ^ ancestry.length := by +theorem diam_range_iteratedAffineCellMap_le_pow + (n : ℕ) (hn : 1 ≤ n) (ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n)) : + Metric.diam (Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry)) ≤ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n ^ ancestry.length := by induction ancestry with | nil => - rw [iteratedAffineCellMap_nil, List.length_nil, pow_zero, - ContinuousMap.coe_id, Set.range_id, diam_univ_stdSimplex n hn] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap_nil, List.length_nil, pow_zero, + ContinuousMap.coe_id, Set.range_id, _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.diam_univ_stdSimplex n hn] | cons F ancestry ih => calc - Metric.diam (Set.range (iteratedAffineCellMap n (F :: ancestry))) ≤ - barycentricContractionFactor n * - Metric.diam (Set.range (iteratedAffineCellMap n ancestry)) := by - simpa only [iteratedAffineCellMap_cons] using + Metric.diam (Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n (F :: ancestry))) ≤ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n * + Metric.diam (Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry)) := by + simpa only [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap_cons] using affineFlagRelativeMeshContraction n ancestry F - _ ≤ barycentricContractionFactor n * - barycentricContractionFactor n ^ ancestry.length := - mul_le_mul_of_nonneg_left ih (barycentricContractionFactor_nonneg n) - _ = barycentricContractionFactor n ^ (F :: ancestry).length := by + _ ≤ _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n * + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n ^ ancestry.length := + mul_le_mul_of_nonneg_left ih (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor_nonneg n) + _ = _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.barycentricContractionFactor n ^ (F :: ancestry).length := by simp only [List.length_cons, pow_succ] ring /-- At a common sufficiently large ancestry depth, every iterated affine cell of a fixed singular simplex is carried into one member of an arbitrary open cover. -/ -public theorem exists_iteratedAffineCell_depth_subordinate +theorem exists_iteratedAffineCell_depth_subordinate {ι : Type} (X : TopCat.{0}) (U : ι → Set X) (hUopen : ∀ i, IsOpen (U i)) (hUcover : ⋃ i, U i = Set.univ) (n : ℕ) (hn : 1 ≤ n) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) : - ∃ m : ℕ, ∀ ancestry : List (TopAffineFlag n), ancestry.length = m → + ∃ m : ℕ, ∀ ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n), ancestry.length = m → ∃ i, X.toSSetObjEquiv _ x '' - Set.range (iteratedAffineCellMap n ancestry) ⊆ U i := by + Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry) ⊆ U i := by obtain ⟨δ, hδ, hLeb⟩ := - singularSimplex_openCover_lebesgueNumber X U hUopen hUcover n x - obtain ⟨m, hm⟩ := exists_barycentricContractionFactor_pow_lt n hδ + _root_.OAI.AlgebraicTopology.Singular.ExcisionLebesgue.singularSimplex_openCover_lebesgueNumber X U hUopen hUcover n x + obtain ⟨m, hm⟩ := _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.exists_barycentricContractionFactor_pow_lt n hδ refine ⟨m, fun ancestry hlength ↦ ?_⟩ let s : Set (Convexity.StdSimplex ℝ (Fin (n + 1))) := - Set.range (iteratedAffineCellMap n ancestry) + Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry) let w₀ : Convexity.StdSimplex ℝ (Fin (n + 1)) := Classical.arbitrary _ - obtain ⟨i, hi⟩ := hLeb (iteratedAffineCellMap n ancestry w₀) + obtain ⟨i, hi⟩ := hLeb (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry w₀) refine ⟨i, ?_⟩ rintro _ ⟨y, ⟨w, rfl⟩, rfl⟩ apply hi @@ -527,9 +533,15 @@ public theorem exists_iteratedAffineCell_depth_subordinate have hsbounded : Bornology.IsBounded s := isCompact_univ.isBounded.subset (Set.subset_univ s) exact (Metric.dist_le_diam_of_mem hsbounded - (show iteratedAffineCellMap n ancestry w ∈ s from ⟨w, rfl⟩) - (show iteratedAffineCellMap n ancestry w₀ ∈ s from ⟨w₀, rfl⟩)).trans_lt + (show _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry w ∈ s from ⟨w, rfl⟩) + (show _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry w₀ ∈ s from ⟨w₀, rfl⟩)).trans_lt ((diam_range_iteratedAffineCellMap_le_pow n hn ancestry).trans_lt (hlength.symm ▸ hm)) -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.SubdivisionAffineRelativeMesh diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineSmall.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineSmall.lean index 7bb4200321..09290990f0 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineSmall.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineSmall.lean @@ -12,13 +12,16 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.Affine +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.Affine import Mathlib.Algebra.Homology.HomologicalComplexLimits +namespace OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall + /-! This module is ported from Paul Lezeau's corresponding file in `sphere-six-complex` pull request #49, under the Apache-2.0 license. @@ -31,143 +34,143 @@ This file packages that range-preservation statement as an endomorphism of the c complex and proves compatibility with its inclusion into all singular chains. -/ -@[expose] public section +section noncomputable section -open CategoryTheory CategoryTheory.Limits Set +open _root_.CategoryTheory _root_.CategoryTheory.Limits Set -namespace AlgebraicTopology.Singular +section +section variable {iota : Type} (X : TopCat) (U : iota → Set X) /-- A selected cover member through which a cover-small simplex factors. -/ -public noncomputable def coverSmallSimplexPreimageIndex +noncomputable def coverSmallSimplexPreimageIndex {n : SimplexCategoryᵒᵖ} - (x : (coverSmallSingularSubcomplex X U : SSet).obj n) : iota := - ((mem_coverSmallSingularSubcomplex_iff_exists_preimage X U x.1).mp x.2).choose + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).obj n) : iota := + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.mem_coverSmallSingularSubcomplex_iff_exists_preimage X U x.1).mp x.2).choose /-- A selected lift of a cover-small simplex to its selected cover member. -/ -public noncomputable def coverSmallSimplexPreimage +noncomputable def coverSmallSimplexPreimage {n : SimplexCategoryᵒᵖ} - (x : (coverSmallSingularSubcomplex X U : SSet).obj n) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).obj n) : (TopCat.toSSet.obj (TopCat.of (U (coverSmallSimplexPreimageIndex X U x)))).obj n := - ((mem_coverSmallSingularSubcomplex_iff_exists_preimage X U x.1).mp + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.mem_coverSmallSingularSubcomplex_iff_exists_preimage X U x.1).mp x.2).choose_spec.choose /-- The selected lift maps back to the underlying ambient singular simplex. -/ -public theorem coverSmallSimplexPreimage_spec +theorem coverSmallSimplexPreimage_spec {n : SimplexCategoryᵒᵖ} - (x : (coverSmallSingularSubcomplex X U : SSet).obj n) : + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).obj n) : (TopCat.toSSet.map - (topologicalSubsetInclusion X + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X (U (coverSmallSimplexPreimageIndex X U x)))).app n (coverSmallSimplexPreimage X U x) = x.1 := - ((mem_coverSmallSingularSubcomplex_iff_exists_preimage X U x.1).mp + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.mem_coverSmallSingularSubcomplex_iff_exists_preimage X U x.1).mp x.2).choose_spec.choose_spec /-- Affine subdivision of a cover-small generator, performed in a cover member and then mapped back into the cover-small complex. -/ -public noncomputable def coverSmallAffineSubdivisionSimplexChain +noncomputable def coverSmallAffineSubdivisionSimplexChain (n : ℕ) - (x : (coverSmallSingularSubcomplex X U : SSet).obj + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).obj (Opposite.op (SimplexCategory.mk n))) : AddCommGrpCat.of ℤ ⟶ - (CoverSmallIntegralSingularChainComplex X U).X n := - affineSubdivisionSingularSimplexChain + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X n := + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSubdivisionSingularSimplexChain (TopCat.of (U (coverSmallSimplexPreimageIndex X U x))) n (coverSmallSimplexPreimage X U x) ≫ - (coverMemberToSmallIntegralSingularChains X U + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverMemberToSmallIntegralSingularChains X U (coverSmallSimplexPreimageIndex X U x)).f n /-- The degreewise affine subdivision endomorphism of cover-small chains. -/ -public noncomputable def coverSmallAffineSubdivisionComponent (n : ℕ) : - (CoverSmallIntegralSingularChainComplex X U).X n ⟶ - (CoverSmallIntegralSingularChainComplex X U).X n := +noncomputable def coverSmallAffineSubdivisionComponent (n : ℕ) : + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X n ⟶ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X n := Sigma.desc (coverSmallAffineSubdivisionSimplexChain X U n) @[reassoc (attr := simp)] -public theorem iota_coverSmallAffineSubdivisionComponent +theorem iota_coverSmallAffineSubdivisionComponent (n : ℕ) - (x : (coverSmallSingularSubcomplex X U : SSet).obj + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).obj (Opposite.op (SimplexCategory.mk n))) : - (coverSmallSingularSubcomplex X U : SSet).ιChainComplex x ≫ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).ιChainComplex x ≫ coverSmallAffineSubdivisionComponent X U n = coverSmallAffineSubdivisionSimplexChain X U n x := by apply Sigma.ι_comp_desc /-- Subdivision of a selected cover-small generator agrees with full subdivision after inclusion. -/ -public theorem coverSmallAffineSubdivisionSimplexChain_comp_inclusion +theorem coverSmallAffineSubdivisionSimplexChain_comp_inclusion (n : ℕ) - (x : (coverSmallSingularSubcomplex X U : SSet).obj + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).obj (Opposite.op (SimplexCategory.mk n))) : coverSmallAffineSubdivisionSimplexChain X U n x ≫ - (coverSmallIntegralSingularChainInclusion X U).f n = - affineSubdivisionSingularSimplexChain X n x.1 := by + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSubdivisionSingularSimplexChain X n x.1 := by let j := coverSmallSimplexPreimageIndex X U x let y := coverSmallSimplexPreimage X U x - change (affineSubdivisionSingularSimplexChain + change (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSubdivisionSingularSimplexChain (TopCat.of (U j)) n y ≫ - (SSet.chainComplexMap (coverMemberToSmallSingularSet X U j) + (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverMemberToSmallSingularSet X U j) (AddCommGrpCat.of ℤ)).f n) ≫ - (SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ)).f n = - affineSubdivisionSingularSimplexChain X n x.1 + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSubdivisionSingularSimplexChain X n x.1 have hcover := congrArg (fun F ↦ F.f n) - (coverMemberToSmallIntegralSingularChains_comp_inclusion X U j) - change (SSet.chainComplexMap (coverMemberToSmallSingularSet X U j) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverMemberToSmallIntegralSingularChains_comp_inclusion X U j) + change (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverMemberToSmallSingularSet X U j) (AddCommGrpCat.of ℤ)).f n ≫ - (SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ)).f n = (SSet.chainComplexMap - (TopCat.toSSet.map (topologicalSubsetInclusion X (U j))) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X (U j))) (AddCommGrpCat.of ℤ)).f n at hcover - rw [Category.assoc, hcover, ← affineSubdivisionSingularSimplexChain_naturality] - change affineSubdivisionSingularSimplexChain X n - ((TopCat.toSSet.map (topologicalSubsetInclusion X (U j))).app _ y) = - affineSubdivisionSingularSimplexChain X n x.1 + rw [Category.assoc, hcover, ← _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSubdivisionSingularSimplexChain_naturality] + change _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSubdivisionSingularSimplexChain X n + ((TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X (U j))).app _ y) = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSubdivisionSingularSimplexChain X n x.1 rw [show (TopCat.toSSet.map - (topologicalSubsetInclusion X (U j))).app _ y = x.1 from + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X (U j))).app _ y = x.1 from coverSmallSimplexPreimage_spec X U x] /-- Cover-small affine subdivision agrees with full affine subdivision after inclusion. -/ -public theorem coverSmallAffineSubdivisionComponent_comp_inclusion +theorem coverSmallAffineSubdivisionComponent_comp_inclusion (n : ℕ) : coverSmallAffineSubdivisionComponent X U n ≫ - (coverSmallIntegralSingularChainInclusion X U).f n = - (coverSmallIntegralSingularChainInclusion X U).f n ≫ - affineSingularSubdivisionComponent X n := by + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n = + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionComponent X n := by change coverSmallAffineSubdivisionComponent X U n ≫ - (SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ)).f n = - (SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ)).f n ≫ - affineSingularSubdivisionComponent X n - apply (coverSmallSingularSubcomplex X U : SSet).chainComplex_hom_ext + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionComponent X n + apply (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).chainComplex_hom_ext intro x rw [← Category.assoc, iota_coverSmallAffineSubdivisionComponent] simp only [SSet.ι_chainComplexMap_f_assoc, - iota_affineSingularSubdivisionComponent] + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.iota_affineSingularSubdivisionComponent] exact coverSmallAffineSubdivisionSimplexChain_comp_inclusion X U n x -set_option linter.style.haveILetI false in /-- The cover-small affine subdivision components commute with the small-chain boundary. -/ -public theorem coverSmallAffineSubdivisionComponents_commute +theorem coverSmallAffineSubdivisionComponents_commute (n : ℕ) : coverSmallAffineSubdivisionComponent X U (n + 1) ≫ - (CoverSmallIntegralSingularChainComplex X U).d (n + 1) n = - (CoverSmallIntegralSingularChainComplex X U).d (n + 1) n ≫ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).d (n + 1) n = + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).d (n + 1) n ≫ coverSmallAffineSubdivisionComponent X U n := by - let I := SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + let I := SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ) let A := coverSmallAffineSubdivisionComponent X U - let B := affineSingularSubdivisionComponent X - haveI : Mono I := by + let B := _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionComponent X + have : Mono I := by dsimp [I] - exact coverSmallIntegralSingularChainInclusion_mono X U - haveI : Mono (I.f n) := by + exact _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion_mono X U + have : Mono (I.f n) := by change Mono ((HomologicalComplex.eval AddCommGrpCat (ComplexShape.down ℕ) n).map I) exact Functor.map_mono (HomologicalComplex.eval AddCommGrpCat @@ -176,30 +179,36 @@ public theorem coverSmallAffineSubdivisionComponents_commute coverSmallAffineSubdivisionComponent_comp_inclusion X U k apply (cancel_mono (I.f n)).mp rw [Category.assoc, ← I.comm, ← Category.assoc, hAI, Category.assoc, - affineSingularSubdivisionComponents_commute, ← Category.assoc, I.comm, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionComponents_commute, ← Category.assoc, I.comm, Category.assoc, ← hAI, ← Category.assoc] /-- Affine barycentric subdivision as an endomorphism of the cover-small chain complex. -/ -public noncomputable def coverSmallAffineSubdivisionChainMap : - CoverSmallIntegralSingularChainComplex X U ⟶ - CoverSmallIntegralSingularChainComplex X U := +noncomputable def coverSmallAffineSubdivisionChainMap : + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U ⟶ + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U := ChainComplex.ofHom (coverSmallAffineSubdivisionComponent X U) (coverSmallAffineSubdivisionComponents_commute X U) @[simp] -public theorem coverSmallAffineSubdivisionChainMap_f (n : ℕ) : +theorem coverSmallAffineSubdivisionChainMap_f (n : ℕ) : (coverSmallAffineSubdivisionChainMap X U).f n = coverSmallAffineSubdivisionComponent X U n := rfl /-- Cover-small subdivision is the restriction of full affine singular subdivision. -/ -public theorem coverSmallAffineSubdivisionChainMap_comp_inclusion : +theorem coverSmallAffineSubdivisionChainMap_comp_inclusion : coverSmallAffineSubdivisionChainMap X U ≫ - coverSmallIntegralSingularChainInclusion X U = - coverSmallIntegralSingularChainInclusion X U ≫ - affineSingularSubdivisionChainMap X := by + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U = + _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X := by apply HomologicalComplex.Hom.ext funext n exact coverSmallAffineSubdivisionComponent_comp_inclusion X U n -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineSmallPrism.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineSmallPrism.lean index d3cf19fa9d..6e518a28e5 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineSmallPrism.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineSmallPrism.lean @@ -12,15 +12,18 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffinePrism -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffineSmall +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffinePrism +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffineSmall import Mathlib.Algebra.Category.Grp.Zero import Mathlib.Algebra.Homology.HomologicalComplexLimits +namespace OAI.AlgebraicTopology.Singular.SubdivisionAffineSmallPrism + /-! This module is ported from Paul Lezeau's corresponding file in `sphere-six-complex` pull request #49, under the Apache-2.0 license. @@ -33,133 +36,133 @@ prism to the cover-small chain complex and proves that cover-small affine subdiv homotopic to the identity there. -/ -@[expose] public section +section noncomputable section -open AlgebraicTopology CategoryTheory CategoryTheory.Limits Set +open _root_.AlgebraicTopology _root_.CategoryTheory _root_.CategoryTheory.Limits Set -namespace AlgebraicTopology.Singular +section +section variable {iota : Type} (X : TopCat) (U : iota → Set X) /-- The affine prism on a selected lift of a cover-small generator, mapped back into the small chain complex. -/ -public noncomputable def coverSmallAffinePrismSimplexChain +noncomputable def coverSmallAffinePrismSimplexChain (n : ℕ) - (x : (coverSmallSingularSubcomplex X U : SSet).obj + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).obj (Opposite.op (SimplexCategory.mk n))) : AddCommGrpCat.of ℤ ⟶ - (CoverSmallIntegralSingularChainComplex X U).X (n + 1) := + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X (n + 1) := (TopCat.toSSet.obj - (TopCat.of (U (coverSmallSimplexPreimageIndex X U x)))).ιChainComplex - (coverSmallSimplexPreimage X U x) ≫ - affineSingularSubdivisionPrismComponent - (TopCat.of (U (coverSmallSimplexPreimageIndex X U x))) n ≫ - (coverMemberToSmallIntegralSingularChains X U - (coverSmallSimplexPreimageIndex X U x)).f (n + 1) + (TopCat.of (U (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallSimplexPreimageIndex X U x)))).ιChainComplex + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallSimplexPreimage X U x) ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.affineSingularSubdivisionPrismComponent + (TopCat.of (U (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallSimplexPreimageIndex X U x))) n ≫ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverMemberToSmallIntegralSingularChains X U + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallSimplexPreimageIndex X U x)).f (n + 1) /-- The degree-raising affine prism operator on cover-small chains. -/ -public noncomputable def coverSmallAffinePrismComponent (n : ℕ) : - (CoverSmallIntegralSingularChainComplex X U).X n ⟶ - (CoverSmallIntegralSingularChainComplex X U).X (n + 1) := +noncomputable def coverSmallAffinePrismComponent (n : ℕ) : + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X n ⟶ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X (n + 1) := Sigma.desc (coverSmallAffinePrismSimplexChain X U n) @[reassoc (attr := simp)] -public theorem iota_coverSmallAffinePrismComponent +theorem iota_coverSmallAffinePrismComponent (n : ℕ) - (x : (coverSmallSingularSubcomplex X U : SSet).obj + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).obj (Opposite.op (SimplexCategory.mk n))) : - (coverSmallSingularSubcomplex X U : SSet).ιChainComplex x ≫ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).ιChainComplex x ≫ coverSmallAffinePrismComponent X U n = coverSmallAffinePrismSimplexChain X U n x := by apply Sigma.ι_comp_desc /-- The small prism on a generator agrees with the full prism after inclusion. -/ -public theorem coverSmallAffinePrismSimplexChain_comp_inclusion +theorem coverSmallAffinePrismSimplexChain_comp_inclusion (n : ℕ) - (x : (coverSmallSingularSubcomplex X U : SSet).obj + (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).obj (Opposite.op (SimplexCategory.mk n))) : coverSmallAffinePrismSimplexChain X U n x ≫ - (coverSmallIntegralSingularChainInclusion X U).f (n + 1) = + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f (n + 1) = (TopCat.toSSet.obj X).ιChainComplex x.1 ≫ - affineSingularSubdivisionPrismComponent X n := by - let j := coverSmallSimplexPreimageIndex X U x - let y := coverSmallSimplexPreimage X U x + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.affineSingularSubdivisionPrismComponent X n := by + let j := _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallSimplexPreimageIndex X U x + let y := _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallSimplexPreimage X U x let I := SSet.chainComplexMap - (TopCat.toSSet.map (topologicalSubsetInclusion X (U j))) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X (U j))) (AddCommGrpCat.of ℤ) have hcover := congrArg (fun F ↦ F.f (n + 1)) - (coverMemberToSmallIntegralSingularChains_comp_inclusion X U j) - change (SSet.chainComplexMap (coverMemberToSmallSingularSet X U j) + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverMemberToSmallIntegralSingularChains_comp_inclusion X U j) + change (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverMemberToSmallSingularSet X U j) (AddCommGrpCat.of ℤ)).f (n + 1) ≫ - (SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ)).f (n + 1) = I.f (n + 1) at hcover change (((TopCat.toSSet.obj (TopCat.of (U j))).ιChainComplex y ≫ - affineSingularSubdivisionPrismComponent (TopCat.of (U j)) n) ≫ - (SSet.chainComplexMap (coverMemberToSmallSingularSet X U j) + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.affineSingularSubdivisionPrismComponent (TopCat.of (U j)) n) ≫ + (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverMemberToSmallSingularSet X U j) (AddCommGrpCat.of ℤ)).f (n + 1)) ≫ - (SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ)).f (n + 1) = _ rw [Category.assoc, hcover, Category.assoc, - ← affineSingularSubdivisionPrismComponent_naturality, ← Category.assoc, + ← _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.affineSingularSubdivisionPrismComponent_naturality, ← Category.assoc, SSet.ι_chainComplexMap_f, show (TopCat.toSSet.map - (topologicalSubsetInclusion X (U j))).app _ y = x.1 from - coverSmallSimplexPreimage_spec X U x] + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X (U j))).app _ y = x.1 from + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallSimplexPreimage_spec X U x] /-- The small prism agrees degreewise with the full prism after inclusion. -/ -public theorem coverSmallAffinePrismComponent_comp_inclusion +theorem coverSmallAffinePrismComponent_comp_inclusion (n : ℕ) : coverSmallAffinePrismComponent X U n ≫ - (coverSmallIntegralSingularChainInclusion X U).f (n + 1) = - (coverSmallIntegralSingularChainInclusion X U).f n ≫ - affineSingularSubdivisionPrismComponent X n := by + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f (n + 1) = + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.affineSingularSubdivisionPrismComponent X n := by change coverSmallAffinePrismComponent X U n ≫ - (SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ)).f (n + 1) = - (SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ)).f n ≫ - affineSingularSubdivisionPrismComponent X n - apply (coverSmallSingularSubcomplex X U : SSet).chainComplex_hom_ext + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.affineSingularSubdivisionPrismComponent X n + apply (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).chainComplex_hom_ext intro x rw [← Category.assoc, iota_coverSmallAffinePrismComponent] simp only [SSet.ι_chainComplexMap_f_assoc] exact coverSmallAffinePrismSimplexChain_comp_inclusion X U n x -set_option linter.style.haveILetI false in /-- The cover-small prism gives the chain-homotopy equation in positive degrees. -/ -public theorem coverSmallAffinePrismComponent_identity_succ +theorem coverSmallAffinePrismComponent_identity_succ (n : ℕ) : - (coverSmallAffineSubdivisionChainMap X U).f (n + 1) = - (CoverSmallIntegralSingularChainComplex X U).d (n + 1) n ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionChainMap X U).f (n + 1) = + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).d (n + 1) n ≫ coverSmallAffinePrismComponent X U n + coverSmallAffinePrismComponent X U (n + 1) ≫ - (CoverSmallIntegralSingularChainComplex X U).d (n + 2) (n + 1) + - 𝟙 ((CoverSmallIntegralSingularChainComplex X U).X (n + 1)) := by - let I := SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).d (n + 2) (n + 1) + + 𝟙 ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X (n + 1)) := by + let I := SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ) - haveI : Mono I := by + have : Mono I := by dsimp [I] - exact coverSmallIntegralSingularChainInclusion_mono X U - haveI : Mono (I.f (n + 1)) := by + exact _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion_mono X U + have : Mono (I.f (n + 1)) := by change Mono ((HomologicalComplex.eval AddCommGrpCat (ComplexShape.down ℕ) (n + 1)).map I) infer_instance apply (cancel_mono (I.f (n + 1))).mp rw [Preadditive.add_comp, Preadditive.add_comp] simp only [Category.id_comp] - rw [coverSmallAffineSubdivisionChainMap_f] - have hA := coverSmallAffineSubdivisionComponent_comp_inclusion X U (n + 1) - change coverSmallAffineSubdivisionComponent X U (n + 1) ≫ I.f (n + 1) = - I.f (n + 1) ≫ affineSingularSubdivisionComponent X (n + 1) at hA + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionChainMap_f] + have hA := _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionComponent_comp_inclusion X U (n + 1) + change _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionComponent X U (n + 1) ≫ I.f (n + 1) = + I.f (n + 1) ≫ _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionComponent X (n + 1) at hA have hP (k : ℕ) : coverSmallAffinePrismComponent X U k ≫ I.f (k + 1) = - I.f k ≫ affineSingularSubdivisionPrismComponent X k := + I.f k ≫ _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.affineSingularSubdivisionPrismComponent X k := coverSmallAffinePrismComponent_comp_inclusion X U k rw [hA] change I.f (n + 1) ≫ - (affineSingularSubdivisionChainMap X).f (n + 1) = _ - rw [affineSingularSubdivisionPrismComponent_identity_succ, + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X).f (n + 1) = _ + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.affineSingularSubdivisionPrismComponent_identity_succ, Preadditive.comp_add, Preadditive.comp_add] simp only [Category.comp_id] apply congrArg₂ (fun a b ↦ a + b) @@ -168,35 +171,34 @@ public theorem coverSmallAffinePrismComponent_identity_succ · rw [← Category.assoc, ← hP, Category.assoc, I.comm, ← Category.assoc] · rfl -set_option linter.style.haveILetI false in /-- The cover-small prism gives the chain-homotopy equation in degree zero. -/ -public theorem coverSmallAffinePrismComponent_identity_zero : - (coverSmallAffineSubdivisionChainMap X U).f 0 = +theorem coverSmallAffinePrismComponent_identity_zero : + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionChainMap X U).f 0 = coverSmallAffinePrismComponent X U 0 ≫ - (CoverSmallIntegralSingularChainComplex X U).d 1 0 + - 𝟙 ((CoverSmallIntegralSingularChainComplex X U).X 0) := by - let I := SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).d 1 0 + + 𝟙 ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X 0) := by + let I := SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ) - haveI : Mono I := by + have : Mono I := by dsimp [I] - exact coverSmallIntegralSingularChainInclusion_mono X U - haveI : Mono (I.f 0) := by + exact _root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion_mono X U + have : Mono (I.f 0) := by change Mono ((HomologicalComplex.eval AddCommGrpCat (ComplexShape.down ℕ) 0).map I) infer_instance apply (cancel_mono (I.f 0)).mp rw [Preadditive.add_comp] simp only [Category.id_comp] - rw [coverSmallAffineSubdivisionChainMap_f] - have hA := coverSmallAffineSubdivisionComponent_comp_inclusion X U 0 - change coverSmallAffineSubdivisionComponent X U 0 ≫ I.f 0 = - I.f 0 ≫ affineSingularSubdivisionComponent X 0 at hA + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionChainMap_f] + have hA := _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionComponent_comp_inclusion X U 0 + change _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionComponent X U 0 ≫ I.f 0 = + I.f 0 ≫ _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionComponent X 0 at hA have hP : coverSmallAffinePrismComponent X U 0 ≫ I.f 1 = - I.f 0 ≫ affineSingularSubdivisionPrismComponent X 0 := + I.f 0 ≫ _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.affineSingularSubdivisionPrismComponent X 0 := coverSmallAffinePrismComponent_comp_inclusion X U 0 rw [hA] - change I.f 0 ≫ (affineSingularSubdivisionChainMap X).f 0 = _ - rw [affineSingularSubdivisionPrismComponent_identity_zero, + change I.f 0 ≫ (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X).f 0 = _ + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffinePrism.affineSingularSubdivisionPrismComponent_identity_zero, Preadditive.comp_add] simp only [Category.comp_id] apply congrArg₂ (fun a b ↦ a + b) @@ -204,24 +206,24 @@ public theorem coverSmallAffinePrismComponent_identity_zero : · rfl /-- The degree-raising small-prism family. -/ -public noncomputable def coverSmallAffinePrismHom (i j : ℕ) : - (CoverSmallIntegralSingularChainComplex X U).X i ⟶ - (CoverSmallIntegralSingularChainComplex X U).X j := +noncomputable def coverSmallAffinePrismHom (i j : ℕ) : + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X i ⟶ + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X j := if h : j = i + 1 then by subst j exact coverSmallAffinePrismComponent X U i else 0 @[simp] -public theorem coverSmallAffinePrismHom_succ (i : ℕ) : +theorem coverSmallAffinePrismHom_succ (i : ℕ) : coverSmallAffinePrismHom X U i (i + 1) = coverSmallAffinePrismComponent X U i := by simp [coverSmallAffinePrismHom] /-- Cover-small affine subdivision is chain homotopic to the identity. -/ -public noncomputable def coverSmallAffineSubdivisionHomotopy : - Homotopy (coverSmallAffineSubdivisionChainMap X U) - (𝟙 (CoverSmallIntegralSingularChainComplex X U)) where +noncomputable def coverSmallAffineSubdivisionHomotopy : + Homotopy (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineSmall.coverSmallAffineSubdivisionChainMap X U) + (𝟙 (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U)) where hom := coverSmallAffinePrismHom X U zero i j hij := by rw [coverSmallAffinePrismHom] @@ -246,4 +248,10 @@ public noncomputable def coverSmallAffineSubdivisionHomotopy : HomologicalComplex.id_f] exact coverSmallAffinePrismComponent_identity_succ X U n -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.SubdivisionAffineSmallPrism diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineSupport.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineSupport.lean index 746464500c..41d7b16cec 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineSupport.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/AffineSupport.lean @@ -12,13 +12,16 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffineMesh +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffineMesh import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.AffineRelativeMesh +namespace OAI.AlgebraicTopology.Singular.SubdivisionAffineSupport + /-! This module is ported from Paul Lezeau's corresponding file in `sphere-six-complex` pull request #49, under the Apache-2.0 license. @@ -30,39 +33,40 @@ geometric ancestry cells used in the mesh estimate. It then lifts an iterate wh cells are subordinate to a cover into the cover-small singular chain complex. -/ -@[expose] public section +section noncomputable section -open AlgebraicTopology CategoryTheory CategoryTheory.Limits Set Simplicial +open _root_.AlgebraicTopology _root_.CategoryTheory _root_.CategoryTheory.Limits Set Simplicial -namespace AlgebraicTopology.Singular +section +section /-- The singular simplex obtained by restricting `x` to one iterated affine ancestry cell. -/ -public noncomputable def iteratedAffineCellSingularSimplex +noncomputable def iteratedAffineCellSingularSimplex (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) - (ancestry : List (TopAffineFlag n)) : + (ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n)) : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n)) := (X.toSSetObjEquiv _).symm - ((X.toSSetObjEquiv _ x).comp (iteratedAffineCellMap n ancestry)) + ((X.toSSetObjEquiv _ x).comp (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry)) @[simp] -public theorem toSSetObjEquiv_iteratedAffineCellSingularSimplex_apply +theorem toSSetObjEquiv_iteratedAffineCellSingularSimplex_apply (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) - (ancestry : List (TopAffineFlag n)) + (ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n)) (w : Convexity.StdSimplex ℝ (Fin (n + 1))) : X.toSSetObjEquiv _ (iteratedAffineCellSingularSimplex X n x ancestry) w = - X.toSSetObjEquiv _ x (iteratedAffineCellMap n ancestry w) := by + X.toSSetObjEquiv _ x (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry w) := by rfl @[simp] -public theorem iteratedAffineCellSingularSimplex_nil +theorem iteratedAffineCellSingularSimplex_nil (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) : @@ -72,16 +76,16 @@ public theorem iteratedAffineCellSingularSimplex_nil /-- Adding the newest flag to an ancestry is the same as restricting the parent cell by that affine flag. -/ -public theorem iteratedAffineCellSingularSimplex_cons +theorem iteratedAffineCellSingularSimplex_cons (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) - (F : TopAffineFlag n) (ancestry : List (TopAffineFlag n)) : + (F : _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n) (ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n)) : iteratedAffineCellSingularSimplex X n x (F :: ancestry) = (TopCat.toSSet.map - (singularSimplexTopCatMap X n + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n (iteratedAffineCellSingularSimplex X n x ancestry))).app _ - (affineFlagSingularSimplex n n F) := by + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagSingularSimplex n n F) := by apply (X.toSSetObjEquiv _).injective apply ContinuousMap.ext intro w @@ -89,11 +93,11 @@ public theorem iteratedAffineCellSingularSimplex_cons /-- Restricting a parent ancestry cell by one more flag adds that flag at the head of the ancestry. -/ -public theorem iteratedAffineCellSingularSimplex_singleton_parent +theorem iteratedAffineCellSingularSimplex_singleton_parent (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) - (F : TopAffineFlag n) (ancestry : List (TopAffineFlag n)) : + (F : _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n) (ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n)) : iteratedAffineCellSingularSimplex X n (iteratedAffineCellSingularSimplex X n x ancestry) [F] = iteratedAffineCellSingularSimplex X n x (F :: ancestry) := by @@ -101,9 +105,9 @@ public theorem iteratedAffineCellSingularSimplex_singleton_parent iteratedAffineCellSingularSimplex X n (iteratedAffineCellSingularSimplex X n x ancestry) [F] = (TopCat.toSSet.map - (singularSimplexTopCatMap X n + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.singularSimplexTopCatMap X n (iteratedAffineCellSingularSimplex X n x ancestry))).app _ - (affineFlagSingularSimplex n n F) := by + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagSingularSimplex n n F) := by rw [iteratedAffineCellSingularSimplex_cons, iteratedAffineCellSingularSimplex_nil] _ = iteratedAffineCellSingularSimplex X n x (F :: ancestry) := @@ -111,82 +115,82 @@ public theorem iteratedAffineCellSingularSimplex_singleton_parent /-- One affine subdivision of a generator is exactly the signed sum over permutation maximal flags. -/ -public theorem affineSubdivisionSingularSimplexChain_eq_permutation_sum +theorem affineSubdivisionSingularSimplexChain_eq_permutation_sum (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) : - affineSubdivisionSingularSimplexChain X n x = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSubdivisionSingularSimplexChain X n x = ∑ σ : Equiv.Perm (Fin (n + 1)), - permutationSignInteger σ • + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger σ • (TopCat.toSSet.obj X).ιChainComplex (iteratedAffineCellSingularSimplex X n x - [permutationMaximalFlagSimplex σ]) := by - rw [affineSubdivisionSingularSimplexChain, - affineSubdividedSimplexFundamentalChain, - subdividedSimplexFundamentalChain, Preadditive.sum_comp, + [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationMaximalFlagSimplex σ]) := by + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSubdivisionSingularSimplexChain, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSubdividedSimplexFundamentalChain, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain, Preadditive.sum_comp, Preadditive.sum_comp] apply Finset.sum_congr rfl intro σ _ simp only [Preadditive.zsmul_comp, - affineFlagChainMap_f, iota_affineFlagChainComponent, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineFlagChainMap_f, _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.iota_affineFlagChainComponent, SSet.ι_chainComplexMap_f] - apply congrArg (fun f ↦ permutationSignInteger σ • f) + apply congrArg (fun f ↦ _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger σ • f) rw [iteratedAffineCellSingularSimplex_cons, iteratedAffineCellSingularSimplex_nil] /-- A depth-`m` choice of one permutation maximal flag at every subdivision stage. -/ -public abbrev AffinePermutationAncestry (n m : ℕ) := +abbrev AffinePermutationAncestry (n m : ℕ) := Fin m → Equiv.Perm (Fin (n + 1)) /-- The list of affine flags encoded by a permutation ancestry, newest first. -/ -public noncomputable def affinePermutationAncestryFlags +noncomputable def affinePermutationAncestryFlags (n m : ℕ) (a : AffinePermutationAncestry n m) : - List (TopAffineFlag n) := - List.ofFn fun i ↦ permutationMaximalFlagSimplex (a i) + List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n) := + List.ofFn fun i ↦ _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationMaximalFlagSimplex (a i) /-- The product of the orientation signs along a permutation ancestry. -/ -public noncomputable def affinePermutationAncestrySign +noncomputable def affinePermutationAncestrySign (n m : ℕ) (a : AffinePermutationAncestry n m) : ℤ := - ∏ i, permutationSignInteger (a i) + ∏ i, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger (a i) @[simp] -public theorem affinePermutationAncestryFlags_zero +theorem affinePermutationAncestryFlags_zero (n : ℕ) (a : AffinePermutationAncestry n 0) : affinePermutationAncestryFlags n 0 a = [] := by simp [affinePermutationAncestryFlags] @[simp] -public theorem affinePermutationAncestrySign_zero +theorem affinePermutationAncestrySign_zero (n : ℕ) (a : AffinePermutationAncestry n 0) : affinePermutationAncestrySign n 0 a = 1 := by simp [affinePermutationAncestrySign] @[simp] -public theorem affinePermutationAncestryFlags_cons +theorem affinePermutationAncestryFlags_cons (n m : ℕ) (σ : Equiv.Perm (Fin (n + 1))) (a : AffinePermutationAncestry n m) : affinePermutationAncestryFlags n (m + 1) (Fin.cons σ a) = - permutationMaximalFlagSimplex σ :: + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationMaximalFlagSimplex σ :: affinePermutationAncestryFlags n m a := by simp [affinePermutationAncestryFlags] @[simp] -public theorem affinePermutationAncestrySign_cons +theorem affinePermutationAncestrySign_cons (n m : ℕ) (σ : Equiv.Perm (Fin (n + 1))) (a : AffinePermutationAncestry n m) : affinePermutationAncestrySign n (m + 1) (Fin.cons σ a) = - permutationSignInteger σ * affinePermutationAncestrySign n m a := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger σ * affinePermutationAncestrySign n m a := by simp [affinePermutationAncestrySign, Fin.prod_univ_succ] /-- The exact generator expansion after `m` affine subdivisions. Its summands are precisely the singular simplices obtained from depth-`m` affine ancestries. -/ -public theorem iota_affineSingularSubdivisionIterate_eq_ancestry_sum +theorem iota_affineSingularSubdivisionIterate_eq_ancestry_sum (X : TopCat.{0}) (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) : ∀ m : ℕ, (TopCat.toSSet.obj X).ιChainComplex x ≫ - (affineSingularSubdivisionIterate X m).f n = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n = ∑ a : AffinePermutationAncestry n m, affinePermutationAncestrySign n m a • (TopCat.toSSet.obj X).ιChainComplex @@ -196,19 +200,19 @@ public theorem iota_affineSingularSubdivisionIterate_eq_ancestry_sum induction m with | zero => classical - simp only [affineSingularSubdivisionIterate_zero] + simp only [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate_zero] rw [Fintype.sum_unique] simp | succ m ih => classical - rw [affineSingularSubdivisionIterate_succ] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate_succ] change ((TopCat.toSSet.obj X).ιChainComplex x ≫ - (affineSingularSubdivisionIterate X m).f n) ≫ - (affineSingularSubdivisionChainMap X).f n = _ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap X).f n = _ rw [ih, Preadditive.sum_comp] simp only [Preadditive.zsmul_comp, - affineSingularSubdivisionChainMap_f, - iota_affineSingularSubdivisionComponent, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.affineSingularSubdivisionChainMap_f, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffine.iota_affineSingularSubdivisionComponent, affineSubdivisionSingularSimplexChain_eq_permutation_sum, Finset.smul_sum, smul_smul] rw [Finset.sum_comm, ← Fintype.sum_prod_type'] @@ -217,7 +221,7 @@ public theorem iota_affineSingularSubdivisionIterate_eq_ancestry_sum Equiv.Perm (Fin (n + 1)))) _ _ rintro ⟨σ, a⟩ change (affinePermutationAncestrySign n m a * - permutationSignInteger σ) • _ = + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger σ) • _ = affinePermutationAncestrySign n (m + 1) (Fin.cons σ a) • (TopCat.toSSet.obj X).ιChainComplex (iteratedAffineCellSingularSimplex X n x @@ -232,25 +236,25 @@ variable {ι : Type} (X : TopCat.{0}) (U : ι → Set X) /-- A geometric ancestry cell subordinate to one cover member defines a cover-small singular simplex. -/ -public theorem iteratedAffineCellSingularSimplex_mem_coverSmall +theorem iteratedAffineCellSingularSimplex_mem_coverSmall (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) - (ancestry : List (TopAffineFlag n)) + (ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n)) (hsmall : ∃ i, X.toSSetObjEquiv _ x '' - Set.range (iteratedAffineCellMap n ancestry) ⊆ U i) : + Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry) ⊆ U i) : iteratedAffineCellSingularSimplex X n x ancestry ∈ - (coverSmallSingularSubcomplex X U).obj + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).obj (Opposite.op (SimplexCategory.mk n)) := by - rw [mem_coverSmallSingularSubcomplex_iff_exists_preimage] + rw [_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.mem_coverSmallSingularSubcomplex_iff_exists_preimage] obtain ⟨i, hi⟩ := hsmall let f : C(Convexity.StdSimplex ℝ (Fin (n + 1)), U i) := ⟨fun w ↦ - ⟨X.toSSetObjEquiv _ x (iteratedAffineCellMap n ancestry w), - hi ⟨iteratedAffineCellMap n ancestry w, ⟨w, rfl⟩, rfl⟩⟩, + ⟨X.toSSetObjEquiv _ x (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry w), + hi ⟨_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry w, ⟨w, rfl⟩, rfl⟩⟩, Continuous.subtype_mk ((X.toSSetObjEquiv _ x).continuous.comp - (iteratedAffineCellMap n ancestry).continuous) _⟩ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry).continuous) _⟩ refine ⟨i, (TopCat.toSSetObjEquiv _ _).symm f, ?_⟩ apply (X.toSSetObjEquiv _).injective apply ContinuousMap.ext @@ -258,63 +262,63 @@ public theorem iteratedAffineCellSingularSimplex_mem_coverSmall rfl /-- The cover-small simplex corresponding to a subordinate ancestry cell. -/ -public noncomputable def coverSmallIteratedAffineCellSimplex +noncomputable def coverSmallIteratedAffineCellSimplex (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) - (ancestry : List (TopAffineFlag n)) + (ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n)) (hsmall : ∃ i, X.toSSetObjEquiv _ x '' - Set.range (iteratedAffineCellMap n ancestry) ⊆ U i) : - (coverSmallSingularSubcomplex X U : SSet).obj + Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry) ⊆ U i) : + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).obj (Opposite.op (SimplexCategory.mk n)) := ⟨iteratedAffineCellSingularSimplex X n x ancestry, iteratedAffineCellSingularSimplex_mem_coverSmall X U n x ancestry hsmall⟩ @[simp] -public theorem coverSmallIteratedAffineCellSimplex_val +theorem coverSmallIteratedAffineCellSimplex_val (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) - (ancestry : List (TopAffineFlag n)) + (ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n)) (hsmall : ∃ i, X.toSSetObjEquiv _ x '' - Set.range (iteratedAffineCellMap n ancestry) ⊆ U i) : + Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry) ⊆ U i) : (coverSmallIteratedAffineCellSimplex X U n x ancestry hsmall).1 = iteratedAffineCellSingularSimplex X n x ancestry := rfl /-- The signed ancestry expansion, lifted generator by generator to cover-small chains. -/ -public noncomputable def coverSmallAffineAncestryLiftChain +noncomputable def coverSmallAffineAncestryLiftChain (n m : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) (hsmall : ∀ a : AffinePermutationAncestry n m, ∃ i, X.toSSetObjEquiv _ x '' - Set.range (iteratedAffineCellMap n + Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n (affinePermutationAncestryFlags n m a)) ⊆ U i) : AddCommGrpCat.of ℤ ⟶ - (CoverSmallIntegralSingularChainComplex X U).X n := + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X n := ∑ a : AffinePermutationAncestry n m, affinePermutationAncestrySign n m a • - (coverSmallSingularSubcomplex X U : SSet).ιChainComplex + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U : SSet).ιChainComplex (coverSmallIteratedAffineCellSimplex X U n x (affinePermutationAncestryFlags n m a) (hsmall a)) /-- The lifted ancestry chain maps to the affine-subdivision iterate of its original generator. -/ -public theorem coverSmallAffineAncestryLiftChain_comp_inclusion +theorem coverSmallAffineAncestryLiftChain_comp_inclusion (n m : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) (hsmall : ∀ a : AffinePermutationAncestry n m, ∃ i, X.toSSetObjEquiv _ x '' - Set.range (iteratedAffineCellMap n + Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n (affinePermutationAncestryFlags n m a)) ⊆ U i) : coverSmallAffineAncestryLiftChain X U n m x hsmall ≫ - (coverSmallIntegralSingularChainInclusion X U).f n = + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n = (TopCat.toSSet.obj X).ιChainComplex x ≫ - (affineSingularSubdivisionIterate X m).f n := by + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n := by change coverSmallAffineAncestryLiftChain X U n m x hsmall ≫ - (SSet.chainComplexMap (coverSmallSingularSubcomplex X U).ι + (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex X U).ι (AddCommGrpCat.of ℤ)).f n = _ rw [coverSmallAffineAncestryLiftChain, Preadditive.sum_comp] simp_rw [Preadditive.zsmul_comp, SSet.ι_chainComplexMap_f] @@ -322,66 +326,66 @@ public theorem coverSmallAffineAncestryLiftChain_comp_inclusion /-- If every depth-`m` ancestry cell of a generator is subordinate to the cover, its subdivided chain lies in the degreewise range of the cover-small inclusion. -/ -public theorem affineSingularSubdivisionIterate_generator_mem_range_of_ancestries +theorem affineSingularSubdivisionIterate_generator_mem_range_of_ancestries (n m : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))) (hsmall : ∀ a : AffinePermutationAncestry n m, ∃ i, X.toSSetObjEquiv _ x '' - Set.range (iteratedAffineCellMap n + Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n (affinePermutationAncestryFlags n m a)) ⊆ U i) : - (affineSingularSubdivisionIterate X m).f n + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n ((TopCat.toSSet.obj X).ιChainComplex (R := AddCommGrpCat.of ℤ) x 1) ∈ - Set.range ((coverSmallIntegralSingularChainInclusion X U).f n) := by + Set.range ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n) := by refine ⟨coverSmallAffineAncestryLiftChain X U n m x hsmall 1, ?_⟩ exact ConcreteCategory.congr_hom (coverSmallAffineAncestryLiftChain_comp_inclusion X U n m x hsmall) 1 @[simp] -public theorem length_affinePermutationAncestryFlags +theorem length_affinePermutationAncestryFlags (n m : ℕ) (a : AffinePermutationAncestry n m) : (affinePermutationAncestryFlags n m a).length = m := by simp [affinePermutationAncestryFlags] /-- Once an iterate lies in the range of the cover-small inclusion, every later iterate does as well. -/ -public theorem affineSingularSubdivisionIterate_mem_range_add +theorem affineSingularSubdivisionIterate_mem_range_add (n m r : ℕ) - (c : (IntegralSingularChainComplexObj X).X n) - (h : (affineSingularSubdivisionIterate X m).f n c ∈ - Set.range ((coverSmallIntegralSingularChainInclusion X U).f n)) : - (affineSingularSubdivisionIterate X (m + r)).f n c ∈ - Set.range ((coverSmallIntegralSingularChainInclusion X U).f n) := by + (c : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n) + (h : (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n c ∈ + Set.range ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n)) : + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X (m + r)).f n c ∈ + Set.range ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n) := by obtain ⟨y, hy⟩ := h - refine ⟨(coverSmallAffineSubdivisionIterate X U r).f n y, ?_⟩ + refine ⟨(_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.coverSmallAffineSubdivisionIterate X U r).f n y, ?_⟩ have hcomm := ConcreteCategory.congr_hom (congrArg (fun f ↦ f.f n) - (coverSmallAffineSubdivisionIterate_comp_inclusion X U r)) y + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.coverSmallAffineSubdivisionIterate_comp_inclusion X U r)) y have hmiddle : - (affineSingularSubdivisionIterate X r).f n - ((coverSmallIntegralSingularChainInclusion X U).f n y) = - (affineSingularSubdivisionIterate X r).f n - ((affineSingularSubdivisionIterate X m).f n c) := - congrArg ((affineSingularSubdivisionIterate X r).f n) hy + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X r).f n + ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n y) = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X r).f n + ((_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n c) := + congrArg ((_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X r).f n) hy have htotal : - (affineSingularSubdivisionIterate X r).f n - ((affineSingularSubdivisionIterate X m).f n c) = - (affineSingularSubdivisionIterate X (m + r)).f n c := by - rw [affineSingularSubdivisionIterate_add] + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X r).f n + ((_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n c) = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X (m + r)).f n c := by + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.affineSingularSubdivisionIterate_add] rfl exact hcomm.trans (hmiddle.trans htotal) /-- Chains which become cover-small after some (chain-dependent) number of affine subdivisions form an additive subgroup. -/ -public noncomputable def affineSubdivisionEventuallySmallAddSubgroup - (n : ℕ) : AddSubgroup ((IntegralSingularChainComplexObj X).X n) where +noncomputable def affineSubdivisionEventuallySmallAddSubgroup + (n : ℕ) : AddSubgroup ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n) where carrier := {c | ∃ m : ℕ, - (affineSingularSubdivisionIterate X m).f n c ∈ - Set.range ((coverSmallIntegralSingularChainInclusion X U).f n)} + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n c ∈ + Set.range ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n)} zero_mem' := - ⟨0, 0, ((coverSmallIntegralSingularChainInclusion X U).f n).hom.map_zero.trans - ((affineSingularSubdivisionIterate X 0).f n).hom.map_zero.symm⟩ + ⟨0, 0, ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n).hom.map_zero.trans + ((_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X 0).f n).hom.map_zero.symm⟩ add_mem' := by rintro c d ⟨m, hm⟩ ⟨r, hr⟩ have hm' := affineSingularSubdivisionIterate_mem_range_add @@ -394,36 +398,36 @@ public noncomputable def affineSubdivisionEventuallySmallAddSubgroup refine ⟨m + r, yc + yd, ?_⟩ simp only [map_add] rw [hyc, hyd] - exact ((affineSingularSubdivisionIterate X (m + r)).f n).hom.map_add c d |>.symm + exact ((_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X (m + r)).f n).hom.map_add c d |>.symm neg_mem' := by rintro c ⟨m, hm⟩ obtain ⟨y, hy⟩ := hm refine ⟨m, -y, ?_⟩ simp only [map_neg] rw [hy] - exact ((affineSingularSubdivisionIterate X m).f n).hom.map_neg c |>.symm + exact ((_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n).hom.map_neg c |>.symm /-- Generatorwise subordinate permutation ancestries suffice for every chain: the required subdivision depth may depend on the chain. -/ -public theorem exists_affineSubdivisionIterate_mem_range_of_generator_ancestries +theorem exists_affineSubdivisionIterate_mem_range_of_generator_ancestries (n : ℕ) (hsmall : ∀ x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n)), ∃ m : ℕ, ∀ a : AffinePermutationAncestry n m, ∃ i, X.toSSetObjEquiv _ x '' - Set.range (iteratedAffineCellMap n + Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n (affinePermutationAncestryFlags n m a)) ⊆ U i) : - ∀ c : (IntegralSingularChainComplexObj X).X n, - ∃ m : ℕ, (affineSingularSubdivisionIterate X m).f n c ∈ - Set.range ((coverSmallIntegralSingularChainInclusion X U).f n) := by + ∀ c : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n, + ∃ m : ℕ, (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n c ∈ + Set.range ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n) := by let P := affineSubdivisionEventuallySmallAddSubgroup X U n - let Q := AddCommGrpCat.of ((IntegralSingularChainComplexObj X).X n ⧸ P) - let q : (IntegralSingularChainComplexObj X).X n ⟶ Q := + let Q := AddCommGrpCat.of ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n ⧸ P) + let q : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n ⟶ Q := AddCommGrpCat.ofHom (QuotientAddGroup.mk' P) have hq : q = 0 := by apply (TopCat.toSSet.obj X).chainComplex_hom_ext intro x - let j : AddCommGrpCat.of ℤ ⟶ (IntegralSingularChainComplexObj X).X n := + let j : AddCommGrpCat.of ℤ ⟶ (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n := (TopCat.toSSet.obj X).ιChainComplex x apply AddCommGrpCat.hom_ext apply AddMonoidHom.ext @@ -449,17 +453,17 @@ public theorem exists_affineSubdivisionIterate_mem_range_of_generator_ancestries /-- If all ancestry cells of one common depth are subordinate for each singular simplex, then every chain in that degree has a cover-small subdivision iterate. -/ -public theorem exists_affineSubdivisionIterate_mem_range_of_ancestries +theorem exists_affineSubdivisionIterate_mem_range_of_ancestries (n : ℕ) (hsmall : ∀ x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n)), - ∃ m : ℕ, ∀ ancestry : List (TopAffineFlag n), + ∃ m : ℕ, ∀ ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n), ancestry.length = m → ∃ i, X.toSSetObjEquiv _ x '' - Set.range (iteratedAffineCellMap n ancestry) ⊆ U i) : - ∀ c : (IntegralSingularChainComplexObj X).X n, - ∃ m : ℕ, (affineSingularSubdivisionIterate X m).f n c ∈ - Set.range ((coverSmallIntegralSingularChainInclusion X U).f n) := by + Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry) ⊆ U i) : + ∀ c : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n, + ∃ m : ℕ, (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n c ∈ + Set.range ((_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n) := by apply exists_affineSubdivisionIterate_mem_range_of_generator_ancestries X U n intro x obtain ⟨m, hm⟩ := hsmall x @@ -468,32 +472,32 @@ public theorem exists_affineSubdivisionIterate_mem_range_of_ancestries /-- Cover-subordination of every depth-`m` ancestry cell (with a depth depending on the original simplex and degree) implies affine eventual smallness for all singular chains. -/ -public theorem coverSmallAffineSubdivisionEventuallySmall_of_ancestries +theorem coverSmallAffineSubdivisionEventuallySmall_of_ancestries (hsmall : ∀ (n : ℕ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk n))), - ∃ m : ℕ, ∀ ancestry : List (TopAffineFlag n), + ∃ m : ℕ, ∀ ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag n), ancestry.length = m → ∃ i, X.toSSetObjEquiv _ x '' - Set.range (iteratedAffineCellMap n ancestry) ⊆ U i) : - ∀ (n : ℕ) (x : (IntegralSingularChainComplexObj X).X n), - ∃ (m : ℕ) (y : (CoverSmallIntegralSingularChainComplex X U).X n), - (coverSmallIntegralSingularChainInclusion X U).f n y = - (affineSingularSubdivisionIterate X m).f n x := by - apply coverSmallAffineSubdivisionEventuallySmall_of_iterate_mem_range X U + Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap n ancestry) ⊆ U i) : + ∀ (n : ℕ) (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n), + ∃ (m : ℕ) (y : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X n), + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n y = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n x := by + apply _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.coverSmallAffineSubdivisionEventuallySmall_of_iterate_mem_range X U intro n c exact exists_affineSubdivisionIterate_mem_range_of_ancestries X U n (hsmall n) c set_option linter.unnecessarySimpa false in /-- Zero-dimensional singular simplices are already subordinate to any covering family. -/ -public theorem exists_zero_dimensional_ancestry_depth_subordinate +theorem exists_zero_dimensional_ancestry_depth_subordinate (hUcover : ⋃ i, U i = Set.univ) (x : (TopCat.toSSet.obj X).obj (Opposite.op (SimplexCategory.mk 0))) : - ∃ m : ℕ, ∀ ancestry : List (TopAffineFlag 0), + ∃ m : ℕ, ∀ ancestry : List (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.TopAffineFlag 0), ancestry.length = m → ∃ i, X.toSSetObjEquiv _ x '' - Set.range (iteratedAffineCellMap 0 ancestry) ⊆ U i := by + Set.range (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineMesh.iteratedAffineCellMap 0 ancestry) ⊆ U i := by refine ⟨0, fun ancestry hlength ↦ ?_⟩ cases ancestry with | cons F ancestry => simp at hlength @@ -511,29 +515,37 @@ public theorem exists_zero_dimensional_ancestry_depth_subordinate funext j have hj : j = 0 := Fin.eq_zero j subst j - have h1 : w.weights 0 = 1 := by simpa using w.total_of_fintype - have h2 : w₀.weights 0 = 1 := by simpa using w₀.total_of_fintype + have h1 : w.weights 0 = 1 := + (Fin.sum_univ_one w.weights).symm.trans w.total_of_fintype + have h2 : w₀.weights 0 = 1 := + (Fin.sum_univ_one w₀.weights).symm.trans w₀.total_of_fintype exact h1.trans h2.symm simpa [hw] using hi /-- Every finite singular chain becomes subordinate to an open cover after enough affine barycentric subdivisions: the relative mesh contraction handles the positive degrees, and degree zero is already small. -/ -public theorem coverSmallAffineSubdivisionEventuallySmall_of_openCover +theorem coverSmallAffineSubdivisionEventuallySmall_of_openCover (hUopen : ∀ i, IsOpen (U i)) (hUcover : ⋃ i, U i = Set.univ) : - ∀ (n : ℕ) (x : (IntegralSingularChainComplexObj X).X n), - ∃ (m : ℕ) (y : (CoverSmallIntegralSingularChainComplex X U).X n), - (coverSmallIntegralSingularChainInclusion X U).f n y = - (affineSingularSubdivisionIterate X m).f n x := by + ∀ (n : ℕ) (x : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.IntegralSingularChainComplexObj X).X n), + ∃ (m : ℕ) (y : (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.CoverSmallIntegralSingularChainComplex X U).X n), + (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.coverSmallIntegralSingularChainInclusion X U).f n y = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineIteration.affineSingularSubdivisionIterate X m).f n x := by apply coverSmallAffineSubdivisionEventuallySmall_of_ancestries X U intro n x cases n with | zero => exact exists_zero_dimensional_ancestry_depth_subordinate X U hUcover x | succ n => - exact exists_iteratedAffineCell_depth_subordinate X U hUopen hUcover + exact _root_.OAI.AlgebraicTopology.Singular.SubdivisionAffineRelativeMesh.exists_iteratedAffineCell_depth_subordinate X U hUopen hUcover (n + 1) (Nat.succ_le_succ (Nat.zero_le n)) x end CoverSmall -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.SubdivisionAffineSupport diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricAllDegrees.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricAllDegrees.lean index d6ea03af3d..254d8d3501 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricAllDegrees.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricAllDegrees.lean @@ -12,11 +12,14 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.BarycentricChains -public import Mathlib.GroupTheory.Perm.Fin +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.BarycentricChains +import Mathlib.GroupTheory.Perm.Fin + +namespace OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees /-! This module is ported from Paul Lezeau's corresponding file in @@ -31,29 +34,30 @@ the oriented barycentric fundamental chain. This file constructs that chain in set. -/ -@[expose] public section +section noncomputable section -open CategoryTheory CategoryTheory.Limits PartialOrder Simplicial +open _root_.CategoryTheory _root_.CategoryTheory.Limits PartialOrder Simplicial -namespace AlgebraicTopology.Singular +section +section /-- The set of the first `k+1` vertices in the ordering specified by `σ`. -/ -public noncomputable def permutationPrefixFinset {n : ℕ} +noncomputable def permutationPrefixFinset {n : ℕ} (σ : Equiv.Perm (Fin (n + 1))) (k : Fin (n + 1)) : Finset (ULift.{0} (Fin (n + 1))) := (Finset.Iic k).image (fun i ↦ ULift.up (σ i)) /-- Every permutation prefix is nonempty. -/ -public theorem permutationPrefixFinset_nonempty {n : ℕ} +theorem permutationPrefixFinset_nonempty {n : ℕ} (σ : Equiv.Perm (Fin (n + 1))) (k : Fin (n + 1)) : (permutationPrefixFinset σ k).Nonempty := by refine ⟨ULift.up (σ k), ?_⟩ simp [permutationPrefixFinset] /-- Permutation prefixes are nested. -/ -public theorem permutationPrefixFinset_mono {n : ℕ} +theorem permutationPrefixFinset_mono {n : ℕ} (σ : Equiv.Perm (Fin (n + 1))) : Monotone (permutationPrefixFinset σ) := by intro i j hij @@ -63,33 +67,33 @@ public theorem permutationPrefixFinset_mono {n : ℕ} /-- A permutation prefix, regarded as a nonempty finite chain in the linearly ordered vertex set. -/ -public noncomputable def permutationPrefixChain {n : ℕ} +noncomputable def permutationPrefixChain {n : ℕ} (σ : Equiv.Perm (Fin (n + 1))) (k : Fin (n + 1)) : NonemptyFiniteChains (ULift.{0} (Fin (n + 1))) := - nonemptyFiniteChainOfFinset (permutationPrefixFinset σ k) + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricChains.nonemptyFiniteChainOfFinset (permutationPrefixFinset σ k) (permutationPrefixFinset_nonempty σ k) /-- The monotone maximal flag of prefix chains associated to a permutation. -/ -public noncomputable def permutationMaximalFlagOrderHom {n : ℕ} +noncomputable def permutationMaximalFlagOrderHom {n : ℕ} (σ : Equiv.Perm (Fin (n + 1))) : Fin (n + 1) →o NonemptyFiniteChains (ULift.{0} (Fin (n + 1))) where toFun := permutationPrefixChain σ monotone' _ _ hij := permutationPrefixFinset_mono σ hij /-- The `n`-simplex of the subdivision model corresponding to a maximal permutation flag. -/ -public noncomputable def permutationMaximalFlagSimplex {n : ℕ} +noncomputable def permutationMaximalFlagSimplex {n : ℕ} (σ : Equiv.Perm (Fin (n + 1))) : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).obj (Opposite.op (SimplexCategory.mk n)) := (permutationMaximalFlagOrderHom σ).monotone.functor /-- The sign of a permutation, as an integer coefficient. -/ -public noncomputable def permutationSignInteger {n : ℕ} +noncomputable def permutationSignInteger {n : ℕ} (σ : Equiv.Perm (Fin (n + 1))) : ℤ := Equiv.Perm.sign σ /-- Swapping two distinct positions reverses the integer orientation coefficient. -/ -public theorem permutationSignInteger_mul_swap {n : ℕ} +theorem permutationSignInteger_mul_swap {n : ℕ} (σ : Equiv.Perm (Fin (n + 1))) {i j : Fin (n + 1)} (hij : i ≠ j) : permutationSignInteger (σ * Equiv.swap i j) = -permutationSignInteger σ := by @@ -99,7 +103,7 @@ public theorem permutationSignInteger_mul_swap {n : ℕ} /-- A swap preserves an initial segment exactly when its two swapped positions lie on the same side of the cutoff. -/ -public theorem swap_le_iff_of_equiv {n : ℕ} {i j k a : Fin (n + 1)} +theorem swap_le_iff_of_equiv {n : ℕ} {i j k a : Fin (n + 1)} (hk : (i ≤ k ↔ j ≤ k)) : Equiv.swap i j a ≤ k ↔ a ≤ k := by by_cases hai : a = i @@ -114,7 +118,7 @@ public theorem swap_le_iff_of_equiv {n : ℕ} {i j k a : Fin (n + 1)} /-- Swapping two positions on the same side of a cutoff leaves the corresponding permutation prefix unchanged. This is the combinatorial pairing mechanism for interior boundary faces. -/ -public theorem permutationPrefixFinset_mul_swap {n : ℕ} +theorem permutationPrefixFinset_mul_swap {n : ℕ} (σ : Equiv.Perm (Fin (n + 1))) {i j k : Fin (n + 1)} (hk : (i ≤ k ↔ j ≤ k)) : permutationPrefixFinset (σ * Equiv.swap i j) k = @@ -142,7 +146,7 @@ public theorem permutationPrefixFinset_mul_swap {n : ℕ} /-- Deleting the prefix at position `r` makes the two maximal flags obtained by swapping the adjacent positions `r` and `r+1` identical. These are precisely the paired interior faces in the fundamental-chain boundary. -/ -public theorem permutationMaximalFlagSimplex_interiorFace_swap {n : ℕ} +theorem permutationMaximalFlagSimplex_interiorFace_swap {n : ℕ} (σ : Equiv.Perm (Fin (n + 2))) (r : Fin (n + 1)) : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk (n + 1))).δ r.castSucc (permutationMaximalFlagSimplex @@ -172,7 +176,7 @@ public theorem permutationMaximalFlagSimplex_interiorFace_swap {n : ℕ} /-- The oriented barycentric fundamental `n`-chain in the explicit subdivision model of `Δ[n]`. -/ -public noncomputable def subdividedSimplexFundamentalChain (n : ℕ) : +noncomputable def subdividedSimplexFundamentalChain (n : ℕ) : AddCommGrpCat.of ℤ ⟶ ((SimplexCategory.sd.{0}.obj (SimplexCategory.mk n)).chainComplex (AddCommGrpCat.of ℤ)).X n := @@ -183,7 +187,7 @@ public noncomputable def subdividedSimplexFundamentalChain (n : ℕ) : /-- The all-degree fundamental chain transported to Mathlib's left-Kan-extension model `sd Δ[n]`. -/ -public noncomputable def subdividedStandardSimplexFundamentalChain (n : ℕ) : +noncomputable def subdividedStandardSimplexFundamentalChain (n : ℕ) : AddCommGrpCat.of ℤ ⟶ ((SSet.sd.obj (Δ[n] : SSet.{0})).chainComplex (AddCommGrpCat.of ℤ)).X n := @@ -192,7 +196,7 @@ public noncomputable def subdividedStandardSimplexFundamentalChain (n : ℕ) : (AddCommGrpCat.of ℤ)).f n /-- The barycentric fundamental chain associated to an arbitrary `n`-simplex. -/ -public noncomputable def barycentricSubdivisionSimplexChain +noncomputable def barycentricSubdivisionSimplexChain (X : SSet.{0}) (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk n))) : AddCommGrpCat.of ℤ ⟶ @@ -203,14 +207,14 @@ public noncomputable def barycentricSubdivisionSimplexChain /-- The degree-`n` component of barycentric subdivision, defined on every simplex by its signed maximal-flag fundamental chain. -/ -public noncomputable def barycentricSubdivisionComponent +noncomputable def barycentricSubdivisionComponent (X : SSet.{0}) (n : ℕ) : (X.chainComplex (AddCommGrpCat.of ℤ)).X n ⟶ ((SSet.sd.obj X).chainComplex (AddCommGrpCat.of ℤ)).X n := Sigma.desc (barycentricSubdivisionSimplexChain X n) @[reassoc (attr := simp)] -public theorem iota_barycentricSubdivisionComponent +theorem iota_barycentricSubdivisionComponent (X : SSet.{0}) (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk n))) : X.ιChainComplex x ≫ barycentricSubdivisionComponent X n = @@ -219,7 +223,7 @@ public theorem iota_barycentricSubdivisionComponent /-- The signed maximal-flag chain associated to a simplex is natural in the ambient simplicial set. -/ -public theorem barycentricSubdivisionSimplexChain_naturality +theorem barycentricSubdivisionSimplexChain_naturality {X Y : SSet.{0}} (f : X ⟶ Y) (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk n))) : barycentricSubdivisionSimplexChain Y n (f.app _ x) = @@ -236,7 +240,7 @@ public theorem barycentricSubdivisionSimplexChain_naturality /-- The alternating sum of the subdivided fundamental chains of the codimension-one faces of the standard `(n+1)`-simplex, in the explicit nerve model. -/ -public noncomputable def subdividedSimplexAlternatingFaceChain (n : ℕ) : +noncomputable def subdividedSimplexAlternatingFaceChain (n : ℕ) : AddCommGrpCat.of ℤ ⟶ ((SimplexCategory.sd.{0}.obj (SimplexCategory.mk (n + 1))).chainComplex (AddCommGrpCat.of ℤ)).X n := @@ -248,7 +252,7 @@ public noncomputable def subdividedSimplexAlternatingFaceChain (n : ℕ) : /-- The contribution to the boundary in which the prefix at the interior position `r` is deleted. -/ -public noncomputable def subdividedSimplexInteriorFaceSum +noncomputable def subdividedSimplexInteriorFaceSum (n : ℕ) (r : Fin (n + 1)) : AddCommGrpCat.of ℤ ⟶ ((SimplexCategory.sd.{0}.obj (SimplexCategory.mk (n + 1))).chainComplex @@ -261,7 +265,7 @@ public noncomputable def subdividedSimplexInteriorFaceSum /-- Every interior face cancels in pairs. The involution exchanges the two adjacent entries surrounding the deleted prefix; the flags agree after deletion and their signs are opposite. -/ -public theorem subdividedSimplexInteriorFaceSum_eq_zero +theorem subdividedSimplexInteriorFaceSum_eq_zero (n : ℕ) (r : Fin (n + 1)) : subdividedSimplexInteriorFaceSum n r = 0 := by rw [subdividedSimplexInteriorFaceSum] @@ -276,7 +280,7 @@ public theorem subdividedSimplexInteriorFaceSum_eq_zero (fun σ _ ↦ Equiv.mul_swap_involutive r.castSucc r.succ σ) /-- The surviving last-prefix faces in the boundary of the signed maximal-flag chain. -/ -public noncomputable def subdividedSimplexOuterFaceSum (n : ℕ) : +noncomputable def subdividedSimplexOuterFaceSum (n : ℕ) : AddCommGrpCat.of ℤ ⟶ ((SimplexCategory.sd.{0}.obj (SimplexCategory.mk (n + 1))).chainComplex (AddCommGrpCat.of ℤ)).X n := @@ -289,7 +293,7 @@ public noncomputable def subdividedSimplexOuterFaceSum (n : ℕ) : /-- After the pairwise cancellations, only the faces obtained by deleting the full vertex set remain in the boundary of the barycentric fundamental chain. -/ -public theorem subdividedSimplexFundamentalChain_boundary_eq_outer +theorem subdividedSimplexFundamentalChain_boundary_eq_outer (n : ℕ) : subdividedSimplexFundamentalChain (n + 1) ≫ ((SimplexCategory.sd.{0}.obj (SimplexCategory.mk (n + 1))).chainComplex @@ -341,7 +345,7 @@ public theorem subdividedSimplexFundamentalChain_boundary_eq_outer rfl /-- Naturality of `stdSimplex.sdIso.inv`, transported to integral chains in a fixed degree. -/ -public theorem subdividedStandardSimplexFace_naturality +theorem subdividedStandardSimplexFace_naturality (n : ℕ) (i : Fin (n + 2)) : (SSet.chainComplexMap (SimplexCategory.sd.{0}.map (SimplexCategory.δ i)) @@ -362,7 +366,7 @@ public theorem subdividedStandardSimplexFace_naturality exact congrArg (fun k ↦ k.f n) hmap /-- The alternating face chain after transport to `sd Δ[n+1]`. -/ -public noncomputable def subdividedStandardSimplexAlternatingFaceChain (n : ℕ) : +noncomputable def subdividedStandardSimplexAlternatingFaceChain (n : ℕ) : AddCommGrpCat.of ℤ ⟶ ((SSet.sd.obj (Δ[n + 1] : SSet.{0})).chainComplex (AddCommGrpCat.of ℤ)).X n := @@ -374,7 +378,7 @@ public noncomputable def subdividedStandardSimplexAlternatingFaceChain (n : ℕ) /-- Subdividing a face and then mapping its ambient simplex agrees with subdividing the corresponding face simplex. -/ -public theorem subdividedFace_then_simplex_naturality +theorem subdividedFace_then_simplex_naturality {X : SSet.{0}} (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk (n + 1)))) (i : Fin (n + 2)) : @@ -393,7 +397,7 @@ public theorem subdividedFace_then_simplex_naturality exact congrArg (fun k ↦ k.f n) hmap /-- The alternating sum of the barycentrically subdivided faces of an arbitrary simplex. -/ -public noncomputable def barycentricSubdivisionAlternatingFaceChain +noncomputable def barycentricSubdivisionAlternatingFaceChain (X : SSet.{0}) (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk (n + 1)))) : AddCommGrpCat.of ℤ ⟶ @@ -401,4 +405,10 @@ public noncomputable def barycentricSubdivisionAlternatingFaceChain ∑ i : Fin (n + 2), (-1 : ℤ) ^ i.val • barycentricSubdivisionSimplexChain X n (X.δ i x) -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricChains.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricChains.lean index 168fb9bd39..4b9eb1458d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricChains.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricChains.lean @@ -12,10 +12,13 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.Basic +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.Basic + +namespace OAI.AlgebraicTopology.Singular.SubdivisionBarycentricChains /-! This module is ported from Paul Lezeau's corresponding file in @@ -28,28 +31,29 @@ The construction starts from the vertex of `sd Δ[0]` represented by the singlet uses Yoneda naturality to associate a subdivided vertex to every vertex of a simplicial set. -/ -@[expose] public section +section noncomputable section -open CategoryTheory CategoryTheory.Limits PartialOrder Simplicial +open _root_.CategoryTheory _root_.CategoryTheory.Limits PartialOrder Simplicial -namespace AlgebraicTopology.Singular +section +section /-- A singleton, regarded as a nonempty finite chain. -/ -public noncomputable def nonemptyFiniteChainSingleton +noncomputable def nonemptyFiniteChainSingleton {X : Type*} [LinearOrder X] (x : X) : NonemptyFiniteChains X where finset := {x} comparable := by simp @[simp] -public theorem nonemptyFiniteChainSingleton_finset +theorem nonemptyFiniteChainSingleton_finset {X : Type*} [LinearOrder X] (x : X) : (nonemptyFiniteChainSingleton x).finset = {x} := rfl /-- A specified nonempty finset in a linear order, regarded as a finite chain. -/ -public noncomputable def nonemptyFiniteChainOfFinset +noncomputable def nonemptyFiniteChainOfFinset {X : Type*} [LinearOrder X] (s : Finset X) (hs : s.Nonempty) : NonemptyFiniteChains X where finset := s @@ -57,28 +61,28 @@ public noncomputable def nonemptyFiniteChainOfFinset comparable a b := le_total a b /-- The vertex of the subdivision model of `Δ[0]` represented by its singleton vertex chain. -/ -public noncomputable def subdividedZeroSimplexVertex : +noncomputable def subdividedZeroSimplexVertex : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk 0)).obj (Opposite.op (SimplexCategory.mk 0)) := ComposableArrows.mk₀ (nonemptyFiniteChainSingleton (ULift.up (0 : Fin 1))) /-- The corresponding vertex of Mathlib's left-Kan-extension model `sd Δ[0]`. -/ -public noncomputable def subdividedStandardZeroVertex : +noncomputable def subdividedStandardZeroVertex : (SSet.sd.obj (Δ[0] : SSet.{0})).obj (Opposite.op (SimplexCategory.mk 0)) := SSet.stdSimplex.sdIso.inv.app (SimplexCategory.mk 0) |>.app _ subdividedZeroSimplexVertex /-- Every vertex of a simplicial set determines its canonical vertex after subdivision. -/ -public noncomputable def barycentricSubdivisionVertex +noncomputable def barycentricSubdivisionVertex (X : SSet.{0}) (x : X.obj (Opposite.op (SimplexCategory.mk 0))) : (SSet.sd.obj X).obj (Opposite.op (SimplexCategory.mk 0)) := (SSet.sd.map (SSet.yonedaEquiv.symm x)).app _ subdividedStandardZeroVertex /-- The last-vertex map sends the canonical subdivided vertex of `Δ[0]` to its unique vertex. -/ -public theorem subdivisionLastVertex_subdividedStandardZeroVertex : - (subdivisionLastVertex.app (Δ[0] : SSet.{0})).app _ +theorem subdivisionLastVertex_subdividedStandardZeroVertex : + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app (Δ[0] : SSet.{0})).app _ subdividedStandardZeroVertex = SSet.stdSimplex.objEquiv.symm (𝟙 (SimplexCategory.mk 0)) := by apply SSet.stdSimplex.ext @@ -87,52 +91,58 @@ public theorem subdivisionLastVertex_subdividedStandardZeroVertex : exact (Fin.eq_zero _).trans (Fin.eq_zero _).symm /-- The last-vertex map is a left inverse to barycentric subdivision on vertices. -/ -public theorem subdivisionLastVertex_barycentricSubdivisionVertex +theorem subdivisionLastVertex_barycentricSubdivisionVertex (X : SSet.{0}) (x : X.obj (Opposite.op (SimplexCategory.mk 0))) : - (subdivisionLastVertex.app X).app _ (barycentricSubdivisionVertex X x) = x := by + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app X).app _ (barycentricSubdivisionVertex X x) = x := by let f : (Δ[0] : SSet.{0}) ⟶ X := SSet.yonedaEquiv.symm x have hx := ConcreteCategory.congr_hom (NatTrans.congr_app - (subdivisionLastVertex.naturality f) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.naturality f) (Opposite.op (SimplexCategory.mk 0))) subdividedStandardZeroVertex - change (subdivisionLastVertex.app X).app _ + change (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app X).app _ ((SSet.sd.map f).app _ subdividedStandardZeroVertex) = - f.app _ ((subdivisionLastVertex.app (Δ[0] : SSet.{0})).app _ + f.app _ ((_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app (Δ[0] : SSet.{0})).app _ subdividedStandardZeroVertex) at hx rw [subdivisionLastVertex_subdividedStandardZeroVertex] at hx - change (subdivisionLastVertex.app X).app _ + change (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app X).app _ ((SSet.sd.map f).app _ subdividedStandardZeroVertex) = x rw [hx] change X.map (𝟙 (Opposite.op (SimplexCategory.mk 0))) x = x simp /-- The degree-zero component of barycentric subdivision on integral simplicial chains. -/ -public noncomputable def barycentricSubdivisionChainMapZero (X : SSet.{0}) : +noncomputable def barycentricSubdivisionChainMapZero (X : SSet.{0}) : (X.chainComplex (AddCommGrpCat.of ℤ)).X 0 ⟶ ((SSet.sd.obj X).chainComplex (AddCommGrpCat.of ℤ)).X 0 := Sigma.desc (fun x ↦ (SSet.sd.obj X).ιChainComplex (barycentricSubdivisionVertex X x)) @[reassoc (attr := simp)] -public theorem iota_barycentricSubdivisionChainMapZero +theorem iota_barycentricSubdivisionChainMapZero (X : SSet.{0}) (x : X.obj (Opposite.op (SimplexCategory.mk 0))) : X.ιChainComplex x ≫ barycentricSubdivisionChainMapZero X = (SSet.sd.obj X).ιChainComplex (barycentricSubdivisionVertex X x) := by apply Sigma.ι_comp_desc /-- In degree zero, barycentric subdivision followed by last vertex is exactly the identity. -/ -public theorem barycentricSubdivisionChainMapZero_comp_lastVertex +theorem barycentricSubdivisionChainMapZero_comp_lastVertex (X : SSet.{0}) : barycentricSubdivisionChainMapZero X ≫ - (subdivisionLastVertexChainMap X).f 0 = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap X).f 0 = 𝟙 ((X.chainComplex (AddCommGrpCat.of ℤ)).X 0) := by apply X.chainComplex_hom_ext intro x rw [← Category.assoc, iota_barycentricSubdivisionChainMapZero] change (SSet.sd.obj X).ιChainComplex (barycentricSubdivisionVertex X x) ≫ - (SSet.chainComplexMap (subdivisionLastVertex.app X) + (SSet.chainComplexMap (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertex.app X) (AddCommGrpCat.of ℤ)).f 0 = _ rw [SSet.ι_chainComplexMap_f, subdivisionLastVertex_barycentricSubdivisionVertex] simp -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.SubdivisionBarycentricChains diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricHomotopy.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricHomotopy.lean index 96eea6b89d..a74dd196db 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricHomotopy.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricHomotopy.lean @@ -12,10 +12,13 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.BarycentricOuterFaces +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.BarycentricOuterFaces + +namespace OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy /-! This module is ported from Paul Lezeau's corresponding file in @@ -30,30 +33,31 @@ exact acyclic-model identity and constructs its natural degreewise operators on set. -/ -@[expose] public section +section noncomputable section -open CategoryTheory CategoryTheory.Limits PartialOrder Simplicial +open _root_.CategoryTheory _root_.CategoryTheory.Limits PartialOrder Simplicial -namespace AlgebraicTopology.Singular +section +section /-- The universal top-dimensional simplex of `Δ[n]`. -/ -public noncomputable def standardSimplexTopSimplex (n : ℕ) : +noncomputable def standardSimplexTopSimplex (n : ℕ) : (Δ[n] : SSet.{0}).obj (Opposite.op (SimplexCategory.mk n)) := SSet.stdSimplex.objEquiv.symm (𝟙 (SimplexCategory.mk n)) /-- On the universal simplex, subdivision followed by last vertex minus the identity. -/ -public noncomputable def standardBarycentricLastVertexDiscrepancy (n : ℕ) : +noncomputable def standardBarycentricLastVertexDiscrepancy (n : ℕ) : AddCommGrpCat.of ℤ ⟶ ((Δ[n] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X n := - barycentricSubdivisionSimplexChain (Δ[n] : SSet.{0}) n + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionSimplexChain (Δ[n] : SSet.{0}) n (standardSimplexTopSimplex n) ≫ - (subdivisionLastVertexChainMap (Δ[n] : SSet.{0})).f n - + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap (Δ[n] : SSet.{0})).f n - (Δ[n] : SSet.{0}).ιChainComplex (standardSimplexTopSimplex n) @[simp] -public theorem yonedaEquiv_symm_apply_standardSimplexTopSimplex +theorem yonedaEquiv_symm_apply_standardSimplexTopSimplex {X : SSet.{0}} (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk n))) : (SSet.yonedaEquiv.symm x).app _ (standardSimplexTopSimplex n) = x := by @@ -61,34 +65,34 @@ public theorem yonedaEquiv_symm_apply_standardSimplexTopSimplex simp /-- The discrepancy on an arbitrary simplex is the transport of the universal discrepancy. -/ -public theorem standardBarycentricLastVertexDiscrepancy_transport +theorem standardBarycentricLastVertexDiscrepancy_transport (X : SSet.{0}) (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk n))) : standardBarycentricLastVertexDiscrepancy n ≫ (SSet.chainComplexMap (SSet.yonedaEquiv.symm x) (AddCommGrpCat.of ℤ)).f n = - barycentricSubdivisionSimplexChain X n x ≫ - (subdivisionLastVertexChainMap X).f n - + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionSimplexChain X n x ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap X).f n - X.ιChainComplex x := by rw [standardBarycentricLastVertexDiscrepancy, Preadditive.sub_comp, Category.assoc] have hlast := congrArg (fun k ↦ k.f n) - (subdivisionLastVertexChainMap_naturality (SSet.yonedaEquiv.symm x)) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap_naturality (SSet.yonedaEquiv.symm x)) change (SSet.chainComplexMap (SSet.sd.map (SSet.yonedaEquiv.symm x)) - (AddCommGrpCat.of ℤ)).f n ≫ (subdivisionLastVertexChainMap X).f n = - (subdivisionLastVertexChainMap (Δ[n] : SSet.{0})).f n ≫ + (AddCommGrpCat.of ℤ)).f n ≫ (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap X).f n = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap (Δ[n] : SSet.{0})).f n ≫ (SSet.chainComplexMap (SSet.yonedaEquiv.symm x) (AddCommGrpCat.of ℤ)).f n at hlast - rw [← hlast, ← Category.assoc, ← barycentricSubdivisionSimplexChain_naturality, + rw [← hlast, ← Category.assoc, ← _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionSimplexChain_naturality, SSet.ι_chainComplexMap_f] - change barycentricSubdivisionSimplexChain X n + change _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionSimplexChain X n ((SSet.yonedaEquiv.symm x).app _ (standardSimplexTopSimplex n)) ≫ - (subdivisionLastVertexChainMap X).f n - + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap X).f n - X.ιChainComplex ((SSet.yonedaEquiv.symm x).app _ (standardSimplexTopSimplex n)) = _ rw [yonedaEquiv_symm_apply_standardSimplexTopSimplex] /-- The face contribution made by lower-dimensional prism chains. -/ -public noncomputable def standardPrismFaceChain +noncomputable def standardPrismFaceChain (prism : ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((Δ[n] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1)) (m : ℕ) : @@ -105,7 +109,7 @@ public noncomputable def standardPrismFaceChain /-- The smallest remaining acyclic-model datum. Its equation is the universal-simplex prism identity: discrepancy equals the prism boundary plus the transported prisms of all faces. -/ -public structure BarycentricLastVertexPrismData where +structure BarycentricLastVertexPrismData where /-- The universal degree-raising prism chain on each standard simplex. -/ prism : ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((Δ[n] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) @@ -118,7 +122,7 @@ public structure BarycentricLastVertexPrismData where standardPrismFaceChain prism n /-- Transport a universal prism chain along the simplex represented by `x`. -/ -public noncomputable def barycentricLastVertexPrismSimplexChain +noncomputable def barycentricLastVertexPrismSimplexChain (P : BarycentricLastVertexPrismData) (X : SSet.{0}) (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk n))) : AddCommGrpCat.of ℤ ⟶ @@ -128,14 +132,14 @@ public noncomputable def barycentricLastVertexPrismSimplexChain (AddCommGrpCat.of ℤ)).f (n + 1) /-- The degree-raising prism operator on the free integral simplicial chains of `X`. -/ -public noncomputable def barycentricLastVertexPrismComponent +noncomputable def barycentricLastVertexPrismComponent (P : BarycentricLastVertexPrismData) (X : SSet.{0}) (n : ℕ) : (X.chainComplex (AddCommGrpCat.of ℤ)).X n ⟶ (X.chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) := Sigma.desc (barycentricLastVertexPrismSimplexChain P X n) @[reassoc (attr := simp)] -public theorem iota_barycentricLastVertexPrismComponent +theorem iota_barycentricLastVertexPrismComponent (P : BarycentricLastVertexPrismData) (X : SSet.{0}) (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk n))) : X.ιChainComplex x ≫ barycentricLastVertexPrismComponent P X n = @@ -144,7 +148,7 @@ public theorem iota_barycentricLastVertexPrismComponent /-- Transporting the universal face-prism sum is the source differential followed by the lower-dimensional prism component. -/ -public theorem standardPrismFaceChain_transport_succ +theorem standardPrismFaceChain_transport_succ (P : BarycentricLastVertexPrismData) (X : SSet.{0}) (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk (n + 1)))) : standardPrismFaceChain P.prism (n + 1) ≫ @@ -184,11 +188,11 @@ public theorem standardPrismFaceChain_transport_succ _ = _ := congrArg (fun k ↦ P.prism n ≫ k) hn /-- The universal prism equation transported to a positive-dimensional simplex. -/ -public theorem barycentricLastVertexPrismSimplex_boundary_succ +theorem barycentricLastVertexPrismSimplex_boundary_succ (P : BarycentricLastVertexPrismData) (X : SSet.{0}) (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk (n + 1)))) : - barycentricSubdivisionSimplexChain X (n + 1) x ≫ - (subdivisionLastVertexChainMap X).f (n + 1) - + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionSimplexChain X (n + 1) x ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap X).f (n + 1) - X.ιChainComplex x = barycentricLastVertexPrismSimplexChain P X (n + 1) x ≫ (X.chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1) + @@ -205,11 +209,11 @@ public theorem barycentricLastVertexPrismSimplex_boundary_succ · exact standardPrismFaceChain_transport_succ P X n x /-- The degree-zero universal prism equation has no lower-dimensional face term. -/ -public theorem barycentricLastVertexPrismSimplex_boundary_zero +theorem barycentricLastVertexPrismSimplex_boundary_zero (P : BarycentricLastVertexPrismData) (X : SSet.{0}) (x : X.obj (Opposite.op (SimplexCategory.mk 0))) : - barycentricSubdivisionSimplexChain X 0 x ≫ - (subdivisionLastVertexChainMap X).f 0 - + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionSimplexChain X 0 x ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap X).f 0 - X.ιChainComplex x = barycentricLastVertexPrismSimplexChain P X 0 x ≫ (X.chainComplex (AddCommGrpCat.of ℤ)).d 1 0 := by @@ -222,10 +226,10 @@ public theorem barycentricLastVertexPrismSimplex_boundary_zero (AddCommGrpCat.of ℤ)).comm 1 0).symm /-- The transported prism operators satisfy the chain-homotopy equation in positive degrees. -/ -public theorem barycentricLastVertexPrismComponent_identity_succ +theorem barycentricLastVertexPrismComponent_identity_succ (P : BarycentricLastVertexPrismData) (X : SSet.{0}) (n : ℕ) : - (barycentricSubdivisionChainMapCanonical X ≫ - subdivisionLastVertexChainMap X).f (n + 1) = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical X ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap X).f (n + 1) = (X.chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n ≫ barycentricLastVertexPrismComponent P X n + barycentricLastVertexPrismComponent P X (n + 1) ≫ @@ -234,9 +238,9 @@ public theorem barycentricLastVertexPrismComponent_identity_succ apply X.chainComplex_hom_ext intro x change X.ιChainComplex x ≫ - (barycentricSubdivisionComponent X (n + 1) ≫ - (subdivisionLastVertexChainMap X).f (n + 1)) = _ - rw [← Category.assoc, iota_barycentricSubdivisionComponent] + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionComponent X (n + 1) ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap X).f (n + 1)) = _ + rw [← Category.assoc, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.iota_barycentricSubdivisionComponent] simp only [Preadditive.comp_add, Category.comp_id] simp only [← Category.assoc, iota_barycentricLastVertexPrismComponent] rw [← sub_eq_iff_eq_add] @@ -244,26 +248,26 @@ public theorem barycentricLastVertexPrismComponent_identity_succ barycentricLastVertexPrismSimplex_boundary_succ P X n x /-- The transported prism operator satisfies the chain-homotopy equation in degree zero. -/ -public theorem barycentricLastVertexPrismComponent_identity_zero +theorem barycentricLastVertexPrismComponent_identity_zero (P : BarycentricLastVertexPrismData) (X : SSet.{0}) : - (barycentricSubdivisionChainMapCanonical X ≫ - subdivisionLastVertexChainMap X).f 0 = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical X ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap X).f 0 = barycentricLastVertexPrismComponent P X 0 ≫ (X.chainComplex (AddCommGrpCat.of ℤ)).d 1 0 + 𝟙 ((X.chainComplex (AddCommGrpCat.of ℤ)).X 0) := by apply X.chainComplex_hom_ext intro x change X.ιChainComplex x ≫ - (barycentricSubdivisionComponent X 0 ≫ - (subdivisionLastVertexChainMap X).f 0) = _ - rw [← Category.assoc, iota_barycentricSubdivisionComponent] + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionComponent X 0 ≫ + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap X).f 0) = _ + rw [← Category.assoc, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.iota_barycentricSubdivisionComponent] simp only [Preadditive.comp_add, Category.comp_id] simp only [← Category.assoc, iota_barycentricLastVertexPrismComponent] rw [← sub_eq_iff_eq_add] exact barycentricLastVertexPrismSimplex_boundary_zero P X x /-- The homotopy family, supported exactly from degree `i` to degree `i+1`. -/ -public noncomputable def barycentricLastVertexPrismHom +noncomputable def barycentricLastVertexPrismHom (P : BarycentricLastVertexPrismData) (X : SSet.{0}) (i j : ℕ) : (X.chainComplex (AddCommGrpCat.of ℤ)).X i ⟶ @@ -274,18 +278,18 @@ public noncomputable def barycentricLastVertexPrismHom else 0 @[simp] -public theorem barycentricLastVertexPrismHom_succ +theorem barycentricLastVertexPrismHom_succ (P : BarycentricLastVertexPrismData) (X : SSet.{0}) (i : ℕ) : barycentricLastVertexPrismHom P X i (i + 1) = barycentricLastVertexPrismComponent P X i := by simp [barycentricLastVertexPrismHom] /-- A coherent family of universal simplex prisms produces the desired chain homotopy. -/ -public noncomputable def barycentricSubdivisionLastVertexHomotopy +noncomputable def barycentricSubdivisionLastVertexHomotopy (P : BarycentricLastVertexPrismData) (X : SSet.{0}) : Homotopy - (barycentricSubdivisionChainMapCanonical X ≫ - subdivisionLastVertexChainMap X) + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces.barycentricSubdivisionChainMapCanonical X ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBasic.subdivisionLastVertexChainMap X) (𝟙 (X.chainComplex (AddCommGrpCat.of ℤ))) where hom := barycentricLastVertexPrismHom P X zero i j hij := by @@ -311,4 +315,10 @@ public noncomputable def barycentricSubdivisionLastVertexHomotopy HomologicalComplex.id_f] exact barycentricLastVertexPrismComponent_identity_succ P X n -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.SubdivisionBarycentricHomotopy diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricOuterFaces.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricOuterFaces.lean index 0ca8ffbb86..d218193b2a 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricOuterFaces.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/BarycentricOuterFaces.lean @@ -12,13 +12,16 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.BarycentricAllDegrees +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Subdivision.BarycentricAllDegrees import Mathlib.Logic.Equiv.PartialEquiv +namespace OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces + /-! This module is ported from Paul Lezeau's corresponding file in `sphere-six-complex` pull request #49, under the Apache-2.0 license. @@ -30,23 +33,24 @@ vertex and the induced ordering of its complement. It completes the boundary ca therefore supplies the unconditional natural barycentric subdivision chain morphism. -/ -@[expose] public section +section noncomputable section -open CategoryTheory CategoryTheory.Limits PartialOrder Simplicial +open _root_.CategoryTheory _root_.CategoryTheory.Limits PartialOrder Simplicial -namespace AlgebraicTopology.Singular +section +section /-- `Finset.image` does not depend propositionally on the chosen decidable equality. -/ -public theorem finsetImage_decidableEq_independent +theorem finsetImage_decidableEq_independent {α β : Type*} (d₁ d₂ : DecidableEq β) (f : α → β) (s : Finset α) : @Finset.image α β d₁ f s = @Finset.image α β d₂ f s := by ext y simp only [Finset.mem_image] /-- Insert the omitted vertex `p` at the final position of an ordering of its complement. -/ -public noncomputable def insertOmittedVertexLast {n : ℕ} +noncomputable def insertOmittedVertexLast {n : ℕ} (p : Fin (n + 2)) (τ : Equiv.Perm (Fin (n + 1))) : Equiv.Perm (Fin (n + 2)) where toFun := Fin.lastCases p (fun k ↦ p.succAbove (τ k)) @@ -56,20 +60,20 @@ public noncomputable def insertOmittedVertexLast {n : ℕ} right_inv i := by refine Fin.succAboveCases p ?_ (fun k ↦ ?_) i <;> simp @[simp] -public theorem insertOmittedVertexLast_apply_last {n : ℕ} +theorem insertOmittedVertexLast_apply_last {n : ℕ} (p : Fin (n + 2)) (τ : Equiv.Perm (Fin (n + 1))) : insertOmittedVertexLast p τ (Fin.last (n + 1)) = p := by simp [insertOmittedVertexLast] @[simp] -public theorem insertOmittedVertexLast_apply_castSucc {n : ℕ} +theorem insertOmittedVertexLast_apply_castSucc {n : ℕ} (p : Fin (n + 2)) (τ : Equiv.Perm (Fin (n + 1))) (k : Fin (n + 1)) : insertOmittedVertexLast p τ k.castSucc = p.succAbove (τ k) := by simp [insertOmittedVertexLast] /-- Every permutation is uniquely an omitted final vertex together with an ordering of its complement. -/ -public noncomputable def insertOmittedVertexLastEquiv (n : ℕ) : +noncomputable def insertOmittedVertexLastEquiv (n : ℕ) : Fin (n + 2) × Equiv.Perm (Fin (n + 1)) ≃ Equiv.Perm (Fin (n + 2)) := Equiv.ofBijective (fun pτ ↦ insertOmittedVertexLast pτ.1 pτ.2) <| by @@ -86,7 +90,7 @@ public noncomputable def insertOmittedVertexLastEquiv (n : ℕ) : · simp [Fintype.card_prod, Fintype.card_perm, Nat.factorial_succ] @[simp] -public theorem insertOmittedVertexLastEquiv_apply +theorem insertOmittedVertexLastEquiv_apply (n : ℕ) (pτ : Fin (n + 2) × Equiv.Perm (Fin (n + 1))) : insertOmittedVertexLastEquiv n pτ = insertOmittedVertexLast pτ.1 pτ.2 := @@ -94,7 +98,7 @@ public theorem insertOmittedVertexLastEquiv_apply /-- The reindexing equivalence records the omitted final vertex in its first coordinate. -/ @[simp] -public theorem insertOmittedVertexLastEquiv_symm_fst +theorem insertOmittedVertexLastEquiv_symm_fst (n : ℕ) (σ : Equiv.Perm (Fin (n + 2))) : ((insertOmittedVertexLastEquiv n).symm σ).1 = σ (Fin.last (n + 1)) := by let pτ := (insertOmittedVertexLastEquiv n).symm σ @@ -104,7 +108,7 @@ public theorem insertOmittedVertexLastEquiv_symm_fst simpa only [insertOmittedVertexLast_apply_last] using hlast /-- `Fin.castSucc` identifies `Fin (n+1)` with all vertices except the last one. -/ -public def finCastSuccEquivNotLast (n : ℕ) : +def finCastSuccEquivNotLast (n : ℕ) : Fin (n + 1) ≃ {i : Fin (n + 2) // i ≠ Fin.last (n + 1)} where toFun i := ⟨i.castSucc, Fin.castSucc_lt_last i |>.ne⟩ invFun i := i.1.castPred i.2 @@ -112,7 +116,7 @@ public def finCastSuccEquivNotLast (n : ℕ) : right_inv i := Subtype.ext (Fin.castSucc_castPred i.1 i.2) /-- Inserting the last vertex last extends a permutation while fixing that vertex. -/ -public theorem insertOmittedVertexLast_last_eq_extendDomain +theorem insertOmittedVertexLast_last_eq_extendDomain {n : ℕ} (τ : Equiv.Perm (Fin (n + 1))) : insertOmittedVertexLast (Fin.last (n + 1)) τ = τ.extendDomain (finCastSuccEquivNotLast n) := by @@ -131,7 +135,7 @@ public theorem insertOmittedVertexLast_last_eq_extendDomain /-- Inserting `p` last factors into the order-preserving cycle from the last vertex to `p`, followed by extension of the complement ordering. -/ -public theorem insertOmittedVertexLast_eq_cycle_mul_extend {n : ℕ} +theorem insertOmittedVertexLast_eq_cycle_mul_extend {n : ℕ} (p : Fin (n + 2)) (τ : Equiv.Perm (Fin (n + 1))) : insertOmittedVertexLast p τ = p.cycleIcc (Fin.last (n + 1)) * @@ -149,64 +153,64 @@ public theorem insertOmittedVertexLast_eq_cycle_mul_extend {n : ℕ} (Fin.cycleIcc_comp_succAbove p (Fin.last (n + 1)) (Fin.le_last p)) (τ k)).symm /-- The sign of an ordering with omitted vertex `p` inserted last. -/ -public theorem permutationSignInteger_insertOmittedVertexLast {n : ℕ} +theorem permutationSignInteger_insertOmittedVertexLast {n : ℕ} (p : Fin (n + 2)) (τ : Equiv.Perm (Fin (n + 1))) : - permutationSignInteger (insertOmittedVertexLast p τ) = - (-1 : ℤ) ^ (n + 1 - p.val) * permutationSignInteger τ := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger (insertOmittedVertexLast p τ) = + (-1 : ℤ) ^ (n + 1 - p.val) * _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger τ := by rw [insertOmittedVertexLast_eq_cycle_mul_extend] - simp only [permutationSignInteger, Equiv.Perm.sign_mul, + simp only [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger, Equiv.Perm.sign_mul, Equiv.Perm.sign_extendDomain, Fin.sign_cycleIcc_of_le (Fin.le_last p), Fin.val_last] simp /-- Multiplying by the boundary sign of the final face leaves exactly the usual sign of the omitted vertex. -/ -public theorem outerFaceCoefficient_insertOmittedVertexLast {n : ℕ} +theorem outerFaceCoefficient_insertOmittedVertexLast {n : ℕ} (p : Fin (n + 2)) (τ : Equiv.Perm (Fin (n + 1))) : - permutationSignInteger (insertOmittedVertexLast p τ) * (-1 : ℤ) ^ (n + 1) = - (-1 : ℤ) ^ p.val * permutationSignInteger τ := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger (insertOmittedVertexLast p τ) * (-1 : ℤ) ^ (n + 1) = + (-1 : ℤ) ^ p.val * _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger τ := by rw [permutationSignInteger_insertOmittedVertexLast] have hp : p.val ≤ n + 1 := Nat.le_of_lt_succ p.isLt have hadd : n + 1 - p.val + p.val = n + 1 := Nat.sub_add_cancel hp nth_rewrite 2 [← hadd] rw [pow_add] calc - (-1 : ℤ) ^ (n + 1 - p.val) * permutationSignInteger τ * + (-1 : ℤ) ^ (n + 1 - p.val) * _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger τ * ((-1 : ℤ) ^ (n + 1 - p.val) * (-1 : ℤ) ^ p.val) = (((-1 : ℤ) ^ (n + 1 - p.val)) * ((-1 : ℤ) ^ (n + 1 - p.val))) * - ((-1 : ℤ) ^ p.val * permutationSignInteger τ) := by ring + ((-1 : ℤ) ^ p.val * _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger τ) := by ring _ = ((-1 : ℤ) * (-1 : ℤ)) ^ (n + 1 - p.val) * - ((-1 : ℤ) ^ p.val * permutationSignInteger τ) := by rw [mul_pow] + ((-1 : ℤ) ^ p.val * _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationSignInteger τ) := by rw [mul_pow] _ = _ := by norm_num /-- Deleting the final (full-set) prefix of an inserted ordering is the subdivided face obtained by omitting `p`. -/ -public theorem permutationMaximalFlagSimplex_outerFace_insert {n : ℕ} +theorem permutationMaximalFlagSimplex_outerFace_insert {n : ℕ} (p : Fin (n + 2)) (τ : Equiv.Perm (Fin (n + 1))) : (SimplexCategory.sd.{0}.obj (SimplexCategory.mk (n + 1))).δ (Fin.last (n + 1)) - (permutationMaximalFlagSimplex (insertOmittedVertexLast p τ)) = + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationMaximalFlagSimplex (insertOmittedVertexLast p τ)) = (SimplexCategory.sd.{0}.map (SimplexCategory.δ p)).app (Opposite.op (SimplexCategory.mk n)) - (permutationMaximalFlagSimplex τ) := by + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationMaximalFlagSimplex τ) := by refine ComposableArrows.ext (fun k ↦ ?_) (fun k hk ↦ ?_) - · change permutationPrefixChain (insertOmittedVertexLast p τ) + · change _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationPrefixChain (insertOmittedVertexLast p τ) ((Fin.last (n + 1)).succAbove k) = - (permutationPrefixChain τ k).map + (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationPrefixChain τ k).map (SimplexCategory.toPartOrd.{0}.map (SimplexCategory.δ p)).hom apply NonemptyFiniteChains.ext have hfinset : - permutationPrefixFinset (insertOmittedVertexLast p τ) + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationPrefixFinset (insertOmittedVertexLast p τ) ((Fin.last (n + 1)).succAbove k) = Finset.image (fun i : ULift.{0} (Fin (n + 1)) ↦ - ULift.up (p.succAbove i.down)) (permutationPrefixFinset τ k) := by + ULift.up (p.succAbove i.down)) (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationPrefixFinset τ k) := by rw [Fin.succAbove_last] - unfold permutationPrefixFinset + unfold _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationPrefixFinset rw [← Fin.finsetImage_castSucc_Iic k, Finset.image_image, Finset.image_image] apply Finset.image_congr intro a ha simp - unfold permutationPrefixChain nonemptyFiniteChainOfFinset NonemptyFiniteChains.map + unfold _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationPrefixChain _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricChains.nonemptyFiniteChainOfFinset NonemptyFiniteChains.map dsimp only have hmap (i : ULift.{0} (Fin (n + 1))) : (SimplexCategory.toPartOrd.{0}.map (SimplexCategory.δ p)).hom i = @@ -215,7 +219,7 @@ public theorem permutationMaximalFlagSimplex_outerFace_insert {n : ℕ} rfl calc _ = Finset.image (fun i : ULift.{0} (Fin (n + 1)) ↦ - ULift.up (p.succAbove i.down)) (permutationPrefixFinset τ k) := hfinset + ULift.up (p.succAbove i.down)) (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.permutationPrefixFinset τ k) := hfinset _ = _ := by rw [show (fun i : ULift.{0} (Fin (n + 1)) ↦ ULift.up (p.succAbove i.down)) = @@ -225,120 +229,126 @@ public theorem permutationMaximalFlagSimplex_outerFace_insert {n : ℕ} · apply Subsingleton.elim /-- The surviving outer faces reindex to the alternating sum of subdivided simplex faces. -/ -public theorem barycentricOuterFaceIdentity (n : ℕ) : - subdividedSimplexOuterFaceSum n = subdividedSimplexAlternatingFaceChain n := by - rw [subdividedSimplexOuterFaceSum, subdividedSimplexAlternatingFaceChain, +theorem barycentricOuterFaceIdentity (n : ℕ) : + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexOuterFaceSum n = _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexAlternatingFaceChain n := by + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexOuterFaceSum, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexAlternatingFaceChain, ← Equiv.sum_comp (insertOmittedVertexLastEquiv n), Fintype.sum_prod_type] simp only [insertOmittedVertexLastEquiv_apply, smul_smul, Fin.val_last, outerFaceCoefficient_insertOmittedVertexLast, permutationMaximalFlagSimplex_outerFace_insert] - simp_rw [subdividedSimplexFundamentalChain, Preadditive.sum_comp, + simp_rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain, Preadditive.sum_comp, Preadditive.zsmul_comp, Finset.smul_sum, SSet.ι_chainComplexMap_f] simp only [smul_smul] /-- The signed maximal-flag fundamental chains satisfy the complete alternating boundary identity in every degree: all interior faces cancel, and the surviving outer faces reindex by the previous theorem. -/ -public theorem barycentricFundamentalBoundaryIdentity (n : ℕ) : - subdividedSimplexFundamentalChain (n + 1) ≫ +theorem barycentricFundamentalBoundaryIdentity (n : ℕ) : + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain (n + 1) ≫ ((SimplexCategory.sd.{0}.obj (SimplexCategory.mk (n + 1))).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = - subdividedSimplexAlternatingFaceChain n := by - rw [subdividedSimplexFundamentalChain_boundary_eq_outer n] + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexAlternatingFaceChain n := by + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain_boundary_eq_outer n] exact barycentricOuterFaceIdentity n /-- The boundary identity transports to the left-Kan-extension standard simplices. -/ -public theorem subdividedStandardSimplexFundamentalChain_boundary (n : ℕ) : - subdividedStandardSimplexFundamentalChain (n + 1) ≫ +theorem subdividedStandardSimplexFundamentalChain_boundary (n : ℕ) : + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexFundamentalChain (n + 1) ≫ ((SSet.sd.obj (Δ[n + 1] : SSet.{0})).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = - subdividedStandardSimplexAlternatingFaceChain n := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexAlternatingFaceChain n := by let F := SSet.chainComplexMap (SSet.stdSimplex.sdIso.inv.app (SimplexCategory.mk (n + 1))) (AddCommGrpCat.of ℤ) - change (subdividedSimplexFundamentalChain (n + 1) ≫ F.f (n + 1)) ≫ _ = _ + change (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain (n + 1) ≫ F.f (n + 1)) ≫ _ = _ have hcomm := F.comm (n + 1) n have hpre := congrArg - (fun k ↦ subdividedSimplexFundamentalChain (n + 1) ≫ k) hcomm + (fun k ↦ _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain (n + 1) ≫ k) hcomm calc - _ = subdividedSimplexFundamentalChain (n + 1) ≫ + _ = _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain (n + 1) ≫ (F.f (n + 1) ≫ _) := Category.assoc _ _ _ - _ = subdividedSimplexFundamentalChain (n + 1) ≫ + _ = _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain (n + 1) ≫ (_ ≫ F.f n) := hpre - _ = (subdividedSimplexFundamentalChain (n + 1) ≫ + _ = (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexFundamentalChain (n + 1) ≫ ((SimplexCategory.sd.{0}.obj (SimplexCategory.mk (n + 1))).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n) ≫ F.f n := (Category.assoc _ _ _).symm - _ = subdividedSimplexAlternatingFaceChain n ≫ F.f n := by + _ = _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexAlternatingFaceChain n ≫ F.f n := by rw [barycentricFundamentalBoundaryIdentity n] _ = _ := by - rw [subdividedSimplexAlternatingFaceChain, Preadditive.sum_comp] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedSimplexAlternatingFaceChain, Preadditive.sum_comp] simp only [Preadditive.zsmul_comp, Category.assoc] - rw [subdividedStandardSimplexAlternatingFaceChain] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexAlternatingFaceChain] apply Finset.sum_congr rfl intro i hi - rw [subdividedStandardSimplexFundamentalChain, Category.assoc, - subdividedStandardSimplexFace_naturality] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexFundamentalChain, Category.assoc, + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexFace_naturality] /-- The subdivided chain of an arbitrary simplex has the expected alternating boundary. -/ -public theorem barycentricSubdivisionSimplexChain_boundary +theorem barycentricSubdivisionSimplexChain_boundary (X : SSet.{0}) (n : ℕ) (x : X.obj (Opposite.op (SimplexCategory.mk (n + 1)))) : - barycentricSubdivisionSimplexChain X (n + 1) x ≫ + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionSimplexChain X (n + 1) x ≫ ((SSet.sd.obj X).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = - barycentricSubdivisionAlternatingFaceChain X n x := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionAlternatingFaceChain X n x := by let F := SSet.chainComplexMap (SSet.sd.map (SSet.yonedaEquiv.symm x)) (AddCommGrpCat.of ℤ) - change (subdividedStandardSimplexFundamentalChain (n + 1) ≫ F.f (n + 1)) ≫ + change (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexFundamentalChain (n + 1) ≫ F.f (n + 1)) ≫ _ = _ have hcomm := F.comm (n + 1) n have hpre := congrArg - (fun k ↦ subdividedStandardSimplexFundamentalChain (n + 1) ≫ k) hcomm + (fun k ↦ _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexFundamentalChain (n + 1) ≫ k) hcomm calc - _ = subdividedStandardSimplexFundamentalChain (n + 1) ≫ + _ = _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexFundamentalChain (n + 1) ≫ (F.f (n + 1) ≫ _) := Category.assoc _ _ _ - _ = subdividedStandardSimplexFundamentalChain (n + 1) ≫ + _ = _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexFundamentalChain (n + 1) ≫ (_ ≫ F.f n) := hpre - _ = (subdividedStandardSimplexFundamentalChain (n + 1) ≫ + _ = (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexFundamentalChain (n + 1) ≫ ((SSet.sd.obj (Δ[n + 1] : SSet.{0})).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n) ≫ F.f n := (Category.assoc _ _ _).symm - _ = subdividedStandardSimplexAlternatingFaceChain n ≫ F.f n := by + _ = _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexAlternatingFaceChain n ≫ F.f n := by rw [subdividedStandardSimplexFundamentalChain_boundary n] _ = _ := by - rw [subdividedStandardSimplexAlternatingFaceChain, Preadditive.sum_comp] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedStandardSimplexAlternatingFaceChain, Preadditive.sum_comp] simp only [Preadditive.zsmul_comp, Category.assoc] - rw [barycentricSubdivisionAlternatingFaceChain] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionAlternatingFaceChain] apply Finset.sum_congr rfl intro i hi - rw [barycentricSubdivisionSimplexChain] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionSimplexChain] apply congrArg (fun k ↦ ((-1 : ℤ) ^ i.val) • k) - rw [subdividedFace_then_simplex_naturality] + rw [_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.subdividedFace_then_simplex_naturality] /-- The degreewise barycentric subdivision components commute with the differentials. -/ -public theorem barycentricSubdivisionComponent_comp_d (X : SSet.{0}) (n : ℕ) : - barycentricSubdivisionComponent X (n + 1) ≫ +theorem barycentricSubdivisionComponent_comp_d (X : SSet.{0}) (n : ℕ) : + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionComponent X (n + 1) ≫ ((SSet.sd.obj X).chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n = (X.chainComplex (AddCommGrpCat.of ℤ)).d (n + 1) n ≫ - barycentricSubdivisionComponent X n := by + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionComponent X n := by apply X.chainComplex_hom_ext intro x - rw [← Category.assoc, iota_barycentricSubdivisionComponent, + rw [← Category.assoc, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.iota_barycentricSubdivisionComponent, barycentricSubdivisionSimplexChain_boundary] rw [← Category.assoc, SSet.ιChainComplex_d, Preadditive.sum_comp] - simp only [Preadditive.zsmul_comp, iota_barycentricSubdivisionComponent] + simp only [Preadditive.zsmul_comp, _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.iota_barycentricSubdivisionComponent] rfl /-- The unconditional natural barycentric subdivision chain morphism. -/ -public noncomputable def barycentricSubdivisionChainMapCanonical (X : SSet.{0}) : +noncomputable def barycentricSubdivisionChainMapCanonical (X : SSet.{0}) : X.chainComplex (AddCommGrpCat.of ℤ) ⟶ (SSet.sd.obj X).chainComplex (AddCommGrpCat.of ℤ) := - ChainComplex.ofHom (barycentricSubdivisionComponent X) + ChainComplex.ofHom (_root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionComponent X) (barycentricSubdivisionComponent_comp_d X) @[simp] -public theorem barycentricSubdivisionChainMapCanonical_f +theorem barycentricSubdivisionChainMapCanonical_f (X : SSet.{0}) (n : ℕ) : (barycentricSubdivisionChainMapCanonical X).f n = - barycentricSubdivisionComponent X n := + _root_.OAI.AlgebraicTopology.Singular.SubdivisionBarycentricAllDegrees.barycentricSubdivisionComponent X n := rfl -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.SubdivisionBarycentricOuterFaces diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/Basic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/Basic.lean index d557b6a055..c1403f0fbb 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/Basic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/Subdivision/Basic.lean @@ -12,11 +12,14 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmall -public import Mathlib.AlgebraicTopology.SimplicialSet.Subdivision +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmall +import Mathlib.AlgebraicTopology.SimplicialSet.Subdivision + +namespace OAI.AlgebraicTopology.Singular.SubdivisionBasic /-! This module is ported from Paul Lezeau's corresponding file in @@ -31,30 +34,31 @@ monotone and natural in monotone maps between finite linear orders, so taking ne last-vertex map on the subdivided standard simplices. -/ -@[expose] public section +section noncomputable section -open CategoryTheory PartialOrder +open _root_.CategoryTheory PartialOrder -namespace AlgebraicTopology.Singular +section +section universe u /-- A nonempty finite chain in a linear order is sent monotonically to its greatest element. -/ -public noncomputable def nonemptyFiniteChainMaximum (X : Type*) [LinearOrder X] : +noncomputable def nonemptyFiniteChainMaximum (X : Type*) [LinearOrder X] : NonemptyFiniteChains X →o X where toFun A := A.finset.max' A.nonempty monotone' A _ h := Finset.max'_subset A.nonempty h @[simp] -public theorem nonemptyFiniteChainMaximum_apply +theorem nonemptyFiniteChainMaximum_apply {X : Type*} [LinearOrder X] (A : NonemptyFiniteChains X) : nonemptyFiniteChainMaximum X A = A.finset.max' A.nonempty := rfl /-- Taking the maximum commutes with a monotone map between finite linear orders. -/ -public theorem nonemptyFiniteChainMaximum_map +theorem nonemptyFiniteChainMaximum_map {X Y : Type*} [LinearOrder X] [LinearOrder Y] (f : X →o Y) (A : NonemptyFiniteChains X) : nonemptyFiniteChainMaximum Y (A.map f) = f (nonemptyFiniteChainMaximum X A) := by @@ -69,14 +73,14 @@ public theorem nonemptyFiniteChainMaximum_map ⟨A.finset.max' A.nonempty, A.finset.max'_mem A.nonempty, rfl⟩ /-- The maximum-vertex morphism from chains in the vertex poset of a standard simplex. -/ -public noncomputable def simplexSubdivisionMaximum (n : SimplexCategory) : +noncomputable def simplexSubdivisionMaximum (n : SimplexCategory) : (SimplexCategory.toPartOrd.{u} ⋙ PartOrd.nonemptyFiniteChainsFunctor).obj n ⟶ SimplexCategory.toPartOrd.{u}.obj n := PartOrd.ofHom (nonemptyFiniteChainMaximum (ULift.{u} (Fin (n.len + 1)))) /-- Maximum vertex is natural in morphisms of the simplex category. -/ -public noncomputable def simplexSubdivisionMaximumNatTrans : +noncomputable def simplexSubdivisionMaximumNatTrans : SimplexCategory.toPartOrd.{u} ⋙ PartOrd.nonemptyFiniteChainsFunctor ⟶ SimplexCategory.toPartOrd.{u} where app := simplexSubdivisionMaximum @@ -94,51 +98,51 @@ public noncomputable def simplexSubdivisionMaximumNatTrans : /-- The objectwise identification of the standard simplex with the nerve of its vertex order is natural in the simplex category. -/ -public noncomputable def standardSimplexNerveIso : +noncomputable def standardSimplexNerveIso : SSet.stdSimplex.{u} ≅ SimplexCategory.toPartOrd.{u} ⋙ PartOrd.nerveFunctor := NatIso.ofComponents (fun n ↦ SSet.stdSimplex.isoNerve n.len) fun _ ↦ rfl /-- The last-vertex map from the subdivision model of standard simplices to standard simplices. -/ -public noncomputable def simplexSubdivisionLastVertex : +noncomputable def simplexSubdivisionLastVertex : SimplexCategory.sd.{u} ⟶ SSet.stdSimplex.{u} := Functor.whiskerRight simplexSubdivisionMaximumNatTrans PartOrd.nerveFunctor ≫ standardSimplexNerveIso.inv /-- The last-vertex map, viewed with the codomain required by the left Kan extension universal property. -/ -public noncomputable def simplexSubdivisionLastVertexExtension : +noncomputable def simplexSubdivisionLastVertexExtension : SimplexCategory.sd.{u} ⟶ SSet.stdSimplex.{u} ⋙ Functor.id SSet.{u} := - simplexSubdivisionLastVertex.{u} ≫ + simplexSubdivisionLastVertex ≫ (Functor.rightUnitor SSet.stdSimplex.{u}).inv /-- The global last-vertex natural transformation `sd X ⟶ X`, obtained from the defining left Kan extension universal property of simplicial subdivision. -/ -public noncomputable def subdivisionLastVertex : +noncomputable def subdivisionLastVertex : SSet.sd.{u} ⟶ Functor.id SSet.{u} := SSet.sd.descOfIsLeftKanExtension SSet.stdSimplex.sdIso.inv (Functor.id SSet.{u}) - simplexSubdivisionLastVertexExtension.{u} + simplexSubdivisionLastVertexExtension /-- On subdivided standard simplices, the global last-vertex map restricts to the maximum-vertex construction above. -/ -public theorem subdivisionLastVertex_standardSimplex (n : SimplexCategory) : +theorem subdivisionLastVertex_standardSimplex (n : SimplexCategory) : SSet.stdSimplex.sdIso.inv.app n ≫ (subdivisionLastVertex.{u}.app (SSet.stdSimplex.obj n)) = simplexSubdivisionLastVertex.{u}.app n := SSet.sd.descOfIsLeftKanExtension_fac_app SSet.stdSimplex.sdIso.inv - (Functor.id SSet.{u}) simplexSubdivisionLastVertexExtension.{u} n + (Functor.id SSet.{u}) simplexSubdivisionLastVertexExtension n /-- The chain map induced by the last-vertex map of a simplicial set. -/ -public noncomputable def subdivisionLastVertexChainMap (X : SSet.{0}) : +noncomputable def subdivisionLastVertexChainMap (X : SSet.{0}) : (SSet.sd.obj X).chainComplex (AddCommGrpCat.of ℤ) ⟶ X.chainComplex (AddCommGrpCat.of ℤ) := SSet.chainComplexMap (subdivisionLastVertex.app X) (AddCommGrpCat.of ℤ) /-- The last-vertex chain maps are natural in the simplicial set. -/ @[reassoc] -public theorem subdivisionLastVertexChainMap_naturality +theorem subdivisionLastVertexChainMap_naturality {X Y : SSet.{0}} (f : X ⟶ Y) : SSet.chainComplexMap (SSet.sd.map f) (AddCommGrpCat.of ℤ) ≫ subdivisionLastVertexChainMap Y = @@ -155,4 +159,10 @@ public theorem subdivisionLastVertexChainMap_naturality rw [← Functor.map_comp, ← Functor.map_comp, subdivisionLastVertex.naturality] rfl -end AlgebraicTopology.Singular +end +end + +end +end + +end OAI.AlgebraicTopology.Singular.SubdivisionBasic diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/SubsetChains.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/SubsetChains.lean index 8bc06b7833..86973999b1 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/SubsetChains.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Singular/SubsetChains.lean @@ -12,12 +12,15 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric +import HodgeConjecture.Mathlib.Geometry.Convex.StdSimplexMetric + +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmall -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Excision.CoverSmall +namespace OAI.AlgebraicTopology.Singular.SubsetChains /-! # Singular chains of a subspace @@ -32,12 +35,13 @@ Degreewise, the resulting lift retracts the integral chain inclusion of the subs inclusion is a split monomorphism in every degree and is therefore cancellable on the left. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits +open _root_.CategoryTheory _root_.CategoryTheory.Limits open scoped Simplicial -namespace AlgebraicTopology.Singular +section +section /-- A singular simplex factors through a subspace exactly when its topological image is contained in that subspace. -/ @@ -45,7 +49,7 @@ lemma singularSimplex_mem_range_subset (X : TopCat.{0}) (s : Set X) {n : SimplexCategoryᵒᵖ} (x : (TopCat.toSSet.obj X).obj n) : x ∈ (SSet.Subcomplex.range - (TopCat.toSSet.map (topologicalSubsetInclusion X s))).obj n ↔ + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X s))).obj n ↔ Set.range (X.toSSetObjEquiv n x) ⊆ s := by constructor · rintro ⟨y, rfl⟩ _ ⟨t, rfl⟩ @@ -93,15 +97,15 @@ lemma singularSimplicialMapLiftToSubset_comp_inclusion (hf : ∀ (n : SimplexCategoryᵒᵖ) (x : X.obj n), Set.range (Y.toSSetObjEquiv n (f.app n x)) ⊆ s) : singularSimplicialMapLiftToSubset X Y s f hf ≫ - TopCat.toSSet.map (topologicalSubsetInclusion Y s) = f := rfl + TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion Y s) = f := rfl /-- Maps into a topological subspace are equal when their composites with the subspace inclusion are equal. -/ lemma singularSimplicialMapToSubset_ext (X : SSet.{0}) (Y : TopCat.{0}) (s : Set Y) (f g : X ⟶ TopCat.toSSet.obj (TopCat.of s)) - (h : f ≫ TopCat.toSSet.map (topologicalSubsetInclusion Y s) = - g ≫ TopCat.toSSet.map (topologicalSubsetInclusion Y s)) : f = g := by + (h : f ≫ TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion Y s) = + g ≫ TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion Y s)) : f = g := by ext n x apply ((TopCat.of s).toSSetObjEquiv n).injective apply ContinuousMap.ext @@ -126,7 +130,7 @@ lemma singularSimplexLiftToSubset_comp_inclusion (X : TopCat.{0}) (s : Set X) {n : SimplexCategoryᵒᵖ} (x : (TopCat.toSSet.obj X).obj n) (hx : Set.range (X.toSSetObjEquiv n x) ⊆ s) : - (TopCat.toSSet.map (topologicalSubsetInclusion X s)).app n + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X s)).app n (singularSimplexLiftToSubset X s x hx) = x := rfl open scoped Classical in @@ -149,7 +153,7 @@ set_option backward.isDefEq.respectTransparency false in lemma singularSubsetIntegralChainInclusion_comp_retraction (X : TopCat.{0}) (s : Set X) (n : ℕ) : (SSet.chainComplexMap - (TopCat.toSSet.map (topologicalSubsetInclusion X s)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X s)) (AddCommGrpCat.of ℤ)).f n ≫ singularSubsetIntegralChainRetractionComponent X s n = 𝟙 _ := by apply (TopCat.toSSet.obj (TopCat.of s)).chainComplex_hom_ext @@ -157,10 +161,10 @@ lemma singularSubsetIntegralChainInclusion_comp_retraction rw [← Category.assoc, SSet.ι_chainComplexMap_f] change ((TopCat.toSSet.obj X).chainComplexXCofan (AddCommGrpCat.of ℤ) n).inj - ((TopCat.toSSet.map (topologicalSubsetInclusion X s)).app _ x) ≫ + ((TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X s)).app _ x) ≫ singularSubsetIntegralChainRetractionComponent X s n = _ have hx : Set.range (X.toSSetObjEquiv _ - ((TopCat.toSSet.map (topologicalSubsetInclusion X s)).app _ x)) ⊆ s := by + ((TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X s)).app _ x)) ⊆ s := by rintro _ ⟨t, rfl⟩ exact ((TopCat.of s).toSSetObjEquiv _ x t).2 simp [singularSubsetIntegralChainRetractionComponent, hx] @@ -171,12 +175,12 @@ singular chains. -/ lemma singularSubsetIntegralChainInclusionComponent_mono (X : TopCat.{0}) (s : Set X) (n : ℕ) : Mono ((SSet.chainComplexMap - (TopCat.toSSet.map (topologicalSubsetInclusion X s)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X s)) (AddCommGrpCat.of ℤ)).f n) := by constructor intro Z f g h let inc := (SSet.chainComplexMap - (TopCat.toSSet.map (topologicalSubsetInclusion X s)) + (TopCat.toSSet.map (_root_.OAI.AlgebraicTopology.Singular.ExcisionCoverSmall.topologicalSubsetInclusion X s)) (AddCommGrpCat.of ℤ)).f n let ret := singularSubsetIntegralChainRetractionComponent X s n have hret : inc ≫ ret = 𝟙 _ := @@ -186,4 +190,9 @@ lemma singularSubsetIntegralChainInclusionComponent_mono _ = (g ≫ inc) ≫ ret := by rw [h] _ = g := by rw [Category.assoc, hret, Category.comp_id] -end AlgebraicTopology.Singular +end +end + +end + +end OAI.AlgebraicTopology.Singular.SubsetChains diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/CohomologyFlasqueModel.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/CohomologyFlasqueModel.lean index e137282dce..292f6333a6 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/CohomologyFlasqueModel.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/CohomologyFlasqueModel.lean @@ -12,14 +12,20 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.CohomologyFlasqueModel -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.CohomologyInjectiveModel +import HodgeConjecture.Definitions.AlgebraicTopology.Support.CohomologyFlasqueModel +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.CohomologyInjectiveModel import HodgeConjecture.Mathlib.Algebra.Homology.Notation +namespace OAI.AlgebraicTopology.Support.CohomologyFlasqueRestrict + +open _root_.TopCat +open _root_.TopCat.Sheaf + /-! # Naturality of the flasque model in the pair @@ -27,11 +33,15 @@ The identification `H^n(V, V ⊓ U; F) ≃ H^n(Γ_{X ∖ U}(V, K))` commutes wit with support enlargement followed by restriction. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Abelian Opposite TopologicalSpace +open _root_.CategoryTheory Limits Abelian Opposite _root_.TopologicalSpace -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{0}) @@ -39,17 +49,17 @@ variable {U V U' V' : Opens X} (hU : U' ≤ U) (hV : V' ≤ V) lemma supportedSectionsRestriction_naturality {K L : CochainComplex (Sheaf AddCommGrpCat X) ℤ} (φ : K ⟶ L) : - supportedSectionsRestriction X hU hV K ≫ - ((supportEvaluation X V').mapHomologicalComplex ℤᵘᵖ).map - (((sheafSectionsSupportedOutside X U').mapHomologicalComplex ℤᵘᵖ).map φ) = - ((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map - (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map φ) ≫ - supportedSectionsRestriction X hU hV L := by - have h1 := (NatTrans.mapHomologicalComplex (supportEvaluationRestriction X (homOfLE hV)) - ℤᵘᵖ).naturality (((sheafSectionsSupportedOutside X U').mapHomologicalComplex ℤᵘᵖ).map φ) - have h2 := (NatTrans.mapHomologicalComplex (sheafSectionsSupportedOutsideMap X hU) + _root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction X hU hV K ≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V').mapHomologicalComplex ℤᵘᵖ).map + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U').mapHomologicalComplex ℤᵘᵖ).map φ) = + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map φ) ≫ + _root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction X hU hV L := by + have h1 := (NatTrans.mapHomologicalComplex (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportEvaluationRestriction X (homOfLE hV)) + ℤᵘᵖ).naturality (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U').mapHomologicalComplex ℤᵘᵖ).map φ) + have h2 := (NatTrans.mapHomologicalComplex (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.sheafSectionsSupportedOutsideMap X hU) ℤᵘᵖ).naturality φ - dsimp only [supportedSectionsRestriction, sectionComplexRestriction] + dsimp only [_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction, _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction] simp only [Category.assoc] rw [← h1] simp only [← Category.assoc] @@ -71,62 +81,65 @@ set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in /-- The flasque model is natural in the pair. -/ theorem relHAddEquivSupportedSectionsHomologyOfFlasque_restrict (n : ℕ) - (x : CategoryTheory.Sheaf.relH F n (homOfLE (hW ▸ inf_le_left : W ≤ V))) : - relHAddEquivSupportedSectionsHomologyOfFlasque X F K ι U' V' W' hW' hK n - (CategoryTheory.Sheaf.relH.restrict F _ _ (homOfLE hWW) (homOfLE hV) + (x : _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH F n (homOfLE (hW ▸ inf_le_left : W ≤ V))) : + _root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.relHAddEquivSupportedSectionsHomologyOfFlasque X F K ι U' V' W' hW' hK n + (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH.restrict F _ _ (homOfLE hWW) (homOfLE hV) (Subsingleton.elim _ _) n x) = - HomologicalComplex.homologyMap (supportedSectionsRestriction X hU hV K) n - (relHAddEquivSupportedSectionsHomologyOfFlasque X F K ι U V W hW hK n x) := by - have := supportedSections_map_resolutionToInjective_quasiIso X F K ι U V hK - have := supportedSections_map_resolutionToInjective_quasiIso X F K ι U' V' hK - have hnat : HomologicalComplex.homologyMap (supportedSectionsRestriction X hU hV K) n ≫ - HomologicalComplex.homologyMap (((supportEvaluation X V').mapHomologicalComplex ℤᵘᵖ).map - (((sheafSectionsSupportedOutside X U').mapHomologicalComplex ℤᵘᵖ).map - (resolutionToInjective X F K ι))) n = - HomologicalComplex.homologyMap (((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map - (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map - (resolutionToInjective X F K ι))) n ≫ + HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction X hU hV K) n + (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.relHAddEquivSupportedSectionsHomologyOfFlasque X F K ι U V W hW hK n x) := by + have := _root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.supportedSections_map_resolutionToInjective_quasiIso X F K ι U V hK + have := _root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.supportedSections_map_resolutionToInjective_quasiIso X F K ι U' V' hK + have hnat : HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction X hU hV K) n ≫ + HomologicalComplex.homologyMap (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V').mapHomologicalComplex ℤᵘᵖ).map + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U').mapHomologicalComplex ℤᵘᵖ).map + (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.resolutionToInjective X F K ι))) n = + HomologicalComplex.homologyMap (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map + (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.resolutionToInjective X F K ι))) n ≫ HomologicalComplex.homologyMap - (supportedSectionsRestriction X hU hV (injectiveResolutionComplex X F)) n := by + (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction X hU hV (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.injectiveResolutionComplex X F)) n := by rw [← HomologicalComplex.homologyMap_comp, ← HomologicalComplex.homologyMap_comp, supportedSectionsRestriction_naturality] have hinv : inv (HomologicalComplex.homologyMap - (((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map - (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map - (resolutionToInjective X F K ι))) n) ≫ - HomologicalComplex.homologyMap (supportedSectionsRestriction X hU hV K) n = + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map + (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.resolutionToInjective X F K ι))) n) ≫ + HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction X hU hV K) n = HomologicalComplex.homologyMap - (supportedSectionsRestriction X hU hV (injectiveResolutionComplex X F)) n ≫ + (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction X hU hV (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.injectiveResolutionComplex X F)) n ≫ inv (HomologicalComplex.homologyMap - (((supportEvaluation X V').mapHomologicalComplex ℤᵘᵖ).map - (((sheafSectionsSupportedOutside X U').mapHomologicalComplex ℤᵘᵖ).map - (resolutionToInjective X F K ι))) n) := by + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V').mapHomologicalComplex ℤᵘᵖ).map + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U').mapHomologicalComplex ℤᵘᵖ).map + (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.resolutionToInjective X F K ι))) n) := by rw [IsIso.inv_comp_eq, ← Category.assoc, ← hnat, Category.assoc, IsIso.hom_inv_id, Category.comp_id] - have hF (z : (((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj - (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj - (injectiveResolutionComplex X F))).homology n) : + have hF (z : (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.injectiveResolutionComplex X F))).homology n) : (inv (HomologicalComplex.homologyMap - (((supportEvaluation X V').mapHomologicalComplex ℤᵘᵖ).map - (((sheafSectionsSupportedOutside X U').mapHomologicalComplex ℤᵘᵖ).map - (resolutionToInjective X F K ι))) n)).hom + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V').mapHomologicalComplex ℤᵘᵖ).map + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U').mapHomologicalComplex ℤᵘᵖ).map + (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.resolutionToInjective X F K ι))) n)).hom ((HomologicalComplex.homologyMap - (supportedSectionsRestriction X hU hV (injectiveResolutionComplex X F)) n).hom z) = - (HomologicalComplex.homologyMap (supportedSectionsRestriction X hU hV K) n).hom + (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction X hU hV (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.injectiveResolutionComplex X F)) n).hom z) = + (HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction X hU hV K) n).hom ((inv (HomologicalComplex.homologyMap - (((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map - (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map - (resolutionToInjective X F K ι))) n)).hom z) := by + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map + (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.resolutionToInjective X F K ι))) n)).hom z) := by have := congrArg AddCommGrpCat.Hom.hom hinv rw [AddCommGrpCat.hom_comp, AddCommGrpCat.hom_comp] at this exact (DFunLike.congr_fun this z).symm - dsimp only [relHAddEquivSupportedSectionsHomologyOfFlasque, AddEquiv.trans_apply] - rw [@relHAddEquivSupportedSectionsHomology_restrict X U V W U' V' W' hW hW' hU hV hWW _ F - (injectiveResolutionComplex X F) (injectiveResolutionComplex_isKInjective X F) - (injectiveResolutionAugmentation X F) (injectiveResolutionAugmentation_quasiIso X F) n x, + dsimp only [_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.relHAddEquivSupportedSectionsHomologyOfFlasque, AddEquiv.trans_apply] + rw [@_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveRestrict.TopCat.Sheaf.relHAddEquivSupportedSectionsHomology_restrict X U V W U' V' W' hW hW' hU hV hWW _ F + (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.injectiveResolutionComplex X F) (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.injectiveResolutionComplex_isKInjective X F) + (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.injectiveResolutionAugmentation X F) (_root_.OAI.AlgebraicTopology.Support.CohomologyFlasqueModel.TopCat.Sheaf.injectiveResolutionAugmentation_quasiIso X F) n x, Iso.addCommGroupIsoToAddEquiv_apply, Iso.addCommGroupIsoToAddEquiv_apply, Iso.symm_hom, Iso.symm_hom, asIso_inv, asIso_inv, hF] -end TopCat.Sheaf +end Sheaf +end TopCat end + +end OAI.AlgebraicTopology.Support.CohomologyFlasqueRestrict diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/CohomologyInjectiveModel.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/CohomologyInjectiveModel.lean index 3cd1c4ce0c..8b9ea7e9ce 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/CohomologyInjectiveModel.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/CohomologyInjectiveModel.lean @@ -12,13 +12,19 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.CohomologyInjectiveModel +import HodgeConjecture.Definitions.AlgebraicTopology.Support.CohomologyInjectiveModel import HodgeConjecture.Mathlib.Algebra.Homology.Notation +namespace OAI.AlgebraicTopology.Support.CohomologyInjectiveRestrict + +open _root_.TopCat +open _root_.TopCat.Sheaf + /-! # Naturality of the injective model in the pair @@ -27,11 +33,15 @@ with the map of pairs on the left and with support enlargement followed by restr right. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Abelian Opposite TopologicalSpace +open _root_.CategoryTheory Limits Abelian Opposite _root_.TopologicalSpace -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{0}) @@ -43,54 +53,54 @@ variable {U V W U' V' W' : Opens X} (hW : V ⊓ U = W) (hW' : V' ⊓ U' = W') (hU : U' ≤ U) (hV : V' ≤ V) (hWW : W' ≤ W) lemma pairSheafHomEvaluation_restrict (G : Sheaf AddCommGrpCat X) : - (preadditiveCoyoneda.map (CategoryTheory.Sheaf.pairSheafMap + (preadditiveCoyoneda.map (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.pairSheafMap (homOfLE (hW ▸ inf_le_left : W ≤ V)) (homOfLE (hW' ▸ inf_le_left : W' ≤ V')) (homOfLE hWW) (homOfLE hV) (Subsingleton.elim _ _)).op).app G ≫ - pairSheafHomEvaluation X U' V' W' hW' G = - pairSheafHomEvaluation X U V W hW G ≫ G.obj.map (homOfLE hV).op := by + _root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.pairSheafHomEvaluation X U' V' W' hW' G = + _root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.pairSheafHomEvaluation X U V W hW G ≫ G.obj.map (homOfLE hV).op := by apply AddCommGrpCat.hom_ext refine AddMonoidHom.ext (fun φ => ?_) - exact CategoryTheory.Sheaf.pairSheafHomAddEquiv_pairSheafMap_comp + exact _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.pairSheafHomAddEquiv_pairSheafMap_comp (homOfLE (hW ▸ inf_le_left : W ≤ V)) (homOfLE (hW' ▸ inf_le_left : W' ≤ V')) (homOfLE hWW) (homOfLE hV) (Subsingleton.elim _ _) G φ lemma pairSheafHomIsoSupportedSections_restrict (G : Sheaf AddCommGrpCat X) : - (preadditiveCoyoneda.map (CategoryTheory.Sheaf.pairSheafMap + (preadditiveCoyoneda.map (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.pairSheafMap (homOfLE (hW ▸ inf_le_left : W ≤ V)) (homOfLE (hW' ▸ inf_le_left : W' ≤ V')) (homOfLE hWW) (homOfLE hV) (Subsingleton.elim _ _)).op).app G ≫ - (pairSheafHomIsoSupportedSections X U' V' W' hW' G).hom = - (pairSheafHomIsoSupportedSections X U V W hW G).hom ≫ - ((sheafSectionsSupportedOutsideMap X hU).app G).hom.app (op V) ≫ - ((sheafSectionsSupportedOutside X U').obj G).obj.map (homOfLE hV).op := by - apply (cancel_mono (((sheafSectionsSupportedOutsideInclusion X U').app G).hom.app (op V'))).1 - have h1 : ((sheafSectionsSupportedOutside X U').obj G).obj.map (homOfLE hV).op ≫ - ((sheafSectionsSupportedOutsideInclusion X U').app G).hom.app (op V') = - ((sheafSectionsSupportedOutsideInclusion X U').app G).hom.app (op V) ≫ + (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.pairSheafHomIsoSupportedSections X U' V' W' hW' G).hom = + (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.pairSheafHomIsoSupportedSections X U V W hW G).hom ≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.sheafSectionsSupportedOutsideMap X hU).app G).hom.app (op V) ≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U').obj G).obj.map (homOfLE hV).op := by + apply (cancel_mono (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U').app G).hom.app (op V'))).1 + have h1 : ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U').obj G).obj.map (homOfLE hV).op ≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U').app G).hom.app (op V') = + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U').app G).hom.app (op V) ≫ G.obj.map (homOfLE hV).op := - ((sheafSectionsSupportedOutsideInclusion X U').app G).hom.naturality (homOfLE hV).op - have h2 : ((sheafSectionsSupportedOutsideMap X hU).app G).hom.app (op V) ≫ - ((sheafSectionsSupportedOutsideInclusion X U').app G).hom.app (op V) = - ((sheafSectionsSupportedOutsideInclusion X U).app G).hom.app (op V) := by - change (((sheafSectionsSupportedOutsideMap X hU).app G ≫ - (sheafSectionsSupportedOutsideInclusion X U').app G).hom.app (op V)) = _ - rw [← NatTrans.comp_app, sheafSectionsSupportedOutsideMap_inclusion] - rw [Category.assoc, pairSheafHomIsoSupportedSections_hom_inclusion, + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U').app G).hom.naturality (homOfLE hV).op + have h2 : ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.sheafSectionsSupportedOutsideMap X hU).app G).hom.app (op V) ≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U').app G).hom.app (op V) = + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app G).hom.app (op V) := by + change (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.sheafSectionsSupportedOutsideMap X hU).app G ≫ + (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U').app G).hom.app (op V)) = _ + rw [← NatTrans.comp_app, _root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.sheafSectionsSupportedOutsideMap_inclusion] + rw [Category.assoc, _root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.pairSheafHomIsoSupportedSections_hom_inclusion, pairSheafHomEvaluation_restrict X hW hW' hV hWW, Category.assoc, Category.assoc, h1, - ← Category.assoc (((sheafSectionsSupportedOutsideMap X hU).app G).hom.app (op V)), h2, - ← Category.assoc, pairSheafHomIsoSupportedSections_hom_inclusion] + ← Category.assoc (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.sheafSectionsSupportedOutsideMap X hU).app G).hom.app (op V)), h2, + ← Category.assoc, _root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.pairSheafHomIsoSupportedSections_hom_inclusion] lemma homComplexPairSheafIsoSupportedSections_restrict (K : CochainComplex (CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat) ℤ) : - CochainComplex.HomComplex.precompMap ((CochainComplex.singleFunctor _ 0).map - (CategoryTheory.Sheaf.pairSheafMap + _root_.OAI.Algebra.Homology.HomComplexPrecomp.CochainComplex.HomComplex.precompMap ((CochainComplex.singleFunctor _ 0).map + (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.pairSheafMap (homOfLE (hW ▸ inf_le_left : W ≤ V)) (homOfLE (hW' ▸ inf_le_left : W' ≤ V')) (homOfLE hWW) (homOfLE hV) (Subsingleton.elim _ _))) K ≫ - (homComplexPairSheafIsoSupportedSections X U' V' W' hW' K).hom = - (homComplexPairSheafIsoSupportedSections X U V W hW K).hom ≫ - supportedSectionsRestriction X hU hV K := by - dsimp only [homComplexPairSheafIsoSupportedSections, Iso.trans_hom] + (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.homComplexPairSheafIsoSupportedSections X U' V' W' hW' K).hom = + (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.homComplexPairSheafIsoSupportedSections X U V W hW K).hom ≫ + _root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction X hU hV K := by + dsimp only [_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.homComplexPairSheafIsoSupportedSections, Iso.trans_hom] rw [← Category.assoc, - CochainComplex.HomComplex.precompMap_single_fromSingleZeroIsoPreadditiveCoyoneda, + _root_.OAI.Algebra.Homology.HomComplexPrecomp.CochainComplex.HomComplex.precompMap_single_fromSingleZeroIsoPreadditiveCoyoneda, Category.assoc, Category.assoc] congr 1 refine HomologicalComplex.hom_ext _ _ (fun n => ?_) @@ -110,72 +120,75 @@ theorem relHAddEquivSupportedSectionsHomology_restrict (F : CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat) (I : CochainComplex (CategoryTheory.Sheaf (Opens.grothendieckTopology X) AddCommGrpCat) ℤ) [I.IsKInjective] (ι : (CochainComplex.singleFunctor _ 0).obj F ⟶ I) [QuasiIso ι] (n : ℕ) - (x : CategoryTheory.Sheaf.relH F n (homOfLE (hW ▸ inf_le_left : W ≤ V))) : - relHAddEquivSupportedSectionsHomology X U' V' W' hW' F I ι n - (CategoryTheory.Sheaf.relH.restrict F _ _ (homOfLE hWW) (homOfLE hV) + (x : _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH F n (homOfLE (hW ▸ inf_le_left : W ≤ V))) : + _root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.relHAddEquivSupportedSectionsHomology X U' V' W' hW' F I ι n + (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH.restrict F _ _ (homOfLE hWW) (homOfLE hV) (Subsingleton.elim _ _) n x) = - HomologicalComplex.homologyMap (supportedSectionsRestriction X hU hV I) n - (relHAddEquivSupportedSectionsHomology X U V W hW F I ι n x) := by - obtain ⟨g, hg⟩ : ∃ g : pairSheaf' X U' V' W' hW' ⟶ pairSheaf' X U V W hW, - g = CategoryTheory.Sheaf.pairSheafMap + HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction X hU hV I) n + (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.relHAddEquivSupportedSectionsHomology X U V W hW F I ι n x) := by + obtain ⟨g, hg⟩ : ∃ g : _root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.pairSheaf' X U' V' W' hW' ⟶ _root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.pairSheaf' X U V W hW, + g = _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.pairSheafMap (homOfLE (hW ▸ inf_le_left : W ≤ V)) (homOfLE (hW' ▸ inf_le_left : W' ≤ V')) (homOfLE hWW) (homOfLE hV) (Subsingleton.elim _ _) := ⟨_, rfl⟩ - have hA : Ext.homAddEquiv (CategoryTheory.Sheaf.relH.restrict F + have hA : Ext.homAddEquiv (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH.restrict F (homOfLE (hW ▸ inf_le_left : W ≤ V)) (homOfLE (hW' ▸ inf_le_left : W' ≤ V')) (homOfLE hWW) (homOfLE hV) (Subsingleton.elim _ _) n x) = DerivedCategory.Q.map ((CochainComplex.singleFunctor _ 0).map g) ≫ Ext.homAddEquiv x := by rw [hg] - simp only [CategoryTheory.Sheaf.relH.restrict, Ext.homAddEquiv_apply, + simp only [_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH.restrict, Ext.homAddEquiv_apply, Ext.bilinearComp_apply_apply, Ext.comp_hom, Ext.mk₀_hom, ShiftedHom.mk₀_comp] rfl have hB (y : ShiftedHom - (DerivedCategory.Q.obj ((CochainComplex.singleFunctor _ 0).obj (pairSheaf' X U V W hW))) + (DerivedCategory.Q.obj ((CochainComplex.singleFunctor _ 0).obj (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.pairSheaf' X U V W hW))) (DerivedCategory.Q.obj ((CochainComplex.singleFunctor _ 0).obj F)) (n : ℤ)) : - isoHomCongrAddEquiv (Iso.refl (DerivedCategory.Q.obj - ((CochainComplex.singleFunctor _ 0).obj (pairSheaf' X U' V' W' hW')))) + _root_.OAI.Algebra.Homology.DerivedCategoryInjectiveHom.CategoryTheory.isoHomCongrAddEquiv (Iso.refl (DerivedCategory.Q.obj + ((CochainComplex.singleFunctor _ 0).obj (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.pairSheaf' X U' V' W' hW')))) ((shiftFunctor _ (n : ℤ)).mapIso (asIso (DerivedCategory.Q.map ι))) (DerivedCategory.Q.map ((CochainComplex.singleFunctor _ 0).map g) ≫ y) = DerivedCategory.Q.map ((CochainComplex.singleFunctor _ 0).map g) ≫ - isoHomCongrAddEquiv (Iso.refl (DerivedCategory.Q.obj - ((CochainComplex.singleFunctor _ 0).obj (pairSheaf' X U V W hW)))) + _root_.OAI.Algebra.Homology.DerivedCategoryInjectiveHom.CategoryTheory.isoHomCongrAddEquiv (Iso.refl (DerivedCategory.Q.obj + ((CochainComplex.singleFunctor _ 0).obj (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.pairSheaf' X U V W hW)))) ((shiftFunctor _ (n : ℤ)).mapIso (asIso (DerivedCategory.Q.map ι))) y := by - simp [isoHomCongrAddEquiv_apply] + simp [_root_.OAI.Algebra.Homology.DerivedCategoryInjectiveHom.CategoryTheory.isoHomCongrAddEquiv_apply] have hD (c : CochainComplex.HomComplex.CohomologyClass - ((CochainComplex.singleFunctor _ 0).obj (pairSheaf' X U V W hW)) I n) : + ((CochainComplex.singleFunctor _ 0).obj (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.pairSheaf' X U V W hW)) I n) : (CochainComplex.HomComplex.homologyAddEquiv _ I n).symm - (CochainComplex.HomComplex.precompClass ((CochainComplex.singleFunctor _ 0).map g) I n c) = - HomologicalComplex.homologyMap (CochainComplex.HomComplex.precompMap + (_root_.OAI.Algebra.Homology.HomComplexPrecomp.CochainComplex.HomComplex.precompClass ((CochainComplex.singleFunctor _ 0).map g) I n c) = + HomologicalComplex.homologyMap (_root_.OAI.Algebra.Homology.HomComplexPrecomp.CochainComplex.HomComplex.precompMap ((CochainComplex.singleFunctor _ 0).map g) I) n ((CochainComplex.HomComplex.homologyAddEquiv _ I n).symm c) := by apply (CochainComplex.HomComplex.homologyAddEquiv _ I n).injective - rw [CochainComplex.HomComplex.homologyAddEquiv_precompMap, AddEquiv.apply_symm_apply, + rw [_root_.OAI.Algebra.Homology.HomComplexPrecomp.CochainComplex.HomComplex.homologyAddEquiv_precompMap, AddEquiv.apply_symm_apply, AddEquiv.apply_symm_apply] - have hE : HomologicalComplex.homologyMap (CochainComplex.HomComplex.precompMap + have hE : HomologicalComplex.homologyMap (_root_.OAI.Algebra.Homology.HomComplexPrecomp.CochainComplex.HomComplex.precompMap ((CochainComplex.singleFunctor _ 0).map g) I) n ≫ - HomologicalComplex.homologyMap (homComplexPairSheafIsoSupportedSections X U' V' W' hW' I).hom n = - HomologicalComplex.homologyMap (homComplexPairSheafIsoSupportedSections X U V W hW I).hom n ≫ - HomologicalComplex.homologyMap (supportedSectionsRestriction X hU hV I) n := by + HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.homComplexPairSheafIsoSupportedSections X U' V' W' hW' I).hom n = + HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.homComplexPairSheafIsoSupportedSections X U V W hW I).hom n ≫ + HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction X hU hV I) n := by rw [← HomologicalComplex.homologyMap_comp, ← HomologicalComplex.homologyMap_comp, hg, homComplexPairSheafIsoSupportedSections_restrict X hW hW' hU hV hWW I] have hF (z : (CochainComplex.HomComplex - ((CochainComplex.singleFunctor _ 0).obj (pairSheaf' X U V W hW)) I).homology n) : - (HomologicalComplex.homologyMap (homComplexPairSheafIsoSupportedSections X U' V' W' hW' I).hom - n).hom ((HomologicalComplex.homologyMap (CochainComplex.HomComplex.precompMap + ((CochainComplex.singleFunctor _ 0).obj (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.pairSheaf' X U V W hW)) I).homology n) : + (HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.homComplexPairSheafIsoSupportedSections X U' V' W' hW' I).hom + n).hom ((HomologicalComplex.homologyMap (_root_.OAI.Algebra.Homology.HomComplexPrecomp.CochainComplex.HomComplex.precompMap ((CochainComplex.singleFunctor _ 0).map g) I) n).hom z) = - (HomologicalComplex.homologyMap (supportedSectionsRestriction X hU hV I) n).hom - ((HomologicalComplex.homologyMap (homComplexPairSheafIsoSupportedSections X U V W hW I).hom + (HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.supportedSectionsRestriction X hU hV I) n).hom + ((HomologicalComplex.homologyMap (_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.homComplexPairSheafIsoSupportedSections X U V W hW I).hom n).hom z) := by have := congrArg AddCommGrpCat.Hom.hom hE rw [AddCommGrpCat.hom_comp, AddCommGrpCat.hom_comp] at this exact DFunLike.congr_fun this z - dsimp only [relHAddEquivSupportedSectionsHomology, AddEquiv.trans_apply] + dsimp only [_root_.OAI.AlgebraicTopology.Support.CohomologyInjectiveModel.TopCat.Sheaf.relHAddEquivSupportedSectionsHomology, AddEquiv.trans_apply] rw [hA] erw [hB] - rw [CochainComplex.kInjectiveDerivedHomAddEquivCohomologyClass_precomp, hD] + rw [_root_.OAI.Algebra.Homology.DerivedCategoryInjectiveHom.CochainComplex.kInjectiveDerivedHomAddEquivCohomologyClass_precomp, hD] rw [Iso.addCommGroupIsoToAddEquiv_apply, Iso.addCommGroupIsoToAddEquiv_apply, HomologicalComplex.homologyMapIso_hom, HomologicalComplex.homologyMapIso_hom, hF] rfl -end TopCat.Sheaf +end Sheaf +end TopCat end + +end OAI.AlgebraicTopology.Support.CohomologyInjectiveRestrict diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSections.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSections.lean index 446b0a007d..a29c47b53b 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSections.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSections.lean @@ -1,15 +1,21 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.DerivedSections -public import Mathlib.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlus -public import Mathlib.CategoryTheory.Abelian.GrothendieckCategory.EnoughInjectives -public import Mathlib.Topology.Sheaves.Abelian -public import Mathlib.Topology.Sheaves.Functors -public import Mathlib.Topology.Sets.Closeds +import HodgeConjecture.Definitions.AlgebraicTopology.Support.DerivedSections +import Mathlib.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlus +import Mathlib.CategoryTheory.Abelian.GrothendieckCategory.EnoughInjectives +import Mathlib.Topology.Sheaves.Abelian +import Mathlib.Topology.Sheaves.Functors +import Mathlib.Topology.Sets.Closeds + +namespace OAI.AlgebraicTopology.Support.DerivedSectionsOn + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Concrete sheaf sections with support and their right derived functor @@ -20,29 +26,38 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +noncomputable section +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) @[reassoc (attr := simp)] lemma sheafSectionsSupportedOutsideInclusion_restriction (U : Opens X) (F : Sheaf AddCommGrpCat.{u} X) : - (sheafSectionsSupportedOutsideInclusion X U).app F ≫ - (toOpenRestrictionPushforward X U).app F = 0 := + (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F ≫ + (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F = 0 := kernel.condition _ -end TopCat.Sheaf +end Sheaf +end TopCat end -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) @@ -51,16 +66,16 @@ groups whose restriction to `U` is zero. This is the unique factorization of `f` subsheaf of `G` consisting of sections supported in `X \ U`. -/ def liftSheafSectionsSupportedOutside (U : Opens X) {F G : Sheaf AddCommGrpCat.{u} X} (f : F ⟶ G) - (hf : f ≫ (toOpenRestrictionPushforward X U).app G = 0) : - F ⟶ (sheafSectionsSupportedOutside X U).obj G := + (hf : f ≫ (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app G = 0) : + F ⟶ (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).obj G := kernel.lift _ f hf @[reassoc (attr := simp)] lemma liftSheafSectionsSupportedOutside_inclusion (U : Opens X) {F G : Sheaf AddCommGrpCat.{u} X} (f : F ⟶ G) - (hf : f ≫ (toOpenRestrictionPushforward X U).app G = 0) : + (hf : f ≫ (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app G = 0) : liftSheafSectionsSupportedOutside X U f hf ≫ - (sheafSectionsSupportedOutsideInclusion X U).app G = f := + (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app G = f := kernel.lift_ι _ _ _ /-- Let `X` be a topological space, `U,V ⊆ X` open, and `F` a sheaf of abelian groups. This @@ -68,8 +83,8 @@ identifies sections on `V` of the subsheaf supported in `X \ U` with `ker(F(V) where the map is restriction. -/ def sheafSectionsSupportedOutsideOnOpenIso (U V : Opens X) (F : Sheaf AddCommGrpCat.{u} X) : - ((sheafSectionsSupportedOutside X U).obj F).presheaf.obj (op V) ≅ - kernel (((toOpenRestrictionPushforward X U).app F).hom.app (op V)) := + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).obj F).presheaf.obj (op V) ≅ + kernel (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F).hom.app (op V)) := let ev : Sheaf AddCommGrpCat.{u} X ⥤ AddCommGrpCat.{u} := sheafToPresheaf (Opens.grothendieckTopology X) AddCommGrpCat ⋙ (evaluation _ AddCommGrpCat).obj (op V) @@ -78,7 +93,7 @@ def sheafSectionsSupportedOutsideOnOpenIso (U V : Opens X) comp_preservesLimitsOfShape (sheafToPresheaf (Opens.grothendieckTopology X) AddCommGrpCat.{u}) ((evaluation (Opens X)ᵒᵖ AddCommGrpCat.{u}).obj (op V)) - PreservesKernel.iso ev ((toOpenRestrictionPushforward X U).app F) + PreservesKernel.iso ev ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F) /-- The kernel comparison preserves the inclusion of supported sections into all sections. -/ @@ -86,8 +101,8 @@ into all sections. -/ lemma sheafSectionsSupportedOutsideOnOpenIso_hom_ι (U V : Opens X) (F : Sheaf AddCommGrpCat.{u} X) : (sheafSectionsSupportedOutsideOnOpenIso X U V F).hom ≫ - kernel.ι (((toOpenRestrictionPushforward X U).app F).hom.app (op V)) = - ((sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V) := by + kernel.ι (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F).hom.app (op V)) = + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V) := by let ev : Sheaf AddCommGrpCat.{u} X ⥤ AddCommGrpCat.{u} := sheafToPresheaf (Opens.grothendieckTopology X) AddCommGrpCat ⋙ (evaluation _ AddCommGrpCat).obj (op V) @@ -96,19 +111,19 @@ lemma sheafSectionsSupportedOutsideOnOpenIso_hom_ι (U V : Opens X) comp_preservesLimitsOfShape (sheafToPresheaf (Opens.grothendieckTopology X) AddCommGrpCat.{u}) ((evaluation (Opens X)ᵒᵖ AddCommGrpCat.{u}).obj (op V)) - change (PreservesKernel.iso ev ((toOpenRestrictionPushforward X U).app F)).hom ≫ + change (PreservesKernel.iso ev ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F)).hom ≫ _ = _ - exact kernelComparison_comp_ι ((toOpenRestrictionPushforward X U).app F) ev + exact kernelComparison_comp_ι ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F) ev /-- Let `X` be a topological space and `Z ⊆ X` closed. This functor sends a sheaf of abelian groups `F` to the subsheaf `Γ_Z(F)` whose sections on `V` are those elements of `F(V)` that vanish on `V \ Z`. It is the kernel of restriction to the direct image from `X \ Z`. -/ def sheafSectionsWithClosedSupport (Z : Closeds X) : Sheaf AddCommGrpCat.{u} X ⥤ Sheaf AddCommGrpCat.{u} X := - sheafSectionsSupportedOutside X Z.compl + _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X Z.compl instance (Z : Closeds X) : (sheafSectionsWithClosedSupport X Z).Additive := - inferInstanceAs (sheafSectionsSupportedOutside X Z.compl).Additive + inferInstanceAs (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X Z.compl).Additive /-- Let `X` be a topological space and `Z ⊆ X` closed. This functor sends a sheaf of abelian groups `F` to `Γ_Z(X,F) = ker(F(X) → F(X \ Z))`, the group of global sections whose support is @@ -125,9 +140,9 @@ instance (Z : Closeds X) : (closedSupportSections X Z).Additive where (sheafSectionsWithClosedSupport X Z).obj G => h.hom.app (op ⊤)) ((sheafSectionsWithClosedSupport X Z).map_add (f := f) (g := g)) -attribute [local instance] supportSheafHasDerivedCategory +attribute [local instance] _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.supportSheafHasDerivedCategory -attribute [local instance] supportGroupsHasDerivedCategory +attribute [local instance] _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.supportGroupsHasDerivedCategory /-- Let `X` be a topological space and `Z ⊆ X` closed. This right derived functor on bounded-below complexes of sheaves of abelian groups replaces a complex by an injective resolution and then @@ -185,6 +200,9 @@ instance derivedClosedSupportSections_isRightDerivedFunctor (Z : Closeds X) : dsimp only [derivedClosedSupportSections, derivedClosedSupportSectionsUnit] infer_instance -end TopCat.Sheaf +end Sheaf +end TopCat end + +end OAI.AlgebraicTopology.Support.DerivedSectionsOn diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSectionsLocalization.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSectionsLocalization.lean index df812b1e28..cfd81aa5df 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSectionsLocalization.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSectionsLocalization.lean @@ -1,10 +1,16 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.DerivedSectionsLocalization +import HodgeConjecture.Definitions.AlgebraicTopology.Support.DerivedSectionsLocalization + +namespace OAI.AlgebraicTopology.Support.DerivedSectionsExact + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # The localization sequence on injective coefficient complexes @@ -15,13 +21,17 @@ Lemmas about the definitions in /-! ### Constructions used only in proofs -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) (U : Opens X) @@ -30,16 +40,16 @@ sequence `Γ_{X \ U}(F) → F → j_*(F|_U)`, where `j : U → X` is inclusion. sections vanishing on `U` and restrict to `U`. -/ def supportRestrictionShortComplex (F : Sheaf AddCommGrpCat.{u} X) : ShortComplex (Sheaf AddCommGrpCat.{u} X) := - ShortComplex.mk ((sheafSectionsSupportedOutsideInclusion X U).app F) - ((toOpenRestrictionPushforward X U).app F) - (sheafSectionsSupportedOutsideInclusion_restriction X U F) + ShortComplex.mk ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F) + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F) + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion_restriction X U F) /-- Let `U,V` be open in a topological space `X` and `F` a sheaf of abelian groups. This sequence takes sections on `V` of `Γ_{X \ U}(F) → F → j_*(F|_U)`. Under the intersection identification it is `ker(F(V) → F(V ∩ U)) → F(V) → F(V ∩ U)`. -/ def supportRestrictionSectionsShortComplex (V : Opens X) (F : Sheaf AddCommGrpCat.{u} X) : ShortComplex AddCommGrpCat.{u} := - (supportRestrictionShortComplex X U F).map (supportEvaluation X V) + (supportRestrictionShortComplex X U F).map (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V) set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in @@ -49,19 +59,22 @@ private lemma supportRestrictionSectionsShortComplex_shortExact (V : Opens X) (F : Sheaf AddCommGrpCat.{u} X) [Injective F] : (supportRestrictionSectionsShortComplex X U V F).ShortExact where exact := ShortComplex.exact_of_f_is_kernel _ - (KernelFork.mapIsLimit _ (kernelIsKernel _) (supportEvaluation X V)) + (KernelFork.mapIsLimit _ (kernelIsKernel _) (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V)) mono_f := mono_of_isLimit_fork - (KernelFork.mapIsLimit _ (kernelIsKernel _) (supportEvaluation X V)) - epi_g := toOpenRestrictionPushforward_app_epi X U F V + (KernelFork.mapIsLimit _ (kernelIsKernel _) (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V)) + epi_g := _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.toOpenRestrictionPushforward_app_epi X U F V /-- The support/restriction sequence is short exact even after taking sections on an arbitrary open set, for a termwise injective coefficient complex. -/ lemma supportRestrictionSectionsComplexShortComplex_shortExact (V : Opens X) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) [∀ n, Injective (K.X n)] : - (supportRestrictionSectionsComplexShortComplex X U V K).ShortExact := + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex X U V K).ShortExact := HomologicalComplex.shortExact_of_degreewise_shortExact _ fun n => supportRestrictionSectionsShortComplex_shortExact X U V (K.X n) -end TopCat.Sheaf +end Sheaf +end TopCat end + +end OAI.AlgebraicTopology.Support.DerivedSectionsExact diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSectionsNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSectionsNaturality.lean index 1a73e2cd51..f68b0c8100 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSectionsNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSectionsNaturality.lean @@ -1,11 +1,17 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsShift -public import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlusShiftNaturality +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsShift +import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlusShiftNaturality + +namespace OAI.AlgebraicTopology.Support.DerivedSectionsNaturality + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Naturality of derived sections with closed support @@ -14,21 +20,25 @@ Support enlargement comes from the kernel inclusion, and is then derived by the universal property. In particular, forgetting support is the map to whole-space support. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) /-- The support-forgetting inclusion is the kernel monomorphism. -/ instance sheafSectionsSupportedOutsideInclusion_mono (U : Opens X) (F : Sheaf AddCommGrpCat.{u} X) : - Mono ((sheafSectionsSupportedOutsideInclusion X U).app F) := - inferInstanceAs (Mono (kernel.ι ((toOpenRestrictionPushforward X U).app F))) + Mono ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F) := + inferInstanceAs (Mono (kernel.ι ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F))) /-- The ambient open used when restricting to `U` and pushing forward again. -/ abbrev openRestrictionImage (U W : Opens X) : Opens X := @@ -43,7 +53,7 @@ theorem openRestrictionImage_mono {U V : Opens X} (h : V ≤ U) (W : Opens X) : restriction to `U` to direct image of restriction to `V` acts on a sheaf `F` and open `W` by `F(W ∩ U) → F(W ∩ V)`. -/ def openRestrictionPushforwardMap {U V : Opens X} (h : V ≤ U) : - openRestrictionPushforward X U ⟶ openRestrictionPushforward X V where + _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X U ⟶ _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X V where app F := ⟨{ app W := F.obj.map (homOfLE (openRestrictionImage_mono X h W.unop)).op naturality W W' f := by @@ -58,8 +68,8 @@ def openRestrictionPushforwardMap {U V : Opens X} (h : V ≤ U) : /-- Further restriction agrees with direct restriction from the ambient sheaf. -/ @[reassoc (attr := simp)] theorem toOpenRestrictionPushforward_comp {U V : Opens X} (h : V ≤ U) : - toOpenRestrictionPushforward X U ≫ openRestrictionPushforwardMap X h = - toOpenRestrictionPushforward X V := by + _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U ≫ openRestrictionPushforwardMap X h = + _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X V := by ext F : 2 apply CategoryTheory.Sheaf.hom_ext_iff.mpr ext W : 2 @@ -70,32 +80,32 @@ theorem toOpenRestrictionPushforward_comp {U V : Opens X} (h : V ≤ U) : /-- The canonical inclusion of sections supported outside `U` into those supported outside the smaller open `V`. -/ def sheafSectionsSupportedOutsideMap {U V : Opens X} (h : V ≤ U) : - sheafSectionsSupportedOutside X U ⟶ sheafSectionsSupportedOutside X V where - app F := liftSheafSectionsSupportedOutside X V - ((sheafSectionsSupportedOutsideInclusion X U).app F) (by + _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U ⟶ _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X V where + app F := _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.liftSheafSectionsSupportedOutside X V + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F) (by rw [← NatTrans.congr_app (toOpenRestrictionPushforward_comp X h) F] simp only [NatTrans.comp_app, ← Category.assoc, - sheafSectionsSupportedOutsideInclusion_restriction, zero_comp]) + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion_restriction, zero_comp]) naturality F G f := by - apply (cancel_mono ((sheafSectionsSupportedOutsideInclusion X V).app G)).1 - simp only [Category.assoc, liftSheafSectionsSupportedOutside_inclusion] - rw [(sheafSectionsSupportedOutsideInclusion X V).naturality f, - ← Category.assoc, liftSheafSectionsSupportedOutside_inclusion] - exact (sheafSectionsSupportedOutsideInclusion X U).naturality f + apply (cancel_mono ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X V).app G)).1 + simp only [Category.assoc, _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.liftSheafSectionsSupportedOutside_inclusion] + rw [(_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X V).naturality f, + ← Category.assoc, _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.liftSheafSectionsSupportedOutside_inclusion] + exact (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).naturality f /-- Support enlargement preserves the inclusion into the coefficient sheaf. -/ @[reassoc (attr := simp)] theorem sheafSectionsSupportedOutsideMap_inclusion {U V : Opens X} (h : V ≤ U) : - sheafSectionsSupportedOutsideMap X h ≫ sheafSectionsSupportedOutsideInclusion X V = - sheafSectionsSupportedOutsideInclusion X U := by + sheafSectionsSupportedOutsideMap X h ≫ _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X V = + _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U := by ext F - exact liftSheafSectionsSupportedOutside_inclusion X V _ _ + exact _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.liftSheafSectionsSupportedOutside_inclusion X V _ _ @[simp] theorem sheafSectionsSupportedOutsideMap_refl (U : Opens X) : - sheafSectionsSupportedOutsideMap X (le_refl U) = 𝟙 (sheafSectionsSupportedOutside X U) := by + sheafSectionsSupportedOutsideMap X (le_refl U) = 𝟙 (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U) := by ext F - apply (cancel_mono ((sheafSectionsSupportedOutsideInclusion X U).app F)).1 + apply (cancel_mono ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F)).1 simp [sheafSectionsSupportedOutsideMap] @[reassoc (attr := simp)] @@ -104,26 +114,26 @@ theorem sheafSectionsSupportedOutsideMap_comp {U V W : Opens X} sheafSectionsSupportedOutsideMap X h ≫ sheafSectionsSupportedOutsideMap X h' = sheafSectionsSupportedOutsideMap X (h'.trans h) := by ext F - apply (cancel_mono ((sheafSectionsSupportedOutsideInclusion X W).app F)).1 + apply (cancel_mono ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X W).app F)).1 simp [sheafSectionsSupportedOutsideMap] /-- The coefficient-level support-enlargement map for closed subsets. -/ def sheafSectionsWithClosedSupportMap {Z W : Closeds X} (h : Z ≤ W) : - sheafSectionsWithClosedSupport X Z ⟶ sheafSectionsWithClosedSupport X W := + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsWithClosedSupport X Z ⟶ _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsWithClosedSupport X W := sheafSectionsSupportedOutsideMap X (show W.compl ≤ Z.compl from fun _ hx hz ↦ hx (h hz)) /-- Let `Z ⊆ W` be closed subsets of a topological space `X`. This natural transformation includes the group of global sections of a sheaf of abelian groups supported in `Z` into the group of those supported in `W`. -/ def closedSupportSectionsMap {Z W : Closeds X} (h : Z ≤ W) : - closedSupportSections X Z ⟶ closedSupportSections X W := + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.closedSupportSections X Z ⟶ _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.closedSupportSections X W := Functor.whiskerRight (sheafSectionsWithClosedSupportMap X h) (sheafToPresheaf (Opens.grothendieckTopology X) AddCommGrpCat ⋙ (evaluation _ AddCommGrpCat).obj (op ⊤)) @[simp] theorem closedSupportSectionsMap_refl (Z : Closeds X) : - closedSupportSectionsMap X (le_refl Z) = 𝟙 (closedSupportSections X Z) := by + closedSupportSectionsMap X (le_refl Z) = 𝟙 (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.closedSupportSections X Z) := by simp [closedSupportSectionsMap, sheafSectionsWithClosedSupportMap] rfl @@ -145,19 +155,19 @@ local instance derivedSupportNaturalityGroupDerivedCategory : RΓ_W(X,-)` on bounded-below sheaf complexes is obtained by applying inclusion of supported global sections to an injective resolution. -/ def derivedClosedSupportSectionsMap {Z W : Closeds X} (h : Z ≤ W) : - derivedClosedSupportSections X Z ⟶ derivedClosedSupportSections X W := - (closedSupportSectionsMap X h).rightDerivedFunctorPlus + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.derivedClosedSupportSections X Z ⟶ _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.derivedClosedSupportSections X W := + (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus (closedSupportSectionsMap X h)) /-- The support-enlargement maps commute with the coherent shifts. -/ instance derivedClosedSupportSectionsMap_commShift {Z W : Closeds X} (h : Z ≤ W) : NatTrans.CommShift (derivedClosedSupportSectionsMap X h) ℤ := - inferInstanceAs (NatTrans.CommShift (closedSupportSectionsMap X h).rightDerivedFunctorPlus ℤ) + inferInstanceAs (NatTrans.CommShift (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus (closedSupportSectionsMap X h)) ℤ) @[simp] theorem derivedClosedSupportSectionsMap_refl (Z : Closeds X) : derivedClosedSupportSectionsMap X (le_refl Z) = - 𝟙 (derivedClosedSupportSections X Z) := by - simp [derivedClosedSupportSectionsMap, derivedClosedSupportSections] + 𝟙 (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.derivedClosedSupportSections X Z) := by + simp [derivedClosedSupportSectionsMap, _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.derivedClosedSupportSections] set_option backward.isDefEq.respectTransparency false in @[reassoc (attr := simp)] @@ -165,17 +175,22 @@ theorem derivedClosedSupportSectionsMap_comp {Z W T : Closeds X} (h : Z ≤ W) (h' : W ≤ T) : derivedClosedSupportSectionsMap X h ≫ derivedClosedSupportSectionsMap X h' = derivedClosedSupportSectionsMap X (h.trans h') := by - simp [derivedClosedSupportSectionsMap, ← NatTrans.rightDerivedFunctorPlus_comp] + simp [derivedClosedSupportSectionsMap, ← _root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus_comp] /-- The derived-unit square identifies the support map on injective resolutions. -/ @[reassoc (attr := simp)] theorem derivedClosedSupportSectionsMap_unit_app {Z W : Closeds X} (h : Z ≤ W) (K : HomotopyCategory.Plus (Sheaf AddCommGrpCat.{u} X)) : - (derivedClosedSupportSectionsUnit X Z).app K ≫ + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.derivedClosedSupportSectionsUnit X Z).app K ≫ (derivedClosedSupportSectionsMap X h).app (DerivedCategory.Plus.Qh.obj K) = DerivedCategory.Plus.Qh.map - ((closedSupportSectionsMap X h).mapHomotopyCategoryPlus.app K) ≫ - (derivedClosedSupportSectionsUnit X W).app K := - (closedSupportSectionsMap X h).rightDerivedFunctorPlus_unit_app K + ((_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.mapHomotopyCategoryPlus (closedSupportSectionsMap X h)).app K) ≫ + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.derivedClosedSupportSectionsUnit X W).app K := + (_root_.OAI.Algebra.Homology.DerivedFunctorPlusNaturality.CategoryTheory.NatTrans.rightDerivedFunctorPlus_unit_app (closedSupportSectionsMap X h)) K + +end Sheaf +end TopCat + +end -end TopCat.Sheaf +end OAI.AlgebraicTopology.Support.DerivedSectionsNaturality diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSectionsShift.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSectionsShift.lean index 1a264ab465..df78db57e9 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSectionsShift.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/DerivedSectionsShift.lean @@ -1,11 +1,17 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSections -public import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlusShift +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSections +import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.RightDerivedFunctorPlusShift + +namespace OAI.AlgebraicTopology.Support.DerivedSectionsShift + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Coherent shifts of concrete derived sections with support @@ -17,13 +23,17 @@ shift-comparison input. The localization/cone comparison and membership of a proposed dualizing complex in the bounded-below category remain separate tasks. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory TopologicalSpace +open _root_.CategoryTheory _root_.TopologicalSpace universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) @@ -35,28 +45,33 @@ local instance : HasDerivedCategory AddCommGrpCat.{u} := /-- Sheaf-valued derived sections with support commute coherently with shifts. -/ instance derivedSheafSectionsWithClosedSupport_commShift (Z : Closeds X) : - (derivedSheafSectionsWithClosedSupport X Z).CommShift ℤ := by - dsimp only [derivedSheafSectionsWithClosedSupport] + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.derivedSheafSectionsWithClosedSupport X Z).CommShift ℤ := by + dsimp only [_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.derivedSheafSectionsWithClosedSupport] infer_instance set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in /-- The sheaf-valued derived unit respects the shifts. -/ instance derivedSheafSectionsWithClosedSupportUnit_commShift (Z : Closeds X) : - NatTrans.CommShift (derivedSheafSectionsWithClosedSupportUnit X Z) ℤ := - Functor.rightDerivedFunctorPlusUnitCommShift (sheafSectionsWithClosedSupport X Z) + NatTrans.CommShift (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.derivedSheafSectionsWithClosedSupportUnit X Z) ℤ := + _root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.CategoryTheory.Functor.rightDerivedFunctorPlusUnitCommShift (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsWithClosedSupport X Z) /-- Group-valued derived sections with support commute coherently with shifts. -/ instance derivedClosedSupportSections_commShift (Z : Closeds X) : - (derivedClosedSupportSections X Z).CommShift ℤ := by - dsimp only [derivedClosedSupportSections] + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.derivedClosedSupportSections X Z).CommShift ℤ := by + dsimp only [_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.derivedClosedSupportSections] infer_instance set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in /-- The group-valued derived unit respects the shifts. -/ instance derivedClosedSupportSectionsUnit_commShift (Z : Closeds X) : - NatTrans.CommShift (derivedClosedSupportSectionsUnit X Z) ℤ := - Functor.rightDerivedFunctorPlusUnitCommShift (closedSupportSections X Z) + NatTrans.CommShift (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.derivedClosedSupportSectionsUnit X Z) ℤ := + _root_.OAI.Algebra.Homology.DerivedFunctorPlusShift.CategoryTheory.Functor.rightDerivedFunctorPlusUnitCommShift (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.closedSupportSections X Z) + +end Sheaf +end TopCat + +end -end TopCat.Sheaf +end OAI.AlgebraicTopology.Support.DerivedSectionsShift diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/FiniteFiltrationVanishing.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/FiniteFiltrationVanishing.lean index 6baaede048..db2f8517cc 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/FiniteFiltrationVanishing.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/FiniteFiltrationVanishing.lean @@ -1,13 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.NestedOnOpen -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueComparison +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.NestedOnOpen +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueComparison + +namespace OAI.AlgebraicTopology.Support.FiniteFiltrationVanishing + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Vanishing through a finite closed-support filtration @@ -19,13 +25,17 @@ open layers to the whole support. Layer vanishing is an explicit hypothesis of this general lemma, not an asserted purity or dimension theorem. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite HomologicalComplex +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite _root_.HomologicalComplex universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) @@ -35,10 +45,10 @@ set_option backward.defeqAttrib.useBackward true in section group. -/ theorem toOpenRestrictionPushforward_top_app_isIso (F : Sheaf AddCommGrpCat.{u} X) (W : Opens X) : - IsIso (((toOpenRestrictionPushforward X ⊤).app F).hom.app (op W)) := by - have hw : openRestrictionImage X ⊤ W = W := by + IsIso (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X ⊤).app F).hom.app (op W)) := by + have hw : _root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionImage X ⊤ W = W := by simpa only [inf_top_eq] using Opens.functor_map_eq_inf (⊤ : Opens X) W - have heq : (((toOpenRestrictionPushforward X ⊤).app F).hom.app (op W)) = + have heq : (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X ⊤).app F).hom.app (op W)) = F.obj.map (eqToHom (congrArg op hw.symm)) := by change F.obj.map _ = F.obj.map _ congr 1 @@ -47,32 +57,32 @@ theorem toOpenRestrictionPushforward_top_app_isIso /-- The whole-space restriction morphism is an isomorphism of sheaves. -/ theorem toOpenRestrictionPushforward_top_isIso (F : Sheaf AddCommGrpCat.{u} X) : - IsIso ((toOpenRestrictionPushforward X ⊤).app F) := by - let : ∀ W, IsIso (((toOpenRestrictionPushforward X ⊤).app F).hom.app W) := + IsIso ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X ⊤).app F) := by + let : ∀ W, IsIso (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X ⊤).app F).hom.app W) := fun W => toOpenRestrictionPushforward_top_app_isIso X F W.unop - let : IsIso ((toOpenRestrictionPushforward X ⊤).app F).hom := + let : IsIso ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X ⊤).app F).hom := NatIso.isIso_of_isIso_app _ let : IsIso ((forget AddCommGrpCat.{u} X).map - ((toOpenRestrictionPushforward X ⊤).app F)) := by - change IsIso ((toOpenRestrictionPushforward X ⊤).app F).hom + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X ⊤).app F)) := by + change IsIso ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X ⊤).app F).hom infer_instance - exact isIso_of_reflects_iso ((toOpenRestrictionPushforward X ⊤).app F) + exact isIso_of_reflects_iso ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X ⊤).app F) (forget AddCommGrpCat.{u} X) /-- The kernel defining sections with empty support is zero. -/ theorem isZero_sheafSectionsSupportedOutside_top (F : Sheaf AddCommGrpCat.{u} X) : - IsZero ((sheafSectionsSupportedOutside X ⊤).obj F) := by + IsZero ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X ⊤).obj F) := by let := toOpenRestrictionPushforward_top_isIso X F - exact isZero_kernel_of_mono ((toOpenRestrictionPushforward X ⊤).app F) + exact isZero_kernel_of_mono ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X ⊤).app F) /-- In particular the empty supported-section complex has zero cohomology, for arbitrary coefficients. -/ theorem supportedSections_top_homology_isZero (W : Opens X) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) (n : ℤ) : - IsZero ((((supportEvaluation X W).mapHomologicalComplex ℤᵘᵖ).obj - (((sheafSectionsSupportedOutside X ⊤).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n) := + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W).mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X ⊤).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n) := ShortComplex.isZero_homology_of_isZero_X₂ _ - ((supportEvaluation X W).map_isZero + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W).map_isZero (isZero_sheafSectionsSupportedOutside_top X (K.X n))) variable {U V : Opens X} (h : V ≤ U) @@ -80,17 +90,17 @@ variable {U V : Opens X} (h : V ≤ U) /-- Flasqueness suffices for the nested-support sequence to be short exact on every open. -/ theorem nestedSupportRestrictionSectionsShortComplex_shortExact_of_flasque (W : Opens X) (F : Sheaf AddCommGrpCat.{u} X) [F.IsFlasque] : - ((nestedSupportRestrictionShortComplex X h F).map (supportEvaluation X W)).ShortExact := by - rw [nestedSupportRestrictionShortComplex_eq] - let : Epi ((supportEvaluation X W).map ((toOpenRestrictionPushforward X U).app F)) := - toOpenRestrictionPushforward_app_epi X U F W - exact kernelFactorizationShortComplex_map_shortExact _ _ _ _ _ + ((_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.nestedSupportRestrictionShortComplex X h F).map (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W)).ShortExact := by + rw [_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.nestedSupportRestrictionShortComplex_eq] + let : Epi ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W).map ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F)) := + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.toOpenRestrictionPushforward_app_epi X U F W + exact _root_.OAI.CategoryTheory.Abelian.KernelCompositionShortExact.kernelFactorizationShortComplex_map_shortExact _ _ _ _ _ /-- The same exact sequence for section complexes of flasque sheaves. -/ theorem nestedSupportRestrictionSectionsComplexShortComplex_shortExact_of_flasque (W : Opens X) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) (hK : ∀ n, (K.X n).IsFlasque) : - (nestedSupportRestrictionSectionsComplexShortComplex X h W K).ShortExact := by + (_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.nestedSupportRestrictionSectionsComplexShortComplex X h W K).ShortExact := by apply HomologicalComplex.shortExact_of_degreewise_shortExact intro n exact nestedSupportRestrictionSectionsShortComplex_shortExact_of_flasque X h W (K.X n) @@ -101,17 +111,17 @@ vanishing of the larger support in the same degree. -/ theorem nestedSupportRestriction_middle_homology_isZero (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) (hK : ∀ n, (K.X n).IsFlasque) (n : ℤ) - (hsmall : IsZero ((((supportEvaluation X ⊤).mapHomologicalComplex ℤᵘᵖ).obj - (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n)) - (hlayer : IsZero ((((supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj - (((sheafSectionsSupportedOutside X V).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n)) : - IsZero ((((supportEvaluation X ⊤).mapHomologicalComplex ℤᵘᵖ).obj - (((sheafSectionsSupportedOutside X V).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n) := by - let S := nestedSupportRestrictionSectionsComplexShortComplex X h ⊤ K + (hsmall : IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X ⊤).mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n)) + (hlayer : IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X V).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n)) : + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X ⊤).mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X V).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n) := by + let S := _root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.nestedSupportRestrictionSectionsComplexShortComplex X h ⊤ K have hS := nestedSupportRestrictionSectionsComplexShortComplex_shortExact_of_flasque X h ⊤ K hK have hlast : IsZero (S.X₃.homology n) := hlayer.of_iso ((HomologicalComplex.homologyFunctor _ _ n).mapIso - (nestedSupportRestrictionLastComplexIso X h K)) + (_root_.OAI.AlgebraicTopology.Support.NestedOnOpen.TopCat.Sheaf.nestedSupportRestrictionLastComplexIso X h K)) exact (hS.homology_exact₂ n).isZero_X₂ (hsmall.eq_zero_of_src _) (hlast.eq_zero_of_tgt _) @@ -124,11 +134,11 @@ theorem finiteNestedSupport_homology_isZero (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) (hK : ∀ n, (K.X n).IsFlasque) (n : ℤ) (hlayer : ∀ k, k < N → IsZero - ((((supportEvaluation X (O (k + 1))).mapHomologicalComplex ℤᵘᵖ).obj - (((sheafSectionsSupportedOutside X (O k)).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n)) + ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X (O (k + 1))).mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X (O k)).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n)) (k : ℕ) (hk : k ≤ N) : - IsZero ((((supportEvaluation X ⊤).mapHomologicalComplex ℤᵘᵖ).obj - (((sheafSectionsSupportedOutside X (O k)).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n) := by + IsZero ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X ⊤).mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X (O k)).mapHomologicalComplex ℤᵘᵖ).obj K)).homology n) := by induction hk using Nat.decreasingInduction with | self => rw [hN] @@ -137,4 +147,9 @@ theorem finiteNestedSupport_homology_isZero exact nestedSupportRestriction_middle_homology_isZero X (hO (Nat.le_succ k)) K hK n ih (hlayer k (by omega)) -end TopCat.Sheaf +end Sheaf +end TopCat + +end + +end OAI.AlgebraicTopology.Support.FiniteFiltrationVanishing diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/FlasqueComparison.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/FlasqueComparison.lean index 3b7174866c..8e96fcb5fe 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/FlasqueComparison.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/FlasqueComparison.lean @@ -1,14 +1,20 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.CohomologyStalkVanishing -public import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenRestriction -public import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.ShortExactQuasiIso +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.CohomologyStalkVanishing +import HodgeConjecture.Lemmas.AlgebraicTopology.Sheaf.OpenRestriction +import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.ShortExactQuasiIso + +namespace OAI.AlgebraicTopology.Support.FlasqueComparison + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Local sections of flasque resolution comparisons @@ -24,13 +30,17 @@ coefficients, so the supported-sections complex computes the fiber of restriction even for the singular-cochain flasque model. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite HomologicalComplex +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite _root_.HomologicalComplex universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) (U : Opens X) @@ -39,8 +49,8 @@ sections of a sheaf of abelian groups restricted to the space `U` with its origi the open subset `U`. -/ def openRestrictionGlobalSectionsIso : U.isOpenEmbedding.sheafPullback AddCommGrpCat.{u} ⋙ - IsFlasque.BoundedBelowComplex.globalSectionsFunctor (TopCat.of U) ≅ - supportEvaluation X U := + _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsFunctor (TopCat.of U) ≅ + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U := NatIso.ofComponents (fun F => F.obj.mapIso (eqToIso (congrArg op (Opens.isOpenEmbedding_obj_top U)))) (fun {_ _} f => (f.hom.naturality (eqToHom (congrArg op (Opens.isOpenEmbedding_obj_top U)))).symm) @@ -53,45 +63,45 @@ theorem supportEvaluation_map_quasiIso_of_flasque {K L : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ} (f : K ⟶ L) [QuasiIso f] (nK nL : ℤ) [K.IsStrictlyGE nK] [L.IsStrictlyGE nL] (hK : ∀ n, (K.X n).IsFlasque) (hL : ∀ n, (L.X n).IsFlasque) : - QuasiIso (((supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).map f) := by + QuasiIso (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).map f) := by let R := U.isOpenEmbedding.sheafPullback AddCommGrpCat.{u} - let Γ := IsFlasque.BoundedBelowComplex.globalSectionsFunctor (TopCat.of U) + let Γ := _root_.OAI.AlgebraicTopology.Sheaf.FlasqueBoundedBelow.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsFunctor (TopCat.of U) let K' : CochainComplex (Sheaf AddCommGrpCat.{u} (TopCat.of U)) ℤ := (R.mapHomologicalComplex ℤᵘᵖ).obj K let L' : CochainComplex (Sheaf AddCommGrpCat.{u} (TopCat.of U)) ℤ := (R.mapHomologicalComplex ℤᵘᵖ).obj L let f' : K' ⟶ L' := (R.mapHomologicalComplex ℤᵘᵖ).map f - let : QuasiIso f' := openSheafRestriction_map_quasiIso X U f + let : QuasiIso f' := _root_.OAI.AlgebraicTopology.Sheaf.OpenRestriction.TopCat.openSheafRestriction_map_quasiIso X U f have hK' (n : ℤ) : (K'.X n).IsFlasque := by let : (K.X n).IsFlasque := hK n - exact openSheafRestriction_isFlasque X U _ + exact _root_.OAI.AlgebraicTopology.Sheaf.OpenRestriction.TopCat.openSheafRestriction_isFlasque X U _ have hL' (n : ℤ) : (L'.X n).IsFlasque := by let : (L.X n).IsFlasque := hL n - exact openSheafRestriction_isFlasque X U _ + exact _root_.OAI.AlgebraicTopology.Sheaf.OpenRestriction.TopCat.openSheafRestriction_isFlasque X U _ let : QuasiIso ((Γ.mapHomologicalComplex ℤᵘᵖ).map f') := - IsFlasque.BoundedBelowComplex.globalSectionsComplex_map_quasiIso f' nK nL hK' hL' + _root_.OAI.AlgebraicTopology.Sheaf.FlasqueQuasiIso.TopCat.IsFlasque.BoundedBelowComplex.globalSectionsComplex_map_quasiIso f' nK nL hK' hL' let e := NatIso.mapHomologicalComplex (openRestrictionGlobalSectionsIso X U) ℤᵘᵖ apply (quasiIso_iff_of_arrow_mk_iso ((Γ.mapHomologicalComplex ℤᵘᵖ).map f') - (((supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).map f) + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).map f) (Arrow.isoMk (e.app K) (e.app L) (e.hom.naturality f).symm)).mp infer_instance /-- The flasque localization sequence is short exact on each open set. -/ lemma supportRestrictionSectionsShortComplex_shortExact_of_flasque (V : Opens X) (F : Sheaf AddCommGrpCat.{u} X) [F.IsFlasque] : - (supportRestrictionSectionsShortComplex X U V F).ShortExact where + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsExact.TopCat.Sheaf.supportRestrictionSectionsShortComplex X U V F).ShortExact where exact := ShortComplex.exact_of_f_is_kernel _ - (KernelFork.mapIsLimit _ (kernelIsKernel _) (supportEvaluation X V)) + (KernelFork.mapIsLimit _ (kernelIsKernel _) (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V)) mono_f := mono_of_isLimit_fork - (KernelFork.mapIsLimit _ (kernelIsKernel _) (supportEvaluation X V)) - epi_g := toOpenRestrictionPushforward_app_epi X U F V + (KernelFork.mapIsLimit _ (kernelIsKernel _) (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V)) + epi_g := _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.toOpenRestrictionPushforward_app_epi X U F V /-- Termwise flasqueness is sufficient for the localization sequence of section complexes to be short exact. -/ lemma supportRestrictionSectionsComplexShortComplex_shortExact_of_flasque (V : Opens X) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) (hK : ∀ n, (K.X n).IsFlasque) : - (supportRestrictionSectionsComplexShortComplex X U V K).ShortExact := by + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex X U V K).ShortExact := by apply HomologicalComplex.shortExact_of_degreewise_shortExact intro n exact supportRestrictionSectionsShortComplex_shortExact_of_flasque X U V (K.X n) @@ -101,17 +111,17 @@ complexes. This is the induced map from `Γ_{X \ U}(K) → K → j_*(K|_U)` to t `L`, applying `f` to supported sections, all sections, and restricted sections. -/ def supportRestrictionComplexShortComplexMap {K L : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ} (f : K ⟶ L) : - supportRestrictionComplexShortComplex X U K ⟶ - supportRestrictionComplexShortComplex X U L where - τ₁ := ((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map f + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionComplexShortComplex X U K ⟶ + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionComplexShortComplex X U L where + τ₁ := ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map f τ₂ := f - τ₃ := ((openRestrictionPushforward X U).mapHomologicalComplex ℤᵘᵖ).map f + τ₃ := ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X U).mapHomologicalComplex ℤᵘᵖ).map f comm₁₂ := by ext n - exact (sheafSectionsSupportedOutsideInclusion X U).naturality (f.f n) + exact (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).naturality (f.f n) comm₂₃ := by ext n - exact (toOpenRestrictionPushforward X U).naturality (f.f n) + exact (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).naturality (f.f n) /-- Supported sections of a quasi-isomorphism between bounded-below flasque models are a quasi-isomorphism on every open set. -/ @@ -119,18 +129,18 @@ theorem supportedSections_map_quasiIso_of_flasque (V : Opens X) {K L : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ} (f : K ⟶ L) [QuasiIso f] (nK nL : ℤ) [K.IsStrictlyGE nK] [L.IsStrictlyGE nL] (hK : ∀ n, (K.X n).IsFlasque) (hL : ∀ n, (L.X n).IsFlasque) : - QuasiIso (((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map - (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map f)) := by - let φ := (((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).mapShortComplex).map + QuasiIso (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map f)) := by + let φ := (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).mapShortComplex).map (supportRestrictionComplexShortComplexMap X U f) have h₂ : QuasiIso φ.τ₂ := supportEvaluation_map_quasiIso_of_flasque X V f nK nL hK hL have h₃ : QuasiIso φ.τ₃ := by - change QuasiIso (((supportEvaluation X + change QuasiIso (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X (U.isOpenEmbedding.functor.obj ((Opens.map U.inclusion').obj V))).mapHomologicalComplex ℤᵘᵖ).map f) exact supportEvaluation_map_quasiIso_of_flasque X _ f nK nL hK hL - exact CochainComplex.quasiIso_first_of_shortExact φ + exact _root_.OAI.Algebra.Homology.ShortExactQuasiIso.CochainComplex.quasiIso_first_of_shortExact φ (supportRestrictionSectionsComplexShortComplex_shortExact_of_flasque X U V K hK) (supportRestrictionSectionsComplexShortComplex_shortExact_of_flasque X U V L hL) @@ -140,9 +150,14 @@ theorem sheafSectionsSupportedOutside_map_quasiIso_of_flasque {K L : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ} (f : K ⟶ L) [QuasiIso f] (nK nL : ℤ) [K.IsStrictlyGE nK] [L.IsStrictlyGE nL] (hK : ∀ n, (K.X n).IsFlasque) (hL : ∀ n, (L.X n).IsFlasque) : - QuasiIso (((sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map f) := by - apply quasiIso_of_cofinal_section_quasiIso + QuasiIso (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).map f) := by + apply _root_.OAI.AlgebraicTopology.Sheaf.CohomologyStalkIs.TopCat.quasiIso_of_cofinal_section_quasiIso exact fun x V hxV => ⟨V, le_rfl, hxV, supportedSections_map_quasiIso_of_flasque X U V f nK nL hK hL⟩ -end TopCat.Sheaf +end Sheaf +end TopCat + +end + +end OAI.AlgebraicTopology.Support.FlasqueComparison diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/FlasqueSections.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/FlasqueSections.lean index 84f21c5c50..3de230d7b5 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/FlasqueSections.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/FlasqueSections.lean @@ -1,12 +1,18 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsNaturality -public import Mathlib.Topology.Sheaves.Flasque -public import Mathlib.Topology.Sheaves.SheafCondition.PairwiseIntersections +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsNaturality +import Mathlib.Topology.Sheaves.Flasque +import Mathlib.Topology.Sheaves.SheafCondition.PairwiseIntersections + +namespace OAI.AlgebraicTopology.Support.FlasqueSections + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Supported sections preserve flasqueness @@ -16,21 +22,25 @@ A supported section over `V` glues with zero on the excluded open `U` to a secti `W` vanishes on `W ⊓ U`, so it lies in the kernel defining supported sections. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) (U V : Opens X) (F : Sheaf AddCommGrpCat.{u} X) /-- The preceding identification preserves the restriction morphism. -/ @[reassoc] theorem toOpenRestrictionPushforward_intersection : - (((toOpenRestrictionPushforward X U).app F).hom.app (op V)) ≫ - (supportedOutsideIntersectionIso X U V F).hom = + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F).hom.app (op V)) ≫ + (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.supportedOutsideIntersectionIso X U V F).hom = F.obj.map (homOfLE (inf_le_left : V ⊓ U ≤ V)).op := by change F.obj.map _ ≫ F.obj.map _ = F.obj.map _ rw [← F.obj.map_comp] @@ -39,13 +49,13 @@ theorem toOpenRestrictionPushforward_intersection : /-- The supported-section inclusion restricts to zero on the intersection. -/ @[reassoc] theorem supportedOutsideInclusion_restrict_intersection : - ((sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V) ≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V) ≫ F.obj.map (homOfLE (inf_le_left : V ⊓ U ≤ V)).op = 0 := by rw [← toOpenRestrictionPushforward_intersection X U V F, ← Category.assoc] have h := congrArg (fun f => f.hom.app (op V)) - (sheafSectionsSupportedOutsideInclusion_restriction X U F) - change ((sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V) ≫ - ((toOpenRestrictionPushforward X U).app F).hom.app (op V) = 0 at h + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion_restriction X U F) + change ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V) ≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F).hom.app (op V) = 0 at h rw [h, zero_comp] /-- A section zero on the intersection lifts into the supported-section kernel, along the @@ -53,22 +63,22 @@ canonical on-open kernel comparison. -/ theorem exists_supportedOutsideSection_of_restrict_eq_zero (s : F.presheaf.obj (op V)) (hs : F.obj.map (homOfLE (inf_le_left : V ⊓ U ≤ V)).op s = 0) : - ∃ t : ((sheafSectionsSupportedOutside X U).obj F).presheaf.obj (op V), - ((sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V) t = s := by - let r := ((toOpenRestrictionPushforward X U).app F).hom.app (op V) + ∃ t : ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).obj F).presheaf.obj (op V), + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V) t = s := by + let r := ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F).hom.app (op V) have hr : r s = 0 := by - apply (ConcreteCategory.bijective_of_isIso (supportedOutsideIntersectionIso X U V F).hom).1 + apply (ConcreteCategory.bijective_of_isIso (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.supportedOutsideIntersectionIso X U V F).hom).1 rw [map_zero] exact (ConcreteCategory.congr_hom (toOpenRestrictionPushforward_intersection X U V F) s).trans hs - let e := sheafSectionsSupportedOutsideOnOpenIso X U V F ≪≫ AddCommGrpCat.kernelIsoKer r + let e := _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideOnOpenIso X U V F ≪≫ AddCommGrpCat.kernelIsoKer r let a : r.hom.ker := ⟨s, hr⟩ refine ⟨e.inv a, ?_⟩ have he : e.hom ≫ AddCommGrpCat.ofHom r.hom.ker.subtype = - ((sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V) := by + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V) := by simp only [e, Iso.trans_hom, Category.assoc, AddCommGrpCat.kernelIsoKer_hom_comp_subtype] - exact sheafSectionsSupportedOutsideOnOpenIso_hom_ι X U V F + exact _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideOnOpenIso_hom_ι X U V F rw [← he] change (AddCommGrpCat.ofHom r.hom.ker.subtype) (e.hom (e.inv a)) = s have hai : e.hom (e.inv a) = a := ConcreteCategory.congr_hom e.inv_hom_id a @@ -79,11 +89,11 @@ theorem exists_supportedOutsideSection_of_restrict_eq_zero on `V` vanishing on `V ∩ U` glues uniquely to the zero section on `U`. This additive map sends it to the resulting section on `V ∪ U`. -/ def supportedOutsideGlueZero : - ((sheafSectionsSupportedOutside X U).obj F).obj.obj (op V) ⟶ F.obj.obj (op (V ⊔ U)) := + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).obj F).obj.obj (op V) ⟶ F.obj.obj (op (V ⊔ U)) := F.interUnionPullbackConeLift V U (PullbackCone.mk - (((sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V)) - (0 : ((sheafSectionsSupportedOutside X U).obj F).obj.obj (op V) ⟶ F.obj.obj (op U)) + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V)) + (0 : ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).obj F).obj.obj (op V) ⟶ F.obj.obj (op U)) (by rw [supportedOutsideInclusion_restrict_intersection, zero_comp])) /-- Gluing with zero preserves the given section on its original open. -/ @@ -91,7 +101,7 @@ def supportedOutsideGlueZero : theorem supportedOutsideGlueZero_restrict_left : supportedOutsideGlueZero X U V F ≫ F.obj.map (homOfLE (le_sup_left : V ≤ V ⊔ U)).op = - ((sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V) := + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V) := F.interUnionPullbackConeLift_left V U _ /-- The same glued section is exactly zero on the excluded open. -/ @@ -107,11 +117,11 @@ variable {V} {W : Opens X} is flasque. The extension is produced by gluing with zero before extending. -/ theorem sheafSectionsSupportedOutside_restriction_surjective [F.IsFlasque] (hVW : V ≤ W) : - Function.Surjective (((sheafSectionsSupportedOutside X U).obj F).obj.map + Function.Surjective (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).obj F).obj.map (homOfLE hVW).op) := by intro a - let G := (sheafSectionsSupportedOutside X U).obj F - let ι := (sheafSectionsSupportedOutsideInclusion X U).app F + let G := (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).obj F + let ι := (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F have hsup : V ⊔ U ≤ W ⊔ U := sup_le_sup_right hVW U obtain ⟨t, ht⟩ := (AddCommGrpCat.epi_iff_surjective (F.obj.map (homOfLE hsup).op)).mp inferInstance @@ -137,8 +147,8 @@ theorem sheafSectionsSupportedOutside_restriction_surjective [F.IsFlasque] obtain ⟨c, hc⟩ := exists_supportedOutsideSection_of_restrict_eq_zero X U W F b hb have hι : Function.Injective (ι.hom.app (op V)) := by apply (AddCommGrpCat.mono_iff_injective _).mp - change Mono (((sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V)) - rw [← sheafSectionsSupportedOutsideOnOpenIso_hom_ι X U V F] + change Mono (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X U).app F).hom.app (op V)) + rw [← _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideOnOpenIso_hom_ι X U V F] infer_instance refine ⟨c, hι ?_⟩ calc @@ -158,14 +168,19 @@ theorem sheafSectionsSupportedOutside_restriction_surjective [F.IsFlasque] /-- The sheaf-valued supported-sections functor preserves flasque sheaves. -/ instance sheafSectionsSupportedOutside_isFlasque [F.IsFlasque] : - ((sheafSectionsSupportedOutside X U).obj F).IsFlasque where + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).obj F).IsFlasque where epi {V W} i := by exact (AddCommGrpCat.epi_iff_surjective _).mpr (sheafSectionsSupportedOutside_restriction_surjective X U F (leOfHom i.unop)) /-- Equivalently, sections supported in any closed subset preserve flasqueness. -/ instance sheafSectionsWithClosedSupport_isFlasque (Z : Closeds X) [F.IsFlasque] : - ((sheafSectionsWithClosedSupport X Z).obj F).IsFlasque := + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsWithClosedSupport X Z).obj F).IsFlasque := sheafSectionsSupportedOutside_isFlasque X Z.compl F -end TopCat.Sheaf +end Sheaf +end TopCat + +end + +end OAI.AlgebraicTopology.Support.FlasqueSections diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/NestedLocalization.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/NestedLocalization.lean index bec9396f34..fe8057d580 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/NestedLocalization.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/NestedLocalization.lean @@ -1,15 +1,21 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsNaturality -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsLocalization -public import HodgeConjecture.Mathlib.CategoryTheory.Abelian.KernelCompositionShortExact -public import Mathlib.Algebra.Homology.HomologySequence +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsNaturality +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.DerivedSectionsLocalization +import HodgeConjecture.Mathlib.CategoryTheory.Abelian.KernelCompositionShortExact +import Mathlib.Algebra.Homology.HomologySequence + +namespace OAI.AlgebraicTopology.Support.NestedLocalization + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Localization between two nested closed supports @@ -26,13 +32,17 @@ flasque) coefficients. The resulting canonical mapping-fiber comparison is the a localization step needed when extending over singular strata. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) {U V : Opens X} (h : V ≤ U) @@ -40,10 +50,10 @@ variable (X : TopCat.{u}) {U V : Opens X} (h : V ≤ U) groups. This functor sends `F` to the kernel of `j_{U*}(F|_U) → j_{V*}(F|_V)`. On an open `W`, its sections are elements of `F(W ∩ U)` that vanish on `W ∩ V`. -/ def sheafSectionsBetweenOpens : Sheaf AddCommGrpCat.{u} X ⥤ Sheaf AddCommGrpCat.{u} X where - obj F := kernel ((openRestrictionPushforwardMap X h).app F) - map f := kernel.map _ _ ((openRestrictionPushforward X U).map f) - ((openRestrictionPushforward X V).map f) - ((openRestrictionPushforwardMap X h).naturality f).symm + obj F := kernel ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionPushforwardMap X h).app F) + map f := kernel.map _ _ ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X U).map f) + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X V).map f) + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionPushforwardMap X h).naturality f).symm map_id F := by apply (cancel_mono (kernel.ι _)).1 simp @@ -63,77 +73,77 @@ groups. For an open `W`, this identifies sections on `W` of the kernel sheaf of `U` to `V` with the kernel of `F(W ∩ U) → F(W ∩ V)`. -/ def sheafSectionsBetweenOpensOnOpenIso (W : Opens X) (F : Sheaf AddCommGrpCat.{u} X) : ((sheafSectionsBetweenOpens X h).obj F).obj.obj (op W) ≅ - kernel (((openRestrictionPushforwardMap X h).app F).hom.app (op W)) := - PreservesKernel.iso (supportEvaluation X W) ((openRestrictionPushforwardMap X h).app F) + kernel (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionPushforwardMap X h).app F).hom.app (op W)) := + PreservesKernel.iso (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W) ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionPushforwardMap X h).app F) @[reassoc (attr := simp)] lemma sheafSectionsBetweenOpensOnOpenIso_hom_ι (W : Opens X) (F : Sheaf AddCommGrpCat.{u} X) : (sheafSectionsBetweenOpensOnOpenIso X h W F).hom ≫ - kernel.ι (((openRestrictionPushforwardMap X h).app F).hom.app (op W)) = - (kernel.ι ((openRestrictionPushforwardMap X h).app F)).hom.app (op W) := - kernelComparison_comp_ι ((openRestrictionPushforwardMap X h).app F) (supportEvaluation X W) + kernel.ι (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionPushforwardMap X h).app F).hom.app (op W)) = + (kernel.ι ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionPushforwardMap X h).app F)).hom.app (op W) := + kernelComparison_comp_ι ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionPushforwardMap X h).app F) (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W) /-- Restrict an ambient section vanishing on `V` to its section on `U`. -/ def toSheafSectionsBetweenOpens : - sheafSectionsSupportedOutside X V ⟶ sheafSectionsBetweenOpens X h where - app F := kernel.map ((toOpenRestrictionPushforward X V).app F) - ((openRestrictionPushforwardMap X h).app F) - ((toOpenRestrictionPushforward X U).app F) (𝟙 _) + _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X V ⟶ sheafSectionsBetweenOpens X h where + app F := kernel.map ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X V).app F) + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionPushforwardMap X h).app F) + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F) (𝟙 _) (by simpa only [Category.comp_id, NatTrans.comp_app] using - (NatTrans.congr_app (toOpenRestrictionPushforward_comp X h) F).symm) + (NatTrans.congr_app (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.toOpenRestrictionPushforward_comp X h) F).symm) naturality F G f := by - apply (cancel_mono (kernel.ι ((openRestrictionPushforwardMap X h).app G))).1 - simp only [sheafSectionsSupportedOutside, sheafSectionsBetweenOpens, kernel.map, + apply (cancel_mono (kernel.ι ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionPushforwardMap X h).app G))).1 + simp only [_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside, sheafSectionsBetweenOpens, kernel.map, kernel.lift_ι, Category.assoc, kernel.lift_ι_assoc] exact congrArg - (fun q => kernel.ι ((toOpenRestrictionPushforward X V).app F) ≫ q) - ((toOpenRestrictionPushforward X U).naturality f) + (fun q => kernel.ι ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X V).app F) ≫ q) + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).naturality f) set_option backward.isDefEq.respectTransparency false in set_option backward.defeqAttrib.useBackward true in /-- Restricting a section supported outside `U` to `U` gives zero. -/ @[reassoc (attr := simp)] lemma sheafSectionsSupportedOutsideMap_toBetween : - sheafSectionsSupportedOutsideMap X h ≫ toSheafSectionsBetweenOpens X h = 0 := by + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.sheafSectionsSupportedOutsideMap X h ≫ toSheafSectionsBetweenOpens X h = 0 := by ext F : 2 apply (cancel_mono (kernel.ι _)).1 - simp [toSheafSectionsBetweenOpens, sheafSectionsSupportedOutsideMap, - liftSheafSectionsSupportedOutside, sheafSectionsSupportedOutsideInclusion] + simp [toSheafSectionsBetweenOpens, _root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.sheafSectionsSupportedOutsideMap, + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.liftSheafSectionsSupportedOutside, _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion] /-- Let `V ⊆ U` be open subsets of a topological space `X`, and let `F` be a sheaf of abelian groups. This is the sequence `Γ_{X \ U}(F) → Γ_{X \ V}(F) → ker(j_{U*}(F|_U) → j_{V*}(F|_V))`. Its first map enlarges support and its second restricts sections to `U`. -/ def nestedSupportRestrictionShortComplex (F : Sheaf AddCommGrpCat.{u} X) : ShortComplex (Sheaf AddCommGrpCat.{u} X) := - ShortComplex.mk ((sheafSectionsSupportedOutsideMap X h).app F) + ShortComplex.mk ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.sheafSectionsSupportedOutsideMap X h).app F) ((toSheafSectionsBetweenOpens X h).app F) (NatTrans.congr_app (sheafSectionsSupportedOutsideMap_toBetween X h) F) /-- The support sequence is precisely the canonical sequence of three kernels. -/ lemma nestedSupportRestrictionShortComplex_eq (F : Sheaf AddCommGrpCat.{u} X) : nestedSupportRestrictionShortComplex X h F = - kernelFactorizationShortComplex - ((toOpenRestrictionPushforward X U).app F) - ((openRestrictionPushforwardMap X h).app F) - ((toOpenRestrictionPushforward X V).app F) - (NatTrans.congr_app (toOpenRestrictionPushforward_comp X h) F) := rfl + _root_.OAI.CategoryTheory.Abelian.KernelCompositionShortExact.kernelFactorizationShortComplex + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F) + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionPushforwardMap X h).app F) + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X V).app F) + (NatTrans.congr_app (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.toOpenRestrictionPushforward_comp X h) F) := rfl /-- Exactness after evaluation, by flasqueness of the terms. -/ lemma nestedSupportRestrictionSectionsShortComplex_shortExact (W : Opens X) (F : Sheaf AddCommGrpCat.{u} X) [Injective F] : - ((nestedSupportRestrictionShortComplex X h F).map (supportEvaluation X W)).ShortExact := by + ((nestedSupportRestrictionShortComplex X h F).map (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W)).ShortExact := by rw [nestedSupportRestrictionShortComplex_eq] - have : Epi ((supportEvaluation X W).map ((toOpenRestrictionPushforward X U).app F)) := - toOpenRestrictionPushforward_app_epi X U F W - exact kernelFactorizationShortComplex_map_shortExact _ _ _ _ _ + have : Epi ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W).map ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F)) := + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.toOpenRestrictionPushforward_app_epi X U F W + exact _root_.OAI.CategoryTheory.Abelian.KernelCompositionShortExact.kernelFactorizationShortComplex_map_shortExact _ _ _ _ _ /-- The coefficientwise nested-support sequence on a complex of sheaves. -/ def nestedSupportRestrictionComplexShortComplex (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) : ShortComplex (CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) := ShortComplex.mk - (((sheafSectionsSupportedOutsideMap X h).mapHomologicalComplex ℤᵘᵖ).app K) + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.sheafSectionsSupportedOutsideMap X h).mapHomologicalComplex ℤᵘᵖ).app K) (((toSheafSectionsBetweenOpens X h).mapHomologicalComplex ℤᵘᵖ).app K) (by ext n; exact NatTrans.congr_app (sheafSectionsSupportedOutsideMap_toBetween X h) (K.X n)) @@ -145,7 +155,7 @@ def nestedSupportRestrictionSectionsComplexShortComplex (W : Opens X) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) : ShortComplex (CochainComplex AddCommGrpCat.{u} ℤ) := (nestedSupportRestrictionComplexShortComplex X h K).map - ((supportEvaluation X W).mapHomologicalComplex ℤᵘᵖ) + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W).mapHomologicalComplex ℤᵘᵖ) lemma nestedSupportRestrictionSectionsComplexShortComplex_shortExact (W : Opens X) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) [∀ n, Injective (K.X n)] : @@ -171,4 +181,9 @@ lemma nestedSupportRestriction_homologyMap_isIso_of_vanishing (W : Opens X) (hS.homology_exact₃ n (n + 1) (by simp)).epi_f (hn₁.eq_zero_of_tgt _) exact isIso_of_mono_of_epi _ -end TopCat.Sheaf +end Sheaf +end TopCat + +end + +end OAI.AlgebraicTopology.Support.NestedLocalization diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/NestedOnOpen.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/NestedOnOpen.lean index f2653a24d9..68e1344f3c 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/NestedOnOpen.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/NestedOnOpen.lean @@ -1,14 +1,21 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.NestedLocalization -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueSections -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SectionRestrictionCone +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.NestedLocalization +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.FlasqueSections +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SectionRestrictionCone + +namespace OAI.AlgebraicTopology.Support.NestedOnOpen + +open _root_.TopCat +open _root_.TopCat.Sheaf + /-! # The open-set model of the last localization term @@ -19,26 +26,30 @@ coefficient sheaf, so it identifies the last complex in nested-support localizat the supported-section complex on the complement of the smaller closed support. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) theorem openRestrictionImage_top (U : Opens X) : - openRestrictionImage X U ⊤ = U := by simp + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionImage X U ⊤ = U := by simp theorem openRestrictionImage_eq_of_le {U V : Opens X} (h : V ≤ U) : - openRestrictionImage X V U = V := by simp_all + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionImage X V U = V := by simp_all /-- Let `X` be a topological space and `U ⊆ X` open, with inclusion `j`. This natural isomorphism identifies `Γ(X, j_*(F|_U))` with `F(U)` for every sheaf of abelian groups `F`. -/ def openRestrictionPushforwardTopEvaluationIso (U : Opens X) : - openRestrictionPushforward X U ⋙ supportEvaluation X ⊤ ≅ supportEvaluation X U := + _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X U ⋙ _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X ⊤ ≅ _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U := NatIso.ofComponents (fun F => F.obj.mapIso (eqToIso (congrArg op (openRestrictionImage_top X U)))) (fun f => (f.hom.naturality _).symm) @@ -48,9 +59,9 @@ groups. This includes the kernel sheaf of `j_{U*}(F|_U) → j_{V*}(F|_V)` into ` an open `W` it includes sections over `W ∩ U` vanishing on `W ∩ V` into all sections over `W ∩ U`. -/ def sheafSectionsBetweenOpensInclusion {U V : Opens X} (h : V ≤ U) : - sheafSectionsBetweenOpens X h ⟶ openRestrictionPushforward X U where - app F := kernel.ι ((openRestrictionPushforwardMap X h).app F) - naturality F G f := by simp [sheafSectionsBetweenOpens] + _root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.sheafSectionsBetweenOpens X h ⟶ _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X U where + app F := kernel.ι ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionPushforwardMap X h).app F) + naturality F G f := by simp [_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.sheafSectionsBetweenOpens] variable {U V : Opens X} (h : V ≤ U) @@ -58,18 +69,18 @@ variable {U V : Opens X} (h : V ≤ U) groups. This identifies global sections of `j_{V*}(F|_V)` with its sections over `U`: both groups are `F(V)` because `V ⊆ U`. -/ def nestedSupportRestrictionTargetIso (F : Sheaf AddCommGrpCat.{u} X) : - ((openRestrictionPushforward X V).obj F).obj.obj (op ⊤) ≅ - ((openRestrictionPushforward X V).obj F).obj.obj (op U) := + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X V).obj F).obj.obj (op ⊤) ≅ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X V).obj F).obj.obj (op U) := F.obj.mapIso (eqToIso (congrArg op ((openRestrictionImage_top X V).trans (openRestrictionImage_eq_of_le X h).symm))) /-- The comparison of the two restriction arrows is the presheaf restriction square. -/ @[reassoc] theorem nestedSupportRestrictionTargetIso_square (F : Sheaf AddCommGrpCat.{u} X) : - (((openRestrictionPushforwardMap X h).app F).hom.app (op ⊤)) ≫ + (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsNaturality.TopCat.Sheaf.openRestrictionPushforwardMap X h).app F).hom.app (op ⊤)) ≫ (nestedSupportRestrictionTargetIso X h F).hom = (openRestrictionPushforwardTopEvaluationIso X U).hom.app F ≫ - (((toOpenRestrictionPushforward X V).app F).hom.app (op U)) := by + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X V).app F).hom.app (op U)) := by change F.obj.map _ ≫ F.obj.map _ = F.obj.map _ ≫ F.obj.map _ rw [← F.obj.map_comp, ← F.obj.map_comp] congr 1 @@ -78,13 +89,13 @@ theorem nestedSupportRestrictionTargetIso_square (F : Sheaf AddCommGrpCat.{u} X) groups. This identifies global sections of `ker(j_{U*}(F|_U) → j_{V*}(F|_V))` with sections over `U` of the subsheaf of `F` supported in `X \ V`. Both are the kernel of `F(U) → F(V)`. -/ def sheafSectionsBetweenOpensGlobalIso (F : Sheaf AddCommGrpCat.{u} X) : - ((sheafSectionsBetweenOpens X h).obj F).obj.obj (op ⊤) ≅ - ((sheafSectionsSupportedOutside X V).obj F).obj.obj (op U) := - sheafSectionsBetweenOpensOnOpenIso X h ⊤ F ≪≫ + ((_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.sheafSectionsBetweenOpens X h).obj F).obj.obj (op ⊤) ≅ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X V).obj F).obj.obj (op U) := + _root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.sheafSectionsBetweenOpensOnOpenIso X h ⊤ F ≪≫ kernel.mapIso _ _ ((openRestrictionPushforwardTopEvaluationIso X U).app F) (nestedSupportRestrictionTargetIso X h F) (nestedSupportRestrictionTargetIso_square X h F) ≪≫ - (sheafSectionsSupportedOutsideOnOpenIso X V U F).symm + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideOnOpenIso X V U F).symm set_option backward.isDefEq.respectTransparency false in set_option backward.defeqAttrib.useBackward true in @@ -93,14 +104,14 @@ set_option backward.defeqAttrib.useBackward true in theorem sheafSectionsBetweenOpensGlobalIso_hom_inclusion (F : Sheaf AddCommGrpCat.{u} X) : (sheafSectionsBetweenOpensGlobalIso X h F).hom ≫ - ((sheafSectionsSupportedOutsideInclusion X V).app F).hom.app (op U) = + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X V).app F).hom.app (op U) = ((sheafSectionsBetweenOpensInclusion X h).app F).hom.app (op ⊤) ≫ (openRestrictionPushforwardTopEvaluationIso X U).hom.app F := by - rw [← sheafSectionsSupportedOutsideOnOpenIso_hom_ι X V U F] + rw [← _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideOnOpenIso_hom_ι X V U F] simp only [sheafSectionsBetweenOpensGlobalIso, Iso.trans_hom, Iso.symm_hom, Category.assoc, Iso.inv_hom_id_assoc, kernel.mapIso_hom, kernel.map, kernel.lift_ι] - rw [sheafSectionsBetweenOpensOnOpenIso_hom_ι_assoc] + rw [_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.sheafSectionsBetweenOpensOnOpenIso_hom_ι_assoc] rfl set_option backward.isDefEq.respectTransparency false in @@ -109,27 +120,27 @@ set_option backward.defeqAttrib.useBackward true in @[reassoc] theorem sheafSectionsBetweenOpensGlobalIso_naturality {F G : Sheaf AddCommGrpCat.{u} X} (f : F ⟶ G) : - (((sheafSectionsBetweenOpens X h).map f).hom.app (op ⊤)) ≫ + (((_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.sheafSectionsBetweenOpens X h).map f).hom.app (op ⊤)) ≫ (sheafSectionsBetweenOpensGlobalIso X h G).hom = (sheafSectionsBetweenOpensGlobalIso X h F).hom ≫ - (((sheafSectionsSupportedOutside X V).map f).hom.app (op U)) := by - have : Mono (((sheafSectionsSupportedOutsideInclusion X V).app G).hom.app (op U)) := by - rw [← sheafSectionsSupportedOutsideOnOpenIso_hom_ι X V U G] + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X V).map f).hom.app (op U)) := by + have : Mono (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X V).app G).hom.app (op U)) := by + rw [← _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideOnOpenIso_hom_ι X V U G] infer_instance - apply (cancel_mono (((sheafSectionsSupportedOutsideInclusion X V).app G).hom.app (op U))).1 + apply (cancel_mono (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X V).app G).hom.app (op U))).1 rw [Category.assoc, sheafSectionsBetweenOpensGlobalIso_hom_inclusion] have h₁ := congrArg (fun q => q.hom.app (op ⊤)) ((sheafSectionsBetweenOpensInclusion X h).naturality f) have h₂ := congrArg (fun q => q.hom.app (op U)) - ((sheafSectionsSupportedOutsideInclusion X V).naturality f) - change (((sheafSectionsSupportedOutside X V).map f).hom.app (op U)) ≫ - ((sheafSectionsSupportedOutsideInclusion X V).app G).hom.app (op U) = - ((sheafSectionsSupportedOutsideInclusion X V).app F).hom.app (op U) ≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X V).naturality f) + change (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X V).map f).hom.app (op U)) ≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X V).app G).hom.app (op U) = + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X V).app F).hom.app (op U) ≫ f.hom.app (op U) at h₂ - change (((sheafSectionsBetweenOpens X h).map f).hom.app (op ⊤)) ≫ + change (((_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.sheafSectionsBetweenOpens X h).map f).hom.app (op ⊤)) ≫ ((sheafSectionsBetweenOpensInclusion X h).app G).hom.app (op ⊤) = ((sheafSectionsBetweenOpensInclusion X h).app F).hom.app (op ⊤) ≫ - (((openRestrictionPushforward X U).map f).hom.app (op ⊤)) at h₁ + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X U).map f).hom.app (op ⊤)) at h₁ rw [Category.assoc, h₂, sheafSectionsBetweenOpensGlobalIso_hom_inclusion_assoc] rw [← Category.assoc, h₁, Category.assoc] exact congrArg (fun q => @@ -140,8 +151,8 @@ theorem sheafSectionsBetweenOpensGlobalIso_naturality global sections of the kernel sheaf of restriction from `U` to `V` equal sections of `F` over `U` vanishing on `V`. This is that identification as a natural isomorphism in `F`. -/ def sheafSectionsBetweenOpensGlobalNatIso : - sheafSectionsBetweenOpens X h ⋙ supportEvaluation X ⊤ ≅ - sheafSectionsSupportedOutside X V ⋙ supportEvaluation X U := + _root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.sheafSectionsBetweenOpens X h ⋙ _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X ⊤ ≅ + _root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X V ⋙ _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U := NatIso.ofComponents (sheafSectionsBetweenOpensGlobalIso X h) (fun f => sheafSectionsBetweenOpensGlobalIso_naturality X h f) @@ -151,9 +162,9 @@ sections on `U` of `K` vanishing on `V`. In each degree both are the kernel of ` K^q(V)`. -/ def nestedSupportRestrictionLastComplexIso (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) : - (nestedSupportRestrictionSectionsComplexShortComplex X h ⊤ K).X₃ ≅ - ((supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj - (((sheafSectionsSupportedOutside X V).mapHomologicalComplex ℤᵘᵖ).obj K) := + (_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.nestedSupportRestrictionSectionsComplexShortComplex X h ⊤ K).X₃ ≅ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X U).mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X V).mapHomologicalComplex ℤᵘᵖ).obj K) := (NatIso.mapHomologicalComplex (sheafSectionsBetweenOpensGlobalNatIso X h) ℤᵘᵖ).app K set_option backward.isDefEq.respectTransparency false in @@ -163,24 +174,24 @@ restriction of the supported section to `U`. -/ @[reassoc] theorem toSheafSectionsBetweenOpens_global_comparison (F : Sheaf AddCommGrpCat.{u} X) : - ((toSheafSectionsBetweenOpens X h).app F).hom.app (op ⊤) ≫ + ((_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.toSheafSectionsBetweenOpens X h).app F).hom.app (op ⊤) ≫ (sheafSectionsBetweenOpensGlobalIso X h F).hom = - ((sheafSectionsSupportedOutside X V).obj F).obj.map (homOfLE (le_top : U ≤ ⊤)).op := by - have : Mono (((sheafSectionsSupportedOutsideInclusion X V).app F).hom.app (op U)) := by - rw [← sheafSectionsSupportedOutsideOnOpenIso_hom_ι X V U F] + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X V).obj F).obj.map (homOfLE (le_top : U ≤ ⊤)).op := by + have : Mono (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X V).app F).hom.app (op U)) := by + rw [← _root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideOnOpenIso_hom_ι X V U F] infer_instance - apply (cancel_mono (((sheafSectionsSupportedOutsideInclusion X V).app F).hom.app (op U))).1 + apply (cancel_mono (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X V).app F).hom.app (op U))).1 rw [Category.assoc, sheafSectionsBetweenOpensGlobalIso_hom_inclusion] - have hι := ((sheafSectionsSupportedOutsideInclusion X V).app F).hom.naturality + have hι := ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X V).app F).hom.naturality (homOfLE (le_top : U ≤ ⊤)).op rw [hι, ← Category.assoc] - have hg : ((toSheafSectionsBetweenOpens X h).app F).hom.app (op ⊤) ≫ + have hg : ((_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.toSheafSectionsBetweenOpens X h).app F).hom.app (op ⊤) ≫ ((sheafSectionsBetweenOpensInclusion X h).app F).hom.app (op ⊤) = - ((sheafSectionsSupportedOutsideInclusion X V).app F).hom.app (op ⊤) ≫ - ((toOpenRestrictionPushforward X U).app F).hom.app (op ⊤) := by - change (((toSheafSectionsBetweenOpens X h).app F) ≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutsideInclusion X V).app F).hom.app (op ⊤) ≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F).hom.app (op ⊤) := by + change (((_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.toSheafSectionsBetweenOpens X h).app F) ≫ ((sheafSectionsBetweenOpensInclusion X h).app F)).hom.app (op ⊤) = _ - simp only [toSheafSectionsBetweenOpens, sheafSectionsBetweenOpensInclusion, + simp only [_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.toSheafSectionsBetweenOpens, sheafSectionsBetweenOpensInclusion, kernel.map, kernel.lift_ι] rfl rw [hg, Category.assoc] @@ -194,12 +205,17 @@ before passage to homology. -/ @[reassoc] theorem nestedSupportRestrictionLastComplexIso_g (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) : - (nestedSupportRestrictionSectionsComplexShortComplex X h ⊤ K).g ≫ + (_root_.OAI.AlgebraicTopology.Support.NestedLocalization.TopCat.Sheaf.nestedSupportRestrictionSectionsComplexShortComplex X h ⊤ K).g ≫ (nestedSupportRestrictionLastComplexIso X h K).hom = - sectionComplexRestriction X ℤᵘᵖ - (((sheafSectionsSupportedOutside X V).mapHomologicalComplex ℤᵘᵖ).obj K) + _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X V).mapHomologicalComplex ℤᵘᵖ).obj K) (homOfLE (le_top : U ≤ ⊤)) := by ext n : 1 exact toSheafSectionsBetweenOpens_global_comparison X h (K.X n) -end TopCat.Sheaf +end Sheaf +end TopCat + +end + +end OAI.AlgebraicTopology.Support.NestedOnOpen diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/RelativeCohomologySheaf.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/RelativeCohomologySheaf.lean index 74fa6f7ed4..4730752e6b 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/RelativeCohomologySheaf.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/RelativeCohomologySheaf.lean @@ -1,10 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.RelativeCohomologySheaf +import HodgeConjecture.Definitions.AlgebraicTopology.Support.RelativeCohomologySheaf + +namespace OAI.AlgebraicTopology.Support.RelativeCohomologyEq + +open _root_.AlgebraicTopology /-! # The local relative-cohomology presheaf and its sheafification @@ -13,22 +18,23 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicTopology.Support.RelativeCohomologySheaf`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace Opposite HomologicalComplex -open TopCat.Presheaf +open _root_.CategoryTheory Limits _root_.TopologicalSpace Opposite _root_.HomologicalComplex +open _root_.TopCat.Presheaf -namespace AlgebraicTopology.Singular +section +namespace Singular variable {M : Type} [TopologicalSpace M] variable (X : TopCat.{0}) (S : Set X) (n : ℕ) @[simp] theorem supportRelativeCohomologyPresheaf_map_apply {U V : Opens X} - (hUV : U ≤ V) (a : RelativeCohomology ℚ (neighborhoodSupportComplementPair (V : Set X) S) n) : - (supportRelativeCohomologyPresheaf X S n).map (homOfLE hUV).op a = - relativeCohomologyMap ℚ n - (neighborhoodSupportInclusionPairMap (W := (U : Set X)) (V := (V : Set X)) hUV S) a := rfl + (hUV : U ≤ V) (a : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (V : Set X) S) n) : + (_root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyPresheaf X S n).map (homOfLE hUV).op a = + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (U : Set X)) (V := (V : Set X)) hUV S) a := rfl set_option backward.isDefEq.respectTransparency false in set_option backward.defeqAttrib.useBackward true in @@ -36,69 +42,74 @@ set_option backward.defeqAttrib.useBackward true in pair-inclusion pullback. -/ theorem supportRelativeCohomologyGerm_restrict {U V : Opens X} (hUV : U ≤ V) (x : X) (hx : x ∈ U) - (a : RelativeCohomology ℚ (neighborhoodSupportComplementPair (V : Set X) S) n) : - supportRelativeCohomologyGerm X S n U x hx - (relativeCohomologyMap ℚ n - (neighborhoodSupportInclusionPairMap (W := (U : Set X)) (V := (V : Set X)) hUV S) a) = - supportRelativeCohomologyGerm X S n V x (hUV hx) a := by + (a : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (V : Set X) S) n) : + _root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyGerm X S n U x hx + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (U : Set X)) (V := (V : Set X)) hUV S) a) = + _root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyGerm X S n V x (hUV hx) a := by have h := ConcreteCategory.congr_hom - ((supportRelativeCohomologyToSheaf X S n).naturality (homOfLE hUV).op) a - exact (congrArg ((supportRelativeCohomologySheaf X S n).presheaf.germ U x hx) h).trans - ((supportRelativeCohomologySheaf X S n).presheaf.germ_res_apply (homOfLE hUV) x hx _) + ((_root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyToSheaf X S n).naturality (homOfLE hUV).op) a + exact (congrArg ((_root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologySheaf X S n).presheaf.germ U x hx) h).trans + ((_root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologySheaf X S n).presheaf.germ_res_apply (homOfLE hUV) x hx _) /-- Equality after restriction to a common neighborhood gives equal sheaf germs. -/ theorem supportRelativeCohomologyGerm_eq_of_restrict_eq {U V W : Opens X} (hWU : W ≤ U) (hWV : W ≤ V) (x : X) (hx : x ∈ W) - (a : RelativeCohomology ℚ (neighborhoodSupportComplementPair (U : Set X) S) n) - (b : RelativeCohomology ℚ (neighborhoodSupportComplementPair (V : Set X) S) n) - (h : relativeCohomologyMap ℚ n - (neighborhoodSupportInclusionPairMap (W := (W : Set X)) (V := (U : Set X)) hWU S) a = - relativeCohomologyMap ℚ n - (neighborhoodSupportInclusionPairMap (W := (W : Set X)) (V := (V : Set X)) hWV S) b) : - supportRelativeCohomologyGerm X S n U x (hWU hx) a = - supportRelativeCohomologyGerm X S n V x (hWV hx) b := by + (a : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (U : Set X) S) n) + (b : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (V : Set X) S) n) + (h : _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (W : Set X)) (V := (U : Set X)) hWU S) a = + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (W : Set X)) (V := (V : Set X)) hWV S) b) : + _root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyGerm X S n U x (hWU hx) a = + _root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyGerm X S n V x (hWV hx) b := by rw [← supportRelativeCohomologyGerm_restrict X S n hWU x hx, ← supportRelativeCohomologyGerm_restrict X S n hWV x hx, h] /-- When a neighborhood misses the support, its relative-chain complex is zero. -/ theorem neighborhoodSupportRelativeChains_isZero (V : Set X) (hV : ∀ x ∈ V, x ∉ S) : - IsZero ((relativeChainFunctor ℚ).obj (neighborhoodSupportComplementPair V S)) := by + IsZero ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair V S)) := by have hset : {v : V | v.1 ∉ S} = Set.univ := Set.eq_univ_of_forall fun v => hV v.1 v.2 - change IsZero ((relativeChainFunctor ℚ).obj (TopPair.ofSubset (X := TopCat.of V) _)) + change IsZero ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeChainFunctor ℚ).obj (TopPair.ofSubset (X := TopCat.of V) _)) rw [hset] let P := TopPair.ofSubset (X := TopCat.of V) (Set.univ : Set V) have hPi : IsIso P.map := (TopCat.isIso_iff_isHomeomorph P.map).mpr (Homeomorph.Set.univ V).isHomeomorph - have hchain : IsIso ((chainPairFunctor ℚ).obj P).hom := by + have hchain : IsIso ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj P).hom := by change IsIso (((singularChainComplexFunctor (ModuleCat ℚ)).obj (ModuleCat.of ℚ ℚ)).map P.map) infer_instance - exact isZero_cokernel_of_epi ((chainPairFunctor ℚ).obj P).hom + exact isZero_cokernel_of_epi ((_root_.OAI.AlgebraicTopology.Singular.Cohomology.chainPairFunctor ℚ).obj P).hom /-- Relative cohomology vanishes on neighborhoods disjoint from the support. -/ theorem neighborhoodSupportRelativeCohomology_subsingleton (V : Set X) (hV : ∀ x ∈ V, x ∉ S) : - Subsingleton (RelativeCohomology ℚ (neighborhoodSupportComplementPair V S) n) := by - have hh : IsZero (RelativeHomology ℚ (neighborhoodSupportComplementPair V S) n) := + Subsingleton (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair V S) n) := by + have hh : IsZero (_root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeHomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair V S) n) := (homologyFunctor (ModuleCat ℚ) (ComplexShape.down ℕ) n).map_isZero (neighborhoodSupportRelativeChains_isZero X S V hV) - exact relativeCohomology_subsingleton ℚ _ n (ModuleCat.subsingleton_of_isZero hh) + exact _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeCohomology_subsingleton ℚ _ n (ModuleCat.subsingleton_of_isZero hh) set_option backward.isDefEq.respectTransparency false in set_option backward.defeqAttrib.useBackward true in /-- Off closed support, every local relative class has zero sheaf germ. -/ theorem supportRelativeCohomologyGerm_eq_zero_of_not_mem (hS : IsClosed S) (V : Opens X) (x : X) (hx : x ∈ V) (hxS : x ∉ S) - (a : RelativeCohomology ℚ (neighborhoodSupportComplementPair (V : Set X) S) n) : - supportRelativeCohomologyGerm X S n V x hx a = 0 := by + (a : _root_.OAI.AlgebraicTopology.Singular.Cohomology.RelativeCohomology ℚ (_root_.OAI.AlgebraicTopology.LocalHomology.FundamentalClass.Singular.neighborhoodSupportComplementPair (V : Set X) S) n) : + _root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyGerm X S n V x hx a = 0 := by let W : Opens X := V ⊓ ⟨Sᶜ, hS.isOpen_compl⟩ have hWV : W ≤ V := inf_le_left have hxW : x ∈ W := ⟨hx, hxS⟩ let := neighborhoodSupportRelativeCohomology_subsingleton X S n W (fun _ hy => hy.2) rw [← supportRelativeCohomologyGerm_restrict X S n hWV x hxW] - have hz : relativeCohomologyMap ℚ n - (neighborhoodSupportInclusionPairMap (W := (W : Set X)) (V := (V : Set X)) hWV S) a = 0 := + have hz : _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (W : Set X)) (V := (V : Set X)) hWV S) a = 0 := Subsingleton.elim _ _ rw [hz] - simp only [supportRelativeCohomologyGerm, map_zero] + simp only [_root_.OAI.AlgebraicTopology.Support.RelativeCohomologySheaf.Singular.supportRelativeCohomologyGerm, map_zero] + +end Singular +end + +end -end AlgebraicTopology.Singular +end OAI.AlgebraicTopology.Support.RelativeCohomologyEq diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SectionRestrictionCone.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SectionRestrictionCone.lean index 88fbeb6281..307b5cbf73 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SectionRestrictionCone.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SectionRestrictionCone.lean @@ -1,10 +1,16 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.SectionRestrictionCone +import HodgeConjecture.Definitions.AlgebraicTopology.Support.SectionRestrictionCone + +namespace OAI.AlgebraicTopology.Support.SectionRestrictionIs + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Supported-section kernels and open restriction cones @@ -13,13 +19,17 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.AlgebraicTopology.Support.SectionRestrictionCone`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) @@ -29,17 +39,22 @@ variable (U V : Opens X) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) zero because its defining restriction map is an isomorphism. -/ theorem supportedOutsideSections_isZero_of_le (F : Sheaf AddCommGrpCat.{u} X) (hVU : V ≤ U) : - IsZero (((sheafSectionsSupportedOutside X U).obj F).obj.obj (op V)) := by + IsZero (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).obj F).obj.obj (op V)) := by have he : U.isOpenEmbedding.functor.obj ((Opens.map U.inclusion').obj V) = V := by rw [Opens.functor_map_eq_inf, inf_eq_left.mpr hVU] have hi : IsIso (U.isOpenEmbedding.isOpenMap.adjunction.counit.app V) := by rw [show U.isOpenEmbedding.isOpenMap.adjunction.counit.app V = eqToHom he from Subsingleton.elim _ _] infer_instance - let r := ((toOpenRestrictionPushforward X U).app F).hom.app (op V) + let r := ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.toOpenRestrictionPushforward X U).app F).hom.app (op V) have : IsIso r := by change IsIso (F.obj.map (U.isOpenEmbedding.isOpenMap.adjunction.counit.app V).op) infer_instance - exact (isZero_kernel_of_mono r).of_iso (sheafSectionsSupportedOutsideOnOpenIso X U V F) + exact (isZero_kernel_of_mono r).of_iso (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsOn.TopCat.Sheaf.sheafSectionsSupportedOutsideOnOpenIso X U V F) + +end Sheaf +end TopCat + +end -end TopCat.Sheaf +end OAI.AlgebraicTopology.Support.SectionRestrictionIs diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SectionRestrictionConeNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SectionRestrictionConeNaturality.lean index 699688d77c..c93c3f8631 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SectionRestrictionConeNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SectionRestrictionConeNaturality.lean @@ -1,14 +1,20 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SectionRestrictionCone -public import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingCoconeShortExactNaturality -public import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingConeMapNaturality +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SectionRestrictionCone +import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingCoconeShortExactNaturality +import HodgeConjecture.Lemmas.Algebra.Homology.DerivedCategory.MappingConeMapNaturality + +namespace OAI.AlgebraicTopology.Support.SectionRestrictionConeNaturality + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Restriction naturality of the supported-section kernel comparison @@ -18,13 +24,17 @@ particular the short-exact-sequence lift is the positive canonical lift; its naturality is established before passing to homology or sheafification. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf variable (X : TopCat.{u}) @@ -33,8 +43,8 @@ lemma sectionComplexRestriction_square {I : Type*} (c : ComplexShape I) (K : HomologicalComplex (Sheaf AddCommGrpCat.{u} X) c) {V W V' W' : Opens X} (i : W ⟶ V) (i' : W' ⟶ V') (a : V' ⟶ V) (b : W' ⟶ W) : - sectionComplexRestriction X c K i ≫ sectionComplexRestriction X c K b = - sectionComplexRestriction X c K a ≫ sectionComplexRestriction X c K i' := by + _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X c K i ≫ _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X c K b = + _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X c K a ≫ _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X c K i' := by apply HomologicalComplex.Hom.ext funext n change (K.X n).obj.map i.op ≫ (K.X n).obj.map b.op = @@ -49,11 +59,11 @@ def sectionComplexRestrictionConeMap (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) {V W V' W' : Opens X} (i : W ⟶ V) (i' : W' ⟶ V') (a : V' ⟶ V) (b : W' ⟶ W) : - CochainComplex.mappingCone (sectionComplexRestriction X ℤᵘᵖ K i) ⟶ - CochainComplex.mappingCone (sectionComplexRestriction X ℤᵘᵖ K i') := + CochainComplex.mappingCone (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ K i) ⟶ + CochainComplex.mappingCone (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ K i') := CochainComplex.mappingCone.map _ _ - (sectionComplexRestriction X ℤᵘᵖ K a) - (sectionComplexRestriction X ℤᵘᵖ K b) + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ K a) + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ K b) (sectionComplexRestriction_square X ℤᵘᵖ K i i' a b) variable (U : Opens X) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) @@ -63,24 +73,24 @@ variable (U : Opens X) (K : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℤ) with `U` open and `W ⊆ V` open. This restricts all three complexes in `Γ_{X \ U}(V,K) → K(V) → K(V ∩ U)` to the corresponding complexes over `W`. -/ def supportRestrictionSectionsComplexMap : - supportRestrictionSectionsComplexShortComplex X U V K ⟶ - supportRestrictionSectionsComplexShortComplex X U W K where - τ₁ := sectionComplexRestriction X ℤᵘᵖ - (supportRestrictionComplexShortComplex X U K).X₁ a - τ₂ := sectionComplexRestriction X ℤᵘᵖ K a - τ₃ := sectionComplexRestriction X ℤᵘᵖ - (supportRestrictionComplexShortComplex X U K).X₃ a - comm₁₂ := (((supportEvaluationRestriction X a).mapHomologicalComplex ℤᵘᵖ).naturality - (supportRestrictionComplexShortComplex X U K).f).symm - comm₂₃ := (((supportEvaluationRestriction X a).mapHomologicalComplex ℤᵘᵖ).naturality - (supportRestrictionComplexShortComplex X U K).g).symm + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex X U V K ⟶ + _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex X U W K where + τ₁ := _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionComplexShortComplex X U K).X₁ a + τ₂ := _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ K a + τ₃ := _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionComplexShortComplex X U K).X₃ a + comm₁₂ := (((_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportEvaluationRestriction X a).mapHomologicalComplex ℤᵘᵖ).naturality + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionComplexShortComplex X U K).f).symm + comm₂₃ := (((_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportEvaluationRestriction X a).mapHomologicalComplex ℤᵘᵖ).naturality + (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionComplexShortComplex X U K).g).symm /-- The pushforward/intersection identification commutes with restriction. -/ @[reassoc] lemma supportedOutsideIntersectionIso_naturality (F : Sheaf AddCommGrpCat.{u} X) : - ((openRestrictionPushforward X U).obj F).obj.map a.op ≫ - (supportedOutsideIntersectionIso X U W F).hom = - (supportedOutsideIntersectionIso X U V F).hom ≫ + ((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.openRestrictionPushforward X U).obj F).obj.map a.op ≫ + (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.supportedOutsideIntersectionIso X U W F).hom = + (_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.supportedOutsideIntersectionIso X U V F).hom ≫ F.obj.map (homOfLE (inf_le_inf_right U (leOfHom a))).op := by change F.obj.map _ ≫ F.obj.map _ = F.obj.map _ ≫ F.obj.map _ rw [← Functor.map_comp, ← Functor.map_comp] @@ -90,9 +100,9 @@ lemma supportedOutsideIntersectionIso_naturality (F : Sheaf AddCommGrpCat.{u} X) @[reassoc] lemma supportRestrictionSectionsIntersectionIso_naturality : (supportRestrictionSectionsComplexMap X U K a).τ₃ ≫ - (supportRestrictionSectionsIntersectionIso X U W K).hom = - (supportRestrictionSectionsIntersectionIso X U V K).hom ≫ - sectionComplexRestriction X ℤᵘᵖ K + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportRestrictionSectionsIntersectionIso X U W K).hom = + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportRestrictionSectionsIntersectionIso X U V K).hom ≫ + _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ K (homOfLE (inf_le_inf_right U (leOfHom a))) := HomologicalComplex.Hom.ext (funext fun n ↦ supportedOutsideIntersectionIso_naturality X U a (K.X n)) @@ -101,11 +111,11 @@ set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in /-- The cone identification is a standard cone map with the specified components. -/ lemma supportRestrictionSectionsConeIso_hom (V : Opens X) : - (supportRestrictionSectionsConeIso X U V K).hom = + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportRestrictionSectionsConeIso X U V K).hom = CochainComplex.mappingCone.map _ _ (𝟙 _) - (supportRestrictionSectionsIntersectionIso X U V K).hom - (by simpa using supportRestrictionSectionsIntersectionIso_restriction X U V K) := - CochainComplex.mappingCone.mapArrowHom_eq_map _ _ _ _ _ + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportRestrictionSectionsIntersectionIso X U V K).hom + (by simpa using _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportRestrictionSectionsIntersectionIso_restriction X U V K) := + _root_.OAI.Algebra.Homology.MappingConeMapNaturality.CochainComplex.mappingCone.mapArrowHom_eq_map _ _ _ _ _ set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in @@ -116,8 +126,8 @@ lemma supportRestrictionSectionsConeIso_naturality : (supportRestrictionSectionsComplexMap X U K a).τ₂ (supportRestrictionSectionsComplexMap X U K a).τ₃ (supportRestrictionSectionsComplexMap X U K a).comm₂₃.symm ≫ - (supportRestrictionSectionsConeIso X U W K).hom = - (supportRestrictionSectionsConeIso X U V K).hom ≫ + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportRestrictionSectionsConeIso X U W K).hom = + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportRestrictionSectionsConeIso X U V K).hom ≫ sectionComplexRestrictionConeMap X K (Opens.infLELeft V U) (Opens.infLELeft W U) a (homOfLE (inf_le_inf_right U (leOfHom a))) := by rw [supportRestrictionSectionsConeIso_hom, supportRestrictionSectionsConeIso_hom] @@ -133,22 +143,22 @@ set_option backward.isDefEq.respectTransparency false in lemma supportedSectionHomologyIsoRestrictionCone_naturality (hK : ∀ n, (K.X n).IsFlasque) (n : ℤ) : HomologicalComplex.homologyMap (supportRestrictionSectionsComplexMap X U K a).τ₁ n ≫ - (supportedSectionHomologyIsoRestrictionCone X U W K hK n).hom = - (supportedSectionHomologyIsoRestrictionCone X U V K hK n).hom ≫ + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportedSectionHomologyIsoRestrictionCone X U W K hK n).hom = + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportedSectionHomologyIsoRestrictionCone X U V K hK n).hom ≫ HomologicalComplex.homologyMap (sectionComplexRestrictionConeMap X K (Opens.infLELeft V U) (Opens.infLELeft W U) a (homOfLE (inf_le_inf_right U (leOfHom a)))) (n - 1) := by - let S := supportRestrictionSectionsComplexShortComplex X U V K - let T := supportRestrictionSectionsComplexShortComplex X U W K - let hS := supportRestrictionSectionsComplexShortComplex_shortExact_of_flasque X U V K hK - let hT := supportRestrictionSectionsComplexShortComplex_shortExact_of_flasque X U W K hK + let S := _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex X U V K + let T := _root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex X U W K + let hS := _root_.OAI.AlgebraicTopology.Support.FlasqueComparison.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex_shortExact_of_flasque X U V K hK + let hT := _root_.OAI.AlgebraicTopology.Support.FlasqueComparison.TopCat.Sheaf.supportRestrictionSectionsComplexShortComplex_shortExact_of_flasque X U W K hK let H := HomologicalComplex.homologyFunctor AddCommGrpCat.{u} ℤᵘᵖ (n - 1) change HomologicalComplex.homologyMap (supportRestrictionSectionsComplexMap X U K a).τ₁ n ≫ - ((CochainComplex.mappingCocone.shortExactHomologyIsoCone T hT (n - 1) n (by omega)).hom ≫ - H.map (supportRestrictionSectionsConeIso X U W K).hom) = - ((CochainComplex.mappingCocone.shortExactHomologyIsoCone S hS (n - 1) n (by omega)).hom ≫ - H.map (supportRestrictionSectionsConeIso X U V K).hom) ≫ _ - rw [CochainComplex.mappingCocone.shortExactHomologyIsoCone_naturality_assoc + ((_root_.OAI.Algebra.Homology.CoconeShortExactNaturality.CochainComplex.mappingCocone.shortExactHomologyIsoCone T hT (n - 1) n (by omega)).hom ≫ + H.map (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportRestrictionSectionsConeIso X U W K).hom) = + ((_root_.OAI.Algebra.Homology.CoconeShortExactNaturality.CochainComplex.mappingCocone.shortExactHomologyIsoCone S hS (n - 1) n (by omega)).hom ≫ + H.map (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportRestrictionSectionsConeIso X U V K).hom) ≫ _ + rw [_root_.OAI.Algebra.Homology.DerivedCategoryConeNaturality.CochainComplex.mappingCocone.shortExactHomologyIsoCone_naturality_assoc (supportRestrictionSectionsComplexMap X U K a) hS hT (n - 1) n (by omega)] simp only [Category.assoc] congr 1 @@ -159,14 +169,14 @@ lemma supportedSectionHomologyIsoRestrictionCone_naturality lemma sectionComplexRestrictionExtendConeIso_hom (L : CochainComplex (Sheaf AddCommGrpCat.{u} X) ℕ) {V W : Opens X} (i : W ⟶ V) : - (sectionComplexRestrictionExtendConeIso X L i).hom = + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestrictionExtendConeIso X L i).hom = CochainComplex.mappingCone.map _ _ - (HomologicalComplex.mapExtendCanonicalIso (supportEvaluation X V) L + (_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V) L ComplexShape.embeddingUpNat).hom - (HomologicalComplex.mapExtendCanonicalIso (supportEvaluation X W) L + (_root_.OAI.Algebra.Homology.MapExtend.HomologicalComplex.mapExtendCanonicalIso (_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X W) L ComplexShape.embeddingUpNat).hom - (sectionComplexRestriction_extend X L i) := - CochainComplex.mappingCone.mapArrowHom_eq_map _ _ _ _ _ + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction_extend X L i) := + _root_.OAI.Algebra.Homology.MappingConeMapNaturality.CochainComplex.mappingCone.mapArrowHom_eq_map _ _ _ _ _ /-- The canonical grading cone comparison respects the restriction rectangle. -/ @[reassoc] @@ -175,18 +185,23 @@ lemma sectionComplexRestrictionExtendConeIso_naturality {V W V' W' : Opens X} (i : W ⟶ V) (i' : W' ⟶ V') (a : V' ⟶ V) (b : W' ⟶ W) : sectionComplexRestrictionConeMap X (L.extend ComplexShape.embeddingUpNat) i i' a b ≫ - (sectionComplexRestrictionExtendConeIso X L i').hom = - (sectionComplexRestrictionExtendConeIso X L i).hom ≫ + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestrictionExtendConeIso X L i').hom = + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestrictionExtendConeIso X L i).hom ≫ CochainComplex.mappingCone.map _ _ - (HomologicalComplex.extendMap (sectionComplexRestriction X (.up ℕ) L a) + (HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X (.up ℕ) L a) ComplexShape.embeddingUpNat) - (HomologicalComplex.extendMap (sectionComplexRestriction X (.up ℕ) L b) + (HomologicalComplex.extendMap (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X (.up ℕ) L b) ComplexShape.embeddingUpNat) (by rw [← HomologicalComplex.extendMap_comp, ← HomologicalComplex.extendMap_comp, sectionComplexRestriction_square X (.up ℕ) L i i' a b]) := by rw [sectionComplexRestrictionExtendConeIso_hom, sectionComplexRestrictionExtendConeIso_hom] dsimp only [sectionComplexRestrictionConeMap] rw [← CochainComplex.mappingCone.map_comp, ← CochainComplex.mappingCone.map_comp] - congr 1 <;> exact sectionComplexRestriction_extend X L _ + congr 1 <;> exact _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction_extend X L _ + +end Sheaf +end TopCat + +end -end TopCat.Sheaf +end OAI.AlgebraicTopology.Support.SectionRestrictionConeNaturality diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SheafCohomology.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SheafCohomology.lean index 36b0975c34..2f6a59c869 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SheafCohomology.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SheafCohomology.lean @@ -1,11 +1,17 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.Constant -public import Mathlib.Topology.Sheaves.Functors +import HodgeConjecture.Definitions.AlgebraicTopology.Sheaf.Constant +import Mathlib.Topology.Sheaves.Functors + +namespace OAI.AlgebraicTopology.Support.SheafCohomology + +open _root_.TopCat +open _root_.TopCat.Sheaf /-! # Restriction of constant sheaves along a continuous map @@ -14,13 +20,17 @@ For a continuous map `f : X → Y` and an abelian group `A`, this is the morphis constant sheaves, with its identity and composition laws. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits Opposite TopologicalSpace +open _root_.CategoryTheory _root_.CategoryTheory.Limits Opposite _root_.TopologicalSpace universe u -namespace TopCat.Sheaf +namespace TopCat +open _root_.TopCat +namespace Sheaf +open _root_.TopCat +open _root_.TopCat.Sheaf open _root_.Opens @@ -65,4 +75,9 @@ lemma constantRestriction_comp {X Y Z : TopCat.{u}} (f : X ⟶ Y) (g : Y ⟶ Z) exact (NatTrans.congr_app (toSheafify_constantRestriction f A) ((Opens.map g).op.obj U)).symm -end TopCat.Sheaf +end Sheaf +end TopCat + +end + +end OAI.AlgebraicTopology.Support.SheafCohomology diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SingularFlasqueModel.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SingularFlasqueModel.lean index c8774a99a0..93652ae6fe 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SingularFlasqueModel.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SingularFlasqueModel.lean @@ -1,12 +1,15 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.SingularFlasqueModel +import HodgeConjecture.Definitions.AlgebraicTopology.Support.SingularFlasqueModel + +namespace OAI.AlgebraicTopology.Support.SingularFlasqueOn /-! # Constructions used only in proofs @@ -17,11 +20,12 @@ The statement of the conjecture never inspects them: every path from the stateme of them runs through a proof, so proof irrelevance makes their bodies immaterial. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits TopologicalSpace HomologicalComplex +open _root_.CategoryTheory Limits _root_.TopologicalSpace _root_.HomologicalComplex -namespace AlgebraicTopology.Singular +section +namespace Singular variable (X : TopCat.{0}) @@ -33,10 +37,10 @@ variable [T2Space X] [∀ V : Opens X, ParacompactSpace V] /-- The comparison is a quasi-isomorphism on sections on every open set. This stronger conclusion is essential for applying local normal-slice calculations. -/ theorem supportedSingularToInjectiveComplex_onOpen_quasiIso (U V : Opens X) : - QuasiIso (((TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map - (supportedSingularToInjectiveComplex X hX U)) := - TopCat.Sheaf.supportedSections_map_quasiIso_of_flasque X U V - (singularToConstantInjectiveComplex X hX) 0 0 (fun _ => inferInstance) (fun _ => inferInstance) + QuasiIso (((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedSingularToInjectiveComplex X hX U)) := + _root_.OAI.AlgebraicTopology.Support.FlasqueComparison.TopCat.Sheaf.supportedSections_map_quasiIso_of_flasque X U V + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.singularToConstantInjectiveComplex X hX) 0 0 (fun _ => inferInstance) (fun _ => inferInstance) /-- Let `X` be Hausdorff, with every open subset paracompact, and with a basis of contractible open neighborhoods. Let `C` be the sheafified rational singular cochain complex and `I` an injective @@ -44,14 +48,19 @@ resolution of the constant rational sheaf. For opens `U,V ⊆ X`, the augmentati comparison `C → I` induces this isomorphism `H^n(Γ_{X \ U}(V,C)) ≅ H^n(Γ_{X \ U}(V,I))`. Here supported sections on `V` are sections vanishing on `V ∩ U`, and `n` is any integer. -/ def supportedSingularInjectiveHomologyIso (U V : Opens X) (n : ℤ) : - ((((TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj - (supportedRationalSingularCochainComplex X U))).homology n ≅ - ((((TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj - (((TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj - (rationalConstantInjectiveComplex X)))).homology n := - let f := ((TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map - (supportedSingularToInjectiveComplex X hX U) + ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X U))).homology n ≅ + ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj + (((_root_.OAI.AlgebraicTopology.Support.DerivedSections.TopCat.Sheaf.sheafSectionsSupportedOutside X U).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.rationalConstantInjectiveComplex X)))).homology n := + let f := ((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).map + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedSingularToInjectiveComplex X hX U) letI : QuasiIso f := supportedSingularToInjectiveComplex_onOpen_quasiIso X hX U V asIso (HomologicalComplex.homologyMap f n) -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.Support.SingularFlasqueOn diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SingularSectionNaturality.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SingularSectionNaturality.lean index 468201b6a1..879da38d0d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SingularSectionNaturality.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/AlgebraicTopology/Support/SingularSectionNaturality.lean @@ -1,24 +1,29 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module import HodgeConjecture.Mathlib.Algebra.Homology.Notation -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SectionRestrictionConeNaturality -public import HodgeConjecture.Definitions.AlgebraicTopology.Support.SingularSectionCohomology -public import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainOpenConeNaturality -public import HodgeConjecture.Lemmas.AlgebraicTopology.Support.RelativeCohomologySheaf +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.SectionRestrictionConeNaturality +import HodgeConjecture.Definitions.AlgebraicTopology.Support.SingularSectionCohomology +import HodgeConjecture.Lemmas.AlgebraicTopology.Singular.Sheaf.CochainOpenConeNaturality +import HodgeConjecture.Lemmas.AlgebraicTopology.Support.RelativeCohomologySheaf + +namespace OAI.AlgebraicTopology.Support.SingularSectionNaturality + /-! # Naturality of supported singular-section relative cohomology -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits TopologicalSpace Opposite +open _root_.CategoryTheory _root_.CategoryTheory.Limits _root_.TopologicalSpace Opposite -namespace AlgebraicTopology.Singular +section +namespace Singular -open TopCat.Sheaf +open _root_.TopCat.Sheaf variable (X : TopCat.{0}) [T2Space X] [∀ V : Opens X, ParacompactSpace V] (U : Opens X) {V W : Opens X} (a : W ⟶ V) @@ -28,13 +33,13 @@ for sheafified rational singular cochains. This identifies `H^n(Γ(V, Γ_{X \ U} `H^{n-1}(Cone(C^•(V) → C^•(V ∩ U)))`, using the inclusion of the kernel of restriction and extension to integer degrees. -/ def supportedSingularSectionConeHomologyIso (V : Opens X) (n : ℤ) : - ((((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj - (supportedRationalSingularCochainComplex X U))).homology n ≅ - (openSingularSheafRestrictionCone ℚ X (Opens.infLELeft V U)).homology (n - 1) := - supportedSectionHomologyIsoRestrictionCone X U V (rationalSingularCochainComplex X) + ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X U))).homology n ≅ + (_root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openSingularSheafRestrictionCone ℚ X (Opens.infLELeft V U)).homology (n - 1) := + _root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportedSectionHomologyIsoRestrictionCone X U V (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.rationalSingularCochainComplex X) (fun _ => inferInstance) n ≪≫ - HomologicalComplex.homologyMapIso (sectionComplexRestrictionExtendConeIso X - (singularCochainSheafComplex ℚ X) (Opens.infLELeft V U)) (n - 1) + HomologicalComplex.homologyMapIso (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestrictionExtendConeIso X + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex ℚ X) (Opens.infLELeft V U)) (n - 1) set_option backward.defeqAttrib.useBackward true in set_option backward.isDefEq.respectTransparency false in @@ -43,82 +48,87 @@ set_option backward.isDefEq.respectTransparency.types false in @[reassoc] lemma supportedSingularSectionConeHomologyIso_naturality (n : ℤ) : HomologicalComplex.homologyMap - (sectionComplexRestriction X ℤᵘᵖ (supportedRationalSingularCochainComplex X U) a) n ≫ + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X U) a) n ≫ (supportedSingularSectionConeHomologyIso X U W n).hom = (supportedSingularSectionConeHomologyIso X U V n).hom ≫ HomologicalComplex.homologyMap - (openSingularSheafRestrictionConeMap ℚ X (Opens.infLELeft V U) (Opens.infLELeft W U) + (_root_.OAI.AlgebraicTopology.Singular.CochainOpenConeNaturality.openSingularSheafRestrictionConeMap ℚ X (Opens.infLELeft V U) (Opens.infLELeft W U) a (homOfLE (inf_le_inf_right U (leOfHom a)))) (n - 1) := by dsimp only [supportedSingularSectionConeHomologyIso, Iso.trans_hom] change HomologicalComplex.homologyMap - (supportRestrictionSectionsComplexMap X U (rationalSingularCochainComplex X) a).τ₁ n ≫ - ((supportedSectionHomologyIsoRestrictionCone X U W (rationalSingularCochainComplex X) + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionConeNaturality.TopCat.Sheaf.supportRestrictionSectionsComplexMap X U (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.rationalSingularCochainComplex X) a).τ₁ n ≫ + ((_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.supportedSectionHomologyIsoRestrictionCone X U W (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.rationalSingularCochainComplex X) (fun _ => inferInstance) n).hom ≫ _) = _ - rw [supportedSectionHomologyIsoRestrictionCone_naturality_assoc X U - (rationalSingularCochainComplex X) a] + rw [_root_.OAI.AlgebraicTopology.Support.SectionRestrictionConeNaturality.TopCat.Sheaf.supportedSectionHomologyIsoRestrictionCone_naturality_assoc X U + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.rationalSingularCochainComplex X) a] simp only [Category.assoc] congr 1 let H := HomologicalComplex.homologyFunctor AddCommGrpCat ℤᵘᵖ (n - 1) change H.map _ ≫ H.map _ = H.map _ ≫ H.map _ rw [← H.map_comp, ← H.map_comp] - exact congrArg H.map (sectionComplexRestrictionExtendConeIso_naturality X - (singularCochainSheafComplex ℚ X) (Opens.infLELeft V U) (Opens.infLELeft W U) + exact congrArg H.map (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionConeNaturality.TopCat.Sheaf.sectionComplexRestrictionExtendConeIso_naturality X + (_root_.OAI.AlgebraicTopology.Singular.SheafCochain.singularCochainSheafComplex ℚ X) (Opens.infLELeft V U) (Opens.infLELeft W U) a (homOfLE (inf_le_inf_right U (leOfHom a)))) /-- Restriction naturality of the whole supported-section-to-relative equivalence. -/ lemma supportedRationalSingularSectionCohomologyEquivRelative_naturality (n : ℕ) - (z : ((((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj - (supportedRationalSingularCochainComplex X U))).homology (n : ℤ)) : - supportedRationalSingularSectionCohomologyEquivRelative X U W n + (z : ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X U))).homology (n : ℤ)) : + _root_.OAI.AlgebraicTopology.Support.SingularSectionCohomology.Singular.supportedRationalSingularSectionCohomologyEquivRelative X U W n (HomologicalComplex.homologyMap - (sectionComplexRestriction X ℤᵘᵖ (supportedRationalSingularCochainComplex X U) a) + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X U) a) (n : ℤ) z) = - relativeCohomologyMap ℚ n - (openInclusionPairMap X (Opens.infLELeft V U) (Opens.infLELeft W U) + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.Singular.CochainOpenConeNaturality.openInclusionPairMap X (Opens.infLELeft V U) (Opens.infLELeft W U) a (homOfLE (inf_le_inf_right U (leOfHom a)))) - (supportedRationalSingularSectionCohomologyEquivRelative X U V n z) := by - change openSingularSheafRestrictionConeCohomologyEquivRelative X (Opens.infLELeft W U) n + (_root_.OAI.AlgebraicTopology.Support.SingularSectionCohomology.Singular.supportedRationalSingularSectionCohomologyEquivRelative X U V n z) := by + change _root_.OAI.AlgebraicTopology.Singular.SheafCochainOpenCone.openSingularSheafRestrictionConeCohomologyEquivRelative X (Opens.infLELeft W U) n ((supportedSingularSectionConeHomologyIso X U W (n : ℤ)).hom (HomologicalComplex.homologyMap - (sectionComplexRestriction X ℤᵘᵖ (supportedRationalSingularCochainComplex X U) a) + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X U) a) (n : ℤ) z)) = _ have h := congrArg (fun f => f z) (supportedSingularSectionConeHomologyIso_naturality X U a (n : ℤ)) change (supportedSingularSectionConeHomologyIso X U W (n : ℤ)).hom (HomologicalComplex.homologyMap - (sectionComplexRestriction X ℤᵘᵖ (supportedRationalSingularCochainComplex X U) a) + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X U) a) (n : ℤ) z) = HomologicalComplex.homologyMap - (openSingularSheafRestrictionConeMap ℚ X (Opens.infLELeft V U) (Opens.infLELeft W U) + (_root_.OAI.AlgebraicTopology.Singular.CochainOpenConeNaturality.openSingularSheafRestrictionConeMap ℚ X (Opens.infLELeft V U) (Opens.infLELeft W U) a (homOfLE (inf_le_inf_right U (leOfHom a)))) ((n : ℤ) - 1) ((supportedSingularSectionConeHomologyIso X U V (n : ℤ)).hom z) at h rw [h] - exact openSingularSheafRestrictionConeCohomologyEquivRelative_naturality X + exact _root_.OAI.AlgebraicTopology.Singular.CochainOpenConeNaturality.openSingularSheafRestrictionConeCohomologyEquivRelative_naturality X (Opens.infLELeft V U) (Opens.infLELeft W U) a (homOfLE (inf_le_inf_right U (leOfHom a))) n _ /-- The final support-complement comparison preserves ambient-open restrictions. -/ lemma supportedRationalSingularSectionCohomologyEquivSupportComplement_naturality (S : Set X) (hS : IsClosed S) {V W : Opens X} (a : W ⟶ V) (n : ℕ) - (z : ((((supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj - (supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩))).homology (n : ℤ)) : - supportedRationalSingularSectionCohomologyEquivSupportComplement X S hS W n + (z : ((((_root_.OAI.AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation X V).mapHomologicalComplex ℤᵘᵖ).obj + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩))).homology (n : ℤ)) : + _root_.OAI.AlgebraicTopology.Support.SingularSectionCohomology.Singular.supportedRationalSingularSectionCohomologyEquivSupportComplement X S hS W n (HomologicalComplex.homologyMap - (sectionComplexRestriction X ℤᵘᵖ - (supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩) a) (n : ℤ) z) = - relativeCohomologyMap ℚ n - (neighborhoodSupportInclusionPairMap + (_root_.OAI.AlgebraicTopology.Support.SectionRestrictionCone.TopCat.Sheaf.sectionComplexRestriction X ℤᵘᵖ + (_root_.OAI.AlgebraicTopology.Support.SingularFlasqueModel.Singular.supportedRationalSingularCochainComplex X ⟨Sᶜ, hS.isOpen_compl⟩) a) (n : ℤ) z) = + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n + (_root_.OAI.AlgebraicTopology.LocalHomology.NormalProjectionCoclass.Singular.neighborhoodSupportInclusionPairMap (W := (W : Set X)) (V := (V : Set X)) (leOfHom a) S) - (supportedRationalSingularSectionCohomologyEquivSupportComplement X S hS V n z) := by - change relativeCohomologyMap ℚ n (openIntersectionPairIsoSupportComplement X S hS W).inv - (supportedRationalSingularSectionCohomologyEquivRelative X _ W n _) = - relativeCohomologyMap ℚ n _ - (relativeCohomologyMap ℚ n (openIntersectionPairIsoSupportComplement X S hS V).inv - (supportedRationalSingularSectionCohomologyEquivRelative X _ V n z)) + (_root_.OAI.AlgebraicTopology.Support.SingularSectionCohomology.Singular.supportedRationalSingularSectionCohomologyEquivSupportComplement X S hS V n z) := by + change _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n (_root_.OAI.AlgebraicTopology.Support.SingularSectionCohomology.Singular.openIntersectionPairIsoSupportComplement X S hS W).inv + (_root_.OAI.AlgebraicTopology.Support.SingularSectionCohomology.Singular.supportedRationalSingularSectionCohomologyEquivRelative X _ W n _) = + _root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n _ + (_root_.OAI.AlgebraicTopology.Singular.Cohomology.relativeCohomologyMap ℚ n (_root_.OAI.AlgebraicTopology.Support.SingularSectionCohomology.Singular.openIntersectionPairIsoSupportComplement X S hS V).inv + (_root_.OAI.AlgebraicTopology.Support.SingularSectionCohomology.Singular.supportedRationalSingularSectionCohomologyEquivRelative X _ V n z)) rw [supportedRationalSingularSectionCohomologyEquivRelative_naturality, - ← LinearMap.comp_apply, ← LinearMap.comp_apply, ← relativeCohomologyMap_comp, - ← relativeCohomologyMap_comp] + ← LinearMap.comp_apply, ← LinearMap.comp_apply, ← _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeCohomologyMap_comp, + ← _root_.OAI.AlgebraicTopology.Singular.CohomologyTo.relativeCohomologyMap_comp] congr 2 -end AlgebraicTopology.Singular +end Singular +end + +end + +end OAI.AlgebraicTopology.Support.SingularSectionNaturality diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Analysis/Calculus/DifferentialForm/ExactWedge.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Analysis/Calculus/DifferentialForm/ExactWedge.lean index 0693a9d4e4..3afac7486c 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Analysis/Calculus/DifferentialForm/ExactWedge.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Analysis/Calculus/DifferentialForm/ExactWedge.lean @@ -12,11 +12,14 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.Analysis.NormedSpace.WedgeCovectors -public import Mathlib.Analysis.Calculus.DifferentialForm.Basic +import HodgeConjecture.Mathlib.Analysis.NormedSpace.WedgeCovectors +import Mathlib.Analysis.Calculus.DifferentialForm.Basic + +namespace OAI.Analysis.DifferentialForms.ExactWedge /-! # Wedges of exact one-forms @@ -31,9 +34,9 @@ scalar's differential with it — the only case of the Leibniz rule the holomorp needs. -/ -@[expose] public noncomputable section +noncomputable section -open ContinuousAlternatingMap +open _root_.ContinuousAlternatingMap open scoped ContDiff namespace DifferentialForm @@ -44,13 +47,13 @@ lemma wedgeFDerivWithin_eq_standardVolumeForm_comp (p : ℕ) (f : Fin p → E → ℂ) (s : Set E) (x : E) (hf : ∀ i, DifferentiableWithinAt ℂ (f i) s x) (hs : UniqueDiffWithinAt ℂ s x) : - wedgeCovectors ℂ E (fun i ↦ fderivWithin ℂ (f i) s x) = - (standardVolumeForm (Fin p)).compContinuousLinearMap + _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ E (fun i ↦ fderivWithin ℂ (f i) s x) = + (_root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.standardVolumeForm (Fin p)).compContinuousLinearMap (fderivWithin ℂ (fun y i ↦ f i y) s x) := by refine ContinuousAlternatingMap.ext fun v ↦ ?_ - rw [wedgeCovectors_apply_eq_det, + rw [_root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors_apply_eq_det, ContinuousAlternatingMap.compContinuousLinearMap_apply, - standardVolumeForm, wedgeCovectors_apply_eq_det] + _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.standardVolumeForm, _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors_apply_eq_det] congr 1 rw [fderivWithin_pi hf hs] simp @@ -59,7 +62,7 @@ lemma wedgeFDerivWithin_eq_standardVolumeForm_comp def exactWedgeWithin (E : Type*) [NormedAddCommGroup E] [NormedSpace ℂ E] (p : ℕ) (f : Fin p → E → ℂ) (s : Set E) : E → E [⋀^Fin p]→L[ℂ] ℂ := - fun x ↦ wedgeCovectors ℂ E (fun i ↦ fderivWithin ℂ (f i) s x) + fun x ↦ _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ E (fun i ↦ fderivWithin ℂ (f i) s x) /-- A wedge of exact one-forms is closed. The proof identifies it with the pullback of the constant volume form and applies naturality of the exterior derivative. -/ @@ -71,7 +74,7 @@ lemma extDerivWithin_exactWedgeWithin_eq_zero extDerivWithin (exactWedgeWithin E p f s) s x = 0 := by let F : E → (Fin p → ℂ) := fun y i ↦ f i y let η : (Fin p → ℂ) → (Fin p → ℂ) [⋀^Fin p]→L[ℂ] ℂ := - fun _ ↦ standardVolumeForm (Fin p) + fun _ ↦ _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.standardVolumeForm (Fin p) have hF : ContDiffWithinAt ℂ ω F s x := contDiffWithinAt_pi.2 fun i ↦ hf i x hx have hEq : Set.EqOn (exactWedgeWithin E p f s) (fun y ↦ (η (F y)).compContinuousLinearMap @@ -82,14 +85,14 @@ lemma extDerivWithin_exactWedgeWithin_eq_zero (hs.uniqueDiffWithinAt hy) rw [extDerivWithin_congr' hEq hx] rw [extDerivWithin_pullback - (hω := differentiableAt_const (x := F x) (standardVolumeForm (Fin p)) |>.differentiableWithinAt) + (hω := differentiableAt_const (x := F x) (_root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.standardVolumeForm (Fin p)) |>.differentiableWithinAt) (hf := hF) (hr := by simp) (hs := hs.uniqueDiffOn) (hxc := by simpa [hs.interior_eq] using (show x ∈ closure s from subset_closure hx)) (hxs := hx) (hst := Set.mapsTo_univ F s)] have hη : extDerivWithin η Set.univ (F x) = 0 := by rw [extDerivWithin, show fderivWithin ℂ η Set.univ (F x) = 0 from congrFun (fderivWithin_const (𝕜 := ℂ) (E := Fin p → ℂ) - (s := Set.univ) (standardVolumeForm (Fin p))) (F x)] + (s := Set.univ) (_root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.standardVolumeForm (Fin p))) (F x)] exact map_zero _ rw [hη] refine ContinuousAlternatingMap.ext fun v ↦ ?_ @@ -103,7 +106,7 @@ lemma exactWedgeWithin_differentiableWithinAt DifferentiableWithinAt ℂ (exactWedgeWithin E p f s) s x := by let F : E → (Fin p → ℂ) := fun y i ↦ f i y let η : (Fin p → ℂ) → (Fin p → ℂ) [⋀^Fin p]→L[ℂ] ℂ := - fun _ ↦ standardVolumeForm (Fin p) + fun _ ↦ _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.standardVolumeForm (Fin p) have hF : ContDiffWithinAt ℂ ω F s x := contDiffWithinAt_pi.2 fun i ↦ hf i x hx have hDF : DifferentiableWithinAt ℂ (fderivWithin ℂ F s) s x := (hF.fderivWithin_right (m := 1) hs.uniqueDiffOn (by simp) hx).differentiableWithinAt @@ -111,7 +114,7 @@ lemma exactWedgeWithin_differentiableWithinAt have hPull : DifferentiableWithinAt ℂ (fun y ↦ (η (F y)).compContinuousLinearMap (fderivWithin ℂ F s y)) s x := DifferentiableWithinAt.continuousAlternatingMapCompContinuousLinearMap - (differentiableWithinAt_const (c := standardVolumeForm (Fin p))) hDF + (differentiableWithinAt_const (c := _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.standardVolumeForm (Fin p))) hDF apply hPull.congr · intro y hy exact wedgeFDerivWithin_eq_standardVolumeForm_comp E p f s y @@ -129,7 +132,7 @@ lemma extDerivWithin_smul_exactWedgeWithin (hs : IsOpen s) (hx : x ∈ s) (ha : ContDiffOn ℂ ω a s) (hf : ∀ i, ContDiffOn ℂ ω (f i) s) : extDerivWithin (fun y ↦ a y • exactWedgeWithin E p f s y) s x = - wedgeCovectors ℂ E + _root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors ℂ E (Fin.cases (fderivWithin ℂ a s x) (fun i ↦ fderivWithin ℂ (f i) s x)) := by rw [extDerivWithin, fderivWithin_fun_smul @@ -140,7 +143,11 @@ lemma extDerivWithin_smul_exactWedgeWithin ContinuousAlternatingMap.alternatizeUncurryFin_smul] change a x • extDerivWithin (exactWedgeWithin E p f s) s x + _ = _ rw [extDerivWithin_exactWedgeWithin_eq_zero E p f s x hs hx hf, smul_zero, zero_add] - rw [wedgeCovectors_succ p] + rw [_root_.OAI.Analysis.Foundations.NormedSpaceWedgeCovectors.ContinuousAlternatingMap.wedgeCovectors_succ p] rfl end DifferentialForm + +end + +end OAI.Analysis.DifferentialForms.ExactWedge diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Analysis/Calculus/DifferentialForm/HolomorphicPoincare.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Analysis/Calculus/DifferentialForm/HolomorphicPoincare.lean index eeca5446f9..5cba61edc5 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Analysis/Calculus/DifferentialForm/HolomorphicPoincare.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Analysis/Calculus/DifferentialForm/HolomorphicPoincare.lean @@ -12,14 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.Analysis.Calculus.DifferentialForm.Poincare +import HodgeConjecture.Mathlib.Analysis.Calculus.DifferentialForm.Poincare import Mathlib.LinearAlgebra.ExteriorAlgebra.OfAlternating import Mathlib.MeasureTheory.Integral.IntervalIntegral.FundThmCalculus +namespace OAI.Analysis.DifferentialForms.HolomorphicPoincare + /-! # The holomorphic Poincaré lemma on a ball @@ -31,9 +34,9 @@ Consequently a closed analytic differential form on a ball has an analytic primi translating the ball to the origin gives the same statement about a ball centred anywhere. -/ -@[expose] public noncomputable section +noncomputable section -open ContinuousAlternatingMap MeasureTheory +open _root_.ContinuousAlternatingMap _root_.MeasureTheory open scoped ContDiff Interval namespace DifferentialForm @@ -176,7 +179,7 @@ lemma hasSum_radialIntegrand_of_hasFPowerSeriesOnBall (n : ℕ) (hp : HasFPowerSeriesOnBall η p 0 R) {x : E} (hx : x ∈ Metric.eball 0 R) {t : ℝ} (ht : t ∈ Set.Icc (0 : ℝ) 1) : HasSum (fun k : ℕ ↦ ((t : ℂ) ^ (k + n)) • (p k (fun _ ↦ x)).curryLeft x) - (radialIntegrand n η t x) := by + (_root_.OAI.Analysis.DifferentialForms.Poincare.DifferentialForm.radialIntegrand n η t x) := by have htNorm : ‖(t : ℂ)‖ ≤ 1 := by rw [Complex.norm_real, Real.norm_eq_abs, abs_of_nonneg ht.1] exact ht.2 @@ -214,7 +217,7 @@ lemma hasSum_intervalIntegral_radialTerms_of_hasFPowerSeriesOnBall (n : ℕ) (hp : HasFPowerSeriesOnBall η p 0 R) {x : E} (hx : x ∈ Metric.eball 0 R) : HasSum (fun k : ℕ ↦ ∫ t : ℝ in 0..1, ((t : ℂ) ^ (k + n)) • (p k (fun _ ↦ x)).curryLeft x) - (radialHomotopy n η x) := by + (_root_.OAI.Analysis.DifferentialForms.Poincare.DifferentialForm.radialHomotopy n η x) := by let bound : ℕ → ℝ → ℝ := fun k _ ↦ ‖p k (fun _ ↦ x)‖ * ‖x‖ refine intervalIntegral.hasSum_integral_of_dominated_convergence bound (fun k ↦ ?_) (fun k ↦ ?_) ?_ ?_ ?_ @@ -256,14 +259,14 @@ theorem radialHomotopy_eq_radialPrimitiveSeries_sum (n : ℕ) (p : FormalMultilinearSeries ℂ E (E [⋀^Fin (n + 1)]→L[ℂ] ℂ)) (η : E → E [⋀^Fin (n + 1)]→L[ℂ] ℂ) {R : ENNReal} (hp : HasFPowerSeriesOnBall η p 0 R) {x : E} (hx : x ∈ Metric.eball 0 R) : - radialHomotopy n η x = (radialPrimitiveSeries n p).sum x := by + _root_.OAI.Analysis.DifferentialForms.Poincare.DifferentialForm.radialHomotopy n η x = (radialPrimitiveSeries n p).sum x := by have hs := hasSum_intervalIntegral_radialTerms_of_hasFPowerSeriesOnBall n p η hp hx have hs' : HasSum (fun k : ℕ ↦ (((k + n + 1 : ℕ) : ℂ)⁻¹) • (p k (fun _ ↦ x)).curryLeft x) - (radialHomotopy n η x) := HasSum.congr_fun hs fun k ↦ + (_root_.OAI.Analysis.DifferentialForms.Poincare.DifferentialForm.radialHomotopy n η x) := HasSum.congr_fun hs fun k ↦ (intervalIntegral_ofReal_pow_smul (k + n) ((p k (fun _ ↦ x)).curryLeft x)).symm calc - radialHomotopy n η x = ∑' k : ℕ, + _root_.OAI.Analysis.DifferentialForms.Poincare.DifferentialForm.radialHomotopy n η x = ∑' k : ℕ, (((k + n + 1 : ℕ) : ℂ)⁻¹) • (p k (fun _ ↦ x)).curryLeft x := hs'.tsum_eq.symm _ = (radialPrimitiveSeries n p).sum x := (radialPrimitiveSeries_sum_eq_tsum n p @@ -275,7 +278,7 @@ theorem analyticOnNhd_radialHomotopy_of_hasFPowerSeriesOnBall (n : ℕ) (p : FormalMultilinearSeries ℂ E (E [⋀^Fin (n + 1)]→L[ℂ] ℂ)) (η : E → E [⋀^Fin (n + 1)]→L[ℂ] ℂ) {R : ENNReal} (hp : HasFPowerSeriesOnBall η p 0 R) : - AnalyticOnNhd ℂ (radialHomotopy n η) (Metric.eball 0 R) := + AnalyticOnNhd ℂ (_root_.OAI.Analysis.DifferentialForms.Poincare.DifferentialForm.radialHomotopy n η) (Metric.eball 0 R) := AnalyticOnNhd.congr Metric.isOpen_eball ((analyticOnNhd_radialPrimitiveSeries_sum n p hp.radius_pos).mono (Metric.eball_subset_eball hp.r_le)) @@ -296,8 +299,8 @@ theorem exists_analyticOnNhd_primitive_on_ball_of_hasFPowerSeriesOnBall simpa only [Metric.eball_coe] using hp.analyticOnNhd have hη : ContDiffOn ℂ 1 η (Metric.ball 0 (r : ℝ)) := hηanalytic.contDiffOn Metric.isOpen_ball.uniqueDiffOn - refine ⟨radialHomotopy n η, ?_, - extDeriv_radialHomotopy_of_closedOn n η Metric.isOpen_ball + refine ⟨_root_.OAI.Analysis.DifferentialForms.Poincare.DifferentialForm.radialHomotopy n η, ?_, + _root_.OAI.Analysis.DifferentialForms.Poincare.DifferentialForm.extDeriv_radialHomotopy_of_closedOn n η Metric.isOpen_ball ((convex_ball (0 : E) (r : ℝ)).starConvex (Metric.mem_ball_self (by exact_mod_cast hr))) hη hclosed⟩ simpa only [Metric.eball_coe] using @@ -436,7 +439,7 @@ theorem zeroForm_eq_at_center_of_closedOn_ball {c : E} {r : ℝ} (hr : 0 < r) rw [extDeriv_translateForm c η x ((hη (c + x) ((add_mem_ball_iff c x r).2 hx)).differentiableAt)] exact hclosed ((add_mem_ball_iff c x r).2 hx) - have hconst := zeroForm_eq_at_zero_of_closedOn η₀ Metric.isOpen_ball + have hconst := _root_.OAI.Analysis.DifferentialForms.Poincare.DifferentialForm.zeroForm_eq_at_zero_of_closedOn η₀ Metric.isOpen_ball ((convex_ball (0 : E) r).starConvex (Metric.mem_ball_self hr)) (hη₀.contDiffOn Metric.isOpen_ball.uniqueDiffOn : ContDiffOn ℂ 1 η₀ _) hclosed₀ intro y hy @@ -446,3 +449,7 @@ theorem zeroForm_eq_at_center_of_closedOn_ball {c : E} {r : ℝ} (hr : 0 < r) simpa using h end DifferentialForm + +end + +end OAI.Analysis.DifferentialForms.HolomorphicPoincare diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/LinearAlgebra/ComplexOrientation.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/LinearAlgebra/ComplexOrientation.lean index fb2e917d27..3f1ea1e10a 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/LinearAlgebra/ComplexOrientation.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/LinearAlgebra/ComplexOrientation.lean @@ -12,14 +12,19 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Analysis.InnerProductSpace.PiL2 -public import Mathlib.LinearAlgebra.Complex.Orientation -public import Mathlib.LinearAlgebra.Complex.FiniteDimensional -public import Mathlib.RingTheory.Complex -public import Mathlib.RingTheory.Norm.Transitivity +import Mathlib.Analysis.InnerProductSpace.PiL2 +import Mathlib.LinearAlgebra.Complex.Orientation +import Mathlib.LinearAlgebra.Complex.FiniteDimensional +import Mathlib.RingTheory.Complex +import Mathlib.RingTheory.Norm.Transitivity + +namespace OAI.LinearAlgebra.Foundations.ComplexOrientation + +open _root_.Complex /-! # Orientations of complex vector spaces @@ -36,9 +41,10 @@ holomorphic tangent coordinate change with the scalar restriction of a complex-l equivalence. -/ -@[expose] public noncomputable section +noncomputable section namespace Complex +open _root_.Complex /-- The real dimension of `Fin n → ℂ` is `2 * n`, in the form expected by `Manifold.OrientationLift`. -/ @@ -64,3 +70,7 @@ def piCoordCLE (n : ℕ) : (Fin n → ℂ) ≃L[ℝ] (Fin (n * 2) → ℝ) := end Complex + +end + +end OAI.LinearAlgebra.Foundations.ComplexOrientation diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/LinearAlgebra/HodgeStructure.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/LinearAlgebra/HodgeStructure.lean index cb2a3ab21f..49cc450843 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/LinearAlgebra/HodgeStructure.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/LinearAlgebra/HodgeStructure.lean @@ -12,11 +12,14 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Algebra.Rat -public import Mathlib.LinearAlgebra.Complex.Module +import Mathlib.Algebra.Algebra.Rat +import Mathlib.LinearAlgebra.Complex.Module + +namespace OAI.LinearAlgebra.Foundations.HodgeStructureOf /-! # Rational Hodge structures @@ -26,7 +29,7 @@ conjecture only through proofs, so the statement never inspects them: by proof i nothing about how they were built can change what it asserts. -/ -@[expose] public noncomputable section +noncomputable section open scoped DirectSum TensorProduct @@ -67,8 +70,8 @@ variable {V : Type u} [AddCommGroup V] [Module ℚ V] {n : ℕ} /-- Rational Hodge classes of codimension `p`: rational vectors whose complexifications lie in the middle Hodge piece `V^{p,p}`. -/ -def hodgeClasses (p : ℕ) (H : Pure V (2 * p)) : Submodule ℚ V := - Submodule.comap (ofBase ℚ V) ((H.piece p p).restrictScalars ℚ) +def hodgeClasses (p : ℕ) (H : _root_.OAI.LinearAlgebra.Foundations.HodgeStructureOf.HodgeStructure.Pure V (2 * p)) : Submodule ℚ V := + Submodule.comap (_root_.OAI.LinearAlgebra.Foundations.HodgeStructureOf.HodgeStructure.ofBase ℚ V) ((H.piece p p).restrictScalars ℚ) end Pure @@ -76,7 +79,7 @@ end HodgeStructure end -@[expose] public noncomputable section +noncomputable section open scoped DirectSum TensorProduct @@ -107,3 +110,7 @@ lemma conjugate_conjugate (x : ℂ ⊗[ℚ] V) : conjugate V (conjugate V x) = x simp [hx, hy] end HodgeStructure + +end + +end OAI.LinearAlgebra.Foundations.HodgeStructureOf diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/RingTheory/TranscendenceDegreeKrullDimension.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/RingTheory/TranscendenceDegreeKrullDimension.lean index cb98fbff9f..237c07935c 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/RingTheory/TranscendenceDegreeKrullDimension.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/RingTheory/TranscendenceDegreeKrullDimension.lean @@ -12,18 +12,23 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Mathlib.Algebra.PolynomialCatenary -public import Mathlib.RingTheory.AlgebraicIndependent.TranscendenceBasis -public import Mathlib.RingTheory.QuasiFinite.Basic +import HodgeConjecture.Mathlib.Algebra.PolynomialCatenary +import Mathlib.RingTheory.AlgebraicIndependent.TranscendenceBasis +import Mathlib.RingTheory.QuasiFinite.Basic import Mathlib.RingTheory.KrullDimension.Field import Mathlib.RingTheory.LocalRing.ResidueField.Instances import Mathlib.RingTheory.KrullDimension.Polynomial import Mathlib.RingTheory.NoetherNormalization +namespace OAI.Algebra.RingTheory.TranscendenceDegreeKrullDimension + +open _root_.Algebra + /-! # Krull dimension and transcendence degree over a field @@ -36,11 +41,11 @@ generated algebras it does not change the dimension of a prime quotient either. commutative-algebra half of the catenary dimension formula for smooth complex schemes. -/ -@[expose] public noncomputable section +noncomputable section -open Ideal MvPolynomial +open _root_.Ideal _root_.MvPolynomial -namespace Algebra +section variable {k A : Type} [Field k] [CommRing A] [IsDomain A] [Algebra k A] [Algebra.FiniteType k A] @@ -56,7 +61,7 @@ lemma FiniteType.exists_ringKrullDim_eq_and_trdeg_eq : let : Algebra.IsIntegral (MvPolynomial (Fin n) k) A := ⟨hfinite.to_isIntegral⟩ refine ⟨n, ?_, ?_⟩ - · rw [PolynomialCatenary.ringKrullDim_eq_of_isIntegral_of_injective hg, + · rw [_root_.OAI.Algebra.Foundations.PolynomialCatenaryT.PolynomialCatenary.ringKrullDim_eq_of_isIntegral_of_injective hg, MvPolynomial.ringKrullDim_of_isNoetherianRing, ringKrullDim_eq_zero_of_field, ENat.card_eq_coe_fintype_card, Fintype.card_fin] simp @@ -101,16 +106,20 @@ lemma QuasiFinite.ringKrullDim_quotient_eq (P : Ideal S) [P.IsPrime] : ringKrullDim (S ⧸ P) = ringKrullDim (R ⧸ P.under R) := by let q : Ideal R := P.under R obtain ⟨n, hnDim, hnTrdeg⟩ := - FiniteType.exists_ringKrullDim_eq_and_trdeg_eq (k := k) (A := R ⧸ q) + _root_.OAI.Algebra.RingTheory.TranscendenceDegreeKrullDimension.FiniteType.exists_ringKrullDim_eq_and_trdeg_eq (k := k) (A := R ⧸ q) obtain ⟨m, hmDim, hmTrdeg⟩ := - FiniteType.exists_ringKrullDim_eq_and_trdeg_eq (k := k) (A := S ⧸ P) + _root_.OAI.Algebra.RingTheory.TranscendenceDegreeKrullDimension.FiniteType.exists_ringKrullDim_eq_and_trdeg_eq (k := k) (A := S ⧸ P) have htr : Algebra.trdeg k (S ⧸ P) = Algebra.trdeg k (R ⧸ q) := (trdeg_quotient_eq_residueField (k := k) P).trans - ((QuasiFinite.trdeg_residueField_eq (k := k) (R := R) P).trans + ((_root_.OAI.Algebra.RingTheory.TranscendenceDegreeKrullDimension.QuasiFinite.trdeg_residueField_eq (k := k) (R := R) P).trans (trdeg_quotient_eq_residueField (k := k) q).symm) have hmnCard : (m : Cardinal) = (n : Cardinal) := hmTrdeg.symm.trans (htr.trans hnTrdeg) have hmn : m = n := by exact_mod_cast hmnCard rw [hmDim, hnDim, hmn] -end Algebra +end + +end + +end OAI.Algebra.RingTheory.TranscendenceDegreeKrullDimension diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Topology/Dimension/Basic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Topology/Dimension/Basic.lean index 6a625b116d..5e4bfc1a94 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Topology/Dimension/Basic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Topology/Dimension/Basic.lean @@ -12,13 +12,18 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.Topology.Dimension.Basic +import HodgeConjecture.Definitions.Topology.Dimension.Basic import HodgeConjecture.Mathlib.Topology.KrullDimension +namespace OAI.Topology.Dimension.BasicEq + +open _root_.TopologicalSpace + /-! # The dimension of an irreducible topological space @@ -26,15 +31,20 @@ Lemmas about the definitions in `HodgeConjecture.Definitions.Topology.Dimension.Basic`. -/ -public noncomputable section +noncomputable section namespace TopologicalSpace +open _root_.TopologicalSpace attribute [local instance] specializationOrder in /-- On a sober space, and in particular on a scheme, the dimension counts chains of points under specialisation. -/ lemma dim_eq_krullDim (X : Type*) [TopologicalSpace X] [IrreducibleSpace X] [T0Space X] - [QuasiSober X] : dim X = ((Order.krullDim X).unbotD 0).toNat := by - rw [dim, topologicalKrullDim_eq_krullDim] + [QuasiSober X] : _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X = ((Order.krullDim X).unbotD 0).toNat := by + rw [_root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim, _root_.OAI.Topology.Foundations.KrullDimension.topologicalKrullDim_eq_krullDim] end TopologicalSpace + +end + +end OAI.Topology.Dimension.BasicEq diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Topology/Dimension/ClosedSubset.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Topology/Dimension/ClosedSubset.lean index 0b172c385e..21355a1d0d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Topology/Dimension/ClosedSubset.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Lemmas/Topology/Dimension/ClosedSubset.lean @@ -1,10 +1,13 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.Topology.KrullDimension +import Mathlib.Topology.KrullDimension + +namespace OAI.Topology.Dimension.ClosedSubset /-! # The dimension drop for proper closed subsets @@ -15,9 +18,9 @@ proper closed subspace. This is a Krull-dimension statement, not a statement abo singular or sheaf homology of an analytic space. -/ -@[expose] public section +section -open Topology TopologicalSpace Order +open _root_.Topology _root_.TopologicalSpace _root_.Order variable {X : Type*} [TopologicalSpace X] [IrreducibleSpace X] @@ -47,3 +50,7 @@ theorem topologicalKrullDim_lt_of_isClosed_of_ne_univ {S : Set X} have hlen : ((l.length + 1 : ℕ) : WithBot ℕ∞) ≤ n := by simpa using hle exact ENat.natCast_le_natCast.mp (WithBot.coe_le_coe.mp hlen) omega + +end + +end OAI.Topology.Dimension.ClosedSubset diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/DerivedCategory/KInjectiveHom.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/DerivedCategory/KInjectiveHom.lean index 995eab7dc8..fae52e3426 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/DerivedCategory/KInjectiveHom.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/DerivedCategory/KInjectiveHom.lean @@ -1,15 +1,21 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.DerivedCategory.KInjective -public import Mathlib.Algebra.Homology.HomotopyCategory.HomComplexShift -public import HodgeConjecture.Mathlib.Algebra.Homology.HomComplexPrecomp +import Mathlib.Algebra.Homology.DerivedCategory.KInjective +import Mathlib.Algebra.Homology.HomotopyCategory.HomComplexShift +import HodgeConjecture.Mathlib.Algebra.Homology.HomComplexPrecomp import HodgeConjecture.Mathlib.Algebra.Homology.Notation +namespace OAI.Algebra.Homology.DerivedCategoryInjectiveHom + +open _root_.CategoryTheory +open _root_.CochainComplex + /-! # Morphisms in the derived category into a K-injective complex @@ -17,13 +23,14 @@ For a K-injective complex `L`, morphisms `K → L[n]` in the derived category ar homotopy, that is cohomology classes of the Hom complex. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits +open _root_.CategoryTheory Limits universe u v namespace CategoryTheory +open _root_.CategoryTheory /-- In a preadditive category, let `eA : A ≅ A'` and `eB : B ≅ B'` be isomorphisms. This additive equivalence sends `f : A → B` to `eB ∘ f ∘ eA⁻¹ : A' → B'`. -/ @@ -43,6 +50,7 @@ lemma isoHomCongrAddEquiv_apply end CategoryTheory namespace CochainComplex +open _root_.CochainComplex /-- Let `K` and `L` be integer-indexed cochain complexes in an abelian category, with `L` K-injective, and let `n` be an integer. This additive equivalence identifies `Hom_D(K, L[n])` @@ -68,7 +76,7 @@ def kInjectiveDerivedHomAddEquivCohomologyClass ((HomotopyCategory.quotient C ℤᵘᵖ).obj K) ⟶ DerivedCategory.Qh.obj ((HomotopyCategory.quotient C ℤᵘᵖ).obj (L⟦n⟧))) := - isoHomCongrAddEquiv qSource qTarget + _root_.OAI.Algebra.Homology.DerivedCategoryInjectiveHom.CategoryTheory.isoHomCongrAddEquiv qSource qTarget let qhMap : (((HomotopyCategory.quotient C ℤᵘᵖ).obj K ⟶ (HomotopyCategory.quotient C ℤᵘᵖ).obj (L⟦n⟧))) →+ @@ -105,7 +113,7 @@ lemma kInjectiveDerivedHomAddEquivCohomologyClass_symm_mk (CochainComplex.HomComplex.CohomologyClass.mk z) = ShiftedHom.map (CochainComplex.HomComplex.Cocycle.equivHomShift.symm z) DerivedCategory.Q := by - dsimp [kInjectiveDerivedHomAddEquivCohomologyClass, isoHomCongrAddEquiv, ShiftedHom.map] + dsimp [kInjectiveDerivedHomAddEquivCohomologyClass, _root_.OAI.Algebra.Homology.DerivedCategoryInjectiveHom.CategoryTheory.isoHomCongrAddEquiv, ShiftedHom.map] rw [CochainComplex.HomComplex.CohomologyClass.toHom_mk] have h := (DerivedCategory.quotientCompQhIso C).hom.naturality (CochainComplex.HomComplex.Cocycle.equivHomShift.symm z) @@ -118,13 +126,13 @@ lemma kInjectiveDerivedHomAddEquivCohomologyClass_precomp {A A' : CochainComplex C ℤ} (g : A' ⟶ A) (L : CochainComplex C ℤ) [L.IsKInjective] (n : ℤ) (x : ShiftedHom (DerivedCategory.Q.obj A) (DerivedCategory.Q.obj L) n) : kInjectiveDerivedHomAddEquivCohomologyClass A' L n (DerivedCategory.Q.map g ≫ x) = - CochainComplex.HomComplex.precompClass g L n + _root_.OAI.Algebra.Homology.HomComplexPrecomp.CochainComplex.HomComplex.precompClass g L n (kInjectiveDerivedHomAddEquivCohomologyClass A L n x) := by apply (kInjectiveDerivedHomAddEquivCohomologyClass A' L n).symm.injective rw [AddEquiv.symm_apply_apply] obtain ⟨x, rfl⟩ := (kInjectiveDerivedHomAddEquivCohomologyClass A L n).symm.surjective x obtain ⟨z, rfl⟩ := x.mk_surjective - rw [AddEquiv.apply_symm_apply, CochainComplex.HomComplex.precompClass_mk, + rw [AddEquiv.apply_symm_apply, _root_.OAI.Algebra.Homology.HomComplexPrecomp.CochainComplex.HomComplex.precompClass_mk, kInjectiveDerivedHomAddEquivCohomologyClass_symm_mk, kInjectiveDerivedHomAddEquivCohomologyClass_symm_mk, CochainComplex.HomComplex.Cocycle.equivHomShift_symm_precomp] @@ -133,3 +141,5 @@ lemma kInjectiveDerivedHomAddEquivCohomologyClass_precomp end CochainComplex end + +end OAI.Algebra.Homology.DerivedCategoryInjectiveHom diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/HomComplexPrecomp.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/HomComplexPrecomp.lean index a9de425a75..3d672fea0d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/HomComplexPrecomp.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/HomComplexPrecomp.lean @@ -12,14 +12,20 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.DerivedCategory.KInjective -public import HodgeConjecture.Mathlib.Algebra.Homology.HomComplexSingle +import Mathlib.Algebra.Homology.DerivedCategory.KInjective +import HodgeConjecture.Mathlib.Algebra.Homology.HomComplexSingle import HodgeConjecture.Mathlib.Algebra.Homology.Notation +namespace OAI.Algebra.Homology.HomComplexPrecomp + +open _root_.CochainComplex +open _root_.CochainComplex.HomComplex + /-! # Precomposition on the Hom complex @@ -27,11 +33,15 @@ For a chain map `g : K' → K`, precomposition `Hom^•(K, L) → Hom^•(K', L) It induces a map on cohomology classes that matches the map on homology. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits +open _root_.CategoryTheory Limits -namespace CochainComplex.HomComplex +namespace CochainComplex +open _root_.CochainComplex +namespace HomComplex +open _root_.CochainComplex +open _root_.CochainComplex.HomComplex variable {C : Type*} [Category* C] [Abelian C] {K K' : CochainComplex C ℤ} (g : K' ⟶ K) (L : CochainComplex C ℤ) @@ -102,8 +112,8 @@ set_option backward.isDefEq.respectTransparency false in lemma precompMap_single_fromSingleZeroIsoPreadditiveCoyoneda {X X' : C} (g : X' ⟶ X) (K : CochainComplex C ℤ) : precompMap ((CochainComplex.singleFunctor C 0).map g) K ≫ - (fromSingleZeroIsoPreadditiveCoyoneda X' K).hom = - (fromSingleZeroIsoPreadditiveCoyoneda X K).hom ≫ + (_root_.OAI.Algebra.Homology.HomComplexSingle.CochainComplex.HomComplex.fromSingleZeroIsoPreadditiveCoyoneda X' K).hom = + (_root_.OAI.Algebra.Homology.HomComplexSingle.CochainComplex.HomComplex.fromSingleZeroIsoPreadditiveCoyoneda X K).hom ≫ (NatTrans.mapHomologicalComplex (preadditiveCoyoneda.map g.op) ℤᵘᵖ).app K := by refine HomologicalComplex.hom_ext _ _ (fun n => ?_) apply AddCommGrpCat.hom_ext @@ -116,6 +126,9 @@ lemma precompMap_single_fromSingleZeroIsoPreadditiveCoyoneda {X X' : C} (g : X' rw [← Cochain.fromSingleMk_precomp, Cochain.fromSingleEquiv_fromSingleMk, Cochain.fromSingleEquiv_fromSingleMk] -end CochainComplex.HomComplex +end HomComplex +end CochainComplex end + +end OAI.Algebra.Homology.HomComplexPrecomp diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/HomComplexSingle.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/HomComplexSingle.lean index 3b3d3c5d67..decd682d4c 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/HomComplexSingle.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/HomComplexSingle.lean @@ -1,15 +1,21 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.HomotopyCategory.HomComplexSingle -public import Mathlib.Algebra.Homology.Additive -public import Mathlib.CategoryTheory.Preadditive.Yoneda.Basic +import Mathlib.Algebra.Homology.HomotopyCategory.HomComplexSingle +import Mathlib.Algebra.Homology.Additive +import Mathlib.CategoryTheory.Preadditive.Yoneda.Basic import HodgeConjecture.Mathlib.Algebra.Homology.Notation +namespace OAI.Algebra.Homology.HomComplexSingle + +open _root_.CochainComplex +open _root_.CochainComplex.HomComplex + /-! # The Hom complex out of an object in degree zero @@ -17,11 +23,15 @@ For an object `X` and a cochain complex `K`, the Hom complex from `X[0]` to `K` `n ↦ Hom(X, K^n)`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits +open _root_.CategoryTheory Limits -namespace CochainComplex.HomComplex +namespace CochainComplex +open _root_.CochainComplex +namespace HomComplex +open _root_.CochainComplex +open _root_.CochainComplex.HomComplex universe u v @@ -60,6 +70,9 @@ def fromSingleZeroIsoPreadditiveCoyoneda (X : C) (K : CochainComplex C ℤ) : Functor.mapHomologicalComplex_obj_d] convert hcalc using 1 <;> rfl) -end CochainComplex.HomComplex +end HomComplex +end CochainComplex end + +end OAI.Algebra.Homology.HomComplexSingle diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/KernelAcyclic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/KernelAcyclic.lean index 78ea8a3c85..82bd416422 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/KernelAcyclic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/KernelAcyclic.lean @@ -12,11 +12,16 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.HomologicalComplexAbelian -public import Mathlib.Algebra.Homology.HomologySequenceLemmas +import Mathlib.Algebra.Homology.HomologicalComplexAbelian +import Mathlib.Algebra.Homology.HomologySequenceLemmas + +namespace OAI.Algebra.Homology.KernelAcyclic + +open _root_.HomologicalComplex /-! # Epimorphisms of complexes with acyclic kernel @@ -29,11 +34,12 @@ One direction holds for an arbitrary complex shape; the converse is stated for n cochain complexes, where the degree `n + 1` used to kill the connecting map always exists. -/ -@[expose] public section +section -open CategoryTheory Limits +open _root_.CategoryTheory Limits namespace HomologicalComplex +open _root_.HomologicalComplex variable {C : Type*} [Category C] [Abelian C] variable {ι : Type*} {c : ComplexShape ι} {A B : HomologicalComplex C c} @@ -62,3 +68,7 @@ lemma quasiIso_of_epi_of_kernel_acyclic exact @isIso_of_mono_of_epi C _ _ _ _ (homologyMap f n) hmono hepi end HomologicalComplex + +end + +end OAI.Algebra.Homology.KernelAcyclic diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/LiftToInjective.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/LiftToInjective.lean index d92a562056..41ad88264f 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/LiftToInjective.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/LiftToInjective.lean @@ -1,12 +1,17 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.ModelCategory.Injective -public import Mathlib.Algebra.Homology.Embedding.ExtendHomology -public import Mathlib.Algebra.Homology.HomotopyCategory.Plus +import Mathlib.Algebra.Homology.ModelCategory.Injective +import Mathlib.Algebra.Homology.Embedding.ExtendHomology +import Mathlib.Algebra.Homology.HomotopyCategory.Plus + +namespace OAI.Algebra.Homology.LiftToInjective + +open _root_.CochainComplex /-! # Lifting along a monic quasi-isomorphism into a termwise-injective complex @@ -15,14 +20,15 @@ In an abelian category with enough injectives, a map from a bounded-below comple bounded-below termwise-injective complex extends along a monic quasi-isomorphism. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits HomotopicalAlgebra -open scoped CochainComplex.Plus.modelCategoryQuillen +open _root_.CategoryTheory Limits HomotopicalAlgebra +open scoped _root_.CochainComplex.Plus.modelCategoryQuillen universe v u namespace CochainComplex +open _root_.CochainComplex variable {C : Type u} [Category.{v} C] [Abelian C] [EnoughInjectives C] @@ -47,10 +53,10 @@ def liftToInjective (hI : ∀ n : ℤ, Injective (I.X n)) : S ⟶ I := let p : I' ⟶ Z' := terminal.from I' let b : S' ⟶ Z' := terminal.from S' let sq : CommSq r' a' p b := CommSq.mk (Subsingleton.elim _ _) - letI : Mono a' := (Plus.mono_iff a').2 (inferInstance : Mono a) - letI : WeakEquivalence a' := + let : Mono a' := (Plus.mono_iff a').2 (inferInstance : Mono a) + let : WeakEquivalence a' := (Plus.modelCategoryQuillen.weakEquivalence_iff a').2 (inferInstance : QuasiIso a) - letI : IsFibrant I' := + let : IsFibrant I' := (Plus.modelCategoryQuillen.isFibrant_iff I').2 hI sq.lift.hom @@ -59,6 +65,7 @@ end end CochainComplex namespace CochainComplex +open _root_.CochainComplex variable {C : Type u} [Category.{v} C] [Abelian C] [EnoughInjectives C] variable {A S I : CochainComplex C ℤ} @@ -67,8 +74,7 @@ variable {A S I : CochainComplex C ℤ} (r : A ⟶ I) set_option backward.isDefEq.respectTransparency false in -set_option linter.style.haveILetI false in -set_option linter.unusedSectionVars false in +omit [EnoughInjectives C] in /-- The injective lift strictly extends the prescribed map. -/ lemma comp_liftToInjective (hI : ∀ n : ℤ, Injective (I.X n)) : a ≫ liftToInjective a r hI = r := by @@ -81,16 +87,17 @@ lemma comp_liftToInjective (hI : ∀ n : ℤ, Injective (I.X n)) : let p : I' ⟶ Z' := terminal.from I' let b : S' ⟶ Z' := terminal.from S' let sq : CommSq r' a' p b := CommSq.mk (Subsingleton.elim _ _) - letI : Mono a' := (Plus.mono_iff a').2 (inferInstance : Mono a) - letI : WeakEquivalence a' := + let : Mono a' := (Plus.mono_iff a').2 (inferInstance : Mono a) + let : WeakEquivalence a' := (Plus.modelCategoryQuillen.weakEquivalence_iff a').2 (inferInstance : QuasiIso a) - letI : IsFibrant I' := + let : IsFibrant I' := (Plus.modelCategoryQuillen.isFibrant_iff I').2 hI exact congrArg (fun f ↦ f.hom) sq.fac_left end CochainComplex namespace CochainComplex +open _root_.CochainComplex variable {C : Type*} [Category* C] [Abelian C] [EnoughInjectives C] @@ -138,3 +145,5 @@ def liftToInjectiveNat : K ⟶ I := end CochainComplex end + +end OAI.Algebra.Homology.LiftToInjective diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/MapExtend.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/MapExtend.lean index 8776c2d70c..96916ef008 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/MapExtend.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/MapExtend.lean @@ -1,11 +1,16 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.Embedding.Extend -public import Mathlib.Algebra.Homology.Additive +import Mathlib.Algebra.Homology.Embedding.Extend +import Mathlib.Algebra.Homology.Additive + +namespace OAI.Algebra.Homology.MapExtend + +open _root_.HomologicalComplex /-! # Applying an additive functor commutes with extension of a complex @@ -15,11 +20,12 @@ zero objects in newly inserted degrees. In particular it fixes the normalization regrading a chain complex by `n ↦ -n` before or after a sheaf functor. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits +open _root_.CategoryTheory Limits namespace HomologicalComplex +open _root_.HomologicalComplex section Single @@ -132,3 +138,7 @@ lemma mapExtendCanonicalIso_id : (mapExtendCanonicalIso (𝟭 C) K e).hom = 𝟙 | some n => rfl end HomologicalComplex + +end + +end OAI.Algebra.Homology.MapExtend diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/Notation.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/Notation.lean index 5635493996..d9be757043 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/Notation.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/Notation.lean @@ -1,10 +1,13 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.ComplexShape +import Mathlib.Algebra.Homology.ComplexShape + +namespace OAI.Algebra.Homology.Notation /-! # Notation for the cohomological complex shape @@ -13,8 +16,12 @@ public import Mathlib.Algebra.Homology.ComplexShape degree by one. -/ -@[expose] public section +section /-- `ℤᵘᵖ` is `ComplexShape.up ℤ`, the cohomological complex shape on integer degrees: its potentially nonzero differentials have type `K.X n ⟶ K.X (n + 1)`. -/ notation "ℤᵘᵖ" => ComplexShape.up Int + +end + +end OAI.Algebra.Homology.Notation diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/StupidTruncation.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/StupidTruncation.lean index acf70b7c8e..8701706016 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/StupidTruncation.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Homology/StupidTruncation.lean @@ -12,10 +12,15 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.Embedding.StupidTrunc +import Mathlib.Algebra.Homology.Embedding.StupidTrunc + +namespace OAI.Algebra.Homology.StupidTruncation + +open _root_.HomologicalComplex /-! # Inclusion of a stupid truncation @@ -26,15 +31,16 @@ complex and proves naturality. It supplies the inclusion noted as missing in Mat `Embedding.StupidTrunc`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory CategoryTheory.Limits +open _root_.CategoryTheory _root_.CategoryTheory.Limits universe u v variable {I J : Type*} {c : ComplexShape I} {c' : ComplexShape J} namespace HomologicalComplex +open _root_.HomologicalComplex variable {C : Type u} [Category.{v} C] [HasZeroMorphisms C] [HasZeroObject C] variable (K : HomologicalComplex C c') (e : c.Embedding c') [e.IsTruncGE] @@ -105,3 +111,7 @@ lemma stupidTruncMap_comp_stupidTruncInclusion (f : K ⟶ L) : · exact (K.isZero_stupidTrunc_X e j (by simpa using hj)).eq_of_src _ _ end HomologicalComplex + +end + +end OAI.Algebra.Homology.StupidTruncation diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/PolynomialCatenary.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/PolynomialCatenary.lean index 396099115c..451402fc76 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/PolynomialCatenary.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/PolynomialCatenary.lean @@ -12,10 +12,11 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.RingTheory.Ideal.Height +import Mathlib.RingTheory.Ideal.Height import Mathlib.Algebra.MvPolynomial.Monad import Mathlib.Data.List.Indexes @@ -23,6 +24,8 @@ import Mathlib.RingTheory.Ideal.HasGoingUp import Mathlib.RingTheory.KrullDimension.Field import Mathlib.RingTheory.KrullDimension.Polynomial +namespace OAI.Algebra.Foundations.PolynomialCatenaryT + /-! # Dimension formulas for polynomial rings @@ -46,9 +49,9 @@ Mathlib dependency is bumped, this block should be deleted and the upstream decl instead. -/ -@[expose] public section +section -open Ideal Polynomial MvPolynomial Nat RingHom List +open _root_.Ideal _root_.Polynomial _root_.MvPolynomial Nat _root_.RingHom List namespace PolynomialCatenary @@ -119,7 +122,7 @@ theorem Polynomial.height_eq_comap_height_add_one_of_monic_mem change algebraMap (Polynomial R) (Polynomial Rₚ) g ∈ P' exact Ideal.mem_map_of_mem _ hgP have hP'max : P'.IsMaximal := - Polynomial.isMaximal_of_monic_mem_of_comap_isMaximal P' + _root_.OAI.Algebra.Foundations.PolynomialCatenaryT.PolynomialCatenary.Polynomial.isMaximal_of_monic_mem_of_comap_isMaximal P' (g.map (algebraMap R Rₚ)) (hg.map _) hgP' (by have heq : P'.comap Polynomial.C = p' := by calc @@ -275,13 +278,13 @@ theorem MvPolynomial.height_add_ringKrullDim_quotient_eq_fin {n : ℕ} ringKrullDim_eq_zero_of_field k] simp · obtain ⟨f, hfP, hfne⟩ := Submodule.exists_mem_ne_zero_of_ne_bot hP - let e₁ := Triangular.T f + let e₁ := _root_.OAI.Algebra.Foundations.PolynomialCatenaryT.PolynomialCatenary.Triangular.T f let P₁ : Ideal (MvPolynomial (Fin (n + 1)) k) := P.map e₁ have : P₁.IsPrime := Ideal.map_isPrime_of_equiv e₁ let e₂ := MvPolynomial.finSuccEquiv k n let Q : Ideal (Polynomial (MvPolynomial (Fin n) k)) := P₁.map e₂ have : Q.IsPrime := Ideal.map_isPrime_of_equiv e₂ - obtain hunit := Triangular.T_leadingCoeff_isUnit f hfne + obtain hunit := _root_.OAI.Algebra.Foundations.PolynomialCatenaryT.PolynomialCatenary.Triangular.T_leadingCoeff_isUnit f hfne let g : Polynomial (MvPolynomial (Fin n) k) := hunit.unit⁻¹ • e₂ (e₁ f) have hgmonic : g.Monic := Polynomial.monic_of_isUnit_leadingCoeff_inv_smul hunit @@ -291,7 +294,7 @@ theorem MvPolynomial.height_add_ringKrullDim_quotient_eq_fin {n : ℕ} let q : Ideal (MvPolynomial (Fin n) k) := Q.comap Polynomial.C have : q.IsPrime := Ideal.IsPrime.comap Polynomial.C have hheightQ : Q.height = q.height + 1 := - Polynomial.height_eq_comap_height_add_one_of_monic_mem Q g hgmonic hgf + _root_.OAI.Algebra.Foundations.PolynomialCatenaryT.PolynomialCatenary.Polynomial.height_eq_comap_height_add_one_of_monic_mem Q g hgmonic hgf have hind : q.height + ringKrullDim (MvPolynomial (Fin n) k ⧸ q) = n := ih q let : Algebra.IsIntegral (MvPolynomial (Fin n) k) (Polynomial (MvPolynomial (Fin n) k) ⧸ Q) := @@ -340,7 +343,7 @@ Krull dimension `n - p`. -/ theorem MvPolynomial.ringKrullDim_quotient_eq_fin_sub_of_height_eq {n p : ℕ} (P : Ideal (MvPolynomial (Fin n) k)) [P.IsPrime] (hp : P.height = p) : ringKrullDim (MvPolynomial (Fin n) k ⧸ P) = n - p := by - have h := MvPolynomial.height_add_ringKrullDim_quotient_eq_fin P + have h := _root_.OAI.Algebra.Foundations.PolynomialCatenaryT.PolynomialCatenary.MvPolynomial.height_add_ringKrullDim_quotient_eq_fin P rw [hp] at h obtain ⟨a, b, ha, hb, hab⟩ := WithBot.add_eq_coe.mp h have ha' : a = (p : ℕ∞) := WithBot.coe_injective ha @@ -356,3 +359,7 @@ theorem MvPolynomial.ringKrullDim_quotient_eq_fin_sub_of_height_eq {n p : ℕ} lia end PolynomialCatenary + +end + +end OAI.Algebra.Foundations.PolynomialCatenaryT diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Ring/Basic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Ring/Basic.lean index df7de5b9c6..679c84449c 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Ring/Basic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Algebra/Ring/Basic.lean @@ -12,10 +12,15 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Ring.Basic +import Mathlib.Algebra.Ring.Basic + +namespace OAI.Algebra.Ring.Basic + +open _root_.AddMonoidHom /-! # Left multiplication as an additive endomorphism @@ -26,9 +31,10 @@ with the ring structure of its argument. These four lemmas do, so that multiplic can be manipulated as an additive endomorphism. -/ -public section +section namespace AddMonoidHom +open _root_.AddMonoidHom @[simp] lemma mulLeft_zero {R : Type*} [NonUnitalNonAssocSemiring R] : mulLeft (0 : R) = 0 := by @@ -51,3 +57,7 @@ namespace AddMonoidHom simp [mul_assoc] end AddMonoidHom + +end + +end OAI.Algebra.Ring.Basic diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/AlgebraicGeometry/GenericPoint.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/AlgebraicGeometry/GenericPoint.lean index dac0cca148..3f5f48f64f 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/AlgebraicGeometry/GenericPoint.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/AlgebraicGeometry/GenericPoint.lean @@ -12,11 +12,16 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.AlgebraicGeometry.Properties -public import Mathlib.Order.KrullDimension +import Mathlib.AlgebraicGeometry.Properties +import Mathlib.Order.KrullDimension + +namespace OAI.AlgebraicGeometry.Foundations.GenericPoint + +open _root_.AlgebraicGeometry /-! # The generic point of an integral scheme @@ -24,9 +29,9 @@ public import Mathlib.Order.KrullDimension A point of an integral scheme has coheight zero exactly when it is the generic point. -/ -@[expose] public section +section -namespace AlgebraicGeometry +section /-- A codimension-zero point of an integral scheme is its generic point. -/ lemma eq_genericPoint_of_coheight_zero {X : Scheme} [IsIntegral X] (x : X) @@ -35,4 +40,8 @@ lemma eq_genericPoint_of_coheight_zero {X : Scheme} [IsIntegral X] (x : X) rw [inseparable_iff_specializes_and] exact ⟨Order.coheight_eq_zero.mp hx le_top, genericPoint_specializes x⟩ -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Foundations.GenericPoint diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/AlgebraicGeometry/Over/Basic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/AlgebraicGeometry/Over/Basic.lean index fa356d5471..811512db17 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/AlgebraicGeometry/Over/Basic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/AlgebraicGeometry/Over/Basic.lean @@ -12,13 +12,18 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.AlgebraicGeometry.Scheme +import Mathlib.AlgebraicGeometry.Scheme import HodgeConjecture.Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.AlgebraicGeometry.Over.Basic + +open _root_.AlgebraicGeometry + /-! # Algebra structure on section @@ -28,11 +33,11 @@ instead of an instance to avoid a possible diamond with the instance in `Mathlib.AlgebraicGeometry.Group.Affine`. -/ -@[expose] public section +section -open CategoryTheory +open _root_.CategoryTheory -namespace AlgebraicGeometry +section /-- The algebra structure on section rings of a scheme over an affine variety. -/ @[instance_reducible] @@ -40,4 +45,8 @@ noncomputable def overSpecAlgebra {R : Type*} [CommRing R] (X : Over (Spec ↧R) Algebra R Γ(X.left, U) := (X.hom.appLE ⊤ U (by simp)).hom.comp (Scheme.ΓSpecIso ↧R).inv.hom |>.toAlgebra -end AlgebraicGeometry +end + +end + +end OAI.AlgebraicGeometry.Over.Basic diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/AlgebraicTopology/SimplicialSet/ChainComplexSplit.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/AlgebraicTopology/SimplicialSet/ChainComplexSplit.lean index 6a6f322df1..a49b8a89ff 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/AlgebraicTopology/SimplicialSet/ChainComplexSplit.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/AlgebraicTopology/SimplicialSet/ChainComplexSplit.lean @@ -12,11 +12,17 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.AlgebraicTopology.SimplicialSet.Homology.Basic -public import Mathlib.AlgebraicTopology.SingularHomology.Basic +import Mathlib.AlgebraicTopology.SimplicialSet.Homology.Basic +import Mathlib.AlgebraicTopology.SingularHomology.Basic + +namespace OAI.AlgebraicTopology.SimplicialSet.ChainComplexSplit + +open _root_.AlgebraicTopology +open _root_.SSet /-! # Split monomorphisms of simplicial chains @@ -27,15 +33,16 @@ monomorphism on `n`-chains: the summands outside the image go to zero. Being spl monic, is preserved by `Module.Dual` over an arbitrary coefficient ring. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Opposite +open _root_.CategoryTheory Limits Opposite open scoped Simplicial universe w v u namespace SSet +open _root_.SSet variable {C : Type u} [Category.{v} C] [HasCoproducts.{w} C] [Preadditive C] variable {X Y : SSet.{w}} (f : X ⟶ Y) (R : C) (n : ℕ) @@ -71,7 +78,7 @@ lemma isSplitMono_chainComplexMap_f (hf : Function.Injective (f.app (op ⦋n⦌) end SSet -namespace AlgebraicTopology +section variable {C : Type u} [Category.{v} C] [HasCoproducts.{w} C] [Preadditive C] @@ -79,8 +86,12 @@ variable {C : Type u} [Category.{v} C] [HasCoproducts.{w} C] [Preadditive C] lemma isSplitMono_singularChainComplexFunctor_map_f {X Y : TopCat.{w}} (g : X ⟶ Y) [Mono g] (R : C) (n : ℕ) : IsSplitMono ((((singularChainComplexFunctor C).obj R).map g).f n) := - SSet.isSplitMono_chainComplexMap_f (TopCat.toSSet.map g) R n <| by + _root_.OAI.AlgebraicTopology.SimplicialSet.ChainComplexSplit.SSet.isSplitMono_chainComplexMap_f (TopCat.toSSet.map g) R n <| by have h : Mono ((TopCat.toSSet.map g).app (op ⦋n⦌)) := inferInstance rwa [mono_iff_injective] at h -end AlgebraicTopology +end + +end + +end OAI.AlgebraicTopology.SimplicialSet.ChainComplexSplit diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Analysis/Calculus/DifferentialForm/Poincare.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Analysis/Calculus/DifferentialForm/Poincare.lean index 538d349ee3..713b5dcc02 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Analysis/Calculus/DifferentialForm/Poincare.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Analysis/Calculus/DifferentialForm/Poincare.lean @@ -12,15 +12,18 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Analysis.Calculus.DifferentialForm.Basic -public import Mathlib.MeasureTheory.Integral.IntervalIntegral.Basic +import Mathlib.Analysis.Calculus.DifferentialForm.Basic +import Mathlib.MeasureTheory.Integral.IntervalIntegral.Basic import Mathlib.Analysis.Calculus.ParametricIntervalIntegral import Mathlib.MeasureTheory.Integral.IntervalIntegral.FundThmCalculus +namespace OAI.Analysis.DifferentialForms.Poincare + /-! # The radial homotopy operator on differential forms @@ -32,9 +35,9 @@ This file develops the radial homotopy operator used in the Poincaré lemma. Fo The construction is explicit. In particular, exactness will not be introduced as an assumption. -/ -@[expose] public noncomputable section +noncomputable section -open ContinuousAlternatingMap MeasureTheory +open _root_.ContinuousAlternatingMap _root_.MeasureTheory open scoped ContDiff Interval namespace DifferentialForm @@ -369,13 +372,13 @@ lemma radialHomotopy_hasFDerivAt_of_contDiffOn [FiniteDimensional ℂ E] (n : section CurriedDerivative /-- The space the radial derivative takes values in is a complex normed space. -/ -local instance (n : ℕ) : NormedAddCommGroup (E →L[ℂ] E [⋀^Fin n]→L[ℂ] ℂ) := by +local instance instNormedAddCommGroupContinuousLinearMapComplexIdContinuousAlternatingMapFin_oAI (n : ℕ) : NormedAddCommGroup (E →L[ℂ] E [⋀^Fin n]→L[ℂ] ℂ) := by with_reducible_and_instances exact ContinuousLinearMap.toNormedAddCommGroup -local instance (n : ℕ) : NormedSpace ℂ (E →L[ℂ] E [⋀^Fin n]→L[ℂ] ℂ) := by +local instance instNormedSpaceComplexContinuousLinearMapIdContinuousAlternatingMapFin_oAI (n : ℕ) : NormedSpace ℂ (E →L[ℂ] E [⋀^Fin n]→L[ℂ] ℂ) := by with_reducible_and_instances exact ContinuousLinearMap.toNormedSpace -local instance (n : ℕ) : NormedSpace ℝ (E →L[ℂ] E [⋀^Fin n]→L[ℂ] ℂ) := +local instance instNormedSpaceRealContinuousLinearMapComplexIdContinuousAlternatingMapFin_oAI (n : ℕ) : NormedSpace ℝ (E →L[ℂ] E [⋀^Fin n]→L[ℂ] ℂ) := NormedSpace.restrictScalars ℝ ℂ _ /-- First-order regularity of the radial homotopy on an open star-convex domain. -/ @@ -855,3 +858,7 @@ theorem extDeriv_radialHomotopy_of_closed [FiniteDimensional ℂ E] (n : ℕ) simpa [radialHomotopy, radialIntegrand] using h end DifferentialForm + +end + +end OAI.Analysis.DifferentialForms.Poincare diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Analysis/Calculus/SplitDerivativeNormalChart.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Analysis/Calculus/SplitDerivativeNormalChart.lean index 9709e99a46..b62b74a53e 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Analysis/Calculus/SplitDerivativeNormalChart.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Analysis/Calculus/SplitDerivativeNormalChart.lean @@ -1,13 +1,19 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.Analysis.Calculus.InverseFunctionTheorem.FDeriv -public import Mathlib.Analysis.Calculus.FDeriv.Add -public import Mathlib.Analysis.Calculus.FDeriv.Prod -public import Mathlib.Analysis.Normed.Module.FiniteDimension +import Mathlib.Analysis.Calculus.InverseFunctionTheorem.FDeriv +import Mathlib.Analysis.Calculus.FDeriv.Add +import Mathlib.Analysis.Calculus.FDeriv.Prod +import Mathlib.Analysis.Normed.Module.FiniteDimension + +namespace OAI.Analysis.Foundations.SplitDerivativeNormalChart + +open _root_.ContinuousLinearMap +open _root_.HasStrictFDerivAt /-! # Normal coordinates from a split derivative @@ -19,11 +25,12 @@ the original parametrization on the coordinate domain. Identifying that slice with an entire geometric support additionally requires a local embedding assertion. -/ -@[expose] public noncomputable section +noncomputable section -open Topology +open _root_.Topology namespace ContinuousLinearMap +open _root_.ContinuousLinearMap variable {𝕜 E F : Type*} [NontriviallyNormedField 𝕜] [CompleteSpace 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] @@ -54,15 +61,16 @@ def splitKernelEquiv (A : E →L[𝕜] F) (P : F →L[𝕜] E) @[simp] theorem splitKernelEquiv_apply (A : E →L[𝕜] F) (P : F →L[𝕜] E) (h : P.comp A = ContinuousLinearMap.id 𝕜 E) (z : E × P.ker) : - A.splitKernelEquiv P h z = A z.1 + z.2 := rfl + (splitKernelEquiv A) P h z = A z.1 + z.2 := rfl @[simp] theorem splitKernelEquiv_symm_fst (A : E →L[𝕜] F) (P : F →L[𝕜] E) (h : P.comp A = ContinuousLinearMap.id 𝕜 E) (y : F) : - ((A.splitKernelEquiv P h).symm y).1 = P y := rfl + (((splitKernelEquiv A) P h).symm y).1 = P y := rfl end ContinuousLinearMap namespace HasStrictFDerivAt +open _root_.HasStrictFDerivAt variable {𝕜 E F : Type*} [NontriviallyNormedField 𝕜] [CompleteSpace 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] [CompleteSpace E] @@ -78,7 +86,7 @@ omit [CompleteSpace E] in theorem add_kernel (hf : HasStrictFDerivAt f A a) (P : F →L[𝕜] E) (h : P.comp A = ContinuousLinearMap.id 𝕜 E) : HasStrictFDerivAt (fun z : E × P.ker => f z.1 + z.2) - (A.splitKernelEquiv P h).toContinuousLinearMap (a, 0) := by + ((_root_.OAI.Analysis.Foundations.SplitDerivativeNormalChart.ContinuousLinearMap.splitKernelEquiv A) P h).toContinuousLinearMap (a, 0) := by have h1 := hf.comp (a, (0 : P.ker)) (ContinuousLinearMap.fst 𝕜 E P.ker).hasStrictFDerivAt have h2 := P.ker.subtypeL.hasStrictFDerivAt.comp @@ -92,40 +100,40 @@ f(v)+n`. Its local inverse is supplied by the inverse function theorem. -/ def normalChart (hf : HasStrictFDerivAt f A a) (P : F →L[𝕜] E) (h : P.comp A = ContinuousLinearMap.id 𝕜 E) : OpenPartialHomeomorph (E × P.ker) F := - (hf.add_kernel P h).toOpenPartialHomeomorph _ + ((add_kernel hf) P h).toOpenPartialHomeomorph _ @[simp] theorem normalChart_apply (hf : HasStrictFDerivAt f A a) (P : F →L[𝕜] E) (h : P.comp A = ContinuousLinearMap.id 𝕜 E) (z : E × P.ker) : - hf.normalChart P h z = f z.1 + z.2 := rfl + (normalChart hf) P h z = f z.1 + z.2 := rfl /-- The selected point belongs to the coordinate domain. -/ theorem normalChart_mem_source (hf : HasStrictFDerivAt f A a) (P : F →L[𝕜] E) (h : P.comp A = ContinuousLinearMap.id 𝕜 E) : - (a, 0) ∈ (hf.normalChart P h).source := - (hf.add_kernel P h).mem_toOpenPartialHomeomorph_source + (a, 0) ∈ ((normalChart hf) P h).source := + ((add_kernel hf) P h).mem_toOpenPartialHomeomorph_source /-- The selected image point belongs to the ambient coordinate neighborhood. -/ theorem normalChart_mem_target (hf : HasStrictFDerivAt f A a) (P : F →L[𝕜] E) (h : P.comp A = ContinuousLinearMap.id 𝕜 E) : - f a ∈ (hf.normalChart P h).target := by - simpa using (hf.normalChart P h).map_source (hf.normalChart_mem_source P h) + f a ∈ ((normalChart hf) P h).target := by + simpa using ((normalChart hf) P h).map_source ((normalChart_mem_source hf) P h) /-- Inverse normal coordinates send every parametrized point in the coordinate domain to precisely its tangent parameter and zero normal coordinate. -/ theorem normalChart_symm_apply (hf : HasStrictFDerivAt f A a) (P : F →L[𝕜] E) (h : P.comp A = ContinuousLinearMap.id 𝕜 E) (v : E) - (hv : (v, 0) ∈ (hf.normalChart P h).source) : - (hf.normalChart P h).symm (f v) = (v, 0) := by - simpa using (hf.normalChart P h).left_inv hv + (hv : (v, 0) ∈ ((normalChart hf) P h).source) : + ((normalChart hf) P h).symm (f v) = (v, 0) := by + simpa using ((normalChart hf) P h).left_inv hv /-- On its ambient target, zero normal coordinate is equivalent to membership in the image of the zero-normal part of the coordinate domain. -/ theorem normalChart_normal_eq_zero_iff (hf : HasStrictFDerivAt f A a) (P : F →L[𝕜] E) (h : P.comp A = ContinuousLinearMap.id 𝕜 E) (y : F) - (hy : y ∈ (hf.normalChart P h).target) : - ((hf.normalChart P h).symm y).2 = 0 ↔ - ∃ v : E, (v, 0) ∈ (hf.normalChart P h).source ∧ f v = y := by - let e := hf.normalChart P h + (hy : y ∈ ((normalChart hf) P h).target) : + (((normalChart hf) P h).symm y).2 = 0 ↔ + ∃ v : E, (v, 0) ∈ ((normalChart hf) P h).source ∧ f v = y := by + let e := (normalChart hf) P h constructor · intro hn change (e.symm y).2 = 0 at hn @@ -136,6 +144,10 @@ theorem normalChart_normal_eq_zero_iff (hf : HasStrictFDerivAt f A a) (P : F → rw [hn] at hright simpa only [Submodule.coe_zero, add_zero] using hright · rintro ⟨v, hv, rfl⟩ - rw [hf.normalChart_symm_apply P h v hv] + rw [(normalChart_symm_apply hf) P h v hv] end HasStrictFDerivAt + +end + +end OAI.Analysis.Foundations.SplitDerivativeNormalChart diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Analysis/NormedSpace/WedgeCovectors.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Analysis/NormedSpace/WedgeCovectors.lean index 1ea65ea8be..5ccf40a297 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Analysis/NormedSpace/WedgeCovectors.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Analysis/NormedSpace/WedgeCovectors.lean @@ -12,16 +12,21 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Analysis.Calculus.FDeriv.Analytic -public import Mathlib.Analysis.Complex.Basic -public import Mathlib.Analysis.Normed.Module.Alternating.Uncurry.Fin -public import Mathlib.LinearAlgebra.Matrix.Determinant.Basic +import Mathlib.Analysis.Calculus.FDeriv.Analytic +import Mathlib.Analysis.Complex.Basic +import Mathlib.Analysis.Normed.Module.Alternating.Uncurry.Fin +import Mathlib.LinearAlgebra.Matrix.Determinant.Basic import Mathlib.Analysis.Calculus.FDeriv.Pi +namespace OAI.Analysis.Foundations.NormedSpaceWedgeCovectors + +open _root_.ContinuousAlternatingMap + /-! # Wedge products of continuous covectors @@ -36,9 +41,10 @@ in that expansion are continuous linear functionals of the form, so a form depen on a parameter has analytic coefficients. -/ -@[expose] public noncomputable section +noncomputable section namespace ContinuousAlternatingMap +open _root_.ContinuousAlternatingMap variable {𝕜 E : Type*} [NontriviallyNormedField 𝕜] [NormedAddCommGroup E] [NormedSpace 𝕜 E] variable {ι : Type*} [Fintype ι] [DecidableEq ι] @@ -273,3 +279,7 @@ lemma analyticOnNhd_coordinateCoefficient (c := ((Fintype.card ι).factorial : 𝕜)⁻¹) end ContinuousAlternatingMap + +end + +end OAI.Analysis.Foundations.NormedSpaceWedgeCovectors diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/CategoryTheory/Abelian/KernelCompositionShortExact.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/CategoryTheory/Abelian/KernelCompositionShortExact.lean index 6201e7d952..f073c77d4a 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/CategoryTheory/Abelian/KernelCompositionShortExact.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/CategoryTheory/Abelian/KernelCompositionShortExact.lean @@ -1,11 +1,16 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.CategoryTheory.Abelian.DiagramLemmas.KernelCokernelComp -public import Mathlib.Algebra.Homology.ShortComplex.ShortExact +import Mathlib.CategoryTheory.Abelian.DiagramLemmas.KernelCokernelComp +import Mathlib.Algebra.Homology.ShortComplex.ShortExact + +namespace OAI.CategoryTheory.Abelian.KernelCompositionShortExact + +open _root_.CategoryTheory /-! # The short exact sequence of kernels of a composition with an epimorphism @@ -15,11 +20,11 @@ For `A → B → C`, restriction to kernels gives The maps are the kernel maps, with their inclusion normalizations retained. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits +open _root_.OAI.CategoryTheory.Abelian.KernelCompositionShortExact Limits -namespace CategoryTheory +section variable {C : Type*} [Category* C] [Abelian C] {A B D : C} (f : A ⟶ B) (g : B ⟶ D) @@ -117,4 +122,8 @@ lemma kernelFactorizationShortComplex_map_shortExact [Epi (F.map f)] : ShortComplex.shortExact_of_iso (kernelFactorizationShortComplexMapIso f g k hk F).symm (kernelFactorizationShortComplex_shortExact (F.map f) (F.map g) (F.map k) _) -end CategoryTheory +end + +end + +end OAI.CategoryTheory.Abelian.KernelCompositionShortExact diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/CategoryTheory/ConcreteCategory/Notation.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/CategoryTheory/ConcreteCategory/Notation.lean index 8b2ede2660..84cd2b93ea 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/CategoryTheory/ConcreteCategory/Notation.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/CategoryTheory/ConcreteCategory/Notation.lean @@ -12,7 +12,13 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.CategoryTheory.ConcreteCategory.Notation +import Mathlib.CategoryTheory.ConcreteCategory.Notation +namespace OAI.CategoryTheory.ConcreteCategory.Notation + + + +end OAI.CategoryTheory.ConcreteCategory.Notation diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/CategoryTheory/Sites/SheafCohomology/Pair.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/CategoryTheory/Sites/SheafCohomology/Pair.lean index 9ab0910437..42bb3daad6 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/CategoryTheory/Sites/SheafCohomology/Pair.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/CategoryTheory/Sites/SheafCohomology/Pair.lean @@ -1,12 +1,18 @@ /- Copyright 2026 The Formal Conjectures Authors. Released under Apache 2.0 license as described in the file LICENSE. + +This file has been modified. -/ -module -public import Mathlib.CategoryTheory.Sites.SheafCohomology.Basic -public import Mathlib.CategoryTheory.Sites.MayerVietorisSquare -public import Mathlib.Algebra.Homology.DerivedCategory.Ext.ExactSequences +import Mathlib.CategoryTheory.Sites.SheafCohomology.Basic +import Mathlib.CategoryTheory.Sites.MayerVietorisSquare +import Mathlib.Algebra.Homology.DerivedCategory.Ext.ExactSequences + +namespace OAI.CategoryTheory.Sites.SheafCohomologyPair + +open _root_.CategoryTheory +open _root_.CategoryTheory.Sheaf /-! # Sheaf cohomology of a pair @@ -18,13 +24,14 @@ The short exact sequence `0 → ℤ[U] → ℤ[V] → ℤ[V, U] → 0` gives the `… → H^n(V, U; F) → H^n(V; F) → H^n(U; F) → H^(n+1)(V, U; F) → …`. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Limits Abelian Opposite +open _root_.CategoryTheory Limits Abelian Opposite universe w v u -namespace CategoryTheory.Sheaf +section +namespace Sheaf variable {C : Type u} [Category.{v} C] (J : GrothendieckTopology C) [HasSheafify J AddCommGrpCat.{v}] @@ -133,25 +140,25 @@ namespace relH variable (F : Sheaf J AddCommGrpCat.{v}) {U V : C} (f : U ⟶ V) /-- The map `H^n(V, U; F) → H^n(V; F)`. -/ -def forget (n : ℕ) : relH F n f →+ F.H' n V := - (Ext.mk₀ (cokernel.π ((freeAbelianSheaf J).map f))).precomp F (zero_add n) +def forget (n : ℕ) : _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH F n f →+ F.H' n V := + (Ext.mk₀ (cokernel.π ((_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.freeAbelianSheaf J).map f))).precomp F (zero_add n) /-- The connecting map `H^n(U; F) → H^(n+1)(V, U; F)`. -/ -def δ [Mono f] (n₀ n₁ : ℕ) (h : 1 + n₀ = n₁) : F.H' n₀ U →+ relH F n₁ f := - (pairShortComplex_shortExact f).extClass.precomp F h +def δ [Mono f] (n₀ n₁ : ℕ) (h : 1 + n₀ = n₁) : F.H' n₀ U →+ _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH F n₁ f := + (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.pairShortComplex_shortExact f).extClass.precomp F h /-- The map on cohomology of the pair induced by a morphism of sheaves. -/ -def map {F G : Sheaf J AddCommGrpCat.{v}} (g : F ⟶ G) (n : ℕ) : relH F n f →+ relH G n f := +def map {F G : Sheaf J AddCommGrpCat.{v}} (g : F ⟶ G) (n : ℕ) : _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH F n f →+ _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH G n f := (Ext.mk₀ g).postcomp _ (add_zero n) /-- The map `H^n(V, U; F) → H^n(V', U'; F)` induced by a map of pairs `(V', U') → (V, U)`. -/ def restrict {U' V' : C} (f' : U' ⟶ V') (a : U' ⟶ U) (b : V' ⟶ V) (w : f' ≫ b = a ≫ f) (n : ℕ) : - relH F n f →+ relH F n f' := - (Ext.mk₀ (pairSheafMap f f' a b w)).precomp F (zero_add n) + _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH F n f →+ _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.relH F n f' := + (Ext.mk₀ (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.pairSheafMap f f' a b w)).precomp F (zero_add n) /-- The long exact sequence of the pair `(V, U)`. -/ lemma sequence_exact [Mono f] (n₀ n₁ : ℕ) (h : 1 + n₀ = n₁) : - (Ext.contravariantSequence (pairShortComplex_shortExact (J := J) f) F n₀ n₁ h).Exact := + (Ext.contravariantSequence (_root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Sheaf.pairShortComplex_shortExact (J := J) f) F n₀ n₁ h).Exact := Ext.contravariantSequence_exact _ _ _ _ _ end relH @@ -176,7 +183,7 @@ def freeAbelianSheafTerminalIso : rfl) /-- Precomposition with an isomorphism is an additive equivalence of `Ext` groups. -/ -def _root_.CategoryTheory.Abelian.Ext.precompAddEquiv {A B : Sheaf J AddCommGrpCat.{v}} (e : A ≅ B) +def _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Abelian.Ext.precompAddEquiv {A B : Sheaf J AddCommGrpCat.{v}} (e : A ≅ B) (F : Sheaf J AddCommGrpCat.{v}) (n : ℕ) : Ext B F n ≃+ Ext A F n where toFun := (Ext.mk₀ e.hom).precomp F (zero_add n) invFun := (Ext.mk₀ e.inv).precomp F (zero_add n) @@ -186,10 +193,13 @@ def _root_.CategoryTheory.Abelian.Ext.precompAddEquiv {A B : Sheaf J AddCommGrpC /-- `H^n(T; F) ≃ H^n(F)` for a terminal object `T`. -/ def H'.addEquivTerminal (F : Sheaf J AddCommGrpCat.{v}) (n : ℕ) : F.H' n T ≃+ F.H n := - Ext.precompAddEquiv (freeAbelianSheafTerminalIso hT).symm F n + _root_.OAI.CategoryTheory.Sites.SheafCohomologyPair.Abelian.Ext.precompAddEquiv (freeAbelianSheafTerminalIso hT).symm F n end Terminal -end CategoryTheory.Sheaf +end Sheaf +end end + +end OAI.CategoryTheory.Sites.SheafCohomologyPair diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Geometry/Convex/StdSimplexMetric.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Geometry/Convex/StdSimplexMetric.lean index bd96a244a6..6736725ef9 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Geometry/Convex/StdSimplexMetric.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Geometry/Convex/StdSimplexMetric.lean @@ -1,25 +1,36 @@ -module +/- +This file has been modified. +-/ -public import Mathlib.Geometry.Convex.ConvexSpace.CompactSpaceStdSimplex -public import Mathlib.Topology.MetricSpace.Basic -public import Mathlib.Topology.MetricSpace.Isometry -public import Mathlib.Topology.Algebra.Monoid.FunOnFinite -public import Mathlib.Analysis.Convex.Contractible -public import Mathlib.Topology.Algebra.Module.LocallyConvex -public import Mathlib.Topology.Instances.Real.Lemmas +import Mathlib.Geometry.Convex.ConvexSpace.CompactSpaceStdSimplex +import Mathlib.Topology.MetricSpace.Basic +import Mathlib.Topology.MetricSpace.Isometry +import Mathlib.Topology.Algebra.Monoid.FunOnFinite +import Mathlib.Analysis.Convex.Contractible +import Mathlib.Topology.Algebra.Module.LocallyConvex +import Mathlib.Topology.Instances.Real.Lemmas + +namespace OAI.Geometry.Foundations.ConvexStdSimplexMetric + +open _root_.Convexity +open _root_.Convexity.StdSimplex /-! The finite real standard simplex carries the metric on its barycentric weights. -/ -public noncomputable section +noncomputable section -namespace Convexity.StdSimplex +namespace Convexity +open _root_.Convexity +namespace StdSimplex +open _root_.Convexity +open _root_.Convexity.StdSimplex /-- The sup metric on barycentric coordinates, preserving the standard simplex topology. -/ instance metricSpace (ι : Type*) [Fintype ι] : MetricSpace (StdSimplex ℝ ι) := (isEmbedding_toFun_comp_weights ℝ ι).comapMetricSpace (fun x => (x.weights : ι → ℝ)) /-- Barycentric coordinates of a real simplex point. -/ -scoped instance coeFn (ι : Type*) : CoeFun (StdSimplex ℝ ι) (fun _ => ι → ℝ) := +scoped instance _root_.OAI.Geometry.Foundations.ConvexStdSimplexMetric.Convexity.StdSimplex.coeFn (ι : Type*) : CoeFun (StdSimplex ℝ ι) (fun _ => ι → ℝ) := ⟨fun x => x.weights⟩ /-- Construct a finite simplex from nonnegative coordinates summing to one. -/ @@ -99,4 +110,9 @@ theorem isometry_weights (ι : Type*) [Fintype ι] : Isometry (fun x : StdSimplex ℝ ι => (x.weights : ι → ℝ)) := Isometry.of_dist_eq fun x y => (dist_eq_weights x y).symm -end Convexity.StdSimplex +end StdSimplex +end Convexity + +end + +end OAI.Geometry.Foundations.ConvexStdSimplexMetric diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/LinearAlgebra/Dual/Defs.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/LinearAlgebra/Dual/Defs.lean index c1149b4abc..bc766cc0f2 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/LinearAlgebra/Dual/Defs.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/LinearAlgebra/Dual/Defs.lean @@ -1,8 +1,12 @@ -module +/- +This file has been modified. +-/ -public import Mathlib.LinearAlgebra.Dual.Defs +import Mathlib.LinearAlgebra.Dual.Defs -public section +namespace OAI.LinearAlgebra.Foundations.DualDefs + +section /-- The dual of the zero map is zero. -/ @[simp] @@ -30,3 +34,7 @@ theorem LinearMap.dualMap_surjective_of_comp_eq_id {R M₁ M₂ : Type*} [CommSe {f : M₁ →ₗ[R] M₂} {g : M₂ →ₗ[R] M₁} (h : g.comp f = LinearMap.id) : Function.Surjective f.dualMap := fun φ => ⟨φ.comp g, LinearMap.ext fun x => congrArg φ (LinearMap.congr_fun h x)⟩ + +end + +end OAI.LinearAlgebra.Foundations.DualDefs diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/LinearAlgebra/Quotient/Basic.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/LinearAlgebra/Quotient/Basic.lean index 1b1920a71d..e3b9da700c 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/LinearAlgebra/Quotient/Basic.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/LinearAlgebra/Quotient/Basic.lean @@ -1,10 +1,17 @@ -module +/- +This file has been modified. +-/ -public import Mathlib.LinearAlgebra.Quotient.Basic +import Mathlib.LinearAlgebra.Quotient.Basic -public section +namespace OAI.LinearAlgebra.Foundations.QuotientBasic + +open _root_.Submodule + +section namespace Submodule +open _root_.Submodule variable {R M R₂ M₂ : Type*} [Ring R] [AddCommGroup M] [Module R M] [Ring R₂] [AddCommGroup M₂] [Module R₂ M₂] {τ₁₂ : R →+* R₂} @@ -24,3 +31,7 @@ theorem liftQ_smul {S : Type*} [Monoid S] [DistribMulAction S M₂] [SMulCommCla p.linearMap_qext (by ext; simp) end Submodule + +end + +end OAI.LinearAlgebra.Foundations.QuotientBasic diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/RingTheory/SmoothKrullDimension.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/RingTheory/SmoothKrullDimension.lean index 06de64fe4e..1ef199382c 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/RingTheory/SmoothKrullDimension.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/RingTheory/SmoothKrullDimension.lean @@ -12,18 +12,25 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Basic.Complex.Basic -public import Mathlib.RingTheory.Ideal.Height -public import Mathlib.RingTheory.QuasiFinite.Basic -public import Mathlib.RingTheory.RingHom.StandardSmooth +import Mathlib.Basic.Complex.Basic +import Mathlib.RingTheory.Ideal.Height +import Mathlib.RingTheory.QuasiFinite.Basic +import Mathlib.RingTheory.RingHom.StandardSmooth import Mathlib.RingTheory.KrullDimension.Field import Mathlib.RingTheory.KrullDimension.Polynomial import Mathlib.RingTheory.Unramified.LocalStructure +namespace OAI.Algebra.RingTheory.SmoothKrullDimension + +open _root_.Algebra +open _root_.MvPolynomial +open _root_.RingHom + /-! # Krull dimension along a quasi-finite or standard smooth ring map @@ -37,11 +44,11 @@ field in which every maximal ideal of a finitely generated algebra has residue f itself — a Jacobson-ring argument, applied here to `ℂ` — the bound is an equality. -/ -@[expose] public noncomputable section +noncomputable section -open CategoryTheory Topology +open _root_.CategoryTheory _root_.Topology -namespace Algebra +section variable {R S : Type*} [CommRing R] [CommRing S] [Algebra R S] @@ -62,7 +69,7 @@ lemma QuasiFinite.strictMono_primeSpectrumComap [QuasiFinite R S] : lemma QuasiFinite.ringKrullDim_le [QuasiFinite R S] : ringKrullDim S ≤ ringKrullDim R := by rw [ringKrullDim, ringKrullDim] - exact Order.krullDim_le_of_strictMono _ QuasiFinite.strictMono_primeSpectrumComap + exact Order.krullDim_le_of_strictMono _ _root_.OAI.Algebra.RingTheory.SmoothKrullDimension.QuasiFinite.strictMono_primeSpectrumComap /-- A flat quasi-finite algebra preserves the height of every prime under contraction. -/ lemma QuasiFinite.height_eq_height_under [QuasiFinite R S] [Module.Flat R S] @@ -74,7 +81,7 @@ lemma QuasiFinite.height_eq_height_under [QuasiFinite R S] [Module.Flat R S] _ = Order.height (PrimeSpectrum.comap (algebraMap R S) (⟨P, inferInstance⟩ : PrimeSpectrum S)) := by apply Order.height_eq_of_strictMono (PrimeSpectrum.comap (algebraMap R S)) - QuasiFinite.strictMono_primeSpectrumComap + _root_.OAI.Algebra.RingTheory.SmoothKrullDimension.QuasiFinite.strictMono_primeSpectrumComap intro Q p hp have hp' : p.asIdeal < Q.asIdeal.under R := by have hp'' : p.asIdeal < @@ -94,9 +101,10 @@ lemma QuasiFinite.height_eq_height_under [QuasiFinite R S] [Module.Flat R S] (PrimeSpectrum.comap (algebraMap R S) (⟨P, inferInstance⟩ : PrimeSpectrum S))).symm -end Algebra +end namespace RingHom +open _root_.RingHom variable {R S : Type*} [CommRing R] [CommRing S] @@ -128,7 +136,7 @@ lemma IsStandardSmoothOfRelativeDimension.ringKrullDim_le_add {f : R →+* S} {d RingHom.etale_algebraMap.mp hg calc ringKrullDim S ≤ ringKrullDim (MvPolynomial (Fin d) R) := - Algebra.QuasiFinite.ringKrullDim_le + _root_.OAI.Algebra.RingTheory.SmoothKrullDimension.QuasiFinite.ringKrullDim_le _ = ringKrullDim R + d := by simp @@ -138,11 +146,12 @@ lemma IsStandardSmoothOfRelativeDimension.ringKrullDim_le_complex {S : Type*} [C {f : ℂ →+* S} {d : ℕ} (hf : f.IsStandardSmoothOfRelativeDimension d) : ringKrullDim S ≤ d := by simpa only [ringKrullDim_eq_zero_of_field, WithBot.coe_zero, zero_add] using - hf.ringKrullDim_le_add + (_root_.OAI.Algebra.RingTheory.SmoothKrullDimension.RingHom.IsStandardSmoothOfRelativeDimension.ringKrullDim_le_add hf) end RingHom namespace MvPolynomial +open _root_.MvPolynomial /-- Every maximal ideal of a polynomial ring in `d` variables over a field has height `d`. -/ lemma height_eq_fin_of_isMaximal (K : Type*) [Field K] (d : ℕ) @@ -175,6 +184,7 @@ lemma height_eq_fin_of_isMaximal (K : Type*) [Field K] (d : ℕ) end MvPolynomial namespace RingHom +open _root_.RingHom /-- A nonzero standard-smooth complex algebra of relative dimension `d` has Krull dimension exactly `d`. @@ -192,15 +202,19 @@ lemma IsStandardSmoothOfRelativeDimension.ringKrullDim_eq_complex {S : Type*} [C have hfiniteType : (algebraMap (MvPolynomial (Fin d) ℂ) S).FiniteType := RingHom.finiteType_algebraMap.mpr inferInstance have hunder : (P.under (MvPolynomial (Fin d) ℂ)).IsMaximal := - hfiniteType.isMaximal_comap_of_isJacobsonRing P + (_root_.OAI.Algebra.RingTheory.SmoothKrullDimension.RingHom.FiniteType.isMaximal_comap_of_isJacobsonRing hfiniteType) P have hheight : P.height = d := by - rw [Algebra.QuasiFinite.height_eq_height_under (R := MvPolynomial (Fin d) ℂ)] - exact MvPolynomial.height_eq_fin_of_isMaximal ℂ d + rw [_root_.OAI.Algebra.RingTheory.SmoothKrullDimension.QuasiFinite.height_eq_height_under (R := MvPolynomial (Fin d) ℂ)] + exact _root_.OAI.Algebra.RingTheory.SmoothKrullDimension.MvPolynomial.height_eq_fin_of_isMaximal ℂ d (P.under (MvPolynomial (Fin d) ℂ)) - apply le_antisymm hf.ringKrullDim_le_complex + apply le_antisymm (_root_.OAI.Algebra.RingTheory.SmoothKrullDimension.RingHom.IsStandardSmoothOfRelativeDimension.ringKrullDim_le_complex hf) change (↑(d : ℕ∞) : WithBot ℕ∞) ≤ ringKrullDim S have hlower : (↑P.height : WithBot ℕ∞) ≤ ringKrullDim S := Ideal.height_le_ringKrullDim_of_ne_top Ideal.IsPrime.ne_top' rwa [← hheight] end RingHom + +end + +end OAI.Algebra.RingTheory.SmoothKrullDimension diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/Algebra/IsOpenUnits.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/Algebra/IsOpenUnits.lean index ae587cbe84..b50d03cbea 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/Algebra/IsOpenUnits.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/Algebra/IsOpenUnits.lean @@ -12,10 +12,13 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Topology.Algebra.IsOpenUnits +import Mathlib.Topology.Algebra.IsOpenUnits + +namespace OAI.Topology.Algebra.IsOpenUnits /-! # Monoids with open units @@ -28,9 +31,9 @@ These belong in `Mathlib/Topology/Algebra/IsOpenUnits.lean`; this file can be de are there. -/ -@[expose] public section +section -open Topology +open _root_.Topology lemma Set.range_units_val {M : Type*} [Monoid M] : Set.range (Units.val : Mˣ → M) = {x | IsUnit x} := @@ -40,7 +43,7 @@ variable (M : Type*) [Monoid M] [TopologicalSpace M] [IsOpenUnits M] /-- In a monoid with open units, being a unit is an open condition. -/ lemma isOpen_setOf_isUnit : IsOpen {x : M | IsUnit x} := - Set.range_units_val (M := M) ▸ IsOpenUnits.isOpenEmbedding_unitsVal.isOpen_range + _root_.OAI.Topology.Algebra.IsOpenUnits.Set.range_units_val (M := M) ▸ IsOpenUnits.isOpenEmbedding_unitsVal.isOpen_range variable {M} in /-- Reading off the unit underlying an element known to be one is continuous. -/ @@ -55,3 +58,7 @@ lemma continuousOn_ringInverse {M : Type*} [MonoidWithZero M] [TopologicalSpace rw [continuousOn_iff_continuous_domRestrict] refine (Units.continuous_coe_inv.comp continuous_isUnit_unit).congr fun x ↦ ?_ simp [← Ring.inverse_unit x.2.unit] + +end + +end OAI.Topology.Algebra.IsOpenUnits diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/Category/TopPair.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/Category/TopPair.lean index d4060f6f4e..daef8ac7d9 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/Category/TopPair.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/Category/TopPair.lean @@ -12,10 +12,15 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Topology.Category.TopPair +import Mathlib.Topology.Category.TopPair + +namespace OAI.Topology.Category.TopPairOf + +open _root_.TopPair /-! # Maps of topological pairs from maps of subsets @@ -27,11 +32,12 @@ first, so this file builds the morphism, and the isomorphism, from one map of sp universe u -open CategoryTheory +open _root_.CategoryTheory -@[expose] public noncomputable section +noncomputable section namespace TopPair +open _root_.TopPair variable {X Y : TopCat.{u}} {A : Set X} {B : Set Y} @@ -70,3 +76,7 @@ def isoOfSubset (e : X ≃ₜ Y) (he : ∀ x, e x ∈ B ↔ x ∈ A) : · ext y; exact e.apply_symm_apply y end TopPair + +end + +end OAI.Topology.Category.TopPairOf diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/ChartedSpaceParacompact.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/ChartedSpaceParacompact.lean index 37a4830ff4..a08363fcef 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/ChartedSpaceParacompact.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/ChartedSpaceParacompact.lean @@ -12,11 +12,16 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Geometry.Manifold.ChartedSpace -public import Mathlib.Topology.Compactness.Paracompact +import Mathlib.Geometry.Manifold.ChartedSpace +import Mathlib.Topology.Compactness.Paracompact + +namespace OAI.Topology.Foundations.ChartedSpaceParacompact + +open _root_.TopologicalSpace /-! # Hereditary paracompactness of a compact charted space @@ -27,11 +32,12 @@ the sheaf-theoretic comparisons on a compact analytic manifold work on every ope only on the whole space. -/ -@[expose] public section +section universe u namespace TopologicalSpace +open _root_.TopologicalSpace /-- Every open subset of a compact Hausdorff charted space with locally compact, second-countable model is paracompact. This is the hereditary-paracompactness input used for @@ -50,3 +56,7 @@ theorem opens_paracompactSpace_of_compact_chartedSpace infer_instance end TopologicalSpace + +end + +end OAI.Topology.Foundations.ChartedSpaceParacompact diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/KrullDimension.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/KrullDimension.lean index 808787b9d2..8420ebc26b 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/KrullDimension.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/KrullDimension.lean @@ -12,15 +12,22 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Topology.KrullDimension +import Mathlib.Topology.KrullDimension + +namespace OAI.Topology.Foundations.KrullDimension -public section +section attribute [local instance] specializationOrder in /-- On a sober space, the Krull dimension counts chains of points under specialisation. -/ lemma topologicalKrullDim_eq_krullDim (X : Type*) [TopologicalSpace X] [T0Space X] [QuasiSober X] : topologicalKrullDim X = Order.krullDim X := Order.krullDim_eq_of_orderIso irreducibleSetEquivPoints + +end + +end OAI.Topology.Foundations.KrullDimension diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/Sheaves/StalkExact.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/Sheaves/StalkExact.lean index 794bd1a23c..f13a8b356d 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/Sheaves/StalkExact.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Mathlib/Topology/Sheaves/StalkExact.lean @@ -12,12 +12,18 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import Mathlib.Algebra.Homology.ShortComplex.Ab -public import Mathlib.Topology.Sheaves.Abelian -public import Mathlib.Topology.Sheaves.Stalks +import Mathlib.Algebra.Homology.ShortComplex.Ab +import Mathlib.Topology.Sheaves.Abelian +import Mathlib.Topology.Sheaves.Stalks + +namespace OAI.Topology.Sheaves.StalkExact + +open _root_.TopCat +open _root_.TopCat.Presheaf /-! # Stalkwise exactness from local primitives @@ -31,13 +37,17 @@ This belongs in `Mathlib/Topology/Sheaves/Stalks.lean`; this file can be deleted there. -/ -@[expose] public section +section -open CategoryTheory TopologicalSpace +open _root_.CategoryTheory _root_.TopologicalSpace universe u -namespace TopCat.Presheaf +namespace TopCat +open _root_.TopCat +namespace Presheaf +open _root_.TopCat +open _root_.TopCat.Presheaf /-- A neighborhood-wise lifting of every local kernel section gives exactness after passing to the stalk. The lift may be taken after shrinking the original neighborhood. -/ @@ -72,4 +82,9 @@ lemma stalkExact_of_locallyPrimitive {X : TopCat.{u}} rw [TopCat.Presheaf.stalkFunctor_map_germ_apply, ht, S.X₂.germ_res_apply iVW x hxV, S.X₂.germ_res_apply iWU x hxW] -end TopCat.Presheaf +end Presheaf +end TopCat + +end + +end OAI.Topology.Sheaves.StalkExact diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Statement.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Statement.lean index 57a101c9b7..c45d21b152 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Statement.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Statement.lean @@ -12,11 +12,16 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.FundamentalClass -public import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.Filtration +import HodgeConjecture.Definitions.AlgebraicGeometry.Cycle.FundamentalClass +import HodgeConjecture.Lemmas.AlgebraicGeometry.Hodge.Filtration + +namespace OAI.AlgebraicGeometry.Foundations.Core + +open scoped OAI.AlgebraicGeometry.Hodge.Filtration.ComplexPoint /-! # The Hodge conjecture @@ -32,7 +37,7 @@ classes of algebraic subvarieties of `X` of codimension `p`. [P. Deligne, *The Hodge Conjecture*](https://www.claymath.org/wp-content/uploads/2022/02/MPPc.pdf) -/ -open CategoryTheory AlgebraicGeometry ComplexPoint +open _root_.CategoryTheory _root_.AlgebraicGeometry OAI.AlgebraicGeometry.ComplexPoint /-- Statement of the **Hodge conjecture**. @@ -40,7 +45,9 @@ For every nonsingular complex projective variety `X` and natural number `p`, eve class of degree `2p` on `X` is a rational linear combination of classes of algebraic subvarieties of `X` of codimension `p`. The algebraic subspace is `algebraicCycleClassSpan`, the span of the component classes of `Cycle.FundamentalClass` indexed by the points of codimension `p`. -/ -@[expose] public def HodgeConjecture : Prop := +def _root_.OAI.AlgebraicGeometry.Foundations.Core : Prop := ∀ (X : Over (Spec ↧ℂ)) [IsIntegral X.left] [Smooth X.hom] - [IsProjective X.hom] (p : ℕ), - Hdg^p(X; ℚ) ≤ algebraicCycleClassSpan X p + [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] (p : ℕ), + Hdg^p(X; ℚ) ≤ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.algebraicCycleClassSpan X p + +end OAI.AlgebraicGeometry.Foundations.Core diff --git a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Variants.lean b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Variants.lean index 7d16e69383..65c3c18761 100644 --- a/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Variants.lean +++ b/lean/ComparatorChallenges/HodgeConjectureCMAbelianVarieties/HodgeConjecture/Variants.lean @@ -12,11 +12,16 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. + +This file has been modified. -/ -module -public import HodgeConjecture.Statement -public import Mathlib.CategoryTheory.Monoidal.Grp +import HodgeConjecture.Statement +import Mathlib.CategoryTheory.Monoidal.Grp + +namespace OAI.AlgebraicGeometry.Foundations.Variants + +open scoped OAI.AlgebraicGeometry.Hodge.Filtration.ComplexPoint /-! # Special cases of the Hodge conjecture @@ -35,33 +40,33 @@ is open. n-folds*](https://arxiv.org/abs/2502.03415) -/ -@[expose] public section +section -open CategoryTheory AlgebraicGeometry ComplexPoint TopologicalSpace +open _root_.CategoryTheory _root_.AlgebraicGeometry OAI.AlgebraicGeometry.ComplexPoint _root_.TopologicalSpace /-- Statement of the **Lefschetz (1,1) theorem**: the Hodge conjecture in codimension one. This is a theorem. -/ def LefschetzOneOne : Prop := - ∀ (X : Over (Spec ↧ℂ)) [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom], - Hdg^1(X; ℚ) ≤ algebraicCycleClassSpan X 1 + ∀ (X : Over (Spec ↧ℂ)) [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom], + Hdg^1(X; ℚ) ≤ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.algebraicCycleClassSpan X 1 /-- Statement of the **Hodge conjecture in dimension at most `n`**. This is a theorem for `n ≤ 3`. It follows from the Lefschetz (1,1) theorem and the hard Lefschetz theorem. -/ def HodgeConjectureInDimensionLE (n : ℕ) : Prop := - ∀ (X : Over (Spec ↧ℂ)) [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom], - dim X.left ≤ n → ∀ p : ℕ, Hdg^p(X; ℚ) ≤ algebraicCycleClassSpan X p + ∀ (X : Over (Spec ↧ℂ)) [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom], + _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left ≤ n → ∀ p : ℕ, Hdg^p(X; ℚ) ≤ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.algebraicCycleClassSpan X p /-- Statement of the **Hodge conjecture for abelian varieties**. An abelian variety over `ℂ` is an integral smooth projective group object over `Spec ℂ`. This is open. -/ def HodgeConjectureForAbelianVarieties : Prop := - ∀ (X : Over (Spec ↧ℂ)) [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] [GrpObj X] + ∀ (X : Over (Spec ↧ℂ)) [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] [GrpObj X] (p : ℕ), - Hdg^p(X; ℚ) ≤ algebraicCycleClassSpan X p + Hdg^p(X; ℚ) ≤ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.algebraicCycleClassSpan X p /-- Statement of the **Hodge conjecture for abelian varieties of dimension at most `n`**. @@ -69,7 +74,9 @@ This is a theorem for `n ≤ 5`. Moonen and Zarhin showed that the Hodge ring of variety of dimension five or less is generated by divisor classes and Weil classes, and Markman showed that the Weil classes on an abelian fourfold of Weil type are algebraic. -/ def HodgeConjectureForAbelianVarietiesInDimensionLE (n : ℕ) : Prop := - ∀ (X : Over (Spec ↧ℂ)) [IsIntegral X.left] [Smooth X.hom] [IsProjective X.hom] [GrpObj X], - dim X.left ≤ n → ∀ p : ℕ, Hdg^p(X; ℚ) ≤ algebraicCycleClassSpan X p + ∀ (X : Over (Spec ↧ℂ)) [IsIntegral X.left] [Smooth X.hom] [_root_.OAI.AlgebraicGeometry.Foundations.ProjectiveSpaceIs.IsProjective X.hom] [GrpObj X], + _root_.OAI.Topology.Dimension.Basic.TopologicalSpace.dim X.left ≤ n → ∀ p : ℕ, Hdg^p(X; ℚ) ≤ _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.algebraicCycleClassSpan X p end + +end OAI.AlgebraicGeometry.Foundations.Variants diff --git a/lean/OAI/Algebra/DeRham/Basic.lean b/lean/OAI/Algebra/DeRham/Basic.lean index 3d7968f428..a1572e1dee 100644 --- a/lean/OAI/Algebra/DeRham/Basic.lean +++ b/lean/OAI/Algebra/DeRham/Basic.lean @@ -83,7 +83,7 @@ variable {R A} /-- A single differential anticommutes with every homogeneous factor, which globally reads as commuting past the grade involution. -/ -private lemma ι_mul_eq_involute_mul_ι (m : Ω[A⁄R]) (y : ExtAlg R A) : +lemma ι_mul_eq_involute_mul_ι (m : Ω[A⁄R]) (y : ExtAlg R A) : ExteriorAlgebra.ι A m * y = involute y * ExteriorAlgebra.ι A m := by induction y using ExteriorAlgebra.induction with @@ -337,16 +337,16 @@ lemma extDeriv_mul (x y : ExtAlg R A) : rfl /-- Multiplying forms adds their degrees. -/ -private lemma mul_mem_exteriorPower {m n : ℕ} {x y : ExtAlg R A} +lemma mul_mem_exteriorPower {m n : ℕ} {x y : ExtAlg R A} (hx : x ∈ ⋀[A]^m Ω[A⁄R]) (hy : y ∈ ⋀[A]^n Ω[A⁄R]) : x * y ∈ ⋀[A]^(m + n) Ω[A⁄R] := by rw [ExteriorAlgebra.exteriorPower, pow_add] exact Submodule.mul_mem_mul hx hy -private lemma ι_mem_exteriorPower (ω : Ω[A⁄R]) : +lemma ι_mem_exteriorPower (ω : Ω[A⁄R]) : ExteriorAlgebra.ι A ω ∈ ⋀[A]^1 Ω[A⁄R] := by simp -private lemma snd_phi_mem (ω : Ω[A⁄R]) : snd (phi R A ω) ∈ ⋀[A]^2 Ω[A⁄R] := by +lemma snd_phi_mem (ω : Ω[A⁄R]) : snd (phi R A ω) ∈ ⋀[A]^2 Ω[A⁄R] := by induction ω using D_induction with | D a => simp @@ -400,7 +400,7 @@ def differential (p : ℕ) : Form R A p →ₗ[R] Form R A (p + 1) where @[simp] lemma coe_differential (p : ℕ) (x : Form R A p) : (differential R A p x : ExtAlg R A) = extDeriv R A x := rfl -private lemma extDeriv_smul (a : A) (x : ExtAlg R A) : +lemma extDeriv_smul (a : A) (x : ExtAlg R A) : extDeriv R A (a • x) = a • extDeriv R A x + ExteriorAlgebra.ι A (KaehlerDifferential.D R A a) * x := by @@ -417,7 +417,7 @@ def exact (p : ℕ) (v : Fin p → A) : Form R A p := ExteriorAlgebra.ιMulti A p fun i => KaehlerDifferential.D R A (v i) := rfl /-- Wedges of exact forms are closed. -/ -private lemma extDeriv_exact (p : ℕ) (v : Fin p → A) : +lemma extDeriv_exact (p : ℕ) (v : Fin p → A) : extDeriv R A (DeRham.Basic.exact R A p v : ExtAlg R A) = 0 := by induction p with | zero => @@ -478,7 +478,7 @@ lemma ofConstant_apply (r : R) : /-! ### Generators -/ /-- Exact forms span the differential forms of degree `p` over `A`. -/ -private lemma span_exact (p : ℕ) : +lemma span_exact (p : ℕ) : Submodule.span A (Set.range fun v : Fin p → A => DeRham.Basic.exact R A p v) = ⊤ := by rw [← top_le_iff, ← exteriorPower.ιMulti_span_of_span A p Ω[A⁄R] (KaehlerDifferential.span_range_derivation R A), Submodule.span_le] @@ -487,7 +487,7 @@ private lemma span_exact (p : ℕ) : exact Submodule.subset_span ⟨v, congrArg _ (funext hv)⟩ /-- Forms `a₀ * d a₁ ∧ ⋯ ∧ d aₚ` span the differential forms of degree `p` over the base ring. -/ -private lemma span_mk (p : ℕ) : +lemma span_mk (p : ℕ) : Submodule.span R (Set.range fun av : A × (Fin p → A) => DeRham.Basic.mk R A p av.1 av.2) = ⊤ := by have key : ∀ x : Form R A p, x ∈ Submodule.span A (Set.range fun v : Fin p → A => DeRham.Basic.exact R A p v) → ∀ a : A, @@ -502,7 +502,7 @@ private lemma span_mk (p : ℕ) : exact top_unique fun x _ => by simpa using key x (by rw [span_exact]; trivial) 1 /-- Two `R`-linear maps out of degree `p` forms agreeing on the generators are equal. -/ -private lemma linearMap_ext {M : Type*} [AddCommGroup M] [Module R M] {p : ℕ} +lemma linearMap_ext {M : Type*} [AddCommGroup M] [Module R M] {p : ℕ} {F G : Form R A p →ₗ[R] M} (h : ∀ a₀ v, F (DeRham.Basic.mk R A p a₀ v) = G (DeRham.Basic.mk R A p a₀ v)) : F = G := LinearMap.ext_on (span_mk R A p) (by rintro _ ⟨⟨a₀, v⟩, rfl⟩; exact h a₀ v) @@ -554,7 +554,7 @@ def extAlgMap : ExtAlg R A →ₐ[A] ExtAlg R B := @[simp] lemma extAlgMap_algebraMap_base (r : R) : extAlgMap R A B (algebraMap R (ExtAlg R A) r) = algebraMap R (ExtAlg R B) r := by simp -private lemma extAlgMap_ιMulti (p : ℕ) (w : Fin p → Ω[A⁄R]) : +lemma extAlgMap_ιMulti (p : ℕ) (w : Fin p → Ω[A⁄R]) : extAlgMap R A B (ExteriorAlgebra.ιMulti A p w) = ExteriorAlgebra.ιMulti B p fun i => KaehlerDifferential.map R R A B (w i) := by diff --git a/lean/OAI/AlgebraicGeometry/ClosedImmersion/HolomorphicChartsAt.lean b/lean/OAI/AlgebraicGeometry/ClosedImmersion/HolomorphicChartsAt.lean index 75e61025bb..f529ecb651 100644 --- a/lean/OAI/AlgebraicGeometry/ClosedImmersion/HolomorphicChartsAt.lean +++ b/lean/OAI/AlgebraicGeometry/ClosedImmersion/HolomorphicChartsAt.lean @@ -63,7 +63,7 @@ variable (X Y : Over (Spec ↧ℂ)) /-- The underlying normal coordinate change and its inverse are analytic at every ambient source point. -/ -private theorem closedImmersionHolomorphicFlatteningChart_analytic (y : ComplexPoint.Basic.ComplexSchemePoint X) +theorem closedImmersionHolomorphicFlatteningChart_analytic (y : ComplexPoint.Basic.ComplexSchemePoint X) (hy : y ∈ (ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).source) : AnalyticAt ℂ (ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z) (ComplexPoint.Basic.ComplexSchemePoint.localChart X d (ComplexPoint.Basic.Point.map i z) y) ∧ @@ -71,7 +71,7 @@ private theorem closedImmersionHolomorphicFlatteningChart_analytic (y : ComplexP (ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z y) := ((HolomorphicChartsAt.OpenPartialHomeomorph.biAnalyticRestrict_mem_source_iff _ _).mp hy.1.2).2 -private theorem closedImmersionNormalCoordinateChange_symm_at_chart (y : ComplexPoint.Basic.ComplexSchemePoint X) +theorem closedImmersionNormalCoordinateChange_symm_at_chart (y : ComplexPoint.Basic.ComplexSchemePoint X) (hy : y ∈ (ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z).source) : (ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalCoordinateChange X Y i m d z).symm (ComplexPoint.Basic.ComplexSchemePoint.closedImmersionHolomorphicFlatteningChart X Y i m d z y) = diff --git a/lean/OAI/AlgebraicGeometry/ClosedImmersion/NormalCoordinates.lean b/lean/OAI/AlgebraicGeometry/ClosedImmersion/NormalCoordinates.lean index ffa995be24..787e52d43d 100644 --- a/lean/OAI/AlgebraicGeometry/ClosedImmersion/NormalCoordinates.lean +++ b/lean/OAI/AlgebraicGeometry/ClosedImmersion/NormalCoordinates.lean @@ -102,7 +102,7 @@ theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.close /-- Near the selected ambient point, membership in the entire image is equivalent to having zero normal coordinate. The forward direction uses the induced topology to exclude image points whose intrinsic parameters are outside the coordinate neighborhood. -/ -private theorem eventually_mem_range_iff_normal_eq_zero : +theorem eventually_mem_range_iff_normal_eq_zero : ∀ᶠ y in 𝓝 (ComplexPoint.Basic.Point.map i z), y ∈ Set.range (ComplexPoint.Basic.Point.map i) ↔ ((ComplexPoint.Basic.ComplexSchemePoint.closedImmersionNormalChart X Y i m d z).symm diff --git a/lean/OAI/AlgebraicGeometry/ComplexPoint/Basic.lean b/lean/OAI/AlgebraicGeometry/ComplexPoint/Basic.lean index 055791ae6e..176476cf81 100644 --- a/lean/OAI/AlgebraicGeometry/ComplexPoint/Basic.lean +++ b/lean/OAI/AlgebraicGeometry/ComplexPoint/Basic.lean @@ -201,7 +201,7 @@ lemma underlying_map {Y : Over (Spec ↧R)} (f : X ⟶ Y) (z : Point R X) : (Point.map f z).underlying = f.left z.underlying := rfl /-- The stalk homomorphism of the image of an `R`-point is obtained functorially. -/ -private lemma stalkHom_map {Y : Over (Spec ↧R)} (f : X ⟶ Y) (z : Point R X) : +lemma stalkHom_map {Y : Over (Spec ↧R)} (f : X ⟶ Y) (z : Point R X) : (Point.map f z).stalkHom = f.left.stalkMap z.underlying ≫ z.stalkHom := Scheme.stalkClosedPointTo_comp _ _ @@ -256,7 +256,7 @@ noncomputable instance analyticTopology : TopologicalSpace (Point R X) := /-- A set of `R`-points is analytically open exactly when, in every affine chart, it is cut out by an open set of ring homomorphisms `Γ(X.left, U) ⟶ ↧R`. -/ -private lemma isOpen_analyticTopology_iff {W : Set (Point R X)} : +lemma isOpen_analyticTopology_iff {W : Set (Point R X)} : IsOpen W ↔ ∀ U : X.left.affineOpens, ∃ O : Set (Γ(X.left, U.1) ⟶ ↧R), IsOpen O ∧ evaluationHom U.1 ⁻¹' O = Subtype.val ⁻¹' W := by rw [isOpen_iSup_iff] diff --git a/lean/OAI/AlgebraicGeometry/Cycle/ComponentSmoothSupportPurity.lean b/lean/OAI/AlgebraicGeometry/Cycle/ComponentSmoothSupportPurity.lean index 03673a068d..922fd19a23 100644 --- a/lean/OAI/AlgebraicGeometry/Cycle/ComponentSmoothSupportPurity.lean +++ b/lean/OAI/AlgebraicGeometry/Cycle/ComponentSmoothSupportPurity.lean @@ -45,7 +45,7 @@ abbrev _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycleC include hx in /-- Every `y ∈ Z(ℂ) \ Z_sing(ℂ)` has arbitrarily small open neighborhoods `W` in `X(ℂ)` with `H^n(W, W \ Z(ℂ); ℚ) = 0` for `n ≠ 2p`. -/ -private theorem cycleComponentSmoothSupport_exists_relativeCohomology_vanishing +theorem cycleComponentSmoothSupport_exists_relativeCohomology_vanishing (y : ComplexPoint.Basic.ComplexSchemePoint X) (hy : y ∈ Support.cycleComponentSupport X x) (hyU : y ∈ ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x) (V : Opens (ComplexPoint.Basic.ComplexSchemePoint X)) (hyV : y ∈ V) : diff --git a/lean/OAI/AlgebraicGeometry/Cycle/ComponentSupportExtension.lean b/lean/OAI/AlgebraicGeometry/Cycle/ComponentSupportExtension.lean index 50cff1bf1e..6ae520bb72 100644 --- a/lean/OAI/AlgebraicGeometry/Cycle/ComponentSupportExtension.lean +++ b/lean/OAI/AlgebraicGeometry/Cycle/ComponentSupportExtension.lean @@ -35,7 +35,7 @@ variable (X : Over (Spec ↧ℂ)) include hx in /-- `H^n_{Z_sing,k(ℂ)}(X(ℂ); ℚ) = 0` for `n < 2(p + 1)`, where `Z_sing,k` is the `k`-th stage of the finite smooth filtration of `Z_sing` (so `Z_sing,0 = Z_sing`). -/ -private theorem cycleComponentSingularFiltrationSectionCohomology_isZero_of_lt +theorem cycleComponentSingularFiltrationSectionCohomology_isZero_of_lt (k : ℕ) (hk : k ≤ ComponentSingularGe.cycleComponentSingularFiltrationLength X x) (n : ℤ) (hn : n < 2 * ((p : ℤ) + 1)) : -- `H^n_{Z_sing,k(ℂ)}(X(ℂ); ℚ)`, for the `k`-th stage of the singular filtration. @@ -66,7 +66,7 @@ private theorem cycleComponentSingularFiltrationSectionCohomology_isZero_of_lt include hx in /-- `H^n_{Z_sing(ℂ)}(X(ℂ); ℚ) = 0` for `n < 2(p + 1)`. -/ -private theorem cycleComponentSingularBoundarySectionCohomology_isZero_of_lt +theorem cycleComponentSingularBoundarySectionCohomology_isZero_of_lt (n : ℤ) (hn : n < 2 * ((p : ℤ) + 1)) : -- `H^n_{Z_sing(ℂ)}(X(ℂ); ℚ)`. IsZero ((((AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation @@ -100,7 +100,7 @@ theorem _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.cycle include hx in /-- `H^{2p+1}_{Z_sing(ℂ)}(X(ℂ); ℚ) = 0`. -/ -private theorem cycleComponentSingularBoundarySectionCohomology_isZero_cycleDegree_succ : +theorem cycleComponentSingularBoundarySectionCohomology_isZero_cycleDegree_succ : -- `H^{2p+1}_{Z_sing(ℂ)}(X(ℂ); ℚ)`. IsZero ((((AlgebraicTopology.Support.DerivedSectionsLocalization.TopCat.Sheaf.supportEvaluation -- `X(ℂ)`. @@ -116,7 +116,7 @@ private theorem cycleComponentSingularBoundarySectionCohomology_isZero_cycleDegr cycleComponentSingularBoundarySectionCohomology_isZero_of_lt X x hx _ (by omega) /-- Every point of the singular boundary belongs to the full component support. -/ -private theorem cycleComponentSingularBoundary_le_support : +theorem cycleComponentSingularBoundary_le_support : ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSingularAnalyticClosedFiltration X x 0 ≤ ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x := by intro y hy obtain ⟨z, _, hz⟩ := hy @@ -125,7 +125,7 @@ private theorem cycleComponentSingularBoundary_le_support : exact ⟨z, hz⟩ /-- The complement inclusion determining the localization sequence. -/ -private theorem cycleComponentSupportComplement_le_smoothAmbientOpen : +theorem cycleComponentSupportComplement_le_smoothAmbientOpen : (ComplexPoint.Basic.ComplexSchemePoint.cycleComponentAnalyticClosedSupport X x).compl ≤ ComplexPoint.Basic.ComplexSchemePoint.cycleComponentSmoothSupportAmbientOpen X x := fun _ hy hyS ↦ hy (cycleComponentSingularBoundary_le_support X x hyS) diff --git a/lean/OAI/AlgebraicGeometry/Cycle/SmoothPairCoclassSection.lean b/lean/OAI/AlgebraicGeometry/Cycle/SmoothPairCoclassSection.lean index 0eb8c65c86..88259e0717 100644 --- a/lean/OAI/AlgebraicGeometry/Cycle/SmoothPairCoclassSection.lean +++ b/lean/OAI/AlgebraicGeometry/Cycle/SmoothPairCoclassSection.lean @@ -85,7 +85,7 @@ def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.smoothClo set_option backward.isDefEq.respectTransparency false in /-- The ambient overlap theorem proves equality of chart germs on support. -/ -private theorem smoothClosedSupportChartCoclassGerm_eq +theorem smoothClosedSupportChartCoclassGerm_eq (z z' : ComplexPoint.Basic.ComplexSchemePoint Y) (x : ComplexPoint.Basic.ComplexSchemePoint X) (hxS : x ∈ Set.range (ComplexPoint.Basic.Point.map i)) (hx : x ∈ ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z) @@ -102,7 +102,7 @@ private theorem smoothClosedSupportChartCoclassGerm_eq simpa only [ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartCoclass_restrict] using heq /-- Away from the closed image, the chart coclass germ is zero. -/ -private theorem smoothClosedSupportChartCoclassGerm_eq_zero +theorem smoothClosedSupportChartCoclassGerm_eq_zero (z : ComplexPoint.Basic.ComplexSchemePoint Y) (x : ComplexPoint.Basic.ComplexSchemePoint X) (hx : x ∈ ComplexPoint.Basic.ComplexSchemePoint.smoothClosedSupportChartOpen X Y i m d z) (hxS : x ∉ Set.range (ComplexPoint.Basic.Point.map i)) : diff --git a/lean/OAI/AlgebraicGeometry/Hodge/AnalyticDifferentialForms.lean b/lean/OAI/AlgebraicGeometry/Hodge/AnalyticDifferentialForms.lean index 1fc2a22979..4db10a17c8 100644 --- a/lean/OAI/AlgebraicGeometry/Hodge/AnalyticDifferentialForms.lean +++ b/lean/OAI/AlgebraicGeometry/Hodge/AnalyticDifferentialForms.lean @@ -117,7 +117,7 @@ def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.extendedS ComplexPoint.Basic.ComplexSchemePoint X → ℂ := Function.extend Subtype.val f.1 0 -private lemma extendedSection_contMDiffWithinAt [SmoothOfRelativeDimension d X.hom] +lemma extendedSection_contMDiffWithinAt [SmoothOfRelativeDimension d X.hom] (U : (Opens (TopCat.of (ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (f : ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) {x : ComplexPoint.Basic.ComplexSchemePoint X} (hx : x ∈ (Opposite.unop U : Opens (ComplexPoint.Basic.ComplexSchemePoint X))) : @@ -364,7 +364,7 @@ def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartDeri (f : ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (y : ↥(ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) : ComplexPoint.Basic.ComplexSchemePoint.chartDerivation X d U z f y = ComplexPoint.Basic.ComplexSchemePoint.chartSectionDifferential X d U z f y.1 := rfl -private lemma update_eval {p : ℕ} {V W : Type*} (L : Fin p → V → W) (i : Fin p) +lemma update_eval {p : ℕ} {V W : Type*} (L : Fin p → V → W) (i : Fin p) (a : V → W) (y : V) : (fun j => Function.update L i a j y) = Function.update (fun j => L j y) i (a y) := by funext j @@ -420,7 +420,7 @@ def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEval ((ComplexPoint.Basic.ComplexSchemePoint.chartWedge X d U z p).compLinearMap (ComplexPoint.Basic.ComplexSchemePoint.chartDerivation X d U z).liftKaehlerDifferential) -private lemma chartEvaluationHolo_mk [SmoothOfRelativeDimension d X.hom] +lemma chartEvaluationHolo_mk [SmoothOfRelativeDimension d X.hom] (U : (Opens (TopCat.of (ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) (a₀ : ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (v : Fin p → ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (y : ↥(ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z)) : @@ -492,7 +492,7 @@ def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEval (ComplexPoint.Basic.ComplexSchemePoint.extendByZeroLinear X d U z _).comp ((ComplexPoint.Basic.ComplexSchemePoint.chartEvaluationHolo X d U z p).restrictScalars ℂ) -private lemma chartEvaluation_apply_of_mem [SmoothOfRelativeDimension d X.hom] +lemma chartEvaluation_apply_of_mem [SmoothOfRelativeDimension d X.hom] (U : (Opens (TopCat.of (ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) (θ : OAI.Algebra.DeRham.Basic.Form ℂ (ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) p) {y : Fin d → ℂ} (hy : y ∈ ComplexPoint.Basic.ComplexSchemePoint.chartSectionDomain X d U z) : @@ -551,7 +551,7 @@ lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.chartEv rw [chartEvaluation_apply_of_mem X d U z p _ hy, chartEvaluationHolo_mk] rfl -private lemma chartEvaluation_mk_eqOn [SmoothOfRelativeDimension d X.hom] +lemma chartEvaluation_mk_eqOn [SmoothOfRelativeDimension d X.hom] (U : (Opens (TopCat.of (ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) (a₀ : ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) (v : Fin p → ComplexPoint.Basic.ComplexSchemePoint.OpenHolomorphicFunctions X d U) : Set.EqOn (ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation X d U z p @@ -561,7 +561,7 @@ private lemma chartEvaluation_mk_eqOn [SmoothOfRelativeDimension d X.hom] /-- Exterior differentiation of `a₀ * d v₀ ∧ ⋯ ∧ d vₚ₋₁` inserts the coefficient as the first differential. -/ -private lemma extDerivWithin_chartGeneratorEvaluation +lemma extDerivWithin_chartGeneratorEvaluation [SmoothOfRelativeDimension d X.hom] (U : (Opens (TopCat.of (ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) @@ -591,7 +591,7 @@ private lemma extDerivWithin_chartGeneratorEvaluation funext i refine Fin.cases ?_ (fun j ↦ ?_) i <;> rfl -private lemma chartGeneratorEvaluation_differentiableWithinAt +lemma chartGeneratorEvaluation_differentiableWithinAt [SmoothOfRelativeDimension d X.hom] (U : (Opens (TopCat.of (ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) @@ -607,7 +607,7 @@ private lemma chartGeneratorEvaluation_differentiableWithinAt (ComplexPoint.Basic.ComplexSchemePoint.isOpen_chartSectionDomain X d U z) hy (fun i ↦ ComplexPoint.Basic.ComplexSchemePoint.chartSection_contDiffOn X d U z (v i))) -private lemma chartEvaluation_differentiableWithinAt +lemma chartEvaluation_differentiableWithinAt [SmoothOfRelativeDimension d X.hom] (U : (Opens (TopCat.of (ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) (z : ComplexPoint.Basic.ComplexSchemePoint X) (p : ℕ) @@ -626,7 +626,7 @@ private lemma chartEvaluation_differentiableWithinAt | add a b ha hb => rw [ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_add]; exact ha.add hb | smul c a ha => rw [ComplexPoint.Basic.ComplexSchemePoint.chartEvaluation_smul]; exact ha.const_smul c -private lemma extDerivWithin_zero {E : Type*} [NormedAddCommGroup E] [NormedSpace ℂ E] {p : ℕ} +lemma extDerivWithin_zero {E : Type*} [NormedAddCommGroup E] [NormedSpace ℂ E] {p : ℕ} (s : Set E) (x : E) : extDerivWithin (0 : E → E [⋀^Fin p]→L[ℂ] ℂ) s x = 0 := by refine ContinuousAlternatingMap.ext fun v ↦ ?_ diff --git a/lean/OAI/AlgebraicGeometry/Hodge/Filtration.lean b/lean/OAI/AlgebraicGeometry/Hodge/Filtration.lean index 31bcee4779..2661b5556d 100644 --- a/lean/OAI/AlgebraicGeometry/Hodge/Filtration.lean +++ b/lean/OAI/AlgebraicGeometry/Hodge/Filtration.lean @@ -64,17 +64,17 @@ that spelling by Mathlib's sheaf cohomology. -/ attribute [local implicit_reducible] TopCat.Sheaf TopCat.instCategorySheaf /-- Regard a morphism of sheaves on a topological space as a morphism on its site of opens. -/ -private def siteSheafHom {Y : TopCat} {F G : TopCat.Sheaf AddCommGrpCat Y} (f : F ⟶ G) : +def siteSheafHom {Y : TopCat} {F G : TopCat.Sheaf AddCommGrpCat Y} (f : F ⟶ G) : (show CategoryTheory.Sheaf (Opens.grothendieckTopology Y) AddCommGrpCat from F) ⟶ (show CategoryTheory.Sheaf (Opens.grothendieckTopology Y) AddCommGrpCat from G) := f -private lemma siteSheafHom_comp {Y : TopCat} {F G H : TopCat.Sheaf AddCommGrpCat Y} +lemma siteSheafHom_comp {Y : TopCat} {F G H : TopCat.Sheaf AddCommGrpCat Y} (f : F ⟶ G) (g : G ⟶ H) : siteSheafHom (f ≫ g) = siteSheafHom f ≫ siteSheafHom g := by rfl -private lemma siteSheafHom_id {Y : TopCat} {F : TopCat.Sheaf AddCommGrpCat Y} : +lemma siteSheafHom_id {Y : TopCat} {F : TopCat.Sheaf AddCommGrpCat Y} : siteSheafHom (𝟙 F) = 𝟙 (show CategoryTheory.Sheaf (Opens.grothendieckTopology Y) AddCommGrpCat from F) := by rfl @@ -184,7 +184,7 @@ omit [Algebra K ℂ] in /-- Multiplying by `q` in `K` before including into `ℂ` agrees with including first and then multiplying by `algebraMap K ℂ q`. -/ -private lemma ofHom_algebraMap_comp_complexScalarSMul (q : K) : +lemma ofHom_algebraMap_comp_complexScalarSMul (q : K) : AddCommGrpCat.ofHom ↑(algebraMap K ℂ) ≫ AddCommGrpCat.ofHom (DistribSMul.toAddMonoidHom ℂ (algebraMap K ℂ q)) = AddCommGrpCat.ofHom (AddMonoidHom.mulLeft q) ≫ @@ -195,14 +195,14 @@ private lemma ofHom_algebraMap_comp_complexScalarSMul (q : K) : /-- The constant-presheaf map induced by the inclusion `K → ℂ`, followed by scalar multiplication by `algebraMap K ℂ q` on the constant complex presheaf, is the constant-presheaf map induced by the composite additive map. -/ -private lemma const_map_algebraMap_comp_complexScalarPresheaf (q : K) : (Functor.const (Opens (ComplexPoint.Basic.ComplexSchemePoint X))ᵒᵖ).map (AddCommGrpCat.ofHom ↑(algebraMap K ℂ)) ≫ +lemma const_map_algebraMap_comp_complexScalarPresheaf (q : K) : (Functor.const (Opens (ComplexPoint.Basic.ComplexSchemePoint X))ᵒᵖ).map (AddCommGrpCat.ofHom ↑(algebraMap K ℂ)) ≫ ComplexPoint.Basic.ComplexSchemePoint.complexScalarPresheaf X ((algebraMap K ℂ) q) = (Functor.const (Opens (ComplexPoint.Basic.ComplexSchemePoint X))ᵒᵖ).map (AddCommGrpCat.ofHom (algebraMap K ℂ : K →+ ℂ) ≫ AddCommGrpCat.ofHom (DistribSMul.toAddMonoidHom ℂ ((algebraMap K ℂ) q))) := rfl /-- The inclusion of `K`-valued constants into complex constants commutes with scalar multiplication. -/ -private lemma fieldToComplexConstantSheaf_scalar (q : K) : +lemma fieldToComplexConstantSheaf_scalar (q : K) : ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheaf K X ≫ ComplexPoint.Basic.ComplexSchemePoint.complexScalarSheaf X (algebraMap K ℂ q) = ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X q ≫ @@ -272,7 +272,7 @@ omit [Algebra K ℂ] in /-- The integer-indexed inclusion of `K`-valued constants into complex constants commutes with scalar multiplication. -/ -private lemma fieldToComplexConstantSheafComplexInt_scalar (q : K) : +lemma fieldToComplexConstantSheafComplexInt_scalar (q : K) : ComplexPoint.Basic.ComplexSchemePoint.fieldToComplexConstantSheafComplexInt K X ≫ ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt X (algebraMap K ℂ q) = ComplexPoint.Basic.ComplexSchemePoint.fieldScalarComplex K X q ≫ @@ -283,7 +283,7 @@ private lemma fieldToComplexConstantSheafComplexInt_scalar (q : K) : /-- The `K`-coefficient to de Rham comparison of complexes commutes with `K`-scalar multiplication. -/ -private lemma fieldToHolomorphicDeRhamComplexInt_scalar +lemma fieldToHolomorphicDeRhamComplexInt_scalar [IsIntegral X.left] [Smooth X.hom] (q : K) : ComplexPoint.Basic.ComplexSchemePoint.fieldToHolomorphicDeRhamComplexInt K X ≫ ComplexPoint.Basic.ComplexSchemePoint.scalarHolomorphicDeRhamComplexInt X (algebraMap K ℂ q) = @@ -492,20 +492,20 @@ local instance _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoin /-- The source comparison, as a small shifted morphism from the source object of Mathlib's sheaf cohomology to the integer constant sheaf complex. -/ -private def constantIntegerComparison := +def constantIntegerComparison := Localization.SmallShiftedHom.mk₀Inv (W := ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) (0 : ℤ) rfl (ComplexPoint.Basic.ComplexSchemePoint.constantIntegerSheafComplexIntIsoSingleULift X).hom ((HomologicalComplex.mem_quasiIso_iff _).mpr inferInstance) /-- The target comparison, as a small shifted morphism from the constant sheaf complex to the constant sheaf in degree zero. -/ -private def constantFieldComparison := +def constantFieldComparison := Localization.SmallShiftedHom.mk₀ (ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) (0 : ℤ) rfl (ComplexPoint.Basic.ComplexSchemePoint.constantFieldSheafComplexIntIsoSingle K X).hom /-- Precomposition with the source comparison commutes with postcomposition by a map of complexes. -/ -private lemma constantIntegerComparison_comp_comp_mk₀ +lemma constantIntegerComparison_comp_comp_mk₀ {L M : CochainComplex (ComplexPoint.Basic.ComplexSchemePoint.AnalyticAdditiveSheaf X) ℤ} (n : ℤ) (β : Localization.SmallShiftedHom (ComplexPoint.Basic.ComplexSchemePoint.analyticQuasiIsomorphisms X) (ComplexPoint.Basic.ComplexSchemePoint.constantIntegerSheafComplexInt X) L n) (h : L ⟶ M) : @@ -629,7 +629,7 @@ lemma _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.field_s q • α = Sheaf.H.map (ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X q) n α := rfl omit [Algebra K ℂ] in -private lemma fieldScalarSheafCohomologyMap_comp_apply (a b : K) (n : ℕ) (α : H^n(X; K)) : +lemma fieldScalarSheafCohomologyMap_comp_apply (a b : K) (n : ℕ) (α : H^n(X; K)) : Sheaf.H.map (ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X b ≫ ComplexPoint.Basic.ComplexSchemePoint.fieldScalarSheaf K X a) n α = @@ -650,7 +650,7 @@ private lemma fieldScalarSheafCohomologyMap_comp_apply (a b : K) (n : ℕ) (α : rw [siteSheafHom_comp, Sheaf.H.map_comp_apply] omit [Algebra K ℂ] in -private lemma fieldScalarSheafCohomologyMap_id_apply (n : ℕ) (α : H^n(X; K)) : +lemma fieldScalarSheafCohomologyMap_id_apply (n : ℕ) (α : H^n(X; K)) : Sheaf.H.map (𝟙 𝓒(↧(ComplexPoint.Basic.ComplexSchemePoint X); K)) n α = α := by change Sheaf.H.map (siteSheafHom (𝟙 𝓒(↧(ComplexPoint.Basic.ComplexSchemePoint X); K))) n α = α @@ -783,7 +783,7 @@ def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.hodgeFilt /-- Complex scalar multiplication on the filtered complex commutes with inclusion into the full de Rham complex. -/ -private lemma hodgeFilteredDeRhamComplexScalar_comp_inclusion +lemma hodgeFilteredDeRhamComplexScalar_comp_inclusion [IsIntegral X.left] [Smooth X.hom] (p : ℤ) (c : ℂ) : ComplexPoint.Basic.ComplexSchemePoint.hodgeFilteredDeRhamComplexScalar X p c ≫ ComplexPoint.Basic.ComplexSchemePoint.hodgeFilteredDeRhamInclusion X p = @@ -861,14 +861,14 @@ def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.complexCo ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt X) n β exact map_add _ α β } -private lemma complexConstantCohomologyDeRhamAddEquiv_apply [IsIntegral X.left] [Smooth X.hom] +lemma complexConstantCohomologyDeRhamAddEquiv_apply [IsIntegral X.left] [Smooth X.hom] (n : ℤ) (α : ComplexPoint.Basic.ComplexSchemePoint.ComplexConstantCohomology X n) : ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv X n α = ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamComplexInt X) n α := rfl /-- The comparison equivalence carries the constant-sheaf scalar action to the de Rham one. -/ -private lemma complexConstantCohomologyDeRhamAddEquiv_scalar [IsIntegral X.left] [Smooth X.hom] +lemma complexConstantCohomologyDeRhamAddEquiv_scalar [IsIntegral X.left] [Smooth X.hom] (n : ℤ) (c : ℂ) (β : ComplexPoint.Basic.ComplexSchemePoint.ComplexConstantCohomology X n) : ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv X n (ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt X c) n β) = @@ -879,7 +879,7 @@ private lemma complexConstantCohomologyDeRhamAddEquiv_scalar [IsIntegral X.left] ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap_comp_apply, ComplexPoint.Basic.ComplexSchemePoint.deRham_complex_smul_eq] /-- The inverse comparison carries the de Rham scalar action back to the constant-sheaf one. -/ -private lemma complexConstantCohomologyDeRhamAddEquiv_symm_scalar [IsIntegral X.left] [Smooth X.hom] +lemma complexConstantCohomologyDeRhamAddEquiv_symm_scalar [IsIntegral X.left] [Smooth X.hom] (n : ℤ) (c : ℂ) (α : H_dR^n(X)) : (ComplexPoint.Basic.ComplexSchemePoint.complexConstantCohomologyDeRhamAddEquiv X n).symm (c • α) = ComplexPoint.Basic.ComplexSchemePoint.hypercohomologyMap X (ComplexPoint.Basic.ComplexSchemePoint.complexScalarComplexInt X c) n diff --git a/lean/OAI/AlgebraicGeometry/Hodge/HolomorphicDeRham.lean b/lean/OAI/AlgebraicGeometry/Hodge/HolomorphicDeRham.lean index c0086a632c..5ea8f8a28f 100644 --- a/lean/OAI/AlgebraicGeometry/Hodge/HolomorphicDeRham.lean +++ b/lean/OAI/AlgebraicGeometry/Hodge/HolomorphicDeRham.lean @@ -142,7 +142,7 @@ def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemePoint.constants exact (ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormRestriction_ofConstant X d i c).symm /-- On a nonempty open set, distinct complex constants define distinct holomorphic zero-forms. -/ -private lemma holomorphicFormOfConstant_injective [SmoothOfRelativeDimension d X.hom] +lemma holomorphicFormOfConstant_injective [SmoothOfRelativeDimension d X.hom] (U : (Opens (TopCat.of (ComplexPoint.Basic.ComplexSchemePoint X)))ᵒᵖ) [Nonempty U.unop] : Function.Injective (ComplexPoint.Basic.ComplexSchemePoint.holomorphicFormOfConstant X d U) := by intro c c' hcc' @@ -171,7 +171,7 @@ private lemma holomorphicFormOfConstant_injective [SmoothOfRelativeDimension d X set_option backward.isDefEq.respectTransparency false in /-- The inclusion of complex constants into holomorphic zero-forms is a monomorphism on every stalk. -/ -private lemma constantsToHolomorphicDeRhamZero_stalk_mono +lemma constantsToHolomorphicDeRhamZero_stalk_mono [SmoothOfRelativeDimension d X.hom] (x : ComplexPoint.Basic.ComplexSchemePoint X) : Mono ((TopCat.Presheaf.stalkFunctor AddCommGrpCat x).map (ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZero X d)) := by @@ -291,7 +291,7 @@ noncomputable def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemeP set_option backward.isDefEq.respectTransparency false in /-- The sheafified holomorphic de Rham complex is exact in every positive degree. -/ -private lemma holomorphicDeRhamComplex_exactAt_succ +lemma holomorphicDeRhamComplex_exactAt_succ [SmoothOfRelativeDimension d X.hom] (p : ℕ) : (ComplexPoint.Basic.ComplexSchemePoint.holomorphicDeRhamComplex X d).ExactAt (p + 1) := by rw [HomologicalComplex.exactAt_iff' @@ -422,7 +422,7 @@ noncomputable def _root_.OAI.AlgebraicGeometry.ComplexPoint.Basic.ComplexSchemeP set_option backward.isDefEq.respectTransparency false in /-- The augmented holomorphic de Rham sheaf complex is exact. Thus the kernel of the exterior derivative on holomorphic functions is exactly the constant sheaf. -/ -private lemma constantsToHolomorphicDeRhamSheafShortComplex_exact +lemma constantsToHolomorphicDeRhamSheafShortComplex_exact [SmoothOfRelativeDimension d X.hom] : (ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamSheafShortComplex X d).Exact := by rw [TopCat.Sheaf.exact_iff_stalkFunctor_map_exact] @@ -454,7 +454,7 @@ private lemma constantsToHolomorphicDeRhamSheafShortComplex_exact set_option backward.isDefEq.respectTransparency false in /-- The sheafified inclusion of complex constants into holomorphic functions is a monomorphism. -/ -private lemma constantsToHolomorphicDeRhamZeroSheaf_mono +lemma constantsToHolomorphicDeRhamZeroSheaf_mono [SmoothOfRelativeDimension d X.hom] : Mono (ComplexPoint.Basic.ComplexSchemePoint.constantsToHolomorphicDeRhamZeroSheaf X d) := by rw [TopCat.Presheaf.mono_iff_stalk_mono] diff --git a/lean/OAI/AlgebraicGeometry/Smooth/Equidimensional.lean b/lean/OAI/AlgebraicGeometry/Smooth/Equidimensional.lean index 79c3a6fbd2..dd24ca9339 100644 --- a/lean/OAI/AlgebraicGeometry/Smooth/Equidimensional.lean +++ b/lean/OAI/AlgebraicGeometry/Smooth/Equidimensional.lean @@ -98,7 +98,7 @@ lemma orderKrullDim_mono {U V : X.Opens} (h : U ≤ V) : Order.krullDim U ≤ Or /-- Half of the chart-independence, given a point in both charts: shrink the first chart to a basic open contained in the second. -/ -private lemma isStandardSmoothOfRelativeDimension_le {U V : X.Opens} {n m : ℕ} +lemma isStandardSmoothOfRelativeDimension_le {U V : X.Opens} {n m : ℕ} (hU : IsAffineOpen U) (hV : IsAffineOpen V) [Nonempty V] (hn : (f.appLE ⊤ U (by simp)).hom.IsStandardSmoothOfRelativeDimension n) (hm : (f.appLE ⊤ V (by simp)).hom.IsStandardSmoothOfRelativeDimension m) diff --git a/lean/OAI/AlgebraicTopology/LocalHomology/ChartFundamentalClassInvariance.lean b/lean/OAI/AlgebraicTopology/LocalHomology/ChartFundamentalClassInvariance.lean index f9c8d6210f..afe9eacf12 100644 --- a/lean/OAI/AlgebraicTopology/LocalHomology/ChartFundamentalClassInvariance.lean +++ b/lean/OAI/AlgebraicTopology/LocalHomology/ChartFundamentalClassInvariance.lean @@ -46,7 +46,7 @@ variable (d : ℕ) /-! ## Complex derivatives of the radial chart compression -/ -private lemma hasFDerivAt_univUnitBall_formula_normed : +lemma hasFDerivAt_univUnitBall_formula_normed : HasFDerivAt (fun x : Fin d → ℂ ↦ (√(1 + ‖x‖ ^ 2))⁻¹ • x) (ContinuousLinearMap.id ℂ (Fin d → ℂ)) 0 := by rw [hasFDerivAt_iff_isLittleO, isLittleO_iff] diff --git a/lean/OAI/AlgebraicTopology/LocalHomology/FlattenedSupport.lean b/lean/OAI/AlgebraicTopology/LocalHomology/FlattenedSupport.lean index 34694f2dd3..6f561130c6 100644 --- a/lean/OAI/AlgebraicTopology/LocalHomology/FlattenedSupport.lean +++ b/lean/OAI/AlgebraicTopology/LocalHomology/FlattenedSupport.lean @@ -44,7 +44,7 @@ theorem exists_flattenedSupportRadius : end /-- Radial compression centered on the zero-normal plane preserves that plane exactly. -/ -private theorem univBall_normal_eq_zero_iff (a : E) (r : ℝ) (hr : 0 < r) +theorem univBall_normal_eq_zero_iff (a : E) (r : ℝ) (hr : 0 < r) (v : E × (Fin c → ℂ)) : (OpenPartialHomeomorph.univBall (a, (0 : Fin c → ℂ)) r v).2 = 0 ↔ v.2 = 0 := by rw [OpenPartialHomeomorph.univBall, dite_eq_left hr] @@ -63,7 +63,7 @@ theorem flattenedSupportRadius_pos : 0 < flattenedSupportRadius E c e x hx := (exists_flattenedSupportRadius E c e x hx).choose_spec.1 omit [NormedSpace ℝ E] in -private theorem ball_flattenedSupportRadius_subset : +theorem ball_flattenedSupportRadius_subset : Metric.ball (e x) (flattenedSupportRadius E c e x hx) ⊆ e.target := (exists_flattenedSupportRadius E c e x hx).choose_spec.2 diff --git a/lean/OAI/AlgebraicTopology/LocalHomology/PuncturedEuclidean.lean b/lean/OAI/AlgebraicTopology/LocalHomology/PuncturedEuclidean.lean index c83754a19e..ad7becd946 100644 --- a/lean/OAI/AlgebraicTopology/LocalHomology/PuncturedEuclidean.lean +++ b/lean/OAI/AlgebraicTopology/LocalHomology/PuncturedEuclidean.lean @@ -1720,16 +1720,16 @@ lemma standardFacetCarrierPrismResidual_cycle /-- The local acyclic-carrier prism equation in one degree. -/ def StandardFacetCarrierPrismEquation (d : ℕ) (P : StandardFacetCarrierPrismFamily d) : ℕ → Prop := - fun n ↦ match n with - | 0 => ∀ x : (Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + fun n => Nat.casesOn n + (∀ x : (Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋0⦌, standardFacetCarrierIntersectionDiscrepancy d 0 x = P 0 x ≫ ((TopCat.toSSet.obj (TopCat.of (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)))).chainComplex - (AddCommGrpCat.of ℤ)).d 1 0 - | n + 1 => ∀ x : (Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex + (AddCommGrpCat.of ℤ)).d 1 0) + (fun n => ∀ x : (Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet) _⦋n + 1⦌, standardFacetCarrierIntersectionDiscrepancy d (n + 1) x = P (n + 1) x ≫ @@ -1737,7 +1737,7 @@ def StandardFacetCarrierPrismEquation (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)))).chainComplex (AddCommGrpCat.of ℤ)).d (n + 2) (n + 1) + - standardFacetCarrierPrismFaces d P n x + standardFacetCarrierPrismFaces d P n x) lemma standardFacetCarrierPrismResidual_cycle_of_equation (d : ℕ) (P : StandardFacetCarrierPrismFamily d) (n : ℕ) @@ -1811,17 +1811,18 @@ def standardFacetCarrierPrism (d n : ℕ) : (standardPuncturedFacetIntersectionSubspace d (standardFacetCarrier d x)))).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) := - match n with - | 0 => fun x ↦ Classical.choose - (exists_standardFacetCarrierIntersectionPrism_zero d x) - | n + 1 => fun x ↦ + Nat.rec + (fun x ↦ Classical.choose + (exists_standardFacetCarrierIntersectionPrism_zero d x)) + (fun n previous => + fun x ↦ standardPuncturedFacetIntersectionIntegralTotalCycleFiller d n (standardFacetCarrier d x) (standardFacetCarrier_nonempty d x) (standardFacetCarrier_ne_univ d x) (standardFacetCarrierIntersectionDiscrepancy d (n + 1) x - ∑ i : Fin (n + 2), (-1 : ℤ) ^ i.val • - (standardFacetCarrierPrism d n + (previous ((Singular.ExcisionCoverSmall.coverSmallSingularSubcomplex (FundamentalClass.Singular.puncturedPair ℝ d).snd (standardPuncturedFacetCover d) : SSet).δ i x) ≫ @@ -1829,8 +1830,7 @@ def standardFacetCarrierPrism (d n : ℕ) : (TopCat.toSSet.map (standardPuncturedFacetIntersectionMapOfSubset d (standardFacetCarrier_mono_delta d n i x))) - (AddCommGrpCat.of ℤ)).f (n + 1))) -termination_by n + (AddCommGrpCat.of ℤ)).f (n + 1)))) n @[simp] lemma standardFacetCarrierPrism_zero diff --git a/lean/OAI/AlgebraicTopology/Sheaf/FlasqueLowestCohomology.lean b/lean/OAI/AlgebraicTopology/Sheaf/FlasqueLowestCohomology.lean index e8b661a42d..ceda713bbb 100644 --- a/lean/OAI/AlgebraicTopology/Sheaf/FlasqueLowestCohomology.lean +++ b/lean/OAI/AlgebraicTopology/Sheaf/FlasqueLowestCohomology.lean @@ -48,7 +48,7 @@ def kernelBoundaryToCyclesIso (n : ℤ) : /-- In the first potentially nonzero cohomology degree, the forgetful functor preserves the left homology of this short complex. -/ -private theorem forget_preservesLeftHomologyOf_lowest (N n : ℤ) [K.IsStrictlyGE N] +theorem forget_preservesLeftHomologyOf_lowest (N n : ℤ) [K.IsStrictlyGE N] (hK : ∀ j, j < n → IsZero (K.homology j)) (hflasque : ∀ j, (K.X j).IsFlasque) : (forget AddCommGrpCat.{u} X).PreservesLeftHomologyOf (K.sc n) := by let F := forget AddCommGrpCat.{u} X @@ -69,7 +69,7 @@ private theorem forget_preservesLeftHomologyOf_lowest (N n : ℤ) [K.IsStrictlyG exact Functor.PreservesLeftHomologyOf.mk' F (ShortComplex.LeftHomologyData.canonical (K.sc n)) /-- The lowest-degree section-cohomology presheaf is a sheaf. -/ -private theorem sectionCohomologyPresheaf_isSheaf_lowest (N n : ℤ) [K.IsStrictlyGE N] +theorem sectionCohomologyPresheaf_isSheaf_lowest (N n : ℤ) [K.IsStrictlyGE N] (hK : ∀ j, j < n → IsZero (K.homology j)) (hflasque : ∀ j, (K.X j).IsFlasque) : CategoryTheory.Presheaf.IsSheaf (Opens.grothendieckTopology X) (CohomologyStalkVanishing.TopCat.sectionCohomologyPresheaf X K n) := by @@ -81,7 +81,7 @@ private theorem sectionCohomologyPresheaf_isSheaf_lowest (N n : ℤ) [K.IsStrict set_option backward.isDefEq.respectTransparency false in /-- The presheaf-to-cohomology-sheaf comparison is an isomorphism, because its sheafification unit is an isomorphism in this degree. -/ -private theorem sectionCohomologyPresheafToSheaf_isIso_lowest (N n : ℤ) [K.IsStrictlyGE N] +theorem sectionCohomologyPresheafToSheaf_isIso_lowest (N n : ℤ) [K.IsStrictlyGE N] (hK : ∀ j, j < n → IsZero (K.homology j)) (hflasque : ∀ j, (K.X j).IsFlasque) : IsIso (CohomologySection.TopCat.sectionCohomologyPresheafToSheaf X K n) := by let := isIso_toSheafify (Opens.grothendieckTopology X) diff --git a/lean/OAI/AlgebraicTopology/Singular/RelativeCochainG.lean b/lean/OAI/AlgebraicTopology/Singular/RelativeCochainG.lean index 34811df81a..95c2481f7b 100644 --- a/lean/OAI/AlgebraicTopology/Singular/RelativeCochainG.lean +++ b/lean/OAI/AlgebraicTopology/Singular/RelativeCochainG.lean @@ -108,7 +108,7 @@ def relativeDualCochainShortComplexNatDegreewiseSplitting (X : TopPair.{u}) (n : /-- Dualizing the singular-chain sequence of a pair gives a short exact sequence of nonnegative cochain complexes. -/ -private lemma relativeDualCochainShortComplexNat_shortExact (X : TopPair.{u}) : +lemma relativeDualCochainShortComplexNat_shortExact (X : TopPair.{u}) : (RelativeCochainCone.relativeDualCochainShortComplexNat R X).ShortExact := by rw [HomologicalComplex.shortExact_iff_degreewise_shortExact] exact fun n => (relativeDualCochainShortComplexNatDegreewiseSplitting R X n).shortExact diff --git a/lean/OAI/AlgebraicTopology/Singular/SheafCochain.lean b/lean/OAI/AlgebraicTopology/Singular/SheafCochain.lean index 92f514b711..a229141f62 100644 --- a/lean/OAI/AlgebraicTopology/Singular/SheafCochain.lean +++ b/lean/OAI/AlgebraicTopology/Singular/SheafCochain.lean @@ -234,7 +234,7 @@ lemma simplicialZeroAugmentation_naturality {S T : SSet.{u}} (f : S ⟶ T) : ιChainComplex_comp_simplicialZeroAugmentation] /-- The simplicial boundary of a one-chain has augmentation zero. -/ -private lemma simplicialBoundary_comp_zeroAugmentation (S : SSet.{u}) : +lemma simplicialBoundary_comp_zeroAugmentation (S : SSet.{u}) : (S.chainComplex (ModuleCat.of R R)).d 1 0 ≫ simplicialZeroAugmentation R S = 0 := by apply SSet.chainComplex_hom_ext @@ -258,7 +258,7 @@ lemma openZeroAugmentation_naturality {U V : (Opens X)ᵒᵖ} (i : U ⟶ V) : (TopCat.toSSet.map ((Opens.toTopCat X).map i.unop)) /-- The boundary of an open singular one-chain has augmentation zero. -/ -private lemma openBoundary_comp_zeroAugmentation (U : (Opens X)ᵒᵖ) : +lemma openBoundary_comp_zeroAugmentation (U : (Opens X)ᵒᵖ) : ((openSingularChainComplexFunctor R X).obj U.unop).d 1 0 ≫ openZeroAugmentation R X U = 0 := simplicialBoundary_comp_zeroAugmentation R diff --git a/lean/OAI/AlgebraicTopology/Singular/SheafCochainOpenCone.lean b/lean/OAI/AlgebraicTopology/Singular/SheafCochainOpenCone.lean index 46d1a203c1..0be6c04bf4 100644 --- a/lean/OAI/AlgebraicTopology/Singular/SheafCochainOpenCone.lean +++ b/lean/OAI/AlgebraicTopology/Singular/SheafCochainOpenCone.lean @@ -113,7 +113,7 @@ def openRawSingularCochainComplexIsoDual (V : Opens X) : /-- The preceding identification preserves the dual of the singular-chain inclusion of nested opens. -/ -private lemma openRawSingularRestriction_transport {V W : Opens X} (i : W ⟶ V) : +lemma openRawSingularRestriction_transport {V W : Opens X} (i : W ⟶ V) : SheafCochainOpenSections.openRawSingularRestriction R X i ≫ (openRawSingularCochainComplexIsoDual R X W).hom = (openRawSingularCochainComplexIsoDual R X V).hom ≫ ((forget₂ (ModuleCat R) AddCommGrpCat).mapHomologicalComplex (.up ℕ)).map diff --git a/lean/OAI/AlgebraicTopology/Singular/SheafSubdivisionCochain.lean b/lean/OAI/AlgebraicTopology/Singular/SheafSubdivisionCochain.lean index 4e21683654..fb04fa61ae 100644 --- a/lean/OAI/AlgebraicTopology/Singular/SheafSubdivisionCochain.lean +++ b/lean/OAI/AlgebraicTopology/Singular/SheafSubdivisionCochain.lean @@ -52,13 +52,13 @@ def coveringSieveOpenFamilyOn (X : TopCat.{u}) {U : Opens X} (S : (Opens.grothendieckTopology X).Cover U) : S.Arrow → Set U := fun I ↦ Subtype.val ⁻¹' (I.Y : Set X) -private lemma coveringSieveOpenFamilyOn_isOpen (X : TopCat.{u}) {U : Opens X} +lemma coveringSieveOpenFamilyOn_isOpen (X : TopCat.{u}) {U : Opens X} (S : (Opens.grothendieckTopology X).Cover U) (I : S.Arrow) : IsOpen (coveringSieveOpenFamilyOn X S I) := I.Y.isOpen.preimage continuous_subtype_val /-- The domains of a covering sieve cover the covered open set. -/ -private lemma coveringSieveOpenFamilyOn_iUnion (X : TopCat.{u}) {U : Opens X} +lemma coveringSieveOpenFamilyOn_iUnion (X : TopCat.{u}) {U : Opens X} (S : (Opens.grothendieckTopology X).Cover U) : ⋃ I, coveringSieveOpenFamilyOn X S I = Set.univ := by apply Set.eq_univ_of_forall @@ -70,7 +70,7 @@ private lemma coveringSieveOpenFamilyOn_iUnion (X : TopCat.{u}) {U : Opens X} /-- On a paracompact Hausdorff open set, a covering sieve admits an open refinement whose closures are locally finite and remain subordinate to the original sieve members. -/ -private theorem exists_coveringSieve_locallyFinite_closedRefinement +theorem exists_coveringSieve_locallyFinite_closedRefinement (X : TopCat.{u}) {U : Opens X} [ParacompactSpace U] [T2Space U] (S : (Opens.grothendieckTopology X).Cover U) : ∃ W : S.Arrow → Set U, @@ -363,7 +363,7 @@ lemma singularCochain_toPlus_eq_zero_iff (V : Opens X) (n : ℕ) set_option backward.isDefEq.respectTransparency false in /-- Raw representatives of a matching family of first-plus singular cochains agree on some neighborhood of every point of a pairwise overlap. -/ -private lemma exists_open_eq_of_plus_matchingFamily +lemma exists_open_eq_of_plus_matchingFamily {U : Opens X} (S : (Opens.grothendieckTopology X).Cover U) (n : ℕ) (s : Meq ((Opens.grothendieckTopology X).plusObj (SheafCochain.singularCochainPresheaf R X n)) S) @@ -521,7 +521,7 @@ lemma mem_ambientOpen_iff (U : Opens X) (V : Opens U) (x : U) : have h : y = x := Subtype.ext hxy exact show x ∈ (V : Set U) from h ▸ hy -private lemma ambientOpen_le (U : Opens X) (V : Opens U) : ambientOpen U V ≤ U := by +lemma ambientOpen_le (U : Opens X) (V : Opens U) : ambientOpen U V ≤ U := by rintro x ⟨y, -, rfl⟩ exact y.2 @@ -533,7 +533,7 @@ def openFamilySieve {U : Opens X} {I : Type*} (V : I → Opens X) : Sieve U wher exact ⟨i, g.le.trans hi⟩ /-- A pointwise covering family defines a covering sieve. -/ -private lemma openFamilySieve_mem {U : Opens X} {I : Type*} (V : I → Opens X) +lemma openFamilySieve_mem {U : Opens X} {I : Type*} (V : I → Opens X) (hV : ∀ i, V i ≤ U) (hcover : ∀ x ∈ U, ∃ i, x ∈ V i) : openFamilySieve V ∈ Opens.grothendieckTopology X U := by intro x hx diff --git a/lean/OAI/AlgebraicTopology/Singular/StandardSimplexCone.lean b/lean/OAI/AlgebraicTopology/Singular/StandardSimplexCone.lean index 1a099f3701..dff5b5a843 100644 --- a/lean/OAI/AlgebraicTopology/Singular/StandardSimplexCone.lean +++ b/lean/OAI/AlgebraicTopology/Singular/StandardSimplexCone.lean @@ -441,17 +441,16 @@ noncomputable def canonicalBarycentricLastVertexPrism (n : ℕ) : AddCommGrpCat.of ℤ ⟶ ((Δ[n] : SSet.{0}).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) := - match n with - | 0 => 0 - | n + 1 => + Nat.rec + 0 + (fun n previous => (SubdivisionBarycentricHomotopy.standardBarycentricLastVertexDiscrepancy (n + 1) - ∑ i : Fin (n + 2), (-1 : ℤ) ^ i.val • - (canonicalBarycentricLastVertexPrism n ≫ + (previous ≫ (SSet.chainComplexMap (SSet.stdSimplex.map (SimplexCategory.δ i)) (AddCommGrpCat.of ℤ)).f (n + 1))) ≫ - standardSimplexZeroConeComponent (n + 1) (n + 1) -termination_by n + standardSimplexZeroConeComponent (n + 1) (n + 1)) n @[simp] theorem canonicalBarycentricLastVertexPrism_zero : diff --git a/lean/OAI/AlgebraicTopology/Singular/SubdivisionAffinePrism.lean b/lean/OAI/AlgebraicTopology/Singular/SubdivisionAffinePrism.lean index 404c09aa5f..bef0e2c89f 100644 --- a/lean/OAI/AlgebraicTopology/Singular/SubdivisionAffinePrism.lean +++ b/lean/OAI/AlgebraicTopology/Singular/SubdivisionAffinePrism.lean @@ -430,14 +430,13 @@ noncomputable def standardAffinePrismFaceChain ∀ n : ℕ, AddCommGrpCat.of ℤ ⟶ ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex - (AddCommGrpCat.of ℤ)).X n - | 0 => 0 - | n + 1 => + (AddCommGrpCat.of ℤ)).X n := + fun n => Nat.casesOn n 0 (fun n => ∑ p : Fin (n + 2), (-1 : ℤ) ^ p.val • (prism n ≫ (SSet.chainComplexMap (TopCat.toSSet.map (SubdivisionAffine.standardSimplexFaceTopCatMap n p)) - (AddCommGrpCat.of ℤ)).f (n + 1)) + (AddCommGrpCat.of ℤ)).f (n + 1))) @[simp] theorem standardAffinePrismFaceChain_zero @@ -640,17 +639,16 @@ noncomputable def canonicalAffineSubdivisionPrism ((TopCat.toSSet.obj (TopCat.of (Convexity.StdSimplex ℝ (Fin (n + 1))))).chainComplex (AddCommGrpCat.of ℤ)).X (n + 1) := - match n with - | 0 => 0 - | n + 1 => + Nat.rec + 0 + (fun n previous => standardTopologicalSimplexTotalCycleFiller (n + 1) n (standardAffineSubdivisionDiscrepancy (n + 1) - ∑ p : Fin (n + 2), (-1 : ℤ) ^ p.val • - (canonicalAffineSubdivisionPrism n ≫ + (previous ≫ (SSet.chainComplexMap (TopCat.toSSet.map (SubdivisionAffine.standardSimplexFaceTopCatMap n p)) - (AddCommGrpCat.of ℤ)).f (n + 1))) -termination_by n + (AddCommGrpCat.of ℤ)).f (n + 1)))) n @[simp] theorem canonicalAffineSubdivisionPrism_zero :