1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: DirectSum.lie_of
File: Mathlib/Algebra/Lie/DirectSum.lean

tactic: obtain rfl | hij := Decidable.eq_or_ne i j
state_before: R : Type u
ι : Type v
inst✝³ : CommRing R
L : ι → Type w
inst✝² : (i : ι) → LieRing (L i)
inst✝¹ : (i : ι) → LieAlgebra R (L i)
inst✝ : DecidableEq ι
i j : ι
x : L i
y : L j
⊢ ⁅(of L i) x, (of L j) y⁆ = if hij : i = j then (of L i) ⁅x, Eq.recOn ⋯ y⁆ else 0
state_after: case inl
R : Type u
ι : Type v
inst✝³ : CommRing R
L : ι → Type w
inst✝² : (i : ι) → LieRing (L i)
inst✝¹ : (i : ι) → LieAlgebra R (L i)
inst✝ : DecidableEq ι
i : ι
x y : L i
⊢ ⁅(of L i) x, (of L i) y⁆ = if hij : i = i then (of L i) ⁅x, Eq.recOn ⋯ y⁆ else 0

case inr
R : Type u
ι : Type v
inst✝³ : CommRing R
L : ι → Type w
inst✝² : (i : ι) → LieRing (L i)
inst✝¹ : (i : ι) → LieAlgebra R (L i)
inst✝ : DecidableEq ι
i j : ι
x : L i
y : L j
hij : i ≠ j
⊢ ⁅(of L i) x, (of L j) y⁆ = if hij : i = j then (of L i) ⁅x, Eq.recOn ⋯ y⁆ else 0

tactic: simp only [lie_of_same L x y, dif_pos]
state_before: case inl
R : Type u
ι : Type v
inst✝³ : CommRing R
L : ι → Type w
inst✝² : (i : ι) → LieRing (L i)
inst✝¹ : (i : ι) → LieAlgebra R (L i)
inst✝ : DecidableEq ι
i : ι
x y : L i
⊢ ⁅(of L i) x, (of L i) y⁆ = if hij : i = i then (of L i) ⁅x, Eq.recOn ⋯ y⁆ else 0
state_after: no goals

tactic: simp only [lie_of_of_ne L hij x y, hij, dif_neg, dite_false]
state_before: case inr
R : Type u
ι : Type v
inst✝³ : CommRing R
L : ι → Type w
inst✝² : (i : ι) → LieRing (L i)
inst✝¹ : (i : ι) → LieAlgebra R (L i)
inst✝ : DecidableEq ι
i j : ι
x : L i
y : L j
hij : i ≠ j
⊢ ⁅(of L i) x, (of L j) y⁆ = if hij : i = j then (of L i) ⁅x, Eq.recOn ⋯ y⁆ else 0
state_after: no goals
Theorem: Nat.eq_zero_of_mul_eq_zero
File: Mathlib/Init/Data/Nat/Lemmas.lean

tactic: rw [succ_mul]
state_before: n m : ℕ
⊢ n.succ * m = 0 → n.succ = 0 ∨ m = 0
state_after: n m : ℕ
⊢ n * m + m = 0 → n.succ = 0 ∨ m = 0

tactic: intro h
state_before: n m : ℕ
⊢ n * m + m = 0 → n.succ = 0 ∨ m = 0
state_after: n m : ℕ
h : n * m + m = 0
⊢ n.succ = 0 ∨ m = 0

tactic: exact Or.inr (Nat.eq_zero_of_add_eq_zero_left h)
state_before: n m : ℕ
h : n * m + m = 0
⊢ n.succ = 0 ∨ m = 0
state_after: no goals
Theorem: Mathlib.Tactic.Abel.subst_into_smul_upcast
File: Mathlib/Tactic/Abel.lean

tactic: simp [← prt, prl₁, ← prl₂, prr, smul, smulg, natCast_zsmul]
state_before: α : Type u_1
inst✝ : AddCommGroup α
l : ℕ
r : α
tl : ℕ
zl : ℤ
tr t : α
prl₁ : l = tl
prl₂ : ↑tl = zl
prr : r = tr
prt : smulg zl tr = t
⊢ smul l r = t
state_after: no goals
Theorem: List.take_iterate
File: Mathlib/Data/List/Iterate.lean

tactic: rw [← range_map_iterate, ← range_map_iterate, ← map_take, take_range]
state_before: α : Type u_1
f : α → α
a : α
m n : ℕ
⊢ take m (iterate f a n) = iterate f a (min m n)
state_after: no goals
Theorem: ModularCyclotomicCharacter.spec
File: Mathlib/NumberTheory/Cyclotomic/CyclotomicCharacter.lean

tactic: rw [toFun_spec' g ht]
state_before: L : Type u
inst✝¹ : CommRing L
inst✝ : IsDomain L
n✝ n : ℕ+
hn : Fintype.card ↥(rootsOfUnity n L) = ↑n
g : L ≃+* L
t : Lˣ
ht : t ∈ rootsOfUnity n L
⊢ g ↑t = ↑t ^ (↑((ModularCyclotomicCharacter L hn) g)).val
state_after: L : Type u
inst✝¹ : CommRing L
inst✝ : IsDomain L
n✝ n : ℕ+
hn : Fintype.card ↥(rootsOfUnity n L) = ↑n
g : L ≃+* L
t : Lˣ
ht : t ∈ rootsOfUnity n L
⊢ ↑t ^ (toFun n g).val = ↑t ^ (↑((ModularCyclotomicCharacter L hn) g)).val

tactic: congr 1
state_before: L : Type u
inst✝¹ : CommRing L
inst✝ : IsDomain L
n✝ n : ℕ+
hn : Fintype.card ↥(rootsOfUnity n L) = ↑n
g : L ≃+* L
t : Lˣ
ht : t ∈ rootsOfUnity n L
⊢ ↑t ^ (toFun n g).val = ↑t ^ (↑((ModularCyclotomicCharacter L hn) g)).val
state_after: case e_a
L : Type u
inst✝¹ : CommRing L
inst✝ : IsDomain L
n✝ n : ℕ+
hn : Fintype.card ↥(rootsOfUnity n L) = ↑n
g : L ≃+* L
t : Lˣ
ht : t ∈ rootsOfUnity n L
⊢ (toFun n g).val = (↑((ModularCyclotomicCharacter L hn) g)).val

tactic: exact (ZMod.ringEquivCongr_val _ _).symm
state_before: case e_a
L : Type u
inst✝¹ : CommRing L
inst✝ : IsDomain L
n✝ n : ℕ+
hn : Fintype.card ↥(rootsOfUnity n L) = ↑n
g : L ≃+* L
t : Lˣ
ht : t ∈ rootsOfUnity n L
⊢ (toFun n g).val = (↑((ModularCyclotomicCharacter L hn) g)).val
state_after: no goals
Theorem: eq_top_of_isCompl_bot
File: Mathlib/Order/Disjoint.lean

tactic: rw [← sup_bot_eq x, h.sup_eq_top]
state_before: α : Type u_1
inst✝¹ : Lattice α
inst✝ : BoundedOrder α
a b x : α
h : IsCompl x ⊥
⊢ x = ⊤
state_after: no goals
Theorem: Subgroup.relindex_inf_mul_relindex
File: Mathlib/GroupTheory/Index.lean

tactic: rw [← inf_relindex_right H (K ⊓ L), ← inf_relindex_right K L, ← inf_relindex_right (H ⊓ K) L,
  inf_assoc, relindex_mul_relindex (H ⊓ (K ⊓ L)) (K ⊓ L) L inf_le_right inf_le_right]
state_before: G : Type u_1
inst✝ : Group G
H K L : Subgroup G
⊢ H.relindex (K ⊓ L) * K.relindex L = (H ⊓ K).relindex L
state_after: no goals
Theorem: TopologicalSpace.IsTopologicalBasis.inseparable_iff
File: Mathlib/Topology/Separation.lean

tactic: convert hb.nhds_hasBasis using 2
state_before: X : Type u_1
Y : Type u_2
inst✝ : TopologicalSpace X
b : Set (Set X)
hb : IsTopologicalBasis b
x y : X
h : ∀ s ∈ b, x ∈ s ↔ y ∈ s
⊢ (𝓝 y).HasBasis (fun t => t ∈ b ∧ x ∈ t) fun t => t
state_after: case h.e'_4.h.a
X : Type u_1
Y : Type u_2
inst✝ : TopologicalSpace X
b : Set (Set X)
hb : IsTopologicalBasis b
x y : X
h : ∀ s ∈ b, x ∈ s ↔ y ∈ s
x✝ : Set X
⊢ x✝ ∈ b ∧ x ∈ x✝ ↔ x✝ ∈ b ∧ y ∈ x✝

tactic: exact and_congr_right (h _)
state_before: case h.e'_4.h.a
X : Type u_1
Y : Type u_2
inst✝ : TopologicalSpace X
b : Set (Set X)
hb : IsTopologicalBasis b
x y : X
h : ∀ s ∈ b, x ∈ s ↔ y ∈ s
x✝ : Set X
⊢ x✝ ∈ b ∧ x ∈ x✝ ↔ x✝ ∈ b ∧ y ∈ x✝
state_after: no goals
Theorem: Finset.prod_range_reflect
File: Mathlib/Algebra/BigOperators/Intervals.lean

tactic: cases n
state_before: α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
f : ℕ → M
n : ℕ
⊢ ∏ j ∈ range n, f (n - 1 - j) = ∏ j ∈ range n, f j
state_after: case zero
α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
f : ℕ → M
⊢ ∏ j ∈ range 0, f (0 - 1 - j) = ∏ j ∈ range 0, f j

case succ
α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
f : ℕ → M
n✝ : ℕ
⊢ ∏ j ∈ range (n✝ + 1), f (n✝ + 1 - 1 - j) = ∏ j ∈ range (n✝ + 1), f j

tactic: simp
state_before: case zero
α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
f : ℕ → M
⊢ ∏ j ∈ range 0, f (0 - 1 - j) = ∏ j ∈ range 0, f j
state_after: no goals

tactic: simp only [← Nat.Ico_zero_eq_range, Nat.succ_sub_succ_eq_sub, tsub_zero]
state_before: case succ
α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
f : ℕ → M
n✝ : ℕ
⊢ ∏ j ∈ range (n✝ + 1), f (n✝ + 1 - 1 - j) = ∏ j ∈ range (n✝ + 1), f j
state_after: case succ
α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
f : ℕ → M
n✝ : ℕ
⊢ ∏ x ∈ Ico 0 (n✝ + 1), f (n✝ - x) = ∏ x ∈ Ico 0 (n✝ + 1), f x

tactic: rw [prod_Ico_reflect _ _ le_rfl]
state_before: case succ
α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
f : ℕ → M
n✝ : ℕ
⊢ ∏ x ∈ Ico 0 (n✝ + 1), f (n✝ - x) = ∏ x ∈ Ico 0 (n✝ + 1), f x
state_after: case succ
α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
f : ℕ → M
n✝ : ℕ
⊢ ∏ j ∈ Ico (n✝ + 1 - (n✝ + 1)) (n✝ + 1 - 0), f j = ∏ x ∈ Ico 0 (n✝ + 1), f x

tactic: simp
state_before: case succ
α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f✝ : α → M
f : ℕ → M
n✝ : ℕ
⊢ ∏ j ∈ Ico (n✝ + 1 - (n✝ + 1)) (n✝ + 1 - 0), f j = ∏ x ∈ Ico 0 (n✝ + 1), f x
state_after: no goals
Theorem: Turing.PartrecToTM2.K'.elim_update_aux
File: Mathlib/Computability/TMToPartrec.lean

tactic: funext x
state_before: a b c d c' : List Γ'
⊢ update (elim a b c d) aux c' = elim a b c' d
state_after: case h
a b c d c' : List Γ'
x : K'
⊢ update (elim a b c d) aux c' x = elim a b c' d x

tactic: cases x <;> rfl
state_before: case h
a b c d c' : List Γ'
x : K'
⊢ update (elim a b c d) aux c' x = elim a b c' d x
state_after: no goals
Theorem: Polynomial.integralNormalization_coeff_degree
File: Mathlib/RingTheory/Polynomial/IntegralNormalization.lean

tactic: rw [integralNormalization_coeff, if_pos hi]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
f : R[X]
i : ℕ
hi : f.degree = ↑i
⊢ f.integralNormalization.coeff i = 1
state_after: no goals
Theorem: ContDiff.contDiffBump
File: Mathlib/Analysis/Calculus/BumpFunction/Basic.lean

tactic: rw [contDiff_iff_contDiffAt] at *
state_before: E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c✝ : E
f✝ : ContDiffBump c✝
x : E
n : ℕ∞
c g : X → E
f : (x : X) → ContDiffBump (c x)
hc : ContDiff ℝ n c
hr : ContDiff ℝ n fun x => (f x).rIn
hR : ContDiff ℝ n fun x => (f x).rOut
hg : ContDiff ℝ n g
⊢ ContDiff ℝ n fun x => ↑(f x) (g x)
state_after: E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c✝ : E
f✝ : ContDiffBump c✝
x : E
n : ℕ∞
c g : X → E
f : (x : X) → ContDiffBump (c x)
hc : ∀ (x : X), ContDiffAt ℝ n c x
hr : ∀ (x : X), ContDiffAt ℝ n (fun x => (f x).rIn) x
hR : ∀ (x : X), ContDiffAt ℝ n (fun x => (f x).rOut) x
hg : ∀ (x : X), ContDiffAt ℝ n g x
⊢ ∀ (x : X), ContDiffAt ℝ n (fun x => ↑(f x) (g x)) x

tactic: exact fun x => (hc x).contDiffBump (hr x) (hR x) (hg x)
state_before: E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c✝ : E
f✝ : ContDiffBump c✝
x : E
n : ℕ∞
c g : X → E
f : (x : X) → ContDiffBump (c x)
hc : ∀ (x : X), ContDiffAt ℝ n c x
hr : ∀ (x : X), ContDiffAt ℝ n (fun x => (f x).rIn) x
hR : ∀ (x : X), ContDiffAt ℝ n (fun x => (f x).rOut) x
hg : ∀ (x : X), ContDiffAt ℝ n g x
⊢ ∀ (x : X), ContDiffAt ℝ n (fun x => ↑(f x) (g x)) x
state_after: no goals
Theorem: CategoryTheory.CommSq.HasLift.iff
File: Mathlib/CategoryTheory/CommSq.lean

tactic: constructor
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
A B X Y : C
f : A ⟶ X
i : A ⟶ B
p : X ⟶ Y
g : B ⟶ Y
sq : CommSq f i p g
⊢ sq.HasLift ↔ Nonempty sq.LiftStruct
state_after: case mp
C : Type u_1
inst✝ : Category.{u_2, u_1} C
A B X Y : C
f : A ⟶ X
i : A ⟶ B
p : X ⟶ Y
g : B ⟶ Y
sq : CommSq f i p g
⊢ sq.HasLift → Nonempty sq.LiftStruct

case mpr
C : Type u_1
inst✝ : Category.{u_2, u_1} C
A B X Y : C
f : A ⟶ X
i : A ⟶ B
p : X ⟶ Y
g : B ⟶ Y
sq : CommSq f i p g
⊢ Nonempty sq.LiftStruct → sq.HasLift

tactic: exacts [fun h => h.exists_lift, fun h => mk h]
state_before: case mp
C : Type u_1
inst✝ : Category.{u_2, u_1} C
A B X Y : C
f : A ⟶ X
i : A ⟶ B
p : X ⟶ Y
g : B ⟶ Y
sq : CommSq f i p g
⊢ sq.HasLift → Nonempty sq.LiftStruct

case mpr
C : Type u_1
inst✝ : Category.{u_2, u_1} C
A B X Y : C
f : A ⟶ X
i : A ⟶ B
p : X ⟶ Y
g : B ⟶ Y
sq : CommSq f i p g
⊢ Nonempty sq.LiftStruct → sq.HasLift
state_after: no goals
Theorem: map_extChartAt_nhds_of_boundaryless
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rw [extChartAt]
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝¹¹ : NontriviallyNormedField 𝕜
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : TopologicalSpace H
inst✝⁷ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : NormedSpace 𝕜 E'
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
inst✝² : ChartedSpace H M
inst✝¹ : ChartedSpace H' M'
inst✝ : I.Boundaryless
x : M
⊢ map (↑(extChartAt I x)) (𝓝 x) = 𝓝 (↑(extChartAt I x) x)
state_after: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝¹¹ : NontriviallyNormedField 𝕜
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : TopologicalSpace H
inst✝⁷ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : NormedSpace 𝕜 E'
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
inst✝² : ChartedSpace H M
inst✝¹ : ChartedSpace H' M'
inst✝ : I.Boundaryless
x : M
⊢ map (↑((chartAt H x).extend I)) (𝓝 x) = 𝓝 (↑((chartAt H x).extend I) x)

tactic: exact map_extend_nhds_of_boundaryless (chartAt H x) I (mem_chart_source H x)
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝¹¹ : NontriviallyNormedField 𝕜
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : TopologicalSpace H
inst✝⁷ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : NormedSpace 𝕜 E'
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
inst✝² : ChartedSpace H M
inst✝¹ : ChartedSpace H' M'
inst✝ : I.Boundaryless
x : M
⊢ map (↑((chartAt H x).extend I)) (𝓝 x) = 𝓝 (↑((chartAt H x).extend I) x)
state_after: no goals
Theorem: IntermediateField.rank_bot
File: Mathlib/FieldTheory/Adjoin.lean

tactic: rw [rank_eq_one_iff]
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
S : Set E
K L : IntermediateField F E
⊢ Module.rank F ↥⊥ = 1
state_after: no goals
Theorem: MeasureTheory.union_ae_eq_right_of_ae_eq_empty
File: Mathlib/MeasureTheory/OuterMeasure/AE.lean

tactic: convert ae_eq_set_union h (ae_eq_refl t)
state_before: α : Type u_1
β : Type u_2
F : Type u_3
inst✝¹ : FunLike F (Set α) ℝ≥0∞
inst✝ : OuterMeasureClass F α
μ : F
s t : Set α
h : s =ᶠ[ae μ] ∅
⊢ s ∪ t =ᶠ[ae μ] t
state_after: case h.e'_5
α : Type u_1
β : Type u_2
F : Type u_3
inst✝¹ : FunLike F (Set α) ℝ≥0∞
inst✝ : OuterMeasureClass F α
μ : F
s t : Set α
h : s =ᶠ[ae μ] ∅
⊢ t = ∅ ∪ t

tactic: rw [empty_union]
state_before: case h.e'_5
α : Type u_1
β : Type u_2
F : Type u_3
inst✝¹ : FunLike F (Set α) ℝ≥0∞
inst✝ : OuterMeasureClass F α
μ : F
s t : Set α
h : s =ᶠ[ae μ] ∅
⊢ t = ∅ ∪ t
state_after: no goals
Theorem: nhds_nil
File: Mathlib/Topology/List.lean

tactic: rw [nhds_list, List.traverse_nil _]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
⊢ 𝓝 [] = pure []
state_after: no goals
Theorem: FreeAlgebra.lift_symm_apply
File: Mathlib/Algebra/FreeAlgebra.lean

tactic: rw [lift]
state_before: R : Type u_1
inst✝² : CommSemiring R
X : Type u_2
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
F : FreeAlgebra R X →ₐ[R] A
⊢ (lift R).symm F = ⇑F ∘ ι R
state_after: R : Type u_1
inst✝² : CommSemiring R
X : Type u_2
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
F : FreeAlgebra R X →ₐ[R] A
⊢ { toFun := FreeAlgebra.liftAux R, invFun := fun F => ⇑F ∘ ι R, left_inv := ⋯, right_inv := ⋯ }.symm F = ⇑F ∘ ι R

tactic: rfl
state_before: R : Type u_1
inst✝² : CommSemiring R
X : Type u_2
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
F : FreeAlgebra R X →ₐ[R] A
⊢ { toFun := FreeAlgebra.liftAux R, invFun := fun F => ⇑F ∘ ι R, left_inv := ⋯, right_inv := ⋯ }.symm F = ⇑F ∘ ι R
state_after: no goals
Theorem: Polynomial.monic_of_natDegree_le_of_coeff_eq_one
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: unfold Monic
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
n : ℕ
pn : p.natDegree ≤ n
p1 : p.coeff n = 1
⊢ p.Monic
state_after: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
n : ℕ
pn : p.natDegree ≤ n
p1 : p.coeff n = 1
⊢ p.leadingCoeff = 1

tactic: nontriviality
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
n : ℕ
pn : p.natDegree ≤ n
p1 : p.coeff n = 1
⊢ p.leadingCoeff = 1
state_after: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
n : ℕ
pn : p.natDegree ≤ n
p1 : p.coeff n = 1
a✝ : Nontrivial R
⊢ p.leadingCoeff = 1

tactic: refine (congr_arg _ <| natDegree_eq_of_le_of_coeff_ne_zero pn ?_).trans p1
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
n : ℕ
pn : p.natDegree ≤ n
p1 : p.coeff n = 1
a✝ : Nontrivial R
⊢ p.leadingCoeff = 1
state_after: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
n : ℕ
pn : p.natDegree ≤ n
p1 : p.coeff n = 1
a✝ : Nontrivial R
⊢ p.coeff n ≠ 0

tactic: exact ne_of_eq_of_ne p1 one_ne_zero
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
n : ℕ
pn : p.natDegree ≤ n
p1 : p.coeff n = 1
a✝ : Nontrivial R
⊢ p.coeff n ≠ 0
state_after: no goals
Theorem: Equiv.Perm.SameCycle.trans
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: rw [zpow_add, mul_apply, hi, hj]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x y z : α
x✝¹ : f.SameCycle x y
x✝ : f.SameCycle y z
i : ℤ
hi : (f ^ i) x = y
j : ℤ
hj : (f ^ j) y = z
⊢ (f ^ (j + i)) x = z
state_after: no goals
Theorem: CategoryTheory.MorphismProperty.monotone_map
File: Mathlib/CategoryTheory/MorphismProperty/Basic.lean

tactic: intro P Q h X Y f ⟨X', Y', f', hf', ⟨e⟩⟩
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
F : C ⥤ D
⊢ Monotone fun x => x.map F
state_after: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
F : C ⥤ D
P Q : MorphismProperty C
h : P ≤ Q
X Y : D
f : X ⟶ Y
X' Y' : C
f' : X' ⟶ Y'
hf' : P f'
e : Arrow.mk (F.map f') ≅ Arrow.mk f
⊢ Q.map F f

tactic: exact ⟨X', Y', f', h _ hf', ⟨e⟩⟩
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
F : C ⥤ D
P Q : MorphismProperty C
h : P ≤ Q
X Y : D
f : X ⟶ Y
X' Y' : C
f' : X' ⟶ Y'
hf' : P f'
e : Arrow.mk (F.map f') ≅ Arrow.mk f
⊢ Q.map F f
state_after: no goals
Theorem: t0Space_iff_exists_isOpen_xor'_mem
File: Mathlib/Topology/Separation.lean

tactic: simp only [t0Space_iff_not_inseparable, xor_iff_not_iff, not_forall, exists_prop,
  inseparable_iff_forall_open, Pairwise]
state_before: X✝ : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X✝
X : Type u
inst✝ : TopologicalSpace X
⊢ T0Space X ↔ Pairwise fun x y => ∃ U, IsOpen U ∧ Xor' (x ∈ U) (y ∈ U)
state_after: no goals
Theorem: CategoryTheory.Limits.spanExt_hom_app_right
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: dsimp [spanExt]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
X Y Z X' Y' Z' : C
iX : X ≅ X'
iY : Y ≅ Y'
iZ : Z ≅ Z'
f : X ⟶ Y
g : X ⟶ Z
f' : X' ⟶ Y'
g' : X' ⟶ Z'
wf : iX.hom ≫ f' = f ≫ iY.hom
wg : iX.hom ≫ g' = g ≫ iZ.hom
⊢ (spanExt iX iY iZ wf wg).hom.app WalkingSpan.right = iZ.hom
state_after: no goals
Theorem: gcd_dvd_iff_exists
File: Mathlib/RingTheory/PrincipalIdealDomain.lean

tactic: simp_rw [mul_comm a, mul_comm b, @eq_comm _ z, ← Ideal.mem_span_pair, ← span_gcd,
  Ideal.mem_span_singleton]
state_before: R : Type u
M : Type v
inst✝³ : CommRing R
inst✝² : IsDomain R
inst✝¹ : IsBezout R
inst✝ : GCDMonoid R
a b z : R
⊢ gcd a b ∣ z ↔ ∃ x y, z = a * x + b * y
state_after: no goals
Theorem: conjugate_pos'
File: Mathlib/Algebra/Star/Order.lean

tactic: simpa only [star_star] using conjugate_pos ha hc.star
state_before: R : Type u
inst✝³ : NonUnitalSemiring R
inst✝² : PartialOrder R
inst✝¹ : StarRing R
inst✝ : StarOrderedRing R
a : R
ha : 0 < a
c : R
hc : IsRegular c
⊢ 0 < c * a * star c
state_after: no goals
Theorem: NNReal.summable_rpow_inv
File: Mathlib/Analysis/PSeries.lean

tactic: simp [← NNReal.summable_coe]
state_before: p : ℝ
⊢ (Summable fun n => (↑n ^ p)⁻¹) ↔ 1 < p
state_after: no goals
Theorem: SimpleGraph.Walk.IsCycle.transfer
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: cases q with
| nil => simp at qc
| cons _ q =>
  simp only [edges_cons, List.find?, List.mem_cons, forall_eq_or_imp, mem_edgeSet] at hq
  simp only [Walk.transfer, cons_isCycle_iff, edges_transfer q hq.2] at qc ⊢
  exact ⟨qc.1.transfer hq.2, qc.2⟩
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : G.Walk u v
H : SimpleGraph V
q : G.Walk u u
qc : q.IsCycle
hq : ∀ e ∈ q.edges, e ∈ H.edgeSet
⊢ (q.transfer H hq).IsCycle
state_after: no goals

tactic: simp at qc
state_before: case nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : G.Walk u v
H : SimpleGraph V
qc : nil.IsCycle
hq : ∀ e ∈ nil.edges, e ∈ H.edgeSet
⊢ (nil.transfer H hq).IsCycle
state_after: no goals

tactic: simp only [edges_cons, List.find?, List.mem_cons, forall_eq_or_imp, mem_edgeSet] at hq
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : G.Walk u v
H : SimpleGraph V
v✝ : V
h✝ : G.Adj u v✝
q : G.Walk v✝ u
qc : (cons h✝ q).IsCycle
hq : ∀ e ∈ (cons h✝ q).edges, e ∈ H.edgeSet
⊢ ((cons h✝ q).transfer H hq).IsCycle
state_after: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : G.Walk u v
H : SimpleGraph V
v✝ : V
h✝ : G.Adj u v✝
q : G.Walk v✝ u
qc : (cons h✝ q).IsCycle
hq✝ : ∀ e ∈ (cons h✝ q).edges, e ∈ H.edgeSet
hq : H.Adj u v✝ ∧ ∀ a ∈ q.edges, a ∈ H.edgeSet
⊢ ((cons h✝ q).transfer H hq✝).IsCycle

tactic: simp only [Walk.transfer, cons_isCycle_iff, edges_transfer q hq.2] at qc ⊢
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : G.Walk u v
H : SimpleGraph V
v✝ : V
h✝ : G.Adj u v✝
q : G.Walk v✝ u
qc : (cons h✝ q).IsCycle
hq✝ : ∀ e ∈ (cons h✝ q).edges, e ∈ H.edgeSet
hq : H.Adj u v✝ ∧ ∀ a ∈ q.edges, a ∈ H.edgeSet
⊢ ((cons h✝ q).transfer H hq✝).IsCycle
state_after: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : G.Walk u v
H : SimpleGraph V
v✝ : V
h✝ : G.Adj u v✝
q : G.Walk v✝ u
hq✝ : ∀ e ∈ (cons h✝ q).edges, e ∈ H.edgeSet
hq : H.Adj u v✝ ∧ ∀ a ∈ q.edges, a ∈ H.edgeSet
qc : q.IsPath ∧ s(u, v✝) ∉ q.edges
⊢ (q.transfer H ⋯).IsPath ∧ s(u, v✝) ∉ q.edges

tactic: exact ⟨qc.1.transfer hq.2, qc.2⟩
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : G.Walk u v
H : SimpleGraph V
v✝ : V
h✝ : G.Adj u v✝
q : G.Walk v✝ u
hq✝ : ∀ e ∈ (cons h✝ q).edges, e ∈ H.edgeSet
hq : H.Adj u v✝ ∧ ∀ a ∈ q.edges, a ∈ H.edgeSet
qc : q.IsPath ∧ s(u, v✝) ∉ q.edges
⊢ (q.transfer H ⋯).IsPath ∧ s(u, v✝) ∉ q.edges
state_after: no goals
Theorem: ENNReal.zpow_pos
File: Mathlib/Data/ENNReal/Inv.lean

tactic: cases n
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
ha : a ≠ 0
h'a : a ≠ ⊤
n : ℤ
⊢ 0 < a ^ n
state_after: case ofNat
a b c d : ℝ≥0∞
r p q : ℝ≥0
ha : a ≠ 0
h'a : a ≠ ⊤
a✝ : ℕ
⊢ 0 < a ^ Int.ofNat a✝

case negSucc
a b c d : ℝ≥0∞
r p q : ℝ≥0
ha : a ≠ 0
h'a : a ≠ ⊤
a✝ : ℕ
⊢ 0 < a ^ Int.negSucc a✝

tactic: simpa using ENNReal.pow_pos ha.bot_lt _
state_before: case ofNat
a b c d : ℝ≥0∞
r p q : ℝ≥0
ha : a ≠ 0
h'a : a ≠ ⊤
a✝ : ℕ
⊢ 0 < a ^ Int.ofNat a✝
state_after: no goals

tactic: simp only [h'a, pow_eq_top_iff, zpow_negSucc, Ne, not_false, ENNReal.inv_pos, false_and,
  not_false_eq_true]
state_before: case negSucc
a b c d : ℝ≥0∞
r p q : ℝ≥0
ha : a ≠ 0
h'a : a ≠ ⊤
a✝ : ℕ
⊢ 0 < a ^ Int.negSucc a✝
state_after: no goals
Theorem: MvPolynomial.pderiv_mul
File: Mathlib/Algebra/MvPolynomial/PDeriv.lean

tactic: simp only [(pderiv i).leibniz f g, smul_eq_mul, mul_comm, add_comm]
state_before: R : Type u
σ : Type v
a a' a₁ a₂ : R
s : σ →₀ ℕ
inst✝ : CommSemiring R
i : σ
f g : MvPolynomial σ R
⊢ (pderiv i) (f * g) = (pderiv i) f * g + f * (pderiv i) g
state_after: no goals
Theorem: Finset.affineCombinationSingleWeights_apply_self
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: simp [affineCombinationSingleWeights]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝ : DecidableEq ι
i : ι
⊢ affineCombinationSingleWeights k i i = 1
state_after: no goals