1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: HomologicalComplex.kernel_from_eq_kernel
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: rw [C.dFrom_eq r]
state_before: ι : Type u_1
V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
inst✝ : HasKernels V
i j : ι
r : c.Rel i j
⊢ kernelSubobject (C.dFrom i) = kernelSubobject (C.d i j)
state_after: ι : Type u_1
V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
inst✝ : HasKernels V
i j : ι
r : c.Rel i j
⊢ kernelSubobject (C.d i j ≫ (C.xNextIso r).inv) = kernelSubobject (C.d i j)

tactic: apply kernelSubobject_comp_mono
state_before: ι : Type u_1
V : Type u
inst✝² : Category.{v, u} V
inst✝¹ : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
inst✝ : HasKernels V
i j : ι
r : c.Rel i j
⊢ kernelSubobject (C.d i j ≫ (C.xNextIso r).inv) = kernelSubobject (C.d i j)
state_after: no goals
Theorem: List.toFinset_cons
File: Mathlib/Data/Finset/Basic.lean

tactic: by_cases h : a ∈ l <;> simp [Finset.insert_val', Multiset.dedup_cons, h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
l l' : List α
a : α
⊢ (a :: l).toFinset.val = (insert a l.toFinset).val
state_after: no goals
Theorem: Finset.Nonempty.of_disjSups_right
File: Mathlib/Data/Finset/Sups.lean

tactic: simp_rw [Finset.Nonempty, mem_disjSups]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ (s ○ t).Nonempty → t.Nonempty
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ (∃ x, ∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = x) → ∃ x, x ∈ t

tactic: exact fun ⟨_, _, _, b, hb, _⟩ => ⟨b, hb⟩
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ (∃ x, ∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = x) → ∃ x, x ∈ t
state_after: no goals
Theorem: dist_smul_le
File: Mathlib/Analysis/Normed/MulAction.lean

tactic: simpa only [dist_eq_norm, sub_zero] using dist_smul_pair s x y
state_before: α : Type u_1
β : Type u_2
inst✝³ : SeminormedAddGroup α
inst✝² : SeminormedAddGroup β
inst✝¹ : SMulZeroClass α β
inst✝ : BoundedSMul α β
s : α
x y : β
⊢ dist (s • x) (s • y) ≤ ‖s‖ * dist x y
state_after: no goals
Theorem: Nat.ceil_one
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [← Nat.cast_one, ceil_natCast]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a : α
n : ℕ
⊢ ⌈1⌉₊ = 1
state_after: no goals
Theorem: List.rotate_injective
File: Mathlib/Data/List/Rotate.lean

tactic: rintro l l' (h : l.rotate n = l'.rotate n)
state_before: α : Type u
n : ℕ
⊢ Injective fun l => l.rotate n
state_after: α : Type u
n : ℕ
l l' : List α
h : l.rotate n = l'.rotate n
⊢ l = l'

tactic: have hle : l.length = l'.length := (l.length_rotate n).symm.trans (h.symm ▸ l'.length_rotate n)
state_before: α : Type u
n : ℕ
l l' : List α
h : l.rotate n = l'.rotate n
⊢ l = l'
state_after: α : Type u
n : ℕ
l l' : List α
h : l.rotate n = l'.rotate n
hle : l.length = l'.length
⊢ l = l'

tactic: rw [rotate_eq_drop_append_take_mod, rotate_eq_drop_append_take_mod] at h
state_before: α : Type u
n : ℕ
l l' : List α
h : l.rotate n = l'.rotate n
hle : l.length = l'.length
⊢ l = l'
state_after: α : Type u
n : ℕ
l l' : List α
h : drop (n % l.length) l ++ take (n % l.length) l = drop (n % l'.length) l' ++ take (n % l'.length) l'
hle : l.length = l'.length
⊢ l = l'

tactic: obtain ⟨hd, ht⟩ := append_inj h (by simp_all)
state_before: α : Type u
n : ℕ
l l' : List α
h : drop (n % l.length) l ++ take (n % l.length) l = drop (n % l'.length) l' ++ take (n % l'.length) l'
hle : l.length = l'.length
⊢ l = l'
state_after: case intro
α : Type u
n : ℕ
l l' : List α
h : drop (n % l.length) l ++ take (n % l.length) l = drop (n % l'.length) l' ++ take (n % l'.length) l'
hle : l.length = l'.length
hd : drop (n % l.length) l = drop (n % l'.length) l'
ht : take (n % l.length) l = take (n % l'.length) l'
⊢ l = l'

tactic: rw [← take_append_drop _ l, ht, hd, take_append_drop]
state_before: case intro
α : Type u
n : ℕ
l l' : List α
h : drop (n % l.length) l ++ take (n % l.length) l = drop (n % l'.length) l' ++ take (n % l'.length) l'
hle : l.length = l'.length
hd : drop (n % l.length) l = drop (n % l'.length) l'
ht : take (n % l.length) l = take (n % l'.length) l'
⊢ l = l'
state_after: no goals

tactic: simp_all
state_before: α : Type u
n : ℕ
l l' : List α
h : drop (n % l.length) l ++ take (n % l.length) l = drop (n % l'.length) l' ++ take (n % l'.length) l'
hle : l.length = l'.length
⊢ (drop (n % l.length) l).length = (drop (n % l'.length) l').length
state_after: no goals
Theorem: Cycle.formPerm_subsingleton
File: Mathlib/GroupTheory/Perm/Cycle/Concrete.lean

tactic: induction' s using Quot.inductionOn with s
state_before: α : Type u_1
inst✝ : DecidableEq α
s✝ s' s : Cycle α
h : s.Subsingleton
⊢ s.formPerm ⋯ = 1
state_after: case h
α : Type u_1
inst✝ : DecidableEq α
s✝ s' : Cycle α
s : List α
h : Subsingleton (Quot.mk Setoid.r s)
⊢ formPerm (Quot.mk Setoid.r s) ⋯ = 1

tactic: simp only [formPerm_coe, mk_eq_coe]
state_before: case h
α : Type u_1
inst✝ : DecidableEq α
s✝ s' : Cycle α
s : List α
h : Subsingleton (Quot.mk Setoid.r s)
⊢ formPerm (Quot.mk Setoid.r s) ⋯ = 1
state_after: case h
α : Type u_1
inst✝ : DecidableEq α
s✝ s' : Cycle α
s : List α
h : Subsingleton (Quot.mk Setoid.r s)
⊢ s.formPerm = 1

tactic: simp only [length_subsingleton_iff, length_coe, mk_eq_coe] at h
state_before: case h
α : Type u_1
inst✝ : DecidableEq α
s✝ s' : Cycle α
s : List α
h : Subsingleton (Quot.mk Setoid.r s)
⊢ s.formPerm = 1
state_after: case h
α : Type u_1
inst✝ : DecidableEq α
s✝ s' : Cycle α
s : List α
h : s.length ≤ 1
⊢ s.formPerm = 1

tactic: cases' s with hd tl
state_before: case h
α : Type u_1
inst✝ : DecidableEq α
s✝ s' : Cycle α
s : List α
h : s.length ≤ 1
⊢ s.formPerm = 1
state_after: case h.nil
α : Type u_1
inst✝ : DecidableEq α
s s' : Cycle α
h : [].length ≤ 1
⊢ [].formPerm = 1

case h.cons
α : Type u_1
inst✝ : DecidableEq α
s s' : Cycle α
hd : α
tl : List α
h : (hd :: tl).length ≤ 1
⊢ (hd :: tl).formPerm = 1

tactic: simp
state_before: case h.nil
α : Type u_1
inst✝ : DecidableEq α
s s' : Cycle α
h : [].length ≤ 1
⊢ [].formPerm = 1
state_after: no goals

tactic: simp only [length_eq_zero, add_le_iff_nonpos_left, List.length, nonpos_iff_eq_zero] at h
state_before: case h.cons
α : Type u_1
inst✝ : DecidableEq α
s s' : Cycle α
hd : α
tl : List α
h : (hd :: tl).length ≤ 1
⊢ (hd :: tl).formPerm = 1
state_after: case h.cons
α : Type u_1
inst✝ : DecidableEq α
s s' : Cycle α
hd : α
tl : List α
h : tl = []
⊢ (hd :: tl).formPerm = 1

tactic: simp [h]
state_before: case h.cons
α : Type u_1
inst✝ : DecidableEq α
s s' : Cycle α
hd : α
tl : List α
h : tl = []
⊢ (hd :: tl).formPerm = 1
state_after: no goals
Theorem: MvPolynomial.weightedHomogeneousComponent_isWeightedHomogeneous
File: Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean

tactic: classical
intro d hd
contrapose! hd
rw [coeff_weightedHomogeneousComponent, if_neg hd]
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
⊢ IsWeightedHomogeneous w ((weightedHomogeneousComponent w n) φ) n
state_after: no goals

tactic: intro d hd
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
⊢ IsWeightedHomogeneous w ((weightedHomogeneousComponent w n) φ) n
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
d : σ →₀ ℕ
hd : coeff d ((weightedHomogeneousComponent w n) φ) ≠ 0
⊢ (weightedDegree w) d = n

tactic: contrapose! hd
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
d : σ →₀ ℕ
hd : coeff d ((weightedHomogeneousComponent w n) φ) ≠ 0
⊢ (weightedDegree w) d = n
state_after: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
d : σ →₀ ℕ
hd : (weightedDegree w) d ≠ n
⊢ coeff d ((weightedHomogeneousComponent w n) φ) = 0

tactic: rw [coeff_weightedHomogeneousComponent, if_neg hd]
state_before: R : Type u_1
M : Type u_2
inst✝¹ : CommSemiring R
σ : Type u_3
inst✝ : AddCommMonoid M
w : σ → M
n : M
φ ψ : MvPolynomial σ R
d : σ →₀ ℕ
hd : (weightedDegree w) d ≠ n
⊢ coeff d ((weightedHomogeneousComponent w n) φ) = 0
state_after: no goals
Theorem: Metric.closure_eq_iInter_cthickening
File: Mathlib/Topology/MetricSpace/Thickening.lean

tactic: rw [← cthickening_zero]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s t : Set α
x : α
E : Set α
⊢ closure E = ⋂ δ, ⋂ (_ : 0 < δ), cthickening δ E
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s t : Set α
x : α
E : Set α
⊢ cthickening 0 E = ⋂ δ, ⋂ (_ : 0 < δ), cthickening δ E

tactic: exact cthickening_eq_iInter_cthickening E
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s t : Set α
x : α
E : Set α
⊢ cthickening 0 E = ⋂ δ, ⋂ (_ : 0 < δ), cthickening δ E
state_after: no goals
Theorem: ProbabilityTheory.kernel.integral_withDensity
File: Mathlib/Probability/Kernel/WithDensity.lean

tactic: rw [kernel.withDensity_apply, integral_withDensity_eq_integral_smul]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α β)
f✝ : α → β → ℝ≥0∞
E : Type u_4
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
f : β → E
inst✝ : IsSFiniteKernel κ
a : α
g : α → β → ℝ≥0
hg : Measurable (Function.uncurry g)
⊢ ∫ (b : β), f b ∂(withDensity κ fun a b => ↑(g a b)) a = ∫ (b : β), g a b • f b ∂κ a
state_after: case f_meas
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α β)
f✝ : α → β → ℝ≥0∞
E : Type u_4
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
f : β → E
inst✝ : IsSFiniteKernel κ
a : α
g : α → β → ℝ≥0
hg : Measurable (Function.uncurry g)
⊢ Measurable (g a)

case hf
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α β)
f✝ : α → β → ℝ≥0∞
E : Type u_4
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
f : β → E
inst✝ : IsSFiniteKernel κ
a : α
g : α → β → ℝ≥0
hg : Measurable (Function.uncurry g)
⊢ Measurable (Function.uncurry fun a b => ↑(g a b))

tactic: exact Measurable.of_uncurry_left hg
state_before: case f_meas
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α β)
f✝ : α → β → ℝ≥0∞
E : Type u_4
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
f : β → E
inst✝ : IsSFiniteKernel κ
a : α
g : α → β → ℝ≥0
hg : Measurable (Function.uncurry g)
⊢ Measurable (g a)
state_after: no goals

tactic: exact measurable_coe_nnreal_ennreal.comp hg
state_before: case hf
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α β)
f✝ : α → β → ℝ≥0∞
E : Type u_4
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
f : β → E
inst✝ : IsSFiniteKernel κ
a : α
g : α → β → ℝ≥0
hg : Measurable (Function.uncurry g)
⊢ Measurable (Function.uncurry fun a b => ↑(g a b))
state_after: no goals
Theorem: RingFilterBasis.submodulesBasisIsBasis
File: Mathlib/Topology/Algebra/Nonarchimedean/Bases.lean

tactic: letI := BR.topology
state_before: ι : Type u_1
R : Type u_2
A : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Algebra R A
M : Type u_4
inst✝¹ : AddCommGroup M
inst✝ : Module R M
BR : RingFilterBasis R
B : ι → Submodule R M
hB : BR.SubmodulesBasis B
x✝ : TopologicalSpace R := BR.topology
⊢ ∀ (m : M) (i : ι), ∀ᶠ (a : R) in 𝓝 0, a • m ∈ B i
state_after: ι : Type u_1
R : Type u_2
A : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Algebra R A
M : Type u_4
inst✝¹ : AddCommGroup M
inst✝ : Module R M
BR : RingFilterBasis R
B : ι → Submodule R M
hB : BR.SubmodulesBasis B
x✝ : TopologicalSpace R := BR.topology
this : TopologicalSpace R := BR.topology
⊢ ∀ (m : M) (i : ι), ∀ᶠ (a : R) in 𝓝 0, a • m ∈ B i

tactic: intro m i
state_before: ι : Type u_1
R : Type u_2
A : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Algebra R A
M : Type u_4
inst✝¹ : AddCommGroup M
inst✝ : Module R M
BR : RingFilterBasis R
B : ι → Submodule R M
hB : BR.SubmodulesBasis B
x✝ : TopologicalSpace R := BR.topology
this : TopologicalSpace R := BR.topology
⊢ ∀ (m : M) (i : ι), ∀ᶠ (a : R) in 𝓝 0, a • m ∈ B i
state_after: ι : Type u_1
R : Type u_2
A : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Algebra R A
M : Type u_4
inst✝¹ : AddCommGroup M
inst✝ : Module R M
BR : RingFilterBasis R
B : ι → Submodule R M
hB : BR.SubmodulesBasis B
x✝ : TopologicalSpace R := BR.topology
this : TopologicalSpace R := BR.topology
m : M
i : ι
⊢ ∀ᶠ (a : R) in 𝓝 0, a • m ∈ B i

tactic: rcases hB.smul m i with ⟨V, V_in, hV⟩
state_before: ι : Type u_1
R : Type u_2
A : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Algebra R A
M : Type u_4
inst✝¹ : AddCommGroup M
inst✝ : Module R M
BR : RingFilterBasis R
B : ι → Submodule R M
hB : BR.SubmodulesBasis B
x✝ : TopologicalSpace R := BR.topology
this : TopologicalSpace R := BR.topology
m : M
i : ι
⊢ ∀ᶠ (a : R) in 𝓝 0, a • m ∈ B i
state_after: case intro.intro
ι : Type u_1
R : Type u_2
A : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Algebra R A
M : Type u_4
inst✝¹ : AddCommGroup M
inst✝ : Module R M
BR : RingFilterBasis R
B : ι → Submodule R M
hB : BR.SubmodulesBasis B
x✝ : TopologicalSpace R := BR.topology
this : TopologicalSpace R := BR.topology
m : M
i : ι
V : Set R
V_in : V ∈ BR
hV : V ⊆ (fun x => x • m) ⁻¹' ↑(B i)
⊢ ∀ᶠ (a : R) in 𝓝 0, a • m ∈ B i

tactic: exact mem_of_superset (BR.toAddGroupFilterBasis.mem_nhds_zero V_in) hV
state_before: case intro.intro
ι : Type u_1
R : Type u_2
A : Type u_3
inst✝⁴ : CommRing R
inst✝³ : CommRing A
inst✝² : Algebra R A
M : Type u_4
inst✝¹ : AddCommGroup M
inst✝ : Module R M
BR : RingFilterBasis R
B : ι → Submodule R M
hB : BR.SubmodulesBasis B
x✝ : TopologicalSpace R := BR.topology
this : TopologicalSpace R := BR.topology
m : M
i : ι
V : Set R
V_in : V ∈ BR
hV : V ⊆ (fun x => x • m) ⁻¹' ↑(B i)
⊢ ∀ᶠ (a : R) in 𝓝 0, a • m ∈ B i
state_after: no goals
Theorem: HurwitzZeta.hurwitzZetaEven_neg_two_mul_nat_add_one
File: Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean

tactic: have : (-2 : ℂ) * (n + 1) ≠ 0 :=
  mul_ne_zero (neg_ne_zero.mpr two_ne_zero) (Nat.cast_add_one_ne_zero n)
state_before: a : UnitAddCircle
n : ℕ
⊢ hurwitzZetaEven a (-2 * (↑n + 1)) = 0
state_after: a : UnitAddCircle
n : ℕ
this : -2 * (↑n + 1) ≠ 0
⊢ hurwitzZetaEven a (-2 * (↑n + 1)) = 0

tactic: rw [hurwitzZetaEven, Function.update_noteq this,
  Gammaℝ_eq_zero_iff.mpr ⟨n + 1, by rw [neg_mul, Nat.cast_add_one]⟩, div_zero]
state_before: a : UnitAddCircle
n : ℕ
this : -2 * (↑n + 1) ≠ 0
⊢ hurwitzZetaEven a (-2 * (↑n + 1)) = 0
state_after: no goals

tactic: rw [neg_mul, Nat.cast_add_one]
state_before: a : UnitAddCircle
n : ℕ
this : -2 * (↑n + 1) ≠ 0
⊢ -2 * (↑n + 1) = -(2 * ↑(n + 1))
state_after: no goals
Theorem: Nat.eq_of_factorization_eq
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: simpa only [List.perm_iff_count, factors_count_eq] using h
state_before: a✝ b✝ m n p a b : ℕ
ha : a ≠ 0
hb : b ≠ 0
h : ∀ (p : ℕ), a.factorization p = b.factorization p
⊢ a.factors ~ b.factors
state_after: no goals
Theorem: Multiset.mem_of_mem_nsmul
File: Mathlib/Data/Multiset/Basic.lean

tactic: induction' n with n ih
state_before: α : Type u_1
β : Type v
γ : Type u_2
a : α
s : Multiset α
n : ℕ
h : a ∈ n • s
⊢ a ∈ s
state_after: case zero
α : Type u_1
β : Type v
γ : Type u_2
a : α
s : Multiset α
h : a ∈ 0 • s
⊢ a ∈ s

case succ
α : Type u_1
β : Type v
γ : Type u_2
a : α
s : Multiset α
n : ℕ
ih : a ∈ n • s → a ∈ s
h : a ∈ (n + 1) • s
⊢ a ∈ s

tactic: rw [zero_nsmul] at h
state_before: case zero
α : Type u_1
β : Type v
γ : Type u_2
a : α
s : Multiset α
h : a ∈ 0 • s
⊢ a ∈ s
state_after: case zero
α : Type u_1
β : Type v
γ : Type u_2
a : α
s : Multiset α
h : a ∈ 0
⊢ a ∈ s

tactic: exact absurd h (not_mem_zero _)
state_before: case zero
α : Type u_1
β : Type v
γ : Type u_2
a : α
s : Multiset α
h : a ∈ 0
⊢ a ∈ s
state_after: no goals

tactic: rw [succ_nsmul, mem_add] at h
state_before: case succ
α : Type u_1
β : Type v
γ : Type u_2
a : α
s : Multiset α
n : ℕ
ih : a ∈ n • s → a ∈ s
h : a ∈ (n + 1) • s
⊢ a ∈ s
state_after: case succ
α : Type u_1
β : Type v
γ : Type u_2
a : α
s : Multiset α
n : ℕ
ih : a ∈ n • s → a ∈ s
h : a ∈ n • s ∨ a ∈ s
⊢ a ∈ s

tactic: exact h.elim ih id
state_before: case succ
α : Type u_1
β : Type v
γ : Type u_2
a : α
s : Multiset α
n : ℕ
ih : a ∈ n • s → a ∈ s
h : a ∈ n • s ∨ a ∈ s
⊢ a ∈ s
state_after: no goals
Theorem: UnitalShelf.assoc
File: Mathlib/Algebra/Quandle.lean

tactic: rw [self_distrib, self_distrib, act_act_self_eq, act_self_act_eq]
state_before: S : Type u_1
inst✝ : UnitalShelf S
x y z : S
⊢ (x ◃ y) ◃ z = x ◃ y ◃ z
state_after: no goals
Theorem: LeftInvariantDerivation.comp_L
File: Mathlib/Geometry/Manifold/Algebra/LeftInvariantDerivation.lean

tactic: ext h
state_before: 𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g h : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X Y : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
⊢ (X f).comp (𝑳 I g) = X (f.comp (𝑳 I g))
state_after: case h
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g h✝ : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X Y : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
h : G
⊢ ((X f).comp (𝑳 I g)) h = (X (f.comp (𝑳 I g))) h

tactic: rw [ContMDiffMap.comp_apply, L_apply, ← evalAt_apply, evalAt_mul, apply_hfdifferential,
  apply_fdifferential, evalAt_apply]
state_before: case h
𝕜 : Type u_1
inst✝⁹ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁶ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
G : Type u_4
inst✝⁵ : TopologicalSpace G
inst✝⁴ : ChartedSpace H G
inst✝³ : Monoid G
inst✝² : SmoothMul I G
g h✝ : G
M : Type u_5
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
x : M
r : 𝕜
X Y : LeftInvariantDerivation I G
f f' : C^⊤⟮I, G; 𝓘(𝕜, 𝕜), 𝕜⟯
h : G
⊢ ((X f).comp (𝑳 I g)) h = (X (f.comp (𝑳 I g))) h
state_after: no goals
Theorem: CategoryTheory.Adjunction.localization_counit_app
File: Mathlib/CategoryTheory/Localization/Adjunction.lean

tactic: apply Localization.η_app
state_before: C₁ : Type u_1
C₂ : Type u_2
D₁ : Type u_3
D₂ : Type u_4
inst✝⁷ : Category.{u_8, u_1} C₁
inst✝⁶ : Category.{u_7, u_2} C₂
inst✝⁵ : Category.{u_6, u_3} D₁
inst✝⁴ : Category.{u_5, u_4} D₂
G : C₁ ⥤ C₂
F : C₂ ⥤ C₁
adj : G ⊣ F
L₁ : C₁ ⥤ D₁
W₁ : MorphismProperty C₁
inst✝³ : L₁.IsLocalization W₁
L₂ : C₂ ⥤ D₂
W₂ : MorphismProperty C₂
inst✝² : L₂.IsLocalization W₂
G' : D₁ ⥤ D₂
F' : D₂ ⥤ D₁
inst✝¹ : CatCommSq G L₁ L₂ G'
inst✝ : CatCommSq F L₂ L₁ F'
X₂ : C₂
⊢ (adj.localization L₁ W₁ L₂ W₂ G' F').counit.app (L₂.obj X₂) =
    G'.map ((CatCommSq.iso F L₂ L₁ F').inv.app X₂) ≫
      (CatCommSq.iso G L₁ L₂ G').inv.app (F.obj X₂) ≫ L₂.map (adj.counit.app X₂)
state_after: no goals
Theorem: List.not_mem_range_self
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp
state_before: n : Nat
⊢ ¬n ∈ range n
state_after: no goals
Theorem: IsLUB.mem_of_not_isSuccLimit
File: Mathlib/Order/SuccPred/CompleteLinearOrder.lean

tactic: obtain (rfl|hs') := s.eq_empty_or_nonempty
state_before: ι : Type u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
s : Set α
x : α
hs : IsLUB s x
hx : ¬IsSuccLimit x
⊢ x ∈ s
state_after: case inl
ι : Type u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
x : α
hx : ¬IsSuccLimit x
hs : IsLUB ∅ x
⊢ x ∈ ∅

case inr
ι : Type u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
s : Set α
x : α
hs : IsLUB s x
hx : ¬IsSuccLimit x
hs' : s.Nonempty
⊢ x ∈ s

tactic: simp [show x = ⊥ by simpa using hs, isSuccLimit_bot] at hx
state_before: case inl
ι : Type u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
x : α
hx : ¬IsSuccLimit x
hs : IsLUB ∅ x
⊢ x ∈ ∅
state_after: no goals

tactic: simpa using hs
state_before: ι : Type u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
x : α
hx : ¬IsSuccLimit x
hs : IsLUB ∅ x
⊢ x = ⊥
state_after: no goals

tactic: exact hs.mem_of_nonempty_of_not_isSuccLimit hs' hx
state_before: case inr
ι : Type u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
s : Set α
x : α
hs : IsLUB s x
hx : ¬IsSuccLimit x
hs' : s.Nonempty
⊢ x ∈ s
state_after: no goals
Theorem: PowerSeries.derivative_invOf
File: Mathlib/RingTheory/PowerSeries/Derivative.lean

tactic: rw [Derivation.leibniz_invOf, smul_eq_mul]
state_before: R : Type u_1
inst✝¹ : CommRing R
f : R⟦X⟧
inst✝ : Invertible f
⊢ (d⁄dX R) ⅟f = -⅟f ^ 2 * (d⁄dX R) f
state_after: no goals
Theorem: mem_nhds_uniformity_iff_right
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: simp only [nhds_eq_comap_uniformity, mem_comap_prod_mk]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
x : α
s : Set α
⊢ s ∈ 𝓝 x ↔ {p | p.1 = x → p.2 ∈ s} ∈ 𝓤 α
state_after: no goals
Theorem: Monoid.CoprodI.NeWord.mulHead_head
File: Mathlib/GroupTheory/CoprodI.lean

tactic: induction w
state_before: ι : Type u_1
M : ι → Type u_2
inst✝¹ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝ : Monoid N
i j : ι
w : NeWord M i j
x : M i
hnotone : x * w.head ≠ 1
⊢ (w.mulHead x hnotone).head = x * w.head
state_after: case singleton
ι : Type u_1
M : ι → Type u_2
inst✝¹ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝ : Monoid N
i j i✝ : ι
x✝ : M i✝
a✝ : x✝ ≠ 1
x : M i✝
hnotone : x * (singleton x✝ a✝).head ≠ 1
⊢ ((singleton x✝ a✝).mulHead x hnotone).head = x * (singleton x✝ a✝).head

case append
ι : Type u_1
M : ι → Type u_2
inst✝¹ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝ : Monoid N
i j i✝ j✝ k✝ l✝ : ι
_w₁✝ : NeWord M i✝ j✝
_hne✝ : j✝ ≠ k✝
_w₂✝ : NeWord M k✝ l✝
_w₁_ih✝ : ∀ (x : M i✝) (hnotone : x * _w₁✝.head ≠ 1), (_w₁✝.mulHead x hnotone).head = x * _w₁✝.head
_w₂_ih✝ : ∀ (x : M k✝) (hnotone : x * _w₂✝.head ≠ 1), (_w₂✝.mulHead x hnotone).head = x * _w₂✝.head
x : M i✝
hnotone : x * (_w₁✝.append _hne✝ _w₂✝).head ≠ 1
⊢ ((_w₁✝.append _hne✝ _w₂✝).mulHead x hnotone).head = x * (_w₁✝.append _hne✝ _w₂✝).head

tactic: rfl
state_before: case singleton
ι : Type u_1
M : ι → Type u_2
inst✝¹ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝ : Monoid N
i j i✝ : ι
x✝ : M i✝
a✝ : x✝ ≠ 1
x : M i✝
hnotone : x * (singleton x✝ a✝).head ≠ 1
⊢ ((singleton x✝ a✝).mulHead x hnotone).head = x * (singleton x✝ a✝).head
state_after: no goals

tactic: simp [*]
state_before: case append
ι : Type u_1
M : ι → Type u_2
inst✝¹ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝ : Monoid N
i j i✝ j✝ k✝ l✝ : ι
_w₁✝ : NeWord M i✝ j✝
_hne✝ : j✝ ≠ k✝
_w₂✝ : NeWord M k✝ l✝
_w₁_ih✝ : ∀ (x : M i✝) (hnotone : x * _w₁✝.head ≠ 1), (_w₁✝.mulHead x hnotone).head = x * _w₁✝.head
_w₂_ih✝ : ∀ (x : M k✝) (hnotone : x * _w₂✝.head ≠ 1), (_w₂✝.mulHead x hnotone).head = x * _w₂✝.head
x : M i✝
hnotone : x * (_w₁✝.append _hne✝ _w₂✝).head ≠ 1
⊢ ((_w₁✝.append _hne✝ _w₂✝).mulHead x hnotone).head = x * (_w₁✝.append _hne✝ _w₂✝).head
state_after: no goals