1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ContinuousMultilinearMap.unit_le_opNorm
File: Mathlib/Analysis/NormedSpace/Multilinear/Basic.lean

tactic: simp
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹² : Fintype ι
inst✝¹¹ : Fintype ι'
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁷ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁶ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁵ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁴ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝³ : SeminormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : SeminormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
c : 𝕜
f g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
h : ‖m‖ ≤ 1
⊢ ‖f‖ * 1 ^ Fintype.card ι ≤ ‖f‖
state_after: no goals
Theorem: MeasureTheory.Lp.norm_exponent_zero
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: simp [norm_def]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : ↥(Lp E 0 μ)
⊢ ‖f‖ = 0
state_after: no goals
Theorem: Nat.nth_strictMonoOn
File: Mathlib/Data/Nat/Nth.lean

tactic: rintro m (hm : m < _) n (hn : n < _) h
state_before: p : ℕ → Prop
hf : (setOf p).Finite
⊢ StrictMonoOn (nth p) (Set.Iio hf.toFinset.card)
state_after: p : ℕ → Prop
hf : (setOf p).Finite
m : ℕ
hm : m < hf.toFinset.card
n : ℕ
hn : n < hf.toFinset.card
h : m < n
⊢ nth p m < nth p n

tactic: simp only [nth_eq_orderEmbOfFin, *]
state_before: p : ℕ → Prop
hf : (setOf p).Finite
m : ℕ
hm : m < hf.toFinset.card
n : ℕ
hn : n < hf.toFinset.card
h : m < n
⊢ nth p m < nth p n
state_after: p : ℕ → Prop
hf : (setOf p).Finite
m : ℕ
hm : m < hf.toFinset.card
n : ℕ
hn : n < hf.toFinset.card
h : m < n
⊢ (⋯.toFinset.orderEmbOfFin ⋯) ⟨m, ⋯⟩ < (⋯.toFinset.orderEmbOfFin ⋯) ⟨n, ⋯⟩

tactic: exact OrderEmbedding.strictMono _ h
state_before: p : ℕ → Prop
hf : (setOf p).Finite
m : ℕ
hm : m < hf.toFinset.card
n : ℕ
hn : n < hf.toFinset.card
h : m < n
⊢ (⋯.toFinset.orderEmbOfFin ⋯) ⟨m, ⋯⟩ < (⋯.toFinset.orderEmbOfFin ⋯) ⟨n, ⋯⟩
state_after: no goals
Theorem: Ideal.IsHomogeneous.radical
File: Mathlib/RingTheory/GradedAlgebra/Radical.lean

tactic: rw [h.radical_eq]
state_before: ι : Type u_1
σ : Type u_2
A : Type u_3
inst✝⁴ : CommRing A
inst✝³ : LinearOrderedCancelAddCommMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
I : Ideal A
h : IsHomogeneous 𝒜 I
⊢ IsHomogeneous 𝒜 I.radical
state_after: ι : Type u_1
σ : Type u_2
A : Type u_3
inst✝⁴ : CommRing A
inst✝³ : LinearOrderedCancelAddCommMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
I : Ideal A
h : IsHomogeneous 𝒜 I
⊢ IsHomogeneous 𝒜 (InfSet.sInf {J | IsHomogeneous 𝒜 J ∧ I ≤ J ∧ J.IsPrime})

tactic: exact Ideal.IsHomogeneous.sInf fun _ => And.left
state_before: ι : Type u_1
σ : Type u_2
A : Type u_3
inst✝⁴ : CommRing A
inst✝³ : LinearOrderedCancelAddCommMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
I : Ideal A
h : IsHomogeneous 𝒜 I
⊢ IsHomogeneous 𝒜 (InfSet.sInf {J | IsHomogeneous 𝒜 J ∧ I ≤ J ∧ J.IsPrime})
state_after: no goals
Theorem: Int.gcd_div
File: Mathlib/Data/Int/GCD.lean

tactic: rw [gcd, natAbs_ediv i k H1, natAbs_ediv j k H2]
state_before: i j k : ℤ
H1 : k ∣ i
H2 : k ∣ j
⊢ (i / k).gcd (j / k) = i.gcd j / k.natAbs
state_after: i j k : ℤ
H1 : k ∣ i
H2 : k ∣ j
⊢ (i.natAbs / k.natAbs).gcd (j.natAbs / k.natAbs) = i.gcd j / k.natAbs

tactic: exact Nat.gcd_div (natAbs_dvd_natAbs.mpr H1) (natAbs_dvd_natAbs.mpr H2)
state_before: i j k : ℤ
H1 : k ∣ i
H2 : k ∣ j
⊢ (i.natAbs / k.natAbs).gcd (j.natAbs / k.natAbs) = i.gcd j / k.natAbs
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.tendsto_approxOn_range_Lp
File: Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
hp : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
μ : Measure β
fmeas : Measurable f
inst✝ : SeparableSpace ↑(Set.range f ∪ {0})
hf : Memℒp f p μ
n : ℕ
⊢ 0 ∈ Set.range f ∪ {0}
state_after: no goals

tactic: simpa only [Lp.tendsto_Lp_iff_tendsto_ℒp''] using
  tendsto_approxOn_range_Lp_snorm hp_ne_top fmeas hf.2
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
hp : Fact (1 ≤ p)
hp_ne_top : p ≠ ⊤
μ : Measure β
fmeas : Measurable f
inst✝ : SeparableSpace ↑(Set.range f ∪ {0})
hf : Memℒp f p μ
⊢ Tendsto (fun n => Memℒp.toLp ↑(approxOn f fmeas (Set.range f ∪ {0}) 0 ⋯ n) ⋯) atTop (𝓝 (Memℒp.toLp f hf))
state_after: no goals
Theorem: Ideal.map.isMaximal
File: Mathlib/RingTheory/Ideal/Maps.lean

tactic: refine
  or_iff_not_imp_left.1 (map_eq_top_or_isMaximal_of_surjective f hf.right H) fun h => H.1.1 ?_
state_before: R : Type u
S : Type v
F : Type u_1
inst✝³ : Ring R
inst✝² : Ring S
inst✝¹ : FunLike F R S
inst✝ : RingHomClass F R S
f : F
I✝ : Ideal R
hf : Function.Bijective ⇑f
I : Ideal R
H : I.IsMaximal
⊢ (map f I).IsMaximal
state_after: R : Type u
S : Type v
F : Type u_1
inst✝³ : Ring R
inst✝² : Ring S
inst✝¹ : FunLike F R S
inst✝ : RingHomClass F R S
f : F
I✝ : Ideal R
hf : Function.Bijective ⇑f
I : Ideal R
H : I.IsMaximal
h : map f I = ⊤
⊢ I = ⊤

tactic: calc
  I = comap f (map f I) := ((relIsoOfBijective f hf).right_inv I).symm
  _ = comap f ⊤ := by rw [h]
  _ = ⊤ := by rw [comap_top]
state_before: R : Type u
S : Type v
F : Type u_1
inst✝³ : Ring R
inst✝² : Ring S
inst✝¹ : FunLike F R S
inst✝ : RingHomClass F R S
f : F
I✝ : Ideal R
hf : Function.Bijective ⇑f
I : Ideal R
H : I.IsMaximal
h : map f I = ⊤
⊢ I = ⊤
state_after: no goals

tactic: rw [h]
state_before: R : Type u
S : Type v
F : Type u_1
inst✝³ : Ring R
inst✝² : Ring S
inst✝¹ : FunLike F R S
inst✝ : RingHomClass F R S
f : F
I✝ : Ideal R
hf : Function.Bijective ⇑f
I : Ideal R
H : I.IsMaximal
h : map f I = ⊤
⊢ comap f (map f I) = comap f ⊤
state_after: no goals

tactic: rw [comap_top]
state_before: R : Type u
S : Type v
F : Type u_1
inst✝³ : Ring R
inst✝² : Ring S
inst✝¹ : FunLike F R S
inst✝ : RingHomClass F R S
f : F
I✝ : Ideal R
hf : Function.Bijective ⇑f
I : Ideal R
H : I.IsMaximal
h : map f I = ⊤
⊢ comap f ⊤ = ⊤
state_after: no goals
Theorem: Cardinal.toPartENat_apply_of_lt_aleph0
File: Mathlib/SetTheory/Cardinal/PartENat.lean

tactic: lift c to ℕ using h
state_before: α : Type u
c : Cardinal.{u_1}
h : c < ℵ₀
⊢ toPartENat c = ↑(toNat c)
state_after: case intro
α : Type u
c : ℕ
⊢ toPartENat ↑c = ↑(toNat ↑c)

tactic: simp
state_before: case intro
α : Type u
c : ℕ
⊢ toPartENat ↑c = ↑(toNat ↑c)
state_after: no goals
Theorem: NonUnitalAlgHom.coe_range
File: Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean

tactic: ext
state_before: F : Type v'
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝⁸ : CommSemiring R
inst✝⁷ : NonUnitalNonAssocSemiring A
inst✝⁶ : Module R A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : NonUnitalNonAssocSemiring C
inst✝² : Module R C
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
φ : F
⊢ ↑(NonUnitalAlgHom.range φ) = Set.range ⇑φ
state_after: case h
F : Type v'
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝⁸ : CommSemiring R
inst✝⁷ : NonUnitalNonAssocSemiring A
inst✝⁶ : Module R A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : NonUnitalNonAssocSemiring C
inst✝² : Module R C
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
φ : F
x✝ : B
⊢ x✝ ∈ ↑(NonUnitalAlgHom.range φ) ↔ x✝ ∈ Set.range ⇑φ

tactic: rw [SetLike.mem_coe, mem_range]
state_before: case h
F : Type v'
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝⁸ : CommSemiring R
inst✝⁷ : NonUnitalNonAssocSemiring A
inst✝⁶ : Module R A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : NonUnitalNonAssocSemiring C
inst✝² : Module R C
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
φ : F
x✝ : B
⊢ x✝ ∈ ↑(NonUnitalAlgHom.range φ) ↔ x✝ ∈ Set.range ⇑φ
state_after: case h
F : Type v'
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝⁸ : CommSemiring R
inst✝⁷ : NonUnitalNonAssocSemiring A
inst✝⁶ : Module R A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : NonUnitalNonAssocSemiring C
inst✝² : Module R C
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
φ : F
x✝ : B
⊢ (∃ x, φ x = x✝) ↔ x✝ ∈ Set.range ⇑φ

tactic: rfl
state_before: case h
F : Type v'
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝⁸ : CommSemiring R
inst✝⁷ : NonUnitalNonAssocSemiring A
inst✝⁶ : Module R A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : NonUnitalNonAssocSemiring C
inst✝² : Module R C
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
φ : F
x✝ : B
⊢ (∃ x, φ x = x✝) ↔ x✝ ∈ Set.range ⇑φ
state_after: no goals
Theorem: Matrix.det_updateRow_sum
File: Mathlib/LinearAlgebra/Matrix/Determinant/Basic.lean

tactic: convert det_updateRow_sum_aux A (Finset.univ.erase j) (Finset.univ.not_mem_erase j) c (c j)
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
A : Matrix n n R
j : n
c : n → R
⊢ (A.updateRow j (∑ k : n, c k • A k)).det = c j • A.det
state_after: case h.e'_2.h.e'_6.h.e'_7
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
A : Matrix n n R
j : n
c : n → R
⊢ ∑ k : n, c k • A k = c j • A j + ∑ k ∈ univ.erase j, c k • A k

tactic: rw [← Finset.univ.add_sum_erase _ (Finset.mem_univ j)]
state_before: case h.e'_2.h.e'_6.h.e'_7
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
A : Matrix n n R
j : n
c : n → R
⊢ ∑ k : n, c k • A k = c j • A j + ∑ k ∈ univ.erase j, c k • A k
state_after: no goals
Theorem: Set.indicator_one_inj
File: Mathlib/Algebra/GroupWithZero/Indicator.lean

tactic: ext
state_before: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝¹ : MulZeroOneClass M₀
s t : Set ι
i : ι
inst✝ : Nontrivial M₀
h : s.indicator 1 = t.indicator 1
⊢ s = t
state_after: case h
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝¹ : MulZeroOneClass M₀
s t : Set ι
i : ι
inst✝ : Nontrivial M₀
h : s.indicator 1 = t.indicator 1
x✝ : ι
⊢ x✝ ∈ s ↔ x✝ ∈ t

tactic: simp_rw [← indicator_eq_one_iff_mem M₀, h]
state_before: case h
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝¹ : MulZeroOneClass M₀
s t : Set ι
i : ι
inst✝ : Nontrivial M₀
h : s.indicator 1 = t.indicator 1
x✝ : ι
⊢ x✝ ∈ s ↔ x✝ ∈ t
state_after: no goals
Theorem: Finset.orderEmbOfFin_zero
File: Mathlib/Data/Finset/Sort.lean

tactic: simp only [orderEmbOfFin_apply, Fin.val_mk, sorted_zero_eq_min']
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
s : Finset α
k : ℕ
h : s.card = k
hz : 0 < k
⊢ (s.orderEmbOfFin h) ⟨0, hz⟩ = s.min' ⋯
state_after: no goals
Theorem: CategoryTheory.Limits.cokernel.map_desc
File: Mathlib/CategoryTheory/Limits/Shapes/Kernels.lean

tactic: ext
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
X✝ Y✝ : C
f✝ : X✝ ⟶ Y✝
inst✝² : HasCokernel f✝
X Y Z X' Y' Z' : C
f : X ⟶ Y
inst✝¹ : HasCokernel f
g : Y ⟶ Z
w : f ≫ g = 0
f' : X' ⟶ Y'
inst✝ : HasCokernel f'
g' : Y' ⟶ Z'
w' : f' ≫ g' = 0
p : X ⟶ X'
q : Y ⟶ Y'
r : Z ⟶ Z'
h₁ : f ≫ q = p ≫ f'
h₂ : g ≫ r = q ≫ g'
⊢ map f f' p q h₁ ≫ desc f' g' w' = desc f g w ≫ r
state_after: case h
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
X✝ Y✝ : C
f✝ : X✝ ⟶ Y✝
inst✝² : HasCokernel f✝
X Y Z X' Y' Z' : C
f : X ⟶ Y
inst✝¹ : HasCokernel f
g : Y ⟶ Z
w : f ≫ g = 0
f' : X' ⟶ Y'
inst✝ : HasCokernel f'
g' : Y' ⟶ Z'
w' : f' ≫ g' = 0
p : X ⟶ X'
q : Y ⟶ Y'
r : Z ⟶ Z'
h₁ : f ≫ q = p ≫ f'
h₂ : g ≫ r = q ≫ g'
⊢ coequalizer.π f 0 ≫ map f f' p q h₁ ≫ desc f' g' w' = coequalizer.π f 0 ≫ desc f g w ≫ r

tactic: simp [h₂]
state_before: case h
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
X✝ Y✝ : C
f✝ : X✝ ⟶ Y✝
inst✝² : HasCokernel f✝
X Y Z X' Y' Z' : C
f : X ⟶ Y
inst✝¹ : HasCokernel f
g : Y ⟶ Z
w : f ≫ g = 0
f' : X' ⟶ Y'
inst✝ : HasCokernel f'
g' : Y' ⟶ Z'
w' : f' ≫ g' = 0
p : X ⟶ X'
q : Y ⟶ Y'
r : Z ⟶ Z'
h₁ : f ≫ q = p ≫ f'
h₂ : g ≫ r = q ≫ g'
⊢ coequalizer.π f 0 ≫ map f f' p q h₁ ≫ desc f' g' w' = coequalizer.π f 0 ≫ desc f g w ≫ r
state_after: no goals
Theorem: PosNum.natSize_to_nat
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← size_eq_natSize, size_to_nat]
state_before: α : Type u_1
n : PosNum
⊢ n.natSize = (↑n).size
state_after: no goals
Theorem: MeasurableSpace.generateFrom_memPartition_le_range
File: Mathlib/MeasureTheory/MeasurableSpace/CountablyGenerated.lean

tactic: conv_rhs => rw [← generateFrom_iUnion_memPartition t]
state_before: α : Type u_1
β : Type u_2
t : ℕ → Set α
n : ℕ
⊢ generateFrom (memPartition t n) ≤ generateFrom (range t)
state_after: α : Type u_1
β : Type u_2
t : ℕ → Set α
n : ℕ
⊢ generateFrom (memPartition t n) ≤ generateFrom (⋃ n, memPartition t n)

tactic: exact generateFrom_mono (subset_iUnion _ _)
state_before: α : Type u_1
β : Type u_2
t : ℕ → Set α
n : ℕ
⊢ generateFrom (memPartition t n) ≤ generateFrom (⋃ n, memPartition t n)
state_after: no goals
Theorem: List.getLast?_append_of_ne_nil
File: Mathlib/Data/List/Basic.lean

tactic: contradiction
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂ l₁ : List α
hl₂ : [] ≠ []
⊢ (l₁ ++ []).getLast? = [].getLast?
state_after: no goals
Theorem: EMetric.closedBall_prod_same
File: Mathlib/Topology/EMetricSpace/Basic.lean

tactic: simp [Prod.edist_eq]
state_before: α : Type u
β : Type v
X : Type u_1
inst✝¹ : PseudoEMetricSpace α
x✝ y✝ z✝ : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
inst✝ : PseudoEMetricSpace β
x : α
y : β
r : ℝ≥0∞
z : α × β
⊢ z ∈ closedBall x r ×ˢ closedBall y r ↔ z ∈ closedBall (x, y) r
state_after: no goals
Theorem: Polynomial.nextCoeff_X_add_C
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: nontriviality S
state_before: R : Type u
S : Type v
a b c✝ d : R
n m : ℕ
inst✝² : Nontrivial R
inst✝¹ : Semiring R
inst✝ : Semiring S
c : S
⊢ (X + C c).nextCoeff = c
state_after: R : Type u
S : Type v
a b c✝ d : R
n m : ℕ
inst✝² : Nontrivial R
inst✝¹ : Semiring R
inst✝ : Semiring S
c : S
a✝ : Nontrivial S
⊢ (X + C c).nextCoeff = c

tactic: simp [nextCoeff_of_natDegree_pos]
state_before: R : Type u
S : Type v
a b c✝ d : R
n m : ℕ
inst✝² : Nontrivial R
inst✝¹ : Semiring R
inst✝ : Semiring S
c : S
a✝ : Nontrivial S
⊢ (X + C c).nextCoeff = c
state_after: no goals
Theorem: IsIdempotentElem.mul_of_commute
File: Mathlib/Algebra/Ring/Idempotents.lean

tactic: rw [IsIdempotentElem, mul_assoc, ← mul_assoc q, ← h.eq, mul_assoc p, h₂.eq, ← mul_assoc, h₁.eq]
state_before: M : Type u_1
N : Type u_2
S : Type u_3
M₀ : Type u_4
M₁ : Type u_5
R : Type u_6
G : Type u_7
G₀ : Type u_8
inst✝⁷ : Mul M
inst✝⁶ : Monoid N
inst✝⁵ : Semigroup S
inst✝⁴ : MulZeroClass M₀
inst✝³ : MulOneClass M₁
inst✝² : NonAssocRing R
inst✝¹ : Group G
inst✝ : CancelMonoidWithZero G₀
p q : S
h : Commute p q
h₁ : IsIdempotentElem p
h₂ : IsIdempotentElem q
⊢ IsIdempotentElem (p * q)
state_after: no goals
Theorem: IsMulCentral.left_comm
File: Mathlib/Algebra/Group/Center.lean

tactic: simp only [h.comm, h.right_assoc]
state_before: M : Type u_1
a b✝ c✝ : M
inst✝ : Mul M
h : IsMulCentral a
b c : M
⊢ a * (b * c) = b * (a * c)
state_after: no goals
Theorem: tendsto_floor_left_pure_ceil_sub_one
File: Mathlib/Topology/Algebra/Order/Floor.lean

tactic: rw [cast_sub, cast_one, sub_lt_iff_lt_add]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
x : α
⊢ ↑(⌈x⌉ - 1) < x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
x : α
⊢ ↑⌈x⌉ < x + 1

tactic: exact ceil_lt_add_one _
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
x : α
⊢ ↑⌈x⌉ < x + 1
state_after: no goals

tactic: rw [cast_sub, cast_one, sub_add_cancel]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
x : α
h₁ : ↑(⌈x⌉ - 1) < x
⊢ x ≤ ↑(⌈x⌉ - 1) + 1
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
x : α
h₁ : ↑(⌈x⌉ - 1) < x
⊢ x ≤ ↑⌈x⌉

tactic: exact le_ceil _
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
x : α
h₁ : ↑(⌈x⌉ - 1) < x
⊢ x ≤ ↑⌈x⌉
state_after: no goals
Theorem: derivWithin_of_mem_nhds
File: Mathlib/Analysis/Calculus/Deriv/Basic.lean

tactic: simp only [derivWithin, deriv, fderivWithin_of_mem_nhds h]
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
h : s ∈ 𝓝 x
⊢ derivWithin f s x = deriv f x
state_after: no goals
Theorem: TrivSqZeroExt.inv_inl
File: Mathlib/Algebra/TrivSqZeroExt.lean

tactic: ext
state_before: R : Type u
M : Type v
inst✝⁴ : DivisionSemiring R
inst✝³ : AddCommGroup M
inst✝² : Module Rᵐᵒᵖ M
inst✝¹ : Module R M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
r : R
⊢ (inl r)⁻¹ = inl r⁻¹
state_after: case h1
R : Type u
M : Type v
inst✝⁴ : DivisionSemiring R
inst✝³ : AddCommGroup M
inst✝² : Module Rᵐᵒᵖ M
inst✝¹ : Module R M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
r : R
⊢ (inl r)⁻¹.fst = (inl r⁻¹).fst

case h2
R : Type u
M : Type v
inst✝⁴ : DivisionSemiring R
inst✝³ : AddCommGroup M
inst✝² : Module Rᵐᵒᵖ M
inst✝¹ : Module R M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
r : R
⊢ (inl r)⁻¹.snd = (inl r⁻¹).snd

tactic: rw [fst_inv, fst_inl, fst_inl]
state_before: case h1
R : Type u
M : Type v
inst✝⁴ : DivisionSemiring R
inst✝³ : AddCommGroup M
inst✝² : Module Rᵐᵒᵖ M
inst✝¹ : Module R M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
r : R
⊢ (inl r)⁻¹.fst = (inl r⁻¹).fst
state_after: no goals

tactic: rw [snd_inv, fst_inl, snd_inl, snd_inl, smul_zero, smul_zero, neg_zero]
state_before: case h2
R : Type u
M : Type v
inst✝⁴ : DivisionSemiring R
inst✝³ : AddCommGroup M
inst✝² : Module Rᵐᵒᵖ M
inst✝¹ : Module R M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
r : R
⊢ (inl r)⁻¹.snd = (inl r⁻¹).snd
state_after: no goals
Theorem: Sylow.smul_eq_of_normal
File: Mathlib/GroupTheory/Sylow.lean

tactic: simp only [Sylow.smul_eq_iff_mem_normalizer, normalizer_eq_top.mpr h, mem_top]
state_before: p : ℕ
G : Type u_1
inst✝ : Group G
g : G
P : Sylow p G
h : (↑P).Normal
⊢ g • P = P
state_after: no goals
Theorem: Function.IsPeriodicPt.sub
File: Mathlib/Dynamics/PeriodicPts.lean

tactic: rcases le_total n m with h | h
state_before: α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x y : α
m n : ℕ
hm : IsPeriodicPt f m x
hn : IsPeriodicPt f n x
⊢ IsPeriodicPt f (m - n) x
state_after: case inl
α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x y : α
m n : ℕ
hm : IsPeriodicPt f m x
hn : IsPeriodicPt f n x
h : n ≤ m
⊢ IsPeriodicPt f (m - n) x

case inr
α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x y : α
m n : ℕ
hm : IsPeriodicPt f m x
hn : IsPeriodicPt f n x
h : m ≤ n
⊢ IsPeriodicPt f (m - n) x

tactic: refine left_of_add ?_ hn
state_before: case inl
α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x y : α
m n : ℕ
hm : IsPeriodicPt f m x
hn : IsPeriodicPt f n x
h : n ≤ m
⊢ IsPeriodicPt f (m - n) x
state_after: case inl
α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x y : α
m n : ℕ
hm : IsPeriodicPt f m x
hn : IsPeriodicPt f n x
h : n ≤ m
⊢ IsPeriodicPt f (m - n + n) x

tactic: rwa [tsub_add_cancel_of_le h]
state_before: case inl
α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x y : α
m n : ℕ
hm : IsPeriodicPt f m x
hn : IsPeriodicPt f n x
h : n ≤ m
⊢ IsPeriodicPt f (m - n + n) x
state_after: no goals

tactic: rw [tsub_eq_zero_iff_le.mpr h]
state_before: case inr
α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x y : α
m n : ℕ
hm : IsPeriodicPt f m x
hn : IsPeriodicPt f n x
h : m ≤ n
⊢ IsPeriodicPt f (m - n) x
state_after: case inr
α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x y : α
m n : ℕ
hm : IsPeriodicPt f m x
hn : IsPeriodicPt f n x
h : m ≤ n
⊢ IsPeriodicPt f 0 x

tactic: apply isPeriodicPt_zero
state_before: case inr
α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x y : α
m n : ℕ
hm : IsPeriodicPt f m x
hn : IsPeriodicPt f n x
h : m ≤ n
⊢ IsPeriodicPt f 0 x
state_after: no goals
Theorem: GeneralizedContinuedFraction.get?_of_eq_some_of_get?_intFractPair_stream_fr_ne_zero
File: Mathlib/Algebra/ContinuedFractions/Computation/Translations.lean

tactic: cases ifp_n
state_before: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
ifp_n : IntFractPair K
stream_nth_eq : IntFractPair.stream v n = some ifp_n
nth_fr_ne_zero : ifp_n.fr ≠ 0
⊢ IntFractPair.stream v (n + 1) = some (IntFractPair.of ifp_n.fr⁻¹)
state_after: case mk
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
b✝ : ℤ
fr✝ : K
stream_nth_eq : IntFractPair.stream v n = some { b := b✝, fr := fr✝ }
nth_fr_ne_zero : { b := b✝, fr := fr✝ }.fr ≠ 0
⊢ IntFractPair.stream v (n + 1) = some (IntFractPair.of { b := b✝, fr := fr✝ }.fr⁻¹)

tactic: simp only [IntFractPair.stream, Nat.add_eq, add_zero, stream_nth_eq, Option.some_bind,
  ite_eq_right_iff]
state_before: case mk
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
b✝ : ℤ
fr✝ : K
stream_nth_eq : IntFractPair.stream v n = some { b := b✝, fr := fr✝ }
nth_fr_ne_zero : { b := b✝, fr := fr✝ }.fr ≠ 0
⊢ IntFractPair.stream v (n + 1) = some (IntFractPair.of { b := b✝, fr := fr✝ }.fr⁻¹)
state_after: case mk
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
b✝ : ℤ
fr✝ : K
stream_nth_eq : IntFractPair.stream v n = some { b := b✝, fr := fr✝ }
nth_fr_ne_zero : { b := b✝, fr := fr✝ }.fr ≠ 0
⊢ fr✝ = 0 → False

tactic: intro
state_before: case mk
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
b✝ : ℤ
fr✝ : K
stream_nth_eq : IntFractPair.stream v n = some { b := b✝, fr := fr✝ }
nth_fr_ne_zero : { b := b✝, fr := fr✝ }.fr ≠ 0
⊢ fr✝ = 0 → False
state_after: case mk
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
b✝ : ℤ
fr✝ : K
stream_nth_eq : IntFractPair.stream v n = some { b := b✝, fr := fr✝ }
nth_fr_ne_zero : { b := b✝, fr := fr✝ }.fr ≠ 0
a✝ : fr✝ = 0
⊢ False

tactic: contradiction
state_before: case mk
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
b✝ : ℤ
fr✝ : K
stream_nth_eq : IntFractPair.stream v n = some { b := b✝, fr := fr✝ }
nth_fr_ne_zero : { b := b✝, fr := fr✝ }.fr ≠ 0
a✝ : fr✝ = 0
⊢ False
state_after: no goals
Theorem: List.argmax_mem
File: Mathlib/Data/List/MinMax.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder β
inst✝ : DecidableRel fun x x_1 => x < x_1
f : α → β
l : List α
o : Option α
a m✝ m : α
⊢ m ∈ argmax f [] → m ∈ []
state_after: no goals

tactic: simpa [argmax, argAux] using foldl_argAux_mem _ tl hd m
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder β
inst✝ : DecidableRel fun x x_1 => x < x_1
f : α → β
l : List α
o : Option α
a m✝ hd : α
tl : List α
m : α
⊢ m ∈ argmax f (hd :: tl) → m ∈ hd :: tl
state_after: no goals
Theorem: Multiset.fold_cons'_right
File: Mathlib/Data/Multiset/Fold.lean

tactic: rw [fold_eq_foldl, foldl_cons, ← fold_eq_foldl]
state_before: α : Type u_1
β : Type u_2
op : α → α → α
hc : Std.Commutative op
ha : Std.Associative op
b a : α
s : Multiset α
⊢ fold op b (a ::ₘ s) = fold op (op b a) s
state_after: no goals