ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: ExteriorAlgebra.map_comp_ιMulti
File: Mathlib/LinearAlgebra/ExteriorAlgebra/Basic.lean

Proof steps:
state_before: R : Type u1
inst✝⁸ : CommRing R
M : Type u2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
N : Type u4
N' : Type u5
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : AddCommGroup N'
inst✝ : Module R N'
n : ℕ
f : M →ₗ[R] N
⊢ (map f).toLinearMap.compAlternatingMap (ιMulti R n) = (ιMulti R n).compLinearMap f
state_after: case H
R : Type u1
inst✝⁸ : CommRing R
M : Type u2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
N : Type u4
N' : Type u5
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : AddCommGroup N'
inst✝ : Module R N'
n : ℕ
f : M →ₗ[R] N
m : Fin n → M
⊢ ((map f).toLinearMap.compAlternatingMap (ιMulti R n)) m = ((ιMulti R n).compLinearMap f) m
tactic: ext m
state_before: case H
R : Type u1
inst✝⁸ : CommRing R
M : Type u2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
N : Type u4
N' : Type u5
inst✝³ : AddCommGroup N
inst✝² : Module R N
inst✝¹ : AddCommGroup N'
inst✝ : Module R N'
n : ℕ
f : M →ₗ[R] N
m : Fin n → M
⊢ ((map f).toLinearMap.compAlternatingMap (ιMulti R n)) m = ((ιMulti R n).compLinearMap f) m
state_after: no goals
tactic: exact map_apply_ιMulti _ _
Theorem: summable_iff_vanishing_norm
File: Mathlib/Analysis/Normed/Group/InfiniteSum.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝² : SeminormedAddCommGroup E
inst✝¹ : SeminormedAddCommGroup F
inst✝ : CompleteSpace E
f : ι → E
⊢ Summable f ↔ ∀ ε > 0, ∃ s, ∀ (t : Finset ι), Disjoint t s → ‖∑ i ∈ t, f i‖ < ε
state_after: no goals
tactic: rw [summable_iff_cauchySeq_finset, cauchySeq_finset_iff_vanishing_norm]
Theorem: Polynomial.leadingCoeff_opRingEquiv
File: Mathlib/RingTheory/Polynomial/Opposites.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
p : R[X]ᵐᵒᵖ
⊢ ((opRingEquiv R) p).leadingCoeff = op (unop p).leadingCoeff
state_after: no goals
tactic: rw [leadingCoeff, coeff_opRingEquiv, natDegree_opRingEquiv, leadingCoeff]
Theorem: Booleanisation.lift_le_comp
File: Mathlib/Order/Booleanisation.lean

Proof steps:
state_before: α : Type u_1
inst✝ : GeneralizedBooleanAlgebra α
x y : Booleanisation α
a b : α
⊢ lift a ≤ comp b → Disjoint a b
state_after: case sep
α : Type u_1
inst✝ : GeneralizedBooleanAlgebra α
x y : Booleanisation α
a b : α
a✝ : Disjoint a b
⊢ Disjoint a b
tactic: rintro ⟨_⟩
state_before: case sep
α : Type u_1
inst✝ : GeneralizedBooleanAlgebra α
x y : Booleanisation α
a b : α
a✝ : Disjoint a b
⊢ Disjoint a b
state_after: no goals
tactic: assumption
Theorem: integrable_cexp_quadratic
File: Mathlib/Analysis/SpecialFunctions/Gaussian/FourierTransform.lean

Proof steps:
state_before: b : ℂ
hb : 0 < b.re
c d : ℂ
⊢ Integrable (fun x => cexp (-b * ↑x ^ 2 + c * ↑x + d)) volume
state_after: b : ℂ
hb : 0 < b.re
c d : ℂ
this : (-b).re < 0
⊢ Integrable (fun x => cexp (-b * ↑x ^ 2 + c * ↑x + d)) volume
tactic: have : (-b).re < 0 := by simpa using hb
state_before: b : ℂ
hb : 0 < b.re
c d : ℂ
this : (-b).re < 0
⊢ Integrable (fun x => cexp (-b * ↑x ^ 2 + c * ↑x + d)) volume
state_after: no goals
tactic: exact integrable_cexp_quadratic' this c d
Theorem: IsCompact.finite_of_discrete
File: Mathlib/Topology/Compactness/Compact.lean

Proof steps:
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
inst✝ : DiscreteTopology X
hs : IsCompact s
⊢ s.Finite
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
inst✝ : DiscreteTopology X
hs : IsCompact s
this : ∀ (x : X), {x} ∈ 𝓝 x
⊢ s.Finite
tactic: have : ∀ x : X, ({x} : Set X) ∈ 𝓝 x := by simp [nhds_discrete]
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
inst✝ : DiscreteTopology X
hs : IsCompact s
this : ∀ (x : X), {x} ∈ 𝓝 x
⊢ s.Finite
state_after: case intro.intro
X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t✝ : Set X
inst✝ : DiscreteTopology X
hs : IsCompact s
this : ∀ (x : X), {x} ∈ 𝓝 x
t : Finset X
left✝ : ∀ x ∈ t, x ∈ s
hst : s ⊆ ⋃ x ∈ t, {x}
⊢ s.Finite
tactic: rcases hs.elim_nhds_subcover (fun x => {x}) fun x _ => this x with ⟨t, _, hst⟩
state_before: case intro.intro
X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t✝ : Set X
inst✝ : DiscreteTopology X
hs : IsCompact s
this : ∀ (x : X), {x} ∈ 𝓝 x
t : Finset X
left✝ : ∀ x ∈ t, x ∈ s
hst : s ⊆ ⋃ x ∈ t, {x}
⊢ s.Finite
state_after: case intro.intro
X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t✝ : Set X
inst✝ : DiscreteTopology X
hs : IsCompact s
this : ∀ (x : X), {x} ∈ 𝓝 x
t : Finset X
left✝ : ∀ x ∈ t, x ∈ s
hst : s ⊆ ↑t
⊢ s.Finite
tactic: simp only [← t.set_biUnion_coe, biUnion_of_singleton] at hst
state_before: case intro.intro
X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t✝ : Set X
inst✝ : DiscreteTopology X
hs : IsCompact s
this : ∀ (x : X), {x} ∈ 𝓝 x
t : Finset X
left✝ : ∀ x ∈ t, x ∈ s
hst : s ⊆ ↑t
⊢ s.Finite
state_after: no goals
tactic: exact t.finite_toSet.subset hst
Theorem: Even.pow_abs
File: Mathlib/Algebra/Order/Ring/Abs.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
n : ℕ
a✝ b c : α
hn : Even n
a : α
⊢ |a| ^ n = a ^ n
state_after: α : Type u_1
inst✝ : LinearOrderedRing α
n : ℕ
a✝ b c : α
hn : Even n
a : α
⊢ 0 ≤ a ^ n
tactic: rw [← abs_pow, abs_eq_self]
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
n : ℕ
a✝ b c : α
hn : Even n
a : α
⊢ 0 ≤ a ^ n
state_after: no goals
tactic: exact hn.pow_nonneg _
Theorem: heq_rec_iff_heq
File: Mathlib/Logic/Basic.lean

Proof steps:
state_before: α : Sort u_2
β : Sort u_1
a b : α
C : α → Sort u_1
x : β
y : C a
e : a = b
⊢ HEq x (e ▸ y) ↔ HEq x y
state_after: α : Sort u_2
β : Sort u_1
a : α
C : α → Sort u_1
x : β
y : C a
⊢ HEq x (⋯ ▸ y) ↔ HEq x y
tactic: subst e
state_before: α : Sort u_2
β : Sort u_1
a : α
C : α → Sort u_1
x : β
y : C a
⊢ HEq x (⋯ ▸ y) ↔ HEq x y
state_after: no goals
tactic: rfl
Theorem: MvQPF.liftP_iff
File: Mathlib/Data/QPF/Multivariate/Basic.lean

Proof steps:
state_before: n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : F α
⊢ LiftP p x ↔ ∃ a f, x = abs ⟨a, f⟩ ∧ ∀ (i : Fin2 n) (j : (P F).B a i), p (f i j)
state_after: case mp
n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : F α
⊢ LiftP p x → ∃ a f, x = abs ⟨a, f⟩ ∧ ∀ (i : Fin2 n) (j : (P F).B a i), p (f i j)

case mpr
n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : F α
⊢ (∃ a f, x = abs ⟨a, f⟩ ∧ ∀ (i : Fin2 n) (j : (P F).B a i), p (f i j)) → LiftP p x
tactic: constructor
state_before: case mpr
n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : F α
⊢ (∃ a f, x = abs ⟨a, f⟩ ∧ ∀ (i : Fin2 n) (j : (P F).B a i), p (f i j)) → LiftP p x
state_after: case mpr.intro.intro.intro
n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : F α
a : (P F).A
f : (P F).B a ⟹ α
h₀ : x = abs ⟨a, f⟩
h₁ : ∀ (i : Fin2 n) (j : (P F).B a i), p (f i j)
⊢ LiftP p x
tactic: rintro ⟨a, f, h₀, h₁⟩
state_before: case mpr.intro.intro.intro
n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : F α
a : (P F).A
f : (P F).B a ⟹ α
h₀ : x = abs ⟨a, f⟩
h₁ : ∀ (i : Fin2 n) (j : (P F).B a i), p (f i j)
⊢ LiftP p x
state_after: case h
n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : F α
a : (P F).A
f : (P F).B a ⟹ α
h₀ : x = abs ⟨a, f⟩
h₁ : ∀ (i : Fin2 n) (j : (P F).B a i), p (f i j)
⊢ (fun i => Subtype.val) <$$> abs ⟨a, fun i j => ⟨f i j, ⋯⟩⟩ = x
tactic: use abs ⟨a, fun i j => ⟨f i j, h₁ i j⟩⟩
state_before: case h
n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : F α
a : (P F).A
f : (P F).B a ⟹ α
h₀ : x = abs ⟨a, f⟩
h₁ : ∀ (i : Fin2 n) (j : (P F).B a i), p (f i j)
⊢ (fun i => Subtype.val) <$$> abs ⟨a, fun i j => ⟨f i j, ⋯⟩⟩ = x
state_after: case h
n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : F α
a : (P F).A
f : (P F).B a ⟹ α
h₀ : x = abs ⟨a, f⟩
h₁ : ∀ (i : Fin2 n) (j : (P F).B a i), p (f i j)
⊢ abs ((fun i => Subtype.val) <$$> ⟨a, fun i j => ⟨f i j, ⋯⟩⟩) = abs ⟨a, f⟩
tactic: rw [← abs_map, h₀]
state_before: case h
n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
α : TypeVec.{u} n
p : ⦃i : Fin2 n⦄ → α i → Prop
x : F α
a : (P F).A
f : (P F).B a ⟹ α
h₀ : x = abs ⟨a, f⟩
h₁ : ∀ (i : Fin2 n) (j : (P F).B a i), p (f i j)
⊢ abs ((fun i => Subtype.val) <$$> ⟨a, fun i j => ⟨f i j, ⋯⟩⟩) = abs ⟨a, f⟩
state_after: no goals
tactic: rfl
Theorem: Submonoid.LocalizationMap.mul_inv_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 : M →* N
h : ∀ (y : ↥S), IsUnit (f ↑y)
y : ↥S
w z : N
⊢ w * ↑((IsUnit.liftRight (f.restrict S) h) y)⁻¹ = z ↔ w = f ↑y * z
state_after: 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 : M →* N
h : ∀ (y : ↥S), IsUnit (f ↑y)
y : ↥S
w z : N
⊢ ↑((IsUnit.liftRight (f.restrict S) h) y)⁻¹ * w = z ↔ w = f ↑y * z
tactic: rw [mul_comm]
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 : M →* N
h : ∀ (y : ↥S), IsUnit (f ↑y)
y : ↥S
w z : N
⊢ ↑((IsUnit.liftRight (f.restrict S) h) y)⁻¹ * w = z ↔ w = f ↑y * z
state_after: no goals
tactic: exact Units.inv_mul_eq_iff_eq_mul (IsUnit.liftRight (f.restrict S) h y)
Theorem: Turing.TM2to1.trStmts₁_run
File: Mathlib/Computability/TuringMachine.lean

Proof steps:
state_before: K : Type u_1
inst✝² : DecidableEq K
Γ : K → Type u_2
Λ : Type u_3
inst✝¹ : Inhabited Λ
σ : Type u_4
inst✝ : Inhabited σ
k : K
s : StAct k
q : Stmt₂
⊢ trStmts₁ (stRun s q) = {go k s q, ret q} ∪ trStmts₁ q
state_after: no goals
tactic: cases s <;> simp only [trStmts₁]
Theorem: ContinuousLinearMap.to_ring_inverse
File: Mathlib/Topology/Algebra/Module/Basic.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
⊢ f.inverse = (Ring.inverse ((↑e.symm).comp f)).comp ↑e.symm
state_after: case pos
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
h₁ : ∃ e', ↑e' = f
⊢ f.inverse = (Ring.inverse ((↑e.symm).comp f)).comp ↑e.symm

case neg
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
h₁ : ¬∃ e', ↑e' = f
⊢ f.inverse = (Ring.inverse ((↑e.symm).comp f)).comp ↑e.symm
tactic: by_cases h₁ : ∃ e' : M ≃L[R] M₂, e' = f
Theorem: Submodule.mem_sup_left
File: Mathlib/Algebra/Module/Submodule/Lattice.lean

Proof steps:
state_before: R : Type u_1
S✝ : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S✝
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S✝ M
inst✝¹ : SMul S✝ R
inst✝ : IsScalarTower S✝ R M
p q S T : Submodule R M
⊢ ∀ {x : M}, x ∈ S → x ∈ S ⊔ T
state_after: R : Type u_1
S✝ : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S✝
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S✝ M
inst✝¹ : SMul S✝ R
inst✝ : IsScalarTower S✝ R M
p q S T : Submodule R M
this : S ≤ S ⊔ T
⊢ ∀ {x : M}, x ∈ S → x ∈ S ⊔ T
tactic: have : S ≤ S ⊔ T := le_sup_left
state_before: R : Type u_1
S✝ : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S✝
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S✝ M
inst✝¹ : SMul S✝ R
inst✝ : IsScalarTower S✝ R M
p q S T : Submodule R M
this : S ≤ S ⊔ T
⊢ ∀ {x : M}, x ∈ S → x ∈ S ⊔ T
state_after: R : Type u_1
S✝ : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S✝
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S✝ M
inst✝¹ : SMul S✝ R
inst✝ : IsScalarTower S✝ R M
p q S T : Submodule R M
this : Preorder.toLE.1 S (S ⊔ T)
⊢ ∀ {x : M}, x ∈ S → x ∈ S ⊔ T
tactic: rw [LE.le] at this
state_before: R : Type u_1
S✝ : Type u_2
M : Type u_3
inst✝⁶ : Semiring R
inst✝⁵ : Semiring S✝
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : Module S✝ M
inst✝¹ : SMul S✝ R
inst✝ : IsScalarTower S✝ R M
p q S T : Submodule R M
this : Preorder.toLE.1 S (S ⊔ T)
⊢ ∀ {x : M}, x ∈ S → x ∈ S ⊔ T
state_after: no goals
tactic: exact this
Theorem: Nat.WithBot.add_one_le_of_lt
File: Mathlib/Data/Nat/WithBot.lean

Proof steps:
state_before: n m : WithBot ℕ
h : n < m
⊢ n + 1 ≤ m
state_after: case bot
m : WithBot ℕ
h : ⊥ < m
⊢ ⊥ + 1 ≤ m

case coe
m : WithBot ℕ
a✝ : ℕ
h : ↑a✝ < m
⊢ ↑a✝ + 1 ≤ m
tactic: cases n
state_before: case coe
m : WithBot ℕ
a✝ : ℕ
h : ↑a✝ < m
⊢ ↑a✝ + 1 ≤ m
state_after: case coe.bot
a✝ : ℕ
h : ↑a✝ < ⊥
⊢ ↑a✝ + 1 ≤ ⊥

case coe.coe
a✝¹ a✝ : ℕ
h : ↑a✝¹ < ↑a✝
⊢ ↑a✝¹ + 1 ≤ ↑a✝
tactic: cases m
Theorem: CategoryTheory.GradedObject.Monoidal.ιTensorObj₃_eq
File: Mathlib/CategoryTheory/GradedObject/Monoidal.lean

Proof steps:
state_before: I : Type u
inst✝¹⁰ : AddMonoid I
C : Type u_1
inst✝⁹ : Category.{?u.46109, u_1} C
inst✝⁸ : MonoidalCategory C
Z : C
X₁ X₂ X₃ : GradedObject I C
inst✝⁷ : X₁.HasTensor X₂
inst✝⁶ : X₂.HasTensor X₃
inst✝⁵ : (tensorObj X₁ X₂).HasTensor X₃
inst✝⁴ : X₁.HasTensor (tensorObj X₂ X₃)
Y₁ Y₂ Y₃ : GradedObject I C
inst✝³ : Y₁.HasTensor Y₂
inst✝² : Y₂.HasTensor Y₃
inst✝¹ : (tensorObj Y₁ Y₂).HasTensor Y₃
inst✝ : Y₁.HasTensor (tensorObj Y₂ Y₃)
i₁ i₂ i₃ j : I
h : i₁ + i₂ + i₃ = j
i₂₃ : I
h' : i₂ + i₃ = i₂₃
⊢ i₁ + i₂₃ = j
state_after: no goals
tactic: rw [← h', ← add_assoc, h]
state_before: I : Type u
inst✝¹⁰ : AddMonoid I
C : Type u_1
inst✝⁹ : Category.{u_2, u_1} C
inst✝⁸ : MonoidalCategory C
Z : C
X₁ X₂ X₃ : GradedObject I C
inst✝⁷ : X₁.HasTensor X₂
inst✝⁶ : X₂.HasTensor X₃
inst✝⁵ : (tensorObj X₁ X₂).HasTensor X₃
inst✝⁴ : X₁.HasTensor (tensorObj X₂ X₃)
Y₁ Y₂ Y₃ : GradedObject I C
inst✝³ : Y₁.HasTensor Y₂
inst✝² : Y₂.HasTensor Y₃
inst✝¹ : (tensorObj Y₁ Y₂).HasTensor Y₃
inst✝ : Y₁.HasTensor (tensorObj Y₂ Y₃)
i₁ i₂ i₃ j : I
h : i₁ + i₂ + i₃ = j
i₂₃ : I
h' : i₂ + i₃ = i₂₃
⊢ ιTensorObj₃ X₁ X₂ X₃ i₁ i₂ i₃ j h = X₁ i₁ ◁ ιTensorObj X₂ X₃ i₂ i₃ i₂₃ h' ≫ ιTensorObj X₁ (tensorObj X₂ X₃) i₁ i₂₃ j ⋯
state_after: I : Type u
inst✝¹⁰ : AddMonoid I
C : Type u_1
inst✝⁹ : Category.{u_2, u_1} C
inst✝⁸ : MonoidalCategory C
Z : C
X₁ X₂ X₃ : GradedObject I C
inst✝⁷ : X₁.HasTensor X₂
inst✝⁶ : X₂.HasTensor X₃
inst✝⁵ : (tensorObj X₁ X₂).HasTensor X₃
inst✝⁴ : X₁.HasTensor (tensorObj X₂ X₃)
Y₁ Y₂ Y₃ : GradedObject I C
inst✝³ : Y₁.HasTensor Y₂
inst✝² : Y₂.HasTensor Y₃
inst✝¹ : (tensorObj Y₁ Y₂).HasTensor Y₃
inst✝ : Y₁.HasTensor (tensorObj Y₂ Y₃)
i₁ i₂ i₃ j : I
h : i₁ + i₂ + i₃ = j
⊢ ιTensorObj₃ X₁ X₂ X₃ i₁ i₂ i₃ j h =
    X₁ i₁ ◁ ιTensorObj X₂ X₃ i₂ i₃ (i₂ + i₃) ⋯ ≫ ιTensorObj X₁ (tensorObj X₂ X₃) i₁ (i₂ + i₃) j ⋯
tactic: subst h'
state_before: I : Type u
inst✝¹⁰ : AddMonoid I
C : Type u_1
inst✝⁹ : Category.{u_2, u_1} C
inst✝⁸ : MonoidalCategory C
Z : C
X₁ X₂ X₃ : GradedObject I C
inst✝⁷ : X₁.HasTensor X₂
inst✝⁶ : X₂.HasTensor X₃
inst✝⁵ : (tensorObj X₁ X₂).HasTensor X₃
inst✝⁴ : X₁.HasTensor (tensorObj X₂ X₃)
Y₁ Y₂ Y₃ : GradedObject I C
inst✝³ : Y₁.HasTensor Y₂
inst✝² : Y₂.HasTensor Y₃
inst✝¹ : (tensorObj Y₁ Y₂).HasTensor Y₃
inst✝ : Y₁.HasTensor (tensorObj Y₂ Y₃)
i₁ i₂ i₃ j : I
h : i₁ + i₂ + i₃ = j
⊢ ιTensorObj₃ X₁ X₂ X₃ i₁ i₂ i₃ j h =
    X₁ i₁ ◁ ιTensorObj X₂ X₃ i₂ i₃ (i₂ + i₃) ⋯ ≫ ιTensorObj X₁ (tensorObj X₂ X₃) i₁ (i₂ + i₃) j ⋯
state_after: no goals
tactic: rfl
Theorem: List.eraseIdx_sublist
File: .lake/packages/batteries/Batteries/Data/List/EraseIdx.lean

Proof steps:
state_before: α : Type u
β : Type v
x✝ : Nat
⊢ [].eraseIdx x✝ <+ []
state_after: no goals
tactic: simp
state_before: α : Type u
β : Type v
a : α
l : List α
⊢ (a :: l).eraseIdx 0 <+ a :: l
state_after: no goals
tactic: simp
state_before: α : Type u
β : Type v
a : α
l : List α
k : Nat
⊢ (a :: l).eraseIdx (k + 1) <+ a :: l
state_after: no goals
tactic: simp [eraseIdx_sublist l k]
Theorem: Filter.Tendsto.prod_atBot
File: Mathlib/Order/Filter/AtTopBot.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : SemilatticeInf α
inst✝ : SemilatticeInf γ
f g : α → γ
hf : Tendsto f atBot atBot
hg : Tendsto g atBot atBot
⊢ Tendsto (Prod.map f g) atBot atBot
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : SemilatticeInf α
inst✝ : SemilatticeInf γ
f g : α → γ
hf : Tendsto f atBot atBot
hg : Tendsto g atBot atBot
⊢ Tendsto (Prod.map f g) (atBot ×ˢ atBot) atBot
tactic: rw [← prod_atBot_atBot_eq]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : SemilatticeInf α
inst✝ : SemilatticeInf γ
f g : α → γ
hf : Tendsto f atBot atBot
hg : Tendsto g atBot atBot
⊢ Tendsto (Prod.map f g) (atBot ×ˢ atBot) atBot
state_after: no goals
tactic: exact hf.prod_map_prod_atBot hg
Theorem: Multiset.mem_Iic
File: Mathlib/Order/Interval/Multiset.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrderBot α
b x : α
⊢ x ∈ Iic b ↔ x ≤ b
state_after: no goals
tactic: rw [Iic, ← Finset.mem_def, Finset.mem_Iic]
Theorem: RingCon.coe_sInf
File: Mathlib/RingTheory/Congruence/Basic.lean

Proof steps:
state_before: α : Type u_1
R : Type u_2
inst✝¹ : Add R
inst✝ : Mul R
S : Set (RingCon R)
⊢ ⇑(sInf S) = sInf (DFunLike.coe '' S)
state_after: case h.h.a
α : Type u_1
R : Type u_2
inst✝¹ : Add R
inst✝ : Mul R
S : Set (RingCon R)
x✝¹ x✝ : R
⊢ (sInf S) x✝¹ x✝ ↔ sInf (DFunLike.coe '' S) x✝¹ x✝
tactic: ext
state_before: case h.h.a
α : Type u_1
R : Type u_2
inst✝¹ : Add R
inst✝ : Mul R
S : Set (RingCon R)
x✝¹ x✝ : R
⊢ (sInf S) x✝¹ x✝ ↔ sInf (DFunLike.coe '' S) x✝¹ x✝
state_after: case h.h.a
α : Type u_1
R : Type u_2
inst✝¹ : Add R
inst✝ : Mul R
S : Set (RingCon R)
x✝¹ x✝ : R
⊢ (sInf S) x✝¹ x✝ ↔ ∀ i ∈ S, i x✝¹ x✝
tactic: simp only [sInf_image, iInf_apply, iInf_Prop_eq]
state_before: case h.h.a
α : Type u_1
R : Type u_2
inst✝¹ : Add R
inst✝ : Mul R
S : Set (RingCon R)
x✝¹ x✝ : R
⊢ (sInf S) x✝¹ x✝ ↔ ∀ i ∈ S, i x✝¹ x✝
state_after: no goals
tactic: rfl
Theorem: _private.Mathlib.MeasureTheory.Decomposition.Jordan.0.MeasureTheory.SignedMeasure.toJordanDecomposition_smul_real_nonneg
File: Mathlib/MeasureTheory/Decomposition/Jordan.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : 0 ≤ r
⊢ (r • s).toJordanDecomposition = r • s.toJordanDecomposition
state_after: case intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ≥0
⊢ (↑r • s).toJordanDecomposition = ↑r • s.toJordanDecomposition
tactic: lift r to ℝ≥0 using hr
state_before: case intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ≥0
⊢ (↑r • s).toJordanDecomposition = ↑r • s.toJordanDecomposition
state_after: case intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ≥0
⊢ (↑r • s).toJordanDecomposition = (r • s).toJordanDecomposition
tactic: rw [JordanDecomposition.coe_smul, ← toJordanDecomposition_smul]
state_before: case intro
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ≥0
⊢ (↑r • s).toJordanDecomposition = (r • s).toJordanDecomposition
state_after: no goals
tactic: rfl
Theorem: algebraicIndependent_subtype
File: Mathlib/RingTheory/AlgebraicIndependent.lean

Proof steps:
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
s : Set A
⊢ AlgebraicIndependent R Subtype.val ↔ ∀ p ∈ supported R s, (aeval _root_.id) p = 0 → p = 0
state_after: no goals
tactic: apply @algebraicIndependent_comp_subtype _ _ _ id
Theorem: CategoryTheory.SimplicialObject.cechNerveEquiv_symm_apply
File: Mathlib/AlgebraicTopology/CechNerve.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
⊢ Function.LeftInverse (equivalenceRightToLeft X F) (equivalenceLeftToRight X F)
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
A : Augmented.toArrow.obj X ⟶ F
⊢ equivalenceRightToLeft X F (equivalenceLeftToRight X F A) = A
tactic: intro A
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
A : Augmented.toArrow.obj X ⟶ F
⊢ equivalenceRightToLeft X F (equivalenceLeftToRight X F A) = A
state_after: case h₁
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
A : Augmented.toArrow.obj X ⟶ F
⊢ (equivalenceRightToLeft X F (equivalenceLeftToRight X F A)).left = A.left

case h₂
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
A : Augmented.toArrow.obj X ⟶ F
⊢ (equivalenceRightToLeft X F (equivalenceLeftToRight X F A)).right = A.right
tactic: ext
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
⊢ Function.RightInverse (equivalenceRightToLeft X F) (equivalenceLeftToRight X F)
state_after: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
A : X ⟶ F.augmentedCechNerve
⊢ equivalenceLeftToRight X F (equivalenceRightToLeft X F A) = A
tactic: intro A
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
A : X ⟶ F.augmentedCechNerve
⊢ equivalenceLeftToRight X F (equivalenceRightToLeft X F A) = A
state_after: case h₁.h
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
A : X ⟶ F.augmentedCechNerve
x : SimplexCategoryᵒᵖ
⊢ (equivalenceLeftToRight X F (equivalenceRightToLeft X F A)).left.app x = A.left.app x

case h₂
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ∀ (n : ℕ) (f : Arrow C), HasWidePullback f.right (fun x => f.left) fun x => f.hom
X : Augmented C
F : Arrow C
A : X ⟶ F.augmentedCechNerve
⊢ (equivalenceLeftToRight X F (equivalenceRightToLeft X F A)).right = A.right
tactic: ext x : 2