ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: ArithmeticFunction.coe_mul_zeta_apply
File: Mathlib/NumberTheory/ArithmeticFunction.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
x : ℕ
⊢ (f * ↑ζ) x = ∑ i ∈ x.divisors, f i
state_after: R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
x : ℕ
⊢ ∑ x ∈ x.divisorsAntidiagonal, f x.1 * ↑ζ x.2 = ∑ i ∈ x.divisors, f i
tactic: rw [mul_apply]
state_before: R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
x : ℕ
⊢ ∑ x ∈ x.divisorsAntidiagonal, f x.1 * ↑ζ x.2 = ∑ i ∈ x.divisors, f i
state_after: R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
x : ℕ
⊢ ∑ x ∈ x.divisorsAntidiagonal, f x.1 * ↑ζ x.2 = ∑ i ∈ x.divisorsAntidiagonal, f i.1

R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
x : ℕ
⊢ ∑ i ∈ x.divisorsAntidiagonal, f i.1 = ∑ i ∈ x.divisors, f i
tactic: trans ∑ i ∈ divisorsAntidiagonal x, f i.1
Theorem: Real.toNNReal_abs
File: Mathlib/Data/NNReal/Basic.lean

Proof steps:
state_before: x : ℝ
⊢ ↑|x|.toNNReal = ↑(nnabs x)
state_after: no goals
tactic: simp
Theorem: Nat.eq_factorization_iff
File: Mathlib/Data/Nat/Factorization/Basic.lean

Proof steps:
state_before: a b m n✝ p n : ℕ
f : ℕ →₀ ℕ
hn : n ≠ 0
hf : ∀ p ∈ f.support, Prime p
h : f = n.factorization
⊢ (f.prod fun x x_1 => x ^ x_1) = n
state_after: no goals
tactic: rw [h, factorization_prod_pow_eq_self hn]
state_before: a b m n✝ p n : ℕ
f : ℕ →₀ ℕ
hn : n ≠ 0
hf : ∀ p ∈ f.support, Prime p
h : (f.prod fun x x_1 => x ^ x_1) = n
⊢ f = n.factorization
state_after: no goals
tactic: rw [← h, prod_pow_factorization_eq_self hf]
Theorem: Complex.log_im
File: Mathlib/Analysis/SpecialFunctions/Complex/Log.lean

Proof steps:
state_before: x : ℂ
⊢ (log x).im = x.arg
state_after: no goals
tactic: simp [log]
Theorem: CategoryTheory.isCoseparator_pi_of_isCoseparator
File: Mathlib/CategoryTheory/Generator.lean

Proof steps:
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : HasZeroMorphisms C
β : Type w
f : β → C
inst✝ : HasProduct f
b : β
hb : IsCoseparator (f b)
⊢ {f b} ⊆ Set.range f
state_after: no goals
tactic: simp
Theorem: Equiv.asEmbedding_range
File: Mathlib/Logic/Embedding/Set.lean

Proof steps:
state_before: α✝ : Sort u
β✝ : Sort v
f : α✝ ≃ β✝
α : Sort u_1
β : Type u_2
p : β → Prop
e : α ≃ Subtype p
x : β
hs : x ∈ setOf p
⊢ e.asEmbedding (e.symm ⟨x, hs⟩) = x
state_after: no goals
tactic: simp
Theorem: Nat.properDivisors_eq_singleton_one_iff_prime
File: Mathlib/NumberTheory/Divisors.lean

Proof steps:
state_before: n : ℕ
⊢ n.properDivisors = {1} ↔ Prime n
state_after: case refine_1
n : ℕ
⊢ n.properDivisors = {1} → Prime n

case refine_2
n : ℕ
⊢ Prime n → n.properDivisors = {1}
tactic: refine ⟨?_, ?_⟩
Theorem: ite_nonneg
File: Mathlib/Order/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝² : One α
p : Prop
inst✝¹ : Decidable p
a b : α
inst✝ : LE α
ha : 1 ≤ a
hb : 1 ≤ b
⊢ 1 ≤ if p then a else b
state_after: no goals
tactic: split <;> assumption
Theorem: AdjoinRoot.coe_algEquivOfAssociated
File: Mathlib/FieldTheory/Adjoin.lean

Proof steps:
state_before: K : Type ?u.611342
L : Type ?u.611345
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
p q : K[X]
hp : p ≠ 0
hpq : Associated p q
⊢ (aeval (root q)) p = 0
state_after: no goals
tactic: simp only [aeval_eq, mk_eq_zero, hpq.symm.dvd]
Theorem: abs_le_max_abs_abs
File: Mathlib/Algebra/Order/Group/Abs.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a b c d : α
hab : a ≤ b
hbc : b ≤ c
⊢ b ≤ max |a| |c|
state_after: no goals
tactic: simp [hbc.trans (le_abs_self c)]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a b c d : α
hab : a ≤ b
hbc : b ≤ c
⊢ -b ≤ max |a| |c|
state_after: no goals
tactic: simp [((@neg_le_neg_iff α ..).mpr hab).trans (neg_le_abs a)]
Theorem: idealFactorsFunOfQuotHom_id
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K
inst✝ : IsDedekindDomain A
I : Ideal R
J : Ideal A
X : { p // p ∣ J }
⊢ (idealFactorsFunOfQuotHom ⋯) X = OrderHom.id X
state_after: no goals
tactic: simp only [idealFactorsFunOfQuotHom, map_id, OrderHom.coe_mk, OrderHom.id_coe, id,
        comap_map_of_surjective (Ideal.Quotient.mk J) Quotient.mk_surjective, ←
        RingHom.ker_eq_comap_bot (Ideal.Quotient.mk J), mk_ker,
        sup_eq_left.mpr (dvd_iff_le.mp X.prop), Subtype.coe_eta]
Theorem: Int.floor_one
File: Mathlib/Algebra/Order/Floor.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
⊢ ⌊1⌋ = 1
state_after: no goals
tactic: rw [← cast_one, floor_intCast]
Theorem: measurable_indicator_const_iff
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
f g : α → β
m : MeasurableSpace α
mβ : MeasurableSpace β
inst✝² : Zero β
inst✝¹ : MeasurableSingletonClass β
b : β
inst✝ : NeZero b
⊢ Measurable (s.indicator fun x => b) ↔ MeasurableSet s
state_after: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
f g : α → β
m : MeasurableSpace α
mβ : MeasurableSpace β
inst✝² : Zero β
inst✝¹ : MeasurableSingletonClass β
b : β
inst✝ : NeZero b
h : Measurable (s.indicator fun x => b)
⊢ MeasurableSet s

case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
f g : α → β
m : MeasurableSpace α
mβ : MeasurableSpace β
inst✝² : Zero β
inst✝¹ : MeasurableSingletonClass β
b : β
inst✝ : NeZero b
h : MeasurableSet s
⊢ Measurable (s.indicator fun x => b)
tactic: constructor <;> intro h
Theorem: WeierstrassCurve.Jacobian.map_dblXYZ
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

Proof steps:
state_before: R : Type u
inst✝² : CommRing R
W' : Jacobian R
F : Type v
inst✝¹ : Field F
W : Jacobian F
S : Type u_1
inst✝ : CommRing S
f : R →+* S
P Q : Fin 3 → R
⊢ dblXYZ (map W' f) (⇑f ∘ P) = ⇑f ∘ W'.dblXYZ P
state_after: no goals
tactic: simp_rw [dblXYZ, comp_fin3, map_dblX, map_dblY, map_dblZ]
Theorem: imaginaryPart_apply_coe
File: Mathlib/Data/Complex/Module.lean

Proof steps:
state_before: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
a : A
⊢ ↑(ℑ a) = -I • 2⁻¹ • (a - star a)
state_after: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
a : A
⊢ ↑((skewAdjoint.negISMul ∘ₗ skewAdjointPart ℝ) a) = -I • 2⁻¹ • (a - star a)
tactic: unfold imaginaryPart
state_before: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
a : A
⊢ ↑((skewAdjoint.negISMul ∘ₗ skewAdjointPart ℝ) a) = -I • 2⁻¹ • (a - star a)
state_after: no goals
tactic: simp only [LinearMap.coe_comp, Function.comp_apply, skewAdjoint.negISMul_apply_coe,
    skewAdjointPart_apply_coe, invOf_eq_inv, neg_smul]
Theorem: Submodule.IsPrincipal.prime_generator_of_isPrime
File: Mathlib/RingTheory/PrincipalIdealDomain.lean

Proof steps:
state_before: R : Type u
M : Type v
inst✝³ : AddCommGroup M
inst✝² : CommRing R
inst✝¹ : Module R M
S : Ideal R
inst✝ : IsPrincipal S
is_prime : S.IsPrime
ne_bot : S ≠ ⊥
x✝¹ x✝ : R
⊢ generator S ∣ x✝¹ * x✝ → generator S ∣ x✝¹ ∨ generator S ∣ x✝
state_after: no goals
tactic: simpa only [← mem_iff_generator_dvd S] using is_prime.2
Theorem: CategoryTheory.ComposableArrows.isoMk_inv
File: Mathlib/CategoryTheory/ComposableArrows.lean

Proof steps:
state_before: C : Type u_1
inst✝ : Category.{?u.42576, u_1} C
n m : ℕ
F✝ G✝ F G : ComposableArrows C n
app : (i : Fin (n + 1)) → F.obj i ≅ G.obj i
w : ∀ (i : ℕ) (hi : i < n), F.map' i (i + 1) ⋯ hi ≫ (app ⟨i + 1, ⋯⟩).hom = (app ⟨i, ⋯⟩).hom ≫ G.map' i (i + 1) ⋯ hi
i : ℕ
hi : i < n
⊢ G.map' i (i + 1) ⋯ hi ≫ (fun i => (app i).inv) ⟨i + 1, ⋯⟩ = (fun i => (app i).inv) ⟨i, ⋯⟩ ≫ F.map' i (i + 1) ⋯ hi
state_after: C : Type u_1
inst✝ : Category.{?u.42576, u_1} C
n m : ℕ
F✝ G✝ F G : ComposableArrows C n
app : (i : Fin (n + 1)) → F.obj i ≅ G.obj i
w : ∀ (i : ℕ) (hi : i < n), F.map' i (i + 1) ⋯ hi ≫ (app ⟨i + 1, ⋯⟩).hom = (app ⟨i, ⋯⟩).hom ≫ G.map' i (i + 1) ⋯ hi
i : ℕ
hi : i < n
⊢ G.map' i (i + 1) ⋯ hi ≫ (app ⟨i + 1, ⋯⟩).inv = (app ⟨i, ⋯⟩).inv ≫ F.map' i (i + 1) ⋯ hi
tactic: dsimp only
state_before: C : Type u_1
inst✝ : Category.{?u.42576, u_1} C
n m : ℕ
F✝ G✝ F G : ComposableArrows C n
app : (i : Fin (n + 1)) → F.obj i ≅ G.obj i
w : ∀ (i : ℕ) (hi : i < n), F.map' i (i + 1) ⋯ hi ≫ (app ⟨i + 1, ⋯⟩).hom = (app ⟨i, ⋯⟩).hom ≫ G.map' i (i + 1) ⋯ hi
i : ℕ
hi : i < n
⊢ G.map' i (i + 1) ⋯ hi ≫ (app ⟨i + 1, ⋯⟩).inv = (app ⟨i, ⋯⟩).inv ≫ F.map' i (i + 1) ⋯ hi
state_after: no goals
tactic: rw [← cancel_epi ((app _).hom), ← reassoc_of% (w i hi), Iso.hom_inv_id, comp_id,
      Iso.hom_inv_id_assoc]
Theorem: CategoryTheory.ShortComplex.liftCycles_leftHomologyπ_eq_zero_of_boundary
File: Mathlib/Algebra/Homology/ShortComplex/LeftHomology.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{?u.206122, u_1} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
h : S.LeftHomologyData
A : C
k : A ⟶ S.X₂
hk : k ≫ S.g = 0
inst✝ : S.HasLeftHomology
x : A ⟶ S.X₁
hx : k = x ≫ S.f
⊢ k ≫ S.g = 0
state_after: no goals
tactic: rw [hx, assoc, S.zero, comp_zero]
Theorem: Rep.leftRegularHom_hom
File: Mathlib/RepresentationTheory/Rep.lean

Proof steps:
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Monoid G
X Y : Action (Type u) (MonCat.of G)
f : X ⟶ Y
A : Rep k G
x : CoeSort.coe A
g : ↑(MonCat.of G)
⊢ ((ofMulAction k G G).ρ g ≫ (Finsupp.lift (↑A.V) k G) fun g => (A.ρ g) x) =
    ((Finsupp.lift (↑A.V) k G) fun g => (A.ρ g) x) ≫ A.ρ g
state_after: k G : Type u
inst✝¹ : CommRing k
inst✝ : Monoid G
X Y : Action (Type u) (MonCat.of G)
f : X ⟶ Y
A : Rep k G
x : CoeSort.coe A
g : ↑(MonCat.of G)
y : G
⊢ (((ofMulAction k G G).ρ g ≫ (Finsupp.lift (↑A.V) k G) fun g => (A.ρ g) x) ∘ₗ Finsupp.lsingle y) 1 =
    ((((Finsupp.lift (↑A.V) k G) fun g => (A.ρ g) x) ≫ A.ρ g) ∘ₗ Finsupp.lsingle y) 1
tactic: refine Finsupp.lhom_ext' fun y => LinearMap.ext_ring ?_
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Monoid G
X Y : Action (Type u) (MonCat.of G)
f : X ⟶ Y
A : Rep k G
x : CoeSort.coe A
g : ↑(MonCat.of G)
y : G
⊢ (((ofMulAction k G G).ρ g ≫ (Finsupp.lift (↑A.V) k G) fun g => (A.ρ g) x) ∘ₗ Finsupp.lsingle y) 1 =
    ((((Finsupp.lift (↑A.V) k G) fun g => (A.ρ g) x) ≫ A.ρ g) ∘ₗ Finsupp.lsingle y) 1
state_after: k G : Type u
inst✝¹ : CommRing k
inst✝ : Monoid G
X Y : Action (Type u) (MonCat.of G)
f : X ⟶ Y
A : Rep k G
x : CoeSort.coe A
g : ↑(MonCat.of G)
y : G
⊢ ((Finsupp.lift (↑A.V) k G) fun g => (A.ρ g) x) (((ofMulAction k G G).ρ g) (Finsupp.single y 1)) =
    (A.ρ g) (((Finsupp.lift (↑A.V) k G) fun g => (A.ρ g) x) (Finsupp.single y 1))
tactic: simp only [LinearMap.comp_apply, ModuleCat.comp_def, Finsupp.lsingle_apply]
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Monoid G
X Y : Action (Type u) (MonCat.of G)
f : X ⟶ Y
A : Rep k G
x : CoeSort.coe A
g : ↑(MonCat.of G)
y : G
⊢ ((Finsupp.lift (↑A.V) k G) fun g => (A.ρ g) x) (((ofMulAction k G G).ρ g) (Finsupp.single y 1)) =
    (A.ρ g) (((Finsupp.lift (↑A.V) k G) fun g => (A.ρ g) x) (Finsupp.single y 1))
state_after: k G : Type u
inst✝¹ : CommRing k
inst✝ : Monoid G
X Y : Action (Type u) (MonCat.of G)
f : X ⟶ Y
A : Rep k G
x : CoeSort.coe A
g : ↑(MonCat.of G)
y : G
⊢ ((Finsupp.single (g • y) 1).sum fun x_1 r => r • (A.ρ x_1) x) =
    (A.ρ g) ((Finsupp.single y 1).sum fun x_1 r => r • (A.ρ x_1) x)
tactic: erw [Finsupp.lift_apply, Finsupp.lift_apply, Representation.ofMulAction_single (G := G)]
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Monoid G
X Y : Action (Type u) (MonCat.of G)
f : X ⟶ Y
A : Rep k G
x : CoeSort.coe A
g : ↑(MonCat.of G)
y : G
⊢ ((Finsupp.single (g • y) 1).sum fun x_1 r => r • (A.ρ x_1) x) =
    (A.ρ g) ((Finsupp.single y 1).sum fun x_1 r => r • (A.ρ x_1) x)
state_after: k G : Type u
inst✝¹ : CommRing k
inst✝ : Monoid G
X Y : Action (Type u) (MonCat.of G)
f : X ⟶ Y
A : Rep k G
x : CoeSort.coe A
g : ↑(MonCat.of G)
y : G
⊢ (A.ρ g * A.ρ y) x = (A.ρ g) ((A.ρ y) x)
tactic: simp only [Finsupp.sum_single_index, zero_smul, one_smul, smul_eq_mul, A.ρ.map_mul, of_ρ]
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Monoid G
X Y : Action (Type u) (MonCat.of G)
f : X ⟶ Y
A : Rep k G
x : CoeSort.coe A
g : ↑(MonCat.of G)
y : G
⊢ (A.ρ g * A.ρ y) x = (A.ρ g) ((A.ρ y) x)
state_after: no goals
tactic: rfl
Theorem: List.prod_int_mod
File: Mathlib/Algebra/BigOperators/Group/List.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
l : List ℤ
n : ℤ
⊢ l.prod % n = (map (fun x => x % n) l).prod % n
state_after: no goals
tactic: induction l <;> simp [Int.mul_emod, *]
Theorem: Module.End.iSup_genEigenspace_eq_top
File: Mathlib/LinearAlgebra/Eigenspace/Triangularizable.lean

Proof steps:
state_before: K : Type u_1
V : Type u_2
inst✝⁷ : Field K
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module K V
R : Type u_3
M : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : IsAlgClosed K
inst✝ : FiniteDimensional K V
f : End K V
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h
K : Type u_1
inst✝⁷ : Field K
R : Type u_3
M : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : IsAlgClosed K
n : ℕ
ih :
  ∀ m < n,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
h_dim : finrank K V = n
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
tactic: induction' h_dim : finrank K V using Nat.strong_induction_on with n ih generalizing V
state_before: case h
K : Type u_1
inst✝⁷ : Field K
R : Type u_3
M : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : IsAlgClosed K
n : ℕ
ih :
  ∀ m < n,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
h_dim : finrank K V = n
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
state_after: case h.zero
K : Type u_1
inst✝⁷ : Field K
R : Type u_3
M : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
ih :
  ∀ m < 0,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = 0
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤

case h.succ
K : Type u_1
inst✝⁷ : Field K
R : Type u_3
M : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : IsAlgClosed K
V : Type u_2
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
n : ℕ
ih :
  ∀ m < n + 1,
    ∀ {V : Type u_2} [inst : AddCommGroup V] [inst_1 : Module K V] [inst_2 : FiniteDimensional K V] (f : End K V),
      finrank K V = m → ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
h_dim : finrank K V = n + 1
⊢ ⨆ μ, ⨆ k, (f.genEigenspace μ) k = ⊤
tactic: cases' n with n
Theorem: WeierstrassCurve.Affine.map_addY
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommRing R
W : Affine R
S : Type v
inst✝ : CommRing S
f : R →+* S
x₁ x₂ y₁ L : R
⊢ (map W f).toAffine.addY (f x₁) (f x₂) (f y₁) (f L) = f ((toAffine W).addY x₁ x₂ y₁ L)
state_after: no goals
tactic: simp only [addY, map_negAddY, map_addX, map_negY]
Theorem: zsmul_smul_addOrderOf
File: Mathlib/GroupTheory/OrderOfElement.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Group G
x y : G
i : ℤ
⊢ (x ^ i) ^ orderOf x = 1
state_after: case pos
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Group G
x y : G
i : ℤ
h : IsOfFinOrder x
⊢ (x ^ i) ^ orderOf x = 1

case neg
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Group G
x y : G
i : ℤ
h : ¬IsOfFinOrder x
⊢ (x ^ i) ^ orderOf x = 1
tactic: by_cases h : IsOfFinOrder x
Theorem: List.Ico.succ_singleton
File: Mathlib/Data/List/Intervals.lean

Proof steps:
state_before: n : ℕ
⊢ Ico n (n + 1) = [n]
state_after: n : ℕ
⊢ range' n (n + 1 - n) = [n]
tactic: dsimp [Ico]
state_before: n : ℕ
⊢ range' n (n + 1 - n) = [n]
state_after: no goals
tactic: simp [range', Nat.add_sub_cancel_left]
Theorem: Polynomial.natDegree_mul_C_eq_of_mul_ne_zero
File: Mathlib/Algebra/Polynomial/Degree/Lemmas.lean

Proof steps:
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p.leadingCoeff * a ≠ 0
⊢ (p * C a).natDegree = p.natDegree
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p.leadingCoeff * a ≠ 0
⊢ p.natDegree ∈ (p * C a).support
tactic: refine eq_natDegree_of_le_mem_support (natDegree_mul_C_le p a) ?_
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p.leadingCoeff * a ≠ 0
⊢ p.natDegree ∈ (p * C a).support
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p.leadingCoeff * a ≠ 0
⊢ (p * C a).coeff p.natDegree ≠ 0
tactic: refine mem_support_iff.mpr ?_
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p.leadingCoeff * a ≠ 0
⊢ (p * C a).coeff p.natDegree ≠ 0
state_after: no goals
tactic: rwa [coeff_mul_C]
Theorem: uniformEmbedding_inr
File: Mathlib/Topology/UniformSpace/UniformEmbedding.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
s : Set (β × β)
hs : s ∈ 𝓤 β
x : β × β
h : x ∈ Prod.map Sum.inr Sum.inr ⁻¹' (range (Prod.map Sum.inl Sum.inl) ∪ Prod.map Sum.inr Sum.inr '' s)
⊢ x ∈ s
state_after: no goals
tactic: simpa [Prod.map_apply'] using h
Theorem: AddSubmonoid.LocalizationMap.map_add_left
File: Mathlib/GroupTheory/MonoidLocalization/Basic.lean

Proof steps:
state_before: M : Type u_1
inst✝³ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝² : CommMonoid N
P : Type u_3
inst✝¹ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid P
hy : ∀ (y : ↥S), g ↑y ∈ T
Q : Type u_4
inst✝ : CommMonoid Q
k : T.LocalizationMap Q
z : N
⊢ k.toMap (g ↑(f.sec z).2) * (f.map hy k) z = k.toMap (g (f.sec z).1)
state_after: no goals
tactic: rw [mul_comm, f.map_mul_right]
Theorem: UniqueFactorizationMonoid.of_exists_unique_irreducible_factors
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

Proof steps:
state_before: α : Type u_1
inst✝ : CancelCommMonoidWithZero α
eif : ∀ (a : α), a ≠ 0 → ∃ f, (∀ b ∈ f, Irreducible b) ∧ f.prod ~ᵤ a
uif :
  ∀ (f g : Multiset α),
    (∀ x ∈ f, Irreducible x) → (∀ x ∈ g, Irreducible x) → f.prod ~ᵤ g.prod → Multiset.Rel Associated f g
⊢ ∀ (a : α), a ≠ 0 → ∃ f, (∀ b ∈ f, Prime b) ∧ f.prod ~ᵤ a
state_after: case h.h'.h.e'_2.h.h.e'_1.h.h'.a
α : Type u_1
inst✝ : CancelCommMonoidWithZero α
eif : ∀ (a : α), a ≠ 0 → ∃ f, (∀ b ∈ f, Irreducible b) ∧ f.prod ~ᵤ a
uif :
  ∀ (f g : Multiset α),
    (∀ x ∈ f, Irreducible x) → (∀ x ∈ g, Irreducible x) → f.prod ~ᵤ g.prod → Multiset.Rel Associated f g
a✝³ : α
a✝² : a✝³ ≠ 0
x✝ : Multiset α
a✝¹ : α
a✝ : a✝¹ ∈ x✝
⊢ Prime a✝¹ ↔ Irreducible a✝¹
tactic: convert eif using 7
state_before: case h.h'.h.e'_2.h.h.e'_1.h.h'.a
α : Type u_1
inst✝ : CancelCommMonoidWithZero α
eif : ∀ (a : α), a ≠ 0 → ∃ f, (∀ b ∈ f, Irreducible b) ∧ f.prod ~ᵤ a
uif :
  ∀ (f g : Multiset α),
    (∀ x ∈ f, Irreducible x) → (∀ x ∈ g, Irreducible x) → f.prod ~ᵤ g.prod → Multiset.Rel Associated f g
a✝³ : α
a✝² : a✝³ ≠ 0
x✝ : Multiset α
a✝¹ : α
a✝ : a✝¹ ∈ x✝
⊢ Prime a✝¹ ↔ Irreducible a✝¹
state_after: no goals
tactic: simp_rw [irreducible_iff_prime_of_exists_unique_irreducible_factors eif uif]
Theorem: Set.mk_preimage_prod_left
File: Mathlib/Data/Set/Prod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
hb : b ∈ t
⊢ (fun a => (a, b)) ⁻¹' s ×ˢ t = s
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a✝ : α
b : β
hb : b ∈ t
a : α
⊢ a ∈ (fun a => (a, b)) ⁻¹' s ×ˢ t ↔ a ∈ s
tactic: ext a
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a✝ : α
b : β
hb : b ∈ t
a : α
⊢ a ∈ (fun a => (a, b)) ⁻¹' s ×ˢ t ↔ a ∈ s
state_after: no goals
tactic: simp [hb]
Theorem: Submodule.mem_colon_singleton
File: Mathlib/RingTheory/Ideal/Colon.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
F : Type u_4
G : Type u_5
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
N✝ N₁ N₂ P P₁ P₂ N : Submodule R M
x : M
r : R
⊢ r ∈ N.colon (span R {x}) ↔ ∀ (a : R), r • a • x ∈ N
state_after: no goals
tactic: simp [Submodule.mem_colon, Submodule.mem_span_singleton]
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
F : Type u_4
G : Type u_5
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
N✝ N₁ N₂ P P₁ P₂ N : Submodule R M
x : M
r : R
⊢ (∀ (a : R), r • a • x ∈ N) ↔ r • x ∈ N
state_after: R : Type u_1
M : Type u_2
M' : Type u_3
F : Type u_4
G : Type u_5
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
N✝ N₁ N₂ P P₁ P₂ N : Submodule R M
x : M
r : R
⊢ (∀ (a : R), a • r • x ∈ N) ↔ r • x ∈ N
tactic: simp_rw [fun (a : R) ↦ smul_comm r a x]
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
F : Type u_4
G : Type u_5
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
N✝ N₁ N₂ P P₁ P₂ N : Submodule R M
x : M
r : R
⊢ (∀ (a : R), a • r • x ∈ N) ↔ r • x ∈ N
state_after: no goals
tactic: exact SetLike.forall_smul_mem_iff
Theorem: Polynomial.ne_zero_of_ne_zero_of_monic
File: Mathlib/Algebra/Polynomial/Monic.lean

Proof steps:
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : p ≠ 0
hq : q.Monic
⊢ q ≠ 0
state_after: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p r : R[X]
hp : p ≠ 0
hq : Monic 0
⊢ False
tactic: rintro rfl
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p r : R[X]
hp : p ≠ 0
hq : Monic 0
⊢ False
state_after: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p r : R[X]
hp : p ≠ 0
hq : 0 = 1
⊢ False
tactic: rw [Monic.def, leadingCoeff_zero] at hq
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p r : R[X]
hp : p ≠ 0
hq : 0 = 1
⊢ False
state_after: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p r : R[X]
hp : 0 ≠ 0
hq : 0 = 1
⊢ False
tactic: rw [← mul_one p, ← C_1, ← hq, C_0, mul_zero] at hp
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p r : R[X]
hp : 0 ≠ 0
hq : 0 = 1
⊢ False
state_after: no goals
tactic: exact hp rfl
Theorem: LaurentPolynomial.support_C_mul_T
File: Mathlib/Algebra/Polynomial/Laurent.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
a : R
n : ℤ
⊢ (C a * T n).support ⊆ {n}
state_after: R : Type u_1
inst✝ : Semiring R
a : R
n : ℤ
⊢ (Finsupp.single n a).support ⊆ {n}
tactic: rw [← single_eq_C_mul_T]
state_before: R : Type u_1
inst✝ : Semiring R
a : R
n : ℤ
⊢ (Finsupp.single n a).support ⊆ {n}
state_after: no goals
tactic: exact support_single_subset
Theorem: FirstOrder.Language.Formula.realize_equal
File: Mathlib/ModelTheory/Semantics.lean

Proof steps:
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
φ ψ : L.Formula α
v : α → M
t₁ t₂ : L.Term α
x : α → M
⊢ (t₁.equal t₂).Realize x ↔ Term.realize x t₁ = Term.realize x t₂
state_after: no goals
tactic: simp [Term.equal, Realize]