ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: CategoryTheory.shiftFunctorZero_inv_app_shift
File: Mathlib/CategoryTheory/Shift/Basic.lean

Proof steps:
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
X Y : C
f : X ⟶ Y
n : A
⊢ (shiftFunctorZero C A).inv.app ((shiftFunctor C n).obj X) =
    (shiftFunctor C n).map ((shiftFunctorZero C A).inv.app X) ≫ (shiftFunctorComm C n 0).inv.app X
state_after: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
X Y : C
f : X ⟶ Y
n : A
⊢ 𝟙 ((𝟭 C).obj ((shiftFunctor C n).obj X)) = (shiftFunctor C n).map (𝟙 ((𝟭 C).obj X))
tactic: rw [← cancel_mono ((shiftFunctorZero C A).hom.app (X⟦n⟧)), Category.assoc, Iso.inv_hom_id_app,
    shiftFunctorZero_hom_app_shift, Iso.inv_hom_id_app_assoc, ← Functor.map_comp,
    Iso.inv_hom_id_app]
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
X Y : C
f : X ⟶ Y
n : A
⊢ 𝟙 ((𝟭 C).obj ((shiftFunctor C n).obj X)) = (shiftFunctor C n).map (𝟙 ((𝟭 C).obj X))
state_after: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
X Y : C
f : X ⟶ Y
n : A
⊢ 𝟙 ((shiftFunctor C n).obj X) = (shiftFunctor C n).map (𝟙 X)
tactic: dsimp
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
X Y : C
f : X ⟶ Y
n : A
⊢ 𝟙 ((shiftFunctor C n).obj X) = (shiftFunctor C n).map (𝟙 X)
state_after: no goals
tactic: rw [Functor.map_id]
Theorem: Finpartition.atomise_empty
File: Mathlib/Order/Partition/Finpartition.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
inst✝ : Fintype α
F : Finset (Finset α)
hs : s.Nonempty
⊢ (atomise s ∅).parts = {s}
state_after: α : Type u_1
inst✝¹ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
inst✝ : Fintype α
F : Finset (Finset α)
hs : s.Nonempty
⊢ (ofErase {s} ⋯ ⋯).parts = {s}
tactic: simp only [atomise, powerset_empty, image_singleton, not_mem_empty, IsEmpty.forall_iff,
    imp_true_iff, filter_True]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
inst✝ : Fintype α
F : Finset (Finset α)
hs : s.Nonempty
⊢ (ofErase {s} ⋯ ⋯).parts = {s}
state_after: no goals
tactic: exact erase_eq_of_not_mem (not_mem_singleton.2 hs.ne_empty.symm)
Theorem: Finset.prod_filter_mul_prod_filter_not
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝² : CommMonoid β
s : Finset α
p : α → Prop
inst✝¹ : DecidablePred p
inst✝ : (x : α) → Decidable ¬p x
f : α → β
⊢ (∏ x ∈ filter p s, f x) * ∏ x ∈ filter (fun x => ¬p x) s, f x = ∏ x ∈ s, f x
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝² : CommMonoid β
s : Finset α
p : α → Prop
inst✝¹ : DecidablePred p
inst✝ : (x : α) → Decidable ¬p x
f : α → β
this : DecidableEq α
⊢ (∏ x ∈ filter p s, f x) * ∏ x ∈ filter (fun x => ¬p x) s, f x = ∏ x ∈ s, f x
tactic: have := Classical.decEq α
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝² : CommMonoid β
s : Finset α
p : α → Prop
inst✝¹ : DecidablePred p
inst✝ : (x : α) → Decidable ¬p x
f : α → β
this : DecidableEq α
⊢ (∏ x ∈ filter p s, f x) * ∏ x ∈ filter (fun x => ¬p x) s, f x = ∏ x ∈ s, f x
state_after: no goals
tactic: rw [← prod_union (disjoint_filter_filter_neg s s p), filter_union_filter_neg_eq]
Theorem: MvPolynomial.rename_esymm
File: Mathlib/RingTheory/MvPolynomial/Symmetric.lean

Proof steps:
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e : σ ≃ τ
⊢ (rename ⇑e) (esymm σ R n) = ∑ x ∈ powersetCard n univ, ∏ i ∈ x, X (e i)
state_after: no goals
tactic: simp_rw [esymm, map_sum, map_prod, rename_X]
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e : σ ≃ τ
⊢ ∑ x ∈ powersetCard n univ, ∏ i ∈ x, X (e i) = ∑ t ∈ powersetCard n (Finset.map e.toEmbedding univ), ∏ i ∈ t, X i
state_after: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e : σ ≃ τ
⊢ ∑ x ∈ powersetCard n univ, ∏ i ∈ x, X (e i) = ∑ x ∈ powersetCard n univ, ∏ i ∈ (mapEmbedding e.toEmbedding) x, X i
tactic: simp [powersetCard_map, -map_univ_equiv]
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e : σ ≃ τ
⊢ ∑ x ∈ powersetCard n univ, ∏ i ∈ x, X (e i) = ∑ x ∈ powersetCard n univ, ∏ i ∈ (mapEmbedding e.toEmbedding) x, X i
state_after: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e : σ ≃ τ
⊢ ∑ x ∈ powersetCard n univ, ∏ i ∈ x, X (e i) = ∑ x ∈ powersetCard n univ, ∏ i ∈ Finset.map e.toEmbedding x, X i
tactic: dsimp [mapEmbedding, OrderEmbedding.ofMapLEIff]
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e : σ ≃ τ
⊢ ∑ x ∈ powersetCard n univ, ∏ i ∈ x, X (e i) = ∑ x ∈ powersetCard n univ, ∏ i ∈ Finset.map e.toEmbedding x, X i
state_after: no goals
tactic: simp
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e : σ ≃ τ
⊢ ∑ t ∈ powersetCard n (Finset.map e.toEmbedding univ), ∏ i ∈ t, X i = ∑ t ∈ powersetCard n univ, ∏ i ∈ t, X i
state_after: no goals
tactic: rw [map_univ_equiv]
Theorem: Fin.castSucc_lt_succ_iff
File: Mathlib/Data/Fin/Basic.lean

Proof steps:
state_before: n m : ℕ
a b : Fin n
⊢ a.castSucc < b.succ ↔ a ≤ b
state_after: no goals
tactic: rw [castSucc_lt_iff_succ_le, succ_le_succ_iff]
Theorem: Submodule.mem_smul_span
File: Mathlib/RingTheory/Ideal/Operations.lean

Proof steps:
state_before: R : Type u
M : Type v
M'✝ : Type u_1
F : Type u_2
G : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'✝
inst✝² : Module R M'✝
I J : Ideal R
N P : Submodule R M
S : Set R
T : Set M
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
s : Set M
x : M
⊢ x ∈ I • span R s ↔ x ∈ span R (⋃ a ∈ I, ⋃ b ∈ s, {a • b})
state_after: R : Type u
M : Type v
M'✝ : Type u_1
F : Type u_2
G : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'✝
inst✝² : Module R M'✝
I J : Ideal R
N P : Submodule R M
S : Set R
T : Set M
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
s : Set M
x : M
⊢ x ∈ span R (⋃ s_1 ∈ ↑I, ⋃ t ∈ s, {s_1 • t}) ↔ x ∈ span R (⋃ a ∈ I, ⋃ b ∈ s, {a • b})
tactic: rw [← I.span_eq, Submodule.span_smul_span, I.span_eq]
state_before: R : Type u
M : Type v
M'✝ : Type u_1
F : Type u_2
G : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'✝
inst✝² : Module R M'✝
I J : Ideal R
N P : Submodule R M
S : Set R
T : Set M
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
s : Set M
x : M
⊢ x ∈ span R (⋃ s_1 ∈ ↑I, ⋃ t ∈ s, {s_1 • t}) ↔ x ∈ span R (⋃ a ∈ I, ⋃ b ∈ s, {a • b})
state_after: no goals
tactic: rfl
Theorem: Module.DualBases.coe_dualBasis
File: Mathlib/LinearAlgebra/Dual.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
ι : Type u_3
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
e : ι → M
ε : ι → Dual R M
inst✝¹ : DecidableEq ι
h : DualBases e ε
inst✝ : _root_.Finite ι
i j : ι
⊢ (h.basis.dualBasis i) (h.basis j) = (ε i) (h.basis j)
state_after: no goals
tactic: rw [h.basis.dualBasis_apply_self, h.coe_basis, h.eval, if_congr eq_comm rfl rfl]
Theorem: Real.sin_arctan
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Arctan.lean

Proof steps:
state_before: x : ℝ
⊢ sin (arctan x) = x / √(1 + x ^ 2)
state_after: no goals
tactic: rw_mod_cast [← tan_div_sqrt_one_add_tan_sq (cos_arctan_pos x), tan_arctan]
Theorem: Real.fourierIntegralInv_eq
File: Mathlib/Analysis/Fourier/FourierTransform.lean

Proof steps:
state_before: E : Type u_1
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace ℂ E
V : Type u_2
inst✝⁹ : NormedAddCommGroup V
inst✝⁸ : InnerProductSpace ℝ V
inst✝⁷ : MeasurableSpace V
inst✝⁶ : BorelSpace V
inst✝⁵ : FiniteDimensional ℝ V
W : Type u_3
inst✝⁴ : NormedAddCommGroup W
inst✝³ : InnerProductSpace ℝ W
inst✝² : MeasurableSpace W
inst✝¹ : BorelSpace W
inst✝ : FiniteDimensional ℝ W
f : V → E
w : V
⊢ 𝓕⁻ f w = ∫ (v : V), 𝐞 ⟪v, w⟫_ℝ • f v
state_after: no goals
tactic: simp [fourierIntegralInv, VectorFourier.fourierIntegral]
Theorem: Polynomial.eval₂_list_prod_noncomm
File: Mathlib/Algebra/Polynomial/Eval.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : Semiring R
p q r : R[X]
inst✝¹ : Semiring S
f : R →+* S
x : S
inst✝ : Semiring T
ps : List R[X]
hf : ∀ p ∈ ps, ∀ (k : ℕ), Commute (f (p.coeff k)) x
⊢ eval₂ f x ps.prod = (List.map (eval₂ f x) ps).prod
state_after: case nil
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : Semiring R
p q r : R[X]
inst✝¹ : Semiring S
f : R →+* S
x : S
inst✝ : Semiring T
hf : ∀ p ∈ [], ∀ (k : ℕ), Commute (f (p.coeff k)) x
⊢ eval₂ f x [].prod = (List.map (eval₂ f x) []).prod

case append_singleton
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : Semiring R
p✝ q r : R[X]
inst✝¹ : Semiring S
f : R →+* S
x : S
inst✝ : Semiring T
ps : List R[X]
p : R[X]
ihp : (∀ p ∈ ps, ∀ (k : ℕ), Commute (f (p.coeff k)) x) → eval₂ f x ps.prod = (List.map (eval₂ f x) ps).prod
hf : ∀ p_1 ∈ ps ++ [p], ∀ (k : ℕ), Commute (f (p_1.coeff k)) x
⊢ eval₂ f x (ps ++ [p]).prod = (List.map (eval₂ f x) (ps ++ [p])).prod
tactic: induction' ps using List.reverseRecOn with ps p ihp
Theorem: disjoint_symmDiff_inf
File: Mathlib/Order/SymmDiff.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedBooleanAlgebra α
a b c d : α
⊢ Disjoint (a ∆ b) (a ⊓ b)
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedBooleanAlgebra α
a b c d : α
⊢ Disjoint ((a ⊔ b) \ (a ⊓ b)) (a ⊓ b)
tactic: rw [symmDiff_eq_sup_sdiff_inf]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedBooleanAlgebra α
a b c d : α
⊢ Disjoint ((a ⊔ b) \ (a ⊓ b)) (a ⊓ b)
state_after: no goals
tactic: exact disjoint_sdiff_self_left
Theorem: stableUnderGeneralization_iff_exists_sInter_eq
File: Mathlib/Topology/Inseparable.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s✝ : Set X
f g : X → Y
s : Set X
⊢ StableUnderGeneralization s ↔ ∃ S, (∀ s ∈ S, IsOpen s) ∧ ⋂₀ S = s
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s✝ : Set X
f g : X → Y
s : Set X
⊢ StableUnderGeneralization s → ∃ S, (∀ s ∈ S, IsOpen s) ∧ ⋂₀ S = s
tactic: refine ⟨?_, fun ⟨S, hS, e⟩ ↦ e ▸
    stableUnderGeneralization_sInter S (fun x hx ↦ (hS x hx).stableUnderGeneralization)⟩
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s✝ : Set X
f g : X → Y
s : Set X
⊢ StableUnderGeneralization s → ∃ S, (∀ s ∈ S, IsOpen s) ∧ ⋂₀ S = s
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s✝ : Set X
f g : X → Y
s : Set X
⊢ (∃ S, (∀ s ∈ S, IsClosed s) ∧ ⋃₀ S = sᶜ) → ∃ S, (∀ s ∈ S, IsOpen s) ∧ ⋂₀ S = s
tactic: rw [← stableUnderSpecialization_compl_iff, stableUnderSpecialization_iff_exists_sUnion_eq]
Theorem: Finset.add_sum_Ioi_eq_sum_Ici
File: Mathlib/Algebra/BigOperators/Intervals.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
inst✝² : PartialOrder α
inst✝¹ : CommMonoid M
f : α → M
a✝ b : α
inst✝ : LocallyFiniteOrderTop α
a : α
⊢ f a * ∏ x ∈ Ioi a, f x = ∏ x ∈ Ici a, f x
state_after: no goals
tactic: rw [Ici_eq_cons_Ioi, prod_cons]
Theorem: Composition.mem_range_embedding_iff
File: Mathlib/Combinatorics/Enumerative/Composition.lean

Proof steps:
state_before: n : ℕ
c : Composition n
j : Fin n
i : Fin c.length
⊢ j ∈ Set.range ⇑(c.embedding i) ↔ c.sizeUpTo ↑i ≤ ↑j ∧ ↑j < c.sizeUpTo (↑i).succ
state_after: case mp
n : ℕ
c : Composition n
j : Fin n
i : Fin c.length
⊢ j ∈ Set.range ⇑(c.embedding i) → c.sizeUpTo ↑i ≤ ↑j ∧ ↑j < c.sizeUpTo (↑i).succ

case mpr
n : ℕ
c : Composition n
j : Fin n
i : Fin c.length
⊢ c.sizeUpTo ↑i ≤ ↑j ∧ ↑j < c.sizeUpTo (↑i).succ → j ∈ Set.range ⇑(c.embedding i)
tactic: constructor
Theorem: Batteries.RBNode.Ordered.insert
File: .lake/packages/batteries/Batteries/Data/RBMap/WF.lean

Proof steps:
state_before: α✝ : Type u_1
cmp : α✝ → α✝ → Ordering
t : RBNode α✝
v : α✝
h : Ordered cmp t
⊢ Ordered cmp (insert cmp t v)
state_after: α✝ : Type u_1
cmp : α✝ → α✝ → Ordering
t : RBNode α✝
v : α✝
h : Ordered cmp t
⊢ Ordered cmp
    (match t.isRed with
    | red => (ins cmp v t).setBlack
    | black => ins cmp v t)
tactic: unfold RBNode.insert
state_before: α✝ : Type u_1
cmp : α✝ → α✝ → Ordering
t : RBNode α✝
v : α✝
h : Ordered cmp t
⊢ Ordered cmp
    (match t.isRed with
    | red => (ins cmp v t).setBlack
    | black => ins cmp v t)
state_after: no goals
tactic: split <;> simp [Ordered.setBlack, h.ins (x := v)]
Theorem: summable_of_ratio_norm_eventually_le
File: Mathlib/Analysis/SpecificLimits/Normed.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
ι : Type u_3
α : Type u_4
inst✝¹ : SeminormedAddCommGroup α
inst✝ : CompleteSpace α
f : ℕ → α
r : ℝ
hr₁ : r < 1
h : ∀ᶠ (n : ℕ) in atTop, ‖f (n + 1)‖ ≤ r * ‖f n‖
⊢ Summable f
state_after: case pos
α✝ : Type u_1
β : Type u_2
ι : Type u_3
α : Type u_4
inst✝¹ : SeminormedAddCommGroup α
inst✝ : CompleteSpace α
f : ℕ → α
r : ℝ
hr₁ : r < 1
h : ∀ᶠ (n : ℕ) in atTop, ‖f (n + 1)‖ ≤ r * ‖f n‖
hr₀ : 0 ≤ r
⊢ Summable f

case neg
α✝ : Type u_1
β : Type u_2
ι : Type u_3
α : Type u_4
inst✝¹ : SeminormedAddCommGroup α
inst✝ : CompleteSpace α
f : ℕ → α
r : ℝ
hr₁ : r < 1
h : ∀ᶠ (n : ℕ) in atTop, ‖f (n + 1)‖ ≤ r * ‖f n‖
hr₀ : ¬0 ≤ r
⊢ Summable f
tactic: by_cases hr₀ : 0 ≤ r
Theorem: Nat.Primrec.pred
File: Mathlib/Computability/Primrec.lean

Proof steps:
state_before: n : ℕ
⊢ Nat.casesOn n 0 id = n.pred
state_after: no goals
tactic: cases n <;> simp [*]
Theorem: ENNReal.iInf_mul_left'
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Sort u_4
f : ι → ℝ≥0∞
a : ℝ≥0∞
h : a = ⊤ → ⨅ i, f i = 0 → ∃ i, f i = 0
h0 : a = 0 → Nonempty ι
⊢ ⨅ i, a * f i = a * ⨅ i, f i
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Sort u_4
f : ι → ℝ≥0∞
a : ℝ≥0∞
h : a = ⊤ → ⨅ i, f i = 0 → ∃ i, f i = 0
h0 : a = 0 → Nonempty ι
H : a = ⊤ ∧ ⨅ i, f i = 0
⊢ ⨅ i, a * f i = a * ⨅ i, f i

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Sort u_4
f : ι → ℝ≥0∞
a : ℝ≥0∞
h : a = ⊤ → ⨅ i, f i = 0 → ∃ i, f i = 0
h0 : a = 0 → Nonempty ι
H : ¬(a = ⊤ ∧ ⨅ i, f i = 0)
⊢ ⨅ i, a * f i = a * ⨅ i, f i
tactic: by_cases H : a = ∞ ∧ ⨅ i, f i = 0
Theorem: abs_nsmul
File: Mathlib/Algebra/Order/Group/Abs.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedCommGroup α
a✝ b : α
n : ℕ
a : α
⊢ mabs (a ^ n) = mabs a ^ n
state_after: case inl
α : Type u_1
inst✝ : LinearOrderedCommGroup α
a✝ b : α
n : ℕ
a : α
ha : a ≤ 1
⊢ mabs (a ^ n) = mabs a ^ n

case inr
α : Type u_1
inst✝ : LinearOrderedCommGroup α
a✝ b : α
n : ℕ
a : α
ha : 1 ≤ a
⊢ mabs (a ^ n) = mabs a ^ n
tactic: obtain ha | ha := le_total a 1
Theorem: Stream'.mem_cons_of_mem
File: Mathlib/Data/Stream/Init.lean

Proof steps:
state_before: α : Type u
β : Type v
δ : Type w
a : α
s : Stream' α
b : α
x✝ : a ∈ s
n : ℕ
h : (fun b => a = b) (s.get n)
⊢ (fun b => a = b) ((b :: s).get n.succ)
state_after: no goals
tactic: rw [get_succ, tail_cons, h]
Theorem: Quiver.Path.cast_cons
File: Mathlib/Combinatorics/Quiver/Cast.lean

Proof steps:
state_before: U : Type u_1
inst✝ : Quiver U
u v w u' w' : U
p : Path u v
e : v ⟶ w
hu : u = u'
hw : w = w'
⊢ cast hu hw (p.cons e) = (cast hu ⋯ p).cons (Hom.cast ⋯ hw e)
state_after: U : Type u_1
inst✝ : Quiver U
v u' w' : U
p : Path u' v
e : v ⟶ w'
⊢ cast ⋯ ⋯ (p.cons e) = (cast ⋯ ⋯ p).cons (Hom.cast ⋯ ⋯ e)
tactic: subst_vars
state_before: U : Type u_1
inst✝ : Quiver U
v u' w' : U
p : Path u' v
e : v ⟶ w'
⊢ cast ⋯ ⋯ (p.cons e) = (cast ⋯ ⋯ p).cons (Hom.cast ⋯ ⋯ e)
state_after: no goals
tactic: rfl
Theorem: not_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
⊢ ¬LinearIndependent R v ↔ ∃ s g, ∑ i ∈ s, g i • v i = 0 ∧ ∃ i ∈ s, g i ≠ 0
state_after: ι : 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
⊢ (¬∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0) ↔
    ∃ s g, ∑ i ∈ s, g i • v i = 0 ∧ ∃ i ∈ s, g i ≠ 0
tactic: rw [linearIndependent_iff']
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
⊢ (¬∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0) ↔
    ∃ s g, ∑ i ∈ s, g i • v i = 0 ∧ ∃ i ∈ s, g i ≠ 0
state_after: no goals
tactic: simp only [exists_prop, not_forall]
Theorem: PartialEquiv.forall_mem_target
File: Mathlib/Logic/Equiv/PartialEquiv.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e : PartialEquiv α β
e' : PartialEquiv β γ
p : β → Prop
⊢ (∀ y ∈ e.target, p y) ↔ ∀ x ∈ e.source, p (↑e x)
state_after: no goals
tactic: rw [← image_source_eq_target, forall_mem_image]
Theorem: IsLocalizedModule.mk'_smul
File: Mathlib/Algebra/Module/LocalizedModule.lean

Proof steps:
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
r : R
m : M
s : ↥S
⊢ mk' f (r • m) s = r • mk' f m s
state_after: 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
r : R
m : M
s : ↥S
⊢ (fromLocalizedModule S f) (LocalizedModule.mk (r • m) s) = r • (fromLocalizedModule S f) (LocalizedModule.mk m s)
tactic: delta mk'
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
r : R
m : M
s : ↥S
⊢ (fromLocalizedModule S f) (LocalizedModule.mk (r • m) s) = r • (fromLocalizedModule S f) (LocalizedModule.mk m s)
state_after: no goals
tactic: rw [← LocalizedModule.smul'_mk, LinearMap.map_smul]
Theorem: CategoryTheory.Limits.Types.Small.limitCone_π_app
File: Mathlib/CategoryTheory/Limits/Types.lean

Proof steps:
state_before: J : Type v
inst✝¹ : Category.{w, v} J
F : J ⥤ Type u
inst✝ : Small.{u, max u v} ↑F.sections
j j' : J
f : j ⟶ j'
⊢ ((Functor.const J).obj (Shrink.{u, max u v} ↑F.sections)).map f ≫
      (fun j u => ↑((equivShrink ↑F.sections).symm u) j) j' =
    (fun j u => ↑((equivShrink ↑F.sections).symm u) j) j ≫ F.map f
state_after: case h
J : Type v
inst✝¹ : Category.{w, v} J
F : J ⥤ Type u
inst✝ : Small.{u, max u v} ↑F.sections
j j' : J
f : j ⟶ j'
x : ((Functor.const J).obj (Shrink.{u, max u v} ↑F.sections)).obj j
⊢ (((Functor.const J).obj (Shrink.{u, max u v} ↑F.sections)).map f ≫
        (fun j u => ↑((equivShrink ↑F.sections).symm u) j) j')
      x =
    ((fun j u => ↑((equivShrink ↑F.sections).symm u) j) j ≫ F.map f) x
tactic: funext x
state_before: case h
J : Type v
inst✝¹ : Category.{w, v} J
F : J ⥤ Type u
inst✝ : Small.{u, max u v} ↑F.sections
j j' : J
f : j ⟶ j'
x : ((Functor.const J).obj (Shrink.{u, max u v} ↑F.sections)).obj j
⊢ (((Functor.const J).obj (Shrink.{u, max u v} ↑F.sections)).map f ≫
        (fun j u => ↑((equivShrink ↑F.sections).symm u) j) j')
      x =
    ((fun j u => ↑((equivShrink ↑F.sections).symm u) j) j ≫ F.map f) x
state_after: no goals
tactic: simp
Theorem: MeasurableSpace.CountablyGenerated.sup
File: Mathlib/MeasureTheory/MeasurableSpace/CountablyGenerated.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m₁ m₂ : MeasurableSpace β
h₁ : CountablyGenerated β
h₂ : CountablyGenerated β
⊢ CountablyGenerated β
state_after: case mk.intro.intro
α : Type u_1
β : Type u_2
m₂ : MeasurableSpace β
h₂ : CountablyGenerated β
b₁ : Set (Set β)
hb₁c : b₁.Countable
⊢ CountablyGenerated β
tactic: rcases h₁ with ⟨⟨b₁, hb₁c, rfl⟩⟩
state_before: case mk.intro.intro
α : Type u_1
β : Type u_2
m₂ : MeasurableSpace β
h₂ : CountablyGenerated β
b₁ : Set (Set β)
hb₁c : b₁.Countable
⊢ CountablyGenerated β
state_after: case mk.intro.intro.mk.intro.intro
α : Type u_1
β : Type u_2
b₁ : Set (Set β)
hb₁c : b₁.Countable
b₂ : Set (Set β)
hb₂c : b₂.Countable
⊢ CountablyGenerated β
tactic: rcases h₂ with ⟨⟨b₂, hb₂c, rfl⟩⟩
state_before: case mk.intro.intro.mk.intro.intro
α : Type u_1
β : Type u_2
b₁ : Set (Set β)
hb₁c : b₁.Countable
b₂ : Set (Set β)
hb₂c : b₂.Countable
⊢ CountablyGenerated β
state_after: no goals
tactic: exact @mk _ (_ ⊔ _) ⟨_, hb₁c.union hb₂c, generateFrom_sup_generateFrom⟩
Theorem: Set.Iic.disjoint_iff
File: Mathlib/Order/LatticeIntervals.lean

Proof steps:
state_before: α : Type u_1
a : α
inst✝¹ : SemilatticeInf α
inst✝ : OrderBot α
x y : ↑(Iic a)
⊢ Disjoint x y ↔ Disjoint ↑x ↑y
state_after: no goals
tactic: simp [_root_.disjoint_iff, Subtype.ext_iff]