Skip to content

feat(Algebra/Bijective): a weakly étale bijective-on-residue-fields local hom is an isomorphism#170

Open
chrisflav wants to merge 2 commits into
chrisflav:masterfrom
chrisflav-agents:pr/bijective-weakly-etale-residue-field
Open

feat(Algebra/Bijective): a weakly étale bijective-on-residue-fields local hom is an isomorphism#170
chrisflav wants to merge 2 commits into
chrisflav:masterfrom
chrisflav-agents:pr/bijective-weakly-etale-residue-field

Conversation

@chrisflav

Copy link
Copy Markdown
Owner

Fill three sorries in Proetale/Algebra/Bijective.lean:

  • Algebra.bijective_comap_lmul'_of_bijective_of_bijective: if a ring map R → S is bijective on prime spectra with trivial residue field extensions, then Spec S → Spec (S ⊗[R] S) (via lmul') is bijective.
  • Algebra.bijective_of_bijective_of_flat: a flat, surjective ring map that is bijective on prime spectra is an isomorphism (its kernel is a pure ideal with empty vanishing locus, hence zero).
  • Algebra.WeaklyEtale.bijective_algebraMap_of_bijective_residueFieldMap: a weakly étale local homomorphism of local rings that is bijective on spectra with trivial residue field extensions is an isomorphism.

These correspond to the blueprint lemmas lem:bij-on-spectrum-of-unique-lying-over-and-residue-field-eq, lem:iso-of-bij-on-spectrum-and-surj-and-flat, and lem:isom-of-unique-lying-over-and-residue-field-eq; the matching proof-level \leanoks are added.

🤖 Generated with Claude Code

…ocal hom is an isomorphism

Fill three sorries in `Proetale/Algebra/Bijective.lean`:

* `Algebra.bijective_comap_lmul'_of_bijective_of_bijective`
* `Algebra.bijective_of_bijective_of_flat`
* `Algebra.WeaklyEtale.bijective_algebraMap_of_bijective_residueFieldMap`

These prove that for a weakly étale local homomorphism of local rings that is
bijective on prime spectra with trivial residue field extensions, the
multiplication map `S ⊗[R] S → S` is bijective on spectra, a flat surjective
spectrum-bijective map is an isomorphism, and consequently such a local map is
itself an isomorphism.

Adds the corresponding proof-level `\leanok`s in the blueprint.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@chrisflav chrisflav added awaiting-auto-review This PR is scheduled to receive an automatic review through orchestra. fable and removed awaiting-auto-review This PR is scheduled to receive an automatic review through orchestra. labels Jun 12, 2026
Reconcile blueprint with the formalised proofs and extract reusable facts:

- Remove the dead scaffolding sorry-lemmas
  `isLocalRing_tensorProduct_of_krullDimLE_zero` and
  `krullDimLE_zero_tensorProduct_of_krullDimLE_zero` (and the orphaned
  `lem:local-dim-zero-tensor` blueprint lemma), as the direct
  section/residue-field proof does not use the field-reduction strategy.
- Rewrite the blueprint proof of
  `lem:bij-on-spectrum-of-unique-lying-over-and-residue-field-eq` to the direct
  argument actually formalised and drop `\uses{lem:local-dim-zero-tensor}`.
- Rewrite the blueprint proof of
  `lem:isom-of-unique-lying-over-and-residue-field-eq` to the descent argument
  actually formalised and drop `\uses{lem:isom-of-ff-and-mul-isom}`.
- Extract `PrimeSpectrum.comap_injective_of_comp_eq_id` (comap of a hom with a
  section is injective) and `Function.bijective_of_leftInverse_of_bijective`
  (a left inverse of a bijection is bijective), used in place of the inlined
  arguments.
- Style: `haveI` -> `have`, split semicolon-chained tactics, distinct names for
  the two `Pure` hypotheses, terminal `simp`, and `RingHom.ext hcommfun`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@chrisflav chrisflav removed the awaiting-auto-review This PR is scheduled to receive an automatic review through orchestra. label Jun 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant