Compfiles/Imo1992P5.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
14 declarations, 0 contain sorry, 0 declared as axioms
International Mathematical Olympiad 1992, Problem 5
Let S be a finite set of points in three-dimensional space. Let Sx,Sy and Sz be the sets consisting of the orthogonal projections of the points of S onto the yz-plane, zx-plane and xy-plane, respectively. Prove that |S|²≤|Sx|·|Sy|·|Sz|. where |A| denotes the number of elements in the finite set |A|. (Note: The orthogonal projection of a point onto a plane is the foot of the perpendicular from the point to the plane.)
Imports (2)
Imported by 1 file
- instance
Imo1992P5.(instance at line 31)line 31 source - abbrev
Imo1992P5.pxProject onto yz-plane (zero out x) line 34 sourceSource documentation
Project onto yz-plane (zero out x)
private abbrev px (p : ℝ × ℝ × ℝ) : ℝ × ℝ × ℝ := (0, p.2.1, p.2.2)
- abbrev
Imo1992P5.pyProject onto xz-plane (zero out y) line 36 sourceSource documentation
Project onto xz-plane (zero out y)
private abbrev py (p : ℝ × ℝ × ℝ) : ℝ × ℝ × ℝ := (p.1, 0, p.2.2)
- abbrev
Imo1992P5.pzProject onto xy-plane (zero out z) line 38 sourceSource documentation
Project onto xy-plane (zero out z)
private abbrev pz (p : ℝ × ℝ × ℝ) : ℝ × ℝ × ℝ := (p.1, p.2.1, 0)
- def
Imo1992P5.zsliceThe slice of S at z-coordinate r line 41 sourceSource documentation
The slice of S at z-coordinate r
private noncomputable def zslice (S : Finset (ℝ × ℝ × ℝ)) (r : ℝ) := …
Mentions: S
- lemma
Imo1992P5.card_sum_slicesS is the disjoint union of its z-slices line 45 sourceSource documentation
S is the disjoint union of its z-slices
private lemma card_sum_slices (S : Finset (ℝ × ℝ × ℝ)) : S.card = ∑ r ∈ S.image (·.2.2), (zslice S r).card := by …Mentions: S, Imo1992P5.zslice
- lemma
Imo1992P5.slice_le_prodEach z-slice injects into the product of its x- and y-projections line 57 sourceSource documentation
Each z-slice injects into the product of its x- and y-projections
private lemma slice_le_prod (S : Finset (ℝ × ℝ × ℝ)) (r : ℝ) : (zslice S r).card ≤ ((zslice S r).image px).card * ((zslice S r).image py).card := by …Mentions: S, Imo1992P5.zslice, Imo1992P5.px, Imo1992P5.py
- lemma
Imo1992P5.slice_le_szEach z-slice has size ≤ |S_z| (pz is injective on each slice) line 73 sourceSource documentation
Each z-slice has size ≤ |S_z| (pz is injective on each slice)
private lemma slice_le_sz (S : Finset (ℝ × ℝ × ℝ)) (r : ℝ) : (zslice S r).card ≤ (S.image pz).card := by …Mentions: S, Imo1992P5.zslice, Imo1992P5.pz
- lemma
Imo1992P5.px_disjointpx-images of different z-slices are disjoint (px preserves z-coordinate) line 86 sourceSource documentation
px-images of different z-slices are disjoint (px preserves z-coordinate)
private lemma px_disjoint (S : Finset (ℝ × ℝ × ℝ)) {r₁ r₂ : ℝ} (hr : r₁ ≠ r₂) : Disjoint ((zslice S r₁).image px) ((zslice S r₂).image px) := …Mentions: S, Imo1992P5.zslice, Imo1992P5.px
- lemma
Imo1992P5.py_disjointpy-images of different z-slices are disjoint line 96 sourceSource documentation
py-images of different z-slices are disjoint
private lemma py_disjoint (S : Finset (ℝ × ℝ × ℝ)) {r₁ r₂ : ℝ} (hr : r₁ ≠ r₂) : Disjoint ((zslice S r₁).image py) ((zslice S r₂).image py) := …Mentions: S, Imo1992P5.zslice, Imo1992P5.py
- lemma
Imo1992P5.sum_px_leSum of |px-image of slice| ≤ |Sx| line 106 sourceSource documentation
Sum of |px-image of slice| ≤ |Sx|
private lemma sum_px_le (S : Finset (ℝ × ℝ × ℝ)) : ∑ r ∈ S.image (·.2.2), ((zslice S r).image px).card ≤ (S.image px).card := by …Mentions: S, Imo1992P5.zslice, Imo1992P5.px
- lemma
Imo1992P5.sum_py_leSum of |py-image of slice| ≤ |Sy| line 113 sourceSource documentation
Sum of |py-image of slice| ≤ |Sy|
private lemma sum_py_le (S : Finset (ℝ × ℝ × ℝ)) : ∑ r ∈ S.image (·.2.2), ((zslice S r).image py).card ≤ (S.image py).card := by …Mentions: S, Imo1992P5.zslice, Imo1992P5.py
- theorem
Imo1992P5.mainMain inequality: |S|² ≤ |Sx| · |Sy| · |Sz| line 120 sourceSource documentation
Main inequality: |S|² ≤ |Sx| · |Sy| · |Sz|
private theorem main (S : Finset (ℝ × ℝ × ℝ)) : (S.card : ℝ) ^ 2 ≤ (S.image px).card * (S.image py).card * (S.image pz).card := by …Mentions: S, Imo1992P5.px, Imo1992P5.py, Imo1992P5.pz
- problem
Imo1992P5.imo1992_p5line 177 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Real,LE.le,Nat,HPow.hPow,Finset.card,OfNat.ofNat,HMul.hMul,Finset.image,Prod.mk,Prod.fst,Prod.sndProof uses:
cast,Eq.trans,congr,congrArg,congrFun',Eq.symm,funext,Nat.cast_zero57 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.