1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: surjOn_Ici_of_monotone_surjective
File: Mathlib/Order/Interval/Set/SurjOn.lean

tactic: rw [← Ioi_union_left, ← Ioi_union_left]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : PartialOrder β
f : α → β
h_mono : Monotone f
h_surj : Surjective f
a : α
⊢ SurjOn f (Ici a) (Ici (f a))
state_after: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : PartialOrder β
f : α → β
h_mono : Monotone f
h_surj : Surjective f
a : α
⊢ SurjOn f (Ioi a ∪ {a}) (Ioi (f a) ∪ {f a})

tactic: exact
  (surjOn_Ioi_of_monotone_surjective h_mono h_surj a).union_union
    (@image_singleton _ _ f a ▸ surjOn_image _ _)
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : PartialOrder β
f : α → β
h_mono : Monotone f
h_surj : Surjective f
a : α
⊢ SurjOn f (Ioi a ∪ {a}) (Ioi (f a) ∪ {f a})
state_after: no goals
Theorem: hasMFDerivAt_iff_hasFDerivAt
File: Mathlib/Geometry/Manifold/MFDeriv/FDeriv.lean

tactic: rw [← hasMFDerivWithinAt_univ, hasMFDerivWithinAt_iff_hasFDerivWithinAt, hasFDerivWithinAt_univ]
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'
f : E → E'
s : Set E
x : E
f' : TangentSpace 𝓘(𝕜, E) x →L[𝕜] TangentSpace 𝓘(𝕜, E') (f x)
⊢ HasMFDerivAt 𝓘(𝕜, E) 𝓘(𝕜, E') f x f' ↔ HasFDerivAt f f' x
state_after: no goals
Theorem: strictConvex_univ
File: Mathlib/Analysis/Convex/Strict.lean

tactic: intro x _ y _ _ a b _ _ _
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
F : Type u_4
β : Type u_5
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x y : E
a b : 𝕜
⊢ StrictConvex 𝕜 univ
state_after: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
F : Type u_4
β : Type u_5
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x✝ y✝ : E
a✝⁶ b✝ : 𝕜
x : E
a✝⁵ : x ∈ univ
y : E
a✝⁴ : y ∈ univ
a✝³ : x ≠ y
a b : 𝕜
a✝² : 0 < a
a✝¹ : 0 < b
a✝ : a + b = 1
⊢ a • x + b • y ∈ interior univ

tactic: rw [interior_univ]
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
F : Type u_4
β : Type u_5
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x✝ y✝ : E
a✝⁶ b✝ : 𝕜
x : E
a✝⁵ : x ∈ univ
y : E
a✝⁴ : y ∈ univ
a✝³ : x ≠ y
a b : 𝕜
a✝² : 0 < a
a✝¹ : 0 < b
a✝ : a + b = 1
⊢ a • x + b • y ∈ interior univ
state_after: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
F : Type u_4
β : Type u_5
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x✝ y✝ : E
a✝⁶ b✝ : 𝕜
x : E
a✝⁵ : x ∈ univ
y : E
a✝⁴ : y ∈ univ
a✝³ : x ≠ y
a b : 𝕜
a✝² : 0 < a
a✝¹ : 0 < b
a✝ : a + b = 1
⊢ a • x + b • y ∈ univ

tactic: exact mem_univ _
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
F : Type u_4
β : Type u_5
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x✝ y✝ : E
a✝⁶ b✝ : 𝕜
x : E
a✝⁵ : x ∈ univ
y : E
a✝⁴ : y ∈ univ
a✝³ : x ≠ y
a b : 𝕜
a✝² : 0 < a
a✝¹ : 0 < b
a✝ : a + b = 1
⊢ a • x + b • y ∈ univ
state_after: no goals
Theorem: derivedSeries_normal
File: Mathlib/GroupTheory/Solvable.lean

tactic: induction' n with n ih
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
f : G →* G'
n : ℕ
⊢ (derivedSeries G n).Normal
state_after: case zero
G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
f : G →* G'
⊢ (derivedSeries G 0).Normal

case succ
G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
f : G →* G'
n : ℕ
ih : (derivedSeries G n).Normal
⊢ (derivedSeries G (n + 1)).Normal

tactic: exact (⊤ : Subgroup G).normal_of_characteristic
state_before: case zero
G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
f : G →* G'
⊢ (derivedSeries G 0).Normal
state_after: no goals

tactic: exact @Subgroup.commutator_normal G _ (derivedSeries G n) (derivedSeries G n) ih ih
state_before: case succ
G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
f : G →* G'
n : ℕ
ih : (derivedSeries G n).Normal
⊢ (derivedSeries G (n + 1)).Normal
state_after: no goals
Theorem: List.sizeOf_lt_sizeOf_of_mem
File: Mathlib/Data/List/Basic.lean

tactic: induction' l with h t ih <;> cases hx <;> rw [cons.sizeOf_spec]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : SizeOf α
x : α
l : List α
hx : x ∈ l
⊢ sizeOf x < sizeOf l
state_after: case cons.head
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : SizeOf α
x : α
t : List α
ih : x ∈ t → sizeOf x < sizeOf t
⊢ sizeOf x < 1 + sizeOf x + sizeOf t

case cons.tail
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : SizeOf α
x h : α
t : List α
ih : x ∈ t → sizeOf x < sizeOf t
a✝ : Mem x t
⊢ sizeOf x < 1 + sizeOf h + sizeOf t

tactic: omega
state_before: case cons.head
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : SizeOf α
x : α
t : List α
ih : x ∈ t → sizeOf x < sizeOf t
⊢ sizeOf x < 1 + sizeOf x + sizeOf t
state_after: no goals

tactic: specialize ih ‹_›
state_before: case cons.tail
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : SizeOf α
x h : α
t : List α
ih : x ∈ t → sizeOf x < sizeOf t
a✝ : Mem x t
⊢ sizeOf x < 1 + sizeOf h + sizeOf t
state_after: case cons.tail
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : SizeOf α
x h : α
t : List α
a✝ : Mem x t
ih : sizeOf x < sizeOf t
⊢ sizeOf x < 1 + sizeOf h + sizeOf t

tactic: omega
state_before: case cons.tail
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : SizeOf α
x h : α
t : List α
a✝ : Mem x t
ih : sizeOf x < sizeOf t
⊢ sizeOf x < 1 + sizeOf h + sizeOf t
state_after: no goals
Theorem: bernsteinPolynomial.iterate_derivative_at_1_eq_zero_of_lt
File: Mathlib/RingTheory/Polynomial/Bernstein.lean

tactic: intro w
state_before: R : Type u_1
inst✝ : CommRing R
n ν k : ℕ
⊢ k < n - ν → eval 1 ((⇑derivative)^[k] (bernsteinPolynomial R n ν)) = 0
state_after: R : Type u_1
inst✝ : CommRing R
n ν k : ℕ
w : k < n - ν
⊢ eval 1 ((⇑derivative)^[k] (bernsteinPolynomial R n ν)) = 0

tactic: rw [flip' _ _ _ (tsub_pos_iff_lt.mp (pos_of_gt w)).le]
state_before: R : Type u_1
inst✝ : CommRing R
n ν k : ℕ
w : k < n - ν
⊢ eval 1 ((⇑derivative)^[k] (bernsteinPolynomial R n ν)) = 0
state_after: R : Type u_1
inst✝ : CommRing R
n ν k : ℕ
w : k < n - ν
⊢ eval 1 ((⇑derivative)^[k] ((bernsteinPolynomial R n (n - ν)).comp (1 - X))) = 0

tactic: simp [Polynomial.eval_comp, iterate_derivative_at_0_eq_zero_of_lt R n w]
state_before: R : Type u_1
inst✝ : CommRing R
n ν k : ℕ
w : k < n - ν
⊢ eval 1 ((⇑derivative)^[k] ((bernsteinPolynomial R n (n - ν)).comp (1 - X))) = 0
state_after: no goals
Theorem: ArithmeticFunction.LSeries_vonMangoldt_eq
File: Mathlib/NumberTheory/LSeries/Dirichlet.lean

tactic: refine (LSeries_congr s fun {n} _ ↦ ?_).trans <|
  LSeries_modOne_eq ▸ LSeries_twist_vonMangoldt_eq χ₁ hs
state_before: s : ℂ
hs : 1 < s.re
⊢ L (fun n => ↑(Λ n)) s = -deriv (L 1) s / L 1 s
state_after: s : ℂ
hs : 1 < s.re
n : ℕ
x✝ : n ≠ 0
⊢ ↑(Λ n) = ((fun n => 1 ↑n) * fun n => ↑(Λ n)) n

tactic: simp only [Subsingleton.eq_one (n : ZMod 1), map_one, Pi.mul_apply, one_mul]
state_before: s : ℂ
hs : 1 < s.re
n : ℕ
x✝ : n ≠ 0
⊢ ↑(Λ n) = ((fun n => 1 ↑n) * fun n => ↑(Λ n)) n
state_after: no goals
Theorem: CategoryTheory.MorphismProperty.isoClosure_eq_iff
File: Mathlib/CategoryTheory/MorphismProperty/Basic.lean

tactic: intro X Y f ⟨X', Y', f', hf', ⟨e⟩⟩
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{?u.15018, u_1} D
P : MorphismProperty C
hP : P.RespectsIso
⊢ P.isoClosure ≤ P
state_after: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{?u.15018, u_1} D
P : MorphismProperty C
hP : P.RespectsIso
X Y : C
f : X ⟶ Y
X' Y' : C
f' : X' ⟶ Y'
hf' : P f'
e : Arrow.mk f' ≅ Arrow.mk f
⊢ P f

tactic: exact (hP.arrow_mk_iso_iff e).1 hf'
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{?u.15018, u_1} D
P : MorphismProperty C
hP : P.RespectsIso
X Y : C
f : X ⟶ Y
X' Y' : C
f' : X' ⟶ Y'
hf' : P f'
e : Arrow.mk f' ≅ Arrow.mk f
⊢ P f
state_after: no goals
Theorem: Fin.insertNth_apply_above
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: rw [insertNth, succAboveCases, dif_neg h.ne', dif_neg h.not_lt]
state_before: m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
i j : Fin (n + 1)
h : i < j
x : α i
p : (k : Fin n) → α (i.succAbove k)
⊢ i.insertNth x p j = Eq.recOn ⋯ (p (j.pred ⋯))
state_after: no goals
Theorem: LightProfinite.pullback.condition
File: Mathlib/Topology/Category/LightProfinite/Limits.lean

tactic: ext ⟨_, h⟩
state_before: X Y B : LightProfinite
f : X ⟶ B
g : Y ⟶ B
⊢ fst f g ≫ f = snd f g ≫ g
state_after: case w.mk
X Y B : LightProfinite
f : X ⟶ B
g : Y ⟶ B
val✝ : ↑X.toCompHaus.toTop × ↑Y.toCompHaus.toTop
h : val✝ ∈ {xy | f xy.1 = g xy.2}
⊢ (fst f g ≫ f) ⟨val✝, h⟩ = (snd f g ≫ g) ⟨val✝, h⟩

tactic: exact h
state_before: case w.mk
X Y B : LightProfinite
f : X ⟶ B
g : Y ⟶ B
val✝ : ↑X.toCompHaus.toTop × ↑Y.toCompHaus.toTop
h : val✝ ∈ {xy | f xy.1 = g xy.2}
⊢ (fst f g ≫ f) ⟨val✝, h⟩ = (snd f g ≫ g) ⟨val✝, h⟩
state_after: no goals
Theorem: PowerSeries.X_dvd_iff
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: rw [← pow_one (X : R⟦X⟧), X_pow_dvd_iff, ← coeff_zero_eq_constantCoeff_apply]
state_before: R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ X ∣ φ ↔ (constantCoeff R) φ = 0
state_after: R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ (∀ m < 1, (coeff R m) φ = 0) ↔ (coeff R 0) φ = 0

tactic: constructor <;> intro h
state_before: R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ (∀ m < 1, (coeff R m) φ = 0) ↔ (coeff R 0) φ = 0
state_after: case mp
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : ∀ m < 1, (coeff R m) φ = 0
⊢ (coeff R 0) φ = 0

case mpr
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : (coeff R 0) φ = 0
⊢ ∀ m < 1, (coeff R m) φ = 0

tactic: exact h 0 zero_lt_one
state_before: case mp
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : ∀ m < 1, (coeff R m) φ = 0
⊢ (coeff R 0) φ = 0
state_after: no goals

tactic: intro m hm
state_before: case mpr
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : (coeff R 0) φ = 0
⊢ ∀ m < 1, (coeff R m) φ = 0
state_after: case mpr
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : (coeff R 0) φ = 0
m : ℕ
hm : m < 1
⊢ (coeff R m) φ = 0

tactic: rwa [Nat.eq_zero_of_le_zero (Nat.le_of_succ_le_succ hm)]
state_before: case mpr
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : (coeff R 0) φ = 0
m : ℕ
hm : m < 1
⊢ (coeff R m) φ = 0
state_after: no goals
Theorem: isBoundedBilinearMap_inner
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: simp only [← algebraMap_smul 𝕜 r x, algebraMap_eq_ofReal, inner_smul_real_left]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : NormedSpace ℝ E
r : ℝ
x y : E
⊢ ⟪(r • x, y).1, (r • x, y).2⟫_𝕜 = r • ⟪(x, y).1, (x, y).2⟫_𝕜
state_after: no goals

tactic: simp only [← algebraMap_smul 𝕜 r y, algebraMap_eq_ofReal, inner_smul_real_right]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : NormedSpace ℝ E
r : ℝ
x y : E
⊢ ⟪(x, r • y).1, (x, r • y).2⟫_𝕜 = r • ⟪(x, y).1, (x, y).2⟫_𝕜
state_after: no goals

tactic: rw [one_mul]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : NormedSpace ℝ E
x y : E
⊢ ‖⟪(x, y).1, (x, y).2⟫_𝕜‖ ≤ 1 * ‖x‖ * ‖y‖
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : NormedSpace ℝ E
x y : E
⊢ ‖⟪(x, y).1, (x, y).2⟫_𝕜‖ ≤ ‖x‖ * ‖y‖

tactic: exact norm_inner_le_norm x y
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : NormedSpace ℝ E
x y : E
⊢ ‖⟪(x, y).1, (x, y).2⟫_𝕜‖ ≤ ‖x‖ * ‖y‖
state_after: no goals
Theorem: dirSupInacc_iff_forall_sSup
File: Mathlib/Topology/Order/ScottTopology.lean

tactic: simp [DirSupInacc, isLUB_iff_sSup_eq]
state_before: α : Type u_1
β : Type u_2
inst✝ : CompleteLattice α
s t : Set α
⊢ DirSupInacc s ↔ ∀ ⦃d : Set α⦄, d.Nonempty → DirectedOn (fun x x_1 => x ≤ x_1) d → sSup d ∈ s → (d ∩ s).Nonempty
state_after: no goals
Theorem: List.get_set_of_ne
File: Mathlib/Data/List/Basic.lean

tactic: simpa using hj
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ l : List α
i j : ℕ
h : i ≠ j
a : α
hj : j < (l.set i a).length
⊢ j < l.length
state_after: no goals

tactic: simp [getElem_set_of_ne, h]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ l : List α
i j : ℕ
h : i ≠ j
a : α
hj : j < (l.set i a).length
⊢ (l.set i a).get ⟨j, hj⟩ = l.get ⟨j, ⋯⟩
state_after: no goals
Theorem: Polynomial.Monic.normalize_eq_self
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

tactic: simp only [Polynomial.coe_normUnit, normalize_apply, hp.leadingCoeff, normUnit_one,
  Units.val_one, Polynomial.C.map_one, mul_one]
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizationMonoid R
p : R[X]
hp : p.Monic
⊢ normalize p = p
state_after: no goals
Theorem: Set.Ici_diff_left
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: simp [lt_iff_le_and_ne, eq_comm]
state_before: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c x : α
⊢ x ∈ Ici a \ {a} ↔ x ∈ Ioi a
state_after: no goals
Theorem: CharacterModule.int.divByNat_self
File: Mathlib/Algebra/Module/CharacterModule.lean

tactic: obtain rfl | h0 := eq_or_ne n 0
state_before: R : Type uR
inst✝³ : CommRing R
A : Type uA
inst✝² : AddCommGroup A
A' : Type u_1
inst✝¹ : AddCommGroup A'
B : Type uB
inst✝ : AddCommGroup B
n : ℕ
⊢ (int.divByNat n) ↑n = 0
state_after: case inl
R : Type uR
inst✝³ : CommRing R
A : Type uA
inst✝² : AddCommGroup A
A' : Type u_1
inst✝¹ : AddCommGroup A'
B : Type uB
inst✝ : AddCommGroup B
⊢ (int.divByNat 0) ↑0 = 0

case inr
R : Type uR
inst✝³ : CommRing R
A : Type uA
inst✝² : AddCommGroup A
A' : Type u_1
inst✝¹ : AddCommGroup A'
B : Type uB
inst✝ : AddCommGroup B
n : ℕ
h0 : n ≠ 0
⊢ (int.divByNat n) ↑n = 0

tactic: exact (AddCircle.coe_eq_zero_iff _).mpr
  ⟨1, by simp [mul_inv_cancel (Nat.cast_ne_zero (R := ℚ).mpr h0)]⟩
state_before: case inr
R : Type uR
inst✝³ : CommRing R
A : Type uA
inst✝² : AddCommGroup A
A' : Type u_1
inst✝¹ : AddCommGroup A'
B : Type uB
inst✝ : AddCommGroup B
n : ℕ
h0 : n ≠ 0
⊢ (int.divByNat n) ↑n = 0
state_after: no goals

tactic: apply map_zero
state_before: case inl
R : Type uR
inst✝³ : CommRing R
A : Type uA
inst✝² : AddCommGroup A
A' : Type u_1
inst✝¹ : AddCommGroup A'
B : Type uB
inst✝ : AddCommGroup B
⊢ (int.divByNat 0) ↑0 = 0
state_after: no goals

tactic: simp [mul_inv_cancel (Nat.cast_ne_zero (R := ℚ).mpr h0)]
state_before: R : Type uR
inst✝³ : CommRing R
A : Type uA
inst✝² : AddCommGroup A
A' : Type u_1
inst✝¹ : AddCommGroup A'
B : Type uB
inst✝ : AddCommGroup B
n : ℕ
h0 : n ≠ 0
⊢ 1 • 1 = (fun x => LinearMap.id ↑n • x) (↑n)⁻¹
state_after: no goals
Theorem: Equiv.Perm.closure_isCycle
File: Mathlib/GroupTheory/Perm/Closure.lean

tactic: classical
  cases nonempty_fintype β
  exact
    top_le_iff.mp (le_trans (ge_of_eq closure_isSwap) (closure_mono fun _ => IsSwap.isCycle))
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : Finite β
⊢ closure {σ | σ.IsCycle} = ⊤
state_after: no goals

tactic: cases nonempty_fintype β
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : Finite β
⊢ closure {σ | σ.IsCycle} = ⊤
state_after: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : Finite β
val✝ : Fintype β
⊢ closure {σ | σ.IsCycle} = ⊤

tactic: exact
  top_le_iff.mp (le_trans (ge_of_eq closure_isSwap) (closure_mono fun _ => IsSwap.isCycle))
state_before: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : Finite β
val✝ : Fintype β
⊢ closure {σ | σ.IsCycle} = ⊤
state_after: no goals
Theorem: NNReal.strictMono_rpow_of_pos
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: simp only [NNReal.rpow_lt_rpow hxy h, coe_lt_coe]
state_before: w x✝ y✝ z✝ z : ℝ
h : 0 < z
x y : ℝ≥0
hxy : x < y
⊢ (fun x => x ^ z) x < (fun x => x ^ z) y
state_after: no goals
Theorem: rTensor_mkQ
File: Mathlib/LinearAlgebra/TensorProduct/RightExactness.lean

tactic: rw [← exact_iff]
state_before: R : Type u_1
M : Type u_2
N✝ : Type u_3
P : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup N✝
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R M
inst✝³ : Module R N✝
inst✝² : Module R P
f : M →ₗ[R] N✝
g : N✝ →ₗ[R] P
Q : Type u_5
inst✝¹ : AddCommGroup Q
inst✝ : Module R Q
hfg : Exact ⇑f ⇑g
hg : Surjective ⇑g
N : Submodule R M
⊢ ker (rTensor Q N.mkQ) = range (rTensor Q N.subtype)
state_after: R : Type u_1
M : Type u_2
N✝ : Type u_3
P : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup N✝
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R M
inst✝³ : Module R N✝
inst✝² : Module R P
f : M →ₗ[R] N✝
g : N✝ →ₗ[R] P
Q : Type u_5
inst✝¹ : AddCommGroup Q
inst✝ : Module R Q
hfg : Exact ⇑f ⇑g
hg : Surjective ⇑g
N : Submodule R M
⊢ Exact ⇑(rTensor Q N.subtype) ⇑(rTensor Q N.mkQ)

tactic: exact rTensor_exact Q (LinearMap.exact_subtype_mkQ N) (Submodule.mkQ_surjective N)
state_before: R : Type u_1
M : Type u_2
N✝ : Type u_3
P : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup N✝
inst✝⁵ : AddCommGroup P
inst✝⁴ : Module R M
inst✝³ : Module R N✝
inst✝² : Module R P
f : M →ₗ[R] N✝
g : N✝ →ₗ[R] P
Q : Type u_5
inst✝¹ : AddCommGroup Q
inst✝ : Module R Q
hfg : Exact ⇑f ⇑g
hg : Surjective ⇑g
N : Submodule R M
⊢ Exact ⇑(rTensor Q N.subtype) ⇑(rTensor Q N.mkQ)
state_after: no goals
Theorem: IsUnit.div_self
File: Mathlib/Algebra/Group/Units.lean

tactic: rw [div_eq_mul_inv, h.mul_inv_cancel]
state_before: α : Type u
M : Type u_1
N : Type u_2
inst✝ : DivisionMonoid α
a b c : α
h : IsUnit a
⊢ a / a = 1
state_after: no goals
Theorem: Linarith.mul_neg
File: Mathlib/Tactic/Linarith/Lemmas.lean

tactic: simpa
state_before: α : Type u_1
inst✝ : StrictOrderedRing α
a b : α
ha : a < 0
hb : 0 < b
this : -b * a > 0
⊢ 0 < -(b * a)
state_after: no goals
Theorem: Ordinal.bmex_monotone
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rwa [range_familyOfBFamily, range_familyOfBFamily]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o o' : Ordinal.{u}
f : (a : Ordinal.{u}) → a < o → Ordinal.{max u v}
g : (a : Ordinal.{u}) → a < o' → Ordinal.{max u v}
h : o.brange f ⊆ o'.brange g
⊢ range (o.familyOfBFamily f) ⊆ range (o'.familyOfBFamily g)
state_after: no goals
Theorem: Real.logb_div
File: Mathlib/Analysis/SpecialFunctions/Log/Base.lean

tactic: simp_rw [logb, log_div hx hy, sub_div]
state_before: b x y : ℝ
hx : x ≠ 0
hy : y ≠ 0
⊢ logb b (x / y) = logb b x - logb b y
state_after: no goals
Theorem: WittVector.init_nsmul
File: Mathlib/RingTheory/WittVector/InitTail.lean

tactic: init_ring using fun p [Fact (Nat.Prime p)] n => wittNSMul_vars p m n
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n✝ : ℕ
R : Type u_1
inst✝ : CommRing R
m : ℕ
x : 𝕎 R
n : ℕ
⊢ init n (m • x) = init n (m • init n x)
state_after: no goals
Theorem: zpow_add
File: Mathlib/Algebra/Group/Basic.lean

tactic: induction n using Int.induction_on with
| hz => simp
| hp n ihn => simp only [← Int.add_assoc, zpow_add_one, ihn, mul_assoc]
| hn n ihn => rw [zpow_sub_one, ← mul_assoc, ← ihn, ← zpow_sub_one, Int.add_sub_assoc]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Group G
a✝ b c d : G
n✝ : ℤ
a : G
m n : ℤ
⊢ a ^ (m + n) = a ^ m * a ^ n
state_after: no goals

tactic: simp
state_before: case hz
α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Group G
a✝ b c d : G
n : ℤ
a : G
m : ℤ
⊢ a ^ (m + 0) = a ^ m * a ^ 0
state_after: no goals

tactic: simp only [← Int.add_assoc, zpow_add_one, ihn, mul_assoc]
state_before: case hp
α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Group G
a✝ b c d : G
n✝ : ℤ
a : G
m : ℤ
n : ℕ
ihn : a ^ (m + ↑n) = a ^ m * a ^ ↑n
⊢ a ^ (m + (↑n + 1)) = a ^ m * a ^ (↑n + 1)
state_after: no goals

tactic: rw [zpow_sub_one, ← mul_assoc, ← ihn, ← zpow_sub_one, Int.add_sub_assoc]
state_before: case hn
α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Group G
a✝ b c d : G
n✝ : ℤ
a : G
m : ℤ
n : ℕ
ihn : a ^ (m + -↑n) = a ^ m * a ^ (-↑n)
⊢ a ^ (m + (-↑n - 1)) = a ^ m * a ^ (-↑n - 1)
state_after: no goals
Theorem: jacobiTheta₂_conj
File: Mathlib/NumberTheory/ModularForms/JacobiTheta/TwoVariable.lean

tactic: rw [← jacobiTheta₂_neg_left, jacobiTheta₂, conj_tsum]
state_before: z τ : ℂ
⊢ (starRingEnd ℂ) (jacobiTheta₂ z τ) = jacobiTheta₂ ((starRingEnd ℂ) z) (-(starRingEnd ℂ) τ)
state_after: z τ : ℂ
⊢ ∑' (a : ℤ), (starRingEnd ℂ) (jacobiTheta₂_term a (-z) τ) = jacobiTheta₂ ((starRingEnd ℂ) z) (-(starRingEnd ℂ) τ)

tactic: congr 2 with n
state_before: z τ : ℂ
⊢ ∑' (a : ℤ), (starRingEnd ℂ) (jacobiTheta₂_term a (-z) τ) = jacobiTheta₂ ((starRingEnd ℂ) z) (-(starRingEnd ℂ) τ)
state_after: case e_f.h
z τ : ℂ
n : ℤ
⊢ (starRingEnd ℂ) (jacobiTheta₂_term n (-z) τ) = jacobiTheta₂_term n ((starRingEnd ℂ) z) (-(starRingEnd ℂ) τ)

tactic: simp only [jacobiTheta₂_term, mul_neg, ← exp_conj, map_add, map_neg, map_mul, map_ofNat,
  conj_ofReal, conj_I, map_intCast, neg_mul, neg_neg, map_pow]
state_before: case e_f.h
z τ : ℂ
n : ℤ
⊢ (starRingEnd ℂ) (jacobiTheta₂_term n (-z) τ) = jacobiTheta₂_term n ((starRingEnd ℂ) z) (-(starRingEnd ℂ) τ)
state_after: no goals
Theorem: invOf_two_add_invOf_two
File: Mathlib/Algebra/Ring/Invertible.lean

tactic: rw [← two_mul, mul_invOf_self]
state_before: α : Type u
inst✝¹ : NonAssocSemiring α
inst✝ : Invertible 2
⊢ ⅟2 + ⅟2 = 1
state_after: no goals
Theorem: CategoryTheory.ShortComplex.SnakeInput.w₀₂_τ₁
File: Mathlib/Algebra/Homology/ShortComplex/SnakeLemma.lean

tactic: rw [← comp_τ₁, S.w₀₂, zero_τ₁]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
S : SnakeInput C
⊢ S.v₀₁.τ₁ ≫ S.v₁₂.τ₁ = 0
state_after: no goals
Theorem: RingHom.FinitePresentation.of_surjective
File: Mathlib/RingTheory/FinitePresentation.lean

tactic: rw [← f.comp_id]
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
hf : Surjective ⇑f
hker : (ker f).FG
⊢ f.FinitePresentation
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
hf : Surjective ⇑f
hker : (ker f).FG
⊢ (f.comp (RingHom.id A)).FinitePresentation

tactic: exact (id A).comp_surjective hf hker
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
hf : Surjective ⇑f
hker : (ker f).FG
⊢ (f.comp (RingHom.id A)).FinitePresentation
state_after: no goals