1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ContDiff.pow
File: Mathlib/Analysis/Calculus/ContDiff/Basic.lean

tactic: simpa using contDiff_const
state_before: 𝕜 : Type u_1
inst✝¹⁶ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁵ : NormedAddCommGroup D
inst✝¹⁴ : NormedSpace 𝕜 D
E : Type uE
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type uF
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
G : Type uG
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁷ : NormedAddCommGroup X
inst✝⁶ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
𝔸 : Type u_3
𝔸' : Type u_4
ι : Type u_5
𝕜' : Type u_6
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedAlgebra 𝕜 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸'
inst✝¹ : NormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
f : E → 𝔸
hf : ContDiff 𝕜 n f
⊢ ContDiff 𝕜 n fun x => f x ^ 0
state_after: no goals

tactic: simpa [pow_succ] using (hf.pow m).mul hf
state_before: 𝕜 : Type u_1
inst✝¹⁶ : NontriviallyNormedField 𝕜
D : Type uD
inst✝¹⁵ : NormedAddCommGroup D
inst✝¹⁴ : NormedSpace 𝕜 D
E : Type uE
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type uF
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
G : Type uG
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedSpace 𝕜 G
X : Type u_2
inst✝⁷ : NormedAddCommGroup X
inst✝⁶ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m✝ n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
𝔸 : Type u_3
𝔸' : Type u_4
ι : Type u_5
𝕜' : Type u_6
inst✝⁵ : NormedRing 𝔸
inst✝⁴ : NormedAlgebra 𝕜 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸'
inst✝¹ : NormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
f : E → 𝔸
hf : ContDiff 𝕜 n f
m : ℕ
⊢ ContDiff 𝕜 n fun x => f x ^ (m + 1)
state_after: no goals
Theorem: IsometryEquiv.image_emetric_closedBall
File: Mathlib/Topology/MetricSpace/Isometry.lean

tactic: rw [← h.preimage_symm, h.symm.preimage_emetric_closedBall, symm_symm]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
h : α ≃ᵢ β
x : α
r : ℝ≥0∞
⊢ ⇑h '' EMetric.closedBall x r = EMetric.closedBall (h x) r
state_after: no goals
Theorem: RegularExpression.map_id
File: Mathlib/Computability/RegularExpressions.lean

tactic: simp_rw [map, map_id]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
dec : DecidableEq α
a b : α
R S : RegularExpression α
⊢ map id (R + S) = R + S
state_after: no goals

tactic: simp_rw [map, map_id]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
dec : DecidableEq α
a b : α
R S : RegularExpression α
⊢ map id (R.comp S) = R.comp S
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
dec : DecidableEq α
a b : α
R S : RegularExpression α
⊢ R * S = R.comp S

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
dec : DecidableEq α
a b : α
R S : RegularExpression α
⊢ R * S = R.comp S
state_after: no goals

tactic: simp_rw [map, map_id]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
dec : DecidableEq α
a b : α
R : RegularExpression α
⊢ map id R.star = R.star
state_after: no goals
Theorem: TopologicalSpace.Opens.set_range_forget_map_inclusion
File: Mathlib/Topology/Category/TopCat/Opens.lean

tactic: ext x
state_before: X : TopCat
U : Opens ↑X
⊢ Set.range ((forget TopCat).map U.inclusion) = ↑U
state_after: case h
X : TopCat
U : Opens ↑X
x : (forget TopCat).obj X
⊢ x ∈ Set.range ((forget TopCat).map U.inclusion) ↔ x ∈ ↑U

tactic: constructor
state_before: case h
X : TopCat
U : Opens ↑X
x : (forget TopCat).obj X
⊢ x ∈ Set.range ((forget TopCat).map U.inclusion) ↔ x ∈ ↑U
state_after: case h.mp
X : TopCat
U : Opens ↑X
x : (forget TopCat).obj X
⊢ x ∈ Set.range ((forget TopCat).map U.inclusion) → x ∈ ↑U

case h.mpr
X : TopCat
U : Opens ↑X
x : (forget TopCat).obj X
⊢ x ∈ ↑U → x ∈ Set.range ((forget TopCat).map U.inclusion)

tactic: rintro ⟨x, rfl⟩
state_before: case h.mp
X : TopCat
U : Opens ↑X
x : (forget TopCat).obj X
⊢ x ∈ Set.range ((forget TopCat).map U.inclusion) → x ∈ ↑U
state_after: case h.mp.intro
X : TopCat
U : Opens ↑X
x : (forget TopCat).obj ((toTopCat X).obj U)
⊢ (forget TopCat).map U.inclusion x ∈ ↑U

tactic: exact x.2
state_before: case h.mp.intro
X : TopCat
U : Opens ↑X
x : (forget TopCat).obj ((toTopCat X).obj U)
⊢ (forget TopCat).map U.inclusion x ∈ ↑U
state_after: no goals

tactic: intro h
state_before: case h.mpr
X : TopCat
U : Opens ↑X
x : (forget TopCat).obj X
⊢ x ∈ ↑U → x ∈ Set.range ((forget TopCat).map U.inclusion)
state_after: case h.mpr
X : TopCat
U : Opens ↑X
x : (forget TopCat).obj X
h : x ∈ ↑U
⊢ x ∈ Set.range ((forget TopCat).map U.inclusion)

tactic: exact ⟨⟨x, h⟩, rfl⟩
state_before: case h.mpr
X : TopCat
U : Opens ↑X
x : (forget TopCat).obj X
h : x ∈ ↑U
⊢ x ∈ Set.range ((forget TopCat).map U.inclusion)
state_after: no goals
Theorem: MeasureTheory.measure_le_lintegral_pos
File: Mathlib/MeasureTheory/Integral/Average.lean

tactic: simpa only [laverage_eq_lintegral] using
  measure_le_laverage_pos (IsProbabilityMeasure.ne_zero μ) hf
state_before: α : Type u_1
E : Type u_2
F : Type u_3
m0 : MeasurableSpace α
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
μ ν : Measure α
s t N : Set α
f : α → ℝ≥0∞
inst✝ : IsProbabilityMeasure μ
hf : AEMeasurable f μ
⊢ 0 < μ {x | f x ≤ ∫⁻ (a : α), f a ∂μ}
state_after: no goals
Theorem: CauSeq.add_equiv_add
File: Mathlib/Algebra/Order/CauSeq/Basic.lean

tactic: simpa only [← add_sub_add_comm] using add_limZero hf hg
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f1 f2 g1 g2 : CauSeq β abv
hf : f1 ≈ f2
hg : g1 ≈ g2
⊢ f1 + g1 ≈ f2 + g2
state_after: no goals
Theorem: ComplexShape.prev_eq'
File: Mathlib/Algebra/Homology/ComplexShape.lean

tactic: apply c.prev_eq _ h
state_before: ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ c.prev j = i
state_after: ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ c.Rel (c.prev j) j

tactic: rw [prev, dif_pos]
state_before: ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ c.Rel (c.prev j) j
state_after: ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ c.Rel ?hc.choose j

case hc
ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ ∃ i, c.Rel i j

tactic: exact Exists.choose_spec (⟨i, h⟩ : ∃ k, c.Rel k j)
state_before: ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ c.Rel ?hc.choose j

case hc
ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ ∃ i, c.Rel i j
state_after: no goals
Theorem: Interval.coe_iInf₂
File: Mathlib/Order/Interval/Basic.lean

tactic: simp_rw [coe_iInf]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
κ : ι → Sort u_6
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
f : (i : ι) → κ i → Interval α
⊢ ↑(⨅ i, ⨅ j, f i j) = ⋂ i, ⋂ j, ↑(f i j)
state_after: no goals
Theorem: exists_of_schnirelmannDensity_eq_zero
File: Mathlib/Combinatorics/Schnirelmann.lean

tactic: by_contra! h
state_before: A : Set ℕ
inst✝ : DecidablePred fun x => x ∈ A
ε : ℝ
hε : 0 < ε
hA : schnirelmannDensity A = 0
⊢ ∃ n, 0 < n ∧ ↑(filter (fun x => x ∈ A) (Ioc 0 n)).card / ↑n < ε
state_after: A : Set ℕ
inst✝ : DecidablePred fun x => x ∈ A
ε : ℝ
hε : 0 < ε
hA : schnirelmannDensity A = 0
h : ∀ (n : ℕ), 0 < n → ε ≤ ↑(filter (fun x => x ∈ A) (Ioc 0 n)).card / ↑n
⊢ False

tactic: rw [← le_schnirelmannDensity_iff] at h
state_before: A : Set ℕ
inst✝ : DecidablePred fun x => x ∈ A
ε : ℝ
hε : 0 < ε
hA : schnirelmannDensity A = 0
h : ∀ (n : ℕ), 0 < n → ε ≤ ↑(filter (fun x => x ∈ A) (Ioc 0 n)).card / ↑n
⊢ False
state_after: A : Set ℕ
inst✝ : DecidablePred fun x => x ∈ A
ε : ℝ
hε : 0 < ε
hA : schnirelmannDensity A = 0
h : ε ≤ schnirelmannDensity A
⊢ False

tactic: linarith
state_before: A : Set ℕ
inst✝ : DecidablePred fun x => x ∈ A
ε : ℝ
hε : 0 < ε
hA : schnirelmannDensity A = 0
h : ε ≤ schnirelmannDensity A
⊢ False
state_after: no goals
Theorem: MeasureTheory.all_ae_of
File: Mathlib/MeasureTheory/OuterMeasure/AE.lean

tactic: filter_upwards [hp] with a ha using ha i
state_before: α : Type u_1
β : Type u_2
F : Type u_3
inst✝¹ : FunLike F (Set α) ℝ≥0∞
inst✝ : OuterMeasureClass F α
μ : F
s t : Set α
ι : Sort u_4
p : α → ι → Prop
hp : ∀ᵐ (a : α) ∂μ, ∀ (i : ι), p a i
i : ι
⊢ ∀ᵐ (a : α) ∂μ, p a i
state_after: no goals
Theorem: Polynomial.Separable.isCoprime
File: Mathlib/FieldTheory/Separable.lean

tactic: have := h.of_mul_left_left
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
h : (f * g).Separable
⊢ IsCoprime f g
state_after: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
h : (f * g).Separable
this : IsCoprime f (derivative (f * g))
⊢ IsCoprime f g

tactic: rw [derivative_mul] at this
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
h : (f * g).Separable
this : IsCoprime f (derivative (f * g))
⊢ IsCoprime f g
state_after: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
h : (f * g).Separable
this : IsCoprime f (derivative f * g + f * derivative g)
⊢ IsCoprime f g

tactic: exact IsCoprime.of_mul_right_right (IsCoprime.of_add_mul_left_right this)
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
h : (f * g).Separable
this : IsCoprime f (derivative f * g + f * derivative g)
⊢ IsCoprime f g
state_after: no goals
Theorem: AffineBasis.nonempty
File: Mathlib/LinearAlgebra/AffineSpace/Basis.lean

tactic: simpa only [@range_eq_empty _ _ hι, AffineSubspace.span_empty, bot_ne_top] using b.tot
state_before: ι : Type u_1
ι' : Type u_2
k : Type u_3
V : Type u_4
P : Type u_5
inst✝³ : AddCommGroup V
inst✝² : AffineSpace V P
inst✝¹ : Ring k
inst✝ : Module k V
b : AffineBasis ι k P
s : Finset ι
i j : ι
e : ι ≃ ι'
hι : IsEmpty ι
⊢ False
state_after: no goals
Theorem: Ordinal.nadd_one
File: Mathlib/SetTheory/Ordinal/NaturalOps.lean

tactic: induction' a using Ordinal.induction with a IH
state_before: a b c : Ordinal.{u}
⊢ a ♯ 1 = succ a
state_after: case h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 1 = succ k
⊢ a ♯ 1 = succ a

tactic: rw [nadd_def, blsub_one, nadd_zero, max_eq_right_iff, blsub_le_iff]
state_before: case h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 1 = succ k
⊢ a ♯ 1 = succ a
state_after: case h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 1 = succ k
⊢ ∀ i < a, i ♯ 1 < succ a

tactic: intro i hi
state_before: case h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 1 = succ k
⊢ ∀ i < a, i ♯ 1 < succ a
state_after: case h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 1 = succ k
i : Ordinal.{u}
hi : i < a
⊢ i ♯ 1 < succ a

tactic: rwa [IH i hi, succ_lt_succ_iff]
state_before: case h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 1 = succ k
i : Ordinal.{u}
hi : i < a
⊢ i ♯ 1 < succ a
state_after: no goals
Theorem: Monoid.CoprodI.empty_of_word_prod_eq_one
File: Mathlib/GroupTheory/CoprodI.lean

tactic: by_contra hnotempty
state_before: ι : Type u_1
M : ι → Type u_2
inst✝⁴ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝³ : Monoid N
hnontriv : Nontrivial ι
G : Type u_4
inst✝² : Group G
H : ι → Type u_5
inst✝¹ : (i : ι) → Group (H i)
f : (i : ι) → H i →* G
hcard : 3 ≤ #ι ∨ ∃ i, 3 ≤ #(H i)
α : Type u_6
inst✝ : MulAction G α
X : ι → Set α
hXnonempty : ∀ (i : ι), (X i).Nonempty
hXdisj : Pairwise fun i j => Disjoint (X i) (X j)
hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → (f i) h • X j ⊆ X i
w : Word H
h : (lift f) w.prod = 1
⊢ w = Word.empty
state_after: ι : Type u_1
M : ι → Type u_2
inst✝⁴ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝³ : Monoid N
hnontriv : Nontrivial ι
G : Type u_4
inst✝² : Group G
H : ι → Type u_5
inst✝¹ : (i : ι) → Group (H i)
f : (i : ι) → H i →* G
hcard : 3 ≤ #ι ∨ ∃ i, 3 ≤ #(H i)
α : Type u_6
inst✝ : MulAction G α
X : ι → Set α
hXnonempty : ∀ (i : ι), (X i).Nonempty
hXdisj : Pairwise fun i j => Disjoint (X i) (X j)
hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → (f i) h • X j ⊆ X i
w : Word H
h : (lift f) w.prod = 1
hnotempty : ¬w = Word.empty
⊢ False

tactic: obtain ⟨i, j, w, rfl⟩ := NeWord.of_word w hnotempty
state_before: ι : Type u_1
M : ι → Type u_2
inst✝⁴ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝³ : Monoid N
hnontriv : Nontrivial ι
G : Type u_4
inst✝² : Group G
H : ι → Type u_5
inst✝¹ : (i : ι) → Group (H i)
f : (i : ι) → H i →* G
hcard : 3 ≤ #ι ∨ ∃ i, 3 ≤ #(H i)
α : Type u_6
inst✝ : MulAction G α
X : ι → Set α
hXnonempty : ∀ (i : ι), (X i).Nonempty
hXdisj : Pairwise fun i j => Disjoint (X i) (X j)
hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → (f i) h • X j ⊆ X i
w : Word H
h : (lift f) w.prod = 1
hnotempty : ¬w = Word.empty
⊢ False
state_after: case intro.intro.intro
ι : Type u_1
M : ι → Type u_2
inst✝⁴ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝³ : Monoid N
hnontriv : Nontrivial ι
G : Type u_4
inst✝² : Group G
H : ι → Type u_5
inst✝¹ : (i : ι) → Group (H i)
f : (i : ι) → H i →* G
hcard : 3 ≤ #ι ∨ ∃ i, 3 ≤ #(H i)
α : Type u_6
inst✝ : MulAction G α
X : ι → Set α
hXnonempty : ∀ (i : ι), (X i).Nonempty
hXdisj : Pairwise fun i j => Disjoint (X i) (X j)
hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → (f i) h • X j ⊆ X i
i j : ι
w : NeWord H i j
h : (lift f) w.toWord.prod = 1
hnotempty : ¬w.toWord = Word.empty
⊢ False

tactic: exact lift_word_prod_nontrivial_of_not_empty f hcard X hXnonempty hXdisj hpp w h
state_before: case intro.intro.intro
ι : Type u_1
M : ι → Type u_2
inst✝⁴ : (i : ι) → Monoid (M i)
N : Type u_3
inst✝³ : Monoid N
hnontriv : Nontrivial ι
G : Type u_4
inst✝² : Group G
H : ι → Type u_5
inst✝¹ : (i : ι) → Group (H i)
f : (i : ι) → H i →* G
hcard : 3 ≤ #ι ∨ ∃ i, 3 ≤ #(H i)
α : Type u_6
inst✝ : MulAction G α
X : ι → Set α
hXnonempty : ∀ (i : ι), (X i).Nonempty
hXdisj : Pairwise fun i j => Disjoint (X i) (X j)
hpp : Pairwise fun i j => ∀ (h : H i), h ≠ 1 → (f i) h • X j ⊆ X i
i j : ι
w : NeWord H i j
h : (lift f) w.toWord.prod = 1
hnotempty : ¬w.toWord = Word.empty
⊢ False
state_after: no goals
Theorem: EMetric.hausdorffEdist_comm
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: simp only [hausdorffEdist_def]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ hausdorffEdist s t = hausdorffEdist t s
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ (⨆ x ∈ s, infEdist x t) ⊔ ⨆ y ∈ t, infEdist y s = (⨆ y ∈ t, infEdist y s) ⊔ ⨆ x ∈ s, infEdist x t

tactic: apply sup_comm
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
⊢ (⨆ x ∈ s, infEdist x t) ⊔ ⨆ y ∈ t, infEdist y s = (⨆ y ∈ t, infEdist y s) ⊔ ⨆ x ∈ s, infEdist x t
state_after: no goals
Theorem: Polynomial.divX_X_pow
File: Mathlib/Algebra/Polynomial/Inductions.lean

tactic: cases n
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ (X ^ n).divX = if n = 0 then 0 else X ^ (n - 1)
state_after: case zero
R : Type u
S : Type v
T : Type w
A : Type z
a b : R
inst✝ : Semiring R
p q : R[X]
⊢ (X ^ 0).divX = if 0 = 0 then 0 else X ^ (0 - 1)

case succ
R : Type u
S : Type v
T : Type w
A : Type z
a b : R
inst✝ : Semiring R
p q : R[X]
n✝ : ℕ
⊢ (X ^ (n✝ + 1)).divX = if n✝ + 1 = 0 then 0 else X ^ (n✝ + 1 - 1)

tactic: simp
state_before: case zero
R : Type u
S : Type v
T : Type w
A : Type z
a b : R
inst✝ : Semiring R
p q : R[X]
⊢ (X ^ 0).divX = if 0 = 0 then 0 else X ^ (0 - 1)
state_after: no goals

tactic: ext n
state_before: case succ
R : Type u
S : Type v
T : Type w
A : Type z
a b : R
inst✝ : Semiring R
p q : R[X]
n✝ : ℕ
⊢ (X ^ (n✝ + 1)).divX = if n✝ + 1 = 0 then 0 else X ^ (n✝ + 1 - 1)
state_after: case succ.a
R : Type u
S : Type v
T : Type w
A : Type z
a b : R
inst✝ : Semiring R
p q : R[X]
n✝ n : ℕ
⊢ (X ^ (n✝ + 1)).divX.coeff n = (if n✝ + 1 = 0 then 0 else X ^ (n✝ + 1 - 1)).coeff n

tactic: simp [coeff_X_pow]
state_before: case succ.a
R : Type u
S : Type v
T : Type w
A : Type z
a b : R
inst✝ : Semiring R
p q : R[X]
n✝ n : ℕ
⊢ (X ^ (n✝ + 1)).divX.coeff n = (if n✝ + 1 = 0 then 0 else X ^ (n✝ + 1 - 1)).coeff n
state_after: no goals
Theorem: Polynomial.rootMultiplicity_le_iff
File: Mathlib/Algebra/Polynomial/RingDivision.lean

tactic: rw [← (le_rootMultiplicity_iff p0).not, not_le, Nat.lt_add_one_iff]
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n✝ : ℕ
inst✝ : CommRing R
p : R[X]
p0 : p ≠ 0
a : R
n : ℕ
⊢ rootMultiplicity a p ≤ n ↔ ¬(X - C a) ^ (n + 1) ∣ p
state_after: no goals
Theorem: SMulPosStrictMono.lift
File: Mathlib/Algebra/Order/Module/Defs.lean

tactic: simp only [← lt_iff_lt_of_le_iff_le' hf hf, zero, smul] at *
state_before: α : Type u_1
β : Type u_2
a a₁✝ a₂✝ : α
b✝ b₁ b₂ : β
γ : Type u_3
inst✝⁸ : Zero α
inst✝⁷ : Preorder α
inst✝⁶ : Zero β
inst✝⁵ : Preorder β
inst✝⁴ : Zero γ
inst✝³ : Preorder γ
inst✝² : SMul α β
inst✝¹ : SMul α γ
f : β → γ
hf : ∀ {b₁ b₂ : β}, f b₁ ≤ f b₂ ↔ b₁ ≤ b₂
smul : ∀ (a : α) (b : β), f (a • b) = a • f b
zero : f 0 = 0
inst✝ : SMulPosStrictMono α γ
b : β
hb : 0 < b
a₁ a₂ : α
ha : a₁ < a₂
⊢ a₁ • b < a₂ • b
state_after: α : Type u_1
β : Type u_2
a a₁✝ a₂✝ : α
b✝ b₁ b₂ : β
γ : Type u_3
inst✝⁸ : Zero α
inst✝⁷ : Preorder α
inst✝⁶ : Zero β
inst✝⁵ : Preorder β
inst✝⁴ : Zero γ
inst✝³ : Preorder γ
inst✝² : SMul α β
inst✝¹ : SMul α γ
f : β → γ
hf : ∀ {b₁ b₂ : β}, f b₁ ≤ f b₂ ↔ b₁ ≤ b₂
inst✝ : SMulPosStrictMono α γ
b : β
a₁ a₂ : α
ha : a₁ < a₂
smul : α → β → True
zero : True
hb : 0 < f b
⊢ a₁ • f b < a₂ • f b

tactic: exact smul_lt_smul_of_pos_right ha hb
state_before: α : Type u_1
β : Type u_2
a a₁✝ a₂✝ : α
b✝ b₁ b₂ : β
γ : Type u_3
inst✝⁸ : Zero α
inst✝⁷ : Preorder α
inst✝⁶ : Zero β
inst✝⁵ : Preorder β
inst✝⁴ : Zero γ
inst✝³ : Preorder γ
inst✝² : SMul α β
inst✝¹ : SMul α γ
f : β → γ
hf : ∀ {b₁ b₂ : β}, f b₁ ≤ f b₂ ↔ b₁ ≤ b₂
inst✝ : SMulPosStrictMono α γ
b : β
a₁ a₂ : α
ha : a₁ < a₂
smul : α → β → True
zero : True
hb : 0 < f b
⊢ a₁ • f b < a₂ • f b
state_after: no goals
Theorem: isUnit_iff_exists
File: Mathlib/Algebra/Group/Units.lean

tactic: refine ⟨fun ⟨u, hu⟩ => ?_, fun ⟨b, h1b, h2b⟩ => ⟨⟨x, b, h1b, h2b⟩, rfl⟩⟩
state_before: α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
x : M
⊢ IsUnit x ↔ ∃ b, x * b = 1 ∧ b * x = 1
state_after: α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
x : M
x✝ : IsUnit x
u : Mˣ
hu : ↑u = x
⊢ ∃ b, x * b = 1 ∧ b * x = 1

tactic: subst x
state_before: α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
x : M
x✝ : IsUnit x
u : Mˣ
hu : ↑u = x
⊢ ∃ b, x * b = 1 ∧ b * x = 1
state_after: α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
u : Mˣ
x✝ : IsUnit ↑u
⊢ ∃ b, ↑u * b = 1 ∧ b * ↑u = 1

tactic: exact ⟨u.inv, u.val_inv, u.inv_val⟩
state_before: α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
u : Mˣ
x✝ : IsUnit ↑u
⊢ ∃ b, ↑u * b = 1 ∧ b * ↑u = 1
state_after: no goals
Theorem: WittVector.frobeniusRotation_nonzero
File: Mathlib/RingTheory/WittVector/FrobeniusFractionField.lean

tactic: intro h
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝² : Field k
inst✝¹ : CharP k p
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
⊢ frobeniusRotation p ha₁ ha₂ ≠ 0
state_after: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝² : Field k
inst✝¹ : CharP k p
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
h : frobeniusRotation p ha₁ ha₂ = 0
⊢ False

tactic: apply solution_nonzero p ha₁ ha₂
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝² : Field k
inst✝¹ : CharP k p
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
h : frobeniusRotation p ha₁ ha₂ = 0
⊢ False
state_after: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝² : Field k
inst✝¹ : CharP k p
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
h : frobeniusRotation p ha₁ ha₂ = 0
⊢ solution p a₁ a₂ = 0

tactic: simpa [← h, frobeniusRotation, frobeniusRotationCoeff] using WittVector.zero_coeff p k 0
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝² : Field k
inst✝¹ : CharP k p
inst✝ : IsAlgClosed k
a₁ a₂ : 𝕎 k
ha₁ : a₁.coeff 0 ≠ 0
ha₂ : a₂.coeff 0 ≠ 0
h : frobeniusRotation p ha₁ ha₂ = 0
⊢ solution p a₁ a₂ = 0
state_after: no goals
Theorem: CategoryTheory.Limits.IsColimit.uniq_cocone_morphism
File: Mathlib/CategoryTheory/Limits/IsLimit.lean

tactic: intro g
state_before: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
s t : Cocone F
h : IsColimit t
f f' : t ⟶ s
⊢ ∀ {g : t ⟶ s}, g = h.descCoconeMorphism s
state_after: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
s t : Cocone F
h : IsColimit t
f f' g : t ⟶ s
⊢ g = h.descCoconeMorphism s

tactic: ext
state_before: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
s t : Cocone F
h : IsColimit t
f f' g : t ⟶ s
⊢ g = h.descCoconeMorphism s
state_after: case w
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
s t : Cocone F
h : IsColimit t
f f' g : t ⟶ s
⊢ g.hom = (h.descCoconeMorphism s).hom

tactic: exact h.uniq _ _ g.w
state_before: case w
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
s t : Cocone F
h : IsColimit t
f f' g : t ⟶ s
⊢ g.hom = (h.descCoconeMorphism s).hom
state_after: no goals
Theorem: Nat.Coprime.gcd_mul_right_cancel_right
File: .lake/packages/batteries/Batteries/Data/Nat/Gcd.lean

tactic: rw [Nat.mul_comm n k, H.gcd_mul_left_cancel_right n]
state_before: k m n : Nat
H : k.Coprime m
⊢ m.gcd (n * k) = m.gcd n
state_after: no goals
Theorem: finprod_mem_union'
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: rw [← finprod_mem_union_inter' hs ht, disjoint_iff_inter_eq_empty.1 hst, finprod_mem_empty,
  mul_one]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f g : α → M
a b : α
s t : Set α
hst : Disjoint s t
hs : (s ∩ mulSupport f).Finite
ht : (t ∩ mulSupport f).Finite
⊢ ∏ᶠ (i : α) (_ : i ∈ s ∪ t), f i = (∏ᶠ (i : α) (_ : i ∈ s), f i) * ∏ᶠ (i : α) (_ : i ∈ t), f i
state_after: no goals
Theorem: MeasureTheory.OuterMeasure.mkMetric'.le_pre
File: Mathlib/MeasureTheory/Measure/Hausdorff.lean

tactic: simp only [pre, le_boundedBy, extend, le_iInf_iff]
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝¹ : EMetricSpace X
inst✝ : EMetricSpace Y
m : Set X → ℝ≥0∞
r : ℝ≥0∞
μ : OuterMeasure X
s : Set X
⊢ μ ≤ pre m r ↔ ∀ (s : Set X), diam s ≤ r → μ s ≤ m s
state_after: no goals
Theorem: SimpleGraph.Subgraph.deleteEdges_le_of_le
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: constructor <;> simp (config := { contextual := true }) only [deleteEdges_verts, deleteEdges_adj,
  true_and_iff, and_imp, subset_rfl]
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : G.Subgraph
s✝ s s' : Set (Sym2 V)
h : s ⊆ s'
⊢ G'.deleteEdges s' ≤ G'.deleteEdges s
state_after: case right
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : G.Subgraph
s✝ s s' : Set (Sym2 V)
h : s ⊆ s'
⊢ ∀ ⦃v w : V⦄, G'.Adj v w → s(v, w) ∉ s' → s(v, w) ∉ s

tactic: exact fun _ _ _ hs' hs ↦ hs' (h hs)
state_before: case right
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : G.Subgraph
s✝ s s' : Set (Sym2 V)
h : s ⊆ s'
⊢ ∀ ⦃v w : V⦄, G'.Adj v w → s(v, w) ∉ s' → s(v, w) ∉ s
state_after: no goals