1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finsupp.sum_ite_self_eq
File: Mathlib/Algebra/BigOperators/Finsupp.lean

tactic: classical
  convert f.sum_ite_eq a fun _ => id
  simp [ite_eq_right_iff.2 Eq.symm]
state_before: α : Type u_1
ι : Type u_2
γ : Type u_3
A : Type u_4
B : Type u_5
C : Type u_6
inst✝⁷ : AddCommMonoid A
inst✝⁶ : AddCommMonoid B
inst✝⁵ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f✝ : α → ι →₀ A
i : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type u_7
M : Type u_8
M' : Type u_9
N✝ : Type u_10
P : Type u_11
G : Type u_12
H : Type u_13
R : Type u_14
S : Type u_15
inst✝⁴ : Zero M
inst✝³ : Zero M'
inst✝² : CommMonoid N✝
inst✝¹ : DecidableEq α
N : Type u_16
inst✝ : AddCommMonoid N
f : α →₀ N
a : α
⊢ (f.sum fun x v => if a = x then v else 0) = f a
state_after: no goals

tactic: convert f.sum_ite_eq a fun _ => id
state_before: α : Type u_1
ι : Type u_2
γ : Type u_3
A : Type u_4
B : Type u_5
C : Type u_6
inst✝⁷ : AddCommMonoid A
inst✝⁶ : AddCommMonoid B
inst✝⁵ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f✝ : α → ι →₀ A
i : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type u_7
M : Type u_8
M' : Type u_9
N✝ : Type u_10
P : Type u_11
G : Type u_12
H : Type u_13
R : Type u_14
S : Type u_15
inst✝⁴ : Zero M
inst✝³ : Zero M'
inst✝² : CommMonoid N✝
inst✝¹ : DecidableEq α
N : Type u_16
inst✝ : AddCommMonoid N
f : α →₀ N
a : α
⊢ (f.sum fun x v => if a = x then v else 0) = f a
state_after: case h.e'_3
α : Type u_1
ι : Type u_2
γ : Type u_3
A : Type u_4
B : Type u_5
C : Type u_6
inst✝⁷ : AddCommMonoid A
inst✝⁶ : AddCommMonoid B
inst✝⁵ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f✝ : α → ι →₀ A
i : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type u_7
M : Type u_8
M' : Type u_9
N✝ : Type u_10
P : Type u_11
G : Type u_12
H : Type u_13
R : Type u_14
S : Type u_15
inst✝⁴ : Zero M
inst✝³ : Zero M'
inst✝² : CommMonoid N✝
inst✝¹ : DecidableEq α
N : Type u_16
inst✝ : AddCommMonoid N
f : α →₀ N
a : α
⊢ f a = if a ∈ f.support then id (f a) else 0

tactic: simp [ite_eq_right_iff.2 Eq.symm]
state_before: case h.e'_3
α : Type u_1
ι : Type u_2
γ : Type u_3
A : Type u_4
B : Type u_5
C : Type u_6
inst✝⁷ : AddCommMonoid A
inst✝⁶ : AddCommMonoid B
inst✝⁵ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f✝ : α → ι →₀ A
i : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type u_7
M : Type u_8
M' : Type u_9
N✝ : Type u_10
P : Type u_11
G : Type u_12
H : Type u_13
R : Type u_14
S : Type u_15
inst✝⁴ : Zero M
inst✝³ : Zero M'
inst✝² : CommMonoid N✝
inst✝¹ : DecidableEq α
N : Type u_16
inst✝ : AddCommMonoid N
f : α →₀ N
a : α
⊢ f a = if a ∈ f.support then id (f a) else 0
state_after: no goals
Theorem: iteratedDeriv_cexp_const_mul
File: Mathlib/Analysis/SpecialFunctions/ExpDeriv.lean

tactic: rw [iteratedDeriv_const_mul contDiff_exp, iteratedDeriv_eq_iterate, iter_deriv_exp]
state_before: n : ℕ
c : ℂ
⊢ (iteratedDeriv n fun s => cexp (c * s)) = fun s => c ^ n * cexp (c * s)
state_after: no goals
Theorem: Complex.exp_neg
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← mul_right_inj' (exp_ne_zero x), ← exp_add]
state_before: x y : ℂ
⊢ cexp (-x) = (cexp x)⁻¹
state_after: x y : ℂ
⊢ cexp (x + -x) = cexp x * (cexp x)⁻¹

tactic: simp [mul_inv_cancel (exp_ne_zero x)]
state_before: x y : ℂ
⊢ cexp (x + -x) = cexp x * (cexp x)⁻¹
state_after: no goals
Theorem: ZMod.add_self_eq_zero_iff_eq_zero
File: Mathlib/Data/ZMod/Basic.lean

tactic: rw [Nat.odd_iff, ← Nat.two_dvd_ne_zero, ← Nat.prime_two.coprime_iff_not_dvd] at hn
state_before: n : ℕ
hn : Odd n
a : ZMod n
⊢ a + a = 0 ↔ a = 0
state_after: n : ℕ
hn : Nat.Coprime 2 n
a : ZMod n
⊢ a + a = 0 ↔ a = 0

tactic: rw [← mul_two, ← @Nat.cast_two (ZMod n), ← ZMod.coe_unitOfCoprime 2 hn, Units.mul_left_eq_zero]
state_before: n : ℕ
hn : Nat.Coprime 2 n
a : ZMod n
⊢ a + a = 0 ↔ a = 0
state_after: no goals
Theorem: Polynomial.smeval_monomial
File: Mathlib/Algebra/Polynomial/Smeval.lean

tactic: simp only [smeval_eq_sum, smul_pow, zero_smul, sum_monomial_index]
state_before: R : Type u_1
inst✝³ : Semiring R
r : R
p : R[X]
S : Type u_2
inst✝² : AddCommMonoid S
inst✝¹ : Pow S ℕ
inst✝ : MulActionWithZero R S
x : S
n : ℕ
⊢ ((monomial n) r).smeval x = r • x ^ n
state_after: no goals
Theorem: ZMod.val_eq_zero
File: Mathlib/Data/ZMod/Basic.lean

tactic: rw [Fin.ext_iff]
state_before: n : ℕ
a : ZMod (n + 1)
⊢ a.val = 0 ↔ a = 0
state_after: n : ℕ
a : ZMod (n + 1)
⊢ a.val = 0 ↔ ↑a = ↑0

tactic: exact Iff.rfl
state_before: n : ℕ
a : ZMod (n + 1)
⊢ a.val = 0 ↔ ↑a = ↑0
state_after: no goals
Theorem: MvPolynomial.coeff_X_mul'
File: Mathlib/Algebra/MvPolynomial/Basic.lean

tactic: refine (coeff_monomial_mul' _ _ _ _).trans ?_
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m✝ : σ
s✝ : σ →₀ ℕ
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S₁
p✝ q : MvPolynomial σ R
inst✝ : DecidableEq σ
m : σ →₀ ℕ
s : σ
p : MvPolynomial σ R
⊢ coeff m (X s * p) = if s ∈ m.support then coeff (m - Finsupp.single s 1) p else 0
state_after: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m✝ : σ
s✝ : σ →₀ ℕ
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S₁
p✝ q : MvPolynomial σ R
inst✝ : DecidableEq σ
m : σ →₀ ℕ
s : σ
p : MvPolynomial σ R
⊢ (if Finsupp.single s 1 ≤ m then 1 * coeff (m - Finsupp.single s 1) p else 0) =
    if s ∈ m.support then coeff (m - Finsupp.single s 1) p else 0

tactic: simp_rw [Finsupp.single_le_iff, Finsupp.mem_support_iff, Nat.succ_le_iff, pos_iff_ne_zero,
  one_mul]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m✝ : σ
s✝ : σ →₀ ℕ
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S₁
p✝ q : MvPolynomial σ R
inst✝ : DecidableEq σ
m : σ →₀ ℕ
s : σ
p : MvPolynomial σ R
⊢ (if Finsupp.single s 1 ≤ m then 1 * coeff (m - Finsupp.single s 1) p else 0) =
    if s ∈ m.support then coeff (m - Finsupp.single s 1) p else 0
state_after: no goals
Theorem: Multipliable.vanishing
File: Mathlib/Topology/Algebra/InfiniteSum/Group.lean

tactic: classical
letI : UniformSpace G := TopologicalGroup.toUniformSpace G
have : UniformGroup G := comm_topologicalGroup_is_uniform
exact cauchySeq_finset_iff_prod_vanishing.1 hf.hasProd.cauchySeq e he
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
G : Type u_5
inst✝² : TopologicalSpace G
inst✝¹ : CommGroup G
inst✝ : TopologicalGroup G
f : α → G
hf : Multipliable f
e : Set G
he : e ∈ 𝓝 1
⊢ ∃ s, ∀ (t : Finset α), Disjoint t s → ∏ k ∈ t, f k ∈ e
state_after: no goals

tactic: letI : UniformSpace G := TopologicalGroup.toUniformSpace G
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
G : Type u_5
inst✝² : TopologicalSpace G
inst✝¹ : CommGroup G
inst✝ : TopologicalGroup G
f : α → G
hf : Multipliable f
e : Set G
he : e ∈ 𝓝 1
⊢ ∃ s, ∀ (t : Finset α), Disjoint t s → ∏ k ∈ t, f k ∈ e
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
G : Type u_5
inst✝² : TopologicalSpace G
inst✝¹ : CommGroup G
inst✝ : TopologicalGroup G
f : α → G
hf : Multipliable f
e : Set G
he : e ∈ 𝓝 1
this : UniformSpace G := TopologicalGroup.toUniformSpace G
⊢ ∃ s, ∀ (t : Finset α), Disjoint t s → ∏ k ∈ t, f k ∈ e

tactic: have : UniformGroup G := comm_topologicalGroup_is_uniform
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
G : Type u_5
inst✝² : TopologicalSpace G
inst✝¹ : CommGroup G
inst✝ : TopologicalGroup G
f : α → G
hf : Multipliable f
e : Set G
he : e ∈ 𝓝 1
this : UniformSpace G := TopologicalGroup.toUniformSpace G
⊢ ∃ s, ∀ (t : Finset α), Disjoint t s → ∏ k ∈ t, f k ∈ e
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
G : Type u_5
inst✝² : TopologicalSpace G
inst✝¹ : CommGroup G
inst✝ : TopologicalGroup G
f : α → G
hf : Multipliable f
e : Set G
he : e ∈ 𝓝 1
this✝ : UniformSpace G := TopologicalGroup.toUniformSpace G
this : UniformGroup G
⊢ ∃ s, ∀ (t : Finset α), Disjoint t s → ∏ k ∈ t, f k ∈ e

tactic: exact cauchySeq_finset_iff_prod_vanishing.1 hf.hasProd.cauchySeq e he
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
G : Type u_5
inst✝² : TopologicalSpace G
inst✝¹ : CommGroup G
inst✝ : TopologicalGroup G
f : α → G
hf : Multipliable f
e : Set G
he : e ∈ 𝓝 1
this✝ : UniformSpace G := TopologicalGroup.toUniformSpace G
this : UniformGroup G
⊢ ∃ s, ∀ (t : Finset α), Disjoint t s → ∏ k ∈ t, f k ∈ e
state_after: no goals
Theorem: Turing.TM2.stmts₁_self
File: Mathlib/Computability/TuringMachine.lean

tactic: cases q <;> simp only [Finset.mem_insert_self, Finset.mem_singleton_self, stmts₁]
state_before: K : Type u_1
inst✝ : DecidableEq K
Γ : K → Type u_2
Λ : Type u_3
σ : Type u_4
q : Stmt₂
⊢ q ∈ stmts₁ q
state_after: no goals
Theorem: UV.card_compression
File: Mathlib/Combinatorics/SetFamily/Compression/UV.lean

tactic: rw [compression, card_union_of_disjoint compress_disjoint, filter_image,
  card_image_of_injOn compress_injOn, ← card_union_of_disjoint (disjoint_filter_filter_neg s _ _),
  filter_union_filter_neg_eq]
state_before: α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s✝ : Finset α
u✝ v✝ a b : α
inst✝ : DecidableEq α
u v : α
s : Finset α
⊢ (𝓒 u v s).card = s.card
state_after: no goals
Theorem: Nat.leRecOn_succ_left
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [Subsingleton.elim h1 (Nat.le_trans (le_succ n) h2), leRecOn_trans (le_succ n) h2,
  leRecOn_succ']
state_before: a b c d m✝ n✝ k : ℕ
p q : ℕ → Prop
C : ℕ → Sort u_1
n m : ℕ
h1 : n ≤ m
h2 : n + 1 ≤ m
next : {k : ℕ} → C k → C (k + 1)
x : C n
⊢ leRecOn h2 (fun {k} => next) (next x) = leRecOn h1 (fun {k} => next) x
state_after: no goals
Theorem: antivaryOn_inv_right₀
File: Mathlib/Algebra/Order/Monovary.lean

tactic: erw [inv_lt_inv (hg _ hj) (hg _ hi)]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedSemifield α
inst✝ : LinearOrderedSemifield β
s : Set ι
f f₁ f₂ : ι → α
g g₁ g₂ : ι → β
hg : ∀ i ∈ s, 0 < g i
i : ι
hi : i ∈ s
j : ι
hj : j ∈ s
⊢ g⁻¹ j < g⁻¹ i → f i ≤ f j ↔ g i < g j → f i ≤ f j
state_after: no goals
Theorem: Finset.sym2_toFinset
File: Mathlib/Data/Finset/Sym.lean

tactic: ext z
state_before: α : Type u_1
s t : Finset α
a b : α
inst✝ : DecidableEq α
m : Multiset α
⊢ m.toFinset.sym2 = m.sym2.toFinset
state_after: case a
α : Type u_1
s t : Finset α
a b : α
inst✝ : DecidableEq α
m : Multiset α
z : Sym2 α
⊢ z ∈ m.toFinset.sym2 ↔ z ∈ m.sym2.toFinset

tactic: refine z.ind fun x y ↦ ?_
state_before: case a
α : Type u_1
s t : Finset α
a b : α
inst✝ : DecidableEq α
m : Multiset α
z : Sym2 α
⊢ z ∈ m.toFinset.sym2 ↔ z ∈ m.sym2.toFinset
state_after: case a
α : Type u_1
s t : Finset α
a b : α
inst✝ : DecidableEq α
m : Multiset α
z : Sym2 α
x y : α
⊢ s(x, y) ∈ m.toFinset.sym2 ↔ s(x, y) ∈ m.sym2.toFinset

tactic: simp only [mk_mem_sym2_iff, Multiset.mem_toFinset, Multiset.mk_mem_sym2_iff]
state_before: case a
α : Type u_1
s t : Finset α
a b : α
inst✝ : DecidableEq α
m : Multiset α
z : Sym2 α
x y : α
⊢ s(x, y) ∈ m.toFinset.sym2 ↔ s(x, y) ∈ m.sym2.toFinset
state_after: no goals
Theorem: tendsto_factorial_div_pow_self_atTop
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: refine (eventually_gt_atTop 0).mono fun n hn ↦ ?_
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
⊢ ∀ᶠ (b : ℕ) in atTop, ↑b ! / ↑b ^ b ≤ 1 / ↑b
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
n : ℕ
hn : 0 < n
⊢ ↑n ! / ↑n ^ n ≤ 1 / ↑n

tactic: rcases Nat.exists_eq_succ_of_ne_zero hn.ne.symm with ⟨k, rfl⟩
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
n : ℕ
hn : 0 < n
⊢ ↑n ! / ↑n ^ n ≤ 1 / ↑n
state_after: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
⊢ ↑k.succ ! / ↑k.succ ^ k.succ ≤ 1 / ↑k.succ

tactic: rw [← prod_range_add_one_eq_factorial, pow_eq_prod_const, div_eq_mul_inv, ← inv_eq_one_div,
  prod_natCast, Nat.cast_succ, ← prod_inv_distrib, ← prod_mul_distrib,
  Finset.prod_range_succ']
state_before: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
⊢ ↑k.succ ! / ↑k.succ ^ k.succ ≤ 1 / ↑k.succ
state_after: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
⊢ (∏ k_1 ∈ Finset.range k, ↑(k_1 + 1 + 1) * (↑k + 1)⁻¹) * (↑(0 + 1) * (↑k + 1)⁻¹) ≤ (↑k + 1)⁻¹

tactic: simp only [prod_range_succ', one_mul, Nat.cast_add, zero_add, Nat.cast_one]
state_before: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
⊢ (∏ k_1 ∈ Finset.range k, ↑(k_1 + 1 + 1) * (↑k + 1)⁻¹) * (↑(0 + 1) * (↑k + 1)⁻¹) ≤ (↑k + 1)⁻¹
state_after: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
⊢ (∏ x ∈ Finset.range k, (↑x + 1 + 1) * (↑k + 1)⁻¹) * (↑k + 1)⁻¹ ≤ (↑k + 1)⁻¹

tactic: refine
      mul_le_of_le_one_left (inv_nonneg.mpr <| mod_cast hn.le) (prod_le_one ?_ ?_) <;>
    intro x hx <;>
  rw [Finset.mem_range] at hx
state_before: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
⊢ (∏ x ∈ Finset.range k, (↑x + 1 + 1) * (↑k + 1)⁻¹) * (↑k + 1)⁻¹ ≤ (↑k + 1)⁻¹
state_after: case intro.refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
x : ℕ
hx : x < k
⊢ 0 ≤ (↑x + 1 + 1) * (↑k + 1)⁻¹

case intro.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
x : ℕ
hx : x < k
⊢ (↑x + 1 + 1) * (↑k + 1)⁻¹ ≤ 1

tactic: positivity
state_before: case intro.refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
x : ℕ
hx : x < k
⊢ 0 ≤ (↑x + 1 + 1) * (↑k + 1)⁻¹
state_after: no goals

tactic: refine (div_le_one <| mod_cast hn).mpr ?_
state_before: case intro.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
x : ℕ
hx : x < k
⊢ (↑x + 1 + 1) * (↑k + 1)⁻¹ ≤ 1
state_after: case intro.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
x : ℕ
hx : x < k
⊢ ↑x + 1 + 1 ≤ ↑k + 1

tactic: norm_cast
state_before: case intro.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
x : ℕ
hx : x < k
⊢ ↑x + 1 + 1 ≤ ↑k + 1
state_after: case intro.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
x : ℕ
hx : x < k
⊢ x + 1 + 1 ≤ k + 1

tactic: omega
state_before: case intro.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
k : ℕ
hn : 0 < k.succ
x : ℕ
hx : x < k
⊢ x + 1 + 1 ≤ k + 1
state_after: no goals
Theorem: le_mul_self
File: Mathlib/Algebra/Order/Monoid/Canonical/Defs.lean

tactic: rw [mul_comm]
state_before: α : Type u
inst✝ : CanonicallyOrderedCommMonoid α
a b c d : α
⊢ a ≤ b * a
state_after: α : Type u
inst✝ : CanonicallyOrderedCommMonoid α
a b c d : α
⊢ a ≤ a * b

tactic: exact le_self_mul
state_before: α : Type u
inst✝ : CanonicallyOrderedCommMonoid α
a b c d : α
⊢ a ≤ a * b
state_after: no goals
Theorem: Class.mem_sUnion
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: constructor
state_before: x y : Class
⊢ y ∈ ⋃₀ x ↔ ∃ z ∈ x, y ∈ z
state_after: case mp
x y : Class
⊢ y ∈ ⋃₀ x → ∃ z ∈ x, y ∈ z

case mpr
x y : Class
⊢ (∃ z ∈ x, y ∈ z) → y ∈ ⋃₀ x

tactic: rintro ⟨w, rfl, z, hzx, hwz⟩
state_before: case mp
x y : Class
⊢ y ∈ ⋃₀ x → ∃ z ∈ x, y ∈ z
state_after: case mp.intro.intro.intro.intro
x : Class
w : ZFSet
z : Set ZFSet
hzx : z ∈ x.classToCong
hwz : w ∈ z
⊢ ∃ z ∈ x, ↑w ∈ z

tactic: exact ⟨z, hzx, coe_mem.2 hwz⟩
state_before: case mp.intro.intro.intro.intro
x : Class
w : ZFSet
z : Set ZFSet
hzx : z ∈ x.classToCong
hwz : w ∈ z
⊢ ∃ z ∈ x, ↑w ∈ z
state_after: no goals

tactic: rintro ⟨w, hwx, z, rfl, hwz⟩
state_before: case mpr
x y : Class
⊢ (∃ z ∈ x, y ∈ z) → y ∈ ⋃₀ x
state_after: case mpr.intro.intro.intro.intro
x w : Class
hwx : w ∈ x
z : ZFSet
hwz : w z
⊢ ↑z ∈ ⋃₀ x

tactic: exact ⟨z, rfl, w, hwx, hwz⟩
state_before: case mpr.intro.intro.intro.intro
x w : Class
hwx : w ∈ x
z : ZFSet
hwz : w z
⊢ ↑z ∈ ⋃₀ x
state_after: no goals
Theorem: Polynomial.smeval_neg
File: Mathlib/Algebra/Polynomial/Smeval.lean

tactic: rw [← add_eq_zero_iff_eq_neg, ← smeval_add, add_left_neg, smeval_zero]
state_before: R : Type u_1
inst✝³ : Ring R
S : Type u_2
inst✝² : AddCommGroup S
inst✝¹ : Pow S ℕ
inst✝ : Module R S
p q : R[X]
x : S
⊢ (-p).smeval x = -p.smeval x
state_after: no goals
Theorem: deriv_tsum
File: Mathlib/Analysis/Calculus/SmoothSeries.lean

tactic: ext1 x
state_before: α : Type u_1
β : Type u_2
𝕜 : Type u_3
E : Type u_4
F : Type u_5
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : CompleteSpace F
u : α → ℝ
inst✝ : NormedSpace 𝕜 F
f : α → E → F
f' : α → E → E →L[𝕜] F
g g' : α → 𝕜 → F
v : ℕ → α → ℝ
s : Set E
t : Set 𝕜
x₀ x : E
y₀ y : 𝕜
N : ℕ∞
hu : Summable u
hg : ∀ (n : α), Differentiable 𝕜 (g n)
hg' : ∀ (n : α) (y : 𝕜), ‖deriv (g n) y‖ ≤ u n
hg0 : Summable fun n => g n y₀
⊢ (deriv fun y => ∑' (n : α), g n y) = fun y => ∑' (n : α), deriv (g n) y
state_after: case h
α : Type u_1
β : Type u_2
𝕜 : Type u_3
E : Type u_4
F : Type u_5
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : CompleteSpace F
u : α → ℝ
inst✝ : NormedSpace 𝕜 F
f : α → E → F
f' : α → E → E →L[𝕜] F
g g' : α → 𝕜 → F
v : ℕ → α → ℝ
s : Set E
t : Set 𝕜
x₀ x✝ : E
y₀ y : 𝕜
N : ℕ∞
hu : Summable u
hg : ∀ (n : α), Differentiable 𝕜 (g n)
hg' : ∀ (n : α) (y : 𝕜), ‖deriv (g n) y‖ ≤ u n
hg0 : Summable fun n => g n y₀
x : 𝕜
⊢ deriv (fun y => ∑' (n : α), g n y) x = ∑' (n : α), deriv (g n) x

tactic: exact deriv_tsum_apply hu hg hg' hg0 x
state_before: case h
α : Type u_1
β : Type u_2
𝕜 : Type u_3
E : Type u_4
F : Type u_5
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : CompleteSpace F
u : α → ℝ
inst✝ : NormedSpace 𝕜 F
f : α → E → F
f' : α → E → E →L[𝕜] F
g g' : α → 𝕜 → F
v : ℕ → α → ℝ
s : Set E
t : Set 𝕜
x₀ x✝ : E
y₀ y : 𝕜
N : ℕ∞
hu : Summable u
hg : ∀ (n : α), Differentiable 𝕜 (g n)
hg' : ∀ (n : α) (y : 𝕜), ‖deriv (g n) y‖ ≤ u n
hg0 : Summable fun n => g n y₀
x : 𝕜
⊢ deriv (fun y => ∑' (n : α), g n y) x = ∑' (n : α), deriv (g n) x
state_after: no goals
Theorem: Matrix.nonsing_inv_mul
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: cases (A.isUnit_iff_isUnit_det.mpr h).nonempty_invertible
state_before: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
h : IsUnit A.det
⊢ A⁻¹ * A = 1
state_after: case intro
l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
h : IsUnit A.det
val✝ : Invertible A
⊢ A⁻¹ * A = 1

tactic: rw [← invOf_eq_nonsing_inv, invOf_mul_self]
state_before: case intro
l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
h : IsUnit A.det
val✝ : Invertible A
⊢ A⁻¹ * A = 1
state_after: no goals
Theorem: Matrix.etaExpand_eq
File: Mathlib/Data/Matrix/Reflection.lean

tactic: simp_rw [etaExpand, FinVec.etaExpand_eq, Matrix.of]
state_before: l m✝ n✝ : ℕ
α : Type u_1
β : Type u_2
m n : ℕ
A : Matrix (Fin m) (Fin n) α
⊢ A.etaExpand = A
state_after: l m✝ n✝ : ℕ
α : Type u_1
β : Type u_2
m n : ℕ
A : Matrix (Fin m) (Fin n) α
⊢ ((Equiv.refl (Fin m → Fin n → α)) fun i j => A i j) = A

tactic: erw [Equiv.refl_apply]
state_before: l m✝ n✝ : ℕ
α : Type u_1
β : Type u_2
m n : ℕ
A : Matrix (Fin m) (Fin n) α
⊢ ((Equiv.refl (Fin m → Fin n → α)) fun i j => A i j) = A
state_after: no goals
Theorem: Finset.piecewise_le_piecewise'
File: Mathlib/Data/Finset/Piecewise.lean

tactic: by_cases hx : x ∈ s <;> simp [hx, *]
state_before: ι : Type u_1
π✝ : ι → Sort u_2
s : Finset ι
f✝ g✝ : (i : ι) → π✝ i
inst✝¹ : (j : ι) → Decidable (j ∈ s)
π : ι → Type u_3
t : Set ι
t' : (i : ι) → Set (π i)
f g f' g' h : (i : ι) → π i
inst✝ : (i : ι) → Preorder (π i)
hf : ∀ x ∈ s, f x ≤ f' x
hg : ∀ x ∉ s, g x ≤ g' x
x : ι
⊢ s.piecewise f g x ≤ s.piecewise f' g' x
state_after: no goals
Theorem: Invertible.congr
File: Mathlib/Algebra/Group/Invertible/Defs.lean

tactic: subst h
state_before: α : Type u
inst✝² : Monoid α
a b : α
inst✝¹ : Invertible a
inst✝ : Invertible b
h : a = b
⊢ ⅟a = ⅟b
state_after: α : Type u
inst✝² : Monoid α
a : α
inst✝¹ inst✝ : Invertible a
⊢ ⅟a = ⅟a

tactic: congr
state_before: α : Type u
inst✝² : Monoid α
a : α
inst✝¹ inst✝ : Invertible a
⊢ ⅟a = ⅟a
state_after: case h.e_5.h
α : Type u
inst✝² : Monoid α
a : α
inst✝¹ inst✝ : Invertible a
⊢ inst✝¹ = inst✝

tactic: apply Subsingleton.allEq
state_before: case h.e_5.h
α : Type u
inst✝² : Monoid α
a : α
inst✝¹ inst✝ : Invertible a
⊢ inst✝¹ = inst✝
state_after: no goals
Theorem: unitary.toUnits_comp_map
File: Mathlib/Algebra/Star/Unitary.lean

tactic: ext
state_before: R✝ : Type u_1
F : Type u_2
R : Type u_3
S : Type u_4
inst✝⁶ : Monoid R
inst✝⁵ : StarMul R
inst✝⁴ : Monoid S
inst✝³ : StarMul S
inst✝² : FunLike F R S
inst✝¹ : StarHomClass F R S
inst✝ : MonoidHomClass F R S
f : F
⊢ toUnits.comp (map f) = (Units.map ↑f).comp toUnits
state_after: case h.a
R✝ : Type u_1
F : Type u_2
R : Type u_3
S : Type u_4
inst✝⁶ : Monoid R
inst✝⁵ : StarMul R
inst✝⁴ : Monoid S
inst✝³ : StarMul S
inst✝² : FunLike F R S
inst✝¹ : StarHomClass F R S
inst✝ : MonoidHomClass F R S
f : F
x✝ : ↥(unitary R)
⊢ ↑((toUnits.comp (map f)) x✝) = ↑(((Units.map ↑f).comp toUnits) x✝)

tactic: rfl
state_before: case h.a
R✝ : Type u_1
F : Type u_2
R : Type u_3
S : Type u_4
inst✝⁶ : Monoid R
inst✝⁵ : StarMul R
inst✝⁴ : Monoid S
inst✝³ : StarMul S
inst✝² : FunLike F R S
inst✝¹ : StarHomClass F R S
inst✝ : MonoidHomClass F R S
f : F
x✝ : ↥(unitary R)
⊢ ↑((toUnits.comp (map f)) x✝) = ↑(((Units.map ↑f).comp toUnits) x✝)
state_after: no goals
Theorem: ArithmeticFunction.isMultiplicative_zeta
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: simp
state_before: R : Type u_1
⊢ ζ 1 = 1
state_after: no goals

tactic: simp (config := { contextual := true })
state_before: R : Type u_1
⊢ ∀ {m n : ℕ}, m ≠ 0 → n ≠ 0 → m.Coprime n → ζ (m * n) = ζ m * ζ n
state_after: no goals
Theorem: IsMulHom.comp
File: Mathlib/Deprecated/Group.lean

tactic: simp only [Function.comp, hf.map_mul, hg.map_mul]
state_before: α : Type u
β : Type v
inst✝² : Mul α
inst✝¹ : Mul β
γ : Type u_1
inst✝ : Mul γ
f : α → β
g : β → γ
hf : IsMulHom f
hg : IsMulHom g
x y : α
⊢ (g ∘ f) (x * y) = (g ∘ f) x * (g ∘ f) y
state_after: no goals
Theorem: pow_mul'
File: Mathlib/Algebra/Group/Defs.lean

tactic: rw [Nat.mul_comm, pow_mul]
state_before: G : Type u_1
M : Type u_2
inst✝ : Monoid M
a✝ b c : M
m✝ n✝ : ℕ
a : M
m n : ℕ
⊢ a ^ (m * n) = (a ^ n) ^ m
state_after: no goals
Theorem: pow_orderOf_eq_one
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: rw [orderOf, mul_left_iterate]
state_before: case convert_2
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x✝ y : G
n m : ℕ
x : G
⊢ x ^ orderOf x = (fun x_1 => x * x_1)^[minimalPeriod (fun x_1 => x * x_1) 1] 1
state_after: case convert_2
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x✝ y : G
n m : ℕ
x : G
⊢ x ^ minimalPeriod (fun x_1 => x * x_1) 1 = (fun x_1 => x ^ minimalPeriod (fun x_2 => x * x_2) 1 * x_1) 1

tactic: beta_reduce
state_before: case convert_2
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x✝ y : G
n m : ℕ
x : G
⊢ x ^ minimalPeriod (fun x_1 => x * x_1) 1 = (fun x_1 => x ^ minimalPeriod (fun x_2 => x * x_2) 1 * x_1) 1
state_after: case convert_2
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x✝ y : G
n m : ℕ
x : G
⊢ x ^ minimalPeriod (fun x_1 => x * x_1) 1 = x ^ minimalPeriod (fun x_1 => x * x_1) 1 * 1

tactic: rw [mul_one]
state_before: case convert_2
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x✝ y : G
n m : ℕ
x : G
⊢ x ^ minimalPeriod (fun x_1 => x * x_1) 1 = x ^ minimalPeriod (fun x_1 => x * x_1) 1 * 1
state_after: no goals