1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: HasFiniteFPowerSeriesAt.add
File: Mathlib/Analysis/Analytic/CPolynomial.lean

tactic: rcases (hf.eventually.and hg.eventually).exists with ⟨r, hr⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
n m : ℕ
hf : HasFiniteFPowerSeriesAt f pf x n
hg : HasFiniteFPowerSeriesAt g pg x m
⊢ HasFiniteFPowerSeriesAt (f + g) (pf + pg) x (max n m)
state_after: case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r' : ℝ≥0∞
n m : ℕ
hf : HasFiniteFPowerSeriesAt f pf x n
hg : HasFiniteFPowerSeriesAt g pg x m
r : ℝ≥0∞
hr : HasFiniteFPowerSeriesOnBall f pf x n r ∧ HasFiniteFPowerSeriesOnBall g pg x m r
⊢ HasFiniteFPowerSeriesAt (f + g) (pf + pg) x (max n m)

tactic: exact ⟨r, hr.1.add hr.2⟩
state_before: case intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r✝ r' : ℝ≥0∞
n m : ℕ
hf : HasFiniteFPowerSeriesAt f pf x n
hg : HasFiniteFPowerSeriesAt g pg x m
r : ℝ≥0∞
hr : HasFiniteFPowerSeriesOnBall f pf x n r ∧ HasFiniteFPowerSeriesOnBall g pg x m r
⊢ HasFiniteFPowerSeriesAt (f + g) (pf + pg) x (max n m)
state_after: no goals
Theorem: dist_birkhoffAverage_birkhoffAverage_le
File: Mathlib/Dynamics/BirkhoffSum/NormedSpace.lean

tactic: gcongr
state_before: α : Type u_1
E : Type u_2
inst✝³ : NormedAddCommGroup E
𝕜 : Type u_3
inst✝² : RCLike 𝕜
inst✝¹ : Module 𝕜 E
inst✝ : BoundedSMul 𝕜 E
f : α → α
g : α → E
n : ℕ
x y : α
⊢ dist (birkhoffSum f g n x) (birkhoffSum f g n y) / ↑n ≤ (∑ k ∈ Finset.range n, dist (g (f^[k] x)) (g (f^[k] y))) / ↑n
state_after: case hab
α : Type u_1
E : Type u_2
inst✝³ : NormedAddCommGroup E
𝕜 : Type u_3
inst✝² : RCLike 𝕜
inst✝¹ : Module 𝕜 E
inst✝ : BoundedSMul 𝕜 E
f : α → α
g : α → E
n : ℕ
x y : α
⊢ dist (birkhoffSum f g n x) (birkhoffSum f g n y) ≤ ∑ k ∈ Finset.range n, dist (g (f^[k] x)) (g (f^[k] y))

tactic: apply dist_birkhoffSum_birkhoffSum_le
state_before: case hab
α : Type u_1
E : Type u_2
inst✝³ : NormedAddCommGroup E
𝕜 : Type u_3
inst✝² : RCLike 𝕜
inst✝¹ : Module 𝕜 E
inst✝ : BoundedSMul 𝕜 E
f : α → α
g : α → E
n : ℕ
x y : α
⊢ dist (birkhoffSum f g n x) (birkhoffSum f g n y) ≤ ∑ k ∈ Finset.range n, dist (g (f^[k] x)) (g (f^[k] y))
state_after: no goals
Theorem: Lagrange.nodal_eq_mul_nodal_erase
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: simp_rw [nodal, Finset.mul_prod_erase _ (fun x => X - C (v x)) hi]
state_before: R : Type u_1
inst✝¹ : CommRing R
ι : Type u_2
s : Finset ι
v : ι → R
inst✝ : DecidableEq ι
i : ι
hi : i ∈ s
⊢ nodal s v = (X - C (v i)) * nodal (s.erase i) v
state_after: no goals
Theorem: mul_eq_of_eq_div'
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [h, div_eq_mul_inv, mul_comm c, mul_inv_cancel_left]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : CommGroup G
a b c d : G
h : b = c / a
⊢ a * b = c
state_after: no goals
Theorem: Function.piCongrLeft'_symm_update
File: Mathlib/Logic/Equiv/Basic.lean

tactic: simp [(e.piCongrLeft' P).symm_apply_eq, piCongrLeft'_update]
state_before: α : Sort u_2
β : Sort u_3
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
P : α → Sort u_1
e : α ≃ β
f : (b : β) → P (e.symm b)
b : β
x : P (e.symm b)
⊢ (Equiv.piCongrLeft' P e).symm (update f b x) = update ((Equiv.piCongrLeft' P e).symm f) (e.symm b) x
state_after: no goals
Theorem: vectorSpan_pair_rev
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: rw [pair_comm, vectorSpan_pair]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p₁ p₂ : P
⊢ vectorSpan k {p₁, p₂} = Submodule.span k {p₂ -ᵥ p₁}
state_after: no goals
Theorem: vsub_vadd_comm
File: Mathlib/Algebra/AddTorsor.lean

tactic: rw [← @vsub_eq_zero_iff_eq G, vadd_vsub_assoc, vsub_vadd_eq_vsub_sub]
state_before: G : Type u_1
P : Type u_2
inst✝¹ : AddCommGroup G
inst✝ : AddTorsor G P
p₁ p₂ p₃ : P
⊢ p₁ -ᵥ p₂ +ᵥ p₃ = p₃ -ᵥ p₂ +ᵥ p₁
state_after: G : Type u_1
P : Type u_2
inst✝¹ : AddCommGroup G
inst✝ : AddTorsor G P
p₁ p₂ p₃ : P
⊢ p₁ -ᵥ p₂ + (p₃ -ᵥ p₁ - (p₃ -ᵥ p₂)) = 0

tactic: simp
state_before: G : Type u_1
P : Type u_2
inst✝¹ : AddCommGroup G
inst✝ : AddTorsor G P
p₁ p₂ p₃ : P
⊢ p₁ -ᵥ p₂ + (p₃ -ᵥ p₁ - (p₃ -ᵥ p₂)) = 0
state_after: no goals
Theorem: MonoidAlgebra.Submodule.exists_isCompl
File: Mathlib/RepresentationTheory/Maschke.lean

tactic: rcases MonoidAlgebra.exists_leftInverse_of_injective p.subtype p.ker_subtype with ⟨f, hf⟩
state_before: k : Type u
inst✝⁷ : Field k
G : Type u
inst✝⁶ : Fintype G
inst✝⁵ : Invertible ↑(Fintype.card G)
inst✝⁴ : Group G
V : Type u
inst✝³ : AddCommGroup V
inst✝² : Module (MonoidAlgebra k G) V
W : Type u
inst✝¹ : AddCommGroup W
inst✝ : Module (MonoidAlgebra k G) W
p : Submodule (MonoidAlgebra k G) V
⊢ ∃ q, IsCompl p q
state_after: case intro
k : Type u
inst✝⁷ : Field k
G : Type u
inst✝⁶ : Fintype G
inst✝⁵ : Invertible ↑(Fintype.card G)
inst✝⁴ : Group G
V : Type u
inst✝³ : AddCommGroup V
inst✝² : Module (MonoidAlgebra k G) V
W : Type u
inst✝¹ : AddCommGroup W
inst✝ : Module (MonoidAlgebra k G) W
p : Submodule (MonoidAlgebra k G) V
f : V →ₗ[MonoidAlgebra k G] ↥p
hf : f ∘ₗ p.subtype = LinearMap.id
⊢ ∃ q, IsCompl p q

tactic: exact ⟨LinearMap.ker f, LinearMap.isCompl_of_proj <| DFunLike.congr_fun hf⟩
state_before: case intro
k : Type u
inst✝⁷ : Field k
G : Type u
inst✝⁶ : Fintype G
inst✝⁵ : Invertible ↑(Fintype.card G)
inst✝⁴ : Group G
V : Type u
inst✝³ : AddCommGroup V
inst✝² : Module (MonoidAlgebra k G) V
W : Type u
inst✝¹ : AddCommGroup W
inst✝ : Module (MonoidAlgebra k G) W
p : Submodule (MonoidAlgebra k G) V
f : V →ₗ[MonoidAlgebra k G] ↥p
hf : f ∘ₗ p.subtype = LinearMap.id
⊢ ∃ q, IsCompl p q
state_after: no goals
Theorem: Set.pairwise_disjoint_Ioo_zpow
File: Mathlib/Algebra/Order/Interval/Set/Group.lean

tactic: simpa only [one_mul] using pairwise_disjoint_Ioo_mul_zpow 1 b
state_before: α : Type u_1
inst✝ : OrderedCommGroup α
a b : α
⊢ Pairwise (Disjoint on fun n => Ioo (b ^ n) (b ^ (n + 1)))
state_after: no goals
Theorem: PosNum.bit_to_nat
File: Mathlib/Data/Num/Lemmas.lean

tactic: cases b <;> rfl
state_before: α : Type u_1
b : Bool
n : PosNum
⊢ ↑(bit b n) = Nat.bit b ↑n
state_after: no goals
Theorem: Stirling.log_stirlingSeq_formula
File: Mathlib/Analysis/SpecialFunctions/Stirling.lean

tactic: cases n
state_before: n : ℕ
⊢ Real.log (stirlingSeq n) = Real.log ↑n ! - 1 / 2 * Real.log (2 * ↑n) - ↑n * Real.log (↑n / rexp 1)
state_after: case zero

⊢ Real.log (stirlingSeq 0) = Real.log ↑0! - 1 / 2 * Real.log (2 * ↑0) - ↑0 * Real.log (↑0 / rexp 1)

case succ
n✝ : ℕ
⊢ Real.log (stirlingSeq (n✝ + 1)) =
    Real.log ↑(n✝ + 1)! - 1 / 2 * Real.log (2 * ↑(n✝ + 1)) - ↑(n✝ + 1) * Real.log (↑(n✝ + 1) / rexp 1)

tactic: simp
state_before: case zero

⊢ Real.log (stirlingSeq 0) = Real.log ↑0! - 1 / 2 * Real.log (2 * ↑0) - ↑0 * Real.log (↑0 / rexp 1)
state_after: no goals

tactic: rw [stirlingSeq, log_div, log_mul, sqrt_eq_rpow, log_rpow, Real.log_pow, tsub_tsub]
  <;> positivity
state_before: case succ
n✝ : ℕ
⊢ Real.log (stirlingSeq (n✝ + 1)) =
    Real.log ↑(n✝ + 1)! - 1 / 2 * Real.log (2 * ↑(n✝ + 1)) - ↑(n✝ + 1) * Real.log (↑(n✝ + 1) / rexp 1)
state_after: no goals
Theorem: CategoryTheory.Sieve.pullback_ofObjects_eq_top
File: Mathlib/CategoryTheory/Sites/Sieves.lean

tactic: ext Z h
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z : C
f : Y✝ ⟶ X✝
S R : Sieve X✝
I : Type u_1
Y : I → C
X : C
i : I
g : X ⟶ Y i
⊢ ofObjects Y X = ⊤
state_after: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z✝ : C
f : Y✝ ⟶ X✝
S R : Sieve X✝
I : Type u_1
Y : I → C
X : C
i : I
g : X ⟶ Y i
Z : C
h : Z ⟶ X
⊢ (ofObjects Y X).arrows h ↔ ⊤.arrows h

tactic: simp only [top_apply, iff_true]
state_before: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z✝ : C
f : Y✝ ⟶ X✝
S R : Sieve X✝
I : Type u_1
Y : I → C
X : C
i : I
g : X ⟶ Y i
Z : C
h : Z ⟶ X
⊢ (ofObjects Y X).arrows h ↔ ⊤.arrows h
state_after: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z✝ : C
f : Y✝ ⟶ X✝
S R : Sieve X✝
I : Type u_1
Y : I → C
X : C
i : I
g : X ⟶ Y i
Z : C
h : Z ⟶ X
⊢ (ofObjects Y X).arrows h

tactic: rw [mem_ofObjects_iff ]
state_before: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z✝ : C
f : Y✝ ⟶ X✝
S R : Sieve X✝
I : Type u_1
Y : I → C
X : C
i : I
g : X ⟶ Y i
Z : C
h : Z ⟶ X
⊢ (ofObjects Y X).arrows h
state_after: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z✝ : C
f : Y✝ ⟶ X✝
S R : Sieve X✝
I : Type u_1
Y : I → C
X : C
i : I
g : X ⟶ Y i
Z : C
h : Z ⟶ X
⊢ ∃ i, Nonempty (Z ⟶ Y i)

tactic: exact ⟨i, ⟨h ≫ g⟩⟩
state_before: case h
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z✝ : C
f : Y✝ ⟶ X✝
S R : Sieve X✝
I : Type u_1
Y : I → C
X : C
i : I
g : X ⟶ Y i
Z : C
h : Z ⟶ X
⊢ ∃ i, Nonempty (Z ⟶ Y i)
state_after: no goals
Theorem: Homeomorph.transPartialHomeomorph_trans
File: Mathlib/Topology/PartialHomeomorph.lean

tactic: simp only [transPartialHomeomorph_eq_trans, PartialHomeomorph.trans_assoc]
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e✝ : X ≃ₜ Y
e' : Y ≃ₜ Z
e : X ≃ₜ Y
f : PartialHomeomorph Y Z
f' : PartialHomeomorph Z Z'
⊢ (e.transPartialHomeomorph f).trans f' = e.transPartialHomeomorph (f.trans f')
state_after: no goals
Theorem: Polynomial.cyclotomic_eq_minpoly
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Roots.lean

tactic: refine eq_of_monic_of_dvd_of_natDegree_le (minpoly.monic (IsPrimitiveRoot.isIntegral h hpos))
  (cyclotomic.monic n ℤ) (h.minpoly_dvd_cyclotomic hpos) ?_
state_before: R : Type u_1
inst✝² : CommRing R
n✝ n : ℕ
K : Type u_2
inst✝¹ : Field K
μ : K
h : IsPrimitiveRoot μ n
hpos : 0 < n
inst✝ : CharZero K
⊢ cyclotomic n ℤ = minpoly ℤ μ
state_after: R : Type u_1
inst✝² : CommRing R
n✝ n : ℕ
K : Type u_2
inst✝¹ : Field K
μ : K
h : IsPrimitiveRoot μ n
hpos : 0 < n
inst✝ : CharZero K
⊢ (cyclotomic n ℤ).natDegree ≤ (minpoly ℤ μ).natDegree

tactic: simpa [natDegree_cyclotomic n ℤ] using totient_le_degree_minpoly h
state_before: R : Type u_1
inst✝² : CommRing R
n✝ n : ℕ
K : Type u_2
inst✝¹ : Field K
μ : K
h : IsPrimitiveRoot μ n
hpos : 0 < n
inst✝ : CharZero K
⊢ (cyclotomic n ℤ).natDegree ≤ (minpoly ℤ μ).natDegree
state_after: no goals
Theorem: CategoryTheory.PreGaloisCategory.exists_hom_from_galois_of_fiber_nonempty
File: Mathlib/CategoryTheory/Galois/Decomposition.lean

tactic: obtain ⟨x⟩ := h
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
h : Nonempty ↑(F.obj X)
⊢ ∃ A x, IsGalois A
state_after: case intro
C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
x : ↑(F.obj X)
⊢ ∃ A x, IsGalois A

tactic: obtain ⟨A, f, a, h1, _⟩ := exists_hom_from_galois_of_fiber F X x
state_before: case intro
C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
x : ↑(F.obj X)
⊢ ∃ A x, IsGalois A
state_after: case intro.intro.intro.intro.intro
C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
x : ↑(F.obj X)
A : C
f : A ⟶ X
a : ↑(F.obj A)
h1 : IsGalois A
right✝ : F.map f a = x
⊢ ∃ A x, IsGalois A

tactic: exact ⟨A, f, h1⟩
state_before: case intro.intro.intro.intro.intro
C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
x : ↑(F.obj X)
A : C
f : A ⟶ X
a : ↑(F.obj A)
h1 : IsGalois A
right✝ : F.map f a = x
⊢ ∃ A x, IsGalois A
state_after: no goals
Theorem: ENNReal.toReal_sSup
File: Mathlib/Data/ENNReal/Real.lean

tactic: simp only [ENNReal.toReal, toNNReal_sSup s hf, NNReal.coe_sSup, Set.image_image]
state_before: ι : Sort u_1
f g : ι → ℝ≥0∞
a b c d : ℝ≥0∞
r p q : ℝ≥0
s : Set ℝ≥0∞
hf : ∀ r ∈ s, r ≠ ⊤
⊢ (sSup s).toReal = sSup (ENNReal.toReal '' s)
state_after: no goals
Theorem: NormedAddGroupHom.Equalizer.ι_comp_lift
File: Mathlib/Analysis/Normed/Group/Hom.lean

tactic: ext
state_before: V : Type u_1
W : Type u_2
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type u_5
inst✝⁷ : SeminormedAddCommGroup V
inst✝⁶ : SeminormedAddCommGroup W
inst✝⁵ : SeminormedAddCommGroup V₁
inst✝⁴ : SeminormedAddCommGroup V₂
inst✝³ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V W
W₁ : Type u_6
W₂ : Type u_7
W₃ : Type u_8
inst✝² : SeminormedAddCommGroup W₁
inst✝¹ : SeminormedAddCommGroup W₂
inst✝ : SeminormedAddCommGroup W₃
g : NormedAddGroupHom V W
f₁ g₁ : NormedAddGroupHom V₁ W₁
f₂ g₂ : NormedAddGroupHom V₂ W₂
f₃ g₃ : NormedAddGroupHom V₃ W₃
φ : NormedAddGroupHom V₁ V
h : f.comp φ = g.comp φ
⊢ (ι f g).comp (lift φ h) = φ
state_after: case H
V : Type u_1
W : Type u_2
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type u_5
inst✝⁷ : SeminormedAddCommGroup V
inst✝⁶ : SeminormedAddCommGroup W
inst✝⁵ : SeminormedAddCommGroup V₁
inst✝⁴ : SeminormedAddCommGroup V₂
inst✝³ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V W
W₁ : Type u_6
W₂ : Type u_7
W₃ : Type u_8
inst✝² : SeminormedAddCommGroup W₁
inst✝¹ : SeminormedAddCommGroup W₂
inst✝ : SeminormedAddCommGroup W₃
g : NormedAddGroupHom V W
f₁ g₁ : NormedAddGroupHom V₁ W₁
f₂ g₂ : NormedAddGroupHom V₂ W₂
f₃ g₃ : NormedAddGroupHom V₃ W₃
φ : NormedAddGroupHom V₁ V
h : f.comp φ = g.comp φ
x✝ : V₁
⊢ ((ι f g).comp (lift φ h)) x✝ = φ x✝

tactic: rfl
state_before: case H
V : Type u_1
W : Type u_2
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type u_5
inst✝⁷ : SeminormedAddCommGroup V
inst✝⁶ : SeminormedAddCommGroup W
inst✝⁵ : SeminormedAddCommGroup V₁
inst✝⁴ : SeminormedAddCommGroup V₂
inst✝³ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V W
W₁ : Type u_6
W₂ : Type u_7
W₃ : Type u_8
inst✝² : SeminormedAddCommGroup W₁
inst✝¹ : SeminormedAddCommGroup W₂
inst✝ : SeminormedAddCommGroup W₃
g : NormedAddGroupHom V W
f₁ g₁ : NormedAddGroupHom V₁ W₁
f₂ g₂ : NormedAddGroupHom V₂ W₂
f₃ g₃ : NormedAddGroupHom V₃ W₃
φ : NormedAddGroupHom V₁ V
h : f.comp φ = g.comp φ
x✝ : V₁
⊢ ((ι f g).comp (lift φ h)) x✝ = φ x✝
state_after: no goals
Theorem: CategoryTheory.Subgroupoid.hom.faithful
File: Mathlib/CategoryTheory/Groupoid/Subgroupoid.lean

tactic: rintro ⟨c, hc⟩ ⟨d, hd⟩ ⟨f, hf⟩ ⟨g, hg⟩ hfg
state_before: C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
⊢ ∀ (c d : ↑S.objs), Function.Injective fun f => S.hom.map f
state_after: case mk.mk.mk.mk
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c : C
hc : c ∈ S.objs
d : C
hd : d ∈ S.objs
f : ↑⟨c, hc⟩ ⟶ ↑⟨d, hd⟩
hf : f ∈ S.arrows ↑⟨c, hc⟩ ↑⟨d, hd⟩
g : ↑⟨c, hc⟩ ⟶ ↑⟨d, hd⟩
hg : g ∈ S.arrows ↑⟨c, hc⟩ ↑⟨d, hd⟩
hfg : (fun f => S.hom.map f) ⟨f, hf⟩ = (fun f => S.hom.map f) ⟨g, hg⟩
⊢ ⟨f, hf⟩ = ⟨g, hg⟩

tactic: exact Subtype.eq hfg
state_before: case mk.mk.mk.mk
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c : C
hc : c ∈ S.objs
d : C
hd : d ∈ S.objs
f : ↑⟨c, hc⟩ ⟶ ↑⟨d, hd⟩
hf : f ∈ S.arrows ↑⟨c, hc⟩ ↑⟨d, hd⟩
g : ↑⟨c, hc⟩ ⟶ ↑⟨d, hd⟩
hg : g ∈ S.arrows ↑⟨c, hc⟩ ↑⟨d, hd⟩
hfg : (fun f => S.hom.map f) ⟨f, hf⟩ = (fun f => S.hom.map f) ⟨g, hg⟩
⊢ ⟨f, hf⟩ = ⟨g, hg⟩
state_after: no goals
Theorem: PrimeSpectrum.closure_singleton
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [← zeroLocus_vanishingIdeal_eq_closure, vanishingIdeal_singleton]
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
x : PrimeSpectrum R
⊢ closure {x} = zeroLocus ↑x.asIdeal
state_after: no goals
Theorem: Set.card_fintypeInsertOfNotMem
File: Mathlib/Data/Set/Finite.lean

tactic: simp [fintypeInsertOfNotMem, Fintype.card_ofFinset]
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
a : α
s : Set α
inst✝ : Fintype ↑s
h : a ∉ s
⊢ Fintype.card ↑(insert a s) = Fintype.card ↑s + 1
state_after: no goals
Theorem: isPurelyInseparable_iff_perfectClosure_eq_top
File: Mathlib/FieldTheory/PurelyInseparable.lean

tactic: rw [isPurelyInseparable_iff_pow_mem F (ringExpChar F)]
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
⊢ IsPurelyInseparable F E ↔ perfectClosure F E = ⊤
state_after: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
⊢ (∀ (x : E), ∃ n, x ^ ringExpChar F ^ n ∈ (algebraMap F E).range) ↔ perfectClosure F E = ⊤

tactic: exact ⟨fun H ↦ top_unique fun x _ ↦ H x, fun H _ ↦ H.ge trivial⟩
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
⊢ (∀ (x : E), ∃ n, x ^ ringExpChar F ^ n ∈ (algebraMap F E).range) ↔ perfectClosure F E = ⊤
state_after: no goals
Theorem: HasStrictDerivAt.mul_const
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

tactic: convert hc.mul (hasStrictDerivAt_const x d) using 1
state_before: 𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
E : Type w
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
𝔸 : Type u_3
inst✝³ : NormedField 𝕜'
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormedAlgebra 𝕜 𝔸
c d✝ : 𝕜 → 𝔸
c' d' : 𝔸
u v : 𝕜 → 𝕜'
hc : HasStrictDerivAt c c' x
d : 𝔸
⊢ HasStrictDerivAt (fun y => c y * d) (c' * d) x
state_after: case h.e'_7
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
E : Type w
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
𝔸 : Type u_3
inst✝³ : NormedField 𝕜'
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormedAlgebra 𝕜 𝔸
c d✝ : 𝕜 → 𝔸
c' d' : 𝔸
u v : 𝕜 → 𝕜'
hc : HasStrictDerivAt c c' x
d : 𝔸
⊢ c' * d = c' * d + c x * 0

tactic: rw [mul_zero, add_zero]
state_before: case h.e'_7
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
E : Type w
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
𝔸 : Type u_3
inst✝³ : NormedField 𝕜'
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormedAlgebra 𝕜 𝔸
c d✝ : 𝕜 → 𝔸
c' d' : 𝔸
u v : 𝕜 → 𝕜'
hc : HasStrictDerivAt c c' x
d : 𝔸
⊢ c' * d = c' * d + c x * 0
state_after: no goals
Theorem: Sublattice.mem_sInf
File: Mathlib/Order/Sublattice.lean

tactic: rw [← SetLike.mem_coe]
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : Lattice α
inst✝¹ : Lattice β
inst✝ : Lattice γ
L M : Sublattice α
f : LatticeHom α β
s t : Set α
a : α
S : Set (Sublattice α)
⊢ a ∈ sInf S ↔ ∀ L ∈ S, a ∈ L
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : Lattice α
inst✝¹ : Lattice β
inst✝ : Lattice γ
L M : Sublattice α
f : LatticeHom α β
s t : Set α
a : α
S : Set (Sublattice α)
⊢ a ∈ ↑(sInf S) ↔ ∀ L ∈ S, a ∈ L

tactic: simp
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : Lattice α
inst✝¹ : Lattice β
inst✝ : Lattice γ
L M : Sublattice α
f : LatticeHom α β
s t : Set α
a : α
S : Set (Sublattice α)
⊢ a ∈ ↑(sInf S) ↔ ∀ L ∈ S, a ∈ L
state_after: no goals
Theorem: CategoryTheory.MonoidalFunctor.map_tensor
File: Mathlib/CategoryTheory/Monoidal/Functor.lean

tactic: simp
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : MonoidalFunctor C D
X Y X' Y' : C
f : X ⟶ Y
g : X' ⟶ Y'
⊢ F.map (f ⊗ g) = inv (F.μ X X') ≫ (F.map f ⊗ F.map g) ≫ F.μ Y Y'
state_after: no goals
Theorem: PMF.seq_apply
File: Mathlib/Probability/ProbabilityMassFunction/Constructions.lean

tactic: simp only [seq, mul_boole, bind_apply, pure_apply]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
q : PMF (α → β)
p : PMF α
b : β
⊢ (q.seq p) b = ∑' (f : α → β) (a : α), if b = f a then q f * p a else 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
q : PMF (α → β)
p : PMF α
b : β
⊢ (∑' (a : α → β), q a * ∑' (a_1 : α), if b = a a_1 then p a_1 else 0) =
    ∑' (f : α → β) (a : α), if b = f a then q f * p a else 0

tactic: refine tsum_congr fun f => ENNReal.tsum_mul_left.symm.trans (tsum_congr fun a => ?_)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
q : PMF (α → β)
p : PMF α
b : β
⊢ (∑' (a : α → β), q a * ∑' (a_1 : α), if b = a a_1 then p a_1 else 0) =
    ∑' (f : α → β) (a : α), if b = f a then q f * p a else 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
q : PMF (α → β)
p : PMF α
b : β
f : α → β
a : α
⊢ (q f * if b = f a then p a else 0) = if b = f a then q f * p a else 0

tactic: simpa only [mul_zero] using mul_ite (b = f a) (q f) (p a) 0
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
q : PMF (α → β)
p : PMF α
b : β
f : α → β
a : α
⊢ (q f * if b = f a then p a else 0) = if b = f a then q f * p a else 0
state_after: no goals
Theorem: Summable.norm_lt_one
File: Mathlib/NumberTheory/EulerProduct/Basic.lean

tactic: refine summable_geometric_iff_norm_lt_one.mp ?_
state_before: F : Type u_1
inst✝¹ : NormedField F
inst✝ : CompleteSpace F
f : ℕ →* F
hsum : Summable ⇑f
p : ℕ
hp : 1 < p
⊢ ‖f p‖ < 1
state_after: F : Type u_1
inst✝¹ : NormedField F
inst✝ : CompleteSpace F
f : ℕ →* F
hsum : Summable ⇑f
p : ℕ
hp : 1 < p
⊢ Summable fun n => f p ^ n

tactic: simp_rw [← map_pow]
state_before: F : Type u_1
inst✝¹ : NormedField F
inst✝ : CompleteSpace F
f : ℕ →* F
hsum : Summable ⇑f
p : ℕ
hp : 1 < p
⊢ Summable fun n => f p ^ n
state_after: F : Type u_1
inst✝¹ : NormedField F
inst✝ : CompleteSpace F
f : ℕ →* F
hsum : Summable ⇑f
p : ℕ
hp : 1 < p
⊢ Summable fun n => f (p ^ n)

tactic: exact hsum.comp_injective <| Nat.pow_right_injective hp
state_before: F : Type u_1
inst✝¹ : NormedField F
inst✝ : CompleteSpace F
f : ℕ →* F
hsum : Summable ⇑f
p : ℕ
hp : 1 < p
⊢ Summable fun n => f (p ^ n)
state_after: no goals
Theorem: Zsqrtd.smul_re
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

tactic: simp
state_before: d a : ℤ
b : ℤ√d
⊢ (↑a * b).re = a * b.re
state_after: no goals