1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: AlgebraicIndependent.coe_range
File: Mathlib/RingTheory/AlgebraicIndependent.lean

tactic: simpa using hx.comp _ (rangeSplitting_injective x)
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
K : Type u_4
A : Type u_5
A' : Type u_6
A'' : Type u_7
V : Type u
V' : Type u_8
x : ι → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
hx : AlgebraicIndependent R x
⊢ AlgebraicIndependent R Subtype.val
state_after: no goals
Theorem: Prop.exists_iff
File: Mathlib/Logic/Basic.lean

tactic: simpa only [H] using h₂
state_before: α : Sort u_1
β : Sort u_2
p✝ q : α → Prop
p : Prop → Prop
x✝ : ∃ h, p h
h₁ : Prop
h₂ : p h₁
H : h₁
⊢ p True
state_after: no goals

tactic: simpa only [H] using h₂
state_before: α : Sort u_1
β : Sort u_2
p✝ q : α → Prop
p : Prop → Prop
x✝ : ∃ h, p h
h₁ : Prop
h₂ : p h₁
H : ¬h₁
⊢ p False
state_after: no goals
Theorem: PowerSeries.coeff_mul_of_lt_order
File: Mathlib/RingTheory/PowerSeries/Order.lean

tactic: suffices coeff R n (φ * ψ) = ∑ p ∈ antidiagonal n, 0 by rw [this, Finset.sum_const_zero]
state_before: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
⊢ (coeff R n) (φ * ψ) = 0
state_after: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
⊢ (coeff R n) (φ * ψ) = ∑ p ∈ antidiagonal n, 0

tactic: rw [coeff_mul]
state_before: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
⊢ (coeff R n) (φ * ψ) = ∑ p ∈ antidiagonal n, 0
state_after: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
⊢ ∑ p ∈ antidiagonal n, (coeff R p.1) φ * (coeff R p.2) ψ = ∑ p ∈ antidiagonal n, 0

tactic: apply Finset.sum_congr rfl
state_before: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
⊢ ∑ p ∈ antidiagonal n, (coeff R p.1) φ * (coeff R p.2) ψ = ∑ p ∈ antidiagonal n, 0
state_after: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
⊢ ∀ x ∈ antidiagonal n, (coeff R x.1) φ * (coeff R x.2) ψ = 0

tactic: intro x hx
state_before: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
⊢ ∀ x ∈ antidiagonal n, (coeff R x.1) φ * (coeff R x.2) ψ = 0
state_after: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
x : ℕ × ℕ
hx : x ∈ antidiagonal n
⊢ (coeff R x.1) φ * (coeff R x.2) ψ = 0

tactic: refine mul_eq_zero_of_right (coeff R x.fst φ) (coeff_of_lt_order x.snd (lt_of_le_of_lt ?_ h))
state_before: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
x : ℕ × ℕ
hx : x ∈ antidiagonal n
⊢ (coeff R x.1) φ * (coeff R x.2) ψ = 0
state_after: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
x : ℕ × ℕ
hx : x ∈ antidiagonal n
⊢ ↑x.2 ≤ ↑n

tactic: rw [mem_antidiagonal] at hx
state_before: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
x : ℕ × ℕ
hx : x ∈ antidiagonal n
⊢ ↑x.2 ≤ ↑n
state_after: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
x : ℕ × ℕ
hx : x.1 + x.2 = n
⊢ ↑x.2 ≤ ↑n

tactic: norm_cast
state_before: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
x : ℕ × ℕ
hx : x.1 + x.2 = n
⊢ ↑x.2 ≤ ↑n
state_after: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
x : ℕ × ℕ
hx : x.1 + x.2 = n
⊢ x.2 ≤ n

tactic: omega
state_before: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
x : ℕ × ℕ
hx : x.1 + x.2 = n
⊢ x.2 ≤ n
state_after: no goals

tactic: rw [this, Finset.sum_const_zero]
state_before: R : Type u_1
inst✝ : Semiring R
φ✝ φ ψ : R⟦X⟧
n : ℕ
h : ↑n < ψ.order
this : (coeff R n) (φ * ψ) = ∑ p ∈ antidiagonal n, 0
⊢ (coeff R n) (φ * ψ) = 0
state_after: no goals
Theorem: Matrix.mulVec_stdBasisMatrix
File: Mathlib/Data/Matrix/Basis.lean

tactic: ext i'
state_before: l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
inst✝ : Fintype m
i : n
j : m
c : α
x : m → α
⊢ stdBasisMatrix i j c *ᵥ x = Function.update 0 i (c * x j)
state_after: case h
l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
inst✝ : Fintype m
i : n
j : m
c : α
x : m → α
i' : n
⊢ (stdBasisMatrix i j c *ᵥ x) i' = Function.update 0 i (c * x j) i'

tactic: simp [stdBasisMatrix, mulVec, dotProduct]
state_before: case h
l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
inst✝ : Fintype m
i : n
j : m
c : α
x : m → α
i' : n
⊢ (stdBasisMatrix i j c *ᵥ x) i' = Function.update 0 i (c * x j) i'
state_after: case h
l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
inst✝ : Fintype m
i : n
j : m
c : α
x : m → α
i' : n
⊢ (∑ x_1 : m, if i = i' ∧ j = x_1 then c * x x_1 else 0) = Function.update 0 i (c * x j) i'

tactic: rcases eq_or_ne i i' with rfl|h
state_before: case h
l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
inst✝ : Fintype m
i : n
j : m
c : α
x : m → α
i' : n
⊢ (∑ x_1 : m, if i = i' ∧ j = x_1 then c * x x_1 else 0) = Function.update 0 i (c * x j) i'
state_after: case h.inl
l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
inst✝ : Fintype m
i : n
j : m
c : α
x : m → α
⊢ (∑ x_1 : m, if i = i ∧ j = x_1 then c * x x_1 else 0) = Function.update 0 i (c * x j) i

case h.inr
l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
inst✝ : Fintype m
i : n
j : m
c : α
x : m → α
i' : n
h : i ≠ i'
⊢ (∑ x_1 : m, if i = i' ∧ j = x_1 then c * x x_1 else 0) = Function.update 0 i (c * x j) i'

tactic: simp [h, h.symm]
state_before: case h.inr
l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
inst✝ : Fintype m
i : n
j : m
c : α
x : m → α
i' : n
h : i ≠ i'
⊢ (∑ x_1 : m, if i = i' ∧ j = x_1 then c * x x_1 else 0) = Function.update 0 i (c * x j) i'
state_after: no goals

tactic: simp
state_before: case h.inl
l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
inst✝ : Fintype m
i : n
j : m
c : α
x : m → α
⊢ (∑ x_1 : m, if i = i ∧ j = x_1 then c * x x_1 else 0) = Function.update 0 i (c * x j) i
state_after: no goals
Theorem: Submonoid.nontrivial_iff_exists_ne_one
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

tactic: simp [Ne]
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S✝ : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
S : Submonoid M
⊢ (∃ x, ∃ (hx : x ∈ S), ⟨x, hx⟩ ≠ ⟨1, ⋯⟩) ↔ ∃ x ∈ S, x ≠ 1
state_after: no goals
Theorem: Directed.finset_le
File: Mathlib/Data/Finset/Order.lean

tactic: simp
state_before: α : Type u
r : α → α → Prop
inst✝ : IsTrans α r
ι : Type u_1
hι : Nonempty ι
f : ι → α
D : Directed r f
s : Finset ι
z x✝ : ι
⊢ x✝ ∈ 0 → r (f x✝) (f z)
state_after: no goals
Theorem: Set.encard_union_le
File: Mathlib/Data/Set/Card.lean

tactic: rw [← encard_union_add_encard_inter]
state_before: α : Type u_1
β : Type u_2
s✝ t✝ s t : Set α
⊢ (s ∪ t).encard ≤ s.encard + t.encard
state_after: α : Type u_1
β : Type u_2
s✝ t✝ s t : Set α
⊢ (s ∪ t).encard ≤ (s ∪ t).encard + (s ∩ t).encard

tactic: exact le_self_add
state_before: α : Type u_1
β : Type u_2
s✝ t✝ s t : Set α
⊢ (s ∪ t).encard ≤ (s ∪ t).encard + (s ∩ t).encard
state_after: no goals
Theorem: BoundedContinuousFunction.dist_set_exists
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: rcases isBounded_iff.1 (f.isBounded_range.union g.isBounded_range) with ⟨C, hC⟩
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
f g : α →ᵇ β
x : α
C : ℝ
⊢ ∃ C, 0 ≤ C ∧ ∀ (x : α), dist (f x) (g x) ≤ C
state_after: case intro
F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
f g : α →ᵇ β
x : α
C✝ C : ℝ
hC : ∀ ⦃x : β⦄, x ∈ range ⇑f ∪ range ⇑g → ∀ ⦃y : β⦄, y ∈ range ⇑f ∪ range ⇑g → dist x y ≤ C
⊢ ∃ C, 0 ≤ C ∧ ∀ (x : α), dist (f x) (g x) ≤ C

tactic: refine ⟨max 0 C, le_max_left _ _, fun x => (hC ?_ ?_).trans (le_max_right _ _)⟩
  <;> [left; right]
  <;> apply mem_range_self
state_before: case intro
F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
f g : α →ᵇ β
x : α
C✝ C : ℝ
hC : ∀ ⦃x : β⦄, x ∈ range ⇑f ∪ range ⇑g → ∀ ⦃y : β⦄, y ∈ range ⇑f ∪ range ⇑g → dist x y ≤ C
⊢ ∃ C, 0 ≤ C ∧ ∀ (x : α), dist (f x) (g x) ≤ C
state_after: no goals
Theorem: PadicInt.mem_nonunits
File: Mathlib/NumberTheory/Padics/PadicIntegers.lean

tactic: rw [lt_iff_le_and_ne]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
z : ℤ_[p]
⊢ z ∈ nonunits ℤ_[p] ↔ ‖z‖ < 1
state_after: p : ℕ
hp : Fact (Nat.Prime p)
z : ℤ_[p]
⊢ z ∈ nonunits ℤ_[p] ↔ ‖z‖ ≤ 1 ∧ ‖z‖ ≠ 1

tactic: simp [norm_le_one z, nonunits, isUnit_iff]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
z : ℤ_[p]
⊢ z ∈ nonunits ℤ_[p] ↔ ‖z‖ ≤ 1 ∧ ‖z‖ ≠ 1
state_after: no goals
Theorem: IsPrimitiveRoot.minpoly_eq_cyclotomic_of_irreducible
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Roots.lean

tactic: haveI := NeZero.of_noZeroSMulDivisors K R n
state_before: R✝ : Type u_1
inst✝⁵ : CommRing R✝
n✝ : ℕ
K : Type u_2
inst✝⁴ : Field K
R : Type u_3
inst✝³ : CommRing R
inst✝² : IsDomain R
μ : R
n : ℕ
inst✝¹ : Algebra K R
hμ : IsPrimitiveRoot μ n
h : Irreducible (cyclotomic n K)
inst✝ : NeZero ↑n
⊢ cyclotomic n K = minpoly K μ
state_after: R✝ : Type u_1
inst✝⁵ : CommRing R✝
n✝ : ℕ
K : Type u_2
inst✝⁴ : Field K
R : Type u_3
inst✝³ : CommRing R
inst✝² : IsDomain R
μ : R
n : ℕ
inst✝¹ : Algebra K R
hμ : IsPrimitiveRoot μ n
h : Irreducible (cyclotomic n K)
inst✝ : NeZero ↑n
this : NeZero ↑n
⊢ cyclotomic n K = minpoly K μ

tactic: refine minpoly.eq_of_irreducible_of_monic h ?_ (cyclotomic.monic n K)
state_before: R✝ : Type u_1
inst✝⁵ : CommRing R✝
n✝ : ℕ
K : Type u_2
inst✝⁴ : Field K
R : Type u_3
inst✝³ : CommRing R
inst✝² : IsDomain R
μ : R
n : ℕ
inst✝¹ : Algebra K R
hμ : IsPrimitiveRoot μ n
h : Irreducible (cyclotomic n K)
inst✝ : NeZero ↑n
this : NeZero ↑n
⊢ cyclotomic n K = minpoly K μ
state_after: R✝ : Type u_1
inst✝⁵ : CommRing R✝
n✝ : ℕ
K : Type u_2
inst✝⁴ : Field K
R : Type u_3
inst✝³ : CommRing R
inst✝² : IsDomain R
μ : R
n : ℕ
inst✝¹ : Algebra K R
hμ : IsPrimitiveRoot μ n
h : Irreducible (cyclotomic n K)
inst✝ : NeZero ↑n
this : NeZero ↑n
⊢ (aeval μ) (cyclotomic n K) = 0

tactic: rwa [aeval_def, eval₂_eq_eval_map, map_cyclotomic, ← IsRoot.def, isRoot_cyclotomic_iff]
state_before: R✝ : Type u_1
inst✝⁵ : CommRing R✝
n✝ : ℕ
K : Type u_2
inst✝⁴ : Field K
R : Type u_3
inst✝³ : CommRing R
inst✝² : IsDomain R
μ : R
n : ℕ
inst✝¹ : Algebra K R
hμ : IsPrimitiveRoot μ n
h : Irreducible (cyclotomic n K)
inst✝ : NeZero ↑n
this : NeZero ↑n
⊢ (aeval μ) (cyclotomic n K) = 0
state_after: no goals
Theorem: Fin.image_succ_univ
File: Mathlib/Data/Fintype/Basic.lean

tactic: rw [← Fin.succAbove_zero, Fin.image_succAbove_univ]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
⊢ image succ univ = {0}ᶜ
state_after: no goals
Theorem: NNReal.iInf_const_zero
File: Mathlib/Data/NNReal/Basic.lean

tactic: rw [← coe_inj, coe_iInf]
state_before: ι : Sort u_1
f : ι → ℝ≥0
α : Sort u_2
⊢ ⨅ x, 0 = 0
state_after: ι : Sort u_1
f : ι → ℝ≥0
α : Sort u_2
⊢ ⨅ i, ↑0 = ↑0

tactic: exact Real.ciInf_const_zero
state_before: ι : Sort u_1
f : ι → ℝ≥0
α : Sort u_2
⊢ ⨅ i, ↑0 = ↑0
state_after: no goals
Theorem: CategoryTheory.Presieve.is_compatible_of_exists_amalgamation
File: Mathlib/CategoryTheory/Sites/IsSheafFor.lean

tactic: cases' h with t ht
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
h : ∃ t, x.IsAmalgamation t
⊢ x.Compatible
state_after: case intro
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
ht : x.IsAmalgamation t
⊢ x.Compatible

tactic: intro Y₁ Y₂ Z g₁ g₂ f₁ f₂ h₁ h₂ comm
state_before: case intro
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
ht : x.IsAmalgamation t
⊢ x.Compatible
state_after: case intro
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
ht : x.IsAmalgamation t
Y₁ Y₂ Z : C
g₁ : Z ⟶ Y₁
g₂ : Z ⟶ Y₂
f₁ : Y₁ ⟶ X
f₂ : Y₂ ⟶ X
h₁ : R f₁
h₂ : R f₂
comm : g₁ ≫ f₁ = g₂ ≫ f₂
⊢ P.map g₁.op (x f₁ h₁) = P.map g₂.op (x f₂ h₂)

tactic: rw [← ht _ h₁, ← ht _ h₂, ← FunctorToTypes.map_comp_apply, ← op_comp, comm]
state_before: case intro
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
ht : x.IsAmalgamation t
Y₁ Y₂ Z : C
g₁ : Z ⟶ Y₁
g₂ : Z ⟶ Y₂
f₁ : Y₁ ⟶ X
f₂ : Y₂ ⟶ X
h₁ : R f₁
h₂ : R f₂
comm : g₁ ≫ f₁ = g₂ ≫ f₂
⊢ P.map g₁.op (x f₁ h₁) = P.map g₂.op (x f₂ h₂)
state_after: case intro
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
ht : x.IsAmalgamation t
Y₁ Y₂ Z : C
g₁ : Z ⟶ Y₁
g₂ : Z ⟶ Y₂
f₁ : Y₁ ⟶ X
f₂ : Y₂ ⟶ X
h₁ : R f₁
h₂ : R f₂
comm : g₁ ≫ f₁ = g₂ ≫ f₂
⊢ P.map (g₂ ≫ f₂).op t = P.map g₂.op (P.map f₂.op t)

tactic: simp
state_before: case intro
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P R
t : P.obj { unop := X }
ht : x.IsAmalgamation t
Y₁ Y₂ Z : C
g₁ : Z ⟶ Y₁
g₂ : Z ⟶ Y₂
f₁ : Y₁ ⟶ X
f₂ : Y₂ ⟶ X
h₁ : R f₁
h₂ : R f₂
comm : g₁ ≫ f₁ = g₂ ≫ f₂
⊢ P.map (g₂ ≫ f₂).op t = P.map g₂.op (P.map f₂.op t)
state_after: no goals
Theorem: IsLocalizedModule.mk'_eq_zero
File: Mathlib/Algebra/Module/LocalizedModule.lean

tactic: rw [mk'_eq_iff, smul_zero]
state_before: R : Type u_1
inst✝¹² : CommSemiring R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
A : Type u_5
inst✝⁸ : CommSemiring A
inst✝⁷ : Algebra R A
inst✝⁶ : Module A M'
inst✝⁵ : IsLocalization S A
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M''
inst✝¹ : IsScalarTower R A M'
f : M →ₗ[R] M'
g : M →ₗ[R] M''
inst✝ : IsLocalizedModule S f
m : M
s : ↥S
⊢ mk' f m s = 0 ↔ f m = 0
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.add_of_Z_eq_zero
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rw [add, if_pos <| equiv_of_Z_eq_zero hP hQ hPz hQz, dblXYZ_of_Z_eq_zero hP.left hPz]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → F
hP : W.Nonsingular P
hQ : W.Nonsingular Q
hPz : P z = 0
hQz : Q z = 0
⊢ W.add P Q = P x ^ 2 • ![1, 1, 0]
state_after: no goals
Theorem: Polynomial.dickson_one_one_charP
File: Mathlib/RingTheory/Polynomial/Dickson.lean

tactic: have h : (1 : R) = ZMod.castHom (dvd_refl p) R 1 := by
  simp only [ZMod.castHom_apply, ZMod.cast_one']
state_before: R : Type u_1
S : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing S
k : ℕ
a : R
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : CharP R p
⊢ dickson 1 1 p = X ^ p
state_after: R : Type u_1
S : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing S
k : ℕ
a : R
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : CharP R p
h : 1 = (ZMod.castHom ⋯ R) 1
⊢ dickson 1 1 p = X ^ p

tactic: rw [h, ← map_dickson (ZMod.castHom (dvd_refl p) R), dickson_one_one_zmod_p, Polynomial.map_pow,
  map_X]
state_before: R : Type u_1
S : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing S
k : ℕ
a : R
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : CharP R p
h : 1 = (ZMod.castHom ⋯ R) 1
⊢ dickson 1 1 p = X ^ p
state_after: no goals

tactic: simp only [ZMod.castHom_apply, ZMod.cast_one']
state_before: R : Type u_1
S : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing S
k : ℕ
a : R
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : CharP R p
⊢ 1 = (ZMod.castHom ⋯ R) 1
state_after: no goals
Theorem: Polynomial.iterate_derivative_natCast_mul
File: Mathlib/Algebra/Polynomial/Derivative.lean

tactic: induction' k with k ih generalizing f <;> simp [*]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝ : Semiring R
n k : ℕ
f : R[X]
⊢ (⇑derivative)^[k] (↑n * f) = ↑n * (⇑derivative)^[k] f
state_after: no goals
Theorem: integral_cos_pow_three
File: Mathlib/Analysis/SpecialFunctions/Integrals.lean

tactic: have := @integral_sin_pow_mul_cos_pow_odd a b 0 1
state_before: a b : ℝ
n : ℕ
⊢ ∫ (x : ℝ) in a..b, cos x ^ 3 = sin b - sin a - (sin b ^ 3 - sin a ^ 3) / 3
state_after: a b : ℝ
n : ℕ
this : ∫ (x : ℝ) in a..b, sin x ^ 0 * cos x ^ (2 * 1 + 1) = ∫ (u : ℝ) in sin a..sin b, u ^ 0 * (1 - u ^ 2) ^ 1
⊢ ∫ (x : ℝ) in a..b, cos x ^ 3 = sin b - sin a - (sin b ^ 3 - sin a ^ 3) / 3

tactic: norm_num at this
state_before: a b : ℝ
n : ℕ
this : ∫ (x : ℝ) in a..b, sin x ^ 0 * cos x ^ (2 * 1 + 1) = ∫ (u : ℝ) in sin a..sin b, u ^ 0 * (1 - u ^ 2) ^ 1
⊢ ∫ (x : ℝ) in a..b, cos x ^ 3 = sin b - sin a - (sin b ^ 3 - sin a ^ 3) / 3
state_after: a b : ℝ
n : ℕ
this : ∫ (x : ℝ) in a..b, cos x ^ 3 = sin b - sin a - (sin b ^ 3 - sin a ^ 3) / 3
⊢ ∫ (x : ℝ) in a..b, cos x ^ 3 = sin b - sin a - (sin b ^ 3 - sin a ^ 3) / 3

tactic: exact this
state_before: a b : ℝ
n : ℕ
this : ∫ (x : ℝ) in a..b, cos x ^ 3 = sin b - sin a - (sin b ^ 3 - sin a ^ 3) / 3
⊢ ∫ (x : ℝ) in a..b, cos x ^ 3 = sin b - sin a - (sin b ^ 3 - sin a ^ 3) / 3
state_after: no goals
Theorem: IsLocalizedModule.isInteger_smul
File: Mathlib/Algebra/Module/LocalizedModuleIntegers.lean

tactic: rcases hx with ⟨x', hx⟩
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
S : Submonoid R
M : Type u_2
inst✝³ : AddCommMonoid M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
f : M →ₗ[R] M'
a : R
x : M'
hx : IsInteger f x
⊢ IsInteger f (a • x)
state_after: case intro
R : Type u_1
inst✝⁴ : CommSemiring R
S : Submonoid R
M : Type u_2
inst✝³ : AddCommMonoid M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
f : M →ₗ[R] M'
a : R
x : M'
x' : M
hx : f x' = x
⊢ IsInteger f (a • x)

tactic: use a • x'
state_before: case intro
R : Type u_1
inst✝⁴ : CommSemiring R
S : Submonoid R
M : Type u_2
inst✝³ : AddCommMonoid M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
f : M →ₗ[R] M'
a : R
x : M'
x' : M
hx : f x' = x
⊢ IsInteger f (a • x)
state_after: case h
R : Type u_1
inst✝⁴ : CommSemiring R
S : Submonoid R
M : Type u_2
inst✝³ : AddCommMonoid M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
f : M →ₗ[R] M'
a : R
x : M'
x' : M
hx : f x' = x
⊢ f (a • x') = a • x

tactic: rw [← hx, LinearMapClass.map_smul]
state_before: case h
R : Type u_1
inst✝⁴ : CommSemiring R
S : Submonoid R
M : Type u_2
inst✝³ : AddCommMonoid M
inst✝² : Module R M
M' : Type u_3
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
f : M →ₗ[R] M'
a : R
x : M'
x' : M
hx : f x' = x
⊢ f (a • x') = a • x
state_after: no goals
Theorem: Path.map_map
File: Mathlib/Topology/Connected/PathConnected.lean

tactic: ext
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ γ : Path x y
Z : Type u_4
inst✝ : TopologicalSpace Z
f : X → Y
hf : Continuous f
g : Y → Z
hg : Continuous g
⊢ (γ.map hf).map hg = γ.map ⋯
state_after: case a.h
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ γ : Path x y
Z : Type u_4
inst✝ : TopologicalSpace Z
f : X → Y
hf : Continuous f
g : Y → Z
hg : Continuous g
x✝ : ↑I
⊢ ((γ.map hf).map hg) x✝ = (γ.map ⋯) x✝

tactic: rfl
state_before: case a.h
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ γ : Path x y
Z : Type u_4
inst✝ : TopologicalSpace Z
f : X → Y
hf : Continuous f
g : Y → Z
hg : Continuous g
x✝ : ↑I
⊢ ((γ.map hf).map hg) x✝ = (γ.map ⋯) x✝
state_after: no goals
Theorem: MeasureTheory.integral_comp_rpow_Ioi_of_pos
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

tactic: convert integral_comp_rpow_Ioi g hp.ne'
state_before: E : Type u_1
f : ℝ → E
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
g : ℝ → E
p : ℝ
hp : 0 < p
⊢ ∫ (x : ℝ) in Ioi 0, (p * x ^ (p - 1)) • g (x ^ p) = ∫ (y : ℝ) in Ioi 0, g y
state_after: case h.e'_2.h.e'_7.h.h.e'_5.h.e'_5
E : Type u_1
f : ℝ → E
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
g : ℝ → E
p : ℝ
hp : 0 < p
x✝ : ℝ
⊢ p = |p|

tactic: rw [abs_of_nonneg hp.le]
state_before: case h.e'_2.h.e'_7.h.h.e'_5.h.e'_5
E : Type u_1
f : ℝ → E
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
g : ℝ → E
p : ℝ
hp : 0 < p
x✝ : ℝ
⊢ p = |p|
state_after: no goals
Theorem: Filter.exists_eventually_atTop
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: simp_rw [eventually_atTop, ← exists_swap (α := α)]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : SemilatticeSup α
inst✝ : Nonempty α
r : α → β → Prop
⊢ (∃ b, ∀ᶠ (a : α) in atTop, r a b) ↔ ∀ᶠ (a₀ : α) in atTop, ∃ b, ∀ a ≥ a₀, r a b
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : SemilatticeSup α
inst✝ : Nonempty α
r : α → β → Prop
⊢ (∃ x y, ∀ b ≥ x, r b y) ↔ ∃ a, ∀ b ≥ a, ∃ b_1, ∀ a ≥ b, r a b_1

tactic: exact exists_congr fun a ↦ .symm <| forall_ge_iff <| Monotone.exists fun _ _ _ hb H n hn ↦
  H n (hb.trans hn)
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : SemilatticeSup α
inst✝ : Nonempty α
r : α → β → Prop
⊢ (∃ x y, ∀ b ≥ x, r b y) ↔ ∃ a, ∀ b ≥ a, ∃ b_1, ∀ a ≥ b, r a b_1
state_after: no goals
Theorem: Matrix.reindexLinearEquiv_trans
File: Mathlib/LinearAlgebra/Matrix/Reindex.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
l' : Type u_5
m' : Type u_6
n' : Type u_7
o' : Type u_8
m'' : Type u_9
n'' : Type u_10
R : Type u_11
A : Type u_12
inst✝² : Semiring R
inst✝¹ : AddCommMonoid A
inst✝ : Module R A
e₁ : m ≃ m'
e₂ : n ≃ n'
e₁' : m' ≃ m''
e₂' : n' ≃ n''
⊢ reindexLinearEquiv R A e₁ e₂ ≪≫ₗ reindexLinearEquiv R A e₁' e₂' = reindexLinearEquiv R A (e₁.trans e₁') (e₂.trans e₂')
state_after: case h.a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
l' : Type u_5
m' : Type u_6
n' : Type u_7
o' : Type u_8
m'' : Type u_9
n'' : Type u_10
R : Type u_11
A : Type u_12
inst✝² : Semiring R
inst✝¹ : AddCommMonoid A
inst✝ : Module R A
e₁ : m ≃ m'
e₂ : n ≃ n'
e₁' : m' ≃ m''
e₂' : n' ≃ n''
x✝ : Matrix m n A
i✝ : m''
j✝ : n''
⊢ (reindexLinearEquiv R A e₁ e₂ ≪≫ₗ reindexLinearEquiv R A e₁' e₂') x✝ i✝ j✝ =
    (reindexLinearEquiv R A (e₁.trans e₁') (e₂.trans e₂')) x✝ i✝ j✝

tactic: rfl
state_before: case h.a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
l' : Type u_5
m' : Type u_6
n' : Type u_7
o' : Type u_8
m'' : Type u_9
n'' : Type u_10
R : Type u_11
A : Type u_12
inst✝² : Semiring R
inst✝¹ : AddCommMonoid A
inst✝ : Module R A
e₁ : m ≃ m'
e₂ : n ≃ n'
e₁' : m' ≃ m''
e₂' : n' ≃ n''
x✝ : Matrix m n A
i✝ : m''
j✝ : n''
⊢ (reindexLinearEquiv R A e₁ e₂ ≪≫ₗ reindexLinearEquiv R A e₁' e₂') x✝ i✝ j✝ =
    (reindexLinearEquiv R A (e₁.trans e₁') (e₂.trans e₂')) x✝ i✝ j✝
state_after: no goals