IMO 2010 C4 (P5) #
In the board, $N = 6$ stacks of coins are given with stack $k < N$ containing one coin each. At any time, one of the following operations are done:
- Remove a coin from a stack $k + 1 < N$ and add two coins to stack $k$.
- Remove a coin from a stack $k + 2 < N$ and swap the content of the stacks $k$ and $k + 1$. Is it possible that, after some operations, we are left with stack $0$ containing $A = 2010^{2010^{2010}}$ coins and all other stacks empty?
Iteration of two-power #
Iteration of two-power
Equations
- IMOSL.IMO2010C4.P seed 0 = seed
- IMOSL.IMO2010C4.P seed n.succ = IMOSL.IMO2010C4.P (2 ^ seed) n
Instances For
More lemmas on log2 #
Iteration of log2 #
Equations
- IMOSL.IMO2010C4.log2_iter seed 0 = seed
- IMOSL.IMO2010C4.log2_iter seed n.succ = IMOSL.IMO2010C4.log2_iter seed.log2 n
Instances For
- type1_move (k m : Nat) : isReachable [k + 1, m] [k, m + 2]
- type2_move (k m n : Nat) : isReachable [k + 1, m, n] [k, n, m]
- refl (l : List Nat) : isReachable l l
- trans {l₁ l₂ l₃ : List Nat} (h : isReachable l₁ l₂) : isReachable l₂ l₃ → isReachable l₁ l₃
- append_right {l₁ l₂ : List Nat} (h : isReachable l₁ l₂) (l : List Nat) : isReachable (l₁ ++ l) (l₂ ++ l)
- cons_left {l₁ l₂ : List Nat} (h : isReachable l₁ l₂) (k : Nat) : isReachable (k :: l₁) (k :: l₂)
Instances For
General observation #
theorem
IMOSL.IMO2010C4.isReachable.append_left
{l₁ l₂ : List Nat}
(h : isReachable l₁ l₂)
(l : List Nat)
:
isReachable (l ++ l₁) (l ++ l₂)
theorem
IMOSL.IMO2010C4.isReachable.append_left_right
{l₁ l₂ : List Nat}
(h : isReachable l₁ l₂)
(l l' : List Nat)
:
isReachable (l ++ l₁ ++ l') (l ++ l₂ ++ l')
Reachability of specific states #
theorem
IMOSL.IMO2010C4.isReachable.replicate_ones_to_3₀
(n : Nat)
:
isReachable (List.replicate (n + 2) 1) (0 :: 3 :: List.replicate n 0)
theorem
IMOSL.IMO2010C4.isReachable.replicate_ones_to_3₁
(n : Nat)
:
isReachable (List.replicate (n + 2) 1) (0 :: 3 :: List.replicate n 1)
theorem
IMOSL.IMO2010C4.isReachable.six_stack_of_bdd
{N : Nat}
{L : List Nat}
{A : Nat}
(hN : 2 ≤ N)
(hL₀ : isReachable L (0 :: N :: List.replicate 4 0))
(hL₁ : isReachable L (0 :: N :: List.replicate 4 1))
(hA : A < 4 * P 1 (P 1 N))
:
isReachable L (List.replicate 5 0 ++ [A])
theorem
IMOSL.IMO2010C4.isReachable.six_stack_of_bdd_log
{N : Nat}
{L : List Nat}
{A : Nat}
(hN : 2 ≤ N)
(hL₀ : isReachable L (0 :: N :: List.replicate 4 0))
(hL₁ : isReachable L (0 :: N :: List.replicate 4 1))
(hA : log2_iter (A / 4) (P 1 N) = 0)
:
isReachable L (List.replicate 5 0 ++ [A])
theorem
IMOSL.IMO2010C4.isReachable.replicate6_ones_to_A
{A : Nat}
(hA : log2_iter (A / 4) 16 = 0)
:
isReachable (List.replicate 6 1) (List.replicate 5 0 ++ [A])
Final solution #
theorem
IMOSL.IMO2010C4.final_solution :
isReachable (List.replicate 6 1) (List.replicate 5 0 ++ [2010 ^ 2010 ^ 2010])
Final solution