ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: NonUnitalAlgHom.fst_prod
File: Mathlib/Algebra/Algebra/NonUnitalHom.lean

Proof steps:
state_before: R : Type u
S : Type u₁
T : Type u_1
inst✝¹² : Monoid R
inst✝¹¹ : Monoid S
inst✝¹⁰ : Monoid T
φ : R →* S
A : Type v
B : Type w
C : Type w₁
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : DistribMulAction R A
inst✝⁷ : NonUnitalNonAssocSemiring B
inst✝⁶ : DistribMulAction S B
inst✝⁵ : NonUnitalNonAssocSemiring C
inst✝⁴ : DistribMulAction T C
φ' : S →* R
ψ : S →* T
χ : R →* T
B₁ : Type u_2
inst✝³ : NonUnitalNonAssocSemiring B₁
inst✝² : DistribMulAction R B₁
inst✝¹ : DistribMulAction R B
inst✝ : DistribMulAction R C
f : A →ₙₐ[R] B
g : A →ₙₐ[R] C
⊢ (fst R B C).comp (f.prod g) = f
state_after: no goals
tactic: rfl
Theorem: GromovHausdorff.eq_toGHSpace_iff
File: Mathlib/Topology/MetricSpace/GromovHausdorff.lean

Proof steps:
state_before: X : Type u
inst✝² : MetricSpace X
inst✝¹ : CompactSpace X
inst✝ : Nonempty X
p : NonemptyCompacts ↥(lp (fun n => ℝ) ⊤)
⊢ ⟦p⟧ = toGHSpace X ↔ ∃ Ψ, Isometry Ψ ∧ range Ψ = ↑p
state_after: X : Type u
inst✝² : MetricSpace X
inst✝¹ : CompactSpace X
inst✝ : Nonempty X
p : NonemptyCompacts ↥(lp (fun n => ℝ) ⊤)
⊢ p ≈ NonemptyCompacts.kuratowskiEmbedding X ↔ ∃ Ψ, Isometry Ψ ∧ range Ψ = ↑p
tactic: simp only [toGHSpace, Quotient.eq]
state_before: X : Type u
inst✝² : MetricSpace X
inst✝¹ : CompactSpace X
inst✝ : Nonempty X
p : NonemptyCompacts ↥(lp (fun n => ℝ) ⊤)
⊢ p ≈ NonemptyCompacts.kuratowskiEmbedding X ↔ ∃ Ψ, Isometry Ψ ∧ range Ψ = ↑p
state_after: case refine_1
X : Type u
inst✝² : MetricSpace X
inst✝¹ : CompactSpace X
inst✝ : Nonempty X
p : NonemptyCompacts ↥(lp (fun n => ℝ) ⊤)
h : p ≈ NonemptyCompacts.kuratowskiEmbedding X
⊢ ∃ Ψ, Isometry Ψ ∧ range Ψ = ↑p

case refine_2
X : Type u
inst✝² : MetricSpace X
inst✝¹ : CompactSpace X
inst✝ : Nonempty X
p : NonemptyCompacts ↥(lp (fun n => ℝ) ⊤)
⊢ (∃ Ψ, Isometry Ψ ∧ range Ψ = ↑p) → p ≈ NonemptyCompacts.kuratowskiEmbedding X
tactic: refine ⟨fun h => ?_, ?_⟩
Theorem: Asymptotics.superpolynomialDecay_mul_param_pow_iff
File: Mathlib/Analysis/Asymptotics/SuperpolynomialDecay.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
l : Filter α
k f g g' : α → β
inst✝² : TopologicalSpace β
inst✝¹ : LinearOrderedField β
inst✝ : OrderTopology β
hk : Tendsto k l atTop
n : ℕ
⊢ SuperpolynomialDecay l k (f * k ^ n) ↔ SuperpolynomialDecay l k f
state_after: no goals
tactic: simpa [mul_comm f] using superpolynomialDecay_param_pow_mul_iff f hk n
Theorem: Monotone.map_iInf_of_continuousAt'
File: Mathlib/Topology/Order/Monotone.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁷ : ConditionallyCompleteLinearOrder α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : OrderTopology α
inst✝⁴ : ConditionallyCompleteLinearOrder β
inst✝³ : TopologicalSpace β
inst✝² : OrderClosedTopology β
inst✝¹ : Nonempty γ
ι : Sort u_4
inst✝ : Nonempty ι
f : α → β
g : ι → α
Cf : ContinuousAt f (iInf g)
Mf : Monotone f
bdd : autoParam (BddBelow (range g)) _auto✝
⊢ f (⨅ i, g i) = ⨅ i, f (g i)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁷ : ConditionallyCompleteLinearOrder α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : OrderTopology α
inst✝⁴ : ConditionallyCompleteLinearOrder β
inst✝³ : TopologicalSpace β
inst✝² : OrderClosedTopology β
inst✝¹ : Nonempty γ
ι : Sort u_4
inst✝ : Nonempty ι
f : α → β
g : ι → α
Cf : ContinuousAt f (iInf g)
Mf : Monotone f
bdd : autoParam (BddBelow (range g)) _auto✝
⊢ sInf (range (f ∘ g)) = sInf (range fun i => f (g i))
tactic: rw [iInf, Monotone.map_sInf_of_continuousAt' Cf Mf (range_nonempty g) bdd, ← range_comp, iInf]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁷ : ConditionallyCompleteLinearOrder α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : OrderTopology α
inst✝⁴ : ConditionallyCompleteLinearOrder β
inst✝³ : TopologicalSpace β
inst✝² : OrderClosedTopology β
inst✝¹ : Nonempty γ
ι : Sort u_4
inst✝ : Nonempty ι
f : α → β
g : ι → α
Cf : ContinuousAt f (iInf g)
Mf : Monotone f
bdd : autoParam (BddBelow (range g)) _auto✝
⊢ sInf (range (f ∘ g)) = sInf (range fun i => f (g i))
state_after: no goals
tactic: rfl
Theorem: SimpleGraph.triangleRemovalBound_nonpos
File: Mathlib/Combinatorics/SimpleGraph/Triangle/Removal.lean

Proof steps:
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Fintype α
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
s t : Finset α
P : Finpartition univ
ε : ℝ
hε : ε ≤ 0
⊢ triangleRemovalBound ε ≤ 0
state_after: no goals
tactic: rw [triangleRemovalBound, ceil_eq_zero.2 (div_nonpos_of_nonneg_of_nonpos _ hε)] <;> simp
Theorem: lintegral_Iic_eq_lintegral_Iio_add_Icc
File: Mathlib/Probability/Distributions/Gamma.lean

Proof steps:
state_before: y z : ℝ
f : ℝ → ℝ≥0∞
hzy : z ≤ y
⊢ ∫⁻ (x : ℝ) in Iic y, f x = (∫⁻ (x : ℝ) in Iio z, f x) + ∫⁻ (x : ℝ) in Icc z y, f x
state_after: y z : ℝ
f : ℝ → ℝ≥0∞
hzy : z ≤ y
⊢ Disjoint (Iio z) (Icc z y)
tactic: rw [← Iio_union_Icc_eq_Iic hzy, lintegral_union measurableSet_Icc]
state_before: y z : ℝ
f : ℝ → ℝ≥0∞
hzy : z ≤ y
⊢ Disjoint (Iio z) (Icc z y)
state_after: y z : ℝ
f : ℝ → ℝ≥0∞
hzy : z ≤ y
⊢ Iio z ∩ Icc z y ⊆ ∅
tactic: rw [Set.disjoint_iff]
state_before: y z : ℝ
f : ℝ → ℝ≥0∞
hzy : z ≤ y
⊢ Iio z ∩ Icc z y ⊆ ∅
state_after: case intro.intro
y z : ℝ
f : ℝ → ℝ≥0∞
hzy : z ≤ y
x : ℝ
h1 : x < z
h2 : z ≤ x
right✝ : x ≤ y
⊢ x ∈ ∅
tactic: rintro x ⟨h1 : x < _, h2, _⟩
state_before: case intro.intro
y z : ℝ
f : ℝ → ℝ≥0∞
hzy : z ≤ y
x : ℝ
h1 : x < z
h2 : z ≤ x
right✝ : x ≤ y
⊢ x ∈ ∅
state_after: no goals
tactic: linarith
Theorem: Real.tsum_exp_neg_mul_int_sq
File: Mathlib/Analysis/SpecialFunctions/Gaussian/PoissonSummation.lean

Proof steps:
state_before: E : Type u_1
inst✝ : NormedAddCommGroup E
a : ℝ
ha : 0 < a
⊢ ∑' (n : ℤ), rexp (-π * a * ↑n ^ 2) = 1 / a ^ (1 / 2) * ∑' (n : ℤ), rexp (-π / a * ↑n ^ 2)
state_after: no goals
tactic: simpa only [← ofReal_inj, ofReal_tsum, ofReal_exp, ofReal_mul, ofReal_neg, ofReal_pow,
    ofReal_intCast, ofReal_div, ofReal_one, ofReal_cpow ha.le, ofReal_ofNat, mul_zero, zero_mul,
    add_zero] using Complex.tsum_exp_neg_quadratic (by rwa [ofReal_re] : 0 < (a : ℂ).re) 0
Theorem: PartENat.withTopEquiv_zero
File: Mathlib/Data/Nat/PartENat.lean

Proof steps:
state_before: ⊢ withTopEquiv 0 = 0
state_after: no goals
tactic: simp
Theorem: Real.Angle.cos_zero
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

Proof steps:
state_before: ⊢ cos 0 = 1
state_after: no goals
tactic: rw [← coe_zero, cos_coe, Real.cos_zero]
Theorem: ModuleCat.MonoidalCategory.braiding_naturality_left
File: Mathlib/Algebra/Category/ModuleCat/Monoidal/Symmetric.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
X Y : ModuleCat R
f : X ⟶ Y
Z : ModuleCat R
⊢ f ▷ Z ≫ (Y.braiding Z).hom = (X.braiding Z).hom ≫ Z ◁ f
state_after: R : Type u
inst✝ : CommRing R
X Y : ModuleCat R
f : X ⟶ Y
Z : ModuleCat R
⊢ f ▷ Z ≫ (Y.braiding Z).hom = (X.braiding Z).hom ≫ (𝟙 Z ⊗ f)
tactic: simp_rw [← id_tensorHom]
state_before: R : Type u
inst✝ : CommRing R
X Y : ModuleCat R
f : X ⟶ Y
Z : ModuleCat R
⊢ f ▷ Z ≫ (Y.braiding Z).hom = (X.braiding Z).hom ≫ (𝟙 Z ⊗ f)
state_after: no goals
tactic: apply braiding_naturality
Theorem: Finset.Nat.antidiagonal_eq_map'
File: Mathlib/Data/Finset/NatAntidiagonal.lean

Proof steps:
state_before: n : ℕ
⊢ antidiagonal n = map { toFun := fun i => (n - i, i), inj' := ⋯ } (range (n + 1))
state_after: n : ℕ
⊢ map ({ toFun := fun i => (i, n - i), inj' := ⋯ }.trans { toFun := Prod.swap, inj' := ⋯ }) (range (n + 1)) =
    map { toFun := fun i => (n - i, i), inj' := ⋯ } (range (n + 1))
tactic: rw [← map_swap_antidiagonal, antidiagonal_eq_map, map_map]
state_before: n : ℕ
⊢ map ({ toFun := fun i => (i, n - i), inj' := ⋯ }.trans { toFun := Prod.swap, inj' := ⋯ }) (range (n + 1)) =
    map { toFun := fun i => (n - i, i), inj' := ⋯ } (range (n + 1))
state_after: no goals
tactic: rfl
Theorem: Algebra.adjoin_toSubmodule_le
File: Mathlib/RingTheory/Adjoin/Basic.lean

Proof steps:
state_before: R : Type uR
S : Type uS
A : Type uA
B : Type uB
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring S
inst✝⁶ : Semiring A
inst✝⁵ : Semiring B
inst✝⁴ : Algebra R S
inst✝³ : Algebra R A
inst✝² : Algebra S A
inst✝¹ : Algebra R B
inst✝ : IsScalarTower R S A
s✝ t✝ s : Set A
t : Submodule R A
⊢ Subalgebra.toSubmodule (adjoin R s) ≤ t ↔ ↑(Submonoid.closure s) ⊆ ↑t
state_after: no goals
tactic: rw [adjoin_eq_span, span_le]
Theorem: Finset.sum_sum_Ioi_add_eq_sum_sum_off_diag
File: Mathlib/Algebra/BigOperators/Intervals.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
inst✝⁴ : Fintype α
inst✝³ : LinearOrder α
inst✝² : LocallyFiniteOrderTop α
inst✝¹ : LocallyFiniteOrderBot α
inst✝ : CommMonoid M
f : α → α → M
⊢ ∏ i : α, ∏ j ∈ Ioi i, f j i * f i j = ∏ i : α, ∏ j ∈ {i}ᶜ, f j i
state_after: α : Type u_1
M : Type u_2
inst✝⁴ : Fintype α
inst✝³ : LinearOrder α
inst✝² : LocallyFiniteOrderTop α
inst✝¹ : LocallyFiniteOrderBot α
inst✝ : CommMonoid M
f : α → α → M
⊢ (∏ x : α, ∏ x_1 ∈ Ioi x, f x_1 x) * ∏ x : α, ∏ x_1 ∈ Ioi x, f x x_1 =
    (∏ x : α, ∏ x_1 ∈ Ioi x, f x_1 x) * ∏ x : α, ∏ x_1 ∈ Iio x, f x_1 x
tactic: simp_rw [← Ioi_disjUnion_Iio, prod_disjUnion, prod_mul_distrib]
state_before: α : Type u_1
M : Type u_2
inst✝⁴ : Fintype α
inst✝³ : LinearOrder α
inst✝² : LocallyFiniteOrderTop α
inst✝¹ : LocallyFiniteOrderBot α
inst✝ : CommMonoid M
f : α → α → M
⊢ (∏ x : α, ∏ x_1 ∈ Ioi x, f x_1 x) * ∏ x : α, ∏ x_1 ∈ Ioi x, f x x_1 =
    (∏ x : α, ∏ x_1 ∈ Ioi x, f x_1 x) * ∏ x : α, ∏ x_1 ∈ Iio x, f x_1 x
state_after: case e_a
α : Type u_1
M : Type u_2
inst✝⁴ : Fintype α
inst✝³ : LinearOrder α
inst✝² : LocallyFiniteOrderTop α
inst✝¹ : LocallyFiniteOrderBot α
inst✝ : CommMonoid M
f : α → α → M
⊢ ∏ x : α, ∏ x_1 ∈ Ioi x, f x x_1 = ∏ x : α, ∏ x_1 ∈ Iio x, f x_1 x
tactic: congr 1
state_before: case e_a
α : Type u_1
M : Type u_2
inst✝⁴ : Fintype α
inst✝³ : LinearOrder α
inst✝² : LocallyFiniteOrderTop α
inst✝¹ : LocallyFiniteOrderBot α
inst✝ : CommMonoid M
f : α → α → M
⊢ ∏ x : α, ∏ x_1 ∈ Ioi x, f x x_1 = ∏ x : α, ∏ x_1 ∈ Iio x, f x_1 x
state_after: case e_a
α : Type u_1
M : Type u_2
inst✝⁴ : Fintype α
inst✝³ : LinearOrder α
inst✝² : LocallyFiniteOrderTop α
inst✝¹ : LocallyFiniteOrderBot α
inst✝ : CommMonoid M
f : α → α → M
⊢ ∏ x ∈ univ.sigma Ioi, f x.fst x.snd = ∏ x ∈ univ.sigma Iio, f x.snd x.fst
tactic: rw [prod_sigma', prod_sigma']
state_before: case e_a
α : Type u_1
M : Type u_2
inst✝⁴ : Fintype α
inst✝³ : LinearOrder α
inst✝² : LocallyFiniteOrderTop α
inst✝¹ : LocallyFiniteOrderBot α
inst✝ : CommMonoid M
f : α → α → M
⊢ ∏ x ∈ univ.sigma Ioi, f x.fst x.snd = ∏ x ∈ univ.sigma Iio, f x.snd x.fst
state_after: no goals
tactic: refine prod_nbij' (fun i ↦ ⟨i.2, i.1⟩) (fun i ↦ ⟨i.2, i.1⟩) ?_ ?_ ?_ ?_ ?_ <;> simp
Theorem: Finsupp.mapDomain_notin_range
File: Mathlib/Data/Finsupp/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddCommMonoid M
v v₁ v₂ : α →₀ M
f : α → β
x : α →₀ M
a : β
h : a ∉ Set.range f
⊢ (mapDomain f x) a = 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddCommMonoid M
v v₁ v₂ : α →₀ M
f : α → β
x : α →₀ M
a : β
h : a ∉ Set.range f
⊢ ∑ a_1 ∈ x.support, (single (f a_1) (x a_1)) a = 0
tactic: rw [mapDomain, sum_apply, sum]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddCommMonoid M
v v₁ v₂ : α →₀ M
f : α → β
x : α →₀ M
a : β
h : a ∉ Set.range f
⊢ ∑ a_1 ∈ x.support, (single (f a_1) (x a_1)) a = 0
state_after: no goals
tactic: exact Finset.sum_eq_zero fun a' _ => single_eq_of_ne fun eq => h <| eq ▸ Set.mem_range_self _
Theorem: Complex.areaForm
File: Mathlib/Analysis/InnerProductSpace/TwoDim.lean

Proof steps:
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
w z : ℂ
⊢ (Complex.orientation.areaForm w) z = ((starRingEnd ℂ) w * z).im
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o✝ : Orientation ℝ E (Fin 2)
w z : ℂ
o : Orientation ℝ ℂ (Fin 2) := Complex.orientation
⊢ (Complex.orientation.areaForm w) z = ((starRingEnd ℂ) w * z).im
tactic: let o := Complex.orientation
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o✝ : Orientation ℝ E (Fin 2)
w z : ℂ
o : Orientation ℝ ℂ (Fin 2) := Complex.orientation
⊢ (Complex.orientation.areaForm w) z = ((starRingEnd ℂ) w * z).im
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o✝ : Orientation ℝ E (Fin 2)
w z : ℂ
o : Orientation ℝ ℂ (Fin 2) := Complex.orientation
⊢ w.re * z.im - z.re * w.im = w.re * z.im + -w.im * z.re
tactic: simp only [o.areaForm_to_volumeForm, o.volumeForm_robust Complex.orthonormalBasisOneI rfl,
    Basis.det_apply, Matrix.det_fin_two, Basis.toMatrix_apply, toBasis_orthonormalBasisOneI,
    Matrix.cons_val_zero, coe_basisOneI_repr, Matrix.cons_val_one, Matrix.head_cons, mul_im,
    conj_re, conj_im]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o✝ : Orientation ℝ E (Fin 2)
w z : ℂ
o : Orientation ℝ ℂ (Fin 2) := Complex.orientation
⊢ w.re * z.im - z.re * w.im = w.re * z.im + -w.im * z.re
state_after: no goals
tactic: ring
Theorem: WittVector.polyOfInterest_vars
File: Mathlib/RingTheory/WittVector/MulCoeff.lean

Proof steps:
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ (polyOfInterest p n).vars ⊆ univ ×ˢ range (n + 1)
state_after: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ (↑p ^ (n + 1) *
        (wittMul p (n + 1) + ↑p ^ (n + 1) * X (0, n + 1) * X (1, n + 1) -
            X (0, n + 1) * (rename (Prod.mk 1)) (wittPolynomial p ℤ (n + 1)) -
          X (1, n + 1) * (rename (Prod.mk 0)) (wittPolynomial p ℤ (n + 1)))).vars ⊆
    univ ×ˢ range (n + 1)
tactic: rw [polyOfInterest_vars_eq]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ (↑p ^ (n + 1) *
        (wittMul p (n + 1) + ↑p ^ (n + 1) * X (0, n + 1) * X (1, n + 1) -
            X (0, n + 1) * (rename (Prod.mk 1)) (wittPolynomial p ℤ (n + 1)) -
          X (1, n + 1) * (rename (Prod.mk 0)) (wittPolynomial p ℤ (n + 1)))).vars ⊆
    univ ×ˢ range (n + 1)
state_after: no goals
tactic: apply mul_polyOfInterest_vars
Theorem: linearIndependent_iff'
File: Mathlib/LinearAlgebra/LinearIndependent.lean

Proof steps:
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hf : ∀ (l : ι →₀ R), (Finsupp.total ι M R v) l = 0 → l = 0
s : Finset ι
g : ι → R
hg : ∑ i ∈ s, g i • v i = 0
i : ι
his : i ∈ s
⊢ (Finsupp.total ι M R v) (∑ i ∈ s, Finsupp.single i (g i)) = 0
state_after: no goals
tactic: simpa only [map_sum, Finsupp.total_single] using hg
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hf : ∀ (l : ι →₀ R), (Finsupp.total ι M R v) l = 0 → l = 0
s : Finset ι
g : ι → R
hg : ∑ i ∈ s, g i • v i = 0
i : ι
his : i ∈ s
h : ∑ i ∈ s, Finsupp.single i (g i) = 0
⊢ g i = (Finsupp.lapply i) (Finsupp.single i (g i))
state_after: no goals
tactic: rw [Finsupp.lapply_apply, Finsupp.single_eq_same]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
hf : ∀ (l : ι →₀ R), (Finsupp.total ι M R v) l = 0 → l = 0
s : Finset ι
g : ι → R
hg : ∑ i ∈ s, g i • v i = 0
i : ι
his : i ∈ s
h : ∑ i ∈ s, Finsupp.single i (g i) = 0
j : ι
_hjs : j ∈ s
hji : j ≠ i
⊢ (Finsupp.lapply i) (Finsupp.single j (g j)) = 0
state_after: no goals
tactic: rw [Finsupp.lapply_apply, Finsupp.single_eq_of_ne hji]
Theorem: HahnSeries.embDomain_injective
File: Mathlib/RingTheory/HahnSeries/Basic.lean

Proof steps:
state_before: Γ : Type u_1
R : Type u_2
inst✝² : PartialOrder Γ
inst✝¹ : Zero R
a b : Γ
r : R
Γ' : Type u_3
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
x y : HahnSeries Γ R
xy : embDomain f x = embDomain f y
⊢ x = y
state_after: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝² : PartialOrder Γ
inst✝¹ : Zero R
a b : Γ
r : R
Γ' : Type u_3
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
x y : HahnSeries Γ R
xy : embDomain f x = embDomain f y
g : Γ
⊢ x.coeff g = y.coeff g
tactic: ext g
state_before: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝² : PartialOrder Γ
inst✝¹ : Zero R
a b : Γ
r : R
Γ' : Type u_3
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
x y : HahnSeries Γ R
xy : embDomain f x = embDomain f y
g : Γ
⊢ x.coeff g = y.coeff g
state_after: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝² : PartialOrder Γ
inst✝¹ : Zero R
a b : Γ
r : R
Γ' : Type u_3
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
x y : HahnSeries Γ R
xy : ∀ (a : Γ'), (embDomain f x).coeff a = (embDomain f y).coeff a
g : Γ
⊢ x.coeff g = y.coeff g
tactic: rw [HahnSeries.ext_iff, Function.funext_iff] at xy
state_before: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝² : PartialOrder Γ
inst✝¹ : Zero R
a b : Γ
r : R
Γ' : Type u_3
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
x y : HahnSeries Γ R
xy : ∀ (a : Γ'), (embDomain f x).coeff a = (embDomain f y).coeff a
g : Γ
⊢ x.coeff g = y.coeff g
state_after: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝² : PartialOrder Γ
inst✝¹ : Zero R
a b : Γ
r : R
Γ' : Type u_3
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
x y : HahnSeries Γ R
xy : ∀ (a : Γ'), (embDomain f x).coeff a = (embDomain f y).coeff a
g : Γ
xyg : (embDomain f x).coeff (f g) = (embDomain f y).coeff (f g)
⊢ x.coeff g = y.coeff g
tactic: have xyg := xy (f g)
state_before: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝² : PartialOrder Γ
inst✝¹ : Zero R
a b : Γ
r : R
Γ' : Type u_3
inst✝ : PartialOrder Γ'
f : Γ ↪o Γ'
x y : HahnSeries Γ R
xy : ∀ (a : Γ'), (embDomain f x).coeff a = (embDomain f y).coeff a
g : Γ
xyg : (embDomain f x).coeff (f g) = (embDomain f y).coeff (f g)
⊢ x.coeff g = y.coeff g
state_after: no goals
tactic: rwa [embDomain_coeff, embDomain_coeff] at xyg
Theorem: ZNum.cast_to_int
File: Mathlib/Data/Num/Lemmas.lean

Proof steps:
state_before: α : Type u_1
inst✝ : AddGroupWithOne α
⊢ ↑↑0 = ↑0
state_after: no goals
tactic: rw [cast_zero, cast_zero, Int.cast_zero]
state_before: α : Type u_1
inst✝ : AddGroupWithOne α
p : PosNum
⊢ ↑↑(pos p) = ↑(pos p)
state_after: no goals
tactic: rw [cast_pos, cast_pos, PosNum.cast_to_int]
state_before: α : Type u_1
inst✝ : AddGroupWithOne α
p : PosNum
⊢ ↑↑(neg p) = ↑(neg p)
state_after: no goals
tactic: rw [cast_neg, cast_neg, Int.cast_neg, PosNum.cast_to_int]
Theorem: sdiff_sdiff_right
File: Mathlib/Order/BooleanAlgebra.lean

Proof steps:
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x \ (y \ z) = x \ y ⊔ x ⊓ y ⊓ z
state_after: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x \ (y \ z) = z ⊓ x ⊔ x \ y
tactic: rw [sup_comm, inf_comm, ← inf_assoc, sup_inf_inf_sdiff]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x \ (y \ z) = z ⊓ x ⊔ x \ y
state_after: case s
α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ y \ z ⊔ (z ⊓ x ⊔ x \ y) = x

case i
α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ y \ z ⊓ (z ⊓ x ⊔ x \ y) = ⊥
tactic: apply sdiff_unique
Theorem: Function.Surjective.tprod_eq_tprod_of_hasProd_iff_hasProd
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : CommMonoid α
inst✝³ : TopologicalSpace α
f✝ g✝ : β → α
a a₁ a₂ : α
inst✝² : T2Space α
α' : Type u_5
inst✝¹ : CommMonoid α'
inst✝ : TopologicalSpace α'
e : α' → α
hes : Surjective e
h1 : e 1 = 1
f : β → α
g : γ → α'
h : ∀ {a : α'}, HasProd f (e a) ↔ HasProd g a
hg : ¬Multipliable g
⊢ ∏' (b : β), f b = e (∏' (c : γ), g c)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : CommMonoid α
inst✝³ : TopologicalSpace α
f✝ g✝ : β → α
a a₁ a₂ : α
inst✝² : T2Space α
α' : Type u_5
inst✝¹ : CommMonoid α'
inst✝ : TopologicalSpace α'
e : α' → α
hes : Surjective e
h1 : e 1 = 1
f : β → α
g : γ → α'
h : ∀ {a : α'}, HasProd f (e a) ↔ HasProd g a
hg : ¬Multipliable g
hf : ¬Multipliable f
⊢ ∏' (b : β), f b = e (∏' (c : γ), g c)
tactic: have hf : ¬Multipliable f := mt (hes.multipliable_iff_of_hasProd_iff @h).1 hg
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : CommMonoid α
inst✝³ : TopologicalSpace α
f✝ g✝ : β → α
a a₁ a₂ : α
inst✝² : T2Space α
α' : Type u_5
inst✝¹ : CommMonoid α'
inst✝ : TopologicalSpace α'
e : α' → α
hes : Surjective e
h1 : e 1 = 1
f : β → α
g : γ → α'
h : ∀ {a : α'}, HasProd f (e a) ↔ HasProd g a
hg : ¬Multipliable g
hf : ¬Multipliable f
⊢ ∏' (b : β), f b = e (∏' (c : γ), g c)
state_after: no goals
tactic: simp [tprod_def, hf, hg, h1]
Theorem: Lagrange.natDegree_basisDivisor_self
File: Mathlib/LinearAlgebra/Lagrange.lean

Proof steps:
state_before: F : Type u_1
inst✝ : Field F
x y : F
⊢ (basisDivisor x x).natDegree = 0
state_after: no goals
tactic: rw [basisDivisor_self, natDegree_zero]
Theorem: Cardinal.eq_of_add_eq_add_right
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

Proof steps:
state_before: a b c : Cardinal.{u_1}
h : a + b = c + b
hb : b < ℵ₀
⊢ a = c
state_after: a b c : Cardinal.{u_1}
h : b + a = b + c
hb : b < ℵ₀
⊢ a = c
tactic: rw [add_comm a b, add_comm c b] at h
state_before: a b c : Cardinal.{u_1}
h : b + a = b + c
hb : b < ℵ₀
⊢ a = c
state_after: no goals
tactic: exact Cardinal.eq_of_add_eq_add_left h hb
Theorem: PolynomialModule.smul_apply
File: Mathlib/Algebra/Polynomial/Module/Basic.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
I : Ideal R
S : Type u_3
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Module S M
inst✝ : IsScalarTower S R M
f : R[X]
g : PolynomialModule R M
n : ℕ
⊢ (f • g) n = ∑ x ∈ Finset.antidiagonal n, f.coeff x.1 • g x.2
state_after: case h_add
R : Type u_1
M : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
I : Ideal R
S : Type u_3
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Module S M
inst✝ : IsScalarTower S R M
g : PolynomialModule R M
n : ℕ
p q : R[X]
hp : (p • g) n = ∑ x ∈ Finset.antidiagonal n, p.coeff x.1 • g x.2
hq : (q • g) n = ∑ x ∈ Finset.antidiagonal n, q.coeff x.1 • g x.2
⊢ ((p + q) • g) n = ∑ x ∈ Finset.antidiagonal n, (p + q).coeff x.1 • g x.2

case h_monomial
R : Type u_1
M : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
I : Ideal R
S : Type u_3
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Module S M
inst✝ : IsScalarTower S R M
g : PolynomialModule R M
n f_n : ℕ
f_a : R
⊢ ((monomial f_n) f_a • g) n = ∑ x ∈ Finset.antidiagonal n, ((monomial f_n) f_a).coeff x.1 • g x.2
tactic: induction' f using Polynomial.induction_on' with p q hp hq f_n f_a
Theorem: MeasureTheory.OuterMeasure.trim_eq_iInf
File: Mathlib/MeasureTheory/OuterMeasure/Induced.lean

Proof steps:
state_before: α : Type u_1
inst✝ : MeasurableSpace α
m : OuterMeasure α
s : Set α
⊢ m.trim s = ⨅ t, ⨅ (_ : s ⊆ t), ⨅ (_ : MeasurableSet t), m t
state_after: α : Type u_1
inst✝ : MeasurableSpace α
m : OuterMeasure α
s : Set α
⊢ m.trim s = ⨅ t, ⨅ (_ : MeasurableSet t), ⨅ (_ : s ⊆ t), m t
tactic: simp (config := { singlePass := true }) only [iInf_comm]
state_before: α : Type u_1
inst✝ : MeasurableSpace α
m : OuterMeasure α
s : Set α
⊢ m.trim s = ⨅ t, ⨅ (_ : MeasurableSet t), ⨅ (_ : s ⊆ t), m t
state_after: no goals
tactic: exact
    inducedOuterMeasure_eq_iInf MeasurableSet.iUnion (fun f _ => measure_iUnion_le f)
      (fun _ _ _ _ h => measure_mono h) s