FormalConjectures/Mathoverflow/34145.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 project documentation, Formal Conjectures paper, arXiv v1
18 declarations, 4 contain sorry, 0 declared as axioms
Mathoverflow 34145
Can the unit square be covered by $1/k$-by-$1/(k+1)$ rectangles (across $1 \le k$ natural)?
I am deliberately not requiring that the rotations can only be $0^\circ, 90^\circ, 180^\circ, \text{ or } 270^\circ$.
Because of indexing, since n : ℕ starts at 0, we change the side lengths to $1 / (n + 1)$ and
$1 / (n + 2)$, so that the first rectangle is $1/1$ by $1/2$, the second is $1/2$ by $1/3$, etc.
Reference: mathoverflow/34145 asked by user Kaveh
Imports (1)
- structure
Mathoverflow34145.RectangleA rectangle is specified by its width, height, starting point, and rotation line 42 sourceSource documentation
A rectangle is specified by its width, height, starting point, and rotation. The rectangle is assumed to start in the lower left corner. For example, the unit square $\{ (x, y) \mid 0 \le x \le 1, 0 \le y \le 1 \}$ is specified as
⟨1, 1, (0, 0), 0⟩standard axioms: Classical.choice, Quot.sound, propext what this means
structure Rectangle : Type where …
- def
Mathoverflow34145.rigidMotionA combination of a rotation and a translation to map the standard rectangle to the desired rectangle line 51 sourceSource documentation
A combination of a rotation and a translation to map the standard rectangle to the desired rectangle.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Prod,Real,Real.AngleProof uses:
Prod.mk,HSub.hSub,HAdd.hAdd,Prod.fst,HMul.hMul,Real.Angle.cos,Prod.snd,Real.Angle.sin6 instances, coercions and auxiliary constants left out.
noncomputable def rigidMotion (start : ℝ × ℝ) (θ : Angle) (p : ℝ × ℝ) : (ℝ × ℝ) := …
- lemma
Mathoverflow34145.rigidMotion_testline 55 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Prod,Real, Mathoverflow34145.rigidMotion,Prod.mk,Real.sqrt,OfNat.ofNat,Nat,HDiv.hDiv,HMul.hMul,Real.pi,HSub.hSub,HAdd.hAdd,Neg.negProof uses:
Eq.mpr,And,Inv.inv,HPow.hPow,id,Eq.trans,congr,congrArg,Prod.fst,Real.Angle.cos,Prod.snd,Real.Angle.sin,Real.Angle,mul_div_assoc,Real.cos,Real.cos_two_mul,congrFun',Real.cos_pi_div_three,one_div,inv_powand 94 more105 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- def
Mathoverflow34145.scaleA scaling to map the unit square to a standard rectangle line 62 sourceSource documentation
A scaling to map the unit square to a standard rectangle.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Real,ProdProof uses:
Prod.mk,HMul.hMul,Prod.fst,Prod.snd2 instances, coercions and auxiliary constants left out.
noncomputable def scale (x y : ℝ) (p : ℝ × ℝ) : (ℝ × ℝ) := …
- def
Mathoverflow34145.unitSquareThe unit square line 66 sourceSource documentation
The unit square.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Set,Prod,RealProof uses:
Set.ofPred,And,LE.le,OfNat.ofNat,Prod.fst,Prod.snd5 instances, coercions and auxiliary constants left out.
def unitSquare : Set (ℝ × ℝ) := …
- def
Mathoverflow34145.Rectangle.toSetConverts a rectangle to a set inℝ × ℝline 70 sourceSource documentation
Converts a rectangle to a set in
ℝ × ℝ.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Mathoverflow34145.Rectangle,
Set,Prod,RealProof uses:
Set.image, Mathoverflow34145.rigidMotion,Mathoverflow34145.Rectangle.start,Mathoverflow34145.Rectangle.rotation, Mathoverflow34145.scale,Mathoverflow34145.Rectangle.width,Mathoverflow34145.Rectangle.height, Mathoverflow34145.unitSquaredef Rectangle.toSet (r : Rectangle) : Set (ℝ × ℝ) := …
Mentions: Mathoverflow34145.Rectangle
- abbrev
Mathoverflow34145.lbMeasureThe standard Lebesgue measure onℝ²line 74 sourceSource documentation
The standard Lebesgue measure on
ℝ².standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
MeasureTheory.Measure,Prod,RealProof uses:
Module.Basis.addHaar,Fin,OfNat.ofNat,Nat,Module.Basis.finTwoProd16 instances, coercions and auxiliary constants left out.
noncomputable abbrev lbMeasure : Measure (ℝ × ℝ) := …
- lemma
Mathoverflow34145.lbMeasure_rigidMotionlbMeasureis invariant underrigidMotion start θline 79 sourceSource documentation
lbMeasureis invariant underrigidMotion start θ.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Prod,Real,Real.Angle,Set,Eq,ENNReal,MeasureTheory.Measure, Mathoverflow34145.lbMeasure,Set.image, Mathoverflow34145.rigidMotionProof uses:
Prod.mk,HSub.hSub,HMul.hMul,Prod.fst,Real.Angle.cos,Prod.snd,Real.Angle.sin,HAdd.hAdd,Trans.simple,Module.Basis.addHaar,Fin,OfNat.ofNat,Nat,Module.Basis.finTwoProd,Eq.trans,Set.preimage,Eq.symm,MeasureTheory.measure_preimage_add_right,congr_arg,Set.extand 71 more179 instances, coercions and auxiliary constants left out.
Tactic trace: 14 steps
Open to load the checked before-and-after goal states.
lemma lbMeasure_rigidMotion (start : ℝ × ℝ) (θ : Angle) (s : Set (ℝ × ℝ)) : lbMeasure (rigidMotion start θ '' s) = lbMeasure s := by …Mentions: Mathoverflow34145.lbMeasure, Mathoverflow34145.rigidMotion
- lemma
Mathoverflow34145.lbMeasure_scalelbMeasureis scaled byscaleline 93 sourceSource documentation
lbMeasureis scaled byscale.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Real,Set,Prod,Eq,ENNReal,MeasureTheory.Measure, Mathoverflow34145.lbMeasure,Set.image, Mathoverflow34145.scale,HMul.hMul,ENNReal.ofReal,absProof uses:
LinearMap,RingHom.id,LinearMap.mk,AddHom.mk,Prod.mk,Prod.fst,Prod.snd,of_eq_true,HAdd.hAdd,Eq.trans,True,congrFun',congrArg,congr,mul_add,eq_self,HSMul.hSMul,RingHom,Real.ringHom_apply,mul_left_command 62 more160 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
lemma lbMeasure_scale (x y : ℝ) (s : Set (ℝ × ℝ)) : lbMeasure (scale x y '' s) = .ofReal |x * y| * lbMeasure s := by …Mentions: Mathoverflow34145.lbMeasure, Mathoverflow34145.scale
- lemma
Mathoverflow34145.lbMeasure_unitSquareThe Lebesgue measure of the unit square is1line 106 sourceSource documentation
The Lebesgue measure of the unit square is
1.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,ENNReal,MeasureTheory.Measure,Prod,Real,Set, Mathoverflow34145.lbMeasure, Mathoverflow34145.unitSquare,OfNat.ofNatProof uses:
Eq.mpr,Module.Basis.addHaar,Fin,Nat,Module.Basis.finTwoProd,TopologicalSpace.PositiveCompacts,Module.Basis.parallelepiped,eq_of_heq,HEq,Eq.refl,HEq.refl,Eq.symm,outParam,DFunLike,Set.ext,Iff,Membership.mem,And,LE.le,Prod.fstand 46 more104 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
lemma lbMeasure_unitSquare : lbMeasure unitSquare = 1 := by …
Mentions: Mathoverflow34145.lbMeasure, Mathoverflow34145.unitSquare
- lemma
Mathoverflow34145.lbMeasure_rectangle_toSetThe Lebesgue measure of the a rectanglerisr.width * r.heightline 117 sourceSource documentation
The Lebesgue measure of the a rectangle
risr.width * r.heightstandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Mathoverflow34145.Rectangle,
Eq,ENNReal,MeasureTheory.Measure,Prod,Real,Set, Mathoverflow34145.lbMeasure, Mathoverflow34145.Rectangle.toSet,ENNReal.ofReal,abs,HMul.hMul,Mathoverflow34145.Rectangle.width,Mathoverflow34145.Rectangle.heightProof uses:
Eq.mpr,Set.image, Mathoverflow34145.rigidMotion,Mathoverflow34145.Rectangle.start,Mathoverflow34145.Rectangle.rotation, Mathoverflow34145.scale, Mathoverflow34145.unitSquare,id,congrArg,Mathoverflow34145.Rectangle.toSet.eq_1, Mathoverflow34145.lbMeasure_rigidMotion, Mathoverflow34145.lbMeasure_scale,OfNat.ofNat, Mathoverflow34145.lbMeasure_unitSquare,mul_one,Eq.refl27 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma lbMeasure_rectangle_toSet (r : Rectangle) : lbMeasure r.toSet = .ofReal |r.width * r.height| := by …Mentions: Mathoverflow34145.Rectangle, Mathoverflow34145.lbMeasure
- lemma
Mathoverflow34145.tsum_area_eq_oneThe areas of the required rectangles sum to 1 line 123 sourceSource documentation
The areas of the required rectangles sum to 1.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Real,tsum,Nat,HMul.hMul,HDiv.hDiv,OfNat.ofNat,HAdd.hAdd,SummationFilter.unconditionalProof uses:
Finset.sum,Finset.range,HSub.hSub,Nat.recAux,of_eq_true,Eq.trans,True,congr,congrArg,Inv.inv,EmptyCollection.emptyCollection,Finset,funext,one_div,congrFun',CharP.cast_eq_zero,zero_add,div_self,Not,Falseand 125 more194 instances, coercions and auxiliary constants left out.
Tactic trace: 14 steps
Open to load the checked before-and-after goal states.
lemma tsum_area_eq_one : ∑' (n : ℕ), ((1 / (n + 1)) * (1 / (n + 2)) : ℝ) = 1 := by …
- structure
Mathoverflow34145.ConfigurationA configuration of rectangles of sides1 / (n + 1)and1 / (n + 2)line 135 sourceSource documentation
A configuration of rectangles of sides
1 / (n + 1)and1 / (n + 2).standard axioms: Classical.choice, Quot.sound, propext what this means
structure Configuration : Type where …
- def
Mathoverflow34145.Configuration.IsPackingA "packing" means that the interiors of any two rectangles are disjoint line 141 sourceSource documentation
A "packing" means that the interiors of any two rectangles are disjoint.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Mathoverflow34145.Configuration
Proof uses:
Pairwise,Nat,Eq,Set,Prod,Real,Inter.inter,interior, Mathoverflow34145.Rectangle.toSet,Mathoverflow34145.Configuration.rect,EmptyCollection.emptyCollection6 instances, coercions and auxiliary constants left out.
def Configuration.IsPacking (c : Configuration) : Prop := …
Mentions: c, Mathoverflow34145.Configuration
- theorem
Mathoverflow34145.rectangles_cover_unit_squareCan a unit square be covered by rectangles of width1 / (n + 1)and height1 / (n + 2)? sorry line 146 sourceSource documentation
Can a unit square be covered by rectangles of width
1 / (n + 1)and height1 / (n + 2)?depends on sorry what this means
Statement uses:
Iff,True,Exists, Mathoverflow34145.Configuration,Prod,Real,Membership.mem,Set, Mathoverflow34145.unitSquare,Nat, Mathoverflow34145.Rectangle.toSet,Mathoverflow34145.Configuration.rectProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,OfNat.ofNat3 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem rectangles_cover_unit_square : answer(sorry) ↔ ∃ c : Configuration, ∀ p ∈ unitSquare, ∃ n, p ∈ (c.rect n).toSet := by …Mentions: c, Mathoverflow34145.Configuration, Mathoverflow34145.unitSquare
- theorem
Mathoverflow34145.rectangles_pack_unit_squareEquivalently, can a unit square be packed with rectangles of width1 / (n + 1)and height1 / (n + 2)? sorry line 153 sourceSource documentation
Equivalently, can a unit square be packed with rectangles of width
1 / (n + 1)and height1 / (n + 2)?depends on sorry what this means
Statement uses:
Iff,True,Exists, Mathoverflow34145.Configuration,And,Nat,LE.le,Set,Prod,Real, Mathoverflow34145.Rectangle.toSet,Mathoverflow34145.Configuration.rect, Mathoverflow34145.unitSquare, Mathoverflow34145.Configuration.IsPackingProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous,OfNat.ofNat3 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem rectangles_pack_unit_square : answer(sorry) ↔ ∃ c : Configuration, (∀ n, (c.rect n).toSet ⊆ unitSquare) ∧ c.IsPacking := by …Mentions: c, Mathoverflow34145.Configuration, Mathoverflow34145.unitSquare
- theorem
Mathoverflow34145.rectangles_pack_square_133_div_132It is known that packing the rectangles into a square of side length133/132is possible sorry line 162 sourceSource documentation
It is known that packing the rectangles into a square of side length
133/132is possible.Reference: https://www.sciencedirect.com/science/article/pii/0097316594901163
depends on sorry what this means
Statement uses:
Exists, Mathoverflow34145.Configuration,And,Nat,LE.le,Set,Prod,Real, Mathoverflow34145.Rectangle.toSet,Mathoverflow34145.Configuration.rect,Mathoverflow34145.Rectangle.mk,HDiv.hDiv,OfNat.ofNat,Prod.mk,Real.Angle, Mathoverflow34145.Configuration.IsPackingProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous36 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem rectangles_pack_square_133_div_132 : (∃ c : Configuration, (∀ n, (c.rect n).toSet ⊆ Rectangle.toSet ⟨133/132, 133/132, (0, 0), 0⟩) ∧ c.IsPacking) := by …Mentions: c, Mathoverflow34145.Configuration, Mathoverflow34145.Rectangle.toSet
- theorem
Mathoverflow34145.rectangles_pack_square_501_div_500It is known that packing the rectangles into a square of side length501/500is possible sorry line 173 sourceSource documentation
It is known that packing the rectangles into a square of side length
501/500is possible.Reference: https://www.sciencedirect.com/science/article/pii/S0167506008706009
depends on sorry what this means
Statement uses:
Exists, Mathoverflow34145.Configuration,And,Nat,LE.le,Set,Prod,Real, Mathoverflow34145.Rectangle.toSet,Mathoverflow34145.Configuration.rect,Mathoverflow34145.Rectangle.mk,HDiv.hDiv,OfNat.ofNat,Prod.mk,Real.Angle, Mathoverflow34145.Configuration.IsPackingProof uses:
sorryAx,Lean.Name,Bool.false,Lean.Name.num,Lean.Name.str,Lean.Name.anonymous36 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
theorem rectangles_pack_square_501_div_500 : (∃ c : Configuration, (∀ n, (c.rect n).toSet ⊆ Rectangle.toSet ⟨501/500, 501/500, (0, 0), 0⟩) ∧ c.IsPacking) := by …Mentions: c, Mathoverflow34145.Configuration, Mathoverflow34145.Rectangle.toSet