1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Set.mem_of_mem_coe
File: Mathlib/Data/Set/Functor.lean

tactic: rcases ha with ⟨_, ⟨_, rfl⟩, _, ⟨ha, rfl⟩, _⟩
state_before: α β✝ : Type u
s : Set α
f : α → Set β✝
g : Set (α → β✝)
β : Set α
γ : Set ↑β
a : α
ha :
  a ∈ do
    let a ← γ
    pure ↑a
⊢ ⟨a, ⋯⟩ ∈ γ
state_after: case intro.intro.intro.intro.intro.intro
α β✝ : Type u
s : Set α
f : α → Set β✝
g : Set (α → β✝)
β : Set α
γ : Set ↑β
a : α
w✝ : ↑β
ha : w✝ ∈ γ
right✝ : a ∈ (fun h => (fun a => pure ↑a) w✝) ha
⊢ ⟨a, ⋯⟩ ∈ γ

tactic: convert ha
state_before: case intro.intro.intro.intro.intro.intro
α β✝ : Type u
s : Set α
f : α → Set β✝
g : Set (α → β✝)
β : Set α
γ : Set ↑β
a : α
w✝ : ↑β
ha : w✝ ∈ γ
right✝ : a ∈ (fun h => (fun a => pure ↑a) w✝) ha
⊢ ⟨a, ⋯⟩ ∈ γ
state_after: no goals
Theorem: CategoryTheory.ShortComplex.SnakeInput.w₁₃_τ₂
File: Mathlib/Algebra/Homology/ShortComplex/SnakeLemma.lean

tactic: rw [← comp_τ₂, S.w₁₃, zero_τ₂]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
S : SnakeInput C
⊢ S.v₁₂.τ₂ ≫ S.v₂₃.τ₂ = 0
state_after: no goals
Theorem: NNRat.ext_num_den_iff
File: Mathlib/Data/NNRat/Defs.lean

tactic: rintro rfl
state_before: p q : ℚ≥0
⊢ p = q → p.num = q.num ∧ p.den = q.den
state_after: p : ℚ≥0
⊢ p.num = p.num ∧ p.den = p.den

tactic: exact ⟨rfl, rfl⟩
state_before: p : ℚ≥0
⊢ p.num = p.num ∧ p.den = p.den
state_after: no goals
Theorem: CliffordAlgebra.star_ι
File: Mathlib/LinearAlgebra/CliffordAlgebra/Star.lean

tactic: rw [star_def, involute_ι, map_neg, reverse_ι]
state_before: R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
m : M
⊢ star ((ι Q) m) = -(ι Q) m
state_after: no goals
Theorem: Polynomial.toFinsupp_neg
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: cases a
state_before: R✝ : Type u
a✝ b : R✝
m n : ℕ
inst✝¹ : Semiring R✝
p q : R✝[X]
R : Type u
inst✝ : Ring R
a : R[X]
⊢ (-a).toFinsupp = -a.toFinsupp
state_after: case ofFinsupp
R✝ : Type u
a b : R✝
m n : ℕ
inst✝¹ : Semiring R✝
p q : R✝[X]
R : Type u
inst✝ : Ring R
toFinsupp✝ : R[ℕ]
⊢ (-{ toFinsupp := toFinsupp✝ }).toFinsupp = -{ toFinsupp := toFinsupp✝ }.toFinsupp

tactic: rw [← ofFinsupp_neg]
state_before: case ofFinsupp
R✝ : Type u
a b : R✝
m n : ℕ
inst✝¹ : Semiring R✝
p q : R✝[X]
R : Type u
inst✝ : Ring R
toFinsupp✝ : R[ℕ]
⊢ (-{ toFinsupp := toFinsupp✝ }).toFinsupp = -{ toFinsupp := toFinsupp✝ }.toFinsupp
state_after: no goals
Theorem: Real.log_mul
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: rw [exp_log_eq_abs (mul_ne_zero hx hy), exp_add, exp_log_eq_abs hx, exp_log_eq_abs hy, abs_mul]
state_before: x y : ℝ
hx : x ≠ 0
hy : y ≠ 0
⊢ rexp (log (x * y)) = rexp (log x + log y)
state_after: no goals
Theorem: hasStrictFDerivAt_list_prod_attach'
File: Mathlib/Analysis/Calculus/FDeriv/Mul.lean

tactic: simp
state_before: 𝕜 : Type u_1
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type u_3
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
G : Type u_4
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
G' : Type u_5
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g✝ : E → F
f'✝ f₀' f₁' g'✝ e : E →L[𝕜] F
x✝ : E
s t : Set E
L L₁ L₂ : Filter E
ι : Type u_6
𝔸 : Type u_7
𝔸' : Type u_8
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u : Finset ι
f : ι → E → 𝔸
f' : ι → E →L[𝕜] 𝔸
g : ι → E → 𝔸'
g' : ι → E →L[𝕜] 𝔸'
inst✝ : DecidableEq ι
l : List ι
x : { i // i ∈ l } → 𝔸
⊢ ∀ (i : Fin l.length), i ∈ Finset.univ ↔ (finCongr ⋯) i ∈ Finset.univ
state_after: no goals

tactic: simp
state_before: 𝕜 : Type u_1
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type u_3
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
G : Type u_4
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
G' : Type u_5
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g✝ : E → F
f'✝ f₀' f₁' g'✝ e : E →L[𝕜] F
x✝ : E
s t : Set E
L L₁ L₂ : Filter E
ι : Type u_6
𝔸 : Type u_7
𝔸' : Type u_8
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u : Finset ι
f : ι → E → 𝔸
f' : ι → E →L[𝕜] 𝔸
g : ι → E → 𝔸'
g' : ι → E →L[𝕜] 𝔸'
inst✝ : DecidableEq ι
l : List ι
x : { i // i ∈ l } → 𝔸
⊢ ∀ i ∈ Finset.univ,
    (List.map x (List.take (↑i) l.attach)).prod •
        (proj (l.attach.get (Fin.cast ⋯ i))).smulRight (List.map x (List.drop (↑i).succ l.attach)).prod =
      (List.map x (List.take (↑((finCongr ⋯) i)) l.attach)).prod •
        (proj (l.attach.get ((finCongr ⋯) i))).smulRight (List.map x (List.drop (↑((finCongr ⋯) i)).succ l.attach)).prod
state_after: no goals
Theorem: set_pi_mem_nhds
File: Mathlib/Topology/Constructions.lean

tactic: rw [pi_def, biInter_mem hi]
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
π : ι → Type u_6
κ : Type u_7
inst✝ : TopologicalSpace X
T : (i : ι) → TopologicalSpace (π i)
f : X → (i : ι) → π i
i : Set ι
s : (a : ι) → Set (π a)
x : (a : ι) → π a
hi : i.Finite
hs : ∀ a ∈ i, s a ∈ 𝓝 (x a)
⊢ i.pi s ∈ 𝓝 x
state_after: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
π : ι → Type u_6
κ : Type u_7
inst✝ : TopologicalSpace X
T : (i : ι) → TopologicalSpace (π i)
f : X → (i : ι) → π i
i : Set ι
s : (a : ι) → Set (π a)
x : (a : ι) → π a
hi : i.Finite
hs : ∀ a ∈ i, s a ∈ 𝓝 (x a)
⊢ ∀ i_1 ∈ i, eval i_1 ⁻¹' s i_1 ∈ 𝓝 x

tactic: exact fun a ha => (continuous_apply a).continuousAt (hs a ha)
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
π : ι → Type u_6
κ : Type u_7
inst✝ : TopologicalSpace X
T : (i : ι) → TopologicalSpace (π i)
f : X → (i : ι) → π i
i : Set ι
s : (a : ι) → Set (π a)
x : (a : ι) → π a
hi : i.Finite
hs : ∀ a ∈ i, s a ∈ 𝓝 (x a)
⊢ ∀ i_1 ∈ i, eval i_1 ⁻¹' s i_1 ∈ 𝓝 x
state_after: no goals
Theorem: Multiset.dvd_gcd
File: Mathlib/Algebra/GCDMonoid/Multiset.lean

tactic: simp
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s : Multiset α
a : α
⊢ a ∣ gcd 0 ↔ ∀ b ∈ 0, a ∣ b
state_after: no goals

tactic: simp (config := { contextual := true }) [or_imp, forall_and, dvd_gcd_iff]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s : Multiset α
a : α
⊢ ∀ (a_1 : α) (s : Multiset α), (a ∣ s.gcd ↔ ∀ b ∈ s, a ∣ b) → (a ∣ (a_1 ::ₘ s).gcd ↔ ∀ b ∈ a_1 ::ₘ s, a ∣ b)
state_after: no goals
Theorem: Real.le_tan
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Bounds.lean

tactic: rcases eq_or_lt_of_le h1 with (rfl | h1')
state_before: x✝ x : ℝ
h1 : 0 ≤ x
h2 : x < π / 2
⊢ x ≤ tan x
state_after: case inl
x : ℝ
h1 : 0 ≤ 0
h2 : 0 < π / 2
⊢ 0 ≤ tan 0

case inr
x✝ x : ℝ
h1 : 0 ≤ x
h2 : x < π / 2
h1' : 0 < x
⊢ x ≤ tan x

tactic: rw [tan_zero]
state_before: case inl
x : ℝ
h1 : 0 ≤ 0
h2 : 0 < π / 2
⊢ 0 ≤ tan 0
state_after: no goals

tactic: exact le_of_lt (lt_tan h1' h2)
state_before: case inr
x✝ x : ℝ
h1 : 0 ≤ x
h2 : x < π / 2
h1' : 0 < x
⊢ x ≤ tan x
state_after: no goals
Theorem: Polynomial.taylor_C
File: Mathlib/Algebra/Polynomial/Taylor.lean

tactic: simp only [taylor_apply, C_comp]
state_before: R : Type u_1
inst✝ : Semiring R
r : R
f : R[X]
x : R
⊢ (taylor r) (C x) = C x
state_after: no goals
Theorem: ENNReal.ofReal_sub
File: Mathlib/Data/ENNReal/Real.lean

tactic: obtain h | h := le_total p q
state_before: a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ
hq : 0 ≤ q
⊢ ENNReal.ofReal (p - q) = ENNReal.ofReal p - ENNReal.ofReal q
state_after: case inl
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ
hq : 0 ≤ q
h : p ≤ q
⊢ ENNReal.ofReal (p - q) = ENNReal.ofReal p - ENNReal.ofReal q

case inr
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ
hq : 0 ≤ q
h : q ≤ p
⊢ ENNReal.ofReal (p - q) = ENNReal.ofReal p - ENNReal.ofReal q

tactic: refine ENNReal.eq_sub_of_add_eq ofReal_ne_top ?_
state_before: case inr
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ
hq : 0 ≤ q
h : q ≤ p
⊢ ENNReal.ofReal (p - q) = ENNReal.ofReal p - ENNReal.ofReal q
state_after: case inr
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ
hq : 0 ≤ q
h : q ≤ p
⊢ ENNReal.ofReal (p - q) + ENNReal.ofReal q = ENNReal.ofReal p

tactic: rw [← ofReal_add (sub_nonneg_of_le h) hq, sub_add_cancel]
state_before: case inr
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ
hq : 0 ≤ q
h : q ≤ p
⊢ ENNReal.ofReal (p - q) + ENNReal.ofReal q = ENNReal.ofReal p
state_after: no goals

tactic: rw [ofReal_of_nonpos (sub_nonpos_of_le h), tsub_eq_zero_of_le (ofReal_le_ofReal h)]
state_before: case inl
a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ
hq : 0 ≤ q
h : p ≤ q
⊢ ENNReal.ofReal (p - q) = ENNReal.ofReal p - ENNReal.ofReal q
state_after: no goals
Theorem: Set.iUnion_setOf
File: Mathlib/Data/Set/Lattice.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
P : ι → α → Prop
⊢ ⋃ i, {x | P i x} = {x | ∃ i, P i x}
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
P : ι → α → Prop
x✝ : α
⊢ x✝ ∈ ⋃ i, {x | P i x} ↔ x✝ ∈ {x | ∃ i, P i x}

tactic: exact mem_iUnion
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
P : ι → α → Prop
x✝ : α
⊢ x✝ ∈ ⋃ i, {x | P i x} ↔ x✝ ∈ {x | ∃ i, P i x}
state_after: no goals
Theorem: CauSeq.equiv_def₃
File: Mathlib/Algebra/Order/CauSeq/Basic.lean

tactic: let ⟨h₁, h₂⟩ := H _ ij
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : CauSeq β abv
h : f ≈ g
ε : α
ε0 : 0 < ε
i : ℕ
H : ∀ j ≥ i, abv (↑(f - g) j) < ε / 2 ∧ ∀ k ≥ j, abv (↑f k - ↑f j) < ε / 2
j : ℕ
ij : j ≥ i
k : ℕ
jk : k ≥ j
⊢ abv (↑f k - ↑g j) < ε
state_after: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : CauSeq β abv
h : f ≈ g
ε : α
ε0 : 0 < ε
i : ℕ
H : ∀ j ≥ i, abv (↑(f - g) j) < ε / 2 ∧ ∀ k ≥ j, abv (↑f k - ↑f j) < ε / 2
j : ℕ
ij : j ≥ i
k : ℕ
jk : k ≥ j
h₁ : abv (↑(f - g) j) < ε / 2
h₂ : ∀ k ≥ j, abv (↑f k - ↑f j) < ε / 2
⊢ abv (↑f k - ↑g j) < ε

tactic: have := lt_of_le_of_lt (abv_add abv (f j - g j) _) (add_lt_add h₁ (h₂ _ jk))
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : CauSeq β abv
h : f ≈ g
ε : α
ε0 : 0 < ε
i : ℕ
H : ∀ j ≥ i, abv (↑(f - g) j) < ε / 2 ∧ ∀ k ≥ j, abv (↑f k - ↑f j) < ε / 2
j : ℕ
ij : j ≥ i
k : ℕ
jk : k ≥ j
h₁ : abv (↑(f - g) j) < ε / 2
h₂ : ∀ k ≥ j, abv (↑f k - ↑f j) < ε / 2
⊢ abv (↑f k - ↑g j) < ε
state_after: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : CauSeq β abv
h : f ≈ g
ε : α
ε0 : 0 < ε
i : ℕ
H : ∀ j ≥ i, abv (↑(f - g) j) < ε / 2 ∧ ∀ k ≥ j, abv (↑f k - ↑f j) < ε / 2
j : ℕ
ij : j ≥ i
k : ℕ
jk : k ≥ j
h₁ : abv (↑(f - g) j) < ε / 2
h₂ : ∀ k ≥ j, abv (↑f k - ↑f j) < ε / 2
this : abv (↑f j - ↑g j + (↑f k - ↑f j)) < ε / 2 + ε / 2
⊢ abv (↑f k - ↑g j) < ε

tactic: rwa [sub_add_sub_cancel', add_halves] at this
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : CauSeq β abv
h : f ≈ g
ε : α
ε0 : 0 < ε
i : ℕ
H : ∀ j ≥ i, abv (↑(f - g) j) < ε / 2 ∧ ∀ k ≥ j, abv (↑f k - ↑f j) < ε / 2
j : ℕ
ij : j ≥ i
k : ℕ
jk : k ≥ j
h₁ : abv (↑(f - g) j) < ε / 2
h₂ : ∀ k ≥ j, abv (↑f k - ↑f j) < ε / 2
this : abv (↑f j - ↑g j + (↑f k - ↑f j)) < ε / 2 + ε / 2
⊢ abv (↑f k - ↑g j) < ε
state_after: no goals
Theorem: DFinsupp.erase_single
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: rw [← filter_ne_eq_erase, filter_single, ite_not]
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Zero (β i)
s : Finset ι
x✝ : (i : ↑↑s) → β ↑i
i✝ j i : ι
x : β i
⊢ erase j (single i x) = if i = j then 0 else single i x
state_after: no goals
Theorem: Monoid.le_minOrder
File: Mathlib/GroupTheory/Order/Min.lean

tactic: simp [minOrder]
state_before: α : Type u_1
inst✝ : Monoid α
a : α
n : ℕ∞
⊢ n ≤ minOrder α ↔ ∀ ⦃a : α⦄, a ≠ 1 → IsOfFinOrder a → n ≤ ↑(orderOf a)
state_after: no goals
Theorem: CategoryTheory.Iso.symm_self_conj
File: Mathlib/CategoryTheory/Conj.lean

tactic: rw [← trans_conj, α.self_symm_id, refl_conj]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
α : X ≅ Y
f : End X
⊢ α.symm.conj (α.conj f) = f
state_after: no goals
Theorem: MeasureTheory.measure_iUnion₀
File: Mathlib/MeasureTheory/Measure/NullMeasurable.lean

tactic: rcases exists_subordinate_pairwise_disjoint h hd with ⟨t, _ht_sub, ht_eq, htm, htd⟩
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
m0 : MeasurableSpace α
μ : Measure α
s t : Set α
inst✝ : Countable ι
f : ι → Set α
hd : Pairwise (AEDisjoint μ on f)
h : ∀ (i : ι), NullMeasurableSet (f i) μ
⊢ μ (⋃ i, f i) = ∑' (i : ι), μ (f i)
state_after: case intro.intro.intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
m0 : MeasurableSpace α
μ : Measure α
s t✝ : Set α
inst✝ : Countable ι
f : ι → Set α
hd : Pairwise (AEDisjoint μ on f)
h : ∀ (i : ι), NullMeasurableSet (f i) μ
t : ι → Set α
_ht_sub : ∀ (i : ι), t i ⊆ f i
ht_eq : ∀ (i : ι), f i =ᶠ[ae μ] t i
htm : ∀ (i : ι), MeasurableSet (t i)
htd : Pairwise (Disjoint on t)
⊢ μ (⋃ i, f i) = ∑' (i : ι), μ (f i)

tactic: calc
  μ (⋃ i, f i) = μ (⋃ i, t i) := measure_congr (EventuallyEq.countable_iUnion ht_eq)
  _ = ∑' i, μ (t i) := measure_iUnion htd htm
  _ = ∑' i, μ (f i) := tsum_congr fun i => measure_congr (ht_eq _).symm
state_before: case intro.intro.intro.intro
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
m0 : MeasurableSpace α
μ : Measure α
s t✝ : Set α
inst✝ : Countable ι
f : ι → Set α
hd : Pairwise (AEDisjoint μ on f)
h : ∀ (i : ι), NullMeasurableSet (f i) μ
t : ι → Set α
_ht_sub : ∀ (i : ι), t i ⊆ f i
ht_eq : ∀ (i : ι), f i =ᶠ[ae μ] t i
htm : ∀ (i : ι), MeasurableSet (t i)
htd : Pairwise (Disjoint on t)
⊢ μ (⋃ i, f i) = ∑' (i : ι), μ (f i)
state_after: no goals
Theorem: rootsOfUnityEquivOfPrimitiveRoots_symm_apply
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: obtain ⟨ε, rfl⟩ := (rootsOfUnityEquivOfPrimitiveRoots hf hζ).surjective η
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S✝ : Type u_5
F✝ : Type u_6
inst✝⁸ : CommMonoid M
inst✝⁷ : CommMonoid N
inst✝⁶ : DivisionCommMonoid G
k l : ℕ
inst✝⁵ : CommRing R
ζ : Rˣ
h : IsPrimitiveRoot ζ k
inst✝⁴ : IsDomain R
S : Type u_7
F : Type u_8
inst✝³ : CommRing S
inst✝² : IsDomain S
inst✝¹ : FunLike F R S
inst✝ : MonoidHomClass F R S
n : ℕ+
f : F
hf : Function.Injective ⇑f
hζ : (primitiveRoots (↑n) R).Nonempty
η : ↥(rootsOfUnity n S)
⊢ f ↑↑((rootsOfUnityEquivOfPrimitiveRoots hf hζ).symm η) = ↑↑η
state_after: case intro
M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S✝ : Type u_5
F✝ : Type u_6
inst✝⁸ : CommMonoid M
inst✝⁷ : CommMonoid N
inst✝⁶ : DivisionCommMonoid G
k l : ℕ
inst✝⁵ : CommRing R
ζ : Rˣ
h : IsPrimitiveRoot ζ k
inst✝⁴ : IsDomain R
S : Type u_7
F : Type u_8
inst✝³ : CommRing S
inst✝² : IsDomain S
inst✝¹ : FunLike F R S
inst✝ : MonoidHomClass F R S
n : ℕ+
f : F
hf : Function.Injective ⇑f
hζ : (primitiveRoots (↑n) R).Nonempty
ε : ↥(rootsOfUnity n R)
⊢ f ↑↑((rootsOfUnityEquivOfPrimitiveRoots hf hζ).symm ((rootsOfUnityEquivOfPrimitiveRoots hf hζ) ε)) =
    ↑↑((rootsOfUnityEquivOfPrimitiveRoots hf hζ) ε)

tactic: rw [MulEquiv.symm_apply_apply, val_rootsOfUnityEquivOfPrimitiveRoots_apply_coe]
state_before: case intro
M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S✝ : Type u_5
F✝ : Type u_6
inst✝⁸ : CommMonoid M
inst✝⁷ : CommMonoid N
inst✝⁶ : DivisionCommMonoid G
k l : ℕ
inst✝⁵ : CommRing R
ζ : Rˣ
h : IsPrimitiveRoot ζ k
inst✝⁴ : IsDomain R
S : Type u_7
F : Type u_8
inst✝³ : CommRing S
inst✝² : IsDomain S
inst✝¹ : FunLike F R S
inst✝ : MonoidHomClass F R S
n : ℕ+
f : F
hf : Function.Injective ⇑f
hζ : (primitiveRoots (↑n) R).Nonempty
ε : ↥(rootsOfUnity n R)
⊢ f ↑↑((rootsOfUnityEquivOfPrimitiveRoots hf hζ).symm ((rootsOfUnityEquivOfPrimitiveRoots hf hζ) ε)) =
    ↑↑((rootsOfUnityEquivOfPrimitiveRoots hf hζ) ε)
state_after: no goals
Theorem: Rat.substr_num_den'
File: Mathlib/Data/Rat/Lemmas.lean

tactic: rw [sub_eq_add_neg, sub_eq_add_neg, ← neg_mul, ← num_neg_eq_neg_num, ← den_neg_eq_den r,
  add_num_den' q (-r)]
state_before: q r : ℚ
⊢ (q - r).num * ↑q.den * ↑r.den = (q.num * ↑r.den - r.num * ↑q.den) * ↑(q - r).den
state_after: no goals
Theorem: MeasureTheory.snorm_sub_le'
File: Mathlib/MeasureTheory/Function/LpSeminorm/TriangleInequality.lean

tactic: simpa only [sub_eq_add_neg, snorm_neg] using snorm_add_le' hf hg.neg p
state_before: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p✝ : ℝ≥0∞
q : ℝ
μ : Measure α
f✝ g✝ f g : α → E
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
p : ℝ≥0∞
⊢ snorm (f - g) p μ ≤ LpAddConst p * (snorm f p μ + snorm g p μ)
state_after: no goals
Theorem: linearIndependent_fin_cons
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: rw [← linearIndependent_equiv (finSuccEquiv n).symm, linearIndependent_option]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v✝ : ι → V
s t : Set V
x y z : V
n : ℕ
v : Fin n → V
⊢ LinearIndependent K (Fin.cons x v) ↔ LinearIndependent K v ∧ x ∉ span K (range v)
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v✝ : ι → V
s t : Set V
x y z : V
n : ℕ
v : Fin n → V
⊢ LinearIndependent K ((Fin.cons x v ∘ ⇑(finSuccEquiv n).symm) ∘ some) ∧
      (Fin.cons x v ∘ ⇑(finSuccEquiv n).symm) none ∉ span K (range ((Fin.cons x v ∘ ⇑(finSuccEquiv n).symm) ∘ some)) ↔
    LinearIndependent K v ∧ x ∉ span K (range v)

tactic: exact Iff.rfl
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v✝ : ι → V
s t : Set V
x y z : V
n : ℕ
v : Fin n → V
⊢ LinearIndependent K ((Fin.cons x v ∘ ⇑(finSuccEquiv n).symm) ∘ some) ∧
      (Fin.cons x v ∘ ⇑(finSuccEquiv n).symm) none ∉ span K (range ((Fin.cons x v ∘ ⇑(finSuccEquiv n).symm) ∘ some)) ↔
    LinearIndependent K v ∧ x ∉ span K (range v)
state_after: no goals
Theorem: toIcoDiv_eq_floor
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: refine toIcoDiv_eq_of_sub_zsmul_mem_Ico hp ?_
state_before: α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
p : α
hp : 0 < p
a b : α
⊢ toIcoDiv hp a b = ⌊(b - a) / p⌋
state_after: α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
p : α
hp : 0 < p
a b : α
⊢ b - ⌊(b - a) / p⌋ • p ∈ Set.Ico a (a + p)

tactic: rw [Set.mem_Ico, zsmul_eq_mul, ← sub_nonneg, add_comm, sub_right_comm, ← sub_lt_iff_lt_add,
  sub_right_comm _ _ a]
state_before: α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
p : α
hp : 0 < p
a b : α
⊢ b - ⌊(b - a) / p⌋ • p ∈ Set.Ico a (a + p)
state_after: α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
p : α
hp : 0 < p
a b : α
⊢ 0 ≤ b - a - ↑⌊(b - a) / p⌋ * p ∧ b - a - ↑⌊(b - a) / p⌋ * p < p

tactic: exact ⟨Int.sub_floor_div_mul_nonneg _ hp, Int.sub_floor_div_mul_lt _ hp⟩
state_before: α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
p : α
hp : 0 < p
a b : α
⊢ 0 ≤ b - a - ↑⌊(b - a) / p⌋ * p ∧ b - a - ↑⌊(b - a) / p⌋ * p < p
state_after: no goals
Theorem: PartENat.eq_natCast_sub_of_add_eq_natCast
File: Mathlib/Data/Nat/PartENat.lean

tactic: lift x to ℕ using dom_of_le_natCast ((le_add_right le_rfl).trans_eq h)
state_before: x y : PartENat
n : ℕ
h : x + y = ↑n
⊢ x = ↑(n - y.get ⋯)
state_after: case intro
y : PartENat
n x : ℕ
h : ↑x + y = ↑n
⊢ ↑x = ↑(n - y.get ⋯)

tactic: lift y to ℕ using dom_of_le_natCast ((le_add_left le_rfl).trans_eq h)
state_before: case intro
y : PartENat
n x : ℕ
h : ↑x + y = ↑n
⊢ ↑x = ↑(n - y.get ⋯)
state_after: case intro.intro
n x y : ℕ
h : ↑x + ↑y = ↑n
⊢ ↑x = ↑(n - (↑y).get ⋯)

tactic: rw [← Nat.cast_add, natCast_inj] at h
state_before: case intro.intro
n x y : ℕ
h : ↑x + ↑y = ↑n
⊢ ↑x = ↑(n - (↑y).get ⋯)
state_after: case intro.intro
n x y : ℕ
h✝ : ↑x + ↑y = ↑n
h : x + y = n
⊢ ↑x = ↑(n - (↑y).get ⋯)

tactic: rw [get_natCast, natCast_inj, eq_tsub_of_add_eq h]
state_before: case intro.intro
n x y : ℕ
h✝ : ↑x + ↑y = ↑n
h : x + y = n
⊢ ↑x = ↑(n - (↑y).get ⋯)
state_after: no goals
Theorem: ONote.fastGrowing_limit
File: Mathlib/SetTheory/Ordinal/Notation.lean

tactic: rw [fastGrowing_def h]
state_before: o : ONote
f : ℕ → ONote
h : o.fundamentalSequence = Sum.inr f
⊢ o.fastGrowing = fun i => (f i).fastGrowing i
state_after: no goals
Theorem: Finpartition.mem_atomise
File: Mathlib/Order/Partition/Finpartition.lean

tactic: simp only [atomise, ofErase, bot_eq_empty, mem_erase, mem_image, nonempty_iff_ne_empty,
  mem_singleton, and_comm, mem_powerset, exists_prop]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
inst✝ : Fintype α
F : Finset (Finset α)
⊢ t ∈ (atomise s F).parts ↔ t.Nonempty ∧ ∃ Q ⊆ F, filter (fun i => ∀ u ∈ F, u ∈ Q ↔ i ∈ u) s = t
state_after: no goals
Theorem: Vector.not_mem_nil
File: Mathlib/Data/Vector/Mem.lean

tactic: unfold Vector.nil
state_before: α : Type u_1
β : Type u_2
n : ℕ
a a' : α
⊢ a ∉ nil.toList
state_after: α : Type u_1
β : Type u_2
n : ℕ
a a' : α
⊢ a ∉ toList ⟨[], ⋯⟩

tactic: dsimp
state_before: α : Type u_1
β : Type u_2
n : ℕ
a a' : α
⊢ a ∉ toList ⟨[], ⋯⟩
state_after: α : Type u_1
β : Type u_2
n : ℕ
a a' : α
⊢ a ∉ []

tactic: simp
state_before: α : Type u_1
β : Type u_2
n : ℕ
a a' : α
⊢ a ∉ []
state_after: no goals
Theorem: Mathlib.Tactic.Peel.eventually_congr
File: Mathlib/Tactic/Peel.lean

tactic: congr! 2
state_before: α : Type u_1
p q : α → Prop
f : Filter α
hq : ∀ (x : α), p x ↔ q x
⊢ (∀ᶠ (x : α) in f, p x) ↔ ∀ᶠ (x : α) in f, q x
state_after: case a.h.e'_2.h.a
α : Type u_1
p q : α → Prop
f : Filter α
hq : ∀ (x : α), p x ↔ q x
x✝ : α
⊢ p x✝ ↔ q x✝

tactic: exact hq _
state_before: case a.h.e'_2.h.a
α : Type u_1
p q : α → Prop
f : Filter α
hq : ∀ (x : α), p x ↔ q x
x✝ : α
⊢ p x✝ ↔ q x✝
state_after: no goals
Theorem: CategoryTheory.ComposableArrows.hom_ext₁
File: Mathlib/CategoryTheory/ComposableArrows.lean

tactic: ext i
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C 1
φ φ' : F ⟶ G
h₀ : app' φ 0 ⋯ = app' φ' 0 ⋯
h₁ : app' φ 1 ⋯ = app' φ' 1 ⋯
⊢ φ = φ'
state_after: case w.h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C 1
φ φ' : F ⟶ G
h₀ : app' φ 0 ⋯ = app' φ' 0 ⋯
h₁ : app' φ 1 ⋯ = app' φ' 1 ⋯
i : Fin (1 + 1)
⊢ φ.app i = φ'.app i

tactic: match i with
  | 0 => exact h₀
  | 1 => exact h₁
state_before: case w.h
C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C 1
φ φ' : F ⟶ G
h₀ : app' φ 0 ⋯ = app' φ' 0 ⋯
h₁ : app' φ 1 ⋯ = app' φ' 1 ⋯
i : Fin (1 + 1)
⊢ φ.app i = φ'.app i
state_after: no goals

tactic: exact h₀
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C 1
φ φ' : F ⟶ G
h₀ : app' φ 0 ⋯ = app' φ' 0 ⋯
h₁ : app' φ 1 ⋯ = app' φ' 1 ⋯
i : Fin (1 + 1)
⊢ φ.app 0 = φ'.app 0
state_after: no goals

tactic: exact h₁
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F✝ G✝ : ComposableArrows C n
F G : ComposableArrows C 1
φ φ' : F ⟶ G
h₀ : app' φ 0 ⋯ = app' φ' 0 ⋯
h₁ : app' φ 1 ⋯ = app' φ' 1 ⋯
i : Fin (1 + 1)
⊢ φ.app 1 = φ'.app 1
state_after: no goals