1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: div_sub_same
File: Mathlib/Algebra/Field/Basic.lean

tactic: simpa only [← @div_self _ _ b h] using (div_sub_div_same a b b).symm
state_before: α : Type u_1
β : Type u_2
K : Type u_3
inst✝ : DivisionRing K
a✝ b✝ c d a b : K
h : b ≠ 0
⊢ (a - b) / b = a / b - 1
state_after: no goals
Theorem: intervalIntegral.integral_mul_const
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simpa only [mul_comm r] using integral_const_mul r f
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 : ℝ
f✝ g : ℝ → E
μ : Measure ℝ
𝕜 : Type u_6
inst✝ : RCLike 𝕜
r : 𝕜
f : ℝ → 𝕜
⊢ ∫ (x : ℝ) in a..b, f x * r ∂μ = (∫ (x : ℝ) in a..b, f x ∂μ) * r
state_after: no goals
Theorem: Sigma.le_def
File: Mathlib/Data/Sigma/Order.lean

tactic: constructor
state_before: ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → LE (α i)
a b : (i : ι) × α i
⊢ a ≤ b ↔ ∃ h, h ▸ a.snd ≤ b.snd
state_after: case mp
ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → LE (α i)
a b : (i : ι) × α i
⊢ a ≤ b → ∃ h, h ▸ a.snd ≤ b.snd

case mpr
ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → LE (α i)
a b : (i : ι) × α i
⊢ (∃ h, h ▸ a.snd ≤ b.snd) → a ≤ b

tactic: rintro ⟨i, a, b, h⟩
state_before: case mp
ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → LE (α i)
a b : (i : ι) × α i
⊢ a ≤ b → ∃ h, h ▸ a.snd ≤ b.snd
state_after: case mp.fiber
ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → LE (α i)
i : ι
a b : α i
h : a ≤ b
⊢ ∃ h, h ▸ ⟨i, a⟩.snd ≤ ⟨i, b⟩.snd

tactic: exact ⟨rfl, h⟩
state_before: case mp.fiber
ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → LE (α i)
i : ι
a b : α i
h : a ≤ b
⊢ ∃ h, h ▸ ⟨i, a⟩.snd ≤ ⟨i, b⟩.snd
state_after: no goals

tactic: obtain ⟨i, a⟩ := a
state_before: case mpr
ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → LE (α i)
a b : (i : ι) × α i
⊢ (∃ h, h ▸ a.snd ≤ b.snd) → a ≤ b
state_after: case mpr.mk
ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → LE (α i)
b : (i : ι) × α i
i : ι
a : α i
⊢ (∃ h, h ▸ ⟨i, a⟩.snd ≤ b.snd) → ⟨i, a⟩ ≤ b

tactic: obtain ⟨j, b⟩ := b
state_before: case mpr.mk
ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → LE (α i)
b : (i : ι) × α i
i : ι
a : α i
⊢ (∃ h, h ▸ ⟨i, a⟩.snd ≤ b.snd) → ⟨i, a⟩ ≤ b
state_after: case mpr.mk.mk
ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → LE (α i)
i : ι
a : α i
j : ι
b : α j
⊢ (∃ h, h ▸ ⟨i, a⟩.snd ≤ ⟨j, b⟩.snd) → ⟨i, a⟩ ≤ ⟨j, b⟩

tactic: rintro ⟨rfl : i = j, h⟩
state_before: case mpr.mk.mk
ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → LE (α i)
i : ι
a : α i
j : ι
b : α j
⊢ (∃ h, h ▸ ⟨i, a⟩.snd ≤ ⟨j, b⟩.snd) → ⟨i, a⟩ ≤ ⟨j, b⟩
state_after: case mpr.mk.mk.intro
ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → LE (α i)
i : ι
a b : α i
h : ⋯ ▸ ⟨i, a⟩.snd ≤ ⟨i, b⟩.snd
⊢ ⟨i, a⟩ ≤ ⟨i, b⟩

tactic: exact le.fiber _ _ _ h
state_before: case mpr.mk.mk.intro
ι : Type u_1
α : ι → Type u_2
inst✝ : (i : ι) → LE (α i)
i : ι
a b : α i
h : ⋯ ▸ ⟨i, a⟩.snd ≤ ⟨i, b⟩.snd
⊢ ⟨i, a⟩ ≤ ⟨i, b⟩
state_after: no goals
Theorem: Equiv.Perm.sameCycle_subtypePerm
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: simp [Subtype.ext_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x✝ y✝ z : α
h : ∀ (x : α), p x ↔ p (f x)
x y : { x // p x }
n : ℤ
⊢ (f.subtypePerm h ^ n) x = y ↔ (f ^ n) ↑x = ↑y
state_after: no goals
Theorem: map_mul_right_nhds_one₀
File: Mathlib/Topology/Algebra/GroupWithZero.lean

tactic: rw [map_mul_right_nhds₀ ha, one_mul]
state_before: α : Type u_1
β : Type u_2
G₀ : Type u_3
inst✝² : TopologicalSpace G₀
inst✝¹ : GroupWithZero G₀
inst✝ : ContinuousMul G₀
a : G₀
ha : a ≠ 0
⊢ map (fun x => x * a) (𝓝 1) = 𝓝 a
state_after: no goals
Theorem: MvPolynomial.vars_map
File: Mathlib/Algebra/MvPolynomial/Variables.lean

tactic: classical simp [vars_def, degrees_map]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
inst✝ : CommSemiring S
f : R →+* S
⊢ ((map f) p).vars ⊆ p.vars
state_after: no goals

tactic: simp [vars_def, degrees_map]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
inst✝ : CommSemiring S
f : R →+* S
⊢ ((map f) p).vars ⊆ p.vars
state_after: no goals
Theorem: MonoidAlgebra.mapDomainAlgHom_id
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: ext
state_before: k✝ : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁹ : CommSemiring k✝
inst✝⁸ : Monoid G
inst✝⁷ : Monoid H
A✝ : Type u₃
inst✝⁶ : Semiring A✝
inst✝⁵ : Algebra k✝ A✝
B : Type u_3
inst✝⁴ : Semiring B
inst✝³ : Algebra k✝ B
k : Type u_4
A : Type u_5
inst✝² : CommSemiring k
inst✝¹ : Semiring A
inst✝ : Algebra k A
⊢ mapDomainAlgHom k A (MonoidHom.id G) = AlgHom.id k (MonoidAlgebra A G)
state_after: case H
k✝ : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁹ : CommSemiring k✝
inst✝⁸ : Monoid G
inst✝⁷ : Monoid H
A✝ : Type u₃
inst✝⁶ : Semiring A✝
inst✝⁵ : Algebra k✝ A✝
B : Type u_3
inst✝⁴ : Semiring B
inst✝³ : Algebra k✝ B
k : Type u_4
A : Type u_5
inst✝² : CommSemiring k
inst✝¹ : Semiring A
inst✝ : Algebra k A
x✝ : MonoidAlgebra A G
⊢ (mapDomainAlgHom k A (MonoidHom.id G)) x✝ = (AlgHom.id k (MonoidAlgebra A G)) x✝

tactic: simp [MonoidHom.id, ← Function.id_def]
state_before: case H
k✝ : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁹ : CommSemiring k✝
inst✝⁸ : Monoid G
inst✝⁷ : Monoid H
A✝ : Type u₃
inst✝⁶ : Semiring A✝
inst✝⁵ : Algebra k✝ A✝
B : Type u_3
inst✝⁴ : Semiring B
inst✝³ : Algebra k✝ B
k : Type u_4
A : Type u_5
inst✝² : CommSemiring k
inst✝¹ : Semiring A
inst✝ : Algebra k A
x✝ : MonoidAlgebra A G
⊢ (mapDomainAlgHom k A (MonoidHom.id G)) x✝ = (AlgHom.id k (MonoidAlgebra A G)) x✝
state_after: no goals
Theorem: List.bagInter_sublist_left
File: Mathlib/Data/List/Lattice.lean

tactic: simp
state_before: α : Type u_1
l l₁ l₂✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
l₂ : List α
⊢ [].bagInter l₂ <+ []
state_after: no goals

tactic: by_cases h : b ∈ l₂ <;> simp only [h, cons_bagInter_of_pos, cons_bagInter_of_neg, not_false_iff]
state_before: α : Type u_1
l l₁✝ l₂✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
b : α
l₁ l₂ : List α
⊢ (b :: l₁).bagInter l₂ <+ b :: l₁
state_after: case pos
α : Type u_1
l l₁✝ l₂✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
b : α
l₁ l₂ : List α
h : b ∈ l₂
⊢ b :: l₁.bagInter (l₂.erase b) <+ b :: l₁

case neg
α : Type u_1
l l₁✝ l₂✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
b : α
l₁ l₂ : List α
h : ¬b ∈ l₂
⊢ l₁.bagInter l₂ <+ b :: l₁

tactic: exact (bagInter_sublist_left _ _).cons_cons _
state_before: case pos
α : Type u_1
l l₁✝ l₂✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
b : α
l₁ l₂ : List α
h : b ∈ l₂
⊢ b :: l₁.bagInter (l₂.erase b) <+ b :: l₁
state_after: no goals

tactic: apply sublist_cons_of_sublist
state_before: case neg
α : Type u_1
l l₁✝ l₂✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
b : α
l₁ l₂ : List α
h : ¬b ∈ l₂
⊢ l₁.bagInter l₂ <+ b :: l₁
state_after: case neg.h
α : Type u_1
l l₁✝ l₂✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
b : α
l₁ l₂ : List α
h : ¬b ∈ l₂
⊢ l₁.bagInter l₂ <+ l₁

tactic: apply bagInter_sublist_left
state_before: case neg.h
α : Type u_1
l l₁✝ l₂✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
b : α
l₁ l₂ : List α
h : ¬b ∈ l₂
⊢ l₁.bagInter l₂ <+ l₁
state_after: no goals
Theorem: Polynomial.smeval_assoc_X_pow
File: Mathlib/Algebra/Polynomial/Smeval.lean

tactic: induction p using Polynomial.induction_on' with
| h_add p q ph qh =>
  simp only [smeval_add, ph, qh, add_mul]
| h_monomial n a =>
  rw [smeval_monomial, smul_mul_assoc, smul_mul_assoc, npow_mul_assoc, ← smul_mul_assoc]
state_before: R : Type u_1
inst✝⁶ : Semiring R
p✝ : R[X]
r : R
p q : R[X]
S : Type u_2
inst✝⁵ : NonAssocSemiring S
inst✝⁴ : Module R S
inst✝³ : IsScalarTower R S S
inst✝² : SMulCommClass R S S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
x : S
m n : ℕ
⊢ p.smeval x * x ^ m * x ^ n = p.smeval x * (x ^ m * x ^ n)
state_after: no goals

tactic: simp only [smeval_add, ph, qh, add_mul]
state_before: case h_add
R : Type u_1
inst✝⁶ : Semiring R
p✝¹ : R[X]
r : R
p✝ q✝ : R[X]
S : Type u_2
inst✝⁵ : NonAssocSemiring S
inst✝⁴ : Module R S
inst✝³ : IsScalarTower R S S
inst✝² : SMulCommClass R S S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
x : S
m n : ℕ
p q : R[X]
ph : p.smeval x * x ^ m * x ^ n = p.smeval x * (x ^ m * x ^ n)
qh : q.smeval x * x ^ m * x ^ n = q.smeval x * (x ^ m * x ^ n)
⊢ (p + q).smeval x * x ^ m * x ^ n = (p + q).smeval x * (x ^ m * x ^ n)
state_after: no goals

tactic: rw [smeval_monomial, smul_mul_assoc, smul_mul_assoc, npow_mul_assoc, ← smul_mul_assoc]
state_before: case h_monomial
R : Type u_1
inst✝⁶ : Semiring R
p✝ : R[X]
r : R
p q : R[X]
S : Type u_2
inst✝⁵ : NonAssocSemiring S
inst✝⁴ : Module R S
inst✝³ : IsScalarTower R S S
inst✝² : SMulCommClass R S S
inst✝¹ : Pow S ℕ
inst✝ : NatPowAssoc S
x : S
m n✝ n : ℕ
a : R
⊢ ((monomial n) a).smeval x * x ^ m * x ^ n✝ = ((monomial n) a).smeval x * (x ^ m * x ^ n✝)
state_after: no goals
Theorem: List.drop_take_succ_join_eq_get'
File: Mathlib/Data/List/Join.lean

tactic: simp [drop_take_succ_join_eq_getElem']
state_before: α : Type u_1
β : Type u_2
L : List (List α)
i : Fin L.length
⊢ drop (Nat.sum (take (↑i) (map length L))) (take (Nat.sum (take (↑i + 1) (map length L))) L.join) = L.get i
state_after: no goals
Theorem: MeasurableSpace.DynkinSystem.generate_inter
File: Mathlib/MeasureTheory/PiSystem.lean

tactic: rwa [inter_comm]
state_before: α : Type u_1
d : DynkinSystem α
s : Set (Set α)
hs : IsPiSystem s
t₁ t₂ : Set α
ht₁ : (generate s).Has t₁
ht₂ : (generate s).Has t₂
s₁ : Set α
hs₁ : s₁ ∈ s
this✝¹ : (generate s).Has s₁
this✝ : generate s ≤ (generate s).restrictOn this✝¹
this : (generate s).Has (t₂ ∩ s₁)
⊢ (generate s).Has (s₁ ∩ t₂)
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.rightUnshift_zero
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

tactic: change (rightShiftAddEquiv K L n a n' hn').symm 0 = 0
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' : ℤ
hn' : n' + a = n
⊢ rightUnshift 0 n hn' = 0
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' : ℤ
hn' : n' + a = n
⊢ (rightShiftAddEquiv K L n a n' hn').symm 0 = 0

tactic: apply _root_.map_zero
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' : ℤ
hn' : n' + a = n
⊢ (rightShiftAddEquiv K L n a n' hn').symm 0 = 0
state_after: no goals
Theorem: IsOpen.inter_frontier_eq
File: Mathlib/Topology/Basic.lean

tactic: rw [hs.frontier_eq, inter_diff_self]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
hs : IsOpen s
⊢ s ∩ frontier s = ∅
state_after: no goals
Theorem: Complex.integral_boundary_rect_of_differentiableOn_real
File: Mathlib/Analysis/Complex/CauchyIntegral.lean

tactic: simpa only [← mem_interior_iff_mem_nhds, interior_reProdIm, uIcc, interior_Icc] using hx.1
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
z w : ℂ
Hd : DifferentiableOn ℝ f ([[z.re, w.re]] ×ℂ [[z.im, w.im]])
Hi : IntegrableOn (fun z => I • (fderiv ℝ f z) 1 - (fderiv ℝ f z) I) ([[z.re, w.re]] ×ℂ [[z.im, w.im]]) volume
x : ℂ
hx : x ∈ Ioo (min z.re w.re) (max z.re w.re) ×ℂ Ioo (min z.im w.im) (max z.im w.im) \ ∅
⊢ [[z.re, w.re]] ×ℂ [[z.im, w.im]] ∈ 𝓝 x
state_after: no goals
Theorem: Dilation.ratio_unique_of_dist_ne_zero
File: Mathlib/Topology/MetricSpace/Dilation.lean

tactic: rw [coe_nndist, hr, NNReal.coe_mul, coe_nndist]
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✝ α✝ β✝
α : Type u_7
β : Type u_8
F : Type u_6
inst✝³ : PseudoMetricSpace α
inst✝² : PseudoMetricSpace β
inst✝¹ : FunLike F α β
inst✝ : DilationClass F α β
f : F
x y : α
r : ℝ≥0
hxy : dist x y ≠ 0
hr : dist (f x) (f y) = ↑r * dist x y
⊢ ↑(nndist (f x) (f y)) = ↑(r * nndist x y)
state_after: no goals
Theorem: exists_vector_succ
File: Mathlib/Data/Vector3.lean

tactic: rw [cons_head_tail v]
state_before: α : Type u_1
m n : ℕ
f : Vector3 α n.succ → Prop
x✝ : Exists f
v : Vector3 α n.succ
fv : f v
⊢ f (?m.23363 x✝ v fv :: ?m.23364 x✝ v fv)
state_after: α : Type u_1
m n : ℕ
f : Vector3 α n.succ → Prop
x✝ : Exists f
v : Vector3 α n.succ
fv : f v
⊢ f v

tactic: exact fv
state_before: α : Type u_1
m n : ℕ
f : Vector3 α n.succ → Prop
x✝ : Exists f
v : Vector3 α n.succ
fv : f v
⊢ f v
state_after: no goals
Theorem: SimpleGraph.IsRegularOfDegree.compl
File: Mathlib/Combinatorics/SimpleGraph/Finite.lean

tactic: intro v
state_before: V : Type u_1
G✝ : SimpleGraph V
e : Sym2 V
inst✝³ : G✝.LocallyFinite
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
k : ℕ
h : G.IsRegularOfDegree k
⊢ Gᶜ.IsRegularOfDegree (Fintype.card V - 1 - k)
state_after: V : Type u_1
G✝ : SimpleGraph V
e : Sym2 V
inst✝³ : G✝.LocallyFinite
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
k : ℕ
h : G.IsRegularOfDegree k
v : V
⊢ Gᶜ.degree v = Fintype.card V - 1 - k

tactic: rw [degree_compl, h v]
state_before: V : Type u_1
G✝ : SimpleGraph V
e : Sym2 V
inst✝³ : G✝.LocallyFinite
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
k : ℕ
h : G.IsRegularOfDegree k
v : V
⊢ Gᶜ.degree v = Fintype.card V - 1 - k
state_after: no goals
Theorem: MeasureTheory.ComplexMeasure.integrable_rnDeriv
File: Mathlib/MeasureTheory/Decomposition/SignedLebesgue.lean

tactic: rw [← memℒp_one_iff_integrable, ← memℒp_re_im_iff]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
c✝ c : ComplexMeasure α
μ : Measure α
⊢ Integrable (c.rnDeriv μ) μ
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
c✝ c : ComplexMeasure α
μ : Measure α
⊢ Memℒp (fun x => RCLike.re (c.rnDeriv μ x)) 1 μ ∧ Memℒp (fun x => RCLike.im (c.rnDeriv μ x)) 1 μ

tactic: exact
  ⟨memℒp_one_iff_integrable.2 (SignedMeasure.integrable_rnDeriv _ _),
    memℒp_one_iff_integrable.2 (SignedMeasure.integrable_rnDeriv _ _)⟩
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
c✝ c : ComplexMeasure α
μ : Measure α
⊢ Memℒp (fun x => RCLike.re (c.rnDeriv μ x)) 1 μ ∧ Memℒp (fun x => RCLike.im (c.rnDeriv μ x)) 1 μ
state_after: no goals
Theorem: RatFunc.mk_eq_div
File: Mathlib/FieldTheory/RatFunc/Basic.lean

tactic: simp only [mk_eq_div', ofFractionRing_div, ofFractionRing_algebraMap]
state_before: K : Type u
inst✝¹ : CommRing K
inst✝ : IsDomain K
p q : K[X]
⊢ RatFunc.mk p q = (algebraMap K[X] (RatFunc K)) p / (algebraMap K[X] (RatFunc K)) q
state_after: no goals
Theorem: PNat.XgcdType.step_isSpecial
File: Mathlib/Data/PNat/Xgcd.lean

tactic: dsimp [IsSpecial, step] at hs ⊢
state_before: u : XgcdType
hs : u.IsSpecial
⊢ u.step.IsSpecial
state_after: u : XgcdType
hs : u.wp + u.zp + u.wp * u.zp = u.x * u.y
⊢ u.y * u.q + u.zp + u.wp + (u.y * u.q + u.zp) * u.wp = u.y * ((u.wp + 1) * u.q + u.x)

tactic: rw [mul_add, mul_comm u.y u.x, ← hs]
state_before: u : XgcdType
hs : u.wp + u.zp + u.wp * u.zp = u.x * u.y
⊢ u.y * u.q + u.zp + u.wp + (u.y * u.q + u.zp) * u.wp = u.y * ((u.wp + 1) * u.q + u.x)
state_after: u : XgcdType
hs : u.wp + u.zp + u.wp * u.zp = u.x * u.y
⊢ u.y * u.q + u.zp + u.wp + (u.y * u.q + u.zp) * u.wp = u.y * ((u.wp + 1) * u.q) + (u.wp + u.zp + u.wp * u.zp)

tactic: ring
state_before: u : XgcdType
hs : u.wp + u.zp + u.wp * u.zp = u.x * u.y
⊢ u.y * u.q + u.zp + u.wp + (u.y * u.q + u.zp) * u.wp = u.y * ((u.wp + 1) * u.q) + (u.wp + u.zp + u.wp * u.zp)
state_after: no goals
Theorem: Cardinal.nat_le_lift_iff
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [← lift_natCast.{v,u}, lift_le]
state_before: α β : Type u
n : ℕ
a : Cardinal.{u}
⊢ ↑n ≤ lift.{v, u} a ↔ ↑n ≤ a
state_after: no goals
Theorem: MvPolynomial.pderiv_X_of_ne
File: Mathlib/Algebra/MvPolynomial/PDeriv.lean

tactic: classical simp [h]
state_before: R : Type u
σ : Type v
a a' a₁ a₂ : R
s : σ →₀ ℕ
inst✝ : CommSemiring R
i j : σ
h : j ≠ i
⊢ (pderiv i) (X j) = 0
state_after: no goals

tactic: simp [h]
state_before: R : Type u
σ : Type v
a a' a₁ a₂ : R
s : σ →₀ ℕ
inst✝ : CommSemiring R
i j : σ
h : j ≠ i
⊢ (pderiv i) (X j) = 0
state_after: no goals
Theorem: ProbabilityTheory.kernel.prodMkLeft_zero
File: Mathlib/Probability/Kernel/Composition.lean

tactic: ext x s _
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
⊢ prodMkLeft α 0 = 0
state_after: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
x : α × β
s : Set γ
a✝ : MeasurableSet s
⊢ ((prodMkLeft α 0) x) s = (0 x) s

tactic: simp
state_before: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
x : α × β
s : Set γ
a✝ : MeasurableSet s
⊢ ((prodMkLeft α 0) x) s = (0 x) s
state_after: no goals
Theorem: Multiset.nodup_powerset
File: Mathlib/Data/Multiset/Powerset.lean

tactic: simp only [quot_mk_to_coe, powerset_coe', coe_nodup]
state_before: α : Type u_1
s : Multiset α
l : List α
h : Nodup ⟦l⟧
⊢ (powerset ⟦l⟧).Nodup
state_after: α : Type u_1
s : Multiset α
l : List α
h : Nodup ⟦l⟧
⊢ (List.map ofList l.sublists').Nodup

tactic: refine (nodup_sublists'.2 h).map_on ?_
state_before: α : Type u_1
s : Multiset α
l : List α
h : Nodup ⟦l⟧
⊢ (List.map ofList l.sublists').Nodup
state_after: α : Type u_1
s : Multiset α
l : List α
h : Nodup ⟦l⟧
⊢ ∀ x ∈ l.sublists', ∀ y ∈ l.sublists', ↑x = ↑y → x = y

tactic: exact fun x sx y sy e =>
  (h.perm_iff_eq_of_sublist (mem_sublists'.1 sx) (mem_sublists'.1 sy)).1 (Quotient.exact e)
state_before: α : Type u_1
s : Multiset α
l : List α
h : Nodup ⟦l⟧
⊢ ∀ x ∈ l.sublists', ∀ y ∈ l.sublists', ↑x = ↑y → x = y
state_after: no goals
Theorem: nilpotencyClass_eq_quotient_center_plus_one
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: rw [nilpotencyClass_quotient_center]
state_before: G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
hH : Group.IsNilpotent G
inst✝ : Nontrivial G
⊢ Group.nilpotencyClass G = Group.nilpotencyClass (G ⧸ center G) + 1
state_after: G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
hH : Group.IsNilpotent G
inst✝ : Nontrivial G
⊢ Group.nilpotencyClass G = Group.nilpotencyClass G - 1 + 1

tactic: rcases h : Group.nilpotencyClass G with ⟨⟩
state_before: G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
hH : Group.IsNilpotent G
inst✝ : Nontrivial G
⊢ Group.nilpotencyClass G = Group.nilpotencyClass G - 1 + 1
state_after: case zero
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
hH : Group.IsNilpotent G
inst✝ : Nontrivial G
h : Group.nilpotencyClass G = 0
⊢ 0 = 0 - 1 + 1

case succ
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
hH : Group.IsNilpotent G
inst✝ : Nontrivial G
n✝ : ℕ
h : Group.nilpotencyClass G = n✝ + 1
⊢ n✝ + 1 = n✝ + 1 - 1 + 1

tactic: exfalso
state_before: case zero
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
hH : Group.IsNilpotent G
inst✝ : Nontrivial G
h : Group.nilpotencyClass G = 0
⊢ 0 = 0 - 1 + 1
state_after: case zero
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
hH : Group.IsNilpotent G
inst✝ : Nontrivial G
h : Group.nilpotencyClass G = 0
⊢ False

tactic: rw [nilpotencyClass_zero_iff_subsingleton] at h
state_before: case zero
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
hH : Group.IsNilpotent G
inst✝ : Nontrivial G
h : Group.nilpotencyClass G = 0
⊢ False
state_after: case zero
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
hH : Group.IsNilpotent G
inst✝ : Nontrivial G
h : Subsingleton G
⊢ False

tactic: apply false_of_nontrivial_of_subsingleton G
state_before: case zero
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
hH : Group.IsNilpotent G
inst✝ : Nontrivial G
h : Subsingleton G
⊢ False
state_after: no goals

tactic: simp
state_before: case succ
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
hH : Group.IsNilpotent G
inst✝ : Nontrivial G
n✝ : ℕ
h : Group.nilpotencyClass G = n✝ + 1
⊢ n✝ + 1 = n✝ + 1 - 1 + 1
state_after: no goals
Theorem: SetTheory.PGame.moveLeft_nim_hEq
File: Mathlib/SetTheory/Game/Nim.lean

tactic: rw [nim_def]
state_before: o : Ordinal.{u_1}
⊢ let_fun this := ⋯;
  HEq (nim o).moveLeft fun i => nim (typein (fun x x_1 => x < x_1) i)
state_after: o : Ordinal.{u_1}
⊢ let_fun this := ⋯;
  HEq
    (mk (Quotient.out o).α (Quotient.out o).α (fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂)) fun o₂ =>
        nim (typein (fun x x_1 => x < x_1) o₂)).moveLeft
    fun i => nim (typein (fun x x_1 => x < x_1) i)

tactic: rfl
state_before: o : Ordinal.{u_1}
⊢ let_fun this := ⋯;
  HEq
    (mk (Quotient.out o).α (Quotient.out o).α (fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂)) fun o₂ =>
        nim (typein (fun x x_1 => x < x_1) o₂)).moveLeft
    fun i => nim (typein (fun x x_1 => x < x_1) i)
state_after: no goals
Theorem: Equiv.Perm.ofFn_comp_perm
File: Mathlib/Data/List/FinRange.lean

tactic: rw [ofFn_eq_map, ofFn_eq_map, ← map_map]
state_before: n : ℕ
α : Type u
σ : Perm (Fin n)
f : Fin n → α
⊢ ofFn (f ∘ ⇑σ) ~ ofFn f
state_after: n : ℕ
α : Type u
σ : Perm (Fin n)
f : Fin n → α
⊢ map f (map (⇑σ) (finRange n)) ~ map f (finRange n)

tactic: exact σ.map_finRange_perm.map f
state_before: n : ℕ
α : Type u
σ : Perm (Fin n)
f : Fin n → α
⊢ map f (map (⇑σ) (finRange n)) ~ map f (finRange n)
state_after: no goals
Theorem: Polynomial.trinomial_monic
File: Mathlib/Algebra/Polynomial/UnitTrinomial.lean

tactic: nontriviality R
state_before: R : Type u_1
inst✝ : Semiring R
k m n : ℕ
u v w : R
hkm : k < m
hmn : m < n
⊢ (trinomial k m n u v 1).Monic
state_after: R : Type u_1
inst✝ : Semiring R
k m n : ℕ
u v w : R
hkm : k < m
hmn : m < n
a✝ : Nontrivial R
⊢ (trinomial k m n u v 1).Monic

tactic: exact trinomial_leadingCoeff hkm hmn one_ne_zero
state_before: R : Type u_1
inst✝ : Semiring R
k m n : ℕ
u v w : R
hkm : k < m
hmn : m < n
a✝ : Nontrivial R
⊢ (trinomial k m n u v 1).Monic
state_after: no goals
Theorem: Set.image_val_subset
File: Mathlib/Data/Set/Functor.lean

tactic: rintro _ ⟨⟨_, ha⟩, _, rfl⟩
state_before: α β✝ : Type u
s : Set α
f : α → Set β✝
g : Set (α → β✝)
β : Set α
γ : Set ↑β
a : α
⊢ ↑γ ⊆ β
state_after: case intro.mk.intro
α β✝ : Type u
s : Set α
f : α → Set β✝
g : Set (α → β✝)
β : Set α
γ : Set ↑β
a val✝ : α
ha : val✝ ∈ β
left✝ : ⟨val✝, ha⟩ ∈ γ
⊢ ↑⟨val✝, ha⟩ ∈ β

tactic: exact ha
state_before: case intro.mk.intro
α β✝ : Type u
s : Set α
f : α → Set β✝
g : Set (α → β✝)
β : Set α
γ : Set ↑β
a val✝ : α
ha : val✝ ∈ β
left✝ : ⟨val✝, ha⟩ ∈ γ
⊢ ↑⟨val✝, ha⟩ ∈ β
state_after: no goals
Theorem: LieModule.posFittingComp_eq_bot_of_isNilpotent
File: Mathlib/Algebra/Lie/Weights/Basic.lean

tactic: simp [posFittingComp]
state_before: K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L
inst✝⁶ : LieAlgebra R L
inst✝⁵ : LieAlgebra.IsNilpotent R L
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
inst✝ : IsNilpotent R L M
⊢ posFittingComp R L M = ⊥
state_after: no goals
Theorem: DFinsupp.support_eq_empty
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: simpa [Finset.ext_iff] using H
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
inst✝ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
f : Π₀ (i : ι), β i
H : f.support = ∅
⊢ ∀ (i : ι), f i = 0 i
state_after: no goals

tactic: simp (config := { contextual := true })
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
inst✝ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
f : Π₀ (i : ι), β i
⊢ f = 0 → f.support = ∅
state_after: no goals