Compfiles/Imo2020P6.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.
Project sources: Pinned compfiles documentation, Pinned compfiles corpus index
8 declarations, 0 contain sorry, 0 declared as axioms
International Mathematical Olympiad 2020, Problem 6
Consider an integer n > 1, and a set S of n points in the plane such that the distance between any two points in S is at least 1. Prove that there is a line l separating S such that the distance from any point of S to l is at least Ω(n ^ (-1/3)).
(A line l separates a set of points S if some segment jointing two points in S croses l.)
Imports (2)
Imported by 1 file
- theorem
Imo2020P6.exists_between_and_separatedline 42 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Real,Nat,LT.lt,Finset.card,Finset.filter,Membership.mem,Set,Set.Ioo,Exists,And,LE.le,HDiv.hDiv,HSub.hSub,HMul.hMul,OfNat.ofNat,absProof uses:
Nat.casesAuxOn,Eq,False.elim,Nat.succ,Nat.le,HEq,False,Nat.le.refl,noConfusion_of_Nat,Nat.ctorIdx,Nat.le.step,Eq.refl,HEq.refl,Eq.symm,HAdd.hAdd,Eq.mpr,id,congrArg,rfl,Finand 205 more284 instances, coercions and auxiliary constants left out.
Tactic trace: 80 steps
Open to load the checked before-and-after goal states.
- def
Imo2020P6.projectComputes "how far along" the segment fromatobthe pointplies line 119 sourceSource documentation
Computes "how far along" the segment from
atobthe pointplies.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
NormedAddCommGroup,InnerProductSpace,Real,MetricSpace,NormedAddTorsorProof uses:
HDiv.hDiv,ContinuousLinearMap,RingHom.id,starRingEnd,innerSL,VSub.vsub,Norm.norm46 instances, coercions and auxiliary constants left out.
noncomputable def project (a b p : P) : ℝ := innerSL ℝ (a -ᵥ b) (a -ᵥ p) / ‖a -ᵥ b‖
Mentions: P
- theorem
Imo2020P6.project_self_leftline 121 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
NormedAddCommGroup,InnerProductSpace,Real,MetricSpace,NormedAddTorsor,Eq, Imo2020P6.project,OfNat.ofNatProof uses:
of_eq_true,Eq.trans,True,congrFun',congrArg,HDiv.hDiv,ContinuousLinearMap,RingHom.id,starRingEnd,innerSL,VSub.vsub,Norm.norm,vsub_self,inner_zero_right,zero_div,eq_self63 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
Imo2020P6.project_self_rightline 122 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
NormedAddCommGroup,InnerProductSpace,Real,MetricSpace,NormedAddTorsor,Ne,Eq, Imo2020P6.project,Norm.norm,VSub.vsubProof uses:
id,Eq.mpr,HDiv.hDiv,Inner.inner,HPow.hPow,Nat,OfNat.ofNat,congrArg,real_inner_self_eq_norm_sq,HMul.hMul,propext,div_eq_iff,norm_ne_zero_iff,vsub_ne_zero,pow_two,Eq.refl54 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- theorem
Imo2020P6.exists_affine_between_and_separatedline 128 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
NormedAddCommGroup,InnerProductSpace,Real,MetricSpace,NormedAddTorsor,Nat,Fact,Eq,Module.finrank,HAdd.hAdd,OfNat.ofNat,Finset,LE.le,LT.lt,Dist.dist,Finset.card,Finset.filter,Membership.mem,Set,Set.Iooand 13 moreProof uses:
Nat.floor,abs, Imo2020P6.exists_between_and_separated,Eq.mpr,id,congrArg,Eq.symm,propext,Nat.cast_lt,Eq.trans,Nat.cast_add,Nat.cast_one,lt_imp_lt_of_le_of_le,le_refl,Nat.lt_floor_add_one,Exists.intro,AffineSubspace.mk',AffineMap,AffineMap.lineMap,LinearMap.kerand 143 more323 instances, coercions and auxiliary constants left out.
Tactic trace: 55 steps
Open to load the checked before-and-after goal states.
- theorem
Imo2020P6.card_le_of_separatedline 193 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Real,LT.lt,OfNat.ofNat,LE.le,Set.Pairwise,Dist.dist,Membership.mem,Set,Set.Icc,Int,Finset.card,Int.floor,HAdd.hAdd,HDiv.hDiv,HSub.hSubProof uses:
Nat,Finset.Icc,Finset.card_le_card_of_injOn,Eq.mpr,id,Eq,congrArg,Finset.coe_Icc,And,propext,Set.mem_Icc,And.intro,Int.floor_nonneg,div_nonneg,sub_nonneg,And.left,LT.lt.le,Int.floor_le_floor,div_le_div_iff_of_pos_right,sub_le_sub_iff_rightand 68 more144 instances, coercions and auxiliary constants left out.
Tactic trace: 26 steps
Open to load the checked before-and-after goal states.
- theorem
Imo2020P6.card_le_of_separated_in_stripIn a strip of width1/2, if the points have pairwise distance at least1, then we can bound the number of points line 222 sourceSource documentation
In a strip of width
1/2, if the points have pairwise distance at least1, then we can bound the number of points.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
NormedAddCommGroup,InnerProductSpace,Real,MetricSpace,NormedAddTorsor,AffineIsometryEquiv,EuclideanSpace,Fin,OfNat.ofNat,Nat,ENNReal,Finset,Set.Pairwise,Finset.filter,Membership.mem,Set,Set.Ioo,HDiv.hDiv,WithLp.ofLp,LE.leand 5 moreProof uses:
Int,Int.floor,HAdd.hAdd,Neg.neg, Imo2020P6.card_le_of_separated,Mathlib.Meta.NormNum.isNNRat_lt_true,Mathlib.Meta.NormNum.IsNat.to_isNNRat,Mathlib.Meta.NormNum.isNat_ofNat,Nat.cast_zero,Mathlib.Meta.NormNum.isNNRat_div,Mathlib.Meta.NormNum.isNNRat_mul,Inv.inv,Eq.refl,Nat.cast_one,Mathlib.Meta.NormNum.isNNRat_inv_pos,Mathlib.Meta.NormNum.instAtLeastTwo,Nat.mul,Bool,Bool.true,le_of_not_gtand 143 more235 instances, coercions and auxiliary constants left out.
Tactic trace: 29 steps
Open to load the checked before-and-after goal states.
theorem card_le_of_separated_in_strip (eqv : P ≃ᵃⁱ[ℝ] EuclideanSpace ℝ (Fin 2)) (S : Finset P) (h_sep : (S.filter (eqv · 0 ∈ Set.Ioo 0 (1 / 2)) : Set P).Pairwise fun x y => 1 ≤ dist x y) {N : ℝ} (hN : 1 ≤ N) (h_bound : ∀ x ∈ S.filter (eqv · 0 ∈ Set.Ioo 0 (1 / 2)), |eqv x 1| ≤ N) : #(S.filter (eqv · 0 ∈ Set.Ioo 0 (1/2))) ≤ N*6-1 := by … - problem
Imo2020P6.imo2020_p6line 254 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
NormedAddCommGroup,InnerProductSpace,Real,MetricSpace,NormedAddTorsor,Fact,Eq,Nat,Module.finrank,OfNat.ofNat,Exists,And,LT.lt,Finset,Finset.card,Set.Pairwise,LE.le,Dist.dist,AffineSubspace,Subtypeand 9 moreProof uses:
Exists.intro,And.intro,Mathlib.Meta.NormNum.isNNRat_lt_true,Mathlib.Meta.NormNum.IsNat.to_isNNRat,Mathlib.Meta.NormNum.isNat_ofNat,Nat.cast_zero,Mathlib.Meta.NormNum.isNNRat_div,Mathlib.Meta.NormNum.isNNRat_mul,Inv.inv,Eq.refl,Nat.cast_one,Mathlib.Meta.NormNum.isNNRat_inv_pos,Mathlib.Meta.NormNum.instAtLeastTwo,Nat.mul,Bool,Bool.true,dite,lt_of_lt_of_le,Real.rpow_pos_of_pos,Iff.mprand 308 more349 instances, coercions and auxiliary constants left out.
Tactic trace: 117 steps
Open to load the checked before-and-after goal states.