Skip to content

feat(Geometry/Euclidean/Sphere/PolePolar): poles and polars#31892

Open
jsm28 wants to merge 35 commits intoleanprover-community:masterfrom
jsm28:pole_polar
Open

feat(Geometry/Euclidean/Sphere/PolePolar): poles and polars#31892
jsm28 wants to merge 35 commits intoleanprover-community:masterfrom
jsm28:pole_polar

Conversation

@jsm28
Copy link
Copy Markdown
Contributor

@jsm28 jsm28 commented Nov 21, 2025

Define poles and polars for spheres in Euclidean affine spaces, and set up some basic API, including in particular La Hire's theorem (p₁ lies on the polar of p₂ if and only if p₂ lies on the polar of p₁).

Poles and polars are actually meaningful for any quadric in a projective space over any field, but I think it's reasonable to set up this theory for spheres in the Euclidean context and potentially link it in future to more general projective geometry.


Open in Gitpod

… using polars

Add further lemmas about `orthRadius` that are of use in setting up
and using poles and polars.  In particular,
`ncard_inter_orthRadius_eq_two_of_dist_lt_radius` is the key part of
showing that, in two dimensions, there are exactly two tangents to a
circle from a point outside that circle (where the points of tangency
lie on the polar of the point from which the two tangents are drawn).

---

I think the extra imports are reasonable for this file, but if
`Mathlib.Analysis.InnerProductSpace.TwoDim` turns out to be too heavy,
it's only used for `FiniteDimensional.of_fact_finrank_eq_two` which
could be moved to somewhere much more basic in mathlib.
Define poles and polars for spheres in Euclidean affine spaces, and set up some basic API, including in particular La Hire's theorem (`p₁` lies on the polar of `p₂` if and only if `p₂` lies on the polar of `p₁`).

Poles and polars are actually meaningful for any quadric in a projective space over any field, but I think it's reasonable to set up this theory for spheres in the Euclidean context and potentially link it in future to more general projective geometry.
@jsm28 jsm28 added the t-euclidean-geometry Affine and axiomatic geometry label Nov 21, 2025
@github-actions
Copy link
Copy Markdown

github-actions bot commented Nov 21, 2025

PR summary 6cad1b0fcc

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference
Mathlib.Geometry.Euclidean.Sphere.PolePolar (new file) 2115

Declarations diff

+ direction_polar
+ instance (s : Sphere P) (p : P) : (s.polar p).direction.HasOrthogonalProjection := by
+ instance (s : Sphere P) (p : P) : Nonempty (s.polar p) := by
+ mem_orthRadius_iff_mem_polar_of_mem
+ mem_polar_iff_inner
+ mem_polar_iff_mem_polar
+ mem_polar_of_mem_of_mem_orthRadius
+ ncard_inter_polar_eq_two_of_radius_lt_dist
+ orthRadius_eq_polar_inversion
+ polar
+ polar_center
+ polar_eq_orthRadius_self_iff
+ polar_pole_orthRadius
+ polar_zero_radius
+ pole
+ pole_polar

You can run this locally as follows
## summary with just the declaration names:
./scripts/pr_summary/declarations_diff.sh <optional_commit>

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

The doc-module for scripts/pr_summary/declarations_diff.sh contains some details about this script.


Increase in tech debt: (relative, absolute) = (1.00, 0.00)
Current number Change Type
7424 1 backward.isDefEq

Current commit 34fdfd3dac
Reference commit 6cad1b0fcc

You can run this locally as

./scripts/reporting/technical-debt-metrics.sh 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).

@mathlib4-dependent-issues-bot mathlib4-dependent-issues-bot added the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Nov 21, 2025
jsm28 and others added 22 commits November 30, 2025 23:31
…_eq_two`

Move `of_fact_finrank_eq_two` from `Mathlib.Analysis.InnerProductSpace.TwoDim` to `Mathlib.LinearAlgebra.FiniteDimensional.Defs` to avoid a large import in leanprover-community#31891 that was only in order to use that one lemma without needing the rest of `Mathlib.Analysis.InnerProductSpace.TwoDim`.
@mathlib-merge-conflicts mathlib-merge-conflicts bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Feb 18, 2026
@mathlib-merge-conflicts
Copy link
Copy Markdown

This pull request has conflicts, please merge master and resolve them.

@github-actions github-actions bot removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Feb 18, 2026
@mathlib-merge-conflicts mathlib-merge-conflicts bot added the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Mar 18, 2026
@mathlib-merge-conflicts
Copy link
Copy Markdown

This pull request has conflicts, please merge master and resolve them.

@github-actions github-actions bot removed the merge-conflict The PR has a merge conflict with master, and needs manual merging. (this label is managed by a bot) label Mar 18, 2026
@mathlib-dependent-issues mathlib-dependent-issues bot removed the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Mar 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

t-euclidean-geometry Affine and axiomatic geometry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants