1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Topology.IsLower.isClosed_upperClosure
File: Mathlib/Topology/Order/LowerUpperTopology.lean

tactic: simp only [← UpperSet.iInf_Ici, UpperSet.coe_iInf]
state_before: α : Type u_1
β : ?m.5259
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsLower α
s : Set α
h : s.Finite
⊢ IsClosed ↑(upperClosure s)
state_after: α : Type u_1
β : ?m.5259
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsLower α
s : Set α
h : s.Finite
⊢ IsClosed (⋃ i ∈ s, ↑(UpperSet.Ici i))

tactic: exact h.isClosed_biUnion fun _ _ => isClosed_Ici
state_before: α : Type u_1
β : ?m.5259
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsLower α
s : Set α
h : s.Finite
⊢ IsClosed (⋃ i ∈ s, ↑(UpperSet.Ici i))
state_after: no goals
Theorem: SameRay.exists_pos_left
File: Mathlib/LinearAlgebra/Ray.lean

tactic: rw [mul_smul, h, inv_smul_smul₀ hr₂.ne']
state_before: R : Type u_1
inst✝² : LinearOrderedField R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y v₁ v₂ : M
h✝ : SameRay R x y
hx : x ≠ 0
hy : y ≠ 0
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h : r₁ • x = r₂ • y
⊢ (r₂⁻¹ * r₁) • x = y
state_after: no goals
Theorem: inner_self_ofReal_norm
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [← inner_self_re_eq_norm]
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
x : E
⊢ ↑‖⟪x, x⟫_𝕜‖ = ⟪x, x⟫_𝕜
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
x : E
⊢ ↑(re ⟪x, x⟫_𝕜) = ⟪x, x⟫_𝕜

tactic: exact inner_self_ofReal_re _
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
x : E
⊢ ↑(re ⟪x, x⟫_𝕜) = ⟪x, x⟫_𝕜
state_after: no goals
Theorem: intervalIntegral.integral_comp_div_add
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simpa only [div_eq_inv_mul, inv_inv] using integral_comp_mul_add f (inv_ne_zero hc) d
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d✝ : ℝ
f : ℝ → E
hc : c ≠ 0
d : ℝ
⊢ ∫ (x : ℝ) in a..b, f (x / c + d) = c • ∫ (x : ℝ) in a / c + d..b / c + d, f x
state_after: no goals
Theorem: MonoidHom.ker_toHomUnits
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: ext x
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁷ : Group G
inst✝⁶ : Group G'
inst✝⁵ : Group G''
A : Type u_4
inst✝⁴ : AddGroup A
N : Type u_5
P : Type u_6
inst✝³ : Group N
inst✝² : Group P
K : Subgroup G
M✝ : Type u_7
inst✝¹ : MulOneClass M✝
M : Type u_8
inst✝ : Monoid M
f : G →* M
⊢ f.toHomUnits.ker = f.ker
state_after: case h
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁷ : Group G
inst✝⁶ : Group G'
inst✝⁵ : Group G''
A : Type u_4
inst✝⁴ : AddGroup A
N : Type u_5
P : Type u_6
inst✝³ : Group N
inst✝² : Group P
K : Subgroup G
M✝ : Type u_7
inst✝¹ : MulOneClass M✝
M : Type u_8
inst✝ : Monoid M
f : G →* M
x : G
⊢ x ∈ f.toHomUnits.ker ↔ x ∈ f.ker

tactic: simp [mem_ker, Units.ext_iff]
state_before: case h
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁷ : Group G
inst✝⁶ : Group G'
inst✝⁵ : Group G''
A : Type u_4
inst✝⁴ : AddGroup A
N : Type u_5
P : Type u_6
inst✝³ : Group N
inst✝² : Group P
K : Subgroup G
M✝ : Type u_7
inst✝¹ : MulOneClass M✝
M : Type u_8
inst✝ : Monoid M
f : G →* M
x : G
⊢ x ∈ f.toHomUnits.ker ↔ x ∈ f.ker
state_after: no goals
Theorem: DFinsupp.update_eq_erase_add_single
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✝ : ι
f✝ : Π₀ (i : ι), β✝ i
b✝ : β✝ i✝
j : ι
β : ι → Type u_1
inst✝ : (i : ι) → AddZeroClass (β i)
f : Π₀ (i : ι), β i
i : ι
b : β i
⊢ update i f b = erase i f + single i b
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✝ : ι
f✝ : Π₀ (i : ι), β✝ i
b✝ : β✝ i✝
j✝ : ι
β : ι → Type u_1
inst✝ : (i : ι) → AddZeroClass (β i)
f : Π₀ (i : ι), β i
i : ι
b : β i
j : ι
⊢ (update i f b) j = (erase i f + single i b) j

tactic: rcases eq_or_ne i j with (rfl | 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✝ : ι
f✝ : Π₀ (i : ι), β✝ i
b✝ : β✝ i✝
j✝ : ι
β : ι → Type u_1
inst✝ : (i : ι) → AddZeroClass (β i)
f : Π₀ (i : ι), β i
i : ι
b : β i
j : ι
⊢ (update i f b) j = (erase i f + single i b) j
state_after: case h.inl
ι : Type u
γ : Type w
β✝ : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β✝ i)
s : Finset ι
x : (i : ↑↑s) → β✝ ↑i
i✝ : ι
f✝ : Π₀ (i : ι), β✝ i
b✝ : β✝ i✝
j : ι
β : ι → Type u_1
inst✝ : (i : ι) → AddZeroClass (β i)
f : Π₀ (i : ι), β i
i : ι
b : β i
⊢ (update i f b) i = (erase i f + single i b) i

case h.inr
ι : Type u
γ : Type w
β✝ : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β✝ i)
s : Finset ι
x : (i : ↑↑s) → β✝ ↑i
i✝ : ι
f✝ : Π₀ (i : ι), β✝ i
b✝ : β✝ i✝
j✝ : ι
β : ι → Type u_1
inst✝ : (i : ι) → AddZeroClass (β i)
f : Π₀ (i : ι), β i
i : ι
b : β i
j : ι
h : i ≠ j
⊢ (update i f b) j = (erase i f + single i b) j

tactic: simp
state_before: case h.inl
ι : Type u
γ : Type w
β✝ : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β✝ i)
s : Finset ι
x : (i : ↑↑s) → β✝ ↑i
i✝ : ι
f✝ : Π₀ (i : ι), β✝ i
b✝ : β✝ i✝
j : ι
β : ι → Type u_1
inst✝ : (i : ι) → AddZeroClass (β i)
f : Π₀ (i : ι), β i
i : ι
b : β i
⊢ (update i f b) i = (erase i f + single i b) i
state_after: no goals

tactic: simp [Function.update_noteq h.symm, h, erase_ne, h.symm]
state_before: case h.inr
ι : Type u
γ : Type w
β✝ : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β✝ i)
s : Finset ι
x : (i : ↑↑s) → β✝ ↑i
i✝ : ι
f✝ : Π₀ (i : ι), β✝ i
b✝ : β✝ i✝
j✝ : ι
β : ι → Type u_1
inst✝ : (i : ι) → AddZeroClass (β i)
f : Π₀ (i : ι), β i
i : ι
b : β i
j : ι
h : i ≠ j
⊢ (update i f b) j = (erase i f + single i b) j
state_after: no goals
Theorem: ProbabilityTheory.kernel.setLIntegral_restrict
File: Mathlib/Probability/Kernel/Basic.lean

tactic: rw [restrict_apply, Measure.restrict_restrict' hs]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ✝ : ↥(kernel α β)
s t✝ : Set β
κ : ↥(kernel α β)
hs : MeasurableSet s
a : α
f : β → ℝ≥0∞
t : Set β
⊢ ∫⁻ (b : β) in t, f b ∂(kernel.restrict κ hs) a = ∫⁻ (b : β) in t ∩ s, f b ∂κ a
state_after: no goals
Theorem: Nat.pow_dvd_pow_iff
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: refine ⟨fun h => ?_, fun h => pow_dvd_pow_of_dvd h _⟩
state_before: a b n : ℕ
n0 : n ≠ 0
⊢ a ^ n ∣ b ^ n ↔ a ∣ b
state_after: a b n : ℕ
n0 : n ≠ 0
h : a ^ n ∣ b ^ n
⊢ a ∣ b

tactic: rcases Nat.eq_zero_or_pos (gcd a b) with g0 | g0
state_before: a b n : ℕ
n0 : n ≠ 0
h : a ^ n ∣ b ^ n
⊢ a ∣ b
state_after: case inl
a b n : ℕ
n0 : n ≠ 0
h : a ^ n ∣ b ^ n
g0 : a.gcd b = 0
⊢ a ∣ b

case inr
a b n : ℕ
n0 : n ≠ 0
h : a ^ n ∣ b ^ n
g0 : a.gcd b > 0
⊢ a ∣ b

tactic: rcases exists_coprime' g0 with ⟨g, a', b', g0', co, rfl, rfl⟩
state_before: case inr
a b n : ℕ
n0 : n ≠ 0
h : a ^ n ∣ b ^ n
g0 : a.gcd b > 0
⊢ a ∣ b
state_after: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
h : (a' * g) ^ n ∣ (b' * g) ^ n
g0 : (a' * g).gcd (b' * g) > 0
⊢ a' * g ∣ b' * g

tactic: rw [mul_pow, mul_pow] at h
state_before: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
h : (a' * g) ^ n ∣ (b' * g) ^ n
g0 : (a' * g).gcd (b' * g) > 0
⊢ a' * g ∣ b' * g
state_after: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
h : a' ^ n * g ^ n ∣ b' ^ n * g ^ n
g0 : (a' * g).gcd (b' * g) > 0
⊢ a' * g ∣ b' * g

tactic: replace h := Nat.dvd_of_mul_dvd_mul_right (pow_pos g0' _) h
state_before: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
h : a' ^ n * g ^ n ∣ b' ^ n * g ^ n
g0 : (a' * g).gcd (b' * g) > 0
⊢ a' * g ∣ b' * g
state_after: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
g0 : (a' * g).gcd (b' * g) > 0
h : a' ^ n ∣ b' ^ n
⊢ a' * g ∣ b' * g

tactic: have := pow_dvd_pow a' <| Nat.pos_of_ne_zero n0
state_before: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
g0 : (a' * g).gcd (b' * g) > 0
h : a' ^ n ∣ b' ^ n
⊢ a' * g ∣ b' * g
state_after: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
g0 : (a' * g).gcd (b' * g) > 0
h : a' ^ n ∣ b' ^ n
this : a' ^ succ 0 ∣ a' ^ n
⊢ a' * g ∣ b' * g

tactic: rw [pow_one, (co.pow n n).eq_one_of_dvd h] at this
state_before: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
g0 : (a' * g).gcd (b' * g) > 0
h : a' ^ n ∣ b' ^ n
this : a' ^ succ 0 ∣ a' ^ n
⊢ a' * g ∣ b' * g
state_after: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
g0 : (a' * g).gcd (b' * g) > 0
h : a' ^ n ∣ b' ^ n
this : a' ∣ 1
⊢ a' * g ∣ b' * g

tactic: simp [eq_one_of_dvd_one this]
state_before: case inr.intro.intro.intro.intro.intro.intro
n : ℕ
n0 : n ≠ 0
g a' b' : ℕ
g0' : 0 < g
co : a'.Coprime b'
g0 : (a' * g).gcd (b' * g) > 0
h : a' ^ n ∣ b' ^ n
this : a' ∣ 1
⊢ a' * g ∣ b' * g
state_after: no goals

tactic: simp [eq_zero_of_gcd_eq_zero_right g0]
state_before: case inl
a b n : ℕ
n0 : n ≠ 0
h : a ^ n ∣ b ^ n
g0 : a.gcd b = 0
⊢ a ∣ b
state_after: no goals
Theorem: EuclideanDomain.gcdA_zero_left
File: Mathlib/Algebra/EuclideanDomain/Defs.lean

tactic: unfold gcdA
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
s : R
⊢ gcdA 0 s = 0
state_after: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
s : R
⊢ (xgcd 0 s).1 = 0

tactic: rw [xgcd, xgcd_zero_left]
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
s : R
⊢ (xgcd 0 s).1 = 0
state_after: no goals
Theorem: Matrix.conjTranspose_rat_smul
File: Mathlib/Data/Matrix/Basic.lean

tactic: simp
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : AddCommGroup α
inst✝¹ : StarAddMonoid α
inst✝ : Module ℚ α
c : ℚ
M : Matrix m n α
⊢ ∀ (i : n) (j : m), (c • M)ᴴ i j = (c • Mᴴ) i j
state_after: no goals
Theorem: IsDedekindDomain.HeightOneSpectrum.valuation_of_algebraMap
File: Mathlib/RingTheory/DedekindDomain/AdicValuation.lean

tactic: rw [valuation_def, Valuation.extendToLocalization_apply_map_apply]
state_before: R : Type u_1
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
K : Type u_2
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
v : HeightOneSpectrum R
r : R
⊢ v.valuation ((algebraMap R K) r) = v.intValuation r
state_after: no goals
Theorem: FractionalIdeal.spanSingleton_eq_zero_iff
File: Mathlib/RingTheory/FractionalIdeal/Operations.lean

tactic: simpa using congr_arg Subtype.val h
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
R₁ : Type u_3
inst✝³ : CommRing R₁
K : Type u_4
inst✝² : Field K
inst✝¹ : Algebra R₁ K
inst✝ : IsFractionRing R₁ K
y : P
h : spanSingleton S y = 0
⊢ span R {y} = ⊥
state_after: no goals

tactic: simp [h]
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
R₁ : Type u_3
inst✝³ : CommRing R₁
K : Type u_4
inst✝² : Field K
inst✝¹ : Algebra R₁ K
inst✝ : IsFractionRing R₁ K
y : P
h : y = 0
⊢ spanSingleton S y = 0
state_after: no goals
Theorem: LieModuleHom.ext_iff
File: Mathlib/Algebra/Lie/Basic.lean

tactic: rintro rfl m
state_before: R : Type u
L : Type v
M : Type w
N : Type w₁
P : Type w₂
inst✝¹⁴ : CommRing R
inst✝¹³ : LieRing L
inst✝¹² : LieAlgebra R L
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieRingModule L N
inst✝³ : LieRingModule L P
inst✝² : LieModule R L M
inst✝¹ : LieModule R L N
inst✝ : LieModule R L P
f g : M →ₗ⁅R,L⁆ N
⊢ f = g → ∀ (m : M), f m = g m
state_after: R : Type u
L : Type v
M : Type w
N : Type w₁
P : Type w₂
inst✝¹⁴ : CommRing R
inst✝¹³ : LieRing L
inst✝¹² : LieAlgebra R L
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieRingModule L N
inst✝³ : LieRingModule L P
inst✝² : LieModule R L M
inst✝¹ : LieModule R L N
inst✝ : LieModule R L P
f : M →ₗ⁅R,L⁆ N
m : M
⊢ f m = f m

tactic: rfl
state_before: R : Type u
L : Type v
M : Type w
N : Type w₁
P : Type w₂
inst✝¹⁴ : CommRing R
inst✝¹³ : LieRing L
inst✝¹² : LieAlgebra R L
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieRingModule L N
inst✝³ : LieRingModule L P
inst✝² : LieModule R L M
inst✝¹ : LieModule R L N
inst✝ : LieModule R L P
f : M →ₗ⁅R,L⁆ N
m : M
⊢ f m = f m
state_after: no goals
Theorem: RelEmbedding.not_acc_of_decreasing_seq
File: Mathlib/Order/OrderIsoNat.lean

tactic: rw [acc_iff_no_decreasing_seq, not_isEmpty_iff]
state_before: α : Type u_1
r : α → α → Prop
inst✝ : IsStrictOrder α r
f : (fun x x_1 => x > x_1) ↪r r
k : ℕ
⊢ ¬Acc r (f k)
state_after: α : Type u_1
r : α → α → Prop
inst✝ : IsStrictOrder α r
f : (fun x x_1 => x > x_1) ↪r r
k : ℕ
⊢ Nonempty { f_1 // f k ∈ Set.range ⇑f_1 }

tactic: exact ⟨⟨f, k, rfl⟩⟩
state_before: α : Type u_1
r : α → α → Prop
inst✝ : IsStrictOrder α r
f : (fun x x_1 => x > x_1) ↪r r
k : ℕ
⊢ Nonempty { f_1 // f k ∈ Set.range ⇑f_1 }
state_after: no goals
Theorem: MvPolynomial.X_pow_eq_monomial
File: Mathlib/Algebra/MvPolynomial/Basic.lean

tactic: simp [X, monomial_pow]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p q : MvPolynomial σ R
⊢ X n ^ e = (monomial (Finsupp.single n e)) 1
state_after: no goals
Theorem: LieIdeal.inclusion_injective
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: simp only [inclusion_apply, imp_self, Subtype.mk_eq_mk, SetLike.coe_eq_coe]
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I : LieIdeal R L
J : LieIdeal R L'
I₁ I₂ : LieIdeal R L
h : I₁ ≤ I₂
x y : ↥↑I₁
⊢ (inclusion h) x = (inclusion h) y → x = y
state_after: no goals
Theorem: Nat.prod_div_divisors
File: Mathlib/NumberTheory/Divisors.lean

tactic: by_cases hn : n = 0
state_before: n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
⊢ ∏ d ∈ n.divisors, f (n / d) = n.divisors.prod f
state_after: case pos
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : n = 0
⊢ ∏ d ∈ n.divisors, f (n / d) = n.divisors.prod f

case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
⊢ ∏ d ∈ n.divisors, f (n / d) = n.divisors.prod f

tactic: rw [← prod_image]
state_before: case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
⊢ ∏ d ∈ n.divisors, f (n / d) = n.divisors.prod f
state_after: case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
⊢ ∏ x ∈ image (HDiv.hDiv n) n.divisors, f x = n.divisors.prod f

case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
⊢ ∀ x ∈ n.divisors, ∀ y ∈ n.divisors, n / x = n / y → x = y

tactic: simp [hn]
state_before: case pos
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : n = 0
⊢ ∏ d ∈ n.divisors, f (n / d) = n.divisors.prod f
state_after: no goals

tactic: exact prod_congr (image_div_divisors_eq_divisors n) (by simp)
state_before: case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
⊢ ∏ x ∈ image (HDiv.hDiv n) n.divisors, f x = n.divisors.prod f
state_after: no goals

tactic: simp
state_before: n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
⊢ ∀ x ∈ n.divisors, f x = f x
state_after: no goals

tactic: intro x hx y hy h
state_before: case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
⊢ ∀ x ∈ n.divisors, ∀ y ∈ n.divisors, n / x = n / y → x = y
state_after: case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
x : ℕ
hx : x ∈ n.divisors
y : ℕ
hy : y ∈ n.divisors
h : n / x = n / y
⊢ x = y

tactic: rw [mem_divisors] at hx hy
state_before: case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
x : ℕ
hx : x ∈ n.divisors
y : ℕ
hy : y ∈ n.divisors
h : n / x = n / y
⊢ x = y
state_after: case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
x : ℕ
hx : x ∣ n ∧ n ≠ 0
y : ℕ
hy : y ∣ n ∧ n ≠ 0
h : n / x = n / y
⊢ x = y

tactic: exact (div_eq_iff_eq_of_dvd_dvd hn hx.1 hy.1).mp h
state_before: case neg
n✝ : ℕ
α : Type u_1
inst✝ : CommMonoid α
n : ℕ
f : ℕ → α
hn : ¬n = 0
x : ℕ
hx : x ∣ n ∧ n ≠ 0
y : ℕ
hy : y ∣ n ∧ n ≠ 0
h : n / x = n / y
⊢ x = y
state_after: no goals
Theorem: PrimeSpectrum.primeSpectrumProd_symm_inl_asIdeal
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: cases x
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
x : PrimeSpectrum R
⊢ ((primeSpectrumProd R S).symm (Sum.inl x)).asIdeal = x.asIdeal.prod ⊤
state_after: case mk
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
asIdeal✝ : Ideal R
isPrime✝ : asIdeal✝.IsPrime
⊢ ((primeSpectrumProd R S).symm (Sum.inl { asIdeal := asIdeal✝, isPrime := isPrime✝ })).asIdeal =
    { asIdeal := asIdeal✝, isPrime := isPrime✝ }.asIdeal.prod ⊤

tactic: rfl
state_before: case mk
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
asIdeal✝ : Ideal R
isPrime✝ : asIdeal✝.IsPrime
⊢ ((primeSpectrumProd R S).symm (Sum.inl { asIdeal := asIdeal✝, isPrime := isPrime✝ })).asIdeal =
    { asIdeal := asIdeal✝, isPrime := isPrime✝ }.asIdeal.prod ⊤
state_after: no goals
Theorem: IsSemisimpleModule.eq_bot_or_exists_simple_le
File: Mathlib/RingTheory/SimpleModule.lean

tactic: simpa only [isSimpleModule_iff_isAtom, and_comm] using eq_bot_or_exists_atom_le _
state_before: ι : Type u_1
R : Type u_2
S : Type u_3
inst✝⁶ : Ring R
inst✝⁵ : Ring S
M : Type u_4
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
m : Submodule R M
N✝ : Type u_5
inst✝² : AddCommGroup N✝
inst✝¹ : Module R N✝
inst✝ : IsSemisimpleModule R M
N : Submodule R M
⊢ N = ⊥ ∨ ∃ m ≤ N, IsSimpleModule R ↥m
state_after: no goals
Theorem: Polynomial.le_natDegree_of_coe_le_degree
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rwa [degree_eq_natDegree <| ne_zero_of_coe_le_degree hdeg] at hdeg
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
hdeg : ↑n ≤ p.degree
⊢ ↑n ≤ ↑p.natDegree
state_after: no goals
Theorem: Set.biUnion_diff_biUnion_eq
File: Mathlib/Data/Set/Pairwise/Lattice.lean

tactic: refine
  (biUnion_diff_biUnion_subset f s t).antisymm
    (iUnion₂_subset fun i hi a ha => (mem_diff _).2 ⟨mem_biUnion hi.1 ha, ?_⟩)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
s t : Set ι
f : ι → Set α
h : (s ∪ t).PairwiseDisjoint f
⊢ (⋃ i ∈ s, f i) \ ⋃ i ∈ t, f i = ⋃ i ∈ s \ t, f i
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
s t : Set ι
f : ι → Set α
h : (s ∪ t).PairwiseDisjoint f
i : ι
hi : i ∈ s \ t
a : α
ha : a ∈ f i
⊢ a ∉ ⋃ x ∈ t, f x

tactic: rw [mem_iUnion₂]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
s t : Set ι
f : ι → Set α
h : (s ∪ t).PairwiseDisjoint f
i : ι
hi : i ∈ s \ t
a : α
ha : a ∈ f i
⊢ a ∉ ⋃ x ∈ t, f x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
s t : Set ι
f : ι → Set α
h : (s ∪ t).PairwiseDisjoint f
i : ι
hi : i ∈ s \ t
a : α
ha : a ∈ f i
⊢ ¬∃ i, ∃ (_ : i ∈ t), a ∈ f i

tactic: rintro ⟨j, hj, haj⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
s t : Set ι
f : ι → Set α
h : (s ∪ t).PairwiseDisjoint f
i : ι
hi : i ∈ s \ t
a : α
ha : a ∈ f i
⊢ ¬∃ i, ∃ (_ : i ∈ t), a ∈ f i
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
s t : Set ι
f : ι → Set α
h : (s ∪ t).PairwiseDisjoint f
i : ι
hi : i ∈ s \ t
a : α
ha : a ∈ f i
j : ι
hj : j ∈ t
haj : a ∈ f j
⊢ False

tactic: exact (h (Or.inl hi.1) (Or.inr hj) (ne_of_mem_of_not_mem hj hi.2).symm).le_bot ⟨ha, haj⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
s t : Set ι
f : ι → Set α
h : (s ∪ t).PairwiseDisjoint f
i : ι
hi : i ∈ s \ t
a : α
ha : a ∈ f i
j : ι
hj : j ∈ t
haj : a ∈ f j
⊢ False
state_after: no goals
Theorem: Polynomial.eval_intCast_map
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: induction p using Polynomial.induction_on' with
| h_add p q hp hq =>
  simp only [hp, hq, Polynomial.map_add, RingHom.map_add, eval_add]
| h_monomial n r =>
  simp only [map_intCast, eval_monomial, map_monomial, map_pow, map_mul]
state_before: R✝ : Type u
S✝ : Type v
T : Type w
ι : Type y
a b : R✝
m n : ℕ
inst✝³ : Semiring R✝
p✝ q r : R✝[X]
inst✝² : Semiring S✝
f✝ : R✝ →+* S✝
R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : Ring S
f : R →+* S
p : R[X]
i : ℤ
⊢ eval (↑i) (map f p) = f (eval (↑i) p)
state_after: no goals

tactic: simp only [hp, hq, Polynomial.map_add, RingHom.map_add, eval_add]
state_before: case h_add
R✝ : Type u
S✝ : Type v
T : Type w
ι : Type y
a b : R✝
m n : ℕ
inst✝³ : Semiring R✝
p✝ q✝ r : R✝[X]
inst✝² : Semiring S✝
f✝ : R✝ →+* S✝
R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : Ring S
f : R →+* S
i : ℤ
p q : R[X]
hp : eval (↑i) (map f p) = f (eval (↑i) p)
hq : eval (↑i) (map f q) = f (eval (↑i) q)
⊢ eval (↑i) (map f (p + q)) = f (eval (↑i) (p + q))
state_after: no goals

tactic: simp only [map_intCast, eval_monomial, map_monomial, map_pow, map_mul]
state_before: case h_monomial
R✝ : Type u
S✝ : Type v
T : Type w
ι : Type y
a b : R✝
m n✝ : ℕ
inst✝³ : Semiring R✝
p q r✝ : R✝[X]
inst✝² : Semiring S✝
f✝ : R✝ →+* S✝
R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : Ring S
f : R →+* S
i : ℤ
n : ℕ
r : R
⊢ eval (↑i) (map f ((monomial n) r)) = f (eval (↑i) ((monomial n) r))
state_after: no goals
Theorem: SetTheory.PGame.sub_zero
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [neg_zero]
state_before: xl xr : Type u
x : PGame
⊢ x + -0 = x + 0
state_after: no goals