Compfiles/Usa2002P6.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
41 declarations, 0 contain sorry, 0 declared as axioms
USA Mathematical Olympiad 2002, Problem 6
I have an n×n sheet of stamps, from which I've been asked to tear out blocks of three adjacent stamps in a single row or column. (I can only tear along the perforations separating adjacent stamps, and each block must come out of the sheet in one piece.) Let b(n) be the smallest number of blocks I can tear out and make it impossible to tear out any more blocks. Prove that there are real constants c and d such that
(1/7)n² - cn ≤ b(n) ≤ (1/5)n² - dn
for all n > 0.
Imports (4)
Imported by 1 file
- def
Usa2002P6.hblockA horizontal block: three adjacent stamps in a single row line 36 sourceSource documentation
A horizontal block: three adjacent stamps in a single row.
standard axioms: Quot.sound, propext what this means
Statement uses:
Nat,Finset,ProdProof uses:
Insert.insert,Prod.mk,HAdd.hAdd,OfNat.ofNat,Singleton.singleton7 instances, coercions and auxiliary constants left out.
def hblock (i j : ℕ) : Finset (ℕ × ℕ) := {(i, j), (i, j + 1), (i, j + 2)} - def
Usa2002P6.vblockA vertical block: three adjacent stamps in a single column line 39 sourceSource documentation
A vertical block: three adjacent stamps in a single column.
standard axioms: Quot.sound, propext what this means
Statement uses:
Nat,Finset,ProdProof uses:
Insert.insert,Prod.mk,HAdd.hAdd,OfNat.ofNat,Singleton.singleton7 instances, coercions and auxiliary constants left out.
def vblock (i j : ℕ) : Finset (ℕ × ℕ) := {(i, j), (i + 1, j), (i + 2, j)} - def
Usa2002P6.IsBlockA block that can be torn out of the n×n sheet line 42 sourceSource documentation
A block that can be torn out of the n×n sheet.
standard axioms: Quot.sound, propext what this means
Statement uses:
Nat,Finset,ProdProof uses:
Or,Exists,And,LT.lt,HAdd.hAdd,OfNat.ofNat,Eq, Usa2002P6.hblock, Usa2002P6.vblock4 instances, coercions and auxiliary constants left out.
def IsBlock (n : ℕ) (s : Finset (ℕ × ℕ)) : Prop := …
- def
Usa2002P6.IsMaximalTearingA tearing-out of pairwise disjoint blocks from the n×n sheet which makes it impossible to tear out any more blocks line 48 sourceSource documentation
A tearing-out of pairwise disjoint blocks from the n×n sheet which makes it impossible to tear out any more blocks.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,ProdProof uses:
And,Membership.mem, Usa2002P6.IsBlock,Ne,Disjoint,Exists,Not4 instances, coercions and auxiliary constants left out.
def IsMaximalTearing (n : ℕ) (T : Finset (Finset (ℕ × ℕ))) : Prop := …
- def
Usa2002P6.trivialTearingA wasteful maximal tearing: fill the sheet with vertical blocks, column by column, and fill the leftover bottom rows with horizontal blocks line 56 sourceSource documentation
A wasteful maximal tearing: fill the sheet with vertical blocks, column by column, and fill the leftover bottom rows with horizontal blocks. Used to show that a maximal tearing always exists (and for the upper bound at small
n).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,ProdProof uses:
Union.union,Finset.image, Usa2002P6.vblock,HMul.hMul,OfNat.ofNat,Prod.fst,Prod.snd,SProd.sprod,Finset.range,HDiv.hDiv, Usa2002P6.hblock,HAdd.hAdd,HMod.hMod14 instances, coercions and auxiliary constants left out.
def trivialTearing (n : ℕ) : Finset (Finset (ℕ × ℕ)) := …
- def
Usa2002P6.phaseThe phase of rowiin the efficient tearing pattern: in rowi, the torn blocks start at columns congruent tophase imodulo 5 line 63 sourceSource documentation
The phase of row
iin the efficient tearing pattern: in rowi, the torn blocks start at columns congruent tophase imodulo 5.no axioms what this means
Statement uses:
NatProof uses:
HMod.hMod,OfNat.ofNat3 instances, coercions and auxiliary constants left out.
def phase (i : ℕ) : ℕ := i % 5
- def
Usa2002P6.patRowTearingThe blocks torn out of rowiin the efficient tearing pattern line 66 sourceSource documentation
The blocks torn out of row
iin the efficient tearing pattern.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,ProdProof uses:
Union.union,Finset.image, Usa2002P6.hblock,HAdd.hAdd, Usa2002P6.phase,HMul.hMul,OfNat.ofNat,Finset.filter,LT.lt,Finset.range,HDiv.hDiv,ite,LE.le,Singleton.singleton,EmptyCollection.emptyCollection,HMod.hMod,HSub.hSub21 instances, coercions and auxiliary constants left out.
def patRowTearing (n i : ℕ) : Finset (Finset (ℕ × ℕ)) := …
- def
Usa2002P6.patTearingThe efficient maximal tearing, with asymptotic density n²/5 line 73 sourceSource documentation
The efficient maximal tearing, with asymptotic density n²/5.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,ProdProof uses:
Finset.biUnion,Finset.range, Usa2002P6.patRowTearing3 instances, coercions and auxiliary constants left out.
def patTearing (n : ℕ) : Finset (Finset (ℕ × ℕ)) := …
- def
Usa2002P6.covcov n i jmeans that cell(i, j)is torn out by the efficient pattern line 77 sourceSource documentation
cov n i jmeans that cell(i, j)is torn out by the efficient pattern.no axioms what this means
Statement uses:
NatProof uses:
Or,And,LE.le,OfNat.ofNat, Usa2002P6.phase,HMod.hMod,HSub.hSub,LT.lt,HAdd.hAdd9 instances, coercions and auxiliary constants left out.
def cov (n i j : ℕ) : Prop := …
- theorem
Usa2002P6.mem_hblockline 84 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Iff,Membership.mem,Prod,Finset, Usa2002P6.hblock,Prod.mk,And,Eq,LE.le,HAdd.hAdd,OfNat.ofNatProof uses:
Eq.mpr,Or,id,congrFun',congrArg,Eq.trans,Insert.insert,Singleton.singleton,congr,Prod.mk.injEq19 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.mem_vblockline 88 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Iff,Membership.mem,Prod,Finset, Usa2002P6.vblock,Prod.mk,And,LE.le,HAdd.hAdd,OfNat.ofNat,EqProof uses:
Eq.mpr,Or,id,congrFun',congrArg,Eq.trans,Insert.insert,Singleton.singleton,congr,Prod.mk.injEq19 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.trivialTearing_isMaximalTearingline 92 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Usa2002P6.IsMaximalTearing, Usa2002P6.trivialTearingProof uses:
And.intro,Finset,Prod,Membership.mem, Usa2002P6.IsBlock,And,Ne,Disjoint,Exists,Not,LT.lt,Prod.fst,HDiv.hDiv,OfNat.ofNat,Prod.snd,Eq, Usa2002P6.vblock,HMul.hMul,HMod.hMod, Usa2002P6.hblock and 45 more61 instances, coercions and auxiliary constants left out.
Tactic trace: 86 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.trivialTearing_card_leline 159 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,Finset.card,Finset,Prod, Usa2002P6.trivialTearing,HAdd.hAdd,HMul.hMul,HDiv.hDiv,OfNat.ofNat,HMod.hModProof uses:
LE.le.trans,Union.union,Finset.image, Usa2002P6.vblock,Prod.fst,Prod.snd,SProd.sprod,Finset.range, Usa2002P6.hblock,Finset.card_union_le,add_le_add,Finset.card_image_le,of_eq_true,Eq.trans,True,congrFun',congrArg,Finset.card_product,congr,Finset.card_range32 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.exists_maximalTearingline 164 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Exists,Finset,Prod,And, Usa2002P6.IsMaximalTearing,Eq,Finset.cardProof uses:
Exists.intro, Usa2002P6.trivialTearing,And.intro, Usa2002P6.trivialTearing_isMaximalTearing,rfl - def
Usa2002P6.bDocumented declaration: b line 173 sourceSource documentation
b n: the smallest number of blocks one can tear out of an n×n sheet of stamps (tearing out whole blocks of three adjacent stamps in a single row or column) making it impossible to tear out any more blocks.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
NatProof uses:
Nat.find,Exists,Finset,Prod,And, Usa2002P6.IsMaximalTearing,Eq,Finset.card,Classical.propDecidable, Usa2002P6.exists_maximalTearingnoncomputable def b (n : ℕ) : ℕ := …
- theorem
Usa2002P6.b_leline 178 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,Prod, Usa2002P6.IsMaximalTearing,LE.le, Usa2002P6.b,Finset.cardProof uses:
Nat.find_le,Exists,And,Eq,Classical.propDecidable, Usa2002P6.exists_maximalTearing,Exists.intro,And.intro,rfl1 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.b_specline 183 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Exists,Finset,Prod,And, Usa2002P6.IsMaximalTearing,Eq,Finset.card, Usa2002P6.bProof uses:
Nat.find_spec,Classical.propDecidable, Usa2002P6.exists_maximalTearingTactic trace: 2 steps
Open to load the checked before-and-after goal states.
- def
Usa2002P6.segsHThe set of all horizontal1 × 3block positions on then × nsheet line 188 sourceSource documentation
The set of all horizontal
1 × 3block positions on then × nsheet.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,ProdProof uses:
Finset.image, Usa2002P6.hblock,Prod.fst,Prod.snd,SProd.sprod,Finset.range,HSub.hSub,OfNat.ofNat7 instances, coercions and auxiliary constants left out.
def segsH (n : ℕ) : Finset (Finset (ℕ × ℕ)) := …
- def
Usa2002P6.segsVThe set of all vertical3 × 1block positions on then × nsheet line 192 sourceSource documentation
The set of all vertical
3 × 1block positions on then × nsheet.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,ProdProof uses:
Finset.image, Usa2002P6.vblock,Prod.fst,Prod.snd,SProd.sprod,Finset.range,HSub.hSub,OfNat.ofNat7 instances, coercions and auxiliary constants left out.
def segsV (n : ℕ) : Finset (Finset (ℕ × ℕ)) := …
- theorem
Usa2002P6.lower_hblock_injline 195 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset,Prod, Usa2002P6.hblock,AndProof uses:
Membership.mem,Prod.mk,Iff.mpr,LE.le,HAdd.hAdd,OfNat.ofNat, Usa2002P6.mem_hblock,And.intro,rfl,le_rfl,Eq.mp,congrArg,propext,Eq.symm9 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.lower_vblock_injline 204 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset,Prod, Usa2002P6.vblock,AndProof uses:
Membership.mem,Prod.mk,Iff.mpr,LE.le,HAdd.hAdd,OfNat.ofNat, Usa2002P6.mem_vblock,And.intro,le_rfl,rfl,Eq.mp,congrArg,propext,Eq.symm9 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.lower_hblock_ne_vblockline 213 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Ne,Finset,Prod, Usa2002P6.hblock, Usa2002P6.vblockProof uses:
Eq,Membership.mem,Prod.mk,Iff.mpr,And,LE.le,HAdd.hAdd,OfNat.ofNat, Usa2002P6.mem_vblock,And.intro,le_rfl,rfl,Eq.mp,congrArg,propext, Usa2002P6.mem_hblock,Eq.symm11 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.lower_card_segsHline 221 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset.card,Finset,Prod, Usa2002P6.segsH,HMul.hMul,HSub.hSub,OfNat.ofNatProof uses:
Eq.mpr,Finset.image, Usa2002P6.hblock,Prod.fst,Prod.snd,SProd.sprod,Finset.range,id,congrArg,Usa2002P6.segsH.eq_1,Finset.card_image_of_injOn,Membership.mem,Set,And, Usa2002P6.lower_hblock_inj,Iff.mpr,Prod.ext_iff,And.intro,Finset.card_product,Finset.card_rangeand 1 more18 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.lower_card_segsVline 228 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset.card,Finset,Prod, Usa2002P6.segsV,HMul.hMul,HSub.hSub,OfNat.ofNatProof uses:
Eq.mpr,Finset.image, Usa2002P6.vblock,Prod.fst,Prod.snd,SProd.sprod,Finset.range,id,congrArg,Usa2002P6.segsV.eq_1,Finset.card_image_of_injOn,Membership.mem,Set,And, Usa2002P6.lower_vblock_inj,Iff.mpr,Prod.ext_iff,And.intro,Finset.card_product,Finset.card_rangeand 2 more18 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.lower_disjoint_segsline 235 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Disjoint,Finset,Prod, Usa2002P6.segsH, Usa2002P6.segsVProof uses:
Eq.mpr,Membership.mem,Not,id,Eq,congrArg,propext,Finset.disjoint_left,And,SProd.sprod,Finset.range,HSub.hSub,OfNat.ofNat, Usa2002P6.hblock,Prod.fst,Prod.snd,Exists,False,Eq.mp,Finset.imageand 6 more16 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.lower_card_segsline 244 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset.card,Finset,Prod,Union.union, Usa2002P6.segsH, Usa2002P6.segsV,HMul.hMul,OfNat.ofNat,HSub.hSubProof uses:
Eq.mpr,HAdd.hAdd,id,congrArg,Finset.card_union_of_disjoint, Usa2002P6.lower_disjoint_segs, Usa2002P6.lower_card_segsH, Usa2002P6.lower_card_segsV,two_mul,Eq.refl31 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.lower_isBlock_of_mem_segsline 248 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,Prod,Membership.mem,Union.union, Usa2002P6.segsH, Usa2002P6.segsV, Usa2002P6.IsBlockProof uses:
Or,Eq.mp,congrArg,propext,Finset.mem_union,And,SProd.sprod,Finset.range,HSub.hSub,OfNat.ofNat,Eq, Usa2002P6.hblock,Prod.fst,Prod.snd,Exists,Finset.image,Finset.mem_image,Usa2002P6.segsH.eq_1,Or.inl,LT.ltand 11 more25 instances, coercions and auxiliary constants left out.
Tactic trace: 14 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.lower_card_filter_le_fourteenEvery block meets at most14of the possible block positions line 262 sourceSource documentation
Every block meets at most
14of the possible block positions.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,Prod, Usa2002P6.IsBlock,LE.le,Finset.card,Finset.filter,Not,Disjoint,Union.union, Usa2002P6.segsH, Usa2002P6.segsV,OfNat.ofNatProof uses:
Exists,And,LT.lt,HAdd.hAdd,Eq, Usa2002P6.hblock, Usa2002P6.vblock,Eq.mpr,id,congrArg,Finset.filter_union,Finset.image,Finset.Icc,HSub.hSub,Membership.mem,Eq.mp,propext,Finset.mem_filter,SProd.sprod,Finset.rangeand 36 more69 instances, coercions and auxiliary constants left out.
Tactic trace: 104 steps
Open to load the checked before-and-after goal states.
theorem lower_card_filter_le_fourteen {n : ℕ} {s : Finset (ℕ × ℕ)} (hs : IsBlock n s) : ((segsH n ∪ segsV n).filter fun u => ¬ Disjoint u s).card ≤ 14 := by …Mentions: Usa2002P6.IsBlock, Usa2002P6.segsH, Usa2002P6.segsV
- theorem
Usa2002P6.counting_lower_boundThe lower boundb(n) ≥ n(n - 2)/7: double-counting pairs of a possible block position and a torn-out block meeting it line 373 sourceSource documentation
The lower bound
b(n) ≥ n(n - 2)/7: double-counting pairs of a possible block position and a torn-out block meeting it. Every one of the2n(n - 2)positions must be met by the tearing, and every torn-out block meets at most14positions.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,Prod, Usa2002P6.IsMaximalTearing,LE.le,HMul.hMul,OfNat.ofNat,HSub.hSub,Finset.cardProof uses:
Membership.mem, Usa2002P6.IsBlock,And,Ne,Disjoint,Exists,Not,Union.union, Usa2002P6.segsH, Usa2002P6.segsV,Finset.filter,Prod.fst,Prod.snd,SProd.sprod,Finset.image, Usa2002P6.lower_isBlock_of_mem_segs,Eq.mpr,Eq,id,congrArgand 31 more38 instances, coercions and auxiliary constants left out.
Tactic trace: 23 steps
Open to load the checked before-and-after goal states.
theorem counting_lower_bound {n : ℕ} {T : Finset (Finset (ℕ × ℕ))} (hT : IsMaximalTearing n T) : 2 * (n * (n - 2)) ≤ 14 * T.card := by …Mentions: Usa2002P6.IsMaximalTearing
- theorem
Usa2002P6.mem_patRowTearingMembership in a row of the efficient tearing pattern, in a usable form line 421 sourceSource documentation
Membership in a row of the efficient tearing pattern, in a usable form.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,Prod,Membership.mem, Usa2002P6.patRowTearing,Or,Exists,And,LT.lt,HAdd.hAdd,HDiv.hDiv,OfNat.ofNat, Usa2002P6.phase,HMul.hMul,Eq, Usa2002P6.hblock,LE.le,HMod.hMod,HSub.hSubProof uses:
ite,Singleton.singleton,EmptyCollection.emptyCollection,Eq.mp,Eq.trans,Union.union,Finset.image,Finset.filter,Finset.range,congrFun',congrArg,funext,Or.inl,Exists.intro,And.intro,rfl,dite,Or.inr,Iff.mp,Finset.mem_singletonand 5 more46 instances, coercions and auxiliary constants left out.
Tactic trace: 20 steps
Open to load the checked before-and-after goal states.
theorem mem_patRowTearing {n i : ℕ} {s : Finset (ℕ × ℕ)} (hs : s ∈ patRowTearing n i) : (∃ k, k < n / 5 + 1 ∧ phase i + 5 * k + 2 < n ∧ s = hblock i (phase i + 5 * k)) ∨ (3 ≤ phase i ∧ s = hblock i 0) ∨ (3 ≤ (n + 2 - phase i) % 5 ∧ s = hblock i (n - 3)) := by …Mentions: Usa2002P6.patRowTearing, Usa2002P6.phase, Usa2002P6.hblock
- theorem
Usa2002P6.fst_eq_of_mem_patRowTearingEvery block of rowiof the pattern lies entirely within rowiline 441 sourceSource documentation
Every block of row
iof the pattern lies entirely within rowi.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,Prod,Membership.mem, Usa2002P6.patRowTearing,Prod.mk,EqProof uses:
Exists,And,LT.lt,HAdd.hAdd,HDiv.hDiv,OfNat.ofNat, Usa2002P6.phase,HMul.hMul, Usa2002P6.hblock,Or,LE.le,HMod.hMod,HSub.hSub, Usa2002P6.mem_patRowTearing,Eq.mp,congrArg,propext, Usa2002P6.mem_hblock,Eq.symm24 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
theorem fst_eq_of_mem_patRowTearing {n i a b : ℕ} {s : Finset (ℕ × ℕ)} (hs : s ∈ patRowTearing n i) (hx : (a, b) ∈ s) : a = i := by …Mentions: Usa2002P6.b, Usa2002P6.patRowTearing
- theorem
Usa2002P6.patTearing_isBlockline 446 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat,Finset,Prod,Membership.mem, Usa2002P6.patTearing, Usa2002P6.IsBlockProof uses:
And,Finset.range, Usa2002P6.patRowTearing,Exists,Eq.mp,Finset.biUnion,congrArg,propext,Finset.mem_biUnion,Usa2002P6.patTearing.eq_1,LT.lt,HAdd.hAdd,HDiv.hDiv, Usa2002P6.phase,HMul.hMul,Eq, Usa2002P6.hblock,Or,HMod.hMod,HSub.hSuband 8 more28 instances, coercions and auxiliary constants left out.
Tactic trace: 12 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.patTearing_disjointline 456 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat,Finset,Prod,Membership.mem, Usa2002P6.patTearing,Ne,DisjointProof uses:
And,Finset.range, Usa2002P6.patRowTearing,Exists,Eq.mp,Finset.biUnion,congrArg,propext,Finset.mem_biUnion,Usa2002P6.patTearing.eq_1,Eq.mpr,Not,id,Eq,Finset.disjoint_left,False,Prod.mk, Usa2002P6.fst_eq_of_mem_patRowTearing,LT.lt,HAdd.hAddand 12 more38 instances, coercions and auxiliary constants left out.
Tactic trace: 35 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.cov_coveredEvery cell satisfyingcovis torn out by the pattern line 492 sourceSource documentation
Every cell satisfying
covis torn out by the pattern.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat,LT.lt, Usa2002P6.cov,Exists,Finset,Prod,And,Membership.mem, Usa2002P6.patRowTearing,Prod.mkProof uses: Usa2002P6.phase,
Or,HMod.hMod,HSub.hSub,HAdd.hAdd,Exists.intro, Usa2002P6.hblock,And.intro,Iff.mpr,Union.union,Finset.image,HMul.hMul,Finset.filter,Finset.range,HDiv.hDiv,ite,Singleton.singleton,EmptyCollection.emptyCollection,Finset.mem_union,Or.inland 13 more35 instances, coercions and auxiliary constants left out.
Tactic trace: 25 steps
Open to load the checked before-and-after goal states.
theorem cov_covered {n i j : ℕ} (hn : 6 ≤ n) (_hi : i < n) (hj : j < n) (h : cov n i j) : ∃ s ∈ patRowTearing n i, (i, j) ∈ s := by …Mentions: h, Usa2002P6.cov, Usa2002P6.patRowTearing
- theorem
Usa2002P6.row_covEvery three consecutive cells of a row of the sheet contain a torn-out cell line 513 sourceSource documentation
Every three consecutive cells of a row of the sheet contain a torn-out cell.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat,LT.lt,HAdd.hAdd,Or, Usa2002P6.covProof uses:
id11 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
theorem row_cov {n i j : ℕ} (hn : 6 ≤ n) (hi : i < n) (hj : j + 2 < n) : cov n i j ∨ cov n i (j + 1) ∨ cov n i (j + 2) := by …Mentions: Usa2002P6.cov
- theorem
Usa2002P6.col_covEvery three consecutive cells of a column of the sheet contain a torn-out cell line 520 sourceSource documentation
Every three consecutive cells of a column of the sheet contain a torn-out cell.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat,LT.lt,HAdd.hAdd,Or, Usa2002P6.covProof uses:
id11 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
theorem col_cov {n i j : ℕ} (hn : 6 ≤ n) (hi : i + 2 < n) (hj : j < n) : cov n i j ∨ cov n (i + 1) j ∨ cov n (i + 2) j := by …Mentions: Usa2002P6.cov
- theorem
Usa2002P6.patTearing_maximalline 525 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat,Finset,Prod, Usa2002P6.IsBlock,Exists,And,Membership.mem, Usa2002P6.patTearing,Not,DisjointProof uses:
LT.lt,HAdd.hAdd,Eq, Usa2002P6.hblock, Usa2002P6.vblock, Usa2002P6.cov,Or, Usa2002P6.row_cov, Usa2002P6.patRowTearing,Prod.mk, Usa2002P6.cov_covered,Exists.intro,And.intro,Iff.mpr,Finset.biUnion,Finset.range,Finset.mem_biUnion,Finset.mem_range,Finset.not_disjoint_iff,of_eq_trueand 16 more43 instances, coercions and auxiliary constants left out.
Tactic trace: 38 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.patRowTearing_card_leline 551 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,Finset.card,Finset,Prod, Usa2002P6.patRowTearing,HAdd.hAdd,HDiv.hDiv,OfNat.ofNatProof uses:
Finset.image, Usa2002P6.hblock, Usa2002P6.phase,HMul.hMul,Finset.filter,LT.lt,Finset.range,LE.le.trans,Finset.card_image_le,Finset.card_filter_le,Eq.mpr,id,Eq,congrArg,Finset.card_range,le_refl,ite,Singleton.singleton,EmptyCollection.emptyCollection,Decidableand 16 more44 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.patTearing_card_leline 568 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,Finset.card,Finset,Prod, Usa2002P6.patTearing,HMul.hMul,HAdd.hAdd,HDiv.hDiv,OfNat.ofNatProof uses:
LE.le.trans,Finset.biUnion,Finset.range, Usa2002P6.patRowTearing,Finset.sum,Finset.card_biUnion_le,Trans.trans,Eq,Finset.sum_le_sum,Membership.mem, Usa2002P6.patRowTearing_card_le,Eq.mpr,HSMul.hSMul,id,congrArg,Finset.sum_const,Finset.card_range,smul_eq_mul,Eq.refl31 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- theorem
Usa2002P6.patTearing_isMaximalTearingline 576 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LE.le,OfNat.ofNat, Usa2002P6.IsMaximalTearing, Usa2002P6.patTearingProof uses:
And.intro,Finset,Prod,Membership.mem, Usa2002P6.IsBlock,And,Ne,Disjoint,Exists,Not, Usa2002P6.patTearing_isBlock, Usa2002P6.patTearing_disjoint, Usa2002P6.patTearing_maximal8 instances, coercions and auxiliary constants left out.
- problem
Usa2002P6.usa2002_p6USAMO 2002, Problem 6 line 587 sourceSource documentation
USAMO 2002, Problem 6. There are real constants
canddsuch that(1/7)n² - cn ≤ b(n) ≤ (1/5)n² - dnfor alln > 0. Here we takec = 2/7andd = -3.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Exists,Real,Nat,LT.lt,OfNat.ofNat,And,LE.le,HSub.hSub,HDiv.hDiv,HPow.hPow,HMul.hMul, Usa2002P6.bProof uses:
Exists.intro,Neg.neg,And.intro,Finset,Prod, Usa2002P6.IsMaximalTearing,Eq,Finset.card, Usa2002P6.b_spec,Or,le_or_gt,Nat.cast_nonneg,cast,Eq.symm,le_of_not_gt,Mathlib.Tactic.Linarith.lt_irrefl,Eq.mp,HAdd.hAdd,inferInstance,AddMonoidWithOneand 127 more153 instances, coercions and auxiliary constants left out.
Tactic trace: 54 steps
Open to load the checked before-and-after goal states.
problem usa2002_p6 : ∃ c d : ℝ, ∀ n : ℕ, 0 < n → (n : ℝ) ^ 2 / 7 - c * n ≤ (b n : ℝ) ∧ (b n : ℝ) ≤ (n : ℝ) ^ 2 / 5 - d * n := by …Mentions: Usa2002P6.b