internlm/Lean-Github huggingface dataset:
Theorem: Imo2009P6.imo2009_p6_aux1
Proof state before:
n : ℕ
ih :
  ∀ m < n,
    0 < m →
      ∀ (a : Fin m → ℤ),
        Function.Injective a →
          (∀ (i : Fin m), 0 < a i) →
            (∀ (i j : Fin m), i < j → a i < a j) →
              ∀ (M : Finset ℤ),
                (∀ m ∈ M, 0 < m) →
                  M.card ≤ m - 1 →
                    ∑ i : Fin m, a i ∉ M →
                      ∃ p, ∀ (i : Fin m), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x✝ : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x✝ ∉ M
y : ℤ
hy1 : x✝ < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x✝) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
f : Fin n' ↪ Fin n := embedFinLE ⋯
x : Fin n
left✝ : x ∈ Finset.univ
h41 : ↑x < n - 1
⊢ ↑x < n'
Tactic:
omega
Proof state after:
no goals
Theorem: Imo2009P6.imo2009_p6_aux1
Proof state before:
n : ℕ
ih :
  ∀ m < n,
    0 < m →
      ∀ (a : Fin m → ℤ),
        Function.Injective a →
          (∀ (i : Fin m), 0 < a i) →
            (∀ (i j : Fin m), i < j → a i < a j) →
              ∀ (M : Finset ℤ),
                (∀ m ∈ M, 0 < m) →
                  M.card ≤ m - 1 →
                    ∑ i : Fin m, a i ∉ M →
                      ∃ p, ∀ (i : Fin m), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
⊢ n' < n
Tactic:
omega
Proof state after:
no goals
Theorem: Imo2009P6.imo2009_p6_aux1
Proof state before:
n : ℕ
ih :
  ∀ m < n,
    0 < m →
      ∀ (a : Fin m → ℤ),
        Function.Injective a →
          (∀ (i : Fin m), 0 < a i) →
            (∀ (i j : Fin m), i < j → a i < a j) →
              ∀ (M : Finset ℤ),
                (∀ m ∈ M, 0 < m) →
                  M.card ≤ m - 1 →
                    ∑ i : Fin m, a i ∉ M →
                      ∃ p, ∀ (i : Fin m), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
⊢ 0 < n'
Tactic:
omega
Proof state after:
no goals
Theorem: Imo2009P6.imo2009_p6_aux1
Proof state before:
n : ℕ
ih :
  ∀ m < n,
    0 < m →
      ∀ (a : Fin m → ℤ),
        Function.Injective a →
          (∀ (i : Fin m), 0 < a i) →
            (∀ (i j : Fin m), i < j → a i < a j) →
              ∀ (M : Finset ℤ),
                (∀ m ∈ M, 0 < m) →
                  M.card ≤ m - 1 →
                    ∑ i : Fin m, a i ∉ M →
                      ∃ p, ∀ (i : Fin m), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
⊢ M'.card ≤ n' - 1
Tactic:
omega
Proof state after:
no goals
Theorem: Imo2009P6.imo2009_p6_aux1
Proof state before:
case ind.inr.inl.intro.intro.inr.intro.inl
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
⊢ ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
Tactic:
let i' : Fin n' := ⟨i.val, h30⟩
Proof state after:
case ind.inr.inl.intro.intro.inr.intro.inl
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
⊢ ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
Theorem: Imo2009P6.imo2009_p6_aux1
Proof state before:
case ind.inr.inl.intro.intro.inr.intro.inl
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
⊢ ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
Tactic:
have h31 := hp i'
Proof state after:
case ind.inr.inl.intro.intro.inr.intro.inl
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
h31 : ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) ∉ M'
⊢ ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
Theorem: Imo2009P6.imo2009_p6_aux1
Proof state before:
case ind.inr.inl.intro.intro.inr.intro.inl
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
h31 : ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) ∉ M'
⊢ ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
Tactic:
rw [Finset.mem_filter] at h31
Proof state after:
case ind.inr.inl.intro.intro.inr.intro.inl
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
h31 :
  ¬(∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) ∈ M ∧
      ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) ≤ x)
⊢ ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
Theorem: Imo2009P6.imo2009_p6_aux1
Proof state before:
case ind.inr.inl.intro.intro.inr.intro.inl
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
h31 :
  ¬(∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) ∈ M ∧
      ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) ≤ x)
⊢ ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
Tactic:
have h35 : n' ≤ n := Nat.sub_le n 1
Proof state after:
case ind.inr.inl.intro.intro.inr.intro.inl
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
h31 :
  ¬(∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) ∈ M ∧
      ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) ≤ x)
h35 : n' ≤ n
⊢ ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
Theorem: Imo2009P6.imo2009_p6_aux1
Proof state before:
case ind.inr.inl.intro.intro.inr.intro.inl
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
h31 :
  ¬(∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) ∈ M ∧
      ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) ≤ x)
h35 : n' ≤ n
h33 :
  ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) =
    ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j)
⊢ ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
Tactic:
rw [h33] at h31
Proof state after:
case ind.inr.inl.intro.intro.inr.intro.inl
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
h31 :
  ¬(∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∈ M ∧
      ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ≤ x)
h35 : n' ≤ n
h33 :
  ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) =
    ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j)
⊢ ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
Theorem: Imo2009P6.imo2009_p6_aux1
Proof state before:
case ind.inr.inl.intro.intro.inr.intro.inl
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
h31 :
  ¬(∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∈ M ∧
      ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ≤ x)
h35 : n' ≤ n
h33 :
  ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) =
    ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j)
h34 : ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ≤ x
⊢ ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∉ M
Tactic:
intro H
Proof state after:
case ind.inr.inl.intro.intro.inr.intro.inl
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
h31 :
  ¬(∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∈ M ∧
      ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ≤ x)
h35 : n' ≤ n
h33 :
  ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) =
    ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j)
h34 : ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ≤ x
H : ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∈ M
⊢ False
Theorem: Imo2009P6.imo2009_p6_aux1
Proof state before:
case ind.inr.inl.intro.intro.inr.intro.inl
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
h31 :
  ¬(∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∈ M ∧
      ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ≤ x)
h35 : n' ≤ n
h33 :
  ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) =
    ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j)
h34 : ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ≤ x
H : ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∈ M
⊢ False
Tactic:
exact (h31 ⟨H, h34⟩).elim
Proof state after:
no goals
Theorem: Imo2009P6.imo2009_p6_aux1
Proof state before:
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
h31 :
  ¬(∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) ∈ M ∧
      ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) ≤ x)
h35 : n' ≤ n
⊢ ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) =
    ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j)
Tactic:
sorry
Proof state after:
no goals
Theorem: Imo2009P6.imo2009_p6_aux1
Proof state before:
n : ℕ
hn : 0 < n
a : Fin n → ℤ
ainj : Function.Injective a
apos : ∀ (i : Fin n), 0 < a i
asorted : ∀ (i j : Fin n), i < j → a i < a j
M : Finset ℤ
Mpos : ∀ m ∈ M, 0 < m
Mcard : M.card ≤ n - 1
x : ℤ := ∑ i ∈ Finset.filter (fun x => ↑x < n - 1) Finset.univ, a i
h1 : x ∉ M
y : ℤ
hy1 : x < y
hy2 : y ∈ M
M' : Finset ℤ := Finset.filter (fun z => z ≤ x) M
hyM' : y ∉ M'
h3 : M'.card ≤ n - 2
hM : ∑ i : Fin n, a i ∉ M
h7 : M'.card > 0
n' : ℕ := n - 1
a' : Fin n' → ℤ := fun i => a ⟨↑i, ⋯⟩
ainj' : Function.Injective a'
apos' : ∀ (i : Fin n'), 0 < a' i
asorted' : ∀ (i j : Fin n'), i < j → a' i < a' j
Mpos' : ∀ m ∈ M', 0 < m
hM' : ∑ i : Fin n', a' i ∉ M'
p' : Equiv.Perm (Fin n')
hp : ∀ (i : Fin n'), ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a' (p' j) ∉ M'
p : Equiv.Perm (Fin n) := extendPerm p' ⋯
i : Fin n
h30 : ↑i < n'
i' : Fin n' := ⟨↑i, h30⟩
h31 :
  ¬(∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ∈ M ∧
      ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ≤ x)
h35 : n' ≤ n
h33 :
  ∑ j ∈ Finset.filter (fun x => x ≤ i') Finset.univ, a' (p' j) =
    ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j)
⊢ ∑ j ∈ Finset.filter (fun x => x ≤ i) Finset.univ, a (p j) ≤ x
Tactic:
sorry
Proof state after:
no goals