1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MeasurableSpace.CountablySeparated.mono
File: Mathlib/MeasureTheory/MeasurableSpace/CountablyGenerated.lean

tactic: simp_rw [countablySeparated_def] at *
state_before: α : Type u_1
β : Type u_2
m m' : MeasurableSpace α
hsep : CountablySeparated α
h : m ≤ m'
⊢ CountablySeparated α
state_after: α : Type u_1
β : Type u_2
m m' : MeasurableSpace α
h : m ≤ m'
hsep : HasCountableSeparatingOn α MeasurableSet univ
⊢ HasCountableSeparatingOn α MeasurableSet univ

tactic: rcases hsep with ⟨S, Sct, Smeas, hS⟩
state_before: α : Type u_1
β : Type u_2
m m' : MeasurableSpace α
h : m ≤ m'
hsep : HasCountableSeparatingOn α MeasurableSet univ
⊢ HasCountableSeparatingOn α MeasurableSet univ
state_after: case mk.intro.intro.intro
α : Type u_1
β : Type u_2
m m' : MeasurableSpace α
h : m ≤ m'
S : Set (Set α)
Sct : S.Countable
Smeas : ∀ s ∈ S, MeasurableSet s
hS : ∀ x ∈ univ, ∀ y ∈ univ, (∀ s ∈ S, x ∈ s ↔ y ∈ s) → x = y
⊢ HasCountableSeparatingOn α MeasurableSet univ

tactic: use S, Sct, (fun s hs ↦ h _ <| Smeas _ hs), hS
state_before: case mk.intro.intro.intro
α : Type u_1
β : Type u_2
m m' : MeasurableSpace α
h : m ≤ m'
S : Set (Set α)
Sct : S.Countable
Smeas : ∀ s ∈ S, MeasurableSet s
hS : ∀ x ∈ univ, ∀ y ∈ univ, (∀ s ∈ S, x ∈ s ↔ y ∈ s) → x = y
⊢ HasCountableSeparatingOn α MeasurableSet univ
state_after: no goals
Theorem: Nat.not_bddAbove_setOf_prime
File: Mathlib/Data/Nat/Prime.lean

tactic: rw [not_bddAbove_iff]
state_before: n : ℕ
⊢ ¬BddAbove {p | Prime p}
state_after: n : ℕ
⊢ ∀ (x : ℕ), ∃ y ∈ {p | Prime p}, x < y

tactic: intro n
state_before: n : ℕ
⊢ ∀ (x : ℕ), ∃ y ∈ {p | Prime p}, x < y
state_after: n✝ n : ℕ
⊢ ∃ y ∈ {p | Prime p}, n < y

tactic: obtain ⟨p, hi, hp⟩ := exists_infinite_primes n.succ
state_before: n✝ n : ℕ
⊢ ∃ y ∈ {p | Prime p}, n < y
state_after: case intro.intro
n✝ n p : ℕ
hi : n.succ ≤ p
hp : Prime p
⊢ ∃ y ∈ {p | Prime p}, n < y

tactic: exact ⟨p, hp, hi⟩
state_before: case intro.intro
n✝ n p : ℕ
hi : n.succ ≤ p
hp : Prime p
⊢ ∃ y ∈ {p | Prime p}, n < y
state_after: no goals
Theorem: Multiset.cons_inj_right
File: Mathlib/Data/Multiset/Basic.lean

tactic: rintro ⟨l₁⟩ ⟨l₂⟩
state_before: α : Type u_1
β : Type v
γ : Type u_2
a : α
⊢ ∀ {s t : Multiset α}, a ::ₘ s = a ::ₘ t ↔ s = t
state_after: case mk.mk
α : Type u_1
β : Type v
γ : Type u_2
a : α
s✝ : Multiset α
l₁ : List α
t✝ : Multiset α
l₂ : List α
⊢ a ::ₘ Quot.mk Setoid.r l₁ = a ::ₘ Quot.mk Setoid.r l₂ ↔ Quot.mk Setoid.r l₁ = Quot.mk Setoid.r l₂

tactic: simp
state_before: case mk.mk
α : Type u_1
β : Type v
γ : Type u_2
a : α
s✝ : Multiset α
l₁ : List α
t✝ : Multiset α
l₂ : List α
⊢ a ::ₘ Quot.mk Setoid.r l₁ = a ::ₘ Quot.mk Setoid.r l₂ ↔ Quot.mk Setoid.r l₁ = Quot.mk Setoid.r l₂
state_after: no goals
Theorem: DFinsupp.piecewise_single_erase
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: ext j
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
s : Finset ι
x✝ : (i : ↑↑s) → β ↑i
i✝ : ι
x : Π₀ (i : ι), β i
i : ι
inst✝ : (i' : ι) → Decidable (i' ∈ {i})
⊢ (single i (x i)).piecewise (erase i x) {i} = x
state_after: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
s : Finset ι
x✝ : (i : ↑↑s) → β ↑i
i✝ : ι
x : Π₀ (i : ι), β i
i : ι
inst✝ : (i' : ι) → Decidable (i' ∈ {i})
j : ι
⊢ ((single i (x i)).piecewise (erase i x) {i}) j = x j

tactic: rw [piecewise_apply]
state_before: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
s : Finset ι
x✝ : (i : ↑↑s) → β ↑i
i✝ : ι
x : Π₀ (i : ι), β i
i : ι
inst✝ : (i' : ι) → Decidable (i' ∈ {i})
j : ι
⊢ ((single i (x i)).piecewise (erase i x) {i}) j = x j
state_after: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
s : Finset ι
x✝ : (i : ↑↑s) → β ↑i
i✝ : ι
x : Π₀ (i : ι), β i
i : ι
inst✝ : (i' : ι) → Decidable (i' ∈ {i})
j : ι
⊢ (if j ∈ {i} then (single i (x i)) j else (erase i x) j) = x j

tactic: split_ifs with h
state_before: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
s : Finset ι
x✝ : (i : ↑↑s) → β ↑i
i✝ : ι
x : Π₀ (i : ι), β i
i : ι
inst✝ : (i' : ι) → Decidable (i' ∈ {i})
j : ι
⊢ (if j ∈ {i} then (single i (x i)) j else (erase i x) j) = x j
state_after: case pos
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
s : Finset ι
x✝ : (i : ↑↑s) → β ↑i
i✝ : ι
x : Π₀ (i : ι), β i
i : ι
inst✝ : (i' : ι) → Decidable (i' ∈ {i})
j : ι
h : j ∈ {i}
⊢ (single i (x i)) j = x j

case neg
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
s : Finset ι
x✝ : (i : ↑↑s) → β ↑i
i✝ : ι
x : Π₀ (i : ι), β i
i : ι
inst✝ : (i' : ι) → Decidable (i' ∈ {i})
j : ι
h : j ∉ {i}
⊢ (erase i x) j = x j

tactic: rw [(id h : j = i), single_eq_same]
state_before: case pos
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
s : Finset ι
x✝ : (i : ↑↑s) → β ↑i
i✝ : ι
x : Π₀ (i : ι), β i
i : ι
inst✝ : (i' : ι) → Decidable (i' ∈ {i})
j : ι
h : j ∈ {i}
⊢ (single i (x i)) j = x j
state_after: no goals

tactic: exact erase_ne h
state_before: case neg
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
s : Finset ι
x✝ : (i : ↑↑s) → β ↑i
i✝ : ι
x : Π₀ (i : ι), β i
i : ι
inst✝ : (i' : ι) → Decidable (i' ∈ {i})
j : ι
h : j ∉ {i}
⊢ (erase i x) j = x j
state_after: no goals
Theorem: hasFDerivWithinAt_singleton
File: Mathlib/Analysis/Calculus/FDeriv/Basic.lean

tactic: simp only [HasFDerivWithinAt, nhdsWithin_singleton, hasFDerivAtFilter_iff_isLittleO,
  isLittleO_pure, ContinuousLinearMap.zero_apply, sub_self]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x✝ : E
s t : Set E
L L₁ L₂ : Filter E
f : E → F
x : E
⊢ HasFDerivWithinAt f 0 {x} x
state_after: no goals
Theorem: CategoryTheory.Limits.eq_zero_of_epi_kernel
File: Mathlib/CategoryTheory/Limits/Shapes/Kernels.lean

tactic: simp
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
X Y : C
f : X ⟶ Y
inst✝¹ : HasKernel f
inst✝ : Epi (kernel.ι f)
⊢ kernel.ι f ≫ f = kernel.ι f ≫ 0
state_after: no goals
Theorem: Mathlib.Tactic.Ring.smul_nat
File: Mathlib/Tactic/Ring/Basic.lean

tactic: subst_vars
state_before: u : Lean.Level
R : Type ?u.108383
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a b c : ℕ
x✝ : a * b = c
⊢ a • b = c
state_after: u : Lean.Level
R : Type ?u.108383
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a b : ℕ
⊢ a • b = a * b

tactic: simp
state_before: u : Lean.Level
R : Type ?u.108383
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a b : ℕ
⊢ a • b = a * b
state_after: no goals
Theorem: CategoryTheory.Limits.inl_comp_pushoutSymmetry_inv
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: simp [Iso.comp_inv_eq]
state_before: C : Type u
inst✝² : Category.{v, u} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
W X Y Z : C
f : X ⟶ Y
g : X ⟶ Z
inst✝ : HasPushout f g
⊢ pushout.inl ≫ (pushoutSymmetry f g).inv = pushout.inr
state_after: no goals
Theorem: vectorSpan_pair
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: simp_rw [vectorSpan_eq_span_vsub_set_left k (mem_insert p₁ _), image_pair, vsub_self,
  Submodule.span_insert_zero]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p₁ p₂ : P
⊢ vectorSpan k {p₁, p₂} = Submodule.span k {p₁ -ᵥ p₂}
state_after: no goals
Theorem: rel_iSup_tprod
File: Mathlib/Topology/Algebra/InfiniteSum/NatInt.lean

tactic: cases nonempty_encodable β
state_before: M : Type u_1
inst✝⁵ : CommMonoid M
inst✝⁴ : TopologicalSpace M
m✝ m' : M
G : Type u_2
inst✝³ : CommGroup G
g g' : G
inst✝² : T2Space M
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : Countable β
inst✝ : CompleteLattice α
m : α → M
m0 : m ⊥ = 1
R : M → M → Prop
m_iSup : ∀ (s : ℕ → α), R (m (⨆ i, s i)) (∏' (i : ℕ), m (s i))
s : β → α
⊢ R (m (⨆ b, s b)) (∏' (b : β), m (s b))
state_after: case intro
M : Type u_1
inst✝⁵ : CommMonoid M
inst✝⁴ : TopologicalSpace M
m✝ m' : M
G : Type u_2
inst✝³ : CommGroup G
g g' : G
inst✝² : T2Space M
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : Countable β
inst✝ : CompleteLattice α
m : α → M
m0 : m ⊥ = 1
R : M → M → Prop
m_iSup : ∀ (s : ℕ → α), R (m (⨆ i, s i)) (∏' (i : ℕ), m (s i))
s : β → α
val✝ : Encodable β
⊢ R (m (⨆ b, s b)) (∏' (b : β), m (s b))

tactic: rw [← iSup_decode₂, ← tprod_iSup_decode₂ _ m0 s]
state_before: case intro
M : Type u_1
inst✝⁵ : CommMonoid M
inst✝⁴ : TopologicalSpace M
m✝ m' : M
G : Type u_2
inst✝³ : CommGroup G
g g' : G
inst✝² : T2Space M
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : Countable β
inst✝ : CompleteLattice α
m : α → M
m0 : m ⊥ = 1
R : M → M → Prop
m_iSup : ∀ (s : ℕ → α), R (m (⨆ i, s i)) (∏' (i : ℕ), m (s i))
s : β → α
val✝ : Encodable β
⊢ R (m (⨆ b, s b)) (∏' (b : β), m (s b))
state_after: case intro
M : Type u_1
inst✝⁵ : CommMonoid M
inst✝⁴ : TopologicalSpace M
m✝ m' : M
G : Type u_2
inst✝³ : CommGroup G
g g' : G
inst✝² : T2Space M
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : Countable β
inst✝ : CompleteLattice α
m : α → M
m0 : m ⊥ = 1
R : M → M → Prop
m_iSup : ∀ (s : ℕ → α), R (m (⨆ i, s i)) (∏' (i : ℕ), m (s i))
s : β → α
val✝ : Encodable β
⊢ R (m (⨆ i, ⨆ b ∈ decode₂ β i, s b)) (∏' (i : ℕ), m (⨆ b ∈ decode₂ β i, s b))

tactic: exact m_iSup _
state_before: case intro
M : Type u_1
inst✝⁵ : CommMonoid M
inst✝⁴ : TopologicalSpace M
m✝ m' : M
G : Type u_2
inst✝³ : CommGroup G
g g' : G
inst✝² : T2Space M
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : Countable β
inst✝ : CompleteLattice α
m : α → M
m0 : m ⊥ = 1
R : M → M → Prop
m_iSup : ∀ (s : ℕ → α), R (m (⨆ i, s i)) (∏' (i : ℕ), m (s i))
s : β → α
val✝ : Encodable β
⊢ R (m (⨆ i, ⨆ b ∈ decode₂ β i, s b)) (∏' (i : ℕ), m (⨆ b ∈ decode₂ β i, s b))
state_after: no goals
Theorem: Even.isSquare_pow
File: Mathlib/Algebra/Group/Even.lean

tactic: rintro ⟨n, rfl⟩ a
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝ : Monoid α
n : ℕ
a : α
⊢ Even n → ∀ (a : α), IsSquare (a ^ n)
state_after: case intro
F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝ : Monoid α
a✝ : α
n : ℕ
a : α
⊢ IsSquare (a ^ (n + n))

tactic: exact ⟨a ^ n, pow_add _ _ _⟩
state_before: case intro
F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝ : Monoid α
a✝ : α
n : ℕ
a : α
⊢ IsSquare (a ^ (n + n))
state_after: no goals
Theorem: one_lt_div_of_neg
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [lt_div_iff_of_neg hb, one_mul]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hb : b < 0
⊢ 1 < a / b ↔ a < b
state_after: no goals
Theorem: imageToKernel_comp_mono
File: Mathlib/Algebra/Homology/ImageToKernel.lean

tactic: simpa using w
state_before: ι : Type u_1
V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : HasZeroMorphisms V
A B C : V
f : A ⟶ B
g : B ⟶ C
inst✝² : HasKernels V
inst✝¹ : HasImages V
D : V
h : C ⟶ D
inst✝ : Mono h
w : f ≫ g ≫ h = 0
⊢ (f ≫ g) ≫ h = 0 ≫ h
state_after: no goals

tactic: ext
state_before: ι : Type u_1
V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : HasZeroMorphisms V
A B C : V
f : A ⟶ B
g : B ⟶ C
inst✝² : HasKernels V
inst✝¹ : HasImages V
D : V
h : C ⟶ D
inst✝ : Mono h
w : f ≫ g ≫ h = 0
⊢ imageToKernel f (g ≫ h) w = imageToKernel f g ⋯ ≫ ((kernelSubobject (g ≫ h)).isoOfEq (kernelSubobject g) ⋯).inv
state_after: case h
ι : Type u_1
V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : HasZeroMorphisms V
A B C : V
f : A ⟶ B
g : B ⟶ C
inst✝² : HasKernels V
inst✝¹ : HasImages V
D : V
h : C ⟶ D
inst✝ : Mono h
w : f ≫ g ≫ h = 0
⊢ imageToKernel f (g ≫ h) w ≫ (kernelSubobject (g ≫ h)).arrow =
    (imageToKernel f g ⋯ ≫ ((kernelSubobject (g ≫ h)).isoOfEq (kernelSubobject g) ⋯).inv) ≫
      (kernelSubobject (g ≫ h)).arrow

tactic: simp
state_before: case h
ι : Type u_1
V : Type u
inst✝⁴ : Category.{v, u} V
inst✝³ : HasZeroMorphisms V
A B C : V
f : A ⟶ B
g : B ⟶ C
inst✝² : HasKernels V
inst✝¹ : HasImages V
D : V
h : C ⟶ D
inst✝ : Mono h
w : f ≫ g ≫ h = 0
⊢ imageToKernel f (g ≫ h) w ≫ (kernelSubobject (g ≫ h)).arrow =
    (imageToKernel f g ⋯ ≫ ((kernelSubobject (g ≫ h)).isoOfEq (kernelSubobject g) ⋯).inv) ≫
      (kernelSubobject (g ≫ h)).arrow
state_after: no goals
Theorem: CategoryTheory.Limits.KernelFork.condition
File: Mathlib/CategoryTheory/Limits/Shapes/Kernels.lean

tactic: erw [Fork.condition, HasZeroMorphisms.comp_zero]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasZeroMorphisms C
X Y : C
f : X ⟶ Y
s : KernelFork f
⊢ Fork.ι s ≫ f = 0
state_after: no goals
Theorem: AddConstMapClass.map_nat
File: Mathlib/Algebra/AddConstMap/Basic.lean

tactic: simp
state_before: F : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : FunLike F G H
a : G
b : H
inst✝² : AddMonoidWithOne G
inst✝¹ : AddMonoidWithOne H
inst✝ : AddConstMapClass F G H 1 1
f : F
n : ℕ
⊢ f ↑n = f 0 + ↑n
state_after: no goals
Theorem: CoxeterSystem.length_leftInvSeq
File: Mathlib/GroupTheory/Coxeter/Inversion.lean

tactic: simp [leftInvSeq_eq_reverse_rightInvSeq_reverse]
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
ω : List B
⊢ (cs.leftInvSeq ω).length = ω.length
state_after: no goals
Theorem: Polynomial.sum_modByMonic_coeff
File: Mathlib/Algebra/Polynomial/Div.lean

tactic: nontriviality R
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n✝ : ℕ
inst✝ : Ring R
p q : R[X]
hq : q.Monic
n : ℕ
hn : q.degree ≤ ↑n
⊢ ∑ i : Fin n, (monomial ↑i) ((p %ₘ q).coeff ↑i) = p %ₘ q
state_after: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n✝ : ℕ
inst✝ : Ring R
p q : R[X]
hq : q.Monic
n : ℕ
hn : q.degree ≤ ↑n
a✝ : Nontrivial R
⊢ ∑ i : Fin n, (monomial ↑i) ((p %ₘ q).coeff ↑i) = p %ₘ q

tactic: exact
  (sum_fin (fun i c => monomial i c) (by simp) ((degree_modByMonic_lt _ hq).trans_le hn)).trans
    (sum_monomial_eq _)
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n✝ : ℕ
inst✝ : Ring R
p q : R[X]
hq : q.Monic
n : ℕ
hn : q.degree ≤ ↑n
a✝ : Nontrivial R
⊢ ∑ i : Fin n, (monomial ↑i) ((p %ₘ q).coeff ↑i) = p %ₘ q
state_after: no goals

tactic: simp
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n✝ : ℕ
inst✝ : Ring R
p q : R[X]
hq : q.Monic
n : ℕ
hn : q.degree ≤ ↑n
a✝ : Nontrivial R
⊢ ∀ (i : ℕ), (fun i c => (monomial i) c) i 0 = 0
state_after: no goals
Theorem: ne_zero_pow
File: Mathlib/Algebra/GroupWithZero/Basic.lean

tactic: rintro rfl
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : MonoidWithZero M₀
a : M₀
m n : ℕ
hn : n ≠ 0
ha : a ^ n ≠ 0
⊢ a ≠ 0
state_after: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : MonoidWithZero M₀
m n : ℕ
hn : n ≠ 0
ha : 0 ^ n ≠ 0
⊢ False

tactic: exact ha $ zero_pow hn
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : MonoidWithZero M₀
m n : ℕ
hn : n ≠ 0
ha : 0 ^ n ≠ 0
⊢ False
state_after: no goals
Theorem: List.finRange_map_get
File: Mathlib/Data/List/Range.lean

tactic: simp
state_before: α : Type u
l : List α
⊢ (map l.get (finRange l.length)).length = l.length
state_after: no goals

tactic: simp
state_before: α : Type u
l : List α
⊢ ∀ (n : ℕ) (h₁ : n < (map l.get (finRange l.length)).length) (h₂ : n < l.length),
    (map l.get (finRange l.length)).get ⟨n, h₁⟩ = l.get ⟨n, h₂⟩
state_after: no goals
Theorem: MvPolynomial.weightedTotalDegree_one
File: Mathlib/RingTheory/MvPolynomial/Homogeneous.lean

tactic: simp only [totalDegree, weightedTotalDegree, weightedDegree, LinearMap.toAddMonoidHom_coe,
  Finsupp.total, Pi.one_apply, Finsupp.coe_lsum, LinearMap.coe_smulRight, LinearMap.id_coe,
  id, Algebra.id.smul_eq_mul, mul_one]
state_before: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
inst✝ : CommSemiring R
φ : MvPolynomial σ R
⊢ weightedTotalDegree 1 φ = φ.totalDegree
state_after: no goals
Theorem: div_lt_div_of_neg_of_lt
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [div_eq_mul_one_div a c, div_eq_mul_one_div b c]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hc : c < 0
h : b < a
⊢ a / c < b / c
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hc : c < 0
h : b < a
⊢ a * (1 / c) < b * (1 / c)

tactic: exact mul_lt_mul_of_neg_right h (one_div_neg.2 hc)
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hc : c < 0
h : b < a
⊢ a * (1 / c) < b * (1 / c)
state_after: no goals
Theorem: Sum.elim_one_mulSingle
File: Mathlib/Algebra/Group/Pi/Basic.lean

tactic: simp only [Pi.mulSingle, Sum.elim_update_right, elim_one_one]
state_before: I : Type u
α : Type u_1
β : Type u_2
γ : Type u_3
f : I → Type v₁
g : I → Type v₂
h : I → Type v₃
x y : (i : I) → f i
i✝ : I
a a' : α → γ
b b' : β → γ
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : One γ
i : β
c : γ
⊢ Sum.elim 1 (Pi.mulSingle i c) = Pi.mulSingle (inr i) c
state_after: no goals
Theorem: div_le_iff'
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [mul_comm, div_le_iff hb]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
hb : 0 < b
⊢ a / b ≤ c ↔ a ≤ b * c
state_after: no goals
Theorem: exists_nat_ge
File: Mathlib/Algebra/Order/Archimedean.lean

tactic: nontriviality α
state_before: α : Type u_1
M : Type u_2
inst✝¹ : OrderedSemiring α
inst✝ : Archimedean α
x : α
⊢ ∃ n, x ≤ ↑n
state_after: α : Type u_1
M : Type u_2
inst✝¹ : OrderedSemiring α
inst✝ : Archimedean α
x : α
a✝ : Nontrivial α
⊢ ∃ n, x ≤ ↑n

tactic: exact (Archimedean.arch x one_pos).imp fun n h => by rwa [← nsmul_one]
state_before: α : Type u_1
M : Type u_2
inst✝¹ : OrderedSemiring α
inst✝ : Archimedean α
x : α
a✝ : Nontrivial α
⊢ ∃ n, x ≤ ↑n
state_after: no goals

tactic: rwa [← nsmul_one]
state_before: α : Type u_1
M : Type u_2
inst✝¹ : OrderedSemiring α
inst✝ : Archimedean α
x : α
a✝ : Nontrivial α
n : ℕ
h : x ≤ n • 1
⊢ x ≤ ↑n
state_after: no goals
Theorem: Polynomial.IsRoot.of_map
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: rwa [IsRoot, ← (injective_iff_map_eq_zero' f).mp hf, ← eval₂_hom, ← eval_map]
state_before: R✝ : Type u
S : Type v
T : Type w
ι : Type y
a b : R✝
m n : ℕ
inst✝² : CommSemiring R✝
inst✝¹ : CommSemiring S
f✝ : R✝ →+* S
R : Type u_1
inst✝ : CommRing R
f : R →+* S
x : R
p : R[X]
h : (Polynomial.map f p).IsRoot (f x)
hf : Function.Injective ⇑f
⊢ p.IsRoot x
state_after: no goals
Theorem: finprod_mem_union_inter
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: lift s to Finset α using hs
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
hs : s.Finite
ht : t.Finite
⊢ (∏ᶠ (i : α) (_ : i ∈ s ∪ t), f i) * ∏ᶠ (i : α) (_ : i ∈ s ∩ t), f i =
    (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ t), f i
state_after: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
t : Set α
ht : t.Finite
s : Finset α
⊢ (∏ᶠ (i : α) (_ : i ∈ ↑s ∪ t), f i) * ∏ᶠ (i : α) (_ : i ∈ ↑s ∩ t), f i =
    (∏ᶠ (i : α) (_ : i ∈ ↑s), f i) * ∏ᶠ (i : α) (_ : i ∈ t), f i

tactic: lift t to Finset α using ht
state_before: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
t : Set α
ht : t.Finite
s : Finset α
⊢ (∏ᶠ (i : α) (_ : i ∈ ↑s ∪ t), f i) * ∏ᶠ (i : α) (_ : i ∈ ↑s ∩ t), f i =
    (∏ᶠ (i : α) (_ : i ∈ ↑s), f i) * ∏ᶠ (i : α) (_ : i ∈ t), f i
state_after: case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Finset α
⊢ (∏ᶠ (i : α) (_ : i ∈ ↑s ∪ ↑t), f i) * ∏ᶠ (i : α) (_ : i ∈ ↑s ∩ ↑t), f i =
    (∏ᶠ (i : α) (_ : i ∈ ↑s), f i) * ∏ᶠ (i : α) (_ : i ∈ ↑t), f i

tactic: classical
  rw [← Finset.coe_union, ← Finset.coe_inter]
  simp only [finprod_mem_coe_finset, Finset.prod_union_inter]
state_before: case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Finset α
⊢ (∏ᶠ (i : α) (_ : i ∈ ↑s ∪ ↑t), f i) * ∏ᶠ (i : α) (_ : i ∈ ↑s ∩ ↑t), f i =
    (∏ᶠ (i : α) (_ : i ∈ ↑s), f i) * ∏ᶠ (i : α) (_ : i ∈ ↑t), f i
state_after: no goals

tactic: rw [← Finset.coe_union, ← Finset.coe_inter]
state_before: case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Finset α
⊢ (∏ᶠ (i : α) (_ : i ∈ ↑s ∪ ↑t), f i) * ∏ᶠ (i : α) (_ : i ∈ ↑s ∩ ↑t), f i =
    (∏ᶠ (i : α) (_ : i ∈ ↑s), f i) * ∏ᶠ (i : α) (_ : i ∈ ↑t), f i
state_after: case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Finset α
⊢ (∏ᶠ (i : α) (_ : i ∈ ↑(s ∪ t)), f i) * ∏ᶠ (i : α) (_ : i ∈ ↑(s ∩ t)), f i =
    (∏ᶠ (i : α) (_ : i ∈ ↑s), f i) * ∏ᶠ (i : α) (_ : i ∈ ↑t), f i

tactic: simp only [finprod_mem_coe_finset, Finset.prod_union_inter]
state_before: case intro.intro
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Finset α
⊢ (∏ᶠ (i : α) (_ : i ∈ ↑(s ∪ t)), f i) * ∏ᶠ (i : α) (_ : i ∈ ↑(s ∩ t)), f i =
    (∏ᶠ (i : α) (_ : i ∈ ↑s), f i) * ∏ᶠ (i : α) (_ : i ∈ ↑t), f i
state_after: no goals
Theorem: RingHom.mem_ker
File: Mathlib/RingTheory/Ideal/Maps.lean

tactic: rw [ker, Ideal.mem_comap, Submodule.mem_bot]
state_before: R : Type u
S : Type v
T : Type w
F : Type u_1
G : Type u_2
inst✝⁴ : Semiring R
inst✝³ : Semiring S
inst✝² : Semiring T
inst✝¹ : FunLike F R S
rcf : RingHomClass F R S
inst✝ : FunLike G T S
rcg : RingHomClass G T S
f : F
g : G
r : R
⊢ r ∈ ker f ↔ f r = 0
state_after: no goals
Theorem: regionBetween_subset
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: simpa only [prod_univ, regionBetween, Set.preimage, setOf_subset_setOf] using fun a => And.left
state_before: α : Type u_1
f g : α → ℝ
s : Set α
⊢ regionBetween f g s ⊆ s ×ˢ univ
state_after: no goals
Theorem: Submodule.closure_subset_topologicalClosure_span
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: rw [Submodule.topologicalClosure_coe]
state_before: R R' : Type u
M M' : Type v
inst✝¹⁰ : Semiring R
inst✝⁹ : Ring R'
inst✝⁸ : TopologicalSpace M
inst✝⁷ : AddCommMonoid M
inst✝⁶ : TopologicalSpace M'
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M
inst✝³ : ContinuousConstSMul R M
inst✝² : Module R' M'
inst✝¹ : ContinuousConstSMul R' M'
inst✝ : ContinuousAdd M
s : Set M
⊢ closure s ⊆ ↑(span R s).topologicalClosure
state_after: R R' : Type u
M M' : Type v
inst✝¹⁰ : Semiring R
inst✝⁹ : Ring R'
inst✝⁸ : TopologicalSpace M
inst✝⁷ : AddCommMonoid M
inst✝⁶ : TopologicalSpace M'
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M
inst✝³ : ContinuousConstSMul R M
inst✝² : Module R' M'
inst✝¹ : ContinuousConstSMul R' M'
inst✝ : ContinuousAdd M
s : Set M
⊢ closure s ⊆ closure ↑(span R s)

tactic: exact closure_mono subset_span
state_before: R R' : Type u
M M' : Type v
inst✝¹⁰ : Semiring R
inst✝⁹ : Ring R'
inst✝⁸ : TopologicalSpace M
inst✝⁷ : AddCommMonoid M
inst✝⁶ : TopologicalSpace M'
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M
inst✝³ : ContinuousConstSMul R M
inst✝² : Module R' M'
inst✝¹ : ContinuousConstSMul R' M'
inst✝ : ContinuousAdd M
s : Set M
⊢ closure s ⊆ closure ↑(span R s)
state_after: no goals