1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finsupp.restrictDom_comp_subtype
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: ext l a
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁸ : Semiring R
inst✝⁷ : Semiring S
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : AddCommMonoid P
inst✝¹ : Module R P
s : Set α
inst✝ : DecidablePred fun x => x ∈ s
⊢ restrictDom M R s ∘ₗ (supported M R s).subtype = LinearMap.id
state_after: case h.a.h
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁸ : Semiring R
inst✝⁷ : Semiring S
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : AddCommMonoid P
inst✝¹ : Module R P
s : Set α
inst✝ : DecidablePred fun x => x ∈ s
l : ↥(supported M R s)
a : α
⊢ ↑((restrictDom M R s ∘ₗ (supported M R s).subtype) l) a = ↑(LinearMap.id l) a

tactic: by_cases h : a ∈ s <;> simp [h]
state_before: case h.a.h
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁸ : Semiring R
inst✝⁷ : Semiring S
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : AddCommMonoid P
inst✝¹ : Module R P
s : Set α
inst✝ : DecidablePred fun x => x ∈ s
l : ↥(supported M R s)
a : α
⊢ ↑((restrictDom M R s ∘ₗ (supported M R s).subtype) l) a = ↑(LinearMap.id l) a
state_after: case neg
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁸ : Semiring R
inst✝⁷ : Semiring S
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : AddCommMonoid P
inst✝¹ : Module R P
s : Set α
inst✝ : DecidablePred fun x => x ∈ s
l : ↥(supported M R s)
a : α
h : a ∉ s
⊢ 0 = ↑l a

tactic: exact ((mem_supported' R l.1).1 l.2 a h).symm
state_before: case neg
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁸ : Semiring R
inst✝⁷ : Semiring S
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
inst✝⁴ : AddCommMonoid N
inst✝³ : Module R N
inst✝² : AddCommMonoid P
inst✝¹ : Module R P
s : Set α
inst✝ : DecidablePred fun x => x ∈ s
l : ↥(supported M R s)
a : α
h : a ∉ s
⊢ 0 = ↑l a
state_after: no goals
Theorem: finAddFlip_apply_mk_left
File: Mathlib/Logic/Equiv/Fin.lean

tactic: convert finAddFlip_apply_castAdd ⟨k, h⟩ n
state_before: m n k : ℕ
h : k < m
hk : optParam (k < m + n) ⋯
hnk : optParam (n + k < n + m) ⋯
⊢ finAddFlip ⟨k, hk⟩ = ⟨n + k, hnk⟩
state_after: no goals
Theorem: AntilipschitzWith.id
File: Mathlib/Topology/MetricSpace/Antilipschitz.lean

tactic: simp only [ENNReal.coe_one, one_mul, id, le_refl]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
f : α → β
x y : α
⊢ edist x y ≤ ↑1 * edist (id x) (id y)
state_after: no goals
Theorem: CategoryTheory.ShortComplex.shortExact_iff_of_iso
File: Mathlib/Algebra/Homology/ShortComplex/ShortExact.lean

tactic: constructor
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.3406, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
e : S₁ ≅ S₂
⊢ S₁.ShortExact ↔ S₂.ShortExact
state_after: case mp
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.3406, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
e : S₁ ≅ S₂
⊢ S₁.ShortExact → S₂.ShortExact

case mpr
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.3406, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
e : S₁ ≅ S₂
⊢ S₂.ShortExact → S₁.ShortExact

tactic: exact shortExact_of_iso e
state_before: case mp
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.3406, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
e : S₁ ≅ S₂
⊢ S₁.ShortExact → S₂.ShortExact
state_after: no goals

tactic: exact shortExact_of_iso e.symm
state_before: case mpr
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.3406, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
e : S₁ ≅ S₂
⊢ S₂.ShortExact → S₁.ShortExact
state_after: no goals
Theorem: SemidirectProduct.lift_comp_inl
File: Mathlib/GroupTheory/SemidirectProduct.lean

tactic: ext
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
⊢ (lift f₁ f₂ h).comp inl = f₁
state_after: case h
N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
x✝ : N
⊢ ((lift f₁ f₂ h).comp inl) x✝ = f₁ x✝

tactic: simp
state_before: case h
N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
f₁ : N →* H
f₂ : G →* H
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (MulAut.conj (f₂ g))).comp f₁
x✝ : N
⊢ ((lift f₁ f₂ h).comp inl) x✝ = f₁ x✝
state_after: no goals
Theorem: Finset.exists_lt_card_fiber_of_nsmul_lt_card_of_maps_to
File: Mathlib/Combinatorics/Pigeonhole.lean

tactic: simp_rw [cast_card] at ht ⊢
state_before: α : Type u
β : Type v
M : Type w
inst✝¹ : DecidableEq β
s : Finset α
t : Finset β
f : α → β
w : α → M
b : M
n : ℕ
inst✝ : LinearOrderedCommSemiring M
hf : ∀ a ∈ s, f a ∈ t
ht : t.card • b < ↑s.card
⊢ ∃ y ∈ t, b < ↑(filter (fun x => f x = y) s).card
state_after: α : Type u
β : Type v
M : Type w
inst✝¹ : DecidableEq β
s : Finset α
t : Finset β
f : α → β
w : α → M
b : M
n : ℕ
inst✝ : LinearOrderedCommSemiring M
hf : ∀ a ∈ s, f a ∈ t
ht : t.card • b < ∑ a ∈ s, 1
⊢ ∃ y ∈ t, b < ∑ a ∈ filter (fun x => f x = y) s, 1

tactic: exact exists_lt_sum_fiber_of_maps_to_of_nsmul_lt_sum hf ht
state_before: α : Type u
β : Type v
M : Type w
inst✝¹ : DecidableEq β
s : Finset α
t : Finset β
f : α → β
w : α → M
b : M
n : ℕ
inst✝ : LinearOrderedCommSemiring M
hf : ∀ a ∈ s, f a ∈ t
ht : t.card • b < ∑ a ∈ s, 1
⊢ ∃ y ∈ t, b < ∑ a ∈ filter (fun x => f x = y) s, 1
state_after: no goals
Theorem: CategoryTheory.ShortComplex.LeftHomologyData.leftHomologyπ_comp_leftHomologyIso_hom
File: Mathlib/Algebra/Homology/ShortComplex/LeftHomology.lean

tactic: dsimp only [leftHomologyπ, leftHomologyIso, cyclesIso, leftHomologyMapIso',
  cyclesMapIso', Iso.refl]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
h : S.LeftHomologyData
inst✝ : S.HasLeftHomology
⊢ S.leftHomologyπ ≫ h.leftHomologyIso.hom = h.cyclesIso.hom ≫ h.π
state_after: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
h : S.LeftHomologyData
inst✝ : S.HasLeftHomology
⊢ S.leftHomologyData.π ≫ leftHomologyMap' (𝟙 S) S.leftHomologyData h = cyclesMap' (𝟙 S) S.leftHomologyData h ≫ h.π

tactic: rw [← leftHomologyπ_naturality']
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
h : S.LeftHomologyData
inst✝ : S.HasLeftHomology
⊢ S.leftHomologyData.π ≫ leftHomologyMap' (𝟙 S) S.leftHomologyData h = cyclesMap' (𝟙 S) S.leftHomologyData h ≫ h.π
state_after: no goals
Theorem: List.append_subset
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp [subset_def, or_imp, forall_and]
state_before: α : Type u_1
l₁ l₂ l : List α
⊢ l₁ ++ l₂ ⊆ l ↔ l₁ ⊆ l ∧ l₂ ⊆ l
state_after: no goals
Theorem: RCLike.pos_iff
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: simpa only [map_zero, eq_comm] using lt_iff_re_im (z := 0) (w := z)
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
⊢ 0 < z ↔ 0 < re z ∧ im z = 0
state_after: no goals
Theorem: HasCompactSupport.continuous_convolution_left
File: Mathlib/Analysis/Convolution.lean

tactic: rw [← convolution_flip]
state_before: 𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
E'' : Type uE''
F : Type uF
F' : Type uF'
F'' : Type uF''
P : Type uP
inst✝¹⁶ : NormedAddCommGroup E
inst✝¹⁵ : NormedAddCommGroup E'
inst✝¹⁴ : NormedAddCommGroup E''
inst✝¹³ : NormedAddCommGroup F
f f' : G → E
g g' : G → E'
x x' : G
y y' : E
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : NormedSpace 𝕜 E
inst✝¹⁰ : NormedSpace 𝕜 E'
inst✝⁹ : NormedSpace 𝕜 E''
inst✝⁸ : NormedSpace 𝕜 F
L : E →L[𝕜] E' →L[𝕜] F
inst✝⁷ : MeasurableSpace G
μ ν : Measure G
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : AddCommGroup G
inst✝⁴ : μ.IsAddLeftInvariant
inst✝³ : μ.IsNegInvariant
inst✝² : TopologicalSpace G
inst✝¹ : TopologicalAddGroup G
inst✝ : BorelSpace G
hcf : HasCompactSupport f
hf : Continuous f
hg : LocallyIntegrable g μ
⊢ Continuous (f ⋆[L, μ] g)
state_after: 𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
E'' : Type uE''
F : Type uF
F' : Type uF'
F'' : Type uF''
P : Type uP
inst✝¹⁶ : NormedAddCommGroup E
inst✝¹⁵ : NormedAddCommGroup E'
inst✝¹⁴ : NormedAddCommGroup E''
inst✝¹³ : NormedAddCommGroup F
f f' : G → E
g g' : G → E'
x x' : G
y y' : E
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : NormedSpace 𝕜 E
inst✝¹⁰ : NormedSpace 𝕜 E'
inst✝⁹ : NormedSpace 𝕜 E''
inst✝⁸ : NormedSpace 𝕜 F
L : E →L[𝕜] E' →L[𝕜] F
inst✝⁷ : MeasurableSpace G
μ ν : Measure G
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : AddCommGroup G
inst✝⁴ : μ.IsAddLeftInvariant
inst✝³ : μ.IsNegInvariant
inst✝² : TopologicalSpace G
inst✝¹ : TopologicalAddGroup G
inst✝ : BorelSpace G
hcf : HasCompactSupport f
hf : Continuous f
hg : LocallyIntegrable g μ
⊢ Continuous (g ⋆[L.flip, μ] f)

tactic: exact hcf.continuous_convolution_right L.flip hg hf
state_before: 𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
E'' : Type uE''
F : Type uF
F' : Type uF'
F'' : Type uF''
P : Type uP
inst✝¹⁶ : NormedAddCommGroup E
inst✝¹⁵ : NormedAddCommGroup E'
inst✝¹⁴ : NormedAddCommGroup E''
inst✝¹³ : NormedAddCommGroup F
f f' : G → E
g g' : G → E'
x x' : G
y y' : E
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : NormedSpace 𝕜 E
inst✝¹⁰ : NormedSpace 𝕜 E'
inst✝⁹ : NormedSpace 𝕜 E''
inst✝⁸ : NormedSpace 𝕜 F
L : E →L[𝕜] E' →L[𝕜] F
inst✝⁷ : MeasurableSpace G
μ ν : Measure G
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : AddCommGroup G
inst✝⁴ : μ.IsAddLeftInvariant
inst✝³ : μ.IsNegInvariant
inst✝² : TopologicalSpace G
inst✝¹ : TopologicalAddGroup G
inst✝ : BorelSpace G
hcf : HasCompactSupport f
hf : Continuous f
hg : LocallyIntegrable g μ
⊢ Continuous (g ⋆[L.flip, μ] f)
state_after: no goals
Theorem: Set.image_eq_range
File: Mathlib/Data/Set/Image.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
⊢ f '' s = range fun x => f ↑x
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
x✝ : β
⊢ x✝ ∈ f '' s ↔ x✝ ∈ range fun x => f ↑x

tactic: constructor
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
x✝ : β
⊢ x✝ ∈ f '' s ↔ x✝ ∈ range fun x => f ↑x
state_after: case h.mp
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
x✝ : β
⊢ x✝ ∈ f '' s → x✝ ∈ range fun x => f ↑x

case h.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
x✝ : β
⊢ (x✝ ∈ range fun x => f ↑x) → x✝ ∈ f '' s

tactic: rintro ⟨x, h1, h2⟩
state_before: case h.mp
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
x✝ : β
⊢ x✝ ∈ f '' s → x✝ ∈ range fun x => f ↑x
state_after: case h.mp.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
x✝ : β
x : α
h1 : x ∈ s
h2 : f x = x✝
⊢ x✝ ∈ range fun x => f ↑x

tactic: exact ⟨⟨x, h1⟩, h2⟩
state_before: case h.mp.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
x✝ : β
x : α
h1 : x ∈ s
h2 : f x = x✝
⊢ x✝ ∈ range fun x => f ↑x
state_after: no goals

tactic: rintro ⟨⟨x, h1⟩, h2⟩
state_before: case h.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
x✝ : β
⊢ (x✝ ∈ range fun x => f ↑x) → x✝ ∈ f '' s
state_after: case h.mpr.intro.mk
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
x✝ : β
x : α
h1 : x ∈ s
h2 : (fun x => f ↑x) ⟨x, h1⟩ = x✝
⊢ x✝ ∈ f '' s

tactic: exact ⟨x, h1, h2⟩
state_before: case h.mpr.intro.mk
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s✝ t : Set α
f : α → β
s : Set α
x✝ : β
x : α
h1 : x ∈ s
h2 : (fun x => f ↑x) ⟨x, h1⟩ = x✝
⊢ x✝ ∈ f '' s
state_after: no goals
Theorem: LieSubalgebra.sInf_coe
File: Mathlib/Algebra/Lie/Subalgebra.lean

tactic: rw [← coe_to_submodule, sInf_coe_to_submodule, Submodule.sInf_coe]
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
S : Set (LieSubalgebra R L)
⊢ ↑(sInf S) = ⋂ s ∈ S, ↑s
state_after: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
S : Set (LieSubalgebra R L)
⊢ ⋂ p ∈ {x | ∃ s ∈ S, s.toSubmodule = x}, ↑p = ⋂ s ∈ S, ↑s

tactic: ext x
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
S : Set (LieSubalgebra R L)
⊢ ⋂ p ∈ {x | ∃ s ∈ S, s.toSubmodule = x}, ↑p = ⋂ s ∈ S, ↑s
state_after: case h
R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
S : Set (LieSubalgebra R L)
x : L
⊢ x ∈ ⋂ p ∈ {x | ∃ s ∈ S, s.toSubmodule = x}, ↑p ↔ x ∈ ⋂ s ∈ S, ↑s

tactic: simp
state_before: case h
R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
S : Set (LieSubalgebra R L)
x : L
⊢ x ∈ ⋂ p ∈ {x | ∃ s ∈ S, s.toSubmodule = x}, ↑p ↔ x ∈ ⋂ s ∈ S, ↑s
state_after: no goals
Theorem: SimpleGraph.Walk.length_reverseAux
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: induction p with
| nil => simp!
| cons _ _ ih => simp [ih, Nat.succ_add, Nat.add_assoc]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w : V
p : G.Walk u v
q : G.Walk u w
⊢ (p.reverseAux q).length = p.length + q.length
state_after: no goals

tactic: simp!
state_before: case nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ : V
q : G.Walk u✝ w
⊢ (nil.reverseAux q).length = nil.length + q.length
state_after: no goals

tactic: simp [ih, Nat.succ_add, Nat.add_assoc]
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
ih : ∀ (q : G.Walk v✝ w), (p✝.reverseAux q).length = p✝.length + q.length
q : G.Walk u✝ w
⊢ ((cons h✝ p✝).reverseAux q).length = (cons h✝ p✝).length + q.length
state_after: no goals
Theorem: norm_deriv_le_of_lipschitz
File: Mathlib/Analysis/Calculus/Deriv/Basic.lean

tactic: simpa [norm_deriv_eq_norm_fderiv] using norm_fderiv_le_of_lipschitz 𝕜 hlip
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f✝ f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
f : 𝕜 → F
x₀ : 𝕜
C : ℝ≥0
hlip : LipschitzWith C f
⊢ ‖deriv f x₀‖ ≤ ↑C
state_after: no goals
Theorem: Tactic.NormNum.nat_sqrt_helper
File: Mathlib/Tactic/NormNum/NatSqrt.lean

tactic: rw [← hr, ← pow_two]
state_before: x y r : ℕ
hr : y * y + r = x
hle : r.ble (2 * y) = true
⊢ x.sqrt = y
state_after: x y r : ℕ
hr : y * y + r = x
hle : r.ble (2 * y) = true
⊢ (y ^ 2 + r).sqrt = y

tactic: rw [two_mul] at hle
state_before: x y r : ℕ
hr : y * y + r = x
hle : r.ble (2 * y) = true
⊢ (y ^ 2 + r).sqrt = y
state_after: x y r : ℕ
hr : y * y + r = x
hle : r.ble (y + y) = true
⊢ (y ^ 2 + r).sqrt = y

tactic: exact Nat.sqrt_add_eq' _ (Nat.le_of_ble_eq_true hle)
state_before: x y r : ℕ
hr : y * y + r = x
hle : r.ble (y + y) = true
⊢ (y ^ 2 + r).sqrt = y
state_after: no goals
Theorem: MeasureTheory.integrable_finset_sum
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simpa only [← Finset.sum_apply] using integrable_finset_sum' s hf
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
ι : Type u_5
s : Finset ι
f : ι → α → β
hf : ∀ i ∈ s, Integrable (f i) μ
⊢ Integrable (fun a => ∑ i ∈ s, f i a) μ
state_after: no goals
Theorem: Nat.sum_properDivisors_eq_one_iff_prime
File: Mathlib/NumberTheory/Divisors.lean

tactic: cases' n with n
state_before: n : ℕ
⊢ ∑ x ∈ n.properDivisors, x = 1 ↔ Prime n
state_after: case zero

⊢ ∑ x ∈ properDivisors 0, x = 1 ↔ Prime 0

case succ
n : ℕ
⊢ ∑ x ∈ (n + 1).properDivisors, x = 1 ↔ Prime (n + 1)

tactic: simp [Nat.not_prime_zero]
state_before: case zero

⊢ ∑ x ∈ properDivisors 0, x = 1 ↔ Prime 0
state_after: no goals

tactic: cases n
state_before: case succ
n : ℕ
⊢ ∑ x ∈ (n + 1).properDivisors, x = 1 ↔ Prime (n + 1)
state_after: case succ.zero

⊢ ∑ x ∈ (0 + 1).properDivisors, x = 1 ↔ Prime (0 + 1)

case succ.succ
n✝ : ℕ
⊢ ∑ x ∈ (n✝ + 1 + 1).properDivisors, x = 1 ↔ Prime (n✝ + 1 + 1)

tactic: simp [Nat.not_prime_one]
state_before: case succ.zero

⊢ ∑ x ∈ (0 + 1).properDivisors, x = 1 ↔ Prime (0 + 1)
state_after: no goals

tactic: rw [← properDivisors_eq_singleton_one_iff_prime]
state_before: case succ.succ
n✝ : ℕ
⊢ ∑ x ∈ (n✝ + 1 + 1).properDivisors, x = 1 ↔ Prime (n✝ + 1 + 1)
state_after: case succ.succ
n✝ : ℕ
⊢ ∑ x ∈ (n✝ + 1 + 1).properDivisors, x = 1 ↔ (n✝ + 1 + 1).properDivisors = {1}

tactic: refine ⟨fun h => ?_, fun h => h.symm ▸ sum_singleton _ _⟩
state_before: case succ.succ
n✝ : ℕ
⊢ ∑ x ∈ (n✝ + 1 + 1).properDivisors, x = 1 ↔ (n✝ + 1 + 1).properDivisors = {1}
state_after: case succ.succ
n✝ : ℕ
h : ∑ x ∈ (n✝ + 1 + 1).properDivisors, x = 1
⊢ (n✝ + 1 + 1).properDivisors = {1}

tactic: rw [@eq_comm (Finset ℕ) _ _]
state_before: case succ.succ
n✝ : ℕ
h : ∑ x ∈ (n✝ + 1 + 1).properDivisors, x = 1
⊢ (n✝ + 1 + 1).properDivisors = {1}
state_after: case succ.succ
n✝ : ℕ
h : ∑ x ∈ (n✝ + 1 + 1).properDivisors, x = 1
⊢ {1} = (n✝ + 1 + 1).properDivisors

tactic: apply
  eq_properDivisors_of_subset_of_sum_eq_sum
    (singleton_subset_iff.2
      (one_mem_properDivisors_iff_one_lt.2 (succ_lt_succ (Nat.succ_pos _))))
    ((sum_singleton _ _).trans h.symm)
state_before: case succ.succ
n✝ : ℕ
h : ∑ x ∈ (n✝ + 1 + 1).properDivisors, x = 1
⊢ {1} = (n✝ + 1 + 1).properDivisors
state_after: no goals
Theorem: Polynomial.Chebyshev.T_sub_one
File: Mathlib/RingTheory/Polynomial/Chebyshev.lean

tactic: linear_combination (norm := ring_nf) T_add_two R (n - 1)
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℤ
⊢ T R (n - 1) = 2 * X * T R n - T R (n + 1)
state_after: no goals
Theorem: MeasureTheory.OuterMeasure.trim_mkMetric
File: Mathlib/MeasureTheory/Measure/Hausdorff.lean

tactic: simp only [mkMetric, mkMetric'.eq_iSup_nat, trim_iSup]
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
m : ℝ≥0∞ → ℝ≥0∞
⊢ (mkMetric m).trim = mkMetric m
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
m : ℝ≥0∞ → ℝ≥0∞
⊢ ⨆ i, (mkMetric'.pre (fun s => m (diam s)) (↑i)⁻¹).trim = ⨆ n, mkMetric'.pre (fun s => m (diam s)) (↑n)⁻¹

tactic: congr 1 with n : 1
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
m : ℝ≥0∞ → ℝ≥0∞
⊢ ⨆ i, (mkMetric'.pre (fun s => m (diam s)) (↑i)⁻¹).trim = ⨆ n, mkMetric'.pre (fun s => m (diam s)) (↑n)⁻¹
state_after: case e_s.h
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
m : ℝ≥0∞ → ℝ≥0∞
n : ℕ
⊢ (mkMetric'.pre (fun s => m (diam s)) (↑n)⁻¹).trim = mkMetric'.pre (fun s => m (diam s)) (↑n)⁻¹

tactic: refine mkMetric'.trim_pre _ (fun s => ?_) _
state_before: case e_s.h
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
m : ℝ≥0∞ → ℝ≥0∞
n : ℕ
⊢ (mkMetric'.pre (fun s => m (diam s)) (↑n)⁻¹).trim = mkMetric'.pre (fun s => m (diam s)) (↑n)⁻¹
state_after: case e_s.h
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
m : ℝ≥0∞ → ℝ≥0∞
n : ℕ
s : Set X
⊢ m (diam (closure s)) = m (diam s)

tactic: simp
state_before: case e_s.h
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
m : ℝ≥0∞ → ℝ≥0∞
n : ℕ
s : Set X
⊢ m (diam (closure s)) = m (diam s)
state_after: no goals
Theorem: Complex.sin_mul_I
File: Mathlib/Data/Complex/Exponential.lean

tactic: have h : I * sin (x * I) = -sinh x := by
  rw [mul_comm, ← sinh_mul_I]
  ring_nf
  simp
state_before: x y : ℂ
⊢ sin (x * I) = sinh x * I
state_after: x y : ℂ
h : I * sin (x * I) = -sinh x
⊢ sin (x * I) = sinh x * I

tactic: rw [← neg_neg (sinh x), ← h]
state_before: x y : ℂ
h : I * sin (x * I) = -sinh x
⊢ sin (x * I) = sinh x * I
state_after: x y : ℂ
h : I * sin (x * I) = -sinh x
⊢ sin (x * I) = -(I * sin (x * I)) * I

tactic: apply Complex.ext <;> simp
state_before: x y : ℂ
h : I * sin (x * I) = -sinh x
⊢ sin (x * I) = -(I * sin (x * I)) * I
state_after: no goals

tactic: rw [mul_comm, ← sinh_mul_I]
state_before: x y : ℂ
⊢ I * sin (x * I) = -sinh x
state_after: x y : ℂ
⊢ sinh (x * I * I) = -sinh x

tactic: ring_nf
state_before: x y : ℂ
⊢ sinh (x * I * I) = -sinh x
state_after: x y : ℂ
⊢ sinh (x * I ^ 2) = -sinh x

tactic: simp
state_before: x y : ℂ
⊢ sinh (x * I ^ 2) = -sinh x
state_after: no goals
Theorem: Semiring.ext_iff
File: Mathlib/Algebra/Ring/Ext.lean

tactic: rintro rfl
state_before: R : Type u
inst₁ inst₂ : Semiring R
⊢ inst₁ = inst₂ → HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul
state_after: R : Type u
inst₁ : Semiring R
⊢ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

tactic: constructor <;> rfl
state_before: R : Type u
inst₁ : Semiring R
⊢ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul
state_after: no goals
Theorem: IsArtinianRing.maximal_ideals_finite
File: Mathlib/RingTheory/Artinian.lean

tactic: simp_rw [← isPrime_iff_isMaximal]
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsArtinianRing R
⊢ {I | I.IsMaximal}.Finite
state_after: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsArtinianRing R
⊢ {I | I.IsPrime}.Finite

tactic: apply primeSpectrum_finite R
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsArtinianRing R
⊢ {I | I.IsPrime}.Finite
state_after: no goals