1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: IsPGroup.card_center_eq_prime_pow
File: Mathlib/GroupTheory/PGroup.lean

tactic: have hcG := to_subgroup (of_card hGpn) (center G)
state_before: p : ℕ
G : Type u_1
inst✝³ : Group G
inst✝² : Fintype G
inst✝¹ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
hn : 0 < n
inst✝ : Fintype ↥(center G)
⊢ ∃ k > 0, card ↥(center G) = p ^ k
state_after: p : ℕ
G : Type u_1
inst✝³ : Group G
inst✝² : Fintype G
inst✝¹ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
hn : 0 < n
inst✝ : Fintype ↥(center G)
hcG : IsPGroup p ↥(center G)
⊢ ∃ k > 0, card ↥(center G) = p ^ k

tactic: rcases iff_card.1 hcG with _
state_before: p : ℕ
G : Type u_1
inst✝³ : Group G
inst✝² : Fintype G
inst✝¹ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
hn : 0 < n
inst✝ : Fintype ↥(center G)
hcG : IsPGroup p ↥(center G)
⊢ ∃ k > 0, card ↥(center G) = p ^ k
state_after: p : ℕ
G : Type u_1
inst✝³ : Group G
inst✝² : Fintype G
inst✝¹ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
hn : 0 < n
inst✝ : Fintype ↥(center G)
hcG : IsPGroup p ↥(center G)
x✝ : ∃ n, card ↥(center G) = p ^ n
⊢ ∃ k > 0, card ↥(center G) = p ^ k

tactic: haveI : Nontrivial G := (nontrivial_iff_card <| of_card hGpn).2 ⟨n, hn, hGpn⟩
state_before: p : ℕ
G : Type u_1
inst✝³ : Group G
inst✝² : Fintype G
inst✝¹ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
hn : 0 < n
inst✝ : Fintype ↥(center G)
hcG : IsPGroup p ↥(center G)
x✝ : ∃ n, card ↥(center G) = p ^ n
⊢ ∃ k > 0, card ↥(center G) = p ^ k
state_after: p : ℕ
G : Type u_1
inst✝³ : Group G
inst✝² : Fintype G
inst✝¹ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
hn : 0 < n
inst✝ : Fintype ↥(center G)
hcG : IsPGroup p ↥(center G)
x✝ : ∃ n, card ↥(center G) = p ^ n
this : Nontrivial G
⊢ ∃ k > 0, card ↥(center G) = p ^ k

tactic: exact (nontrivial_iff_card hcG).mp (center_nontrivial (of_card hGpn))
state_before: p : ℕ
G : Type u_1
inst✝³ : Group G
inst✝² : Fintype G
inst✝¹ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
hn : 0 < n
inst✝ : Fintype ↥(center G)
hcG : IsPGroup p ↥(center G)
x✝ : ∃ n, card ↥(center G) = p ^ n
this : Nontrivial G
⊢ ∃ k > 0, card ↥(center G) = p ^ k
state_after: no goals
Theorem: Submonoid.LocalizationMap.lift_comp_lift
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [← MonoidHom.comp_apply,
MonoidHom.comp_assoc, lift_comp, lift_comp]
state_before: M : Type u_1
inst✝⁴ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝³ : CommMonoid N
P : Type u_3
inst✝² : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid M
hST : S ≤ T
Q : Type u_4
inst✝¹ : CommMonoid Q
k : T.LocalizationMap Q
A : Type u_5
inst✝ : CommMonoid A
l : M →* A
hl : ∀ (w : ↥T), IsUnit (l ↑w)
x : M
⊢ ((k.lift hl).comp (f.lift ⋯)) (f.toMap x) = l x
state_after: no goals
Theorem: LinearOrder.ext
File: Mathlib/Order/Basic.lean

tactic: ext x y
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
A B : LinearOrder α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
⊢ A = B
state_after: case a.a.a.le.h.h.a
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
A B : LinearOrder α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
x y : α
⊢ x ≤ y ↔ x ≤ y

tactic: exact H x y
state_before: case a.a.a.le.h.h.a
ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
A B : LinearOrder α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
x y : α
⊢ x ≤ y ↔ x ≤ y
state_after: no goals
Theorem: Irreducible.isUnit_gcd_iff
File: Mathlib/Algebra/GCDMonoid/Basic.lean

tactic: rw [hx.isUnit_iff_not_associated_of_dvd (gcd_dvd_left x y), not_iff_not, associated_gcd_left_iff]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
x y : α
hx : Irreducible x
⊢ IsUnit (gcd x y) ↔ ¬x ∣ y
state_after: no goals
Theorem: Pretrivialization.symmₗ_linearMapAt
File: Mathlib/Topology/VectorBundle/Basic.lean

tactic: rw [e.linearMapAt_def_of_mem hb]
state_before: R : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
inst✝⁷ : Semiring R
inst✝⁶ : TopologicalSpace F
inst✝⁵ : TopologicalSpace B
e✝ : Pretrivialization F TotalSpace.proj
x : TotalSpace F E
b✝ : B
y✝ : E b✝
inst✝⁴ : AddCommMonoid F
inst✝³ : Module R F
inst✝² : (x : B) → AddCommMonoid (E x)
inst✝¹ : (x : B) → Module R (E x)
e : Pretrivialization F TotalSpace.proj
inst✝ : Pretrivialization.IsLinear R e
b : B
hb : b ∈ e.baseSet
y : E b
⊢ (Pretrivialization.symmₗ R e b) ((Pretrivialization.linearMapAt R e b) y) = y
state_after: R : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
inst✝⁷ : Semiring R
inst✝⁶ : TopologicalSpace F
inst✝⁵ : TopologicalSpace B
e✝ : Pretrivialization F TotalSpace.proj
x : TotalSpace F E
b✝ : B
y✝ : E b✝
inst✝⁴ : AddCommMonoid F
inst✝³ : Module R F
inst✝² : (x : B) → AddCommMonoid (E x)
inst✝¹ : (x : B) → Module R (E x)
e : Pretrivialization F TotalSpace.proj
inst✝ : Pretrivialization.IsLinear R e
b : B
hb : b ∈ e.baseSet
y : E b
⊢ (Pretrivialization.symmₗ R e b) (↑(linearEquivAt R e b hb) y) = y

tactic: exact (e.linearEquivAt R b hb).left_inv y
state_before: R : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
inst✝⁷ : Semiring R
inst✝⁶ : TopologicalSpace F
inst✝⁵ : TopologicalSpace B
e✝ : Pretrivialization F TotalSpace.proj
x : TotalSpace F E
b✝ : B
y✝ : E b✝
inst✝⁴ : AddCommMonoid F
inst✝³ : Module R F
inst✝² : (x : B) → AddCommMonoid (E x)
inst✝¹ : (x : B) → Module R (E x)
e : Pretrivialization F TotalSpace.proj
inst✝ : Pretrivialization.IsLinear R e
b : B
hb : b ∈ e.baseSet
y : E b
⊢ (Pretrivialization.symmₗ R e b) (↑(linearEquivAt R e b hb) y) = y
state_after: no goals
Theorem: Nat.not_dvd_of_pos_of_lt
File: Mathlib/Data/Nat/Defs.lean

tactic: rintro ⟨k, rfl⟩
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
h1 : 0 < n
h2 : n < m
⊢ ¬m ∣ n
state_after: case intro
a b c d m k✝ : ℕ
p q : ℕ → Prop
k : ℕ
h1 : 0 < m * k
h2 : m * k < m
⊢ False

tactic: rcases Nat.eq_zero_or_pos k with (rfl | hk)
state_before: case intro
a b c d m k✝ : ℕ
p q : ℕ → Prop
k : ℕ
h1 : 0 < m * k
h2 : m * k < m
⊢ False
state_after: case intro.inl
a b c d m k : ℕ
p q : ℕ → Prop
h1 : 0 < m * 0
h2 : m * 0 < m
⊢ False

case intro.inr
a b c d m k✝ : ℕ
p q : ℕ → Prop
k : ℕ
h1 : 0 < m * k
h2 : m * k < m
hk : k > 0
⊢ False

tactic: exact Nat.lt_irrefl 0 h1
state_before: case intro.inl
a b c d m k : ℕ
p q : ℕ → Prop
h1 : 0 < m * 0
h2 : m * 0 < m
⊢ False
state_after: no goals

tactic: exact Nat.not_lt.2 (Nat.le_mul_of_pos_right _ hk) h2
state_before: case intro.inr
a b c d m k✝ : ℕ
p q : ℕ → Prop
k : ℕ
h1 : 0 < m * k
h2 : m * k < m
hk : k > 0
⊢ False
state_after: no goals
Theorem: mem_exterior
File: Mathlib/Topology/AlexandrovDiscrete.lean

tactic: simp [exterior_def]
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
a x y : α
⊢ a ∈ exterior s ↔ ∀ (U : Set α), IsOpen U → s ⊆ U → a ∈ U
state_after: no goals
Theorem: Real.exp_abs_le
File: Mathlib/Data/Complex/Exponential.lean

tactic: cases le_total x 0 <;> simp [abs_of_nonpos, _root_.abs_of_nonneg, exp_nonneg, *]
state_before: x✝ y x : ℝ
⊢ rexp |x| ≤ rexp x + rexp (-x)
state_after: no goals
Theorem: NNReal.strictConcaveOn_sqrt
File: Mathlib/Analysis/Convex/SpecificFunctions/Pow.lean

tactic: have : NNReal.sqrt = fun x : ℝ≥0 ↦ x ^ (1 / (2 : ℝ)) := by
  ext x; exact mod_cast NNReal.sqrt_eq_rpow x
state_before: ⊢ StrictConcaveOn ℝ≥0 univ ⇑sqrt
state_after: this : ⇑sqrt = fun x => x ^ (1 / 2)
⊢ StrictConcaveOn ℝ≥0 univ ⇑sqrt

tactic: rw [this]
state_before: this : ⇑sqrt = fun x => x ^ (1 / 2)
⊢ StrictConcaveOn ℝ≥0 univ ⇑sqrt
state_after: this : ⇑sqrt = fun x => x ^ (1 / 2)
⊢ StrictConcaveOn ℝ≥0 univ fun x => x ^ (1 / 2)

tactic: exact strictConcaveOn_rpow (by positivity) (by linarith)
state_before: this : ⇑sqrt = fun x => x ^ (1 / 2)
⊢ StrictConcaveOn ℝ≥0 univ fun x => x ^ (1 / 2)
state_after: no goals

tactic: ext x
state_before: ⊢ ⇑sqrt = fun x => x ^ (1 / 2)
state_after: case h.a
x : ℝ≥0
⊢ ↑(sqrt x) = ↑(x ^ (1 / 2))

tactic: exact mod_cast NNReal.sqrt_eq_rpow x
state_before: case h.a
x : ℝ≥0
⊢ ↑(sqrt x) = ↑(x ^ (1 / 2))
state_after: no goals

tactic: positivity
state_before: this : ⇑sqrt = fun x => x ^ (1 / 2)
⊢ 0 < 1 / 2
state_after: no goals

tactic: linarith
state_before: this : ⇑sqrt = fun x => x ^ (1 / 2)
⊢ 1 / 2 < 1
state_after: no goals
Theorem: Real.sinh_strictMono
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Deriv.lean

tactic: rw [Real.deriv_sinh]
state_before: x y z : ℝ
⊢ ∀ (x : ℝ), 0 < deriv sinh x
state_after: x y z : ℝ
⊢ ∀ (x : ℝ), 0 < cosh x

tactic: exact cosh_pos
state_before: x y z : ℝ
⊢ ∀ (x : ℝ), 0 < cosh x
state_after: no goals
Theorem: Commute.expUnitary
File: Mathlib/Analysis/NormedSpace/Star/Exponential.lean

tactic: rw [← h.expUnitary_add, ← h.symm.expUnitary_add, add_comm]
state_before: A : Type u_1
inst✝⁵ : NormedRing A
inst✝⁴ : NormedAlgebra ℂ A
inst✝³ : StarRing A
inst✝² : ContinuousStar A
inst✝¹ : CompleteSpace A
inst✝ : StarModule ℂ A
a b : ↥(selfAdjoint A)
h : Commute ↑a ↑b
⊢ selfAdjoint.expUnitary a * selfAdjoint.expUnitary b = selfAdjoint.expUnitary b * selfAdjoint.expUnitary a
state_after: no goals
Theorem: MeasureTheory.Measure.iSup_restrict_spanningSets
File: Mathlib/MeasureTheory/Measure/Typeclasses.lean

tactic: rw [← measure_toMeasurable s,
  ← iSup_restrict_spanningSets_of_measurableSet (measurableSet_toMeasurable _ _)]
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
μ ν ν₁ ν₂ : Measure α
s✝ t : Set α
inst✝ : SigmaFinite μ
s : Set α
⊢ ⨆ i, (μ.restrict (spanningSets μ i)) s = μ s
state_after: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
μ ν ν₁ ν₂ : Measure α
s✝ t : Set α
inst✝ : SigmaFinite μ
s : Set α
⊢ ⨆ i, (μ.restrict (spanningSets μ i)) s = ⨆ i, (μ.restrict (spanningSets μ i)) (toMeasurable μ s)

tactic: simp_rw [restrict_apply' (measurable_spanningSets μ _), Set.inter_comm s,
  ← restrict_apply (measurable_spanningSets μ _), ← restrict_toMeasurable_of_sFinite s,
  restrict_apply (measurable_spanningSets μ _), Set.inter_comm _ (toMeasurable μ s)]
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
μ ν ν₁ ν₂ : Measure α
s✝ t : Set α
inst✝ : SigmaFinite μ
s : Set α
⊢ ⨆ i, (μ.restrict (spanningSets μ i)) s = ⨆ i, (μ.restrict (spanningSets μ i)) (toMeasurable μ s)
state_after: no goals
Theorem: PowerSeries.le_order
File: Mathlib/RingTheory/PowerSeries/Order.lean

tactic: induction n using PartENat.casesOn
state_before: R : Type u_1
inst✝ : Semiring R
φ✝ φ : R⟦X⟧
n : PartENat
h : ∀ (i : ℕ), ↑i < n → (coeff R i) φ = 0
⊢ n ≤ φ.order
state_after: case a
R : Type u_1
inst✝ : Semiring R
φ✝ φ : R⟦X⟧
h : ∀ (i : ℕ), ↑i < ⊤ → (coeff R i) φ = 0
⊢ ⊤ ≤ φ.order

case a
R : Type u_1
inst✝ : Semiring R
φ✝ φ : R⟦X⟧
n✝ : ℕ
h : ∀ (i : ℕ), ↑i < ↑n✝ → (coeff R i) φ = 0
⊢ ↑n✝ ≤ φ.order

tactic: rw [top_le_iff, order_eq_top]
state_before: case a
R : Type u_1
inst✝ : Semiring R
φ✝ φ : R⟦X⟧
h : ∀ (i : ℕ), ↑i < ⊤ → (coeff R i) φ = 0
⊢ ⊤ ≤ φ.order
state_after: case a
R : Type u_1
inst✝ : Semiring R
φ✝ φ : R⟦X⟧
h : ∀ (i : ℕ), ↑i < ⊤ → (coeff R i) φ = 0
⊢ φ = 0

tactic: ext i
state_before: case a
R : Type u_1
inst✝ : Semiring R
φ✝ φ : R⟦X⟧
h : ∀ (i : ℕ), ↑i < ⊤ → (coeff R i) φ = 0
⊢ φ = 0
state_after: case a.h
R : Type u_1
inst✝ : Semiring R
φ✝ φ : R⟦X⟧
h : ∀ (i : ℕ), ↑i < ⊤ → (coeff R i) φ = 0
i : ℕ
⊢ (coeff R i) φ = (coeff R i) 0

tactic: exact h _ (PartENat.natCast_lt_top i)
state_before: case a.h
R : Type u_1
inst✝ : Semiring R
φ✝ φ : R⟦X⟧
h : ∀ (i : ℕ), ↑i < ⊤ → (coeff R i) φ = 0
i : ℕ
⊢ (coeff R i) φ = (coeff R i) 0
state_after: no goals

tactic: apply nat_le_order
state_before: case a
R : Type u_1
inst✝ : Semiring R
φ✝ φ : R⟦X⟧
n✝ : ℕ
h : ∀ (i : ℕ), ↑i < ↑n✝ → (coeff R i) φ = 0
⊢ ↑n✝ ≤ φ.order
state_after: case a.h
R : Type u_1
inst✝ : Semiring R
φ✝ φ : R⟦X⟧
n✝ : ℕ
h : ∀ (i : ℕ), ↑i < ↑n✝ → (coeff R i) φ = 0
⊢ ∀ i < n✝, (coeff R i) φ = 0

tactic: simpa only [PartENat.coe_lt_coe] using h
state_before: case a.h
R : Type u_1
inst✝ : Semiring R
φ✝ φ : R⟦X⟧
n✝ : ℕ
h : ∀ (i : ℕ), ↑i < ↑n✝ → (coeff R i) φ = 0
⊢ ∀ i < n✝, (coeff R i) φ = 0
state_after: no goals
Theorem: FractionalIdeal.isFractional_of_le
File: Mathlib/RingTheory/FractionalIdeal/Basic.lean

tactic: obtain ⟨a, a_mem, ha⟩ := J.isFractional
state_before: R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I : Submodule R P
J : FractionalIdeal S P
hIJ : I ≤ ↑J
⊢ IsFractional S I
state_after: case intro.intro
R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I : Submodule R P
J : FractionalIdeal S P
hIJ : I ≤ ↑J
a : R
a_mem : a ∈ S
ha : ∀ b ∈ ↑J, IsInteger R (a • b)
⊢ IsFractional S I

tactic: use a, a_mem
state_before: case intro.intro
R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I : Submodule R P
J : FractionalIdeal S P
hIJ : I ≤ ↑J
a : R
a_mem : a ∈ S
ha : ∀ b ∈ ↑J, IsInteger R (a • b)
⊢ IsFractional S I
state_after: case right
R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I : Submodule R P
J : FractionalIdeal S P
hIJ : I ≤ ↑J
a : R
a_mem : a ∈ S
ha : ∀ b ∈ ↑J, IsInteger R (a • b)
⊢ ∀ b ∈ I, IsInteger R (a • b)

tactic: intro b b_mem
state_before: case right
R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I : Submodule R P
J : FractionalIdeal S P
hIJ : I ≤ ↑J
a : R
a_mem : a ∈ S
ha : ∀ b ∈ ↑J, IsInteger R (a • b)
⊢ ∀ b ∈ I, IsInteger R (a • b)
state_after: case right
R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I : Submodule R P
J : FractionalIdeal S P
hIJ : I ≤ ↑J
a : R
a_mem : a ∈ S
ha : ∀ b ∈ ↑J, IsInteger R (a • b)
b : P
b_mem : b ∈ I
⊢ IsInteger R (a • b)

tactic: exact ha b (hIJ b_mem)
state_before: case right
R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I : Submodule R P
J : FractionalIdeal S P
hIJ : I ≤ ↑J
a : R
a_mem : a ∈ S
ha : ∀ b ∈ ↑J, IsInteger R (a • b)
b : P
b_mem : b ∈ I
⊢ IsInteger R (a • b)
state_after: no goals
Theorem: Finset.univ_nonempty_iff
File: Mathlib/Data/Fintype/Basic.lean

tactic: rw [← coe_nonempty, coe_univ, Set.nonempty_iff_univ_nonempty]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Fintype α
s t : Finset α
⊢ univ.Nonempty ↔ Nonempty α
state_after: no goals
Theorem: SetLike.intCast_mem_graded
File: Mathlib/Algebra/DirectSum/Internal.lean

tactic: induction z
state_before: ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁴ : Zero ι
inst✝³ : AddGroupWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubgroupClass σ R
A : ι → σ
inst✝ : GradedOne A
z : ℤ
⊢ ↑z ∈ A 0
state_after: case ofNat
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁴ : Zero ι
inst✝³ : AddGroupWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubgroupClass σ R
A : ι → σ
inst✝ : GradedOne A
a✝ : ℕ
⊢ ↑(Int.ofNat a✝) ∈ A 0

case negSucc
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁴ : Zero ι
inst✝³ : AddGroupWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubgroupClass σ R
A : ι → σ
inst✝ : GradedOne A
a✝ : ℕ
⊢ ↑(Int.negSucc a✝) ∈ A 0

tactic: rw [Int.ofNat_eq_coe, Int.cast_natCast]
state_before: case ofNat
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁴ : Zero ι
inst✝³ : AddGroupWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubgroupClass σ R
A : ι → σ
inst✝ : GradedOne A
a✝ : ℕ
⊢ ↑(Int.ofNat a✝) ∈ A 0
state_after: case ofNat
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁴ : Zero ι
inst✝³ : AddGroupWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubgroupClass σ R
A : ι → σ
inst✝ : GradedOne A
a✝ : ℕ
⊢ ↑a✝ ∈ A 0

tactic: exact SetLike.natCast_mem_graded _ _
state_before: case ofNat
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁴ : Zero ι
inst✝³ : AddGroupWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubgroupClass σ R
A : ι → σ
inst✝ : GradedOne A
a✝ : ℕ
⊢ ↑a✝ ∈ A 0
state_after: no goals

tactic: rw [Int.cast_negSucc]
state_before: case negSucc
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁴ : Zero ι
inst✝³ : AddGroupWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubgroupClass σ R
A : ι → σ
inst✝ : GradedOne A
a✝ : ℕ
⊢ ↑(Int.negSucc a✝) ∈ A 0
state_after: case negSucc
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁴ : Zero ι
inst✝³ : AddGroupWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubgroupClass σ R
A : ι → σ
inst✝ : GradedOne A
a✝ : ℕ
⊢ -↑(a✝ + 1) ∈ A 0

tactic: exact neg_mem (SetLike.natCast_mem_graded _ _)
state_before: case negSucc
ι : Type u_1
σ : Type u_2
S : Type u_3
R : Type u_4
inst✝⁴ : Zero ι
inst✝³ : AddGroupWithOne R
inst✝² : SetLike σ R
inst✝¹ : AddSubgroupClass σ R
A : ι → σ
inst✝ : GradedOne A
a✝ : ℕ
⊢ -↑(a✝ + 1) ∈ A 0
state_after: no goals
Theorem: Distrib.ext_iff
File: Mathlib/Algebra/Ring/Ext.lean

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

tactic: constructor <;> rfl
state_before: R : Type u
inst₁ : Distrib R
⊢ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul
state_after: no goals
Theorem: Part.mem_toFinset
File: Mathlib/Data/Finset/PImage.lean

tactic: simp [toFinset]
state_before: α : Type u_1
β : Type u_2
o : Part α
inst✝ : Decidable o.Dom
x : α
⊢ x ∈ o.toFinset ↔ x ∈ o
state_after: no goals
Theorem: Asymptotics.IsEquivalent.isBigO_symm
File: Mathlib/Analysis/Asymptotics/AsymptoticEquivalent.lean

tactic: convert h.isLittleO.right_isBigO_add
state_before: α : Type u_1
β : Type u_2
inst✝ : NormedAddCommGroup β
u v w : α → β
l : Filter α
h : u ~[l] v
⊢ v =O[l] u
state_after: case h.e'_8.h
α : Type u_1
β : Type u_2
inst✝ : NormedAddCommGroup β
u v w : α → β
l : Filter α
h : u ~[l] v
x✝ : α
⊢ u x✝ = (u - v) x✝ + v x✝

tactic: simp
state_before: case h.e'_8.h
α : Type u_1
β : Type u_2
inst✝ : NormedAddCommGroup β
u v w : α → β
l : Filter α
h : u ~[l] v
x✝ : α
⊢ u x✝ = (u - v) x✝ + v x✝
state_after: no goals
Theorem: toIcoMod_neg'
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simpa only [neg_neg] using toIcoMod_neg hp (-a) (-b)
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIcoMod hp (-a) b = p - toIocMod hp a (-b)
state_after: no goals
Theorem: AlgebraicTopology.karoubi_alternatingFaceMapComplex_d
File: Mathlib/AlgebraicTopology/AlternatingFaceMapComplex.lean

tactic: simp only [AlternatingFaceMapComplex.obj_d_eq, Karoubi.sum_hom, Preadditive.comp_sum,
  Karoubi.zsmul_hom, Preadditive.comp_zsmul]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
P : Karoubi (SimplicialObject C)
n : ℕ
⊢ ((AlternatingFaceMapComplex.obj (KaroubiFunctorCategoryEmbedding.obj P)).d (n + 1) n).f =
    P.p.app { unop := [n + 1] } ≫ (AlternatingFaceMapComplex.obj P.X).d (n + 1) n
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
P : Karoubi (SimplicialObject C)
n : ℕ
⊢ ∑ x : Fin (n + 2), (-1) ^ ↑x • (SimplicialObject.δ (KaroubiFunctorCategoryEmbedding.obj P) x).f =
    ∑ x : Fin (n + 2), (-1) ^ ↑x • P.p.app { unop := [n + 1] } ≫ P.X.δ x

tactic: rfl
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
P : Karoubi (SimplicialObject C)
n : ℕ
⊢ ∑ x : Fin (n + 2), (-1) ^ ↑x • (SimplicialObject.δ (KaroubiFunctorCategoryEmbedding.obj P) x).f =
    ∑ x : Fin (n + 2), (-1) ^ ↑x • P.p.app { unop := [n + 1] } ≫ P.X.δ x
state_after: no goals
Theorem: WeierstrassCurve.coeff_Ψ₂Sq
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Degree.lean

tactic: rw [Ψ₂Sq]
state_before: R : Type u
inst✝ : CommRing R
W : WeierstrassCurve R
⊢ W.Ψ₂Sq.coeff 3 = 4
state_after: R : Type u
inst✝ : CommRing R
W : WeierstrassCurve R
⊢ (C 4 * X ^ 3 + C W.b₂ * X ^ 2 + C (2 * W.b₄) * X + C W.b₆).coeff 3 = 4

tactic: compute_degree!
state_before: R : Type u
inst✝ : CommRing R
W : WeierstrassCurve R
⊢ (C 4 * X ^ 3 + C W.b₂ * X ^ 2 + C (2 * W.b₄) * X + C W.b₆).coeff 3 = 4
state_after: no goals
Theorem: Matroid.basis_restrict_iff
File: Mathlib/Data/Matroid/Restrict.lean

tactic: rw [basis_restrict_iff', and_congr_left_iff]
state_before: α : Type u_1
M : Matroid α
R I J X Y : Set α
hR : autoParam (R ⊆ M.E) _auto✝
⊢ (M ↾ R).Basis I X ↔ M.Basis I X ∧ X ⊆ R
state_after: α : Type u_1
M : Matroid α
R I J X Y : Set α
hR : autoParam (R ⊆ M.E) _auto✝
⊢ X ⊆ R → (M.Basis I (X ∩ M.E) ↔ M.Basis I X)

tactic: intro hXR
state_before: α : Type u_1
M : Matroid α
R I J X Y : Set α
hR : autoParam (R ⊆ M.E) _auto✝
⊢ X ⊆ R → (M.Basis I (X ∩ M.E) ↔ M.Basis I X)
state_after: α : Type u_1
M : Matroid α
R I J X Y : Set α
hR : autoParam (R ⊆ M.E) _auto✝
hXR : X ⊆ R
⊢ M.Basis I (X ∩ M.E) ↔ M.Basis I X

tactic: rw [← basis'_iff_basis_inter_ground, basis'_iff_basis]
state_before: α : Type u_1
M : Matroid α
R I J X Y : Set α
hR : autoParam (R ⊆ M.E) _auto✝
hXR : X ⊆ R
⊢ M.Basis I (X ∩ M.E) ↔ M.Basis I X
state_after: no goals
Theorem: Fin.snoc_rev
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: simpa using insertNth_rev (last n) a f i
state_before: m n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
β : Type v
α : Type u_1
n : ℕ
a : α
f : Fin n → α
i : Fin (n + 1)
⊢ snoc f a i.rev = cons a (f ∘ rev) i
state_after: no goals
Theorem: List.singleton_sublist
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: refine ⟨fun h => h.subset (mem_singleton_self _), fun h => ?_⟩
state_before: α : Type u_1
a : α
l : List α
⊢ [a] <+ l ↔ a ∈ l
state_after: α : Type u_1
a : α
l : List α
h : a ∈ l
⊢ [a] <+ l

tactic: obtain ⟨_, _, rfl⟩ := append_of_mem h
state_before: α : Type u_1
a : α
l : List α
h : a ∈ l
⊢ [a] <+ l
state_after: case intro.intro
α : Type u_1
a : α
w✝¹ w✝ : List α
h : a ∈ w✝¹ ++ a :: w✝
⊢ [a] <+ w✝¹ ++ a :: w✝

tactic: exact ((nil_sublist _).cons₂ _).trans (sublist_append_right ..)
state_before: case intro.intro
α : Type u_1
a : α
w✝¹ w✝ : List α
h : a ∈ w✝¹ ++ a :: w✝
⊢ [a] <+ w✝¹ ++ a :: w✝
state_after: no goals
Theorem: Set.Finite.toFinset_compl
File: Mathlib/Data/Set/Finite.lean

tactic: ext
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs✝ : s.Finite
ht : t.Finite
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hs : s.Finite
h : sᶜ.Finite
⊢ h.toFinset = hs.toFinsetᶜ
state_after: case a
α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs✝ : s.Finite
ht : t.Finite
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hs : s.Finite
h : sᶜ.Finite
a✝ : α
⊢ a✝ ∈ h.toFinset ↔ a✝ ∈ hs.toFinsetᶜ

tactic: simp
state_before: case a
α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs✝ : s.Finite
ht : t.Finite
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hs : s.Finite
h : sᶜ.Finite
a✝ : α
⊢ a✝ ∈ h.toFinset ↔ a✝ ∈ hs.toFinsetᶜ
state_after: no goals
Theorem: Fin.nontrivial_iff_two_le
File: Mathlib/Data/Fin/Basic.lean

tactic: rcases n with (_ | _ | n) <;>
simp [← Nat.one_eq_succ_zero, Fin.nontrivial, not_nontrivial, Nat.succ_le_iff]
state_before: n m : ℕ
⊢ Nontrivial (Fin n) ↔ 2 ≤ n
state_after: no goals