1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Polynomial.natDegree_derivative_lt
File: Mathlib/Algebra/Polynomial/Derivative.lean

tactic: rcases eq_or_ne (derivative p) 0 with hp' | hp'
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
hp : p.natDegree ≠ 0
⊢ (derivative p).natDegree < p.natDegree
state_after: case inl
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
hp : p.natDegree ≠ 0
hp' : derivative p = 0
⊢ (derivative p).natDegree < p.natDegree

case inr
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
hp : p.natDegree ≠ 0
hp' : derivative p ≠ 0
⊢ (derivative p).natDegree < p.natDegree

tactic: rw [hp', Polynomial.natDegree_zero]
state_before: case inl
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
hp : p.natDegree ≠ 0
hp' : derivative p = 0
⊢ (derivative p).natDegree < p.natDegree
state_after: case inl
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
hp : p.natDegree ≠ 0
hp' : derivative p = 0
⊢ 0 < p.natDegree

tactic: exact hp.bot_lt
state_before: case inl
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
hp : p.natDegree ≠ 0
hp' : derivative p = 0
⊢ 0 < p.natDegree
state_after: no goals

tactic: rw [natDegree_lt_natDegree_iff hp']
state_before: case inr
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
hp : p.natDegree ≠ 0
hp' : derivative p ≠ 0
⊢ (derivative p).natDegree < p.natDegree
state_after: case inr
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
hp : p.natDegree ≠ 0
hp' : derivative p ≠ 0
⊢ (derivative p).degree < p.degree

tactic: exact degree_derivative_lt fun h => hp (h.symm ▸ natDegree_zero)
state_before: case inr
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
hp : p.natDegree ≠ 0
hp' : derivative p ≠ 0
⊢ (derivative p).degree < p.degree
state_after: no goals
Theorem: HasStrictDerivAt.add
File: Mathlib/Analysis/Calculus/Deriv/Add.lean

tactic: simpa using (hf.add hg).hasStrictDerivAt
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 : Filter 𝕜
hf : HasStrictDerivAt f f' x
hg : HasStrictDerivAt g g' x
⊢ HasStrictDerivAt (fun y => f y + g y) (f' + g') x
state_after: no goals
Theorem: AddMonoidAlgebra.mapDomain_algebraMap
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: simp only [Function.comp_apply, mapDomain_single, AddMonoidAlgebra.coe_algebraMap, map_zero]
state_before: k : Type u₁
G : Type u₂
H✝ : Type u_1
R : Type u_2
A : Type u_3
H : Type u_4
F : Type u_5
inst✝⁶ : CommSemiring k
inst✝⁵ : Semiring A
inst✝⁴ : Algebra k A
inst✝³ : AddMonoid G
inst✝² : AddMonoid H
inst✝¹ : FunLike F G H
inst✝ : AddMonoidHomClass F G H
f : F
r : k
⊢ mapDomain (⇑f) ((algebraMap k A[G]) r) = (algebraMap k A[H]) r
state_after: no goals
Theorem: Equiv.pow_mulLeft
File: Mathlib/GroupTheory/Perm/Basic.lean

tactic: ext
state_before: α : Type u
β : Type v
inst✝ : Group α
a b : α
n : ℕ
⊢ Equiv.mulLeft a ^ n = Equiv.mulLeft (a ^ n)
state_after: case H
α : Type u
β : Type v
inst✝ : Group α
a b : α
n : ℕ
x✝ : α
⊢ (Equiv.mulLeft a ^ n) x✝ = (Equiv.mulLeft (a ^ n)) x✝

tactic: simp [Perm.coe_pow]
state_before: case H
α : Type u
β : Type v
inst✝ : Group α
a b : α
n : ℕ
x✝ : α
⊢ (Equiv.mulLeft a ^ n) x✝ = (Equiv.mulLeft (a ^ n)) x✝
state_after: no goals
Theorem: List.sublistsAux_eq_bind
File: Mathlib/Data/List/Sublists.lean

tactic: simp [sublistsAux]
state_before: α : Type u
β : Type v
γ : Type w
a : α
r : List (List α)
⊢ sublistsAux a [] = [].bind fun l => [l, a :: l]
state_after: no goals

tactic: rw [append_bind, ← ih, bind_singleton, sublistsAux, foldl_append]
state_before: α : Type u
β : Type v
γ : Type w
a : α
r✝ r : List (List α)
l : List α
ih : sublistsAux a r = r.bind fun l => [l, a :: l]
⊢ sublistsAux a (r ++ [l]) = (r ++ [l]).bind fun l => [l, a :: l]
state_after: α : Type u
β : Type v
γ : Type w
a : α
r✝ r : List (List α)
l : List α
ih : sublistsAux a r = r.bind fun l => [l, a :: l]
⊢ foldl (fun r l => r ++ [l, a :: l]) (foldl (fun r l => r ++ [l, a :: l]) [] r) [l] = sublistsAux a r ++ [l, a :: l]

tactic: simp [sublistsAux]
state_before: α : Type u
β : Type v
γ : Type w
a : α
r✝ r : List (List α)
l : List α
ih : sublistsAux a r = r.bind fun l => [l, a :: l]
⊢ foldl (fun r l => r ++ [l, a :: l]) (foldl (fun r l => r ++ [l, a :: l]) [] r) [l] = sublistsAux a r ++ [l, a :: l]
state_after: no goals
Theorem: CategoryTheory.isIso_of_epi_of_isSplitMono
File: Mathlib/CategoryTheory/EpiMono.lean

tactic: simp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y : C
f : X ⟶ Y
inst✝¹ : IsSplitMono f
inst✝ : Epi f
⊢ f ≫ retraction f = 𝟙 X
state_after: no goals

tactic: simp [← cancel_epi f]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y : C
f : X ⟶ Y
inst✝¹ : IsSplitMono f
inst✝ : Epi f
⊢ retraction f ≫ f = 𝟙 Y
state_after: no goals
Theorem: Orientation.oangle_neg_self_left
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: simp [oangle_neg_left, hx]
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x : V
hx : x ≠ 0
⊢ o.oangle (-x) x = ↑π
state_after: no goals
Theorem: List.isRotated_nil_iff'
File: Mathlib/Data/List/Rotate.lean

tactic: rw [isRotated_comm, isRotated_nil_iff, eq_comm]
state_before: α : Type u
l l' : List α
⊢ [] ~r l ↔ [] = l
state_after: no goals
Theorem: Rel.image_empty
File: Mathlib/Data/Rel.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
⊢ r.image ∅ = ∅
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
x : β
⊢ x ∈ r.image ∅ ↔ x ∈ ∅

tactic: simp [mem_image]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
x : β
⊢ x ∈ r.image ∅ ↔ x ∈ ∅
state_after: no goals
Theorem: Algebra.mul_sub_algebraMap_pow_commutes
File: Mathlib/Algebra/Algebra/Basic.lean

tactic: induction' n with n ih
state_before: R : Type u
S : Type v
A : Type w
B : Type u_1
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
x : A
r : R
n : ℕ
⊢ x * (x - (algebraMap R A) r) ^ n = (x - (algebraMap R A) r) ^ n * x
state_after: case zero
R : Type u
S : Type v
A : Type w
B : Type u_1
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
x : A
r : R
⊢ x * (x - (algebraMap R A) r) ^ 0 = (x - (algebraMap R A) r) ^ 0 * x

case succ
R : Type u
S : Type v
A : Type w
B : Type u_1
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
x : A
r : R
n : ℕ
ih : x * (x - (algebraMap R A) r) ^ n = (x - (algebraMap R A) r) ^ n * x
⊢ x * (x - (algebraMap R A) r) ^ (n + 1) = (x - (algebraMap R A) r) ^ (n + 1) * x

tactic: simp
state_before: case zero
R : Type u
S : Type v
A : Type w
B : Type u_1
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
x : A
r : R
⊢ x * (x - (algebraMap R A) r) ^ 0 = (x - (algebraMap R A) r) ^ 0 * x
state_after: no goals

tactic: rw [pow_succ', ← mul_assoc, mul_sub_algebraMap_commutes, mul_assoc, ih, ← mul_assoc]
state_before: case succ
R : Type u
S : Type v
A : Type w
B : Type u_1
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
x : A
r : R
n : ℕ
ih : x * (x - (algebraMap R A) r) ^ n = (x - (algebraMap R A) r) ^ n * x
⊢ x * (x - (algebraMap R A) r) ^ (n + 1) = (x - (algebraMap R A) r) ^ (n + 1) * x
state_after: no goals
Theorem: Setoid.rel_iff_exists_classes
File: Mathlib/Data/Setoid/Partition.lean

tactic: subst c
state_before: α : Type u_1
r : Setoid α
x y : α
x✝ : ∃ c ∈ r.classes, x ∈ c ∧ y ∈ c
c : Set α
z : α
hz : c = {x | r.Rel x z}
hx : x ∈ c
hy : y ∈ c
⊢ r.Rel x y
state_after: α : Type u_1
r : Setoid α
x y : α
x✝ : ∃ c ∈ r.classes, x ∈ c ∧ y ∈ c
z : α
hx : x ∈ {x | r.Rel x z}
hy : y ∈ {x | r.Rel x z}
⊢ r.Rel x y

tactic: exact r.trans' hx (r.symm' hy)
state_before: α : Type u_1
r : Setoid α
x y : α
x✝ : ∃ c ∈ r.classes, x ∈ c ∧ y ∈ c
z : α
hx : x ∈ {x | r.Rel x z}
hy : y ∈ {x | r.Rel x z}
⊢ r.Rel x y
state_after: no goals
Theorem: Mathlib.Tactic.Ring.add_pf_add_zero
File: Mathlib/Tactic/Ring/Basic.lean

tactic: simp
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a : R
⊢ a + 0 = a
state_after: no goals
Theorem: ENNReal.eventuallyEq_of_toReal_eventuallyEq
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: filter_upwards [hfi, hgi, hfg] with _ hfx hgx _
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
l : Filter α
f g : α → ℝ≥0∞
hfi : ∀ᶠ (x : α) in l, f x ≠ ⊤
hgi : ∀ᶠ (x : α) in l, g x ≠ ⊤
hfg : (fun x => (f x).toReal) =ᶠ[l] fun x => (g x).toReal
⊢ f =ᶠ[l] g
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
l : Filter α
f g : α → ℝ≥0∞
hfi : ∀ᶠ (x : α) in l, f x ≠ ⊤
hgi : ∀ᶠ (x : α) in l, g x ≠ ⊤
hfg : (fun x => (f x).toReal) =ᶠ[l] fun x => (g x).toReal
a✝¹ : α
hfx : f a✝¹ ≠ ⊤
hgx : g a✝¹ ≠ ⊤
a✝ : (f a✝¹).toReal = (g a✝¹).toReal
⊢ f a✝¹ = g a✝¹

tactic: rwa [← ENNReal.toReal_eq_toReal hfx hgx]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
l : Filter α
f g : α → ℝ≥0∞
hfi : ∀ᶠ (x : α) in l, f x ≠ ⊤
hgi : ∀ᶠ (x : α) in l, g x ≠ ⊤
hfg : (fun x => (f x).toReal) =ᶠ[l] fun x => (g x).toReal
a✝¹ : α
hfx : f a✝¹ ≠ ⊤
hgx : g a✝¹ ≠ ⊤
a✝ : (f a✝¹).toReal = (g a✝¹).toReal
⊢ f a✝¹ = g a✝¹
state_after: no goals
Theorem: Matrix.IsHermitian.fromBlocks₂₂
File: Mathlib/LinearAlgebra/Matrix/SchurComplement.lean

tactic: rw [← isHermitian_submatrix_equiv (Equiv.sumComm n m), Equiv.sumComm_apply,
  fromBlocks_submatrix_sum_swap_sum_swap]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
𝕜 : Type u_5
inst✝⁵ : CommRing 𝕜
inst✝⁴ : PartialOrder 𝕜
inst✝³ : StarRing 𝕜
inst✝² : StarOrderedRing 𝕜
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix m m 𝕜
B : Matrix m n 𝕜
D : Matrix n n 𝕜
hD : D.IsHermitian
⊢ (Matrix.fromBlocks A B Bᴴ D).IsHermitian ↔ (A - B * D⁻¹ * Bᴴ).IsHermitian
state_after: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
𝕜 : Type u_5
inst✝⁵ : CommRing 𝕜
inst✝⁴ : PartialOrder 𝕜
inst✝³ : StarRing 𝕜
inst✝² : StarOrderedRing 𝕜
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix m m 𝕜
B : Matrix m n 𝕜
D : Matrix n n 𝕜
hD : D.IsHermitian
⊢ (Matrix.fromBlocks D Bᴴ B A).IsHermitian ↔ (A - B * D⁻¹ * Bᴴ).IsHermitian

tactic: convert IsHermitian.fromBlocks₁₁ _ _ hD <;> simp
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
𝕜 : Type u_5
inst✝⁵ : CommRing 𝕜
inst✝⁴ : PartialOrder 𝕜
inst✝³ : StarRing 𝕜
inst✝² : StarOrderedRing 𝕜
inst✝¹ : Fintype n
inst✝ : DecidableEq n
A : Matrix m m 𝕜
B : Matrix m n 𝕜
D : Matrix n n 𝕜
hD : D.IsHermitian
⊢ (Matrix.fromBlocks D Bᴴ B A).IsHermitian ↔ (A - B * D⁻¹ * Bᴴ).IsHermitian
state_after: no goals
Theorem: Quaternion.hasSum_coe
File: Mathlib/Analysis/Quaternion.lean

tactic: simpa only using h.map (show ℍ →ₗ[ℝ] ℝ from QuaternionAlgebra.reₗ _ _) continuous_re
state_before: α : Type u_1
f : α → ℝ
r : ℝ
h : HasSum (fun a => ↑(f a)) ↑r
⊢ HasSum f r
state_after: no goals

tactic: simpa only using h.map (algebraMap ℝ ℍ) (continuous_algebraMap _ _)
state_before: α : Type u_1
f : α → ℝ
r : ℝ
h : HasSum f r
⊢ HasSum (fun a => ↑(f a)) ↑r
state_after: no goals
Theorem: inTangentCoordinates_model_space
File: Mathlib/Geometry/Manifold/VectorBundle/Tangent.lean

tactic: simp (config := { unfoldPartialApp := true }) only [inTangentCoordinates,
  inCoordinates_tangent_bundle_core_model_space]
state_before: 𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
E' : Type u_3
inst✝¹¹ : NormedAddCommGroup E'
inst✝¹⁰ : NormedSpace 𝕜 E'
H : Type u_4
inst✝⁹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
H' : Type u_5
inst✝⁸ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_6
inst✝⁷ : TopologicalSpace M
inst✝⁶ : ChartedSpace H M
inst✝⁵ : SmoothManifoldWithCorners I M
M' : Type u_7
inst✝⁴ : TopologicalSpace M'
inst✝³ : ChartedSpace H' M'
inst✝² : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
N : Type u_9
f : N → H
g : N → H'
ϕ : N → E →L[𝕜] E'
x₀ : N
⊢ inTangentCoordinates I I' f g ϕ x₀ = ϕ
state_after: no goals
Theorem: SimpleGraph.incMatrix_apply_mul_incMatrix_apply
File: Mathlib/Combinatorics/SimpleGraph/IncMatrix.lean

tactic: classical simp only [incMatrix, Set.indicator_apply, ite_zero_mul_ite_zero, Pi.one_apply, mul_one,
  Set.mem_inter_iff]
state_before: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝ : MulZeroOneClass R
a b : α
e : Sym2 α
⊢ incMatrix R G a e * incMatrix R G b e = (G.incidenceSet a ∩ G.incidenceSet b).indicator 1 e
state_after: no goals

tactic: simp only [incMatrix, Set.indicator_apply, ite_zero_mul_ite_zero, Pi.one_apply, mul_one,
Set.mem_inter_iff]
state_before: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝ : MulZeroOneClass R
a b : α
e : Sym2 α
⊢ incMatrix R G a e * incMatrix R G b e = (G.incidenceSet a ∩ G.incidenceSet b).indicator 1 e
state_after: no goals
Theorem: Matrix.det_permute
File: Mathlib/LinearAlgebra/Matrix/Determinant/Basic.lean

tactic: simp [Units.smul_def]
state_before: m : Type u_1
n : Type u_2
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
σ : Perm n
M : Matrix n n R
⊢ sign σ • detRowAlternating M = ↑↑(sign σ) * M.det
state_after: no goals
Theorem: UniformContinuous.iterate
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: induction n with
| zero => exact uniformContinuous_id
| succ n hn => exact Function.iterate_succ _ _ ▸ UniformContinuous.comp hn h
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝¹ : UniformSpace α
inst✝ : UniformSpace β
T : β → β
n : ℕ
h : UniformContinuous T
⊢ UniformContinuous T^[n]
state_after: no goals

tactic: exact uniformContinuous_id
state_before: case zero
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝¹ : UniformSpace α
inst✝ : UniformSpace β
T : β → β
h : UniformContinuous T
⊢ UniformContinuous T^[0]
state_after: no goals

tactic: exact Function.iterate_succ _ _ ▸ UniformContinuous.comp hn h
state_before: case succ
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝¹ : UniformSpace α
inst✝ : UniformSpace β
T : β → β
h : UniformContinuous T
n : ℕ
hn : UniformContinuous T^[n]
⊢ UniformContinuous T^[n + 1]
state_after: no goals
Theorem: Polynomial.trailingDegree_ne_of_natTrailingDegree_ne
File: Mathlib/Algebra/Polynomial/Degree/TrailingDegree.lean

tactic: rw [natTrailingDegree, h, ENat.toNat_coe]
state_before: R : Type u
S : Type v
a b : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
n : ℕ
h : p.trailingDegree = ↑n
⊢ p.natTrailingDegree = n
state_after: no goals
Theorem: GeneralizedContinuedFraction.denominators_recurrence
File: Mathlib/Algebra/ContinuedFractions/ContinuantsRecurrence.lean

tactic: obtain ⟨ppredConts, nth_conts_eq, ⟨rfl⟩⟩ : ∃ conts, g.continuants n = conts ∧ conts.b = ppredB :=
  exists_conts_b_of_denom nth_denom_eq
state_before: K : Type u_1
g : GeneralizedContinuedFraction K
n : ℕ
inst✝ : DivisionRing K
gp : Pair K
ppredB predB : K
succ_nth_s_eq : g.s.get? (n + 1) = some gp
nth_denom_eq : g.denominators n = ppredB
succ_nth_denom_eq : g.denominators (n + 1) = predB
⊢ g.denominators (n + 2) = gp.b * predB + gp.a * ppredB
state_after: case intro.intro.refl
K : Type u_1
g : GeneralizedContinuedFraction K
n : ℕ
inst✝ : DivisionRing K
gp : Pair K
predB : K
succ_nth_s_eq : g.s.get? (n + 1) = some gp
succ_nth_denom_eq : g.denominators (n + 1) = predB
ppredConts : Pair K
nth_conts_eq : g.continuants n = ppredConts
nth_denom_eq : g.denominators n = ppredConts.b
⊢ g.denominators (n + 2) = gp.b * predB + gp.a * ppredConts.b

tactic: obtain ⟨predConts, succ_nth_conts_eq, ⟨rfl⟩⟩ :
    ∃ conts, g.continuants (n + 1) = conts ∧ conts.b = predB :=
  exists_conts_b_of_denom succ_nth_denom_eq
state_before: case intro.intro.refl
K : Type u_1
g : GeneralizedContinuedFraction K
n : ℕ
inst✝ : DivisionRing K
gp : Pair K
predB : K
succ_nth_s_eq : g.s.get? (n + 1) = some gp
succ_nth_denom_eq : g.denominators (n + 1) = predB
ppredConts : Pair K
nth_conts_eq : g.continuants n = ppredConts
nth_denom_eq : g.denominators n = ppredConts.b
⊢ g.denominators (n + 2) = gp.b * predB + gp.a * ppredConts.b
state_after: case intro.intro.refl.intro.intro.refl
K : Type u_1
g : GeneralizedContinuedFraction K
n : ℕ
inst✝ : DivisionRing K
gp : Pair K
succ_nth_s_eq : g.s.get? (n + 1) = some gp
ppredConts : Pair K
nth_conts_eq : g.continuants n = ppredConts
nth_denom_eq : g.denominators n = ppredConts.b
predConts : Pair K
succ_nth_conts_eq : g.continuants (n + 1) = predConts
succ_nth_denom_eq : g.denominators (n + 1) = predConts.b
⊢ g.denominators (n + 2) = gp.b * predConts.b + gp.a * ppredConts.b

tactic: rw [denom_eq_conts_b, continuants_recurrence succ_nth_s_eq nth_conts_eq succ_nth_conts_eq]
state_before: case intro.intro.refl.intro.intro.refl
K : Type u_1
g : GeneralizedContinuedFraction K
n : ℕ
inst✝ : DivisionRing K
gp : Pair K
succ_nth_s_eq : g.s.get? (n + 1) = some gp
ppredConts : Pair K
nth_conts_eq : g.continuants n = ppredConts
nth_denom_eq : g.denominators n = ppredConts.b
predConts : Pair K
succ_nth_conts_eq : g.continuants (n + 1) = predConts
succ_nth_denom_eq : g.denominators (n + 1) = predConts.b
⊢ g.denominators (n + 2) = gp.b * predConts.b + gp.a * ppredConts.b
state_after: no goals
Theorem: Equiv.swap_apply_eq_iff
File: Mathlib/Logic/Equiv/Basic.lean

tactic: rw [apply_eq_iff_eq_symm_apply, symm_swap]
state_before: α : Sort u_1
inst✝ : DecidableEq α
x y z w : α
⊢ (swap x y) z = w ↔ z = (swap x y) w
state_after: no goals
Theorem: iUnion_Ioc_add_intCast
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simpa only [zsmul_one, Int.cast_add, Int.cast_one, ← add_assoc] using
  iUnion_Ioc_add_zsmul zero_lt_one a
state_before: α : Type u_1
inst✝¹ : LinearOrderedRing α
inst✝ : Archimedean α
a : α
⊢ ⋃ n, Ioc (a + ↑n) (a + ↑n + 1) = univ
state_after: no goals
Theorem: zero_prodMap_dualTensorHom
File: Mathlib/LinearAlgebra/Contraction.lean

tactic: ext <;>
  simp only [coe_comp, coe_inr, Function.comp_apply, prodMap_apply, dualTensorHom_apply,
    snd_apply, Prod.smul_mk, LinearMap.zero_apply, smul_zero]
state_before: ι : Type w
R : Type u
M : Type v₁
N : Type v₂
P : Type v₃
Q : Type v₄
inst✝¹⁰ : CommSemiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid N
inst✝⁷ : AddCommMonoid P
inst✝⁶ : AddCommMonoid Q
inst✝⁵ : Module R M
inst✝⁴ : Module R N
inst✝³ : Module R P
inst✝² : Module R Q
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
b : Basis ι R M
g : Dual R N
q : Q
⊢ prodMap 0 ((dualTensorHom R N Q) (g ⊗ₜ[R] q)) =
    (dualTensorHom R (M × N) (P × Q)) ((g ∘ₗ snd R M N) ⊗ₜ[R] (inr R P Q) q)
state_after: no goals
Theorem: equicontinuousOn_univ
File: Mathlib/Topology/UniformSpace/Equicontinuity.lean

tactic: simp [EquicontinuousOn, Equicontinuous]
state_before: ι : Type u_1
κ : Type u_2
X : Type u_3
X' : Type u_4
Y : Type u_5
Z : Type u_6
α : Type u_7
α' : Type u_8
β : Type u_9
β' : Type u_10
γ : Type u_11
𝓕 : Type u_12
tX : TopologicalSpace X
tY : TopologicalSpace Y
tZ : TopologicalSpace Z
uα : UniformSpace α
uβ : UniformSpace β
uγ : UniformSpace γ
F : ι → X → α
⊢ EquicontinuousOn F univ ↔ Equicontinuous F
state_after: no goals
Theorem: MvPolynomial.degrees_neg
File: Mathlib/Algebra/MvPolynomial/CommRing.lean

tactic: rw [degrees, support_neg]
state_before: R : Type u
S : Type v
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommRing R
p✝ q p : MvPolynomial σ R
⊢ (-p).degrees = p.degrees
state_after: R : Type u
S : Type v
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommRing R
p✝ q p : MvPolynomial σ R
⊢ (p.support.sup fun s => toMultiset s) = p.degrees

tactic: rfl
state_before: R : Type u
S : Type v
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommRing R
p✝ q p : MvPolynomial σ R
⊢ (p.support.sup fun s => toMultiset s) = p.degrees
state_after: no goals
Theorem: WeierstrassCurve.ΨSq_ofNat
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: simp only [ΨSq, preΨ_ofNat, Int.even_coe_nat]
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
n : ℕ
⊢ W.ΨSq ↑n = W.preΨ' n ^ 2 * if Even n then W.Ψ₂Sq else 1
state_after: no goals
Theorem: MeasureTheory.BorelCantelli.martingalePart_process_ae_eq
File: Mathlib/Probability/Martingale/BorelCantelli.lean

tactic: simp only [martingalePart_eq_sum, process_zero, zero_add]
state_before: Ω : Type u_1
m0 : MeasurableSpace Ω
μ✝ : Measure Ω
ℱ✝ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
r : ℝ
R : ℝ≥0
s✝ : ℕ → Set Ω
ℱ : Filtration ℕ m0
μ : Measure Ω
s : ℕ → Set Ω
n : ℕ
⊢ martingalePart (process s) ℱ μ n = ∑ k ∈ Finset.range n, ((s (k + 1)).indicator 1 - μ[(s (k + 1)).indicator 1|↑ℱ k])
state_after: Ω : Type u_1
m0 : MeasurableSpace Ω
μ✝ : Measure Ω
ℱ✝ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
r : ℝ
R : ℝ≥0
s✝ : ℕ → Set Ω
ℱ : Filtration ℕ m0
μ : Measure Ω
s : ℕ → Set Ω
n : ℕ
⊢ ∑ i ∈ Finset.range n, (process s (i + 1) - process s i - μ[process s (i + 1) - process s i|↑ℱ i]) =
    ∑ k ∈ Finset.range n, ((s (k + 1)).indicator 1 - μ[(s (k + 1)).indicator 1|↑ℱ k])

tactic: refine Finset.sum_congr rfl fun k _ => ?_
state_before: Ω : Type u_1
m0 : MeasurableSpace Ω
μ✝ : Measure Ω
ℱ✝ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
r : ℝ
R : ℝ≥0
s✝ : ℕ → Set Ω
ℱ : Filtration ℕ m0
μ : Measure Ω
s : ℕ → Set Ω
n : ℕ
⊢ ∑ i ∈ Finset.range n, (process s (i + 1) - process s i - μ[process s (i + 1) - process s i|↑ℱ i]) =
    ∑ k ∈ Finset.range n, ((s (k + 1)).indicator 1 - μ[(s (k + 1)).indicator 1|↑ℱ k])
state_after: Ω : Type u_1
m0 : MeasurableSpace Ω
μ✝ : Measure Ω
ℱ✝ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
r : ℝ
R : ℝ≥0
s✝ : ℕ → Set Ω
ℱ : Filtration ℕ m0
μ : Measure Ω
s : ℕ → Set Ω
n k : ℕ
x✝ : k ∈ Finset.range n
⊢ process s (k + 1) - process s k - μ[process s (k + 1) - process s k|↑ℱ k] =
    (s (k + 1)).indicator 1 - μ[(s (k + 1)).indicator 1|↑ℱ k]

tactic: simp only [process, Finset.sum_range_succ_sub_sum]
state_before: Ω : Type u_1
m0 : MeasurableSpace Ω
μ✝ : Measure Ω
ℱ✝ : Filtration ℕ m0
f : ℕ → Ω → ℝ
ω : Ω
r : ℝ
R : ℝ≥0
s✝ : ℕ → Set Ω
ℱ : Filtration ℕ m0
μ : Measure Ω
s : ℕ → Set Ω
n k : ℕ
x✝ : k ∈ Finset.range n
⊢ process s (k + 1) - process s k - μ[process s (k + 1) - process s k|↑ℱ k] =
    (s (k + 1)).indicator 1 - μ[(s (k + 1)).indicator 1|↑ℱ k]
state_after: no goals
Theorem: Fin.prod_univ_one
File: Mathlib/Algebra/BigOperators/Fin.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
inst✝ : CommMonoid β
f : Fin 1 → β
⊢ ∏ i : Fin 1, f i = f 0
state_after: no goals
Theorem: List.count_add_count_not
File: Mathlib/Data/Bool/Count.lean

tactic: rw [add_comm, count_not_add_count]
state_before: l : List Bool
b : Bool
⊢ count b l + count (!b) l = l.length
state_after: no goals
Theorem: Polynomial.roots_monomial
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: rw [← C_mul_X_pow_eq_monomial, roots_C_mul_X_pow ha]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n✝ : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
ha : a ≠ 0
n : ℕ
⊢ ((monomial n) a).roots = n • {0}
state_after: no goals