Skip to content
Open
Changes from all commits
Commits
Show all changes
251 commits
Select commit Hold shift + click to select a range
42ebb9d
feat(Geometry/Euclidean/Angle/Oriented): oriented/unoriented equality…
jsm28 Oct 12, 2025
ae60332
Merge branch 'angle_eq_iff_oangle_eq_or_wbtw' into bisector_dist_oangle
jsm28 Oct 12, 2025
3c482f7
feat(Geometry/Euclidean/Angle/Bisector): oriented angle bisection and…
jsm28 Oct 12, 2025
1e8535a
feat(nalysis/SpecialFunctions/Trigonometric/Angle): equality from equ…
jsm28 Oct 16, 2025
0e742f5
feat(Geometry/Euclidean/Angle/Oriented/RightAngle): angles less than …
jsm28 Oct 16, 2025
c4f608e
feat(Geometry/Euclidean/Projection): characteristic property
jsm28 Oct 19, 2025
e344de3
Merge branch 'orthogonalProjection_eq_iff_mem' into orthogonalProject…
jsm28 Oct 19, 2025
ed79cfd
Golf using new lemma from #30698
jsm28 Oct 19, 2025
ad91b16
Merge branch 'orthogonalProjection_orthogonalProjection_of_le' into b…
jsm28 Oct 19, 2025
a2bc964
feat(LinearAlgebra/AffineSpace/AffineSubspace/Defs): nonempty sup
jsm28 Oct 19, 2025
3ee5e31
Merge branch 'orthogonalProjection_eq_iff_mem' into orthogonalProject…
jsm28 Oct 19, 2025
aa43543
feat(Geometry/Euclidean/Projection): projection onto sup
jsm28 Oct 19, 2025
f68bfb8
Update Mathlib/LinearAlgebra/AffineSpace/AffineSubspace/Defs.lean
jsm28 Oct 19, 2025
9ddca9d
Similar change to `nonempty_sup_right`
jsm28 Oct 19, 2025
ce50e9d
Merge branch 'AffineSubspace_nonempty_sup' into orthogonalProjection_…
jsm28 Oct 19, 2025
6fcc7d1
Use `Subtype.coe_inj`
jsm28 Oct 19, 2025
412b533
Merge branch 'orthogonalProjection_eq_iff_mem' into orthogonalProject…
jsm28 Oct 19, 2025
55466d1
Merge branch 'orthogonalProjection_orthogonalProjection_of_le' into b…
jsm28 Oct 19, 2025
7a7fca2
Merge branch 'orthogonalProjection_eq_iff_mem' into orthogonalProject…
jsm28 Oct 19, 2025
f84640a
Add version for point given in subtype
jsm28 Oct 19, 2025
c7a0173
Merge branch 'orthogonalProjection_eq_iff_mem' into orthogonalProject…
jsm28 Oct 19, 2025
65b1fc0
Update for renaming
jsm28 Oct 19, 2025
72272ce
Merge branch 'orthogonalProjection_orthogonalProjection_of_le' into b…
jsm28 Oct 19, 2025
5e7f9e2
Merge branch 'orthogonalProjection_eq_iff_mem' into orthogonalProject…
jsm28 Oct 19, 2025
fec0393
Update for renaming
jsm28 Oct 19, 2025
29f4f21
Update Mathlib/Geometry/Euclidean/Projection.lean
jsm28 Oct 20, 2025
d061e26
Further simplify code
jsm28 Oct 20, 2025
099c741
Merge branch 'orthogonalProjection_eq_iff_mem' into orthogonalProject…
jsm28 Oct 20, 2025
8b909e8
Merge branch 'orthogonalProjection_orthogonalProjection_of_le' into b…
jsm28 Oct 20, 2025
5a133e9
Merge branch 'orthogonalProjection_eq_iff_mem' into orthogonalProject…
jsm28 Oct 20, 2025
baccce2
Update Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean
jsm28 Oct 20, 2025
f96e601
Merge branch 'master' into angle_eq_iff_oangle_eq_or_wbtw
jsm28 Oct 20, 2025
2f73b91
Move lemmas up per review
jsm28 Oct 20, 2025
179b3dd
Merge branch 'angle_eq_iff_oangle_eq_or_wbtw' into bisector_dist_oangle
jsm28 Oct 20, 2025
365b6a2
Merge branch 'master' into AffineSubspace_nonempty_sup
jsm28 Oct 20, 2025
c6357ff
Merge branch 'AffineSubspace_nonempty_sup' into orthogonalProjection_…
jsm28 Oct 20, 2025
01e9a53
Merge branch 'master' into orthogonalProjection_sup_of_orthogonalProj…
jsm28 Oct 21, 2025
b2c92ce
Merge branch 'master' into bisector_dist_oangle
jsm28 Oct 21, 2025
33cda7f
Merge branch 'master' into bisector_dist_oangle
jsm28 Oct 21, 2025
34f5939
feat(Geometry/Euclidean/Incenter): excenters are not vertices
jsm28 Oct 26, 2025
f7eceab
Merge branch 'excenter_ne_point' into excenter_eq_excenter_iff
jsm28 Oct 26, 2025
c6330fc
feat(Geometry/Euclidean/Incenter): excenters are distinct
jsm28 Oct 26, 2025
0f49c42
Merge branch 'master' into orthogonalProjection_orthogonalProjection_…
jsm28 Oct 27, 2025
92af71b
Merge branch 'orthogonalProjection_orthogonalProjection_of_le' into b…
jsm28 Oct 27, 2025
7a244c3
Merge branch 'master' into abs_oangle_toReal_lt_pi_div_two
jsm28 Oct 27, 2025
ebae599
Merge branch 'master' into orthogonalProjection_sup_of_orthogonalProj…
jsm28 Oct 27, 2025
5a84e03
Merge branch 'master' into excenter_eq_excenter_iff
jsm28 Oct 27, 2025
4252162
Merge branch 'bisector_dist_oangle' into bisector_dist_two_zsmul_oangle
jsm28 Oct 27, 2025
6255125
Merge branch 'abs_oangle_toReal_lt_pi_div_two' into bisector_dist_two…
jsm28 Oct 27, 2025
df91235
Merge branch 'orthogonalProjection_sup_of_orthogonalProjection_eq' in…
jsm28 Oct 27, 2025
36eaeef
feat(Geometry/Euclidean/Angle/Bisector): oriented angle bisection mod π
jsm28 Oct 27, 2025
dc45f56
Merge branch 'excenter_eq_excenter_iff' into angle_incenter
jsm28 Oct 27, 2025
36e5799
feat(Mathlib/Geometry/Euclidean/Angle/Incenter): angle bisection and …
jsm28 Oct 27, 2025
294ae56
Merge branch 'master' into bisector_dist_oangle
jsm28 Oct 28, 2025
4da2940
Merge branch 'bisector_dist_oangle' into bisector_dist_two_zsmul_oangle
jsm28 Oct 28, 2025
9382d88
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Oct 28, 2025
7a47270
feat(LinearAlgebra/AffineSpace/Combination): `affineCombination_mem_a…
jsm28 Nov 2, 2025
6492202
feat(Analysis/Convex/Side): affine combinations and sides of faces of…
jsm28 Nov 2, 2025
8f38952
Use local instance for being finite-dimensional
jsm28 Nov 14, 2025
0397472
Merge branch 'master' into bisector_dist_oangle
jsm28 Nov 14, 2025
650bfa5
Merge branch 'bisector_dist_oangle' into bisector_dist_two_zsmul_oangle
jsm28 Nov 14, 2025
f88c561
Update for instance from review of previous PR
jsm28 Nov 14, 2025
cceaa09
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Nov 14, 2025
5924462
Use local instance for finite dimensional
jsm28 Nov 14, 2025
a9fda5b
Update Mathlib/Geometry/Euclidean/Angle/Bisector.lean
jsm28 Nov 14, 2025
3d3fc07
Hypotheses after colon to reduce `haveI : Nonempty` duplication
jsm28 Nov 14, 2025
b9e2b62
Merge branch 'bisector_dist_oangle' into bisector_dist_two_zsmul_oangle
jsm28 Nov 14, 2025
cf003ae
More hypotheses after colon and update for merge
jsm28 Nov 14, 2025
4a57d97
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Nov 14, 2025
b559f40
Reference Lean issue for why hypotheses are after colon
jsm28 Nov 14, 2025
06b1417
Merge branch 'bisector_dist_oangle' into bisector_dist_two_zsmul_oangle
jsm28 Nov 14, 2025
40c4a3c
Comment referencing Lean issue
jsm28 Nov 14, 2025
b9988f6
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Nov 14, 2025
a0a6b24
Merge branch 'master' into bisector_dist_two_zsmul_oangle
jsm28 Nov 14, 2025
8affa06
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Nov 14, 2025
a37cbe3
Merge branch 'master' into simplex_side_affinecombination
jsm28 Nov 16, 2025
102fc21
Merge branch 'master' into bisector_dist_two_zsmul_oangle
jsm28 Nov 19, 2025
4342732
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Nov 19, 2025
ff49abb
Mark new file as module
jsm28 Nov 19, 2025
3977af8
Merge branch 'master' into bisector_dist_two_zsmul_oangle
jsm28 Nov 22, 2025
6b9addb
Use `line` notation more consistently
jsm28 Nov 22, 2025
1f450d9
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Nov 22, 2025
a980bbd
feat(LinearAlgebra/AffineSpace/FiniteDimensional): `finiteDimensional…
jsm28 Nov 23, 2025
4e07fcf
feat(LinearAlgebra/AffineSpace/AffineSubspace/Basic): `comap_map_eq_o…
jsm28 Nov 23, 2025
a690115
feat(LinearAlgebra/AffineSpace/AffineSubspace/Basic): `map_vectorSpan`
jsm28 Nov 23, 2025
8eee484
feat(Geometry/Euclidean/Projection): `map` and subtype lemmas
jsm28 Nov 23, 2025
b94af0d
Merge branch 'map_vectorSpan' into orthogonalProjection_map
jsm28 Nov 23, 2025
c1f6a2e
Merge branch 'affine_subspace_comap_map_eq' into orthogonalProjection…
jsm28 Nov 23, 2025
564b695
feat(Geometry/Euclidean/Altitude): `map` and `restrict` lemmas
jsm28 Nov 23, 2025
c19cca1
Remove `simp` marker, fails linting
jsm28 Nov 23, 2025
c4cc319
Merge branch 'orthogonalProjection_map' into altitude_map
jsm28 Nov 23, 2025
5bea48d
Update Mathlib/LinearAlgebra/AffineSpace/AffineSubspace/Basic.lean
jsm28 Nov 24, 2025
9c09478
Update Mathlib/LinearAlgebra/AffineSpace/AffineSubspace/Basic.lean
jsm28 Nov 24, 2025
3d01642
Update for implicit argument removal
jsm28 Nov 24, 2025
e22b7a4
Merge branch 'affine_subspace_comap_map_eq' into altitude_map
jsm28 Nov 24, 2025
0e83977
Update Mathlib/LinearAlgebra/AffineSpace/AffineSubspace/Basic.lean
jsm28 Nov 24, 2025
89593bd
Merge branch 'map_vectorSpan' into altitude_map
jsm28 Nov 24, 2025
b9727e4
Merge branch 'master' into map_vectorSpan
jsm28 Nov 24, 2025
2f88422
Merge branch 'map_vectorSpan' into altitude_map
jsm28 Nov 24, 2025
5a883e4
Merge branch 'master' into orthogonalProjection_map
jsm28 Nov 24, 2025
8a48263
Merge branch 'orthogonalProjection_map' into altitude_map
jsm28 Nov 24, 2025
a5d7b68
Don't use duplicate `map_vectorSpan` lemma
jsm28 Nov 24, 2025
44204ef
Update for implicit argument
jsm28 Nov 24, 2025
40bf451
Merge branch 'master' into altitude_map
jsm28 Nov 24, 2025
3eaa98f
feat(LinearAlgebra/AffineSpace/Simplex/Basic): `affineCombination_mem…
jsm28 Nov 26, 2025
70e683e
Merge branch 'affineCombination_mem_affineSpan_faceOpposite_iff' into…
jsm28 Nov 26, 2025
3c99197
Refactor using `affineCombination_mem_affineSpan_faceOpposite_iff`
jsm28 Nov 26, 2025
306b328
Remove stray space
jsm28 Nov 26, 2025
e05793b
feat(LinearAlgebra/AffineSpace/Basis): spaces of coordinates
jsm28 Nov 27, 2025
2ae36bd
feat(Analysis/Convex/Between): `InjOn` lemmas
jsm28 Nov 27, 2025
3550ab3
Merge branch 'fintypeAffineCoords' into simplex_side_affinecombination
jsm28 Nov 27, 2025
1f23463
Merge branch 'injon_btw_map_iff' into simplex_side_affinecombination
jsm28 Nov 27, 2025
f3333dc
Refactor duplicative code using `Set.InjOn.sbtw_map_iff`
jsm28 Nov 27, 2025
4c34eb7
Merge branch 'master' into simplex_side_affinecombination
jsm28 Nov 27, 2025
611cc02
Merge branch 'master' into altitude_map
jsm28 Nov 28, 2025
0854a81
feat(Analysis/SpecialFunctions/Trigonometric/Angle): `toReal` additio…
jsm28 Nov 30, 2025
9334a8e
feat(Geometry/Euclidean/Angle/Oriented/Affine): oriented angle bisect…
jsm28 Nov 30, 2025
7e6a36b
Merge branch 'altitude_map' into incenter_map
jsm28 Nov 30, 2025
8e8f2bc
feat(Geometry/Euclidean/Incenter): `map` and `restrict` lemmas
jsm28 Nov 30, 2025
300876b
Merge branch 'simplex_side_affinecombination' into simplex_side_affin…
jsm28 Nov 30, 2025
a209b1a
feat(Analysis/Convex/Side): affine combinations on same / opposite si…
jsm28 Nov 30, 2025
d4bc229
feat(Geometry/Euclidean/Incenter): excenters on sides of faces
jsm28 Nov 30, 2025
e912fb5
Merge branch 'angle_incenter' into angle_incenter_unoriented
jsm28 Nov 30, 2025
8e978d9
Merge branch 'angle_div_two_of_oangle' into angle_incenter_unoriented
jsm28 Nov 30, 2025
b9f9d91
Merge branch 'incenter_side' into angle_incenter_unoriented
jsm28 Nov 30, 2025
d2de8f6
Merge branch 'incenter_map' into angle_incenter_unoriented
jsm28 Nov 30, 2025
3668129
feat(Geometry/Euclidean/Angle/Incenter): unoriented angle bisection
jsm28 Nov 30, 2025
1a80d30
Update Mathlib/Analysis/Convex/Side.lean
jsm28 Dec 7, 2025
06c0b00
Update Mathlib/Analysis/Convex/Side.lean
jsm28 Dec 7, 2025
9b4174b
Merge branch 'master' into simplex_side_affinecombination
jsm28 Dec 7, 2025
34d8708
Also use `end Affine.Simplex`
jsm28 Dec 7, 2025
4b6e939
Merge branch 'simplex_side_affinecombination' into simplex_side_affin…
jsm28 Dec 7, 2025
54e3871
Merge branch 'simplex_side_affinecombination_point' into incenter_side
jsm28 Dec 7, 2025
103e79e
Merge branch 'incenter_side' into angle_incenter_unoriented
jsm28 Dec 7, 2025
5ce1ea2
Merge branch 'master' into simplex_side_affinecombination_point
jsm28 Dec 8, 2025
a04c126
Merge branch 'simplex_side_affinecombination_point' into incenter_side
jsm28 Dec 8, 2025
7d53520
Merge branch 'incenter_side' into angle_incenter_unoriented
jsm28 Dec 8, 2025
6f4e9f3
Update Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean
jsm28 Dec 9, 2025
4db210a
Merge branch 'master' into toReal_add_eq_toReal_add_toReal
jsm28 Dec 9, 2025
ba62551
Merge branch 'toReal_add_eq_toReal_add_toReal' into angle_div_two_of_…
jsm28 Dec 9, 2025
4c0fc41
Merge branch 'angle_div_two_of_oangle' into angle_incenter_unoriented
jsm28 Dec 9, 2025
22daa65
Merge branch 'master' into incenter_side
jsm28 Dec 10, 2025
8ac3379
Merge branch 'incenter_side' into angle_incenter_unoriented
jsm28 Dec 10, 2025
db19a3a
Golfing from review
jsm28 Dec 11, 2025
6130523
Merge branch 'master' into toReal_add_eq_toReal_add_toReal
jsm28 Dec 11, 2025
92300ab
Merge branch 'toReal_add_eq_toReal_add_toReal' into angle_div_two_of_…
jsm28 Dec 11, 2025
5fd5ee5
Merge branch 'angle_div_two_of_oangle' into angle_incenter_unoriented
jsm28 Dec 11, 2025
15f9cdb
Merge branch 'master' into orthogonalProjection_map
jsm28 Dec 11, 2025
d803ab4
Merge branch 'orthogonalProjection_map' into altitude_map
jsm28 Dec 11, 2025
9057a4d
Merge branch 'altitude_map' into incenter_map
jsm28 Dec 11, 2025
72ef689
Merge branch 'incenter_map' into angle_incenter_unoriented
jsm28 Dec 11, 2025
0ac5abe
Merge branch 'master' into orthogonalProjection_map
jsm28 Dec 11, 2025
87f0399
Merge branch 'orthogonalProjection_map' into altitude_map
jsm28 Dec 11, 2025
8b21a77
Merge branch 'altitude_map' into incenter_map
jsm28 Dec 11, 2025
829b69f
Merge branch 'incenter_map' into angle_incenter_unoriented
jsm28 Dec 11, 2025
1378c03
Merge branch 'master' into orthogonalProjection_map
jsm28 Dec 11, 2025
66ab645
Merge branch 'orthogonalProjection_map' into altitude_map
jsm28 Dec 11, 2025
f5ef4a2
Merge branch 'altitude_map' into incenter_map
jsm28 Dec 11, 2025
d878da7
Merge branch 'incenter_map' into angle_incenter_unoriented
jsm28 Dec 11, 2025
ce341cd
Explicit `ℝ` now needed in two places
jsm28 Dec 11, 2025
c59fa28
Merge branch 'master' into bisector_dist_two_zsmul_oangle
jsm28 Dec 11, 2025
87994d1
Explicit `ℝ` now needed in two places
jsm28 Dec 11, 2025
2f37e44
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Dec 11, 2025
6c0e874
Merge branch 'angle_incenter' into angle_incenter_unoriented
jsm28 Dec 11, 2025
ca19317
Merge branch 'master' into toReal_add_eq_toReal_add_toReal
jsm28 Dec 12, 2025
b69ec1f
Merge branch 'toReal_add_eq_toReal_add_toReal' into angle_div_two_of_…
jsm28 Dec 12, 2025
0e3d8f6
Merge branch 'angle_div_two_of_oangle' into angle_incenter_unoriented
jsm28 Dec 12, 2025
846064f
Fix warnings from merge
jsm28 Dec 12, 2025
e726554
Merge branch 'toReal_add_eq_toReal_add_toReal' into angle_div_two_of_…
jsm28 Dec 12, 2025
cf4b677
Merge branch 'angle_div_two_of_oangle' into angle_incenter_unoriented
jsm28 Dec 12, 2025
6aedf65
Update Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean
jsm28 Dec 12, 2025
bcd0a83
Merge branch 'master' into toReal_add_eq_toReal_add_toReal
jsm28 Dec 15, 2025
3a0d81c
More golfs from review
jsm28 Dec 15, 2025
de3426a
Merge branch 'toReal_add_eq_toReal_add_toReal' into angle_div_two_of_…
jsm28 Dec 15, 2025
0e46966
Merge branch 'angle_div_two_of_oangle' into angle_incenter_unoriented
jsm28 Dec 15, 2025
52fd73e
Merge branch 'master' into toReal_add_eq_toReal_add_toReal
jsm28 Dec 15, 2025
d7f6472
Merge branch 'toReal_add_eq_toReal_add_toReal' into angle_div_two_of_…
jsm28 Dec 15, 2025
197daac
Merge branch 'angle_div_two_of_oangle' into angle_incenter_unoriented
jsm28 Dec 15, 2025
cbc88a3
Merge branch 'master' into toReal_add_eq_toReal_add_toReal
jsm28 Dec 16, 2025
0eb5e71
Merge branch 'toReal_add_eq_toReal_add_toReal' into angle_div_two_of_…
jsm28 Dec 16, 2025
dd07182
Merge branch 'angle_div_two_of_oangle' into angle_incenter_unoriented
jsm28 Dec 16, 2025
0e75bb4
Merge branch 'master' into angle_div_two_of_oangle
jsm28 Dec 16, 2025
b487376
Merge branch 'angle_div_two_of_oangle' into angle_incenter_unoriented
jsm28 Dec 16, 2025
cdccffa
Merge branch 'master' into altitude_map
jsm28 Dec 19, 2025
ff9288d
Merge branch 'altitude_map' into incenter_map
jsm28 Dec 19, 2025
2e0b295
Merge branch 'incenter_map' into angle_incenter_unoriented
jsm28 Dec 19, 2025
e7c5011
Merge branch 'master' into bisector_dist_two_zsmul_oangle
jsm28 Dec 20, 2025
53a0f3c
Separate hypotheses for points in inf per review
jsm28 Dec 20, 2025
e127b76
Revert unintended formatting change
jsm28 Dec 20, 2025
885dfc8
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Dec 20, 2025
104f111
Update for changes in bisector PR
jsm28 Dec 20, 2025
9b865b5
Merge branch 'angle_incenter' into angle_incenter_unoriented
jsm28 Dec 20, 2025
2538ede
Merge branch 'master' into bisector_dist_two_zsmul_oangle
jsm28 Dec 22, 2025
29af0e7
Rename lemmas about projection to lines
jsm28 Dec 22, 2025
481377c
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Dec 22, 2025
cd574fb
Update for renaming after merge
jsm28 Dec 22, 2025
e40fc6b
Merge branch 'angle_incenter' into angle_incenter_unoriented
jsm28 Dec 22, 2025
2c9f06b
Update Mathlib/Geometry/Euclidean/Angle/Bisector.lean
jsm28 Dec 22, 2025
05ac3b9
Update for renaming
jsm28 Dec 22, 2025
1f43d5d
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Dec 22, 2025
204cbcc
Merge branch 'angle_incenter' into angle_incenter_unoriented
jsm28 Dec 22, 2025
a484edf
Merge branch 'master' into incenter_map
jsm28 Dec 26, 2025
d8ad79a
Merge branch 'incenter_map' into angle_incenter_unoriented
jsm28 Dec 26, 2025
1b56613
Update Mathlib/Geometry/Euclidean/Angle/Bisector.lean
jsm28 Jan 4, 2026
02ae6be
Merge branch 'master' into bisector_dist_two_zsmul_oangle
jsm28 Jan 4, 2026
4743064
Avoid `by exact`, use `obtain rfl` to save rewrite
jsm28 Jan 4, 2026
f8cf717
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter_uno…
jsm28 Jan 4, 2026
527f091
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Jan 4, 2026
9ae492a
Merge branch 'angle_incenter' into angle_incenter_unoriented
jsm28 Jan 4, 2026
335651e
Factor out two `have`s per review
jsm28 Jan 5, 2026
5ba9ffc
Factor out `dist_orthogonalProjection_eq_dist_iff_eq_of_mem`
jsm28 Jan 5, 2026
96624cd
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Jan 5, 2026
f223bd7
Merge branch 'angle_incenter' into angle_incenter_unoriented
jsm28 Jan 5, 2026
1a84819
Avoid `Nonempty` hypothesis, add docstring
jsm28 Jan 5, 2026
dd0ee97
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Jan 5, 2026
dcf6e13
Merge branch 'angle_incenter' into angle_incenter_unoriented
jsm28 Jan 5, 2026
528ddee
Merge branch 'master' into incenter_side
jsm28 Jan 15, 2026
184a919
Merge branch 'incenter_side' into angle_incenter_unoriented
jsm28 Jan 15, 2026
3d94b46
Merge remote-tracking branch 'origin/master' into altitude_map
eric-wieser Jan 20, 2026
9526d33
Golf
eric-wieser Jan 21, 2026
04ebe28
Update Mathlib/Geometry/Euclidean/Altitude.lean
jsm28 Jan 21, 2026
7673184
Merge branch 'altitude_map' into incenter_map
jsm28 Jan 21, 2026
b1cd705
Merge branch 'incenter_map' into angle_incenter_unoriented
jsm28 Jan 21, 2026
2aa92d8
Merge branch 'master' into incenter_map
jsm28 Jan 21, 2026
9a1a207
Merge branch 'incenter_map' into angle_incenter_unoriented
jsm28 Jan 21, 2026
14fc12b
Update Mathlib/Geometry/Euclidean/Incenter.lean
jsm28 Jan 21, 2026
92d2dc5
Merge branch 'incenter_map' into angle_incenter_unoriented
jsm28 Jan 21, 2026
8ff6b2b
Update Mathlib/Geometry/Euclidean/Incenter.lean
jsm28 Jan 21, 2026
af66e9b
Use `haveI` plus `exact` per review
jsm28 Jan 21, 2026
4328d75
Merge branch 'incenter_map' into angle_incenter_unoriented
jsm28 Jan 21, 2026
8fdb5c2
Merge branch 'master' into angle_incenter_unoriented
jsm28 Jan 21, 2026
6a75940
Merge branch 'master' into angle_incenter_unoriented
jsm28 Jan 24, 2026
134a23b
Merge branch 'master' into angle_div_two_of_oangle
jsm28 Jan 25, 2026
fb6e7ac
Refactor with `pointReflection` per review
jsm28 Jan 25, 2026
be79eb3
Merge branch 'angle_div_two_of_oangle' into angle_incenter_unoriented
jsm28 Jan 25, 2026
dacabf0
Merge branch 'master' into bisector_dist_two_zsmul_oangle
jsm28 Feb 10, 2026
3c97060
Indent subgoal per review
jsm28 Feb 10, 2026
048423f
Merge branch 'bisector_dist_two_zsmul_oangle' into angle_incenter
jsm28 Feb 10, 2026
9069ddb
Merge branch 'angle_incenter' into angle_incenter_unoriented
jsm28 Feb 10, 2026
bcf2b9e
Merge branch 'master' into angle_incenter
jsm28 Feb 10, 2026
762a6d2
Merge branch 'angle_incenter' into angle_incenter_unoriented
jsm28 Feb 10, 2026
cc57dd0
Merge branch 'master' into angle_incenter_unoriented
jsm28 Feb 18, 2026
c63ef8b
`backward.isDefEq.respectTransparency`
jsm28 Feb 18, 2026
3eaffb6
Merge branch 'master' into angle_incenter
jsm28 Feb 24, 2026
7963a1e
Factor out common hypotheses for triangle lemmas per review
jsm28 Feb 24, 2026
38a4063
Merge branch 'angle_incenter' into angle_incenter_unoriented
jsm28 Feb 24, 2026
a3b17d5
Merge branch 'master' into angle_incenter_unoriented
jsm28 Feb 25, 2026
2358ab5
Merge branch 'master' into angle_incenter_unoriented
jsm28 Mar 27, 2026
084a1f2
Apply suggestions from code review
jsm28 Jul 3, 2026
81822da
Merge branch 'master' into angle_incenter_unoriented
jsm28 Jul 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions Mathlib/Geometry/Euclidean/Angle/Incenter.lean
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ namespace Triangle

open Simplex

section Oriented

variable [hd2 : Fact (finrank ℝ V = 2)] [Module.Oriented ℝ V (Fin 2)]
variable (t : Triangle ℝ P) {i₁ i₂ i₃ : Fin 3} (h₁₂ : i₁ ≠ i₂) (h₁₃ : i₁ ≠ i₃) (h₂₃ : i₂ ≠ i₃)
include h₁₂ h₁₃ h₂₃
Expand Down Expand Up @@ -265,6 +267,96 @@ lemma eq_excenter_singleton_of_oangle_eq_add_pi_of_oangle_eq_add_pi {p : P}
exact t.excenter_singleton_injective.ne h₁₂ h₁'
· exact h₁'

end Oriented

section Unoriented

variable (t : Triangle ℝ P)

/-- The incenter of a triangle bisects the angle at a vertex. -/
lemma angle_incenter_eq_angle_div_two {i₁ i₂ i₃ : Fin 3} (h₁₂ : i₁ ≠ i₂) (h₁₃ : i₁ ≠ i₃)

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.

I wonder if it may be useful/convenient to have copies of these lemmas stating "2 *∠ (t.points i₂) (t.points i₁) t.incenter = ∠ (t.points i₂) (t.points i₁) (t.points i₃)"? (not sure)

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'm not convinced that's sufficiently useful to be worth duplicating all these lemmas, when you can always substitute this version in if you need the other one. (Most of the time the oriented versions are more useful anyway; it simply happened I needed angle inequalities to prove configuration information, which meant I wanted an explicit expression for the angle involving the incenter.)

(h₂₃ : i₂ ≠ i₃) :
∠ (t.points i₂) (t.points i₁) t.incenter = ∠ (t.points i₂) (t.points i₁) (t.points i₃) / 2 := by
let S : AffineSubspace ℝ P := affineSpan ℝ (Set.range t.points)

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.

Random idea and not in the scope of the PR: should we have a "planarize" tactic that handles restricting everything to the subspace?

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.

Something like that would be reasonable (once we have enough examples to show e.g. what's most convenient in terms of choosing the two-dimensional subspace / showing that all points lie in it / possibly dealing with any special cases where actually the ambient space is less than two-dimensional). Note that we don't yet have a full set of map / restrict lemmas for all simplex definitions, though that might only matter when they're missing for the particular definition you wish to transport to a two-dimensional subspace in a particular case.

let t' : Triangle ℝ S := t.restrict S le_rfl
have hf2 : Fact (finrank ℝ S.direction = 2) := ⟨by
simp_rw [S]
rw [direction_affineSpan, t.independent.finrank_vectorSpan]
simp⟩
have : Module.Oriented ℝ S.direction (Fin 2) :=
⟨Basis.orientation (finBasisOfFinrankEq _ _ hf2.out)⟩
suffices ∠ (t'.points i₂) (t'.points i₁) t'.incenter =
∠ (t'.points i₂) (t'.points i₁) (t'.points i₃) / 2 by
simpa [t', ← S.angle_coe] using this
exact angle_eq_angle_div_two_of_oangle_eq_of_sSameSide (t'.independent.injective.ne h₁₂.symm)
(t'.oangle_incenter_eq h₁₂ h₁₃ h₂₃)
(t'.sSameSide_affineSpan_pair_incenter_point h₂₃.symm h₁₃.symm h₁₂.symm)

/-- The excenter of a triangle opposite a vertex bisects the angle at that vertex. -/
lemma angle_excenter_singleton_eq_angle_div_two {i₁ i₂ i₃ : Fin 3} (h₁₂ : i₁ ≠ i₂) (h₁₃ : i₁ ≠ i₃)
(h₂₃ : i₂ ≠ i₃) :
∠ (t.points i₂) (t.points i₁) (t.excenter {i₁}) =
∠ (t.points i₂) (t.points i₁) (t.points i₃) / 2 := by
let S : AffineSubspace ℝ P := affineSpan ℝ (Set.range t.points)
let t' : Triangle ℝ S := t.restrict S le_rfl
have hf2 : Fact (finrank ℝ S.direction = 2) := ⟨by
simp_rw [S]
rw [direction_affineSpan, t.independent.finrank_vectorSpan]
simp⟩
Comment on lines +302 to +305

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.

you repeat this code block four times. Can this be some lemma?

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.

See #39696 - rather than making other PRs depend on it, I was assuming that as a straightforward PR that had been requested on Zulip, it would be reviewed quickly and then I could merge master into existing PRs and update them accordingly.

have : Module.Oriented ℝ S.direction (Fin 2) :=
⟨Basis.orientation (finBasisOfFinrankEq _ _ hf2.out)⟩
suffices ∠ (t'.points i₂) (t'.points i₁) (t'.excenter {i₁}) =
∠ (t'.points i₂) (t'.points i₁) (t'.points i₃) / 2 by
simpa [t', ← S.angle_coe, t.excenterExists_singleton i₁] using this
refine angle_eq_angle_div_two_of_oangle_eq_of_sSameSide (t'.independent.injective.ne h₁₂.symm)
(t'.oangle_excenter_singleton_eq h₁₂ h₁₃ h₂₃) ?_
rw [Set.pair_comm]
exact t'.sSameSide_affineSpan_pair_excenter_singleton_point h₁₃.symm h₂₃.symm h₁₂

/-- The excenter of a triangle opposite a vertex bisects the angle at another vertex. -/
lemma angle_excenter_singleton_eq_angle_add_pi_div_two {i₁ i₂ i₃ : Fin 3} (h₁₂ : i₁ ≠ i₂)
(h₁₃ : i₁ ≠ i₃) (h₂₃ : i₂ ≠ i₃) :
∠ (t.points i₁) (t.points i₂) (t.excenter {i₁}) =
(∠ (t.points i₁) (t.points i₂) (t.points i₃) + π) / 2 := by
let S : AffineSubspace ℝ P := affineSpan ℝ (Set.range t.points)
let t' : Triangle ℝ S := t.restrict S le_rfl
have hf2 : Fact (finrank ℝ S.direction = 2) := ⟨by
simp_rw [S]
rw [direction_affineSpan, t.independent.finrank_vectorSpan]
simp⟩
have : Module.Oriented ℝ S.direction (Fin 2) :=
⟨Basis.orientation (finBasisOfFinrankEq _ _ hf2.out)⟩
suffices ∠ (t'.points i₁) (t'.points i₂) (t'.excenter {i₁}) =
(∠ (t'.points i₁) (t'.points i₂) (t'.points i₃) + π) / 2 by
simpa [t', ← S.angle_coe, t.excenterExists_singleton i₁] using this
exact angle_eq_angle_add_pi_div_two_of_oangle_eq_add_pi_of_sSameSide
(t'.independent.injective.ne h₁₂) (t'.oangle_excenter_singleton_eq_add_pi h₁₂ h₁₃ h₂₃)
(t'.sSameSide_affineSpan_pair_excenter_singleton_point h₁₃.symm h₂₃.symm h₁₂)

/-- The excenter of a triangle opposite a vertex bisects the angle at another vertex. -/
lemma angle_excenter_singleton_eq_pi_sub_angle_div_two {i₁ i₂ i₃ : Fin 3} (h₁₂ : i₁ ≠ i₂)
(h₁₃ : i₁ ≠ i₃) (h₂₃ : i₂ ≠ i₃) :
∠ (t.points i₃) (t.points i₂) (t.excenter {i₁}) =
(π - ∠ (t.points i₃) (t.points i₂) (t.points i₁)) / 2 := by
let S : AffineSubspace ℝ P := affineSpan ℝ (Set.range t.points)
let t' : Triangle ℝ S := t.restrict S le_rfl
have hf2 : Fact (finrank ℝ S.direction = 2) := ⟨by
simp_rw [S]
rw [direction_affineSpan, t.independent.finrank_vectorSpan]
simp⟩
have : Module.Oriented ℝ S.direction (Fin 2) :=
⟨Basis.orientation (finBasisOfFinrankEq _ _ hf2.out)⟩
suffices ∠ (t'.points i₃) (t'.points i₂) (t'.excenter {i₁}) =
(π - ∠ (t'.points i₃) (t'.points i₂) (t'.points i₁)) / 2 by
simpa [t', ← S.angle_coe, t.excenterExists_singleton i₁] using this
refine angle_eq_pi_sub_angle_div_two_of_oangle_eq_add_pi_of_sOppSide
(t'.independent.injective.ne h₂₃.symm) ?_
(t'.sOppSide_affineSpan_pair_excenter_singleton_point h₁₃ h₁₂ h₂₃.symm)
simp_rw [← sub_eq_iff_eq_add, oangle_rev (excenter t' {i₁}), oangle_rev (t'.points i₁),
sub_eq_add_neg, ← neg_add, neg_inj, eq_comm, t'.oangle_excenter_singleton_eq_add_pi h₁₂ h₁₃ h₂₃]

end Unoriented

end Triangle

end Affine
Loading