1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: DivisorChain.first_of_chain_isUnit
File: Mathlib/RingTheory/ChainOfDivisors.lean

tactic: obtain ⟨i, hr⟩ := h₂.mp Associates.one_le
state_before: M : Type u_1
inst✝ : CancelCommMonoidWithZero M
q : Associates M
n : ℕ
c : Fin (n + 1) → Associates M
h₁ : StrictMono c
h₂ : ∀ {r : Associates M}, r ≤ q ↔ ∃ i, r = c i
⊢ IsUnit (c 0)
state_after: case intro
M : Type u_1
inst✝ : CancelCommMonoidWithZero M
q : Associates M
n : ℕ
c : Fin (n + 1) → Associates M
h₁ : StrictMono c
h₂ : ∀ {r : Associates M}, r ≤ q ↔ ∃ i, r = c i
i : Fin (n + 1)
hr : 1 = c i
⊢ IsUnit (c 0)

tactic: rw [Associates.isUnit_iff_eq_one, ← Associates.le_one_iff, hr]
state_before: case intro
M : Type u_1
inst✝ : CancelCommMonoidWithZero M
q : Associates M
n : ℕ
c : Fin (n + 1) → Associates M
h₁ : StrictMono c
h₂ : ∀ {r : Associates M}, r ≤ q ↔ ∃ i, r = c i
i : Fin (n + 1)
hr : 1 = c i
⊢ IsUnit (c 0)
state_after: case intro
M : Type u_1
inst✝ : CancelCommMonoidWithZero M
q : Associates M
n : ℕ
c : Fin (n + 1) → Associates M
h₁ : StrictMono c
h₂ : ∀ {r : Associates M}, r ≤ q ↔ ∃ i, r = c i
i : Fin (n + 1)
hr : 1 = c i
⊢ c 0 ≤ c i

tactic: exact h₁.monotone (Fin.zero_le i)
state_before: case intro
M : Type u_1
inst✝ : CancelCommMonoidWithZero M
q : Associates M
n : ℕ
c : Fin (n + 1) → Associates M
h₁ : StrictMono c
h₂ : ∀ {r : Associates M}, r ≤ q ↔ ∃ i, r = c i
i : Fin (n + 1)
hr : 1 = c i
⊢ c 0 ≤ c i
state_after: no goals
Theorem: div_self_mul_self
File: Mathlib/Algebra/GroupWithZero/Basic.lean

tactic: rw [div_eq_mul_inv, mul_inv_mul_self a]
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✝ : GroupWithZero G₀
a✝ b c a : G₀
⊢ a / a * a = a
state_after: no goals
Theorem: sup_div_inf_eq_mabs_div
File: Mathlib/Algebra/Order/Group/Abs.lean

tactic: simp_rw [sup_div, div_inf, div_self', sup_comm, sup_sup_sup_comm, sup_idem]
state_before: α : Type u_1
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a✝ b✝ a b : α
⊢ (a ⊔ b) / (a ⊓ b) = mabs (b / a)
state_after: α : Type u_1
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a✝ b✝ a b : α
⊢ a / b ⊔ b / a ⊔ 1 = mabs (b / a)

tactic: rw [← inv_div, sup_comm (b := _ / _), ← mabs, sup_eq_left]
state_before: α : Type u_1
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a✝ b✝ a b : α
⊢ a / b ⊔ b / a ⊔ 1 = mabs (b / a)
state_after: α : Type u_1
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a✝ b✝ a b : α
⊢ 1 ≤ mabs (b / a)

tactic: exact one_le_mabs _
state_before: α : Type u_1
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a✝ b✝ a b : α
⊢ 1 ≤ mabs (b / a)
state_after: no goals
Theorem: MeasureTheory.IsFundamentalDomain.measure_set_eq
File: Mathlib/MeasureTheory/Group/FundamentalDomain.lean

tactic: simpa [Measure.restrict_apply hA₀, lintegral_indicator _ hA₀] using this
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝¹⁰ : Group G
inst✝⁹ : Group H
inst✝⁸ : MulAction G α
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MulAction H β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : NormedAddCommGroup E
s t : Set α
μ : Measure α
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSMul G α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : Countable G
ν : Measure α
hs : IsFundamentalDomain G s μ
ht : IsFundamentalDomain G t μ
A : Set α
hA₀ : MeasurableSet A
hA : ∀ (g : G), (fun x => g • x) ⁻¹' A = A
this : ∫⁻ (x : α) in s, A.indicator 1 x ∂μ = ∫⁻ (x : α) in t, A.indicator 1 x ∂μ
⊢ μ (A ∩ s) = μ (A ∩ t)
state_after: no goals

tactic: refine hs.setLIntegral_eq ht (Set.indicator A fun _ => 1) fun g x ↦ ?_
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝¹⁰ : Group G
inst✝⁹ : Group H
inst✝⁸ : MulAction G α
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MulAction H β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : NormedAddCommGroup E
s t : Set α
μ : Measure α
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSMul G α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : Countable G
ν : Measure α
hs : IsFundamentalDomain G s μ
ht : IsFundamentalDomain G t μ
A : Set α
hA₀ : MeasurableSet A
hA : ∀ (g : G), (fun x => g • x) ⁻¹' A = A
⊢ ∫⁻ (x : α) in s, A.indicator 1 x ∂μ = ∫⁻ (x : α) in t, A.indicator 1 x ∂μ
state_after: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝¹⁰ : Group G
inst✝⁹ : Group H
inst✝⁸ : MulAction G α
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MulAction H β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : NormedAddCommGroup E
s t : Set α
μ : Measure α
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSMul G α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : Countable G
ν : Measure α
hs : IsFundamentalDomain G s μ
ht : IsFundamentalDomain G t μ
A : Set α
hA₀ : MeasurableSet A
hA : ∀ (g : G), (fun x => g • x) ⁻¹' A = A
g : G
x : α
⊢ A.indicator (fun x => 1) (g • x) = A.indicator (fun x => 1) x

tactic: rw [hA g]
state_before: case h.e'_3.h.e'_4
G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝¹⁰ : Group G
inst✝⁹ : Group H
inst✝⁸ : MulAction G α
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MulAction H β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : NormedAddCommGroup E
s t : Set α
μ : Measure α
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSMul G α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : Countable G
ν : Measure α
hs : IsFundamentalDomain G s μ
ht : IsFundamentalDomain G t μ
A : Set α
hA₀ : MeasurableSet A
hA : ∀ (g : G), (fun x => g • x) ⁻¹' A = A
g : G
x : α
⊢ A = (fun x => g • x) ⁻¹' A
state_after: no goals
Theorem: Zspan.fundamentalDomain_pi_basisFun
File: Mathlib/Algebra/Module/Zlattice/Basic.lean

tactic: ext
state_before: E : Type u_1
ι : Type u_2
K : Type u_3
inst✝³ : NormedLinearOrderedField K
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace K E
b : Basis ι K E
inst✝ : Fintype ι
⊢ fundamentalDomain (Pi.basisFun ℝ ι) = Set.univ.pi fun x => Set.Ico 0 1
state_after: case h
E : Type u_1
ι : Type u_2
K : Type u_3
inst✝³ : NormedLinearOrderedField K
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace K E
b : Basis ι K E
inst✝ : Fintype ι
x✝ : ι → ℝ
⊢ x✝ ∈ fundamentalDomain (Pi.basisFun ℝ ι) ↔ x✝ ∈ Set.univ.pi fun x => Set.Ico 0 1

tactic: simp
state_before: case h
E : Type u_1
ι : Type u_2
K : Type u_3
inst✝³ : NormedLinearOrderedField K
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace K E
b : Basis ι K E
inst✝ : Fintype ι
x✝ : ι → ℝ
⊢ x✝ ∈ fundamentalDomain (Pi.basisFun ℝ ι) ↔ x✝ ∈ Set.univ.pi fun x => Set.Ico 0 1
state_after: no goals
Theorem: slope_neg_fun
File: Mathlib/LinearAlgebra/AffineSpace/Slope.lean

tactic: ext x y
state_before: k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → E
⊢ slope (-f) = -slope f
state_after: case h.h
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → E
x y : k
⊢ slope (-f) x y = (-slope f) x y

tactic: exact slope_neg f x y
state_before: case h.h
k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → E
x y : k
⊢ slope (-f) x y = (-slope f) x y
state_after: no goals
Theorem: Dilation.ratio_ne_zero
File: Mathlib/Topology/MetricSpace/Dilation.lean

tactic: rw [ratio]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
F : Type u_4
G : Type u_5
inst✝³ : PseudoEMetricSpace α
inst✝² : PseudoEMetricSpace β
inst✝¹ : FunLike F α β
inst✝ : DilationClass F α β
f : F
⊢ ratio f ≠ 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
F : Type u_4
G : Type u_5
inst✝³ : PseudoEMetricSpace α
inst✝² : PseudoEMetricSpace β
inst✝¹ : FunLike F α β
inst✝ : DilationClass F α β
f : F
⊢ (if ∀ (x y : α), edist x y = 0 ∨ edist x y = ⊤ then 1 else ⋯.choose) ≠ 0

tactic: split_ifs
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
F : Type u_4
G : Type u_5
inst✝³ : PseudoEMetricSpace α
inst✝² : PseudoEMetricSpace β
inst✝¹ : FunLike F α β
inst✝ : DilationClass F α β
f : F
⊢ (if ∀ (x y : α), edist x y = 0 ∨ edist x y = ⊤ then 1 else ⋯.choose) ≠ 0
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
F : Type u_4
G : Type u_5
inst✝³ : PseudoEMetricSpace α
inst✝² : PseudoEMetricSpace β
inst✝¹ : FunLike F α β
inst✝ : DilationClass F α β
f : F
h✝ : ∀ (x y : α), edist x y = 0 ∨ edist x y = ⊤
⊢ 1 ≠ 0

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
F : Type u_4
G : Type u_5
inst✝³ : PseudoEMetricSpace α
inst✝² : PseudoEMetricSpace β
inst✝¹ : FunLike F α β
inst✝ : DilationClass F α β
f : F
h✝ : ¬∀ (x y : α), edist x y = 0 ∨ edist x y = ⊤
⊢ ⋯.choose ≠ 0

tactic: exact (DilationClass.edist_eq' f).choose_spec.1
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
F : Type u_4
G : Type u_5
inst✝³ : PseudoEMetricSpace α
inst✝² : PseudoEMetricSpace β
inst✝¹ : FunLike F α β
inst✝ : DilationClass F α β
f : F
h✝ : ¬∀ (x y : α), edist x y = 0 ∨ edist x y = ⊤
⊢ ⋯.choose ≠ 0
state_after: no goals

tactic: exact one_ne_zero
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
F : Type u_4
G : Type u_5
inst✝³ : PseudoEMetricSpace α
inst✝² : PseudoEMetricSpace β
inst✝¹ : FunLike F α β
inst✝ : DilationClass F α β
f : F
h✝ : ∀ (x y : α), edist x y = 0 ∨ edist x y = ⊤
⊢ 1 ≠ 0
state_after: no goals
Theorem: Finsupp.mapRange_zero
File: Mathlib/Data/Finsupp/Defs.lean

tactic: simp only [hf, zero_apply, mapRange_apply]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝² : Zero M
inst✝¹ : Zero N
inst✝ : Zero P
f : M → N
hf : f 0 = 0
x✝ : α
⊢ (mapRange f hf 0) x✝ = 0 x✝
state_after: no goals
Theorem: Equiv.Perm.SameCycle.exists_pow_eq''
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: obtain ⟨_ | i, hi, rfl⟩ := h.exists_pow_eq'
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x y z : α
inst✝ : Finite α
h : f.SameCycle x y
⊢ ∃ i, 0 < i ∧ i ≤ orderOf f ∧ (f ^ i) x = y
state_after: case intro.zero.intro
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x z : α
inst✝ : Finite α
hi : 0 < orderOf f
h : f.SameCycle x ((f ^ 0) x)
⊢ ∃ i, 0 < i ∧ i ≤ orderOf f ∧ (f ^ i) x = (f ^ 0) x

case intro.succ.intro
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x z : α
inst✝ : Finite α
i : ℕ
hi : i + 1 < orderOf f
h : f.SameCycle x ((f ^ (i + 1)) x)
⊢ ∃ i_1, 0 < i_1 ∧ i_1 ≤ orderOf f ∧ (f ^ i_1) x = (f ^ (i + 1)) x

tactic: refine ⟨orderOf f, orderOf_pos f, le_rfl, ?_⟩
state_before: case intro.zero.intro
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x z : α
inst✝ : Finite α
hi : 0 < orderOf f
h : f.SameCycle x ((f ^ 0) x)
⊢ ∃ i, 0 < i ∧ i ≤ orderOf f ∧ (f ^ i) x = (f ^ 0) x
state_after: case intro.zero.intro
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x z : α
inst✝ : Finite α
hi : 0 < orderOf f
h : f.SameCycle x ((f ^ 0) x)
⊢ (f ^ orderOf f) x = (f ^ 0) x

tactic: rw [pow_orderOf_eq_one, pow_zero]
state_before: case intro.zero.intro
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x z : α
inst✝ : Finite α
hi : 0 < orderOf f
h : f.SameCycle x ((f ^ 0) x)
⊢ (f ^ orderOf f) x = (f ^ 0) x
state_after: no goals

tactic: exact ⟨i.succ, i.zero_lt_succ, hi.le, by rfl⟩
state_before: case intro.succ.intro
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x z : α
inst✝ : Finite α
i : ℕ
hi : i + 1 < orderOf f
h : f.SameCycle x ((f ^ (i + 1)) x)
⊢ ∃ i_1, 0 < i_1 ∧ i_1 ≤ orderOf f ∧ (f ^ i_1) x = (f ^ (i + 1)) x
state_after: no goals

tactic: rfl
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x z : α
inst✝ : Finite α
i : ℕ
hi : i + 1 < orderOf f
h : f.SameCycle x ((f ^ (i + 1)) x)
⊢ (f ^ i.succ) x = (f ^ (i + 1)) x
state_after: no goals
Theorem: DFinsupp.neLocus_self_add_right
File: Mathlib/Data/DFinsupp/NeLocus.lean

tactic: rw [← neLocus_zero_left, ← @neLocus_add_left α N _ _ _ f 0 g, add_zero]
state_before: α : Type u_1
N : α → Type u_2
inst✝² : DecidableEq α
inst✝¹ : (a : α) → DecidableEq (N a)
inst✝ : (a : α) → AddGroup (N a)
f f₁ f₂ g g₁ g₂ : Π₀ (a : α), N a
⊢ f.neLocus (f + g) = g.support
state_after: no goals
Theorem: ONote.NF.of_dvd_omega
File: Mathlib/SetTheory/Ordinal/Notation.lean

tactic: (rw [← opow_one ω, ← one_le_iff_ne_zero]; exact h.of_dvd_omega_opow)
state_before: e : ONote
n : ℕ+
a : ONote
h : (e.oadd n a).NF
⊢ ω ∣ (e.oadd n a).repr → e.repr ≠ 0 ∧ ω ∣ a.repr
state_after: no goals

tactic: rw [← opow_one ω, ← one_le_iff_ne_zero]
state_before: e : ONote
n : ℕ+
a : ONote
h : (e.oadd n a).NF
⊢ ω ∣ (e.oadd n a).repr → e.repr ≠ 0 ∧ ω ∣ a.repr
state_after: e : ONote
n : ℕ+
a : ONote
h : (e.oadd n a).NF
⊢ ω ^ 1 ∣ (e.oadd n a).repr → 1 ≤ e.repr ∧ ω ^ 1 ∣ a.repr

tactic: exact h.of_dvd_omega_opow
state_before: e : ONote
n : ℕ+
a : ONote
h : (e.oadd n a).NF
⊢ ω ^ 1 ∣ (e.oadd n a).repr → 1 ≤ e.repr ∧ ω ^ 1 ∣ a.repr
state_after: no goals
Theorem: ContinuousLinearMap.smul_compLpL
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: ext1 f
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
g : E → F
c✝ : ℝ≥0
𝕜 : Type u_5
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : Fact (1 ≤ p)
𝕜' : Type u_6
inst✝³ : NormedRing 𝕜'
inst✝² : Module 𝕜' F
inst✝¹ : BoundedSMul 𝕜' F
inst✝ : SMulCommClass 𝕜 𝕜' F
c : 𝕜'
L : E →L[𝕜] F
⊢ compLpL p μ (c • L) = c • compLpL p μ L
state_after: case h
α : 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
g : E → F
c✝ : ℝ≥0
𝕜 : Type u_5
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : Fact (1 ≤ p)
𝕜' : Type u_6
inst✝³ : NormedRing 𝕜'
inst✝² : Module 𝕜' F
inst✝¹ : BoundedSMul 𝕜' F
inst✝ : SMulCommClass 𝕜 𝕜' F
c : 𝕜'
L : E →L[𝕜] F
f : ↥(Lp E p μ)
⊢ (compLpL p μ (c • L)) f = (c • compLpL p μ L) f

tactic: exact smul_compLp c L f
state_before: case h
α : 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
g : E → F
c✝ : ℝ≥0
𝕜 : Type u_5
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : Fact (1 ≤ p)
𝕜' : Type u_6
inst✝³ : NormedRing 𝕜'
inst✝² : Module 𝕜' F
inst✝¹ : BoundedSMul 𝕜' F
inst✝ : SMulCommClass 𝕜 𝕜' F
c : 𝕜'
L : E →L[𝕜] F
f : ↥(Lp E p μ)
⊢ (compLpL p μ (c • L)) f = (c • compLpL p μ L) f
state_after: no goals
Theorem: Fin.tail_init_eq_init_tail
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: ext i
state_before: m n : ℕ
α : Fin (n + 1) → Type u
x : α (last n)
q✝ : (i : Fin (n + 1)) → α i
p : (i : Fin n) → α i.castSucc
i : Fin n
y : α i.castSucc
z : α (last n)
β : Type u_1
q : Fin (n + 2) → β
⊢ tail (init q) = init (tail q)
state_after: case h
m n : ℕ
α : Fin (n + 1) → Type u
x : α (last n)
q✝ : (i : Fin (n + 1)) → α i
p : (i : Fin n) → α i.castSucc
i✝ : Fin n
y : α i✝.castSucc
z : α (last n)
β : Type u_1
q : Fin (n + 2) → β
i : Fin n
⊢ tail (init q) i = init (tail q) i

tactic: simp [tail, init, castSucc_fin_succ]
state_before: case h
m n : ℕ
α : Fin (n + 1) → Type u
x : α (last n)
q✝ : (i : Fin (n + 1)) → α i
p : (i : Fin n) → α i.castSucc
i✝ : Fin n
y : α i✝.castSucc
z : α (last n)
β : Type u_1
q : Fin (n + 2) → β
i : Fin n
⊢ tail (init q) i = init (tail q) i
state_after: no goals
Theorem: AlgebraicGeometry.Spec_Γ_naturality
File: Mathlib/AlgebraicGeometry/Spec.lean

tactic: refine RingHom.ext fun x => Subtype.ext <| funext fun x' => ?_
state_before: R S : CommRingCat
f : R ⟶ S
⊢ f ≫ toSpecΓ S = toSpecΓ R ≫ Γ.map (Spec.toLocallyRingedSpace.map f.op).op
state_after: R S : CommRingCat
f : R ⟶ S
x : ↑R
x' : ↥{ unop := ⊤ }.unop
⊢ ↑((f ≫ toSpecΓ S) x) x' = ↑((toSpecΓ R ≫ Γ.map (Spec.toLocallyRingedSpace.map f.op).op) x) x'

tactic: symm
state_before: R S : CommRingCat
f : R ⟶ S
x : ↑R
x' : ↥{ unop := ⊤ }.unop
⊢ ↑((f ≫ toSpecΓ S) x) x' = ↑((toSpecΓ R ≫ Γ.map (Spec.toLocallyRingedSpace.map f.op).op) x) x'
state_after: R S : CommRingCat
f : R ⟶ S
x : ↑R
x' : ↥{ unop := ⊤ }.unop
⊢ ↑((toSpecΓ R ≫ Γ.map (Spec.toLocallyRingedSpace.map f.op).op) x) x' = ↑((f ≫ toSpecΓ S) x) x'

tactic: apply Localization.localRingHom_to_map
state_before: R S : CommRingCat
f : R ⟶ S
x : ↑R
x' : ↥{ unop := ⊤ }.unop
⊢ ↑((toSpecΓ R ≫ Γ.map (Spec.toLocallyRingedSpace.map f.op).op) x) x' = ↑((f ≫ toSpecΓ S) x) x'
state_after: no goals
Theorem: IsNilpotent.map
File: Mathlib/RingTheory/Nilpotent/Defs.lean

tactic: use hr.choose
state_before: R : Type u_1
S : Type u_2
x y : R
inst✝³ : MonoidWithZero R
inst✝² : MonoidWithZero S
r : R
F : Type u_3
inst✝¹ : FunLike F R S
inst✝ : MonoidWithZeroHomClass F R S
hr : IsNilpotent r
f : F
⊢ IsNilpotent (f r)
state_after: case h
R : Type u_1
S : Type u_2
x y : R
inst✝³ : MonoidWithZero R
inst✝² : MonoidWithZero S
r : R
F : Type u_3
inst✝¹ : FunLike F R S
inst✝ : MonoidWithZeroHomClass F R S
hr : IsNilpotent r
f : F
⊢ f r ^ Exists.choose hr = 0

tactic: rw [← map_pow, hr.choose_spec, map_zero]
state_before: case h
R : Type u_1
S : Type u_2
x y : R
inst✝³ : MonoidWithZero R
inst✝² : MonoidWithZero S
r : R
F : Type u_3
inst✝¹ : FunLike F R S
inst✝ : MonoidWithZeroHomClass F R S
hr : IsNilpotent r
f : F
⊢ f r ^ Exists.choose hr = 0
state_after: no goals
Theorem: Multiset.disjoint_sum_left
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [quot_mk_to_coe, Multiset.sum_coe]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a✝ : α
f g : α → β
a : Multiset α
i : Multiset (Multiset α)
l : List (Multiset α)
⊢ (sum ⟦l⟧).Disjoint a ↔ ∀ b ∈ ⟦l⟧, b.Disjoint a
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a✝ : α
f g : α → β
a : Multiset α
i : Multiset (Multiset α)
l : List (Multiset α)
⊢ l.sum.Disjoint a ↔ ∀ b ∈ ↑l, b.Disjoint a

tactic: exact disjoint_list_sum_left
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a✝ : α
f g : α → β
a : Multiset α
i : Multiset (Multiset α)
l : List (Multiset α)
⊢ l.sum.Disjoint a ↔ ∀ b ∈ ↑l, b.Disjoint a
state_after: no goals
Theorem: Set.projIcc_of_right_le
File: Mathlib/Order/Interval/Set/ProjIcc.lean

tactic: simp [projIcc, hx, h]
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a b : α
h : a ≤ b
x : α
hx : b ≤ x
⊢ projIcc a b h x = ⟨b, ⋯⟩
state_after: no goals
Theorem: List.Ico.eq_empty_iff
File: Mathlib/Data/List/Intervals.lean

tactic: rw [← length, h, List.length]
state_before: n m : ℕ
h : Ico n m = []
⊢ m - n = 0
state_after: no goals
Theorem: EqualCharZero.to_not_mixedCharZero
File: Mathlib/Algebra/CharP/MixedCharZero.lean

tactic: intro p p_pos
state_before: R : Type u_1
inst✝ : CommRing R
h : ∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I)
⊢ ∀ p > 0, ¬MixedCharZero R p
state_after: R : Type u_1
inst✝ : CommRing R
h : ∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I)
p : ℕ
p_pos : p > 0
⊢ ¬MixedCharZero R p

tactic: by_contra hp_mixedChar
state_before: R : Type u_1
inst✝ : CommRing R
h : ∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I)
p : ℕ
p_pos : p > 0
⊢ ¬MixedCharZero R p
state_after: R : Type u_1
inst✝ : CommRing R
h : ∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I)
p : ℕ
p_pos : p > 0
hp_mixedChar : MixedCharZero R p
⊢ False

tactic: rcases hp_mixedChar.charP_quotient with ⟨I, hI_ne_top, hI_p⟩
state_before: R : Type u_1
inst✝ : CommRing R
h : ∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I)
p : ℕ
p_pos : p > 0
hp_mixedChar : MixedCharZero R p
⊢ False
state_after: case intro.intro
R : Type u_1
inst✝ : CommRing R
h : ∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I)
p : ℕ
p_pos : p > 0
hp_mixedChar : MixedCharZero R p
I : Ideal R
hI_ne_top : I ≠ ⊤
hI_p : CharP (R ⧸ I) p
⊢ False

tactic: replace hI_zero : CharP (R ⧸ I) 0 := @CharP.ofCharZero _ _ (h I hI_ne_top)
state_before: case intro.intro
R : Type u_1
inst✝ : CommRing R
h : ∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I)
p : ℕ
p_pos : p > 0
hp_mixedChar : MixedCharZero R p
I : Ideal R
hI_ne_top : I ≠ ⊤
hI_p : CharP (R ⧸ I) p
⊢ False
state_after: case intro.intro
R : Type u_1
inst✝ : CommRing R
h : ∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I)
p : ℕ
p_pos : p > 0
hp_mixedChar : MixedCharZero R p
I : Ideal R
hI_ne_top : I ≠ ⊤
hI_p : CharP (R ⧸ I) p
hI_zero : CharP (R ⧸ I) 0
⊢ False

tactic: exact absurd (CharP.eq (R ⧸ I) hI_p hI_zero) (ne_of_gt p_pos)
state_before: case intro.intro
R : Type u_1
inst✝ : CommRing R
h : ∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I)
p : ℕ
p_pos : p > 0
hp_mixedChar : MixedCharZero R p
I : Ideal R
hI_ne_top : I ≠ ⊤
hI_p : CharP (R ⧸ I) p
hI_zero : CharP (R ⧸ I) 0
⊢ False
state_after: no goals
Theorem: Rat.divInt_ofNat
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

tactic: simp [divInt, normalize_eq_mkRat]
state_before: num : Int
den : Nat
⊢ num /. ↑den = mkRat num den
state_after: no goals
Theorem: NormedSpace.exp_eq_exp
File: Mathlib/Analysis/NormedSpace/Exponential.lean

tactic: ext x
state_before: 𝕂 : Type u_1
𝕂' : Type u_2
𝔸 : Type u_3
inst✝⁶ : Field 𝕂
inst✝⁵ : Field 𝕂'
inst✝⁴ : Ring 𝔸
inst✝³ : Algebra 𝕂 𝔸
inst✝² : Algebra 𝕂' 𝔸
inst✝¹ : TopologicalSpace 𝔸
inst✝ : TopologicalRing 𝔸
⊢ exp 𝕂 = exp 𝕂'
state_after: case h
𝕂 : Type u_1
𝕂' : Type u_2
𝔸 : Type u_3
inst✝⁶ : Field 𝕂
inst✝⁵ : Field 𝕂'
inst✝⁴ : Ring 𝔸
inst✝³ : Algebra 𝕂 𝔸
inst✝² : Algebra 𝕂' 𝔸
inst✝¹ : TopologicalSpace 𝔸
inst✝ : TopologicalRing 𝔸
x : 𝔸
⊢ exp 𝕂 x = exp 𝕂' x

tactic: rw [exp, exp]
state_before: case h
𝕂 : Type u_1
𝕂' : Type u_2
𝔸 : Type u_3
inst✝⁶ : Field 𝕂
inst✝⁵ : Field 𝕂'
inst✝⁴ : Ring 𝔸
inst✝³ : Algebra 𝕂 𝔸
inst✝² : Algebra 𝕂' 𝔸
inst✝¹ : TopologicalSpace 𝔸
inst✝ : TopologicalRing 𝔸
x : 𝔸
⊢ exp 𝕂 x = exp 𝕂' x
state_after: case h
𝕂 : Type u_1
𝕂' : Type u_2
𝔸 : Type u_3
inst✝⁶ : Field 𝕂
inst✝⁵ : Field 𝕂'
inst✝⁴ : Ring 𝔸
inst✝³ : Algebra 𝕂 𝔸
inst✝² : Algebra 𝕂' 𝔸
inst✝¹ : TopologicalSpace 𝔸
inst✝ : TopologicalRing 𝔸
x : 𝔸
⊢ (expSeries 𝕂 𝔸).sum x = (expSeries 𝕂' 𝔸).sum x

tactic: refine tsum_congr fun n => ?_
state_before: case h
𝕂 : Type u_1
𝕂' : Type u_2
𝔸 : Type u_3
inst✝⁶ : Field 𝕂
inst✝⁵ : Field 𝕂'
inst✝⁴ : Ring 𝔸
inst✝³ : Algebra 𝕂 𝔸
inst✝² : Algebra 𝕂' 𝔸
inst✝¹ : TopologicalSpace 𝔸
inst✝ : TopologicalRing 𝔸
x : 𝔸
⊢ (expSeries 𝕂 𝔸).sum x = (expSeries 𝕂' 𝔸).sum x
state_after: case h
𝕂 : Type u_1
𝕂' : Type u_2
𝔸 : Type u_3
inst✝⁶ : Field 𝕂
inst✝⁵ : Field 𝕂'
inst✝⁴ : Ring 𝔸
inst✝³ : Algebra 𝕂 𝔸
inst✝² : Algebra 𝕂' 𝔸
inst✝¹ : TopologicalSpace 𝔸
inst✝ : TopologicalRing 𝔸
x : 𝔸
n : ℕ
⊢ ((expSeries 𝕂 𝔸 n) fun x_1 => x) = (expSeries 𝕂' 𝔸 n) fun x_1 => x

tactic: rw [expSeries_eq_expSeries 𝕂 𝕂' 𝔸 n x]
state_before: case h
𝕂 : Type u_1
𝕂' : Type u_2
𝔸 : Type u_3
inst✝⁶ : Field 𝕂
inst✝⁵ : Field 𝕂'
inst✝⁴ : Ring 𝔸
inst✝³ : Algebra 𝕂 𝔸
inst✝² : Algebra 𝕂' 𝔸
inst✝¹ : TopologicalSpace 𝔸
inst✝ : TopologicalRing 𝔸
x : 𝔸
n : ℕ
⊢ ((expSeries 𝕂 𝔸 n) fun x_1 => x) = (expSeries 𝕂' 𝔸 n) fun x_1 => x
state_after: no goals
Theorem: List.get_eq_get?
File: Mathlib/Data/List/Basic.lean

tactic: simp [getElem?_eq_getElem]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ l : List α
i : Fin l.length
⊢ (l.get? ↑i).isSome = true
state_after: no goals

tactic: simp [getElem_eq_iff]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ l : List α
i : Fin l.length
⊢ l.get i = (l.get? ↑i).get ⋯
state_after: no goals
Theorem: Polynomial.map_restriction
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: rw [coeff_map, Algebra.algebraMap_ofSubring_apply, coeff_restriction]
state_before: R✝ : Type u
S : Type u_1
inst✝¹ : Ring R✝
R : Type u
inst✝ : CommRing R
p : R[X]
n : ℕ
⊢ (map (algebraMap (↥(Subring.closure ↑p.coeffs)) R) p.restriction).coeff n = p.coeff n
state_after: no goals