Skip to content

fix(Geometry/Manifold): restore the Hausdorff hypothesis in NonemptyDiffeomorphSphere - #43606

Open
Deicyde wants to merge 9 commits into
leanprover-community:masterfrom
Deicyde:poincare-t2space
Open

fix(Geometry/Manifold): restore the Hausdorff hypothesis in NonemptyDiffeomorphSphere#43606
Deicyde wants to merge 9 commits into
leanprover-community:masterfrom
Deicyde:poincare-t2space

Conversation

@Deicyde

@Deicyde Deicyde commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

ContinuousMap.HomotopyEquiv.NonemptyDiffeomorphSphere M n (the smooth Poincaré conjecture for M in dimension n) has no Hausdorff hypothesis. As stated it is false in every positive dimension. One can construct a non-Hausdorff counter-example by taking 𝕊ⁿ as the one-point compactification of ℝⁿ and glue a second copy of the open half-space B = {x₀ < 1} onto 𝕊ⁿ along the smaller open half-space A = {x₀ < 0}.

A Lean proof of ¬ NonemptyDiffeomorphSphere M (n + 1) for this M compiles against Mathlib.

The variable-inclusion backport #15607 removed [T2Space M] from the variable line and added it to each proof_wanted in the file, but not to this def, which silently lost it.


comparator

…DiffeomorphSphere`

`ContinuousMap.HomotopyEquiv.NonemptyDiffeomorphSphere` lost its `[T2Space M]`
hypothesis in leanprover-community#15607, which moved it from the `variable` line onto the
`proof_wanted` statements but not onto this `def`. Without it the statement is
false: a sphere with a duplicated open half-space is a non-Hausdorff `C^∞`
manifold that is homotopy equivalent to the sphere.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

PR summary 915b9d6803

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference

Declarations diff (regex)

No declarations were harmed in the making of this PR! 🐙

You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci

## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.

Declarations diff (Lean)

Lean-aware diff — post-build, computed from the Lean environment (commit 915b9d6).

  • +0 new declarations
  • −0 removed declarations

No declaration differences.


No changes to strong technical debt.
No changes to weak technical debt.

Current commit 915b9d6803
Reference commit f6734f8e47

This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:

git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/scripts/reporting/technical-debt-metrics.py pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@github-actions github-actions Bot added the t-differential-geometry Manifolds etc label Sep 9, 2026
@grunweg

grunweg commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Nice catch, thanks! (And using comparator is great :-)) You need to fix a linter failure, otherwise this looks good to me!
bors d+

@mathlib-bors mathlib-bors Bot added the delegated This pull request has been delegated to the PR author (or occasionally another non-maintainer). label Sep 9, 2026
@mathlib-bors

mathlib-bors Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

✌️ Deicyde can now approve this pull request until 2026-09-23 10:22 UTC (in 2 weeks). To approve and merge, reply with bors r+. More detailed instructions are available here.

⚠️ This delegation only covers changes within Archive/**, Counterexamples/**, docs/**, DownstreamTest/**, Mathlib/**, MathlibTest/**, Wanted/**, widget/**, Archive.lean, Counterexamples.lean, docs.lean, Mathlib.lean, Wanted.lean; an author commit touching anything else will revoke it. Bors also revokes it if a later push changes too many files for it to check the full list — even if it stays within scope.

@grunweg

grunweg commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Aside, looking at the formalisation:

  • mathlib already has pullbackChartedSpace -- is there missing API that it should gain? (I'd happily review such a PR.)
  • similarly, further mathlib lemmas about e.g. one-point compatification are also welcome.

The `unusedArguments` linter rejects `[T2Space M]` as an argument of
`NonemptyDiffeomorphSphere`, since the body never uses it. Quantify over
the instance inside the `Prop` instead, alongside the charted-space and
manifold structure the definition already quantifies over.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Comment on lines +41 to +42
def ContinuousMap.HomotopyEquiv.NonemptyDiffeomorphSphere (n : ℕ) : Prop :=
∀ (_ : ChartedSpace ℝⁿ M) (_ : IsManifold (𝓡 n) ∞ M),
[T2Space M] (_ : ChartedSpace ℝⁿ M) (_ : IsManifold (𝓡 n) ∞ M),

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doesn't it make more sense to require T2Space M instead of defining the proposition with it?
Currently every non-Hausdorff space satisfies this vacuously, which seems strange (although I don't know the maths here, so maybe it makes sense).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, every topological space which is not a manifold satisfies this vacuously... so I'm not convinced yet that Hausdorff-ness is very particular in this regard.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wrote it this way in order to fix a linter warning. The other option is to add @[nolint unusedArguments]. Do you prefer it like this?

Deicyde and others added 6 commits September 9, 2026 11:02
…rphSphere`

Following review, make `[T2Space M]` an argument of the definition rather than
a binder inside the quantifier. The body does not use the hypothesis, so the
`unusedArguments` linter is silenced with an explanatory comment.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@Deicyde
Deicyde requested a review from SnirBroshi September 10, 2026 10:30
@SnirBroshi

Copy link
Copy Markdown
Collaborator

Yeah that is what I meant, but I'm not an expert, so it's best to ask @grunweg.

btw what's the point of this def? I would have expected something more like the proof_wanteds in Geometry/Manifold/PoincareConjecture. If this def accurately describes the smooth Poincaré conjecture as its docstring claims, shouldn't there be a proof_wanted for it?

@SnirBroshi
SnirBroshi removed their request for review September 10, 2026 11:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

delegated This pull request has been delegated to the PR author (or occasionally another non-maintainer). t-differential-geometry Manifolds etc

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants