Compfiles/Imo2004P3.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
76 declarations, 0 contain sorry, 0 declared as axioms
International Mathematical Olympiad 2004, Problem 3
Define a "hook" to be a figure made up of six unit squares as shown below in the picture (a 3 × 3 square with the centre square, the middle square of one side, and a corner square adjacent to that middle square removed), or any of the figures obtained by applying rotations and reflections to this figure.
Which m × n rectangles can be tiled by hooks?
Imports (2)
Imported by 1 file
- def
Imo2004P3.rectThe cells of anm × nrectangle, as a finite subset ofℤ × ℤline 31 sourceSource documentation
The cells of an
m × nrectangle, as a finite subset ofℤ × ℤ.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,Prod,IntProof uses:
Finset.image,Prod.mk,Prod.fst,Prod.snd,SProd.sprod,Finset.range5 instances, coercions and auxiliary constants left out.
def rect (m n : ℕ) : Finset (ℤ × ℤ) := …
- def
Imo2004P3.hookShapesThe eight orientations of the hook (rotations and reflections of the figure in the problem statement) line 38 sourceSource documentation
The eight orientations of the hook (rotations and reflections of the figure in the problem statement). Each orientation is a
3 × 3square with three cells removed: the centre cell, the middle cell of one side, and a corner cell adjacent to that middle cell.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,IntProof uses:
Insert.insert,Prod.mk,OfNat.ofNat,Singleton.singleton6 instances, coercions and auxiliary constants left out.
def hookShapes : Finset (Finset (ℤ × ℤ)) := …
- def
Imo2004P3.IsHookA hook is a translate of one of the eight orientations line 49 sourceSource documentation
A hook is a translate of one of the eight orientations.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,IntProof uses:
Exists,And,Membership.mem, Imo2004P3.hookShapes,Eq,Finset.image,HAdd.hAdd7 instances, coercions and auxiliary constants left out.
def IsHook (s : Finset (ℤ × ℤ)) : Prop := ∃ σ ∈ hookShapes, ∃ t, s = σ.image (· + t)
Mentions: Imo2004P3.hookShapes
- def
Imo2004P3.TileableRcan be tiled by hooks: there is a finite family of pairwise disjoint hooks whose union isRline 53 sourceSource documentation
Rcan be tiled by hooks: there is a finite family of pairwise disjoint hooks whose union isR.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,IntProof uses:
Exists,And,Membership.mem, Imo2004P3.IsHook,Ne,Disjoint,Eq,Finset.biUnion,id6 instances, coercions and auxiliary constants left out.
def Tileable (R : Finset (ℤ × ℤ)) : Prop := …
- def
Imo2004P3.tileShapesThe six orientations of the two-hook "tiles" (pairs of interlocking hooks): the3 × 4rectangle, the4 × 3rectangle, and the four orientations of the zigzag shape line 62 sourceSource documentation
The six orientations of the two-hook "tiles" (pairs of interlocking hooks): the
3 × 4rectangle, the4 × 3rectangle, and the four orientations of the zigzag shape.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,IntProof uses:
Insert.insert,Prod.mk,OfNat.ofNat,Singleton.singleton6 instances, coercions and auxiliary constants left out.
def tileShapes : Finset (Finset (ℤ × ℤ)) := …
- def
Imo2004P3.IsTileA tile is a translate of one of the six tile shapes line 71 sourceSource documentation
A tile is a translate of one of the six tile shapes.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,IntProof uses:
Exists,And,Membership.mem, Imo2004P3.tileShapes,Eq,Finset.image,HAdd.hAdd7 instances, coercions and auxiliary constants left out.
def IsTile (s : Finset (ℤ × ℤ)) : Prop := ∃ τ ∈ tileShapes, ∃ t, s = τ.image (· + t)
Mentions: Imo2004P3.tileShapes
- def
Imo2004P3.loThe lower-left corner of the bounding box of a set of cells line 74 sourceSource documentation
The lower-left corner of the bounding box of a set of cells.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,IntProof uses:
Prod.mk,Option.getD,Finset.min,Finset.image,Prod.fst,OfNat.ofNat,Prod.snd3 instances, coercions and auxiliary constants left out.
def lo (s : Finset (ℤ × ℤ)) : ℤ × ℤ := …
- def
Imo2004P3.holeThe "hole" (notch) of a hook: the centre cell of its bounding box line 78 sourceSource documentation
The "hole" (notch) of a hook: the centre cell of its bounding box.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,IntProof uses:
HAdd.hAdd, Imo2004P3.lo,Prod.mk,OfNat.ofNat4 instances, coercions and auxiliary constants left out.
def hole (s : Finset (ℤ × ℤ)) : ℤ × ℤ := lo s + (1, 1)
Mentions: Imo2004P3.lo
- lemma
Imo2004P3.mem_rectline 80 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Prod,Int,Iff,Membership.mem,Finset, Imo2004P3.rect,And,LE.le,OfNat.ofNat,Prod.fst,LT.lt,Prod.sndProof uses:
Iff.intro,Eq,Prod.mk,Exists,Eq.mp,Eq.trans,Finset.image,SProd.sprod,Finset.range,congrArg,funext,congrFun',congr,id,And.intro,Nat.cast_nonneg,cast,Eq.symm,Eq.mpr,Exists.introand 11 more44 instances, coercions and auxiliary constants left out.
Tactic trace: 24 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.card_rectline 95 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset.card,Prod,Int, Imo2004P3.rect,HMul.hMulProof uses:
Function.Injective,Prod.mk,Prod.fst,Prod.snd,Prod.ext,And.left,Eq.mp,And,Eq.trans,Prod.mk.injEq,congr,congrArg,And.right,Eq.mpr,Finset.image,SProd.sprod,Finset,Finset.range,id,Imo2004P3.rect.eq_1and 4 more11 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.lo_eqline 103 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Finset.Nonempty,Eq, Imo2004P3.lo,Prod.mk,Finset.min',Finset.image,Prod.fst,Finset.Nonempty.image,Prod.sndProof uses:
Option.getD,Finset.min,OfNat.ofNat,Eq.mpr,id,congrArg,WithTop,Eq.symm,Finset.coe_min',Eq.refl,rfl6 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.min'_of_eqline 110 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Int,Finset.Nonempty,Eq,Finset.min'Proof uses:
Eq.refl3 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.lo_translateline 114 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Finset.Nonempty,Eq, Imo2004P3.lo,Finset.image,HAdd.hAddProof uses:
Prod.fst,Eq.mpr,Function.comp,id,congrArg,Finset.image_image,Eq.refl,Prod.snd,Monotone,Monotone.add_const,monotone_id,Prod.mk,Finset.min',Finset.Nonempty.image, Imo2004P3.lo_eq, Imo2004P3.min'_of_eq,Finset.Nonempty.of_image,Finset.min'_image,Prod.ext16 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.hole_translateline 129 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Finset.Nonempty,Eq, Imo2004P3.hole,Finset.image,HAdd.hAddProof uses:
of_eq_true,Eq.trans, Imo2004P3.lo,Prod.mk,OfNat.ofNat,True,congr,congrArg,congrFun', Imo2004P3.lo_translate,add_right_comm,eq_self15 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.shape_boundsline 133 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.hookShapes,And,LE.le,OfNat.ofNat,Prod.fst,Prod.sndProof uses:
of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl11 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.shape_extremesline 137 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.hookShapes,And,Exists,Eq,Prod.fst,OfNat.ofNat,Prod.sndProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl10 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.hole_shapeline 141 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.hookShapes,Eq, Imo2004P3.hole,Prod.mk,OfNat.ofNatProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl9 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.hole_not_memline 144 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.hookShapes,Not, Imo2004P3.holeProof uses:
of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl9 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.card_hookline 147 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.hookShapes,Eq,Nat,Finset.card,OfNat.ofNatProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl8 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.hook_row3Every hook orientation contains cells two apart in some row line 151 sourceSource documentation
Every hook orientation contains cells two apart in some row.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.hookShapes,Ne,Nat,Finset.card,Inter.inter,Finset.image,Prod.fst,Finset.filter,Eq,Prod.snd,OfNat.ofNatProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl15 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma hook_row3 : ∀ σ ∈ hookShapes, ((σ.filter fun c => c.2 = 0).image Prod.fst ∩ (σ.filter fun c => c.2 = 2).image Prod.fst).card ≠ 0 := by …Mentions: Imo2004P3.hookShapes
- lemma
Imo2004P3.hook_col3Every hook orientation contains cells two apart in some column line 157 sourceSource documentation
Every hook orientation contains cells two apart in some column.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.hookShapes,Ne,Nat,Finset.card,Inter.inter,Finset.image,Prod.snd,Finset.filter,Eq,Prod.fst,OfNat.ofNatProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl15 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma hook_col3 : ∀ σ ∈ hookShapes, ((σ.filter fun c => c.1 = 0).image Prod.snd ∩ (σ.filter fun c => c.1 = 2).image Prod.snd).card ≠ 0 := by …Mentions: Imo2004P3.hookShapes
- lemma
Imo2004P3.pair_checkThe key local fact line 168 sourceSource documentation
The key local fact. Suppose two disjoint hooks are such that the hole of the first one is covered by the second one, and moreover the hole of the second hook is either covered by the first hook or can be covered by a third hook disjoint from both (as must happen in any tiling of a rectangle). Then the hole of the second hook is covered by the first, and the union of the two hooks is one of the six tiles. (Checked case by case.)
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.hookShapes,Finset.image,HSub.hSub,Prod.mk,OfNat.ofNat,Disjoint,HAdd.hAdd,Or,LT.lt,Nat,Finset.card,Finset.biUnion,Finset.filter,Union.union,And,Eqand 2 more19 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma pair_check : ∀ σ₁ ∈ hookShapes, ∀ σ₂ ∈ hookShapes, ∀ t ∈ (σ₂.image fun c => (1, 1) - c), Disjoint σ₁ (σ₂.image (· + t)) → ((1, 1) + t ∈ σ₁ ∨ 0 < (hookShapes.biUnion fun σ₃ => (σ₃.image fun c => ((1, 1) + t) - c).filter fun t₃ => Disjoint (σ₃.image (· + t₃)) (σ₁ ∪ (σ₂.image (· + t)))).card) → ((1, 1) + t ∈ σ₁) ∧ 0 < (tileShapes.filter fun τ => σ₁ ∪ (σ₂.image (· + t)) = τ.image (· + (lo (σ₁ ∪ (σ₂.image (· + t))) - lo τ))).card := by …Mentions: Imo2004P3.hookShapes, Imo2004P3.lo
- lemma
Imo2004P3.tileable_emptyline 182 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo2004P3.Tileable,
EmptyCollection.emptyCollection,Finset,Prod,IntProof uses:
Exists.intro,And,Membership.mem, Imo2004P3.IsHook,Ne,Disjoint,Eq,Finset.biUnion,id,And.intro,of_eq_true,Eq.trans,True,forall_congr,False,implies_congr,Eq.refl,implies_true,Not,eq_self11 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.image_add_imageline 184 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Eq,Finset.image,HAdd.hAddProof uses:
Eq.mpr,Function.comp,id,congrArg,Finset.image_image,Finset.image_congr,Membership.mem,Set,add_assoc15 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.image_swap_addline 191 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Eq,Finset.image,Prod.swap,HAdd.hAddProof uses:
Eq.mpr,Function.comp,id,congrArg,Finset.image_image,Finset.image_congr,Membership.mem,Set,Eq.refl13 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.isHook_translateline 198 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int, Imo2004P3.IsHook,Finset.image,HAdd.hAddProof uses:
And,Membership.mem, Imo2004P3.hookShapes,Exists,Eq,Exists.intro,And.intro, Imo2004P3.image_add_image,Eq.symm15 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.hookShapes_swapThe hook orientations are closed under transposition (which is one of the eight symmetries of the square) line 205 sourceSource documentation
The hook orientations are closed under transposition (which is one of the eight symmetries of the square).
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.hookShapes,LT.lt,Nat,OfNat.ofNat,Finset.card,Finset.filter,Eq,Finset.image,Prod.swap,HAdd.hAdd,HSub.hSub, Imo2004P3.loProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl28 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma hookShapes_swap : ∀ σ ∈ hookShapes, 0 < (hookShapes.filter fun σ' => σ.image Prod.swap = σ'.image (· + (lo (σ.image Prod.swap) - lo σ'))).card := by …Mentions: Imo2004P3.hookShapes, Imo2004P3.lo
- lemma
Imo2004P3.isHook_swapline 210 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int, Imo2004P3.IsHook,Finset.image,Prod.swapProof uses:
And,Membership.mem, Imo2004P3.hookShapes,Exists,Eq,HAdd.hAdd,LT.lt,Nat,OfNat.ofNat,Finset.card,Finset.filter,HSub.hSub, Imo2004P3.lo, Imo2004P3.hookShapes_swap,Finset.Nonempty,Eq.mp,congrArg,propext,Finset.card_pos,Finset.mem_filterand 11 more19 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.biUnion_image_translateline 224 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Eq,Finset.biUnion,Finset.image,HAdd.hAdd,idProof uses:
Finset.ext,Eq.mpr,Iff,Membership.mem,Exists,And,congr,congrArg,Eq.trans,funext,congrFun',Iff.intro,Iff.mp,Finset.mem_image,Exists.intro,And.intro,rfl,Iff.mpr19 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.biUnion_image_swapline 236 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Eq,Finset.biUnion,Finset.image,Prod.swap,idProof uses:
Finset.ext,Eq.mpr,Iff,Membership.mem,Exists,And,congr,congrArg,Eq.trans,funext,congrFun',Iff.intro,Iff.mp,Finset.mem_image,Exists.intro,And.intro,rfl,Iff.mpr13 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.tileable_translateline 248 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int, Imo2004P3.Tileable,Finset.image,HAdd.hAddProof uses:
And,Membership.mem, Imo2004P3.IsHook,Ne,Disjoint,Eq,Finset.biUnion,id,Exists.intro,And.intro,Exists,Eq.mp,congrArg,propext,Finset.mem_image, Imo2004P3.isHook_translate,Eq.mpr,Eq.refl,Not,Finset.disjoint_leftand 4 more37 instances, coercions and auxiliary constants left out.
Tactic trace: 24 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.tileable_unionline 271 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Disjoint, Imo2004P3.Tileable,Union.unionProof uses:
And,Membership.mem, Imo2004P3.IsHook,Ne,Eq,Finset.biUnion,id,Exists.intro,And.intro,Or,Iff.mp,Finset.mem_union,LE.le,Eq.mpr,congrArg,Finset.subset_biUnion_of_mem,Disjoint.mono,Disjoint.symm,Finset.union_biUnion,Eq.symmand 1 more18 instances, coercions and auxiliary constants left out.
Tactic trace: 36 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.rect_zero_leftline 292 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset,Prod,Int, Imo2004P3.rect,OfNat.ofNat,EmptyCollection.emptyCollectionProof uses:
of_eq_true,eq_self3 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.rect_zero_rightline 294 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset,Prod,Int, Imo2004P3.rect,OfNat.ofNat,EmptyCollection.emptyCollectionProof uses:
of_eq_true,Eq.trans,True,congrFun',congrArg,SProd.sprod,Finset.range,Finset.image,Prod.mk,Prod.fst,Prod.snd,Finset.product_empty,eq_self9 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.rect_add_rowsline 296 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset,Prod,Int, Imo2004P3.rect,HAdd.hAdd,Union.union,Finset.image,Prod.mk,OfNat.ofNatProof uses:
Finset.ext,Eq.mpr,Iff,Membership.mem,And,LE.le,Prod.fst,LT.lt,Prod.snd,Or,Exists,id,congr,congrArg,Eq.trans,funext,congrFun',Iff.intro,dite,Or.inland 13 more46 instances, coercions and auxiliary constants left out.
Tactic trace: 31 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.rect_add_rows_disjointline 314 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Disjoint,Finset,Prod,Int, Imo2004P3.rect,Finset.image,HAdd.hAdd,Prod.mk,OfNat.ofNatProof uses:
Eq.mpr,Membership.mem,Not,id,Eq,congrArg,propext,Finset.disjoint_left,And,Exists,False,Eq.mp,LE.le,Prod.fst,LT.lt,Prod.snd,And.left,And.right, Imo2004P3.mem_rect30 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.rect_add_colsline 326 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset,Prod,Int, Imo2004P3.rect,HAdd.hAdd,Union.union,Finset.image,Prod.mk,OfNat.ofNatProof uses:
Finset.ext,Eq.mpr,Iff,Membership.mem,And,LE.le,Prod.fst,LT.lt,Prod.snd,Or,Exists,id,congr,congrArg,Eq.trans,funext,congrFun',Iff.intro,dite,Or.inland 13 more46 instances, coercions and auxiliary constants left out.
Tactic trace: 31 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.rect_add_cols_disjointline 344 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Disjoint,Finset,Prod,Int, Imo2004P3.rect,Finset.image,HAdd.hAdd,Prod.mk,OfNat.ofNatProof uses:
Eq.mpr,Membership.mem,Not,id,Eq,congrArg,propext,Finset.disjoint_left,And,Exists,False,Eq.mp,LE.le,Prod.fst,LT.lt,Prod.snd,And.right,And.left, Imo2004P3.mem_rect30 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.tileable_mul_rowsline 356 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo2004P3.Tileable, Imo2004P3.rect,HMul.hMulProof uses:
Nat.recAux,Eq.mpr,OfNat.ofNat,id,Eq,congrArg,Nat.zero_mul,EmptyCollection.emptyCollection,Finset,Prod,Int, Imo2004P3.rect_zero_left, Imo2004P3.tileable_empty,HAdd.hAdd,Nat.succ,Nat.succ_mul,Union.union,Finset.image,Prod.mk, Imo2004P3.rect_add_rows and 3 more16 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.tileable_mul_colsline 364 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo2004P3.Tileable, Imo2004P3.rect,HMul.hMulProof uses:
Nat.recAux,Eq.mpr,OfNat.ofNat,id,Eq,congrArg,Nat.zero_mul,EmptyCollection.emptyCollection,Finset,Prod,Int, Imo2004P3.rect_zero_right, Imo2004P3.tileable_empty,HAdd.hAdd,Nat.succ,Nat.succ_mul,Union.union,Finset.image,Prod.mk, Imo2004P3.rect_add_cols and 3 more16 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.tileable_mulline 372 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo2004P3.Tileable, Imo2004P3.rect,HMul.hMulProof uses: Imo2004P3.tileable_mul_cols, Imo2004P3.tileable_mul_rows
4 instances, coercions and auxiliary constants left out.
- lemma
Imo2004P3.rect_transposeline 376 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset,Prod,Int,Finset.image,Prod.swap, Imo2004P3.rectProof uses:
Finset.ext,Eq.mpr,Iff,Membership.mem,Exists,And,LE.le,OfNat.ofNat,Prod.fst,LT.lt,Prod.snd,id,congr,congrArg,Eq.trans,funext,congrFun',Iff.intro,Prod.mk,And.introand 2 more17 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.tileable_swapline 385 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int, Imo2004P3.Tileable,Finset.image,Prod.swapProof uses:
And,Membership.mem, Imo2004P3.IsHook,Ne,Disjoint,Eq,Finset.biUnion,id,Exists.intro,And.intro,Exists,Eq.mp,congrArg,propext,Finset.mem_image, Imo2004P3.isHook_swap,Eq.mpr,Eq.refl,Not,Finset.disjoint_leftand 4 more13 instances, coercions and auxiliary constants left out.
Tactic trace: 24 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.tileable_transposeline 407 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo2004P3.Tileable, Imo2004P3.rectProof uses:
Eq.mpr,Finset.image,Prod,Int,Prod.swap,id,Eq,congrArg,Finset,Eq.symm, Imo2004P3.rect_transpose, Imo2004P3.tileable_swap2 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.tileable_3_4Two hooks tile a3 × 4rectangle line 412 sourceSource documentation
Two hooks tile a
3 × 4rectangle.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Imo2004P3.Tileable, Imo2004P3.rect,
OfNat.ofNat,NatProof uses: Imo2004P3.IsHook,
Insert.insert,Prod,Int,Finset,Prod.mk,Singleton.singleton,Exists.intro,And,Membership.mem, Imo2004P3.hookShapes,Exists,Eq,Finset.image,HAdd.hAdd,And.intro,of_decide_eq_true,id,Bool,Decidable.decideand 19 more21 instances, coercions and auxiliary constants left out.
Tactic trace: 22 steps
Open to load the checked before-and-after goal states.
lemma tileable_3_4 : Tileable (rect 3 4) := by …
Mentions: Imo2004P3.Tileable, Imo2004P3.rect
- lemma
Imo2004P3.nat_3_4Every natural number other than1, 2, 5is a sum of3s and4s line 428 sourceSource documentation
Every natural number other than
1, 2, 5is a sum of3s and4s.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,And,Ne,OfNat.ofNat,Exists,Eq,HAdd.hAdd,HMul.hMulProof uses:
Or,HMod.hMod,Exists.intro,HDiv.hDiv,HSub.hSub21 instances, coercions and auxiliary constants left out.
Tactic trace: 12 steps
Open to load the checked before-and-after goal states.
lemma nat_3_4 {n : ℕ} (h : n ≠ 1 ∧ n ≠ 2 ∧ n ≠ 5) : ∃ a b, n = 3 * a + 4 * b := by …Mentions: h
- lemma
Imo2004P3.tileable_12jA12 × nrectangle withn ∉ {1, 2, 5}is tileable line 436 sourceSource documentation
A
12 × nrectangle withn ∉ {1, 2, 5}is tileable.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,And,Ne,OfNat.ofNat, Imo2004P3.Tileable, Imo2004P3.rect,HMul.hMulProof uses:
Exists,Eq,HAdd.hAdd, Imo2004P3.nat_3_4, Imo2004P3.tileable_transpose, Imo2004P3.tileable_mul_cols, Imo2004P3.tileable_3_4,Eq.mpr,Union.union,Finset,Prod,Int,Finset.image,Prod.mk,id,congrArg, Imo2004P3.rect_add_cols, Imo2004P3.tileable_union, Imo2004P3.rect_add_cols_disjoint, Imo2004P3.tileable_mul and 4 more23 instances, coercions and auxiliary constants left out.
Tactic trace: 13 steps
Open to load the checked before-and-after goal states.
lemma tileable_12j (j : ℕ) {n : ℕ} (h2 : n ≠ 1 ∧ n ≠ 2 ∧ n ≠ 5) : Tileable (rect (12 * j) n) := by …Mentions: Imo2004P3.Tileable, Imo2004P3.rect
- lemma
Imo2004P3.tileable_of_conditionsSufficiency: every rectangle satisfying the conditions is tileable line 452 sourceSource documentation
Sufficiency: every rectangle satisfying the conditions is tileable.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,And,Ne,OfNat.ofNat,Or,Dvd.dvd, Imo2004P3.Tileable, Imo2004P3.rectProof uses:
dite,Eq,HMul.hMul,Eq.mpr,id,congrArg,mul_comm, Imo2004P3.tileable_transpose, Imo2004P3.tileable_mul, Imo2004P3.tileable_3_4,Eq.symm,Not,Nat.Coprime.dvd_of_dvd_mul_left,of_decide_eq_true,Nat.Coprime,Bool,Decidable.decide,Bool.true,Eq.refl,Exists.introand 19 more32 instances, coercions and auxiliary constants left out.
Tactic trace: 63 steps
Open to load the checked before-and-after goal states.
lemma tileable_of_conditions {m n : ℕ} (h1 : m ≠ 1 ∧ m ≠ 2 ∧ m ≠ 5) (h2 : n ≠ 1 ∧ n ≠ 2 ∧ n ≠ 5) (h3 : 3 ∣ m ∨ 3 ∣ n) (h4 : 4 ∣ m ∨ 4 ∣ n) : Tileable (rect m n) := by …Mentions: Imo2004P3.Tileable, Imo2004P3.rect
- lemma
Imo2004P3.shape_nonemptyline 510 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.hookShapes,Finset.NonemptyProof uses:
Eq.mpr,LT.lt,Nat,OfNat.ofNat,Finset.card,id,Eq,congrArg,Eq.symm,propext,Finset.card_pos, Imo2004P3.card_hook,Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.false12 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.isHook_nonemptyline 515 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int, Imo2004P3.IsHook,Finset.NonemptyProof uses:
And,Membership.mem, Imo2004P3.hookShapes,Exists,Eq,Finset.image,HAdd.hAdd,Finset.Nonempty.image, Imo2004P3.shape_nonempty,Eq.symm10 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.isHook_cardline 519 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int, Imo2004P3.IsHook,Eq,Nat,Finset.card,OfNat.ofNatProof uses:
And,Membership.mem, Imo2004P3.hookShapes,Exists,Finset.image,HAdd.hAdd,Eq.mpr,id,congrArg,Finset.card_image_of_injective,add_right_cancel, Imo2004P3.card_hook,Eq.symm30 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.hole_imageline 524 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.hookShapes,Eq, Imo2004P3.hole,Finset.image,HAdd.hAdd,Prod.mk,OfNat.ofNatProof uses:
Eq.mpr,id,congrArg, Imo2004P3.hole_translate, Imo2004P3.shape_nonempty, Imo2004P3.hole_shape,Eq.refl16 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.hole_not_mem_of_hookline 528 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int, Imo2004P3.IsHook,Not,Membership.mem, Imo2004P3.holeProof uses:
And, Imo2004P3.hookShapes,Exists,Eq,Finset.image,HAdd.hAdd,Eq.mpr,Prod.mk,OfNat.ofNat,id,congrArg, Imo2004P3.hole_image,False,Eq.mp,propext,Finset.mem_image,add_right_cancel, Imo2004P3.hole_not_mem, Imo2004P3.hole_shape,Eq.symm31 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.hole_mem_rect_of_hookline 540 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Finset,Prod,Int, Imo2004P3.IsHook,LE.le, Imo2004P3.rect,Membership.mem, Imo2004P3.holeProof uses:
And, Imo2004P3.hookShapes,Exists,Eq,Finset.image,HAdd.hAdd,Eq.mpr,Prod.mk,OfNat.ofNat,id,congrArg, Imo2004P3.hole_image,Prod.fst,LT.lt,Prod.snd,propext, Imo2004P3.mem_rect, Imo2004P3.shape_extremes,Iff.mpr,Finset.mem_imageand 5 more27 instances, coercions and auxiliary constants left out.
Tactic trace: 18 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.pair_generalDocumented declaration: pair_general line 560 sourceSource documentation
The pairing lemma in its general form: in any tiling, the partner of a hook (the hook covering its hole) has its hole covered by the first hook, and the two hooks together form a tile.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int, Imo2004P3.IsHook,Disjoint,Membership.mem, Imo2004P3.hole,Or,Exists,And,Union.union, Imo2004P3.IsTileProof uses: Imo2004P3.hookShapes,
Eq,Finset.image,HAdd.hAdd,HSub.hSub,Prod.mk,OfNat.ofNat,Eq.mp,congrArg,propext,Finset.mem_image, Imo2004P3.hole_image,Iff.mpr,Exists.intro,And.intro,Prod.fst,Prod.snd,Prod.ext,id,Eq.mprand 28 more48 instances, coercions and auxiliary constants left out.
Tactic trace: 111 steps
Open to load the checked before-and-after goal states.
lemma pair_general {H₁ H₂ : Finset (ℤ × ℤ)} (h1 : IsHook H₁) (h2 : IsHook H₂) (hd : Disjoint H₁ H₂) (hh : hole H₁ ∈ H₂) (h3 : hole H₂ ∈ H₁ ∨ ∃ H₃ : Finset (ℤ × ℤ), IsHook H₃ ∧ Disjoint H₃ (H₁ ∪ H₂) ∧ hole H₂ ∈ H₃) : hole H₂ ∈ H₁ ∧ IsTile (H₁ ∪ H₂) := by …Mentions: Imo2004P3.IsHook, Imo2004P3.hole, Imo2004P3.IsTile
- lemma
Imo2004P3.tile_decompositionThe main structural fact: any hook-tiling of a rectangle refines to a tiling by the six two-hook tiles line 658 sourceSource documentation
The main structural fact: any hook-tiling of a rectangle refines to a tiling by the six two-hook tiles.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo2004P3.Tileable, Imo2004P3.rect,Exists,Finset,Prod,Int,And,Membership.mem, Imo2004P3.IsTile,Eq,Finset.card,OfNat.ofNat,Ne,Disjoint,Finset.biUnion,idProof uses: Imo2004P3.IsHook,
Eq.mp,congrArg,propext,Finset.mem_biUnion,Decidable.byContradiction,Not,Iff.mp,Finset.disjoint_left, Imo2004P3.hole, Imo2004P3.hole_mem_rect_of_hook,Eq.mpr,LE.le,Finset.subset_biUnion_of_mem,dite,Classical.choose,rfl,Eq.mpr_prop,True,eq_trueand 33 more29 instances, coercions and auxiliary constants left out.
Tactic trace: 118 steps
Open to load the checked before-and-after goal states.
lemma tile_decomposition {m n : ℕ} (h : Tileable (rect m n)) : ∃ Tiles : Finset (Finset (ℤ × ℤ)), (∀ T ∈ Tiles, IsTile T ∧ T.card = 12) ∧ (∀ T₁ ∈ Tiles, ∀ T₂ ∈ Tiles, T₁ ≠ T₂ → Disjoint T₁ T₂) ∧ rect m n = Tiles.biUnion id := by …Mentions: h, Imo2004P3.Tileable, Imo2004P3.rect, Imo2004P3.IsTile
- lemma
Imo2004P3.twelve_dvd_of_tileableline 762 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo2004P3.Tileable, Imo2004P3.rect,Dvd.dvd,OfNat.ofNat,HMul.hMulProof uses:
Finset,Prod,Int,And,Membership.mem, Imo2004P3.IsTile,Eq,Finset.card,Ne,Disjoint,Finset.biUnion,id,Exists, Imo2004P3.tile_decomposition,Finset.sum,Eq.mpr,congrArg,Finset.card_biUnion,Exists.intro,Eq.mpand 28 more45 instances, coercions and auxiliary constants left out.
Tactic trace: 8 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.three_dvd_of_tileableline 771 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo2004P3.Tileable, Imo2004P3.rect,Or,Dvd.dvd,OfNat.ofNatProof uses:
HMul.hMul,dvd_trans,of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl, Imo2004P3.twelve_dvd_of_tileable,Iff.mp,Nat.Prime.dvd_mul,Nat.Prime9 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.tile_paritiesOn every tile, exactly one of the two parity counts (cells in columns divisible by four, cells in rows divisible by four) is odd line 777 sourceSource documentation
On every tile, exactly one of the two parity counts (cells in columns divisible by four, cells in rows divisible by four) is odd.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.tileShapes,Eq,Nat,HAdd.hAdd,HMod.hMod,Finset.card,Finset.filter,Dvd.dvd,OfNat.ofNat,Prod.snd,Finset.image,Prod.fstProof uses:
Or,Eq.mpr,id,congrArg,Finset.filter_image,DecidableEq,Eq.rec,Eq.refl,Finset.filter_congr,rfl,Iff,Iff.intro,Finset.card_image_of_injective,add_right_cancel,List,List.Mem,List.insert,Insert.insert,Prod.mk,Singleton.singletonand 14 more62 instances, coercions and auxiliary constants left out.
Tactic trace: 31 steps
Open to load the checked before-and-after goal states.
lemma tile_parities : ∀ τ ∈ tileShapes, ∀ t : ℤ × ℤ, ((τ.image (· + t)).filter fun c => 4 ∣ c.2).card % 2 + ((τ.image (· + t)).filter fun c => 4 ∣ c.1).card % 2 = 1 := by …Mentions: Imo2004P3.tileShapes
- lemma
Imo2004P3.rect_filter_snd_cardline 808 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset.card,Prod,Int,Finset.filter,Dvd.dvd,OfNat.ofNat,Prod.snd, Imo2004P3.rect,HMul.hMul,Finset.rangeProof uses:
Function.Injective,Prod.mk,Prod.fst,Prod.ext,And.left,Eq.mp,And,Eq.trans,Prod.mk.injEq,congr,congrArg,And.right,Finset,Finset.image,SProd.sprod,Finset.ext,Eq.mpr,Iff,Membership.mem,Existsand 12 more29 instances, coercions and auxiliary constants left out.
Tactic trace: 15 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.rect_filter_fst_cardline 827 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Finset.card,Prod,Int,Finset.filter,Dvd.dvd,OfNat.ofNat,Prod.fst, Imo2004P3.rect,HMul.hMul,Finset.rangeProof uses:
Function.Injective,Prod.mk,Prod.snd,Prod.ext,And.left,Eq.mp,And,Eq.trans,Prod.mk.injEq,congr,congrArg,And.right,Finset,Finset.image,SProd.sprod,Finset.ext,Eq.mpr,Iff,Membership.mem,Existsand 13 more34 instances, coercions and auxiliary constants left out.
Tactic trace: 15 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.mod4_eq_two_ofIf4 ∣ a * bbut4 ∤ aand4 ∤ b, thena ≡ b ≡ 2 (mod 4)line 848 sourceSource documentation
If
4 ∣ a * bbut4 ∤ aand4 ∤ b, thena ≡ b ≡ 2 (mod 4).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Dvd.dvd,OfNat.ofNat,HMul.hMul,Not,And,Eq,HMod.hModProof uses:
dvd_trans,of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl,Decidable.byContradiction,Or,Iff.mp,Nat.Prime.dvd_mul,Nat.Prime,absurd,False,Mathlib.Tactic.Ring.of_eq,HAdd.hAdd,HPow.hPow,Nat.rawCast,Mathlib.Tactic.Ring.Common.mul_congr,Mathlib.Tactic.Ring.Common.atom_pfand 23 more45 instances, coercions and auxiliary constants left out.
Tactic trace: 85 steps
Open to load the checked before-and-after goal states.
lemma mod4_eq_two_of {a b : ℕ} (h4ab : 4 ∣ a * b) (h4a : ¬ 4 ∣ a) (h4b : ¬ 4 ∣ b) : a % 4 = 2 ∧ b % 4 = 2 := by … - lemma
Imo2004P3.card_biUnion'Necessity of the divisibility condition on4line 911 sourceSource documentation
Necessity of the divisibility condition on
4.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem,Ne,Disjoint,Eq,Nat,Finset.card,Finset.biUnion,Finset.sumProof uses:
Finset.card_biUnion13 instances, coercions and auxiliary constants left out.
lemma card_biUnion' {s : Finset (Finset (ℤ × ℤ))} {t : Finset (ℤ × ℤ) → Finset (ℤ × ℤ)} (h : ∀ x ∈ s, ∀ y ∈ s, x ≠ y → Disjoint (t x) (t y)) : (s.biUnion t).card = ∑ x ∈ s, (t x).card := …Mentions: h
- lemma
Imo2004P3.four_dvd_of_tileableline 916 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat, Imo2004P3.Tileable, Imo2004P3.rect,Or,Dvd.dvd,OfNat.ofNatProof uses:
Finset,Prod,Int,And,Membership.mem, Imo2004P3.IsTile,Eq,Finset.card,Ne,Disjoint,Finset.biUnion,id,Exists, Imo2004P3.tile_decomposition,Decidable.byContradiction,Not,False,Iff.mp,not_or,HMul.hMuland 73 more81 instances, coercions and auxiliary constants left out.
Tactic trace: 74 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.not_tileable_of_n_le_twoA rectangle with a side of length at most2cannot be tiled (a hook spans three consecutive rows and three consecutive columns) line 1000 sourceSource documentation
A rectangle with a side of length at most
2cannot be tiled (a hook spans three consecutive rows and three consecutive columns).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LT.lt,OfNat.ofNat,LE.le,Not, Imo2004P3.Tileable, Imo2004P3.rectProof uses:
Finset,Prod,Int,And,Membership.mem, Imo2004P3.IsHook,Ne,Disjoint,Eq,Finset.biUnion,id,False,Finset.Nonempty,Exists.intro,Prod.mk,Eq.mpr,Prod.fst,Prod.snd,congrArg,propextand 34 more35 instances, coercions and auxiliary constants left out.
Tactic trace: 38 steps
Open to load the checked before-and-after goal states.
lemma not_tileable_of_n_le_two {m n : ℕ} (hm : 0 < m) (hn : 0 < n) (hnle : n ≤ 2) : ¬ Tileable (rect m n) := by …Mentions: Imo2004P3.Tileable, Imo2004P3.rect
- def
Imo2004P3.cornerCellThe second cell used in the corner propagation argument for the5 × ncase: it is the cell just next to a tile placed in the corner which cannot be covered by any other tile line 1035 sourceSource documentation
The second cell used in the corner propagation argument for the
5 × ncase: it is the cell just next to a tile placed in the corner which cannot be covered by any other tile.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,IntProof uses:
ite,Not,Membership.mem,Prod.mk,OfNat.ofNat7 instances, coercions and auxiliary constants left out.
def cornerCell (τ₀ : Finset (ℤ × ℤ)) : ℤ × ℤ := …
- lemma
Imo2004P3.cornerCell_not_memline 1039 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.tileShapes,Prod.mk,OfNat.ofNat,Not, Imo2004P3.cornerCellProof uses:
of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl12 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.cornerCell_sndline 1042 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.tileShapes,LE.le,Prod.snd, Imo2004P3.cornerCell,OfNat.ofNatProof uses:
of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl10 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.cornerCell_valline 1045 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.tileShapes,Insert.insert,Prod.mk,OfNat.ofNat,Singleton.singleton, Imo2004P3.cornerCellProof uses:
of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl16 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.corner_checkThe corner propagation check: no tile coveringcornerCell τ₀within the bounds of a five-row strip is disjoint from the corner tileτ₀line 1051 sourceSource documentation
The corner propagation check: no tile covering
cornerCell τ₀within the bounds of a five-row strip is disjoint from the corner tileτ₀.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.tileShapes,Prod.mk,OfNat.ofNat,Finset.image,HSub.hSub, Imo2004P3.cornerCell,HAdd.hAdd,And,LE.le,Prod.fst,LT.lt,Prod.snd,Not,Disjoint16 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
lemma corner_check : ∀ τ₀ ∈ tileShapes, (0, 0) ∈ τ₀ → ∀ τ' ∈ tileShapes, ∀ v ∈ (τ'.image fun c => cornerCell τ₀ - c), (∀ cell ∈ τ'.image (· + v), 0 ≤ cell.1 ∧ cell.1 < 5 ∧ 0 ≤ cell.2 ∧ cell.2 < 6) → ¬ Disjoint (τ'.image (· + v)) τ₀ := by …Mentions: Imo2004P3.tileShapes, Imo2004P3.cornerCell
- lemma
Imo2004P3.tile_boundsline 1058 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.tileShapes,And,LE.le,OfNat.ofNat,Prod.fst,Prod.sndProof uses:
of_decide_eq_true,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl11 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.tile_minline 1062 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Finset,Prod,Int,Membership.mem, Imo2004P3.tileShapes,And,Exists,Eq,Prod.fst,OfNat.ofNat,Prod.sndProof uses:
of_decide_eq_true,id,Bool,Decidable.decide,Bool.true,Eq.refl10 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Imo2004P3.not_tileable_5A5 × nrectangle cannot be tiled line 1066 sourceSource documentation
A
5 × nrectangle cannot be tiled.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LT.lt,OfNat.ofNat,Not, Imo2004P3.Tileable, Imo2004P3.rectProof uses:
Dvd.dvd,Nat.Coprime.dvd_of_dvd_mul_left,of_decide_eq_true,Nat.Coprime,id,Eq,Bool,Decidable.decide,Bool.true,Eq.refl, Imo2004P3.twelve_dvd_of_tileable,LE.le,Nat.le_of_dvd,Finset,Prod,Int,And,Membership.mem, Imo2004P3.IsTile,Finset.cardand 52 more47 instances, coercions and auxiliary constants left out.
Tactic trace: 91 steps
Open to load the checked before-and-after goal states.
lemma not_tileable_5 (n : ℕ) (hn : 0 < n) : ¬ Tileable (rect 5 n) := by …
Mentions: Imo2004P3.Tileable, Imo2004P3.rect
- def
Imo2004P3.GoodRectThe predicate characterising the rectangles that can be tiled by hooks line 1151 sourceSource documentation
The predicate characterising the rectangles that can be tiled by hooks.
no axioms what this means
Statement uses:
NatProof uses:
And,Ne,OfNat.ofNat,Or,Dvd.dvd2 instances, coercions and auxiliary constants left out.
def GoodRect (m n : ℕ) : Prop := …
- determine
Imo2004P3.answerline 1156 sourceno axioms what this means
Statement uses:
Set,Prod,NatProof uses:
Set.ofPred, Imo2004P3.GoodRect,Prod.fst,Prod.snd - problem
Imo2004P3.imo2004_p3line 1159 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,LT.lt,OfNat.ofNat,Iff, Imo2004P3.Tileable, Imo2004P3.rect,Membership.mem,Prod,Set, Imo2004P3.answer,Prod.mkProof uses:
Iff.intro,Or,Dvd.dvd, Imo2004P3.three_dvd_of_tileable, Imo2004P3.four_dvd_of_tileable,id,And.intro,Ne,And,Eq, Imo2004P3.not_tileable_of_n_le_two,Mathlib.Meta.NormNum.isNat_lt_true,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Bool,Bool.false,Mathlib.Meta.NormNum.isNat_le_true,Bool.true, Imo2004P3.tileable_transpose,Eq.mpand 6 more14 instances, coercions and auxiliary constants left out.
Tactic trace: 44 steps
Open to load the checked before-and-after goal states.