1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Fin.insertNth_zero
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: refine insertNth_eq_iff.2 ⟨by simp, ?_⟩
state_before: m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
x : α 0
p : (j : Fin n) → α (succAbove 0 j)
⊢ insertNth 0 x p = cons x fun j => _root_.cast ⋯ (p j)
state_after: m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
x : α 0
p : (j : Fin n) → α (succAbove 0 j)
⊢ p = fun j => cons x (fun j => _root_.cast ⋯ (p j)) (succAbove 0 j)

tactic: ext j
state_before: m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
x : α 0
p : (j : Fin n) → α (succAbove 0 j)
⊢ p = fun j => cons x (fun j => _root_.cast ⋯ (p j)) (succAbove 0 j)
state_after: case h
m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
x : α 0
p : (j : Fin n) → α (succAbove 0 j)
j : Fin n
⊢ p j = cons x (fun j => _root_.cast ⋯ (p j)) (succAbove 0 j)

tactic: convert (cons_succ x p j).symm
state_before: case h
m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
x : α 0
p : (j : Fin n) → α (succAbove 0 j)
j : Fin n
⊢ p j = cons x (fun j => _root_.cast ⋯ (p j)) (succAbove 0 j)
state_after: no goals

tactic: simp
state_before: m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
x : α 0
p : (j : Fin n) → α (succAbove 0 j)
⊢ cons x (fun j => _root_.cast ⋯ (p j)) 0 = x
state_after: no goals
Theorem: Finset.powersetCard_eq_empty
File: Mathlib/Data/Finset/Powerset.lean

tactic: refine ⟨?_, fun h ↦ card_eq_zero.1 $ by rw [card_powersetCard, Nat.choose_eq_zero_of_lt h]⟩
state_before: α : Type u_1
s✝ t✝ : Finset α
n : ℕ
s t : Finset α
⊢ powersetCard n s = ∅ ↔ s.card < n
state_after: α : Type u_1
s✝ t✝ : Finset α
n : ℕ
s t : Finset α
⊢ powersetCard n s = ∅ → s.card < n

tactic: contrapose!
state_before: α : Type u_1
s✝ t✝ : Finset α
n : ℕ
s t : Finset α
⊢ powersetCard n s = ∅ → s.card < n
state_after: α : Type u_1
s✝ t✝ : Finset α
n : ℕ
s t : Finset α
⊢ n ≤ s.card → powersetCard n s ≠ ∅

tactic: exact fun h ↦ nonempty_iff_ne_empty.1 $ (exists_subset_card_eq h).imp $ by simp
state_before: α : Type u_1
s✝ t✝ : Finset α
n : ℕ
s t : Finset α
⊢ n ≤ s.card → powersetCard n s ≠ ∅
state_after: no goals

tactic: rw [card_powersetCard, Nat.choose_eq_zero_of_lt h]
state_before: α : Type u_1
s✝ t✝ : Finset α
n : ℕ
s t : Finset α
h : s.card < n
⊢ (powersetCard n s).card = 0
state_after: no goals

tactic: simp
state_before: α : Type u_1
s✝ t✝ : Finset α
n : ℕ
s t : Finset α
h : n ≤ s.card
⊢ ∀ (a : Finset α), a ⊆ s ∧ a.card = n → a ∈ powersetCard n s
state_after: no goals
Theorem: Rat.inv_intCast_den_of_pos
File: Mathlib/Data/Rat/Lemmas.lean

tactic: rw [← ofInt_eq_cast, ofInt, mk_eq_divInt, Rat.inv_divInt', divInt_eq_div, Nat.cast_one]
state_before: a : ℤ
ha0 : 0 < a
⊢ ↑(↑a)⁻¹.den = a
state_after: a : ℤ
ha0 : 0 < a
⊢ ↑(↑1 / ↑a).den = a

tactic: apply den_div_eq_of_coprime ha0
state_before: a : ℤ
ha0 : 0 < a
⊢ ↑(↑1 / ↑a).den = a
state_after: a : ℤ
ha0 : 0 < a
⊢ (Int.natAbs 1).Coprime a.natAbs

tactic: rw [Int.natAbs_one]
state_before: a : ℤ
ha0 : 0 < a
⊢ (Int.natAbs 1).Coprime a.natAbs
state_after: a : ℤ
ha0 : 0 < a
⊢ Nat.Coprime 1 a.natAbs

tactic: exact Nat.coprime_one_left _
state_before: a : ℤ
ha0 : 0 < a
⊢ Nat.Coprime 1 a.natAbs
state_after: no goals
Theorem: NormedAddGroupHom.Equalizer.map_id
File: Mathlib/Analysis/Normed/Group/Hom.lean

tactic: ext
state_before: V : Type u_1
W : Type u_2
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type u_5
inst✝⁷ : SeminormedAddCommGroup V
inst✝⁶ : SeminormedAddCommGroup W
inst✝⁵ : SeminormedAddCommGroup V₁
inst✝⁴ : SeminormedAddCommGroup V₂
inst✝³ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V W
W₁ : Type u_6
W₂ : Type u_7
W₃ : Type u_8
inst✝² : SeminormedAddCommGroup W₁
inst✝¹ : SeminormedAddCommGroup W₂
inst✝ : SeminormedAddCommGroup W₃
g : NormedAddGroupHom V W
f₁ g₁ : NormedAddGroupHom V₁ W₁
f₂ g₂ : NormedAddGroupHom V₂ W₂
f₃ g₃ : NormedAddGroupHom V₃ W₃
φ : NormedAddGroupHom V₁ V₂
ψ : NormedAddGroupHom W₁ W₂
φ' : NormedAddGroupHom V₂ V₃
ψ' : NormedAddGroupHom W₂ W₃
⊢ map (id V₁) (id W₁) ⋯ ⋯ = id ↥(f₁.equalizer g₁)
state_after: case H.a
V : Type u_1
W : Type u_2
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type u_5
inst✝⁷ : SeminormedAddCommGroup V
inst✝⁶ : SeminormedAddCommGroup W
inst✝⁵ : SeminormedAddCommGroup V₁
inst✝⁴ : SeminormedAddCommGroup V₂
inst✝³ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V W
W₁ : Type u_6
W₂ : Type u_7
W₃ : Type u_8
inst✝² : SeminormedAddCommGroup W₁
inst✝¹ : SeminormedAddCommGroup W₂
inst✝ : SeminormedAddCommGroup W₃
g : NormedAddGroupHom V W
f₁ g₁ : NormedAddGroupHom V₁ W₁
f₂ g₂ : NormedAddGroupHom V₂ W₂
f₃ g₃ : NormedAddGroupHom V₃ W₃
φ : NormedAddGroupHom V₁ V₂
ψ : NormedAddGroupHom W₁ W₂
φ' : NormedAddGroupHom V₂ V₃
ψ' : NormedAddGroupHom W₂ W₃
x✝ : ↥(f₁.equalizer g₁)
⊢ ↑((map (id V₁) (id W₁) ⋯ ⋯) x✝) = ↑((id ↥(f₁.equalizer g₁)) x✝)

tactic: rfl
state_before: case H.a
V : Type u_1
W : Type u_2
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type u_5
inst✝⁷ : SeminormedAddCommGroup V
inst✝⁶ : SeminormedAddCommGroup W
inst✝⁵ : SeminormedAddCommGroup V₁
inst✝⁴ : SeminormedAddCommGroup V₂
inst✝³ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V W
W₁ : Type u_6
W₂ : Type u_7
W₃ : Type u_8
inst✝² : SeminormedAddCommGroup W₁
inst✝¹ : SeminormedAddCommGroup W₂
inst✝ : SeminormedAddCommGroup W₃
g : NormedAddGroupHom V W
f₁ g₁ : NormedAddGroupHom V₁ W₁
f₂ g₂ : NormedAddGroupHom V₂ W₂
f₃ g₃ : NormedAddGroupHom V₃ W₃
φ : NormedAddGroupHom V₁ V₂
ψ : NormedAddGroupHom W₁ W₂
φ' : NormedAddGroupHom V₂ V₃
ψ' : NormedAddGroupHom W₂ W₃
x✝ : ↥(f₁.equalizer g₁)
⊢ ↑((map (id V₁) (id W₁) ⋯ ⋯) x✝) = ↑((id ↥(f₁.equalizer g₁)) x✝)
state_after: no goals
Theorem: Matroid.Indep.exists_basis_subset_union_basis
File: Mathlib/Data/Matroid/Restrict.lean

tactic: obtain ⟨I', hI', hII', hI'IJ⟩ :=
  (hI.indep_restrict_of_subset hIX).exists_base_subset_union_base (Basis.base_restrict hJ)
state_before: α : Type u_1
M : Matroid α
R I J✝ X Y B J : Set α
e : α
hI : M.Indep I
hIX : I ⊆ X
hJ : M.Basis J X
⊢ ∃ I', M.Basis I' X ∧ I ⊆ I' ∧ I' ⊆ I ∪ J
state_after: case intro.intro.intro
α : Type u_1
M : Matroid α
R I J✝ X Y B J : Set α
e : α
hI : M.Indep I
hIX : I ⊆ X
hJ : M.Basis J X
I' : Set α
hI' : (M ↾ X).Base I'
hII' : I ⊆ I'
hI'IJ : I' ⊆ I ∪ J
⊢ ∃ I', M.Basis I' X ∧ I ⊆ I' ∧ I' ⊆ I ∪ J

tactic: rw [base_restrict_iff] at hI'
state_before: case intro.intro.intro
α : Type u_1
M : Matroid α
R I J✝ X Y B J : Set α
e : α
hI : M.Indep I
hIX : I ⊆ X
hJ : M.Basis J X
I' : Set α
hI' : (M ↾ X).Base I'
hII' : I ⊆ I'
hI'IJ : I' ⊆ I ∪ J
⊢ ∃ I', M.Basis I' X ∧ I ⊆ I' ∧ I' ⊆ I ∪ J
state_after: case intro.intro.intro
α : Type u_1
M : Matroid α
R I J✝ X Y B J : Set α
e : α
hI : M.Indep I
hIX : I ⊆ X
hJ : M.Basis J X
I' : Set α
hI' : M.Basis I' X
hII' : I ⊆ I'
hI'IJ : I' ⊆ I ∪ J
⊢ ∃ I', M.Basis I' X ∧ I ⊆ I' ∧ I' ⊆ I ∪ J

tactic: exact ⟨I', hI', hII', hI'IJ⟩
state_before: case intro.intro.intro
α : Type u_1
M : Matroid α
R I J✝ X Y B J : Set α
e : α
hI : M.Indep I
hIX : I ⊆ X
hJ : M.Basis J X
I' : Set α
hI' : M.Basis I' X
hII' : I ⊆ I'
hI'IJ : I' ⊆ I ∪ J
⊢ ∃ I', M.Basis I' X ∧ I ⊆ I' ∧ I' ⊆ I ∪ J
state_after: no goals
Theorem: SimpleGraph.cliqueFreeOn_singleton
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

tactic: obtain _ | _ | n := n <;>
  simp [CliqueFreeOn, isNClique_iff, ← subset_singleton_iff', (Nat.succ_ne_zero _).symm]
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s s₁ s₂ : Set α
t : Finset α
a b : α
m n : ℕ
⊢ G.CliqueFreeOn {a} n ↔ 1 < n
state_after: no goals
Theorem: CategoryTheory.ComposableArrows.Exact.exact'
File: Mathlib/Algebra/Homology/ExactSequence.lean

tactic: subst hij hjk
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
n : ℕ
S : ComposableArrows C n
hS : S.Exact
i j k : ℕ
hij : autoParam (i + 1 = j) _auto✝
hjk : autoParam (j + 1 = k) _auto✝
hk : autoParam (k ≤ n) _auto✝
⊢ (S.sc' ⋯ i j k ⋯ ⋯ ⋯).Exact
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
n : ℕ
S : ComposableArrows C n
hS : S.Exact
i : ℕ
hk : autoParam (i + 1 + 1 ≤ n) _auto✝
⊢ (S.sc' ⋯ i (i + 1) (i + 1 + 1) ⋯ ⋯ ⋯).Exact

tactic: exact hS.exact i hk
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
n : ℕ
S : ComposableArrows C n
hS : S.Exact
i : ℕ
hk : autoParam (i + 1 + 1 ≤ n) _auto✝
⊢ (S.sc' ⋯ i (i + 1) (i + 1 + 1) ⋯ ⋯ ⋯).Exact
state_after: no goals
Theorem: ext_inner_left
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [← sub_eq_zero, ← @inner_self_eq_zero 𝕜, inner_sub_right, sub_eq_zero, h (x - y)]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : E
h : ∀ (v : E), ⟪v, x⟫_𝕜 = ⟪v, y⟫_𝕜
⊢ x = y
state_after: no goals
Theorem: Int.ModEq.add
File: Mathlib/Data/Int/ModEq.lean

tactic: convert dvd_add h₁.dvd h₂.dvd using 1
state_before: m n a b c d : ℤ
h₁ : a ≡ b [ZMOD n]
h₂ : c ≡ d [ZMOD n]
⊢ n ∣ b + d - (a + c)
state_after: case h.e'_4
m n a b c d : ℤ
h₁ : a ≡ b [ZMOD n]
h₂ : c ≡ d [ZMOD n]
⊢ b + d - (a + c) = b - a + (d - c)

tactic: abel
state_before: case h.e'_4
m n a b c d : ℤ
h₁ : a ≡ b [ZMOD n]
h₂ : c ≡ d [ZMOD n]
⊢ b + d - (a + c) = b - a + (d - c)
state_after: no goals
Theorem: parallelepiped_basis_eq
File: Mathlib/MeasureTheory/Measure/Haar/OfBasis.lean

tactic: classical
ext x
simp_rw [mem_parallelepiped_iff, mem_setOf_eq, b.ext_elem_iff, _root_.map_sum,
  _root_.map_smul, Finset.sum_apply', Basis.repr_self, Finsupp.smul_single, smul_eq_mul,
  mul_one, Finsupp.single_apply, Finset.sum_ite_eq', Finset.mem_univ, ite_true, mem_Icc,
  Pi.le_def, Pi.zero_apply, Pi.one_apply, ← forall_and]
aesop
state_before: ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι'
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : AddCommGroup F
inst✝ : Module ℝ F
b : Basis ι ℝ E
⊢ parallelepiped ⇑b = {x | ∀ (i : ι), (b.repr x) i ∈ Icc 0 1}
state_after: no goals

tactic: ext x
state_before: ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι'
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : AddCommGroup F
inst✝ : Module ℝ F
b : Basis ι ℝ E
⊢ parallelepiped ⇑b = {x | ∀ (i : ι), (b.repr x) i ∈ Icc 0 1}
state_after: case h
ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι'
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : AddCommGroup F
inst✝ : Module ℝ F
b : Basis ι ℝ E
x : E
⊢ x ∈ parallelepiped ⇑b ↔ x ∈ {x | ∀ (i : ι), (b.repr x) i ∈ Icc 0 1}

tactic: simp_rw [mem_parallelepiped_iff, mem_setOf_eq, b.ext_elem_iff, _root_.map_sum,
  _root_.map_smul, Finset.sum_apply', Basis.repr_self, Finsupp.smul_single, smul_eq_mul,
  mul_one, Finsupp.single_apply, Finset.sum_ite_eq', Finset.mem_univ, ite_true, mem_Icc,
  Pi.le_def, Pi.zero_apply, Pi.one_apply, ← forall_and]
state_before: case h
ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι'
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : AddCommGroup F
inst✝ : Module ℝ F
b : Basis ι ℝ E
x : E
⊢ x ∈ parallelepiped ⇑b ↔ x ∈ {x | ∀ (i : ι), (b.repr x) i ∈ Icc 0 1}
state_after: case h
ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι'
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : AddCommGroup F
inst✝ : Module ℝ F
b : Basis ι ℝ E
x : E
⊢ (∃ t, ∀ (x_1 : ι), (0 ≤ t x_1 ∧ t x_1 ≤ 1) ∧ (b.repr x) x_1 = t x_1) ↔ ∀ (i : ι), 0 ≤ (b.repr x) i ∧ (b.repr x) i ≤ 1

tactic: aesop
state_before: case h
ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι'
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : AddCommGroup F
inst✝ : Module ℝ F
b : Basis ι ℝ E
x : E
⊢ (∃ t, ∀ (x_1 : ι), (0 ≤ t x_1 ∧ t x_1 ≤ 1) ∧ (b.repr x) x_1 = t x_1) ↔ ∀ (i : ι), 0 ≤ (b.repr x) i ∧ (b.repr x) i ≤ 1
state_after: no goals
Theorem: Finset.range_sdiff_zero
File: Mathlib/Data/Finset/Image.lean

tactic: induction' n with k hk
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
⊢ range (n + 1) \ {0} = image Nat.succ (range n)
state_after: case zero
α : Type u_1
β : Type u_2
γ : Type u_3
⊢ range (0 + 1) \ {0} = image Nat.succ (range 0)

case succ
α : Type u_1
β : Type u_2
γ : Type u_3
k : ℕ
hk : range (k + 1) \ {0} = image Nat.succ (range k)
⊢ range (k + 1 + 1) \ {0} = image Nat.succ (range (k + 1))

tactic: conv_rhs => rw [range_succ]
state_before: case succ
α : Type u_1
β : Type u_2
γ : Type u_3
k : ℕ
hk : range (k + 1) \ {0} = image Nat.succ (range k)
⊢ range (k + 1 + 1) \ {0} = image Nat.succ (range (k + 1))
state_after: case succ
α : Type u_1
β : Type u_2
γ : Type u_3
k : ℕ
hk : range (k + 1) \ {0} = image Nat.succ (range k)
⊢ range (k + 1 + 1) \ {0} = image Nat.succ (insert k (range k))

tactic: rw [range_succ, image_insert, ← hk, insert_sdiff_of_not_mem]
state_before: case succ
α : Type u_1
β : Type u_2
γ : Type u_3
k : ℕ
hk : range (k + 1) \ {0} = image Nat.succ (range k)
⊢ range (k + 1 + 1) \ {0} = image Nat.succ (insert k (range k))
state_after: case succ.h
α : Type u_1
β : Type u_2
γ : Type u_3
k : ℕ
hk : range (k + 1) \ {0} = image Nat.succ (range k)
⊢ k + 1 ∉ {0}

tactic: simp
state_before: case succ.h
α : Type u_1
β : Type u_2
γ : Type u_3
k : ℕ
hk : range (k + 1) \ {0} = image Nat.succ (range k)
⊢ k + 1 ∉ {0}
state_after: no goals

tactic: simp
state_before: case zero
α : Type u_1
β : Type u_2
γ : Type u_3
⊢ range (0 + 1) \ {0} = image Nat.succ (range 0)
state_after: no goals
Theorem: Multiset.Ioc_self
File: Mathlib/Order/Interval/Multiset.lean

tactic: rw [Ioc, Finset.Ioc_self, Finset.empty_val]
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ Ioc a a = 0
state_after: no goals
Theorem: Rat.mul_zero
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

tactic: simp [mul_def]
state_before: a : Rat
⊢ a * 0 = 0
state_after: no goals
Theorem: Finset.normalize_lcm
File: Mathlib/Algebra/GCDMonoid/Finset.lean

tactic: simp [lcm_def]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
⊢ normalize (s.lcm f) = s.lcm f
state_after: no goals
Theorem: Finset.prod_sdiff_eq_prod_sdiff_iff
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [← prod_union disjoint_sdiff_self_left, ← prod_union disjoint_sdiff_self_left,
  sdiff_union_self_eq_union, sdiff_union_self_eq_union, union_comm]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝¹ : DecidableEq ι
inst✝ : CancelCommMonoid α
s t : Finset ι
f : ι → α
⊢ (∏ i ∈ t \ s, f i) * ∏ i ∈ s, f i = (∏ i ∈ s \ t, f i) * ∏ i ∈ t, f i
state_after: no goals
Theorem: div_le_one_of_neg
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [div_le_iff_of_neg hb, one_mul]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hb : b < 0
⊢ a / b ≤ 1 ↔ b ≤ a
state_after: no goals
Theorem: affineSpan_convexHull
File: Mathlib/Analysis/Convex/Hull.lean

tactic: refine le_antisymm ?_ (affineSpan_mono 𝕜 (subset_convexHull 𝕜 s))
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s : Set E
⊢ affineSpan 𝕜 ((convexHull 𝕜) s) = affineSpan 𝕜 s
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s : Set E
⊢ affineSpan 𝕜 ((convexHull 𝕜) s) ≤ affineSpan 𝕜 s

tactic: rw [affineSpan_le]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s : Set E
⊢ affineSpan 𝕜 ((convexHull 𝕜) s) ≤ affineSpan 𝕜 s
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s : Set E
⊢ (convexHull 𝕜) s ⊆ ↑(affineSpan 𝕜 s)

tactic: exact convexHull_subset_affineSpan s
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s : Set E
⊢ (convexHull 𝕜) s ⊆ ↑(affineSpan 𝕜 s)
state_after: no goals
Theorem: commute_star_comm
File: Mathlib/Algebra/Star/Basic.lean

tactic: rw [← commute_star_star, star_star]
state_before: R : Type u
inst✝¹ : Mul R
inst✝ : StarMul R
x y : R
⊢ Commute (star x) y ↔ Commute x (star y)
state_after: no goals
Theorem: Real.tendsto_exp_atTop
File: Mathlib/Analysis/SpecialFunctions/Exp.lean

tactic: have A : Tendsto (fun x : ℝ => x + 1) atTop atTop :=
  tendsto_atTop_add_const_right atTop 1 tendsto_id
state_before: α : Type u_1
x y z : ℝ
l : Filter α
⊢ Tendsto rexp atTop atTop
state_after: α : Type u_1
x y z : ℝ
l : Filter α
A : Tendsto (fun x => x + 1) atTop atTop
⊢ Tendsto rexp atTop atTop

tactic: have B : ∀ᶠ x in atTop, x + 1 ≤ exp x := eventually_atTop.2 ⟨0, fun x _ => add_one_le_exp x⟩
state_before: α : Type u_1
x y z : ℝ
l : Filter α
A : Tendsto (fun x => x + 1) atTop atTop
⊢ Tendsto rexp atTop atTop
state_after: α : Type u_1
x y z : ℝ
l : Filter α
A : Tendsto (fun x => x + 1) atTop atTop
B : ∀ᶠ (x : ℝ) in atTop, x + 1 ≤ rexp x
⊢ Tendsto rexp atTop atTop

tactic: exact tendsto_atTop_mono' atTop B A
state_before: α : Type u_1
x y z : ℝ
l : Filter α
A : Tendsto (fun x => x + 1) atTop atTop
B : ∀ᶠ (x : ℝ) in atTop, x + 1 ≤ rexp x
⊢ Tendsto rexp atTop atTop
state_after: no goals
Theorem: CategoryTheory.Limits.snd_of_isColimit
File: Mathlib/CategoryTheory/Preadditive/Biproducts.lean

tactic: apply ht.uniq (BinaryCofan.mk 0 (𝟙 Y))
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
X Y : C
t : BinaryBicone X Y
ht : IsColimit t.toCocone
⊢ t.snd = ht.desc (BinaryCofan.mk 0 (𝟙 Y))
state_after: case x
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
X Y : C
t : BinaryBicone X Y
ht : IsColimit t.toCocone
⊢ ∀ (j : Discrete WalkingPair), t.toCocone.ι.app j ≫ t.snd = (BinaryCofan.mk 0 (𝟙 Y)).ι.app j

tactic: rintro ⟨⟨⟩⟩ <;> dsimp <;> simp
state_before: case x
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
X Y : C
t : BinaryBicone X Y
ht : IsColimit t.toCocone
⊢ ∀ (j : Discrete WalkingPair), t.toCocone.ι.app j ≫ t.snd = (BinaryCofan.mk 0 (𝟙 Y)).ι.app j
state_after: no goals
Theorem: CategoryTheory.ShortComplex.RightHomologyData.ofEpiOfIsIsoOfMono'_p
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

tactic: simp [ofEpiOfIsIsoOfMono', opMap]
state_before: C : Type u_1
inst✝⁴ : Category.{u_2, u_1} C
inst✝³ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h : S₂.RightHomologyData
inst✝² : Epi φ.τ₁
inst✝¹ : IsIso φ.τ₂
inst✝ : Mono φ.τ₃
⊢ (ofEpiOfIsIsoOfMono' φ h).p = φ.τ₂ ≫ h.p
state_after: no goals
Theorem: Rel.image_preimage_subset_inter_codom
File: Mathlib/Data/Rel.lean

tactic: rw [← dom_inv, ← preimage_inv]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set β
⊢ s ∩ r.codom ⊆ r.image (r.preimage s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set β
⊢ s ∩ r.inv.dom ⊆ r.inv.preimage (r.preimage s)

tactic: apply inter_dom_subset_preimage_image
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set β
⊢ s ∩ r.inv.dom ⊆ r.inv.preimage (r.preimage s)
state_after: no goals
Theorem: PartENat.withTopEquiv_top
File: Mathlib/Data/Nat/PartENat.lean

tactic: simp
state_before: ⊢ withTopEquiv ⊤ = ⊤
state_after: no goals
Theorem: Filter.ext_iff
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [filter_eq_iff, ext_iff, Filter.mem_sets]
state_before: α : Type u
f g : Filter α
s t : Set α
⊢ f = g ↔ ∀ (s : Set α), s ∈ f ↔ s ∈ g
state_after: no goals
Theorem: Quaternion.sq_eq_neg_normSq
File: Mathlib/Algebra/Quaternion.lean

tactic: simp_rw [← star_eq_neg]
state_before: R : Type u_1
inst✝ : LinearOrderedCommRing R
a : ℍ[R]
⊢ a ^ 2 = -↑(normSq a) ↔ a.re = 0
state_after: R : Type u_1
inst✝ : LinearOrderedCommRing R
a : ℍ[R]
⊢ a ^ 2 = -↑(normSq a) ↔ star a = -a

tactic: obtain rfl | hq0 := eq_or_ne a 0
state_before: R : Type u_1
inst✝ : LinearOrderedCommRing R
a : ℍ[R]
⊢ a ^ 2 = -↑(normSq a) ↔ star a = -a
state_after: case inl
R : Type u_1
inst✝ : LinearOrderedCommRing R
⊢ 0 ^ 2 = -↑(normSq 0) ↔ star 0 = -0

case inr
R : Type u_1
inst✝ : LinearOrderedCommRing R
a : ℍ[R]
hq0 : a ≠ 0
⊢ a ^ 2 = -↑(normSq a) ↔ star a = -a

tactic: simp
state_before: case inl
R : Type u_1
inst✝ : LinearOrderedCommRing R
⊢ 0 ^ 2 = -↑(normSq 0) ↔ star 0 = -0
state_after: no goals

tactic: rw [← star_mul_self, ← mul_neg, ← neg_sq, sq, mul_left_inj' (neg_ne_zero.mpr hq0), eq_comm]
state_before: case inr
R : Type u_1
inst✝ : LinearOrderedCommRing R
a : ℍ[R]
hq0 : a ≠ 0
⊢ a ^ 2 = -↑(normSq a) ↔ star a = -a
state_after: no goals
Theorem: legendreSym.eq_one_iff'
File: Mathlib/NumberTheory/LegendreSymbol/Basic.lean

tactic: rw [eq_one_iff]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℕ
ha0 : ↑a ≠ 0
⊢ legendreSym p ↑a = 1 ↔ IsSquare ↑a
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℕ
ha0 : ↑a ≠ 0
⊢ IsSquare ↑↑a ↔ IsSquare ↑a

case ha0
p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℕ
ha0 : ↑a ≠ 0
⊢ ↑↑a ≠ 0

tactic: norm_cast
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℕ
ha0 : ↑a ≠ 0
⊢ IsSquare ↑↑a ↔ IsSquare ↑a
state_after: no goals

tactic: exact mod_cast ha0
state_before: case ha0
p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℕ
ha0 : ↑a ≠ 0
⊢ ↑↑a ≠ 0
state_after: no goals
Theorem: R1Space.inf
File: Mathlib/Topology/Separation.lean

tactic: apply R1Space.iInf
state_before: X✝ : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X✝
inst✝¹ : FirstCountableTopology X✝
inst✝ : R1Space X✝
x y : X✝
X : Type u_3
t₁ t₂ : TopologicalSpace X
h₁ : R1Space X
h₂ : R1Space X
⊢ R1Space X
state_after: case ht
X✝ : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X✝
inst✝¹ : FirstCountableTopology X✝
inst✝ : R1Space X✝
x y : X✝
X : Type u_3
t₁ t₂ : TopologicalSpace X
h₁ : R1Space X
h₂ : R1Space X
⊢ ∀ (i : Bool), R1Space X

tactic: simp [*]
state_before: case ht
X✝ : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X✝
inst✝¹ : FirstCountableTopology X✝
inst✝ : R1Space X✝
x y : X✝
X : Type u_3
t₁ t₂ : TopologicalSpace X
h₁ : R1Space X
h₂ : R1Space X
⊢ ∀ (i : Bool), R1Space X
state_after: no goals
Theorem: CategoryTheory.LaxMonoidalFunctor.left_unitality_inv
File: Mathlib/CategoryTheory/Monoidal/Functor.lean

tactic: rw [Iso.inv_comp_eq, F.left_unitality, Category.assoc, Category.assoc, ← F.toFunctor.map_comp,
  Iso.hom_inv_id, F.toFunctor.map_id, comp_id]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : LaxMonoidalFunctor C D
X : C
⊢ (λ_ (F.obj X)).inv ≫ F.ε ▷ F.obj X ≫ F.μ (𝟙_ C) X = F.map (λ_ X).inv
state_after: no goals
Theorem: PNat.modDivAux_spec
File: Mathlib/Data/PNat/Basic.lean

tactic: change (k : ℕ) + (k : ℕ) * (q + 1).pred = 0 + (k : ℕ) * (q + 1)
state_before: k : ℕ+
q : ℕ
x✝ : ¬(0 = 0 ∧ q + 1 = 0)
⊢ ↑(k.modDivAux 0 (q + 1)).1 + ↑k * (k.modDivAux 0 (q + 1)).2 = 0 + ↑k * (q + 1)
state_after: k : ℕ+
q : ℕ
x✝ : ¬(0 = 0 ∧ q + 1 = 0)
⊢ ↑k + ↑k * (q + 1).pred = 0 + ↑k * (q + 1)

tactic: rw [Nat.pred_succ, Nat.mul_succ, zero_add, add_comm]
state_before: k : ℕ+
q : ℕ
x✝ : ¬(0 = 0 ∧ q + 1 = 0)
⊢ ↑k + ↑k * (q + 1).pred = 0 + ↑k * (q + 1)
state_after: no goals
Theorem: Finset.compls_subset_iff
File: Mathlib/Data/Finset/Sups.lean

tactic: rw [← compls_subset_compls, compls_compls]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : BooleanAlgebra α
s s₁ s₂ t t₁ t₂ u v : Finset α
a b c : α
⊢ sᶜˢ ⊆ t ↔ s ⊆ tᶜˢ
state_after: no goals