1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Multiset.dedup_bind_dedup
File: Mathlib/Data/Multiset/Bind.lean

tactic: ext x
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
⊢ (s.dedup.bind f).dedup = (s.bind f).dedup
state_after: case a
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
x : β
⊢ count x (s.dedup.bind f).dedup = count x (s.bind f).dedup

tactic: simp_rw [count_dedup]
state_before: case a
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
x : β
⊢ count x (s.dedup.bind f).dedup = count x (s.bind f).dedup
state_after: case a
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
x : β
⊢ (if x ∈ s.dedup.bind f then 1 else 0) = if x ∈ s.bind f then 1 else 0

tactic: refine if_congr ?_ rfl rfl
state_before: case a
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
x : β
⊢ (if x ∈ s.dedup.bind f then 1 else 0) = if x ∈ s.bind f then 1 else 0
state_after: case a
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
x : β
⊢ x ∈ s.dedup.bind f ↔ x ∈ s.bind f

tactic: simp
state_before: case a
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
x : β
⊢ x ∈ s.dedup.bind f ↔ x ∈ s.bind f
state_after: no goals
Theorem: ContinuousMultilinearMap.continuous_eval_const
File: Mathlib/Topology/Algebra/Module/Multilinear/Topology.lean

tactic: letI := TopologicalAddGroup.toUniformSpace F
state_before: 𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝⁸ : NormedField 𝕜
inst✝⁷ : (i : ι) → TopologicalSpace (E i)
inst✝⁶ : (i : ι) → AddCommGroup (E i)
inst✝⁵ : (i : ι) → Module 𝕜 (E i)
inst✝⁴ : AddCommGroup F
inst✝³ : Module 𝕜 F
inst✝² : TopologicalSpace F
inst✝¹ : TopologicalAddGroup F
inst✝ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
x : (i : ι) → E i
⊢ Continuous fun p => p x
state_after: 𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝⁸ : NormedField 𝕜
inst✝⁷ : (i : ι) → TopologicalSpace (E i)
inst✝⁶ : (i : ι) → AddCommGroup (E i)
inst✝⁵ : (i : ι) → Module 𝕜 (E i)
inst✝⁴ : AddCommGroup F
inst✝³ : Module 𝕜 F
inst✝² : TopologicalSpace F
inst✝¹ : TopologicalAddGroup F
inst✝ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
x : (i : ι) → E i
this : UniformSpace F := TopologicalAddGroup.toUniformSpace F
⊢ Continuous fun p => p x

tactic: haveI := comm_topologicalAddGroup_is_uniform (G := F)
state_before: 𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝⁸ : NormedField 𝕜
inst✝⁷ : (i : ι) → TopologicalSpace (E i)
inst✝⁶ : (i : ι) → AddCommGroup (E i)
inst✝⁵ : (i : ι) → Module 𝕜 (E i)
inst✝⁴ : AddCommGroup F
inst✝³ : Module 𝕜 F
inst✝² : TopologicalSpace F
inst✝¹ : TopologicalAddGroup F
inst✝ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
x : (i : ι) → E i
this : UniformSpace F := TopologicalAddGroup.toUniformSpace F
⊢ Continuous fun p => p x
state_after: 𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝⁸ : NormedField 𝕜
inst✝⁷ : (i : ι) → TopologicalSpace (E i)
inst✝⁶ : (i : ι) → AddCommGroup (E i)
inst✝⁵ : (i : ι) → Module 𝕜 (E i)
inst✝⁴ : AddCommGroup F
inst✝³ : Module 𝕜 F
inst✝² : TopologicalSpace F
inst✝¹ : TopologicalAddGroup F
inst✝ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
x : (i : ι) → E i
this✝ : UniformSpace F := TopologicalAddGroup.toUniformSpace F
this : UniformAddGroup F
⊢ Continuous fun p => p x

tactic: exact (uniformContinuous_eval_const x).continuous
state_before: 𝕜 : Type u_1
ι : Type u_2
E : ι → Type u_3
F : Type u_4
inst✝⁸ : NormedField 𝕜
inst✝⁷ : (i : ι) → TopologicalSpace (E i)
inst✝⁶ : (i : ι) → AddCommGroup (E i)
inst✝⁵ : (i : ι) → Module 𝕜 (E i)
inst✝⁴ : AddCommGroup F
inst✝³ : Module 𝕜 F
inst✝² : TopologicalSpace F
inst✝¹ : TopologicalAddGroup F
inst✝ : ∀ (i : ι), ContinuousSMul 𝕜 (E i)
x : (i : ι) → E i
this✝ : UniformSpace F := TopologicalAddGroup.toUniformSpace F
this : UniformAddGroup F
⊢ Continuous fun p => p x
state_after: no goals
Theorem: CategoryTheory.Limits.biproduct.mapBiproduct_hom_desc
File: Mathlib/CategoryTheory/Limits/Preserves/Shapes/Biproducts.lean

tactic: rw [← biproduct.mapBiproduct_inv_map_desc, Iso.hom_inv_id_assoc]
state_before: C : Type u₁
inst✝⁶ : Category.{v₁, u₁} C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
J : Type w₁
f : J → C
inst✝¹ : HasBiproduct f
inst✝ : PreservesBiproduct f F
W : C
g : (j : J) → f j ⟶ W
⊢ ((F.mapBiproduct f).hom ≫ desc fun j => F.map (g j)) = F.map (desc g)
state_after: no goals
Theorem: ContinuousSMul.of_nhds_zero
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: refine continuous_of_continuousAt_zero₂ (AddMonoidHom.smul : R →+ M →+ M) ?_ ?_ ?_ <;>
  simpa [ContinuousAt, nhds_prod_eq]
state_before: R : Type u_1
M : Type u_2
inst✝⁶ : Ring R
inst✝⁵ : TopologicalSpace R
inst✝⁴ : TopologicalSpace M
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : TopologicalRing R
inst✝ : TopologicalAddGroup M
hmul : Tendsto (fun p => p.1 • p.2) (𝓝 0 ×ˢ 𝓝 0) (𝓝 0)
hmulleft : ∀ (m : M), Tendsto (fun a => a • m) (𝓝 0) (𝓝 0)
hmulright : ∀ (a : R), Tendsto (fun m => a • m) (𝓝 0) (𝓝 0)
⊢ Continuous fun p => p.1 • p.2
state_after: no goals
Theorem: Cubic.a_of_eq
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: rw [← coeff_eq_a, h, coeff_eq_a]
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
h : P.toPoly = Q.toPoly
⊢ P.a = Q.a
state_after: no goals
Theorem: finprod_mem_mul_distrib'
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: rw [← mulSupport_mulIndicator] at hf hg
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
hf : (s ∩ mulSupport f).Finite
hg : (s ∩ mulSupport g).Finite
⊢ ∏ᶠ (i : α) (_ : i ∈ s), f i * g i = (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ s), g i
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
hf : (mulSupport (s.mulIndicator f)).Finite
hg : (mulSupport (s.mulIndicator g)).Finite
⊢ ∏ᶠ (i : α) (_ : i ∈ s), f i * g i = (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ s), g i

tactic: simp only [finprod_mem_def, mulIndicator_mul, finprod_mul_distrib hf hg]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
hf : (mulSupport (s.mulIndicator f)).Finite
hg : (mulSupport (s.mulIndicator g)).Finite
⊢ ∏ᶠ (i : α) (_ : i ∈ s), f i * g i = (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ s), g i
state_after: no goals
Theorem: FirstOrder.Ring.exists_term_realize_eq_freeCommRing
File: Mathlib/ModelTheory/Algebra/Ring/FreeCommRing.lean

tactic: simp [Term.realize]
state_before: α : Type u_1
p : FreeCommRing α
⊢ Term.realize FreeCommRing.of (-1) = -1
state_after: no goals

tactic: simp [Term.realize]
state_before: α : Type u_1
p : FreeCommRing α
a : α
⊢ Term.realize FreeCommRing.of (var a) = FreeCommRing.of a
state_after: no goals

tactic: simp_all [Term.realize]
state_before: α : Type u_1
p x y : FreeCommRing α
x✝¹ : ∃ t, Term.realize FreeCommRing.of t = x
x✝ : ∃ t, Term.realize FreeCommRing.of t = y
t₁ : ring.Term α
ht₁ : Term.realize FreeCommRing.of t₁ = x
t₂ : ring.Term α
ht₂ : Term.realize FreeCommRing.of t₂ = y
⊢ Term.realize FreeCommRing.of (t₁ + t₂) = x + y
state_after: no goals

tactic: simp_all [Term.realize]
state_before: α : Type u_1
p x y : FreeCommRing α
x✝¹ : ∃ t, Term.realize FreeCommRing.of t = x
x✝ : ∃ t, Term.realize FreeCommRing.of t = y
t₁ : ring.Term α
ht₁ : Term.realize FreeCommRing.of t₁ = x
t₂ : ring.Term α
ht₂ : Term.realize FreeCommRing.of t₂ = y
⊢ Term.realize FreeCommRing.of (t₁ * t₂) = x * y
state_after: no goals
Theorem: Ideal.prod.ext_iff
File: Mathlib/RingTheory/Ideal/Prod.lean

tactic: simp only [← idealProdEquiv_symm_apply, idealProdEquiv.symm.injective.eq_iff, Prod.mk.inj_iff]
state_before: R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I'✝ : Ideal R
J✝ J'✝ : Ideal S
I I' : Ideal R
J J' : Ideal S
⊢ I.prod J = I'.prod J' ↔ I = I' ∧ J = J'
state_after: no goals
Theorem: Batteries.AssocList.length_mapKey
File: .lake/packages/batteries/Batteries/Data/AssocList.lean

tactic: induction l <;> simp_all
state_before: α✝¹ : Type u_1
α✝ : Type u_2
f : α✝¹ → α✝
β✝ : Type u_3
l : AssocList α✝¹ β✝
⊢ (mapKey f l).length = l.length
state_after: no goals
Theorem: Finset.right_mem_Icc
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: simp only [mem_Icc, and_true_iff, le_rfl]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ b ∈ Icc a b ↔ a ≤ b
state_after: no goals
Theorem: List.mem_of_formPerm_apply_mem
File: Mathlib/GroupTheory/Perm/List.lean

tactic: contrapose h
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x : α
h : l.formPerm x ∈ l
⊢ x ∈ l
state_after: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x : α
h : x ∉ l
⊢ l.formPerm x ∉ l

tactic: rwa [formPerm_apply_of_not_mem h]
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x : α
h : x ∉ l
⊢ l.formPerm x ∉ l
state_after: no goals
Theorem: Complex.Gamma_neg_nat_eq_zero
File: Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean

tactic: induction' n with n IH
state_before: n : ℕ
⊢ Gamma (-↑n) = 0
state_after: case zero

⊢ Gamma (-↑0) = 0

case succ
n : ℕ
IH : Gamma (-↑n) = 0
⊢ Gamma (-↑(n + 1)) = 0

tactic: rw [Nat.cast_zero, neg_zero, Gamma_zero]
state_before: case zero

⊢ Gamma (-↑0) = 0
state_after: no goals

tactic: have A : -(n.succ : ℂ) ≠ 0 := by
  rw [neg_ne_zero, Nat.cast_ne_zero]
  apply Nat.succ_ne_zero
state_before: case succ
n : ℕ
IH : Gamma (-↑n) = 0
⊢ Gamma (-↑(n + 1)) = 0
state_after: case succ
n : ℕ
IH : Gamma (-↑n) = 0
A : -↑n.succ ≠ 0
⊢ Gamma (-↑(n + 1)) = 0

tactic: have : -(n : ℂ) = -↑n.succ + 1 := by simp
state_before: case succ
n : ℕ
IH : Gamma (-↑n) = 0
A : -↑n.succ ≠ 0
⊢ Gamma (-↑(n + 1)) = 0
state_after: case succ
n : ℕ
IH : Gamma (-↑n) = 0
A : -↑n.succ ≠ 0
this : -↑n = -↑n.succ + 1
⊢ Gamma (-↑(n + 1)) = 0

tactic: rw [this, Gamma_add_one _ A] at IH
state_before: case succ
n : ℕ
IH : Gamma (-↑n) = 0
A : -↑n.succ ≠ 0
this : -↑n = -↑n.succ + 1
⊢ Gamma (-↑(n + 1)) = 0
state_after: case succ
n : ℕ
IH : -↑n.succ * Gamma (-↑n.succ) = 0
A : -↑n.succ ≠ 0
this : -↑n = -↑n.succ + 1
⊢ Gamma (-↑(n + 1)) = 0

tactic: contrapose! IH
state_before: case succ
n : ℕ
IH : -↑n.succ * Gamma (-↑n.succ) = 0
A : -↑n.succ ≠ 0
this : -↑n = -↑n.succ + 1
⊢ Gamma (-↑(n + 1)) = 0
state_after: case succ
n : ℕ
A : -↑n.succ ≠ 0
this : -↑n = -↑n.succ + 1
IH : Gamma (-↑(n + 1)) ≠ 0
⊢ -↑n.succ * Gamma (-↑n.succ) ≠ 0

tactic: exact mul_ne_zero A IH
state_before: case succ
n : ℕ
A : -↑n.succ ≠ 0
this : -↑n = -↑n.succ + 1
IH : Gamma (-↑(n + 1)) ≠ 0
⊢ -↑n.succ * Gamma (-↑n.succ) ≠ 0
state_after: no goals

tactic: rw [neg_ne_zero, Nat.cast_ne_zero]
state_before: n : ℕ
IH : Gamma (-↑n) = 0
⊢ -↑n.succ ≠ 0
state_after: n : ℕ
IH : Gamma (-↑n) = 0
⊢ n.succ ≠ 0

tactic: apply Nat.succ_ne_zero
state_before: n : ℕ
IH : Gamma (-↑n) = 0
⊢ n.succ ≠ 0
state_after: no goals

tactic: simp
state_before: n : ℕ
IH : Gamma (-↑n) = 0
A : -↑n.succ ≠ 0
⊢ -↑n = -↑n.succ + 1
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.Q_succ
File: Mathlib/AlgebraicTopology/DoldKan/Projections.lean

tactic: simp only [Q, P_succ, comp_add, comp_id]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
⊢ Q (q + 1) = Q q - P q ≫ Hσ q
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
⊢ 𝟙 K[X] - (P q + P q ≫ Hσ q) = 𝟙 K[X] - P q - P q ≫ Hσ q

tactic: abel
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
⊢ 𝟙 K[X] - (P q + P q ≫ Hσ q) = 𝟙 K[X] - P q - P q ≫ Hσ q
state_after: no goals
Theorem: Complex.Gamma_one
File: Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean

tactic: rw [Gamma_eq_integral] <;> simp
state_before: ⊢ Gamma 1 = 1
state_after: no goals
Theorem: ZFSet.toSet_subset_iff
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: simp [subset_def, Set.subset_def]
state_before: x y : ZFSet
⊢ x.toSet ⊆ y.toSet ↔ x ⊆ y
state_after: no goals
Theorem: tendsto_measure_thickening_of_isClosed
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Metric.lean

tactic: convert tendsto_measure_thickening hs
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s✝ t u : Set α
inst✝³ : PseudoEMetricSpace α
inst✝² : MeasurableSpace α
inst✝¹ : OpensMeasurableSpace α
inst✝ : MeasurableSpace β
x : α
ε : ℝ≥0∞
μ : Measure α
s : Set α
hs : ∃ R > 0, μ (thickening R s) ≠ ⊤
h's : IsClosed s
⊢ Tendsto (fun r => μ (thickening r s)) (𝓝[>] 0) (𝓝 (μ s))
state_after: case h.e'_5.h.e'_3.h.e'_6
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s✝ t u : Set α
inst✝³ : PseudoEMetricSpace α
inst✝² : MeasurableSpace α
inst✝¹ : OpensMeasurableSpace α
inst✝ : MeasurableSpace β
x : α
ε : ℝ≥0∞
μ : Measure α
s : Set α
hs : ∃ R > 0, μ (thickening R s) ≠ ⊤
h's : IsClosed s
⊢ s = closure s

tactic: exact h's.closure_eq.symm
state_before: case h.e'_5.h.e'_3.h.e'_6
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s✝ t u : Set α
inst✝³ : PseudoEMetricSpace α
inst✝² : MeasurableSpace α
inst✝¹ : OpensMeasurableSpace α
inst✝ : MeasurableSpace β
x : α
ε : ℝ≥0∞
μ : Measure α
s : Set α
hs : ∃ R > 0, μ (thickening R s) ≠ ⊤
h's : IsClosed s
⊢ s = closure s
state_after: no goals
Theorem: coevaluation_apply_one
File: Mathlib/LinearAlgebra/Coevaluation.lean

tactic: simp only [coevaluation, id]
state_before: K : Type u
inst✝³ : Field K
V : Type v
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
⊢ (coevaluation K V) 1 =
    let bV := Basis.ofVectorSpace K V;
    ∑ i : ↑(Basis.ofVectorSpaceIndex K V), bV i ⊗ₜ[K] bV.coord i
state_after: K : Type u
inst✝³ : Field K
V : Type v
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
⊢ (((Basis.singleton Unit K).constr K) fun x =>
        ∑ i : ↑(Basis.ofVectorSpaceIndex K V), (Basis.ofVectorSpace K V) i ⊗ₜ[K] (Basis.ofVectorSpace K V).coord i)
      1 =
    ∑ i : ↑(Basis.ofVectorSpaceIndex K V), (Basis.ofVectorSpace K V) i ⊗ₜ[K] (Basis.ofVectorSpace K V).coord i

tactic: rw [(Basis.singleton Unit K).constr_apply_fintype K]
state_before: K : Type u
inst✝³ : Field K
V : Type v
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
⊢ (((Basis.singleton Unit K).constr K) fun x =>
        ∑ i : ↑(Basis.ofVectorSpaceIndex K V), (Basis.ofVectorSpace K V) i ⊗ₜ[K] (Basis.ofVectorSpace K V).coord i)
      1 =
    ∑ i : ↑(Basis.ofVectorSpaceIndex K V), (Basis.ofVectorSpace K V) i ⊗ₜ[K] (Basis.ofVectorSpace K V).coord i
state_after: K : Type u
inst✝³ : Field K
V : Type v
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
⊢ ∑ i : Unit,
      (Basis.singleton Unit K).equivFun 1 i •
        ∑ i : ↑(Basis.ofVectorSpaceIndex K V), (Basis.ofVectorSpace K V) i ⊗ₜ[K] (Basis.ofVectorSpace K V).coord i =
    ∑ i : ↑(Basis.ofVectorSpaceIndex K V), (Basis.ofVectorSpace K V) i ⊗ₜ[K] (Basis.ofVectorSpace K V).coord i

tactic: simp only [Fintype.univ_punit, Finset.sum_const, one_smul, Basis.singleton_repr,
  Basis.equivFun_apply, Basis.coe_ofVectorSpace, one_nsmul, Finset.card_singleton]
state_before: K : Type u
inst✝³ : Field K
V : Type v
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
⊢ ∑ i : Unit,
      (Basis.singleton Unit K).equivFun 1 i •
        ∑ i : ↑(Basis.ofVectorSpaceIndex K V), (Basis.ofVectorSpace K V) i ⊗ₜ[K] (Basis.ofVectorSpace K V).coord i =
    ∑ i : ↑(Basis.ofVectorSpaceIndex K V), (Basis.ofVectorSpace K V) i ⊗ₜ[K] (Basis.ofVectorSpace K V).coord i
state_after: no goals
Theorem: hammingNorm_smul_le_hammingNorm
File: Mathlib/InformationTheory/Hamming.lean

tactic: simp_rw [smul_zero]
state_before: α : Type u_1
ι : Type u_2
β : ι → Type u_3
inst✝⁶ : Fintype ι
inst✝⁵ : (i : ι) → DecidableEq (β i)
γ : ι → Type u_4
inst✝⁴ : (i : ι) → DecidableEq (γ i)
inst✝³ : (i : ι) → Zero (β i)
inst✝² : (i : ι) → Zero (γ i)
inst✝¹ : Zero α
inst✝ : (i : ι) → SMulWithZero α (β i)
k : α
x : (i : ι) → β i
i : ι
⊢ (fun i c => k • c) i 0 = 0
state_after: no goals
Theorem: Ideal.span_singleton_mul_left_unit
File: Mathlib/RingTheory/Ideal/Basic.lean

tactic: apply le_antisymm <;> rw [span_singleton_le_iff_mem, mem_span_singleton']
state_before: α : Type u
β : Type v
inst✝ : Semiring α
I : Ideal α
a✝ b a : α
h2 : IsUnit a
x : α
⊢ span {a * x} = span {x}
state_after: case a
α : Type u
β : Type v
inst✝ : Semiring α
I : Ideal α
a✝ b a : α
h2 : IsUnit a
x : α
⊢ ∃ a_1, a_1 * x = a * x

case a
α : Type u
β : Type v
inst✝ : Semiring α
I : Ideal α
a✝ b a : α
h2 : IsUnit a
x : α
⊢ ∃ a_1, a_1 * (a * x) = x

tactic: exacts [⟨a, rfl⟩, ⟨_, h2.unit.inv_mul_cancel_left x⟩]
state_before: case a
α : Type u
β : Type v
inst✝ : Semiring α
I : Ideal α
a✝ b a : α
h2 : IsUnit a
x : α
⊢ ∃ a_1, a_1 * x = a * x

case a
α : Type u
β : Type v
inst✝ : Semiring α
I : Ideal α
a✝ b a : α
h2 : IsUnit a
x : α
⊢ ∃ a_1, a_1 * (a * x) = x
state_after: no goals
Theorem: Complex.comap_exp_nhdsWithin_zero
File: Mathlib/Analysis/SpecialFunctions/Exp.lean

tactic: have : (exp ⁻¹' {0})ᶜ = Set.univ := eq_univ_of_forall exp_ne_zero
state_before: ⊢ comap cexp (𝓝[≠] 0) = comap re atBot
state_after: this : (cexp ⁻¹' {0})ᶜ = Set.univ
⊢ comap cexp (𝓝[≠] 0) = comap re atBot

tactic: simp [nhdsWithin, comap_exp_nhds_zero, this]
state_before: this : (cexp ⁻¹' {0})ᶜ = Set.univ
⊢ comap cexp (𝓝[≠] 0) = comap re atBot
state_after: no goals
Theorem: LSeriesSummable_zero
File: Mathlib/NumberTheory/LSeries/Basic.lean

tactic: simp only [LSeriesSummable, funext (term_def 0 s), Pi.zero_apply, zero_div, ite_self,
  summable_zero]
state_before: s : ℂ
⊢ LSeriesSummable 0 s
state_after: no goals
Theorem: orthogonalProjection_map_apply
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: simpa only [f.coe_toLinearIsometry, f.apply_symm_apply] using
  (f.toLinearIsometry.map_orthogonalProjection' p (f.symm x)).symm
state_before: 𝕜 : Type u_1
E✝ : Type u_2
F : Type u_3
inst✝¹⁰ : _root_.RCLike 𝕜
inst✝⁹ : NormedAddCommGroup E✝
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : InnerProductSpace 𝕜 E✝
inst✝⁶ : InnerProductSpace ℝ F
K : Submodule 𝕜 E✝
inst✝⁵ : HasOrthogonalProjection K
E : Type u_4
E' : Type u_5
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace 𝕜 E'
f : E ≃ₗᵢ[𝕜] E'
p : Submodule 𝕜 E
inst✝ : HasOrthogonalProjection p
x : E'
⊢ ↑((orthogonalProjection (Submodule.map (↑f.toLinearEquiv) p)) x) = f ↑((orthogonalProjection p) (f.symm x))
state_after: no goals
Theorem: finsuppTensorFinsupp'_symm_single_eq_single_one_tmul
File: Mathlib/LinearAlgebra/DirectSum/Finsupp.lean

tactic: nth_rw 1 [← one_mul r]
state_before: R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
ι : Type u_5
κ : Type u_6
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
inst✝⁵ : AddCommMonoid N
inst✝⁴ : Module R N
inst✝³ : Semiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
i : ι × κ
r : R
⊢ (finsuppTensorFinsupp' R ι κ).symm (Finsupp.single i r) = Finsupp.single i.1 1 ⊗ₜ[R] Finsupp.single i.2 r
state_after: R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
ι : Type u_5
κ : Type u_6
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
inst✝⁵ : AddCommMonoid N
inst✝⁴ : Module R N
inst✝³ : Semiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
i : ι × κ
r : R
⊢ (finsuppTensorFinsupp' R ι κ).symm (Finsupp.single i (1 * r)) = Finsupp.single i.1 1 ⊗ₜ[R] Finsupp.single i.2 r

tactic: exact finsuppTensorFinsupp'_symm_single_mul R ι κ i _ _
state_before: R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
ι : Type u_5
κ : Type u_6
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
inst✝⁵ : AddCommMonoid N
inst✝⁴ : Module R N
inst✝³ : Semiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
i : ι × κ
r : R
⊢ (finsuppTensorFinsupp' R ι κ).symm (Finsupp.single i (1 * r)) = Finsupp.single i.1 1 ⊗ₜ[R] Finsupp.single i.2 r
state_after: no goals
Theorem: PFun.core_res
File: Mathlib/Data/PFun.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ : α →. β
f : α → β
s : Set α
t : Set β
⊢ (res f s).core t = sᶜ ∪ f ⁻¹' t
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ : α →. β
f : α → β
s : Set α
t : Set β
x : α
⊢ x ∈ (res f s).core t ↔ x ∈ sᶜ ∪ f ⁻¹' t

tactic: rw [mem_core_res]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ : α →. β
f : α → β
s : Set α
t : Set β
x : α
⊢ x ∈ (res f s).core t ↔ x ∈ sᶜ ∪ f ⁻¹' t
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ : α →. β
f : α → β
s : Set α
t : Set β
x : α
⊢ x ∈ s → f x ∈ t ↔ x ∈ sᶜ ∪ f ⁻¹' t

tactic: by_cases h : x ∈ s <;> simp [h]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ : α →. β
f : α → β
s : Set α
t : Set β
x : α
⊢ x ∈ s → f x ∈ t ↔ x ∈ sᶜ ∪ f ⁻¹' t
state_after: no goals
Theorem: Set.indicator_eq_zero_iff_not_mem
File: Mathlib/Algebra/GroupWithZero/Indicator.lean

tactic: classical simp [indicator_apply, imp_false]
state_before: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝¹ : MulZeroOneClass M₀
s t : Set ι
i : ι
inst✝ : Nontrivial M₀
⊢ s.indicator 1 i = 0 ↔ i ∉ s
state_after: no goals

tactic: simp [indicator_apply, imp_false]
state_before: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝¹ : MulZeroOneClass M₀
s t : Set ι
i : ι
inst✝ : Nontrivial M₀
⊢ s.indicator 1 i = 0 ↔ i ∉ s
state_after: no goals
Theorem: Multiset.prod_hom_rel
File: Mathlib/Algebra/BigOperators/Group/Multiset.lean

tactic: simp only [l.prod_hom_rel h₁ h₂, quot_mk_to_coe, map_coe, prod_coe]
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝² : CommMonoid α
inst✝¹ : CommMonoid β
s✝ t : Multiset α
a : α
m : Multiset ι
f✝ g✝ : ι → α
inst✝ : CommMonoid β
s : Multiset ι
r : α → β → Prop
f : ι → α
g : ι → β
h₁ : r 1 1
h₂ : ∀ ⦃a : ι⦄ ⦃b : α⦄ ⦃c : β⦄, r b c → r (f a * b) (g a * c)
l : List ι
⊢ r (map f ⟦l⟧).prod (map g ⟦l⟧).prod
state_after: no goals
Theorem: CategoryTheory.isIso_of_mono_of_strongEpi
File: Mathlib/CategoryTheory/Limits/Shapes/StrongEpi.lean

tactic: simp
state_before: C : Type u
inst✝² : Category.{v, u} C
P Q : C
f : P ⟶ Q
inst✝¹ : Mono f
inst✝ : StrongEpi f
⊢ 𝟙 P ≫ f = f ≫ 𝟙 Q
state_after: no goals

tactic: aesop_cat
state_before: C : Type u
inst✝² : Category.{v, u} C
P Q : C
f : P ⟶ Q
inst✝¹ : Mono f
inst✝ : StrongEpi f
⊢ f ≫ ⋯.lift = 𝟙 P ∧ ⋯.lift ≫ f = 𝟙 Q
state_after: no goals
Theorem: NNReal.toNNReal_coe_nat
File: Mathlib/Data/NNReal/Basic.lean

tactic: simp [Real.coe_toNNReal]
state_before: r r₁ r₂ : ℝ≥0
x y : ℝ
n : ℕ
⊢ ↑(↑n).toNNReal = ↑↑n
state_after: no goals
Theorem: Real.sin_add_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simp [sin_add]
state_before: x : ℝ
⊢ sin (x + π / 2) = cos x
state_after: no goals