imo.imo2019_q2
⟷
Archive.Imo.Imo2019Q2
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -222,7 +222,7 @@ theorem QP_parallel_BA : line[ℝ, cfg.q, cfg.P] ∥ line[ℝ, cfg.b, cfg.A] :=
theorem a_ne_a₁ : cfg.A ≠ cfg.a₁ := by
intro h
have h' := cfg.not_collinear_ABC
- rw [h, Set.insert_comm] at h'
+ rw [h, Set.insert_comm] at h'
exact h' cfg.wbtw_B_A₁_C.collinear
#align imo2019_q2.imo2019q2_cfg.A_ne_A₁ Imo2019Q2.Imo2019q2Cfg.a_ne_a₁
@@ -238,9 +238,9 @@ theorem collinear_PAA₁A₂ : Collinear ℝ ({cfg.P, cfg.A, cfg.a₁, cfg.a₂}
theorem a₁_ne_c : cfg.a₁ ≠ cfg.C := by
intro h
have hsbtw := cfg.sbtw_Q_A₁_Q₁
- rw [h] at hsbtw
+ rw [h] at hsbtw
have ha := hsbtw.angle₂₃₁_eq_zero
- rw [angle_CQ₁Q_eq_angle_CBA, angle_comm] at ha
+ rw [angle_CQ₁Q_eq_angle_CBA, angle_comm] at ha
exact (angle_ne_zero_of_not_collinear cfg.not_collinear_ABC) ha
#align imo2019_q2.imo2019q2_cfg.A₁_ne_C Imo2019Q2.Imo2019q2Cfg.a₁_ne_c
@@ -255,7 +255,7 @@ theorem q_not_mem_CB : cfg.q ∉ line[ℝ, cfg.C, cfg.b] :=
affineSpan_pair_le_of_mem_of_mem hQ cfg.wbtw_B_A₁_C.symm.mem_affine_span
have hQ₁ : cfg.Q₁ ∈ line[ℝ, cfg.C, cfg.B] :=
by
- rw [AffineSubspace.le_def'] at hQA₁
+ rw [AffineSubspace.le_def'] at hQA₁
exact hQA₁ _ cfg.sbtw_Q_A₁_Q₁.right_mem_affine_span
have hc : Collinear ℝ ({cfg.C, cfg.Q₁, cfg.Q} : Set Pt) :=
haveI hc' : Collinear ℝ ({cfg.B, cfg.C, cfg.Q₁, cfg.Q} : Set Pt) :=
@@ -265,14 +265,14 @@ theorem q_not_mem_CB : cfg.q ∉ line[ℝ, cfg.C, cfg.b] :=
exact collinear_insert_insert_of_mem_affineSpan_pair hQ₁ hQ
hc'.subset (Set.subset_insert _ _)
rw [collinear_iff_eq_or_eq_or_angle_eq_zero_or_angle_eq_pi, cfg.angle_CQ₁Q_eq_angle_CBA,
- or_iff_right cfg.C_ne_Q₁, or_iff_right cfg.sbtw_Q_A₁_Q₁.left_ne_right, angle_comm] at hc
+ or_iff_right cfg.C_ne_Q₁, or_iff_right cfg.sbtw_Q_A₁_Q₁.left_ne_right, angle_comm] at hc
exact cfg.not_collinear_ABC (hc.elim collinear_of_angle_eq_zero collinear_of_angle_eq_pi)
#align imo2019_q2.imo2019q2_cfg.Q_not_mem_CB Imo2019Q2.Imo2019q2Cfg.q_not_mem_CB
theorem q_ne_b : cfg.q ≠ cfg.b := by
intro h
have h' := cfg.Q_not_mem_CB
- rw [h] at h'
+ rw [h] at h'
exact h' (right_mem_affineSpan_pair _ _ _)
#align imo2019_q2.imo2019q2_cfg.Q_ne_B Imo2019Q2.Imo2019q2Cfg.q_ne_b
@@ -311,7 +311,7 @@ end Oriented
theorem a₁_ne_b : cfg.a₁ ≠ cfg.b := by
intro h
have hwbtw := cfg.wbtw_A_P_A₁
- rw [h] at hwbtw
+ rw [h] at hwbtw
have hPQ : line[ℝ, cfg.P, cfg.Q] = line[ℝ, cfg.A, cfg.B] :=
by
rw [AffineSubspace.eq_iff_direction_eq_of_mem (left_mem_affineSpan_pair _ _ _)
@@ -340,7 +340,7 @@ theorem a₁_ne_b : cfg.a₁ ≠ cfg.b := by
(Set.mem_insert_of_mem _
(Set.mem_insert_of_mem _ (Set.mem_insert_of_mem _ (Set.mem_singleton _))))
hBQ₁ cfg.Q_ne_B.symm hQQ₁.symm
- rw [affineIndependent_iff_not_collinear_set] at hBQ₁Q
+ rw [affineIndependent_iff_not_collinear_set] at hBQ₁Q
refine' hBQ₁Q _
rw [← h, Set.pair_comm, Set.insert_comm]
exact cfg.sbtw_Q_A₁_Q₁.wbtw.collinear
@@ -377,7 +377,7 @@ theorem a₂_ne_p : cfg.a₂ ≠ cfg.P :=
theorem a₂_ne_b : cfg.a₂ ≠ cfg.b := by
intro h
have h₁ := cfg.sbtw_A_A₁_A₂
- rw [h] at h₁
+ rw [h] at h₁
refine' cfg.not_collinear_ABC _
have hc : Collinear ℝ ({cfg.A, cfg.C, cfg.B, cfg.A₁} : Set Pt) :=
collinear_insert_insert_of_mem_affineSpan_pair h₁.left_mem_affine_span
@@ -390,7 +390,7 @@ theorem a₂_ne_b : cfg.a₂ ≠ cfg.b := by
theorem a₂_ne_c : cfg.a₂ ≠ cfg.C := by
intro h
have h₁ := cfg.sbtw_A_A₁_A₂
- rw [h] at h₁
+ rw [h] at h₁
refine' cfg.not_collinear_ABC _
have hc : Collinear ℝ ({cfg.A, cfg.B, cfg.C, cfg.A₁} : Set Pt) :=
collinear_insert_insert_of_mem_affineSpan_pair h₁.left_mem_affine_span
@@ -466,14 +466,14 @@ theorem not_collinear_QPA₂ : ¬Collinear ℝ ({cfg.q, cfg.P, cfg.a₂} : Set P
theorem q₁_ne_a₂ : cfg.q₁ ≠ cfg.a₂ := by
intro h
have h₁ := cfg.sbtw_Q_A₁_Q₁
- rw [h] at h₁
+ rw [h] at h₁
refine' cfg.not_collinear_QPA₂ _
have hA₂ := cfg.sbtw_A_A₁_A₂.right_mem_affine_span
have hA₂A₁ : line[ℝ, cfg.A₂, cfg.A₁] ≤ line[ℝ, cfg.A, cfg.A₁] :=
affineSpan_pair_le_of_left_mem hA₂
have hQ : cfg.Q ∈ line[ℝ, cfg.A, cfg.A₁] :=
by
- rw [AffineSubspace.le_def'] at hA₂A₁
+ rw [AffineSubspace.le_def'] at hA₂A₁
exact hA₂A₁ _ h₁.left_mem_affine_span
exact collinear_triple_of_mem_affineSpan_pair hQ cfg.wbtw_A_P_A₁.mem_affine_span hA₂
#align imo2019_q2.imo2019q2_cfg.Q₁_ne_A₂ Imo2019Q2.Imo2019q2Cfg.q₁_ne_a₂
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2022 Joseph Myers. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Myers
-/
-import Mathbin.Geometry.Euclidean.Angle.Sphere
-import Mathbin.Geometry.Euclidean.Sphere.SecondInter
+import Geometry.Euclidean.Angle.Sphere
+import Geometry.Euclidean.Sphere.SecondInter
#align_import imo.imo2019_q2 from "leanprover-community/mathlib"@"08b081ea92d80e3a41f899eea36ef6d56e0f1db0"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2022 Joseph Myers. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Myers
-
-! This file was ported from Lean 3 source module imo.imo2019_q2
-! leanprover-community/mathlib commit 08b081ea92d80e3a41f899eea36ef6d56e0f1db0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Geometry.Euclidean.Angle.Sphere
import Mathbin.Geometry.Euclidean.Sphere.SecondInter
+#align_import imo.imo2019_q2 from "leanprover-community/mathlib"@"08b081ea92d80e3a41f899eea36ef6d56e0f1db0"
+
/-!
# IMO 2019 Q2
mathlib commit https://github.com/leanprover-community/mathlib/commit/bf2428c9486c407ca38b5b3fb10b87dad0bc99fa
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Myers
! This file was ported from Lean 3 source module imo.imo2019_q2
-! leanprover-community/mathlib commit 308826471968962c6b59c7ff82a22757386603e3
+! leanprover-community/mathlib commit 08b081ea92d80e3a41f899eea36ef6d56e0f1db0
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.Geometry.Euclidean.Sphere.SecondInter
/-!
# IMO 2019 Q2
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
In triangle `ABC`, point `A₁` lies on side `BC` and point `B₁` lies on side `AC`. Let `P` and
`Q` be points on segments `AA₁` and `BB₁`, respectively, such that `PQ` is parallel to `AB`.
Let `P₁` be a point on line `PB₁`, such that `B₁` lies strictly between `P` and `P₁`, and
mathlib commit https://github.com/leanprover-community/mathlib/commit/8b981918a93bc45a8600de608cde7944a80d92b9
@@ -458,7 +458,7 @@ theorem not_collinear_QPA₂ : ¬Collinear ℝ ({cfg.q, cfg.P, cfg.a₂} : Set P
have h : cospherical ({cfg.B, cfg.A, cfg.A₂} : Set Pt) :=
by
refine' cfg.triangle_ABC.circumsphere.cospherical.subset _
- simp [Set.insert_subset, cfg.A_mem_circumsphere, cfg.B_mem_circumsphere,
+ simp [Set.insert_subset_iff, cfg.A_mem_circumsphere, cfg.B_mem_circumsphere,
cfg.A₂_mem_circumsphere]
exact h.affine_independent_of_ne cfg.A_ne_B.symm cfg.A₂_ne_B.symm cfg.A₂_ne_A.symm
#align imo2019_q2.imo2019q2_cfg.not_collinear_QPA₂ Imo2019Q2.Imo2019q2Cfg.not_collinear_QPA₂
@@ -656,7 +656,7 @@ theorem result : Concyclic ({cfg.P, cfg.q, cfg.p₁, cfg.q₁} : Set Pt) :=
refine' ⟨_, coplanar_of_fact_finrank_eq_two _⟩
rw [cospherical_iff_exists_sphere]
refine' ⟨cfg.ω, _⟩
- simp only [Set.insert_subset, Set.singleton_subset_iff]
+ simp only [Set.insert_subset_iff, Set.singleton_subset_iff]
exact ⟨cfg.P_mem_ω, cfg.Q_mem_ω, cfg.P₁_mem_ω, cfg.Q₁_mem_ω⟩
#align imo2019_q2.imo2019q2_cfg.result Imo2019Q2.Imo2019q2Cfg.result
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -74,8 +74,6 @@ variable [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace Pt]
variable [NormedAddTorsor V Pt] [hd2 : Fact (finrank ℝ V = 2)]
-include hd2
-
namespace imo2019_q2
noncomputable section
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -534,7 +534,6 @@ theorem two_zsmul_oangle_QPA₂_eq_two_zsmul_oangle_QB₂A₂ :
cfg.b₂_ne_a₂)
_ = (2 : ℤ) • ∡ cfg.q cfg.b₂ cfg.a₂ := by
rw [cfg.wbtw_B_Q_B₂.symm.oangle_eq_left cfg.B₂_ne_Q.symm]
-
#align imo2019_q2.imo2019q2_cfg.two_zsmul_oangle_QPA₂_eq_two_zsmul_oangle_QB₂A₂ Imo2019Q2.Imo2019q2Cfg.two_zsmul_oangle_QPA₂_eq_two_zsmul_oangle_QB₂A₂
end Oriented
@@ -583,7 +582,6 @@ theorem two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CBA :
Sphere.two_zsmul_oangle_eq cfg.c_mem_circumsphere cfg.a₂_mem_circumsphere
cfg.b_mem_circumsphere cfg.a_mem_circumsphere cfg.a₂_ne_c cfg.a₂_ne_a cfg.b_ne_c
cfg.a_ne_b.symm
-
#align imo2019_q2.imo2019q2_cfg.two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CBA Imo2019Q2.Imo2019q2Cfg.two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CBA
theorem two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CQ₁A₁ :
@@ -593,7 +591,6 @@ theorem two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CQ₁A₁ :
cfg.two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CBA
_ = (2 : ℤ) • ∡ cfg.C cfg.q₁ cfg.q := by rw [oangle_CQ₁Q_eq_oangle_CBA]
_ = (2 : ℤ) • ∡ cfg.C cfg.q₁ cfg.a₁ := by rw [cfg.sbtw_Q_A₁_Q₁.symm.oangle_eq_right]
-
#align imo2019_q2.imo2019q2_cfg.two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CQ₁A₁ Imo2019Q2.Imo2019q2Cfg.two_zsmul_oangle_CA₂A₁_eq_two_zsmul_oangle_CQ₁A₁
end Oriented
@@ -640,7 +637,6 @@ theorem two_zsmul_oangle_QQ₁A₂_eq_two_zsmul_oangle_QPA₂ :
cfg.a_mem_circumsphere cfg.a₂_mem_circumsphere cfg.b_ne_c.symm cfg.a₂_ne_c.symm cfg.a_ne_b
cfg.a₂_ne_a.symm)
_ = (2 : ℤ) • ∡ cfg.q cfg.P cfg.a₂ := cfg.two_zsmul_oangle_QPA₂_eq_two_zsmul_oangle_BAA₂.symm
-
#align imo2019_q2.imo2019q2_cfg.two_zsmul_oangle_QQ₁A₂_eq_two_zsmul_oangle_QPA₂ Imo2019Q2.Imo2019q2Cfg.two_zsmul_oangle_QQ₁A₂_eq_two_zsmul_oangle_QPA₂
end Oriented
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3209ddf94136d36e5e5c624b10b2a347cc9d090
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -68,9 +68,7 @@ set_option linter.uppercaseLean3 false
attribute [local instance] FiniteDimensional.of_fact_finrank_eq_two
variable (V : Type*) (Pt : Type*)
-
variable [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace Pt]
-
variable [NormedAddTorsor V Pt] [hd2 : Fact (finrank ℝ V = 2)]
namespace Imo2019Q2
We add Commute.orderOf_mul_pow_eq_lcm
: if two commuting elements x
and y
of a monoid have order n
and m
, there is an element of order lcm n m
. The result actually gives an explicit (computable) element, written as the product of a power of x
and a power of y
.
Co-authored-by: Junyan Xu <[junyanxu.math@gmail.com](mailto:junyanxu.math@gmail.com)>
@@ -32,7 +32,7 @@ angle chase / concyclicity argument, where an informal solution doesn't discuss
at all. Also note that (as described in `Geometry.Euclidean.Angle.Oriented.Basic`) the oriented
angles used are modulo `2 * π`, so parts of the angle chase that are only valid for angles modulo
`π` (as used in the informal solution) are represented as equalities of twice angles, which we write
-as `(2 : ℤ) • ∡ _ _ _ = (2 : ℤ) • _ _ _`.
+as `(2 : ℤ) • ∡ _ _ _ = (2 : ℤ) • ∡ _ _ _`.
-/
Rename lemmas to enable new-style dot notation or drop repeating FiniteDimensional.finiteDimensional_*
.
Restore old names as deprecated aliases.
@@ -65,7 +65,7 @@ open scoped Affine EuclideanGeometry Real
set_option linter.uppercaseLean3 false
-attribute [local instance] FiniteDimensional.finiteDimensional_of_fact_finrank_eq_two
+attribute [local instance] FiniteDimensional.of_fact_finrank_eq_two
variable (V : Type*) (Pt : Type*)
This is the supremum of
along with some minor fixes from failures on nightly-testing as Mathlib master
is merged into it.
Note that some PRs for changes that are already compatible with the current toolchain and will be necessary have already been split out: #8380.
I am hopeful that in future we will be able to progressively merge adaptation PRs into a bump/v4.X.0
branch, so we never end up with a "big merge" like this. However one of these adaptation PRs (#8056) predates my new scheme for combined CI, and it wasn't possible to keep that PR viable in the meantime.
In particular this includes adjustments for the Lean PRs
We can get rid of all the
local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue [lean4#2220](https://github.com/leanprover/lean4/pull/2220)
macros across Mathlib (and in any projects that want to write natural number powers of reals).
Changes the default behaviour of simp
to (config := {decide := false})
. This makes simp
(and consequentially norm_num
) less powerful, but also more consistent, and less likely to blow up in long failures. This requires a variety of changes: changing some previously by simp
or norm_num
to decide
or rfl
, or adding (config := {decide := true})
.
This changed the behaviour of simp
so that simp [f]
will only unfold "fully applied" occurrences of f
. The old behaviour can be recovered with simp (config := { unfoldPartialApp := true })
. We may in future add a syntax for this, e.g. simp [!f]
; please provide feedback! In the meantime, we have made the following changes:
(config := { unfoldPartialApp := true })
in some places, to recover the old behaviour@[eqns]
to manually adjust the equation lemmas for a particular definition, recovering the old behaviour just for that definition. See #8371, where we do this for Function.comp
and Function.flip
.This change in Lean may require further changes down the line (e.g. adding the !f
syntax, and/or upstreaming the special treatment for Function.comp
and Function.flip
, and/or removing this special treatment). Please keep an open and skeptical mind about these changes!
Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Mauricio Collares <mauricio@collares.org>
@@ -442,7 +442,7 @@ theorem not_collinear_QPA₂ : ¬Collinear ℝ ({cfg.Q, cfg.P, cfg.A₂} : Set P
have h : Cospherical ({cfg.B, cfg.A, cfg.A₂} : Set Pt) := by
refine' cfg.triangleABC.circumsphere.cospherical.subset _
simp only [Set.insert_subset_iff, cfg.A_mem_circumsphere, cfg.B_mem_circumsphere,
- cfg.A₂_mem_circumsphere, Sphere.mem_coe, Set.singleton_subset_iff]
+ cfg.A₂_mem_circumsphere, Sphere.mem_coe, Set.singleton_subset_iff, and_true]
exact h.affineIndependent_of_ne cfg.A_ne_B.symm cfg.A₂_ne_B.symm cfg.A₂_ne_A.symm
#align imo2019_q2.imo2019q2_cfg.not_collinear_QPA₂ Imo2019Q2.Imo2019q2Cfg.not_collinear_QPA₂
cliqueFree_of_replaceVertex_cliqueFree
is still quite long.
@@ -67,7 +67,7 @@ set_option linter.uppercaseLean3 false
attribute [local instance] FiniteDimensional.finiteDimensional_of_fact_finrank_eq_two
-variable (V : Type _) (Pt : Type _)
+variable (V : Type*) (Pt : Type*)
variable [NormedAddCommGroup V] [InnerProductSpace ℝ V] [MetricSpace Pt]
@@ -2,15 +2,12 @@
Copyright (c) 2022 Joseph Myers. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Myers
-
-! This file was ported from Lean 3 source module imo.imo2019_q2
-! leanprover-community/mathlib commit 308826471968962c6b59c7ff82a22757386603e3
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Geometry.Euclidean.Angle.Sphere
import Mathlib.Geometry.Euclidean.Sphere.SecondInter
+#align_import imo.imo2019_q2 from "leanprover-community/mathlib"@"308826471968962c6b59c7ff82a22757386603e3"
+
/-!
# IMO 2019 Q2
The unported dependencies are
algebra.order.module
init.core
linear_algebra.free_module.finite.rank
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
linear_algebra.free_module.rank
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file