ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Matrix.Pivot.mul_listTransvecRow_last_row
File: Mathlib/LinearAlgebra/Matrix/Transvection.lean

Proof steps:
state_before: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
r : ℕ
M : Matrix (Fin r ⊕ Unit) (Fin r ⊕ Unit) 𝕜
hM : M (inr ()) (inr ()) ≠ 0
i : Fin r
⊢ (M * (listTransvecRow M).prod) (inr ()) (inl i) = 0
state_after: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
r : ℕ
M : Matrix (Fin r ⊕ Unit) (Fin r ⊕ Unit) 𝕜
hM : M (inr ()) (inr ()) ≠ 0
i : Fin r
⊢ ∀ k ≤ r, (M * (List.take k (listTransvecRow M)).prod) (inr ()) (inl i) = if k ≤ ↑i then M (inr ()) (inl i) else 0
tactic: suffices H :
    ∀ k : ℕ,
      k ≤ r →
        (M * ((listTransvecRow M).take k).prod) (inr unit) (inl i) =
          if k ≤ i then M (inr unit) (inl i) else 0 by
    have A : (listTransvecRow M).length = r := by simp [listTransvecRow]
    rw [← List.take_length (listTransvecRow M), A]
    have : ¬r ≤ i := by simp
    simpa only [this, ite_eq_right_iff] using H r le_rfl
state_before: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
r : ℕ
M : Matrix (Fin r ⊕ Unit) (Fin r ⊕ Unit) 𝕜
hM : M (inr ()) (inr ()) ≠ 0
i : Fin r
⊢ ∀ k ≤ r, (M * (List.take k (listTransvecRow M)).prod) (inr ()) (inl i) = if k ≤ ↑i then M (inr ()) (inl i) else 0
state_after: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
r : ℕ
M : Matrix (Fin r ⊕ Unit) (Fin r ⊕ Unit) 𝕜
hM : M (inr ()) (inr ()) ≠ 0
i : Fin r
k : ℕ
hk : k ≤ r
⊢ (M * (List.take k (listTransvecRow M)).prod) (inr ()) (inl i) = if k ≤ ↑i then M (inr ()) (inl i) else 0
tactic: intro k hk
state_before: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
r : ℕ
M : Matrix (Fin r ⊕ Unit) (Fin r ⊕ Unit) 𝕜
hM : M (inr ()) (inr ()) ≠ 0
i : Fin r
k : ℕ
hk : k ≤ r
⊢ (M * (List.take k (listTransvecRow M)).prod) (inr ()) (inl i) = if k ≤ ↑i then M (inr ()) (inl i) else 0
state_after: case zero
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
r : ℕ
M : Matrix (Fin r ⊕ Unit) (Fin r ⊕ Unit) 𝕜
hM : M (inr ()) (inr ()) ≠ 0
i : Fin r
hk : 0 ≤ r
⊢ (M * (List.take 0 (listTransvecRow M)).prod) (inr ()) (inl i) = if 0 ≤ ↑i then M (inr ()) (inl i) else 0

case succ
n✝ : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝³ : Field 𝕜
inst✝² : DecidableEq n✝
inst✝¹ : DecidableEq p
inst✝ : CommRing R
r : ℕ
M : Matrix (Fin r ⊕ Unit) (Fin r ⊕ Unit) 𝕜
hM : M (inr ()) (inr ()) ≠ 0
i : Fin r
n : ℕ
IH : n ≤ r → (M * (List.take n (listTransvecRow M)).prod) (inr ()) (inl i) = if n ≤ ↑i then M (inr ()) (inl i) else 0
hk : n + 1 ≤ r
⊢ (M * (List.take (n + 1) (listTransvecRow M)).prod) (inr ()) (inl i) = if n + 1 ≤ ↑i then M (inr ()) (inl i) else 0
tactic: induction' k with n IH
Theorem: Set.preimage_sUnion
File: Mathlib/Data/Set/Lattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β
s : Set (Set β)
⊢ f ⁻¹' ⋃₀ s = ⋃ t ∈ s, f ⁻¹' t
state_after: no goals
tactic: rw [sUnion_eq_biUnion, preimage_iUnion₂]
Theorem: BooleanRing.inf_comm
File: Mathlib/Algebra/Ring/BooleanRing.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : BooleanRing α
inst✝¹ : BooleanRing β
inst✝ : BooleanRing γ
a b : α
⊢ a * b = b * a
state_after: no goals
tactic: ring
Theorem: Real.arith_mean_weighted_of_constant
File: Mathlib/Analysis/MeanInequalities.lean

Proof steps:
state_before: ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
⊢ ∑ i ∈ s, w i * z i = ∑ i ∈ s, w i * x
state_after: ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
i : ι
hi : i ∈ s
⊢ w i * z i = w i * x
tactic: refine sum_congr rfl fun i hi => ?_
state_before: ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
i : ι
hi : i ∈ s
⊢ w i * z i = w i * x
state_after: case inl
ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
i : ι
hi : i ∈ s
hwi : w i = 0
⊢ w i * z i = w i * x

case inr
ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
i : ι
hi : i ∈ s
hwi : w i ≠ 0
⊢ w i * z i = w i * x
tactic: rcases eq_or_ne (w i) 0 with hwi | hwi
state_before: ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
⊢ ∑ i ∈ s, w i * x = x
state_after: no goals
tactic: rw [← sum_mul, hw', one_mul]
Theorem: CategoryTheory.MonoOver.inf_obj
File: Mathlib/CategoryTheory/Subobject/Lattice.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : HasPullbacks C
A : C
X✝ Y✝ : MonoOver A
k : X✝ ⟶ Y✝
g : MonoOver A
⊢ ((fun f => pullback f.arrow ⋙ map f.arrow) X✝).obj g ⟶ ((fun f => pullback f.arrow ⋙ map f.arrow) Y✝).obj g
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : HasPullbacks C
A : C
X✝ Y✝ : MonoOver A
k : X✝ ⟶ Y✝
g : MonoOver A
⊢ (((fun f => pullback f.arrow ⋙ map f.arrow) X✝).obj g).obj.left ⟶
    (((fun f => pullback f.arrow ⋙ map f.arrow) Y✝).obj g).obj.left

C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : HasPullbacks C
A : C
X✝ Y✝ : MonoOver A
k : X✝ ⟶ Y✝
g : MonoOver A
⊢ ?m.18614 ≫ (((fun f => pullback f.arrow ⋙ map f.arrow) Y✝).obj g).arrow =
    (((fun f => pullback f.arrow ⋙ map f.arrow) X✝).obj g).arrow
tactic: apply homMk _ _
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : HasPullbacks C
A : C
X✝ Y✝ : MonoOver A
k : X✝ ⟶ Y✝
g : MonoOver A
⊢ pullback.lift (pullback.fst ((forget A).obj g).hom X✝.arrow) (pullback.snd ((forget A).obj g).hom X✝.arrow ≫ k.left)
        ⋯ ≫
      (((fun f => pullback f.arrow ⋙ map f.arrow) Y✝).obj g).arrow =
    (((fun f => pullback f.arrow ⋙ map f.arrow) X✝).obj g).arrow
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : HasPullbacks C
A : C
X✝ Y✝ : MonoOver A
k : X✝ ⟶ Y✝
g : MonoOver A
⊢ pullback.lift (pullback.fst g.arrow X✝.arrow) (pullback.snd g.arrow X✝.arrow ≫ k.left) ⋯ ≫
      pullback.snd g.arrow Y✝.arrow ≫ Y✝.arrow =
    pullback.snd g.arrow X✝.arrow ≫ X✝.arrow
tactic: dsimp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : HasPullbacks C
A : C
X✝ Y✝ : MonoOver A
k : X✝ ⟶ Y✝
g : MonoOver A
⊢ pullback.lift (pullback.fst g.arrow X✝.arrow) (pullback.snd g.arrow X✝.arrow ≫ k.left) ⋯ ≫
      pullback.snd g.arrow Y✝.arrow ≫ Y✝.arrow =
    pullback.snd g.arrow X✝.arrow ≫ X✝.arrow
state_after: no goals
tactic: rw [pullback.lift_snd_assoc, assoc, w k]
Theorem: Module.finitePresentation_of_finite
File: Mathlib/Algebra/Module/FinitePresentation.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
N : Type ?u.18537
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : IsNoetherianRing R
h : Finite R M
⊢ FinitePresentation R M
state_after: case mk.intro
R : Type u_1
M : Type u_2
N : Type ?u.18537
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : IsNoetherianRing R
s : Finset M
hs : Submodule.span R ↑s = ⊤
⊢ FinitePresentation R M
tactic: obtain ⟨s, hs⟩ := h
state_before: case mk.intro
R : Type u_1
M : Type u_2
N : Type ?u.18537
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : IsNoetherianRing R
s : Finset M
hs : Submodule.span R ↑s = ⊤
⊢ FinitePresentation R M
state_after: no goals
tactic: exact ⟨s, hs, IsNoetherian.noetherian _⟩
Theorem: FirstOrder.Language.BoundedFormula.relabel_not
File: Mathlib/ModelTheory/Syntax.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 : ℕ
g : α → β ⊕ Fin n
k : ℕ
φ : L.BoundedFormula α k
⊢ relabel g φ.not = (relabel g φ).not
state_after: no goals
tactic: simp [BoundedFormula.not]
Theorem: Function.Exact.comp_injective
File: Mathlib/Algebra/Exact.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
N : Type u_4
N' : Type u_5
P : Type u_6
P' : Type u_7
f : M → N
g : N → P
g' : P → P'
inst✝¹ : Zero P
inst✝ : Zero P'
exact : Exact f g
inj : Injective g'
h0 : g' 0 = 0
⊢ Exact f (g' ∘ g)
state_after: R : Type u_1
M : Type u_2
M' : Type u_3
N : Type u_4
N' : Type u_5
P : Type u_6
P' : Type u_7
f : M → N
g : N → P
g' : P → P'
inst✝¹ : Zero P
inst✝ : Zero P'
exact : Exact f g
inj : Injective g'
h0 : g' 0 = 0
x : N
⊢ (g' ∘ g) x = 0 ↔ x ∈ Set.range f
tactic: intro x
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
N : Type u_4
N' : Type u_5
P : Type u_6
P' : Type u_7
f : M → N
g : N → P
g' : P → P'
inst✝¹ : Zero P
inst✝ : Zero P'
exact : Exact f g
inj : Injective g'
h0 : g' 0 = 0
x : N
⊢ (g' ∘ g) x = 0 ↔ x ∈ Set.range f
state_after: R : Type u_1
M : Type u_2
M' : Type u_3
N : Type u_4
N' : Type u_5
P : Type u_6
P' : Type u_7
f : M → N
g : N → P
g' : P → P'
inst✝¹ : Zero P
inst✝ : Zero P'
exact : Exact f g
inj : Injective g'
h0 : g' 0 = 0
x : N
⊢ x ∈ Set.range f → (g' ∘ g) x = 0
tactic: refine ⟨fun H => exact x |>.mp <| inj <| h0 ▸ H, ?_⟩
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
N : Type u_4
N' : Type u_5
P : Type u_6
P' : Type u_7
f : M → N
g : N → P
g' : P → P'
inst✝¹ : Zero P
inst✝ : Zero P'
exact : Exact f g
inj : Injective g'
h0 : g' 0 = 0
x : N
⊢ x ∈ Set.range f → (g' ∘ g) x = 0
state_after: R : Type u_1
M : Type u_2
M' : Type u_3
N : Type u_4
N' : Type u_5
P : Type u_6
P' : Type u_7
f : M → N
g : N → P
g' : P → P'
inst✝¹ : Zero P
inst✝ : Zero P'
exact : Exact f g
inj : Injective g'
h0 : g' 0 = 0
x : N
H : x ∈ Set.range f
⊢ (g' ∘ g) x = 0
tactic: intro H
state_before: R : Type u_1
M : Type u_2
M' : Type u_3
N : Type u_4
N' : Type u_5
P : Type u_6
P' : Type u_7
f : M → N
g : N → P
g' : P → P'
inst✝¹ : Zero P
inst✝ : Zero P'
exact : Exact f g
inj : Injective g'
h0 : g' 0 = 0
x : N
H : x ∈ Set.range f
⊢ (g' ∘ g) x = 0
state_after: no goals
tactic: rw [Function.comp_apply, exact x |>.mpr H, h0]
Theorem: GenContFract.terminatedAt_iff_partDen_none
File: Mathlib/Algebra/ContinuedFractions/Translations.lean

Proof steps:
state_before: α : Type u_1
g : GenContFract α
n : ℕ
⊢ g.TerminatedAt n ↔ g.partDens.get? n = none
state_after: no goals
tactic: rw [terminatedAt_iff_s_none, partDen_none_iff_s_none]
Theorem: Finset.sum_nat_mod
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 : α → β
s : Finset α
n : ℕ
f : α → ℕ
⊢ (Multiset.map (fun x => x % n) (Multiset.map (fun i => f i) s.val)).sum % n = (∑ i ∈ s, f i % n) % n
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
s : Finset α
n : ℕ
f : α → ℕ
⊢ (Multiset.map ((fun x => x % n) ∘ fun i => f i) s.val).sum % n = (Multiset.map (fun i => f i % n) s.val).sum % n
tactic: rw [Finset.sum, Multiset.map_map]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
s : Finset α
n : ℕ
f : α → ℕ
⊢ (Multiset.map ((fun x => x % n) ∘ fun i => f i) s.val).sum % n = (Multiset.map (fun i => f i % n) s.val).sum % n
state_after: no goals
tactic: rfl
Theorem: iInf_singleton
File: Mathlib/Order/CompleteLattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g s t : ι → α
a b✝ : α
f : β → α
b : β
⊢ ⨅ x ∈ {b}, f x = f b
state_after: no goals
tactic: simp
Theorem: finprod_mem_eq_of_bijOn
File: Mathlib/Algebra/BigOperators/Finprod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f✝ g✝ : α → M
a b : α
s✝ t✝ s : Set α
t : Set β
f : α → M
g : β → M
e : α → β
he₀ : BijOn e s t
he₁ : ∀ x ∈ s, f x = g (e x)
⊢ ∏ᶠ (i : α) (_ : i ∈ s), f i = ∏ᶠ (j : β) (_ : j ∈ t), g j
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f✝ g✝ : α → M
a b : α
s✝ t✝ s : Set α
t : Set β
f : α → M
g : β → M
e : α → β
he₀ : BijOn e s t
he₁ : ∀ x ∈ s, f x = g (e x)
⊢ ∏ᶠ (i : α) (_ : i ∈ s), f i = ∏ᶠ (j : α) (_ : j ∈ s), g (e j)
tactic: rw [← Set.BijOn.image_eq he₀, finprod_mem_image he₀.2.1]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f✝ g✝ : α → M
a b : α
s✝ t✝ s : Set α
t : Set β
f : α → M
g : β → M
e : α → β
he₀ : BijOn e s t
he₁ : ∀ x ∈ s, f x = g (e x)
⊢ ∏ᶠ (i : α) (_ : i ∈ s), f i = ∏ᶠ (j : α) (_ : j ∈ s), g (e j)
state_after: no goals
tactic: exact finprod_mem_congr rfl he₁
Theorem: SimpleGraph.Walk.darts_takeUntil_subset
File: Mathlib/Combinatorics/SimpleGraph/Walk.lean

Proof steps:
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x✝ y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
x : G.Dart
hx : x ∈ (p.takeUntil u h).darts
⊢ x ∈ p.darts
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x✝ y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
x : G.Dart
hx : x ∈ (p.takeUntil u h).darts
⊢ x ∈ (p.takeUntil u h).darts ∨ x ∈ (p.dropUntil u h).darts
tactic: rw [← take_spec p h, darts_append, List.mem_append]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x✝ y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
x : G.Dart
hx : x ∈ (p.takeUntil u h).darts
⊢ x ∈ (p.takeUntil u h).darts ∨ x ∈ (p.dropUntil u h).darts
state_after: no goals
tactic: exact Or.inl hx
Theorem: Matrix.adjugate_subsingleton
File: Mathlib/LinearAlgebra/Matrix/Adjugate.lean

Proof steps:
state_before: m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Subsingleton n
A : Matrix n n α
⊢ A.adjugate = 1
state_after: case a
m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Subsingleton n
A : Matrix n n α
i j : n
⊢ A.adjugate i j = 1 i j
tactic: ext i j
state_before: case a
m : Type u
n : Type v
α : Type w
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
inst✝¹ : CommRing α
inst✝ : Subsingleton n
A : Matrix n n α
i j : n
⊢ A.adjugate i j = 1 i j
state_after: no goals
tactic: simp [Subsingleton.elim i j, adjugate_apply, det_eq_elem_of_subsingleton _ i, one_apply]
Theorem: surjOn_Ici_of_monotone_surjective
File: Mathlib/Order/Interval/Set/SurjOn.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : PartialOrder β
f : α → β
h_mono : Monotone f
h_surj : Surjective f
a : α
⊢ SurjOn f (Ici a) (Ici (f a))
state_after: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : PartialOrder β
f : α → β
h_mono : Monotone f
h_surj : Surjective f
a : α
⊢ SurjOn f (Ioi a ∪ {a}) (Ioi (f a) ∪ {f a})
tactic: rw [← Ioi_union_left, ← Ioi_union_left]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : PartialOrder β
f : α → β
h_mono : Monotone f
h_surj : Surjective f
a : α
⊢ SurjOn f (Ioi a ∪ {a}) (Ioi (f a) ∪ {f a})
state_after: no goals
tactic: exact
    (surjOn_Ioi_of_monotone_surjective h_mono h_surj a).union_union
      (@image_singleton _ _ f a ▸ surjOn_image _ _)
Theorem: HasStrictDerivAt.cpow
File: Mathlib/Analysis/SpecialFunctions/Pow/Deriv.lean

Proof steps:
state_before: f g : ℂ → ℂ
s : Set ℂ
f' g' x c : ℂ
hf : HasStrictDerivAt f f' x
hg : HasStrictDerivAt g g' x
h0 : f x ∈ slitPlane
⊢ HasStrictDerivAt (fun x => f x ^ g x) (g x * f x ^ (g x - 1) * f' + f x ^ g x * Complex.log (f x) * g') x
state_after: no goals
tactic: simpa using (hf.cpow hg h0).hasStrictDerivAt
Theorem: CategoryTheory.Functor.rotate_essImageDistTriang
File: Mathlib/CategoryTheory/Localization/Triangulated.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝¹¹ : Category.{u_4, u_1} C
inst✝¹⁰ : Category.{u_3, u_2} D
L : C ⥤ D
inst✝⁹ : HasShift C ℤ
inst✝⁸ : Preadditive C
inst✝⁷ : HasZeroObject C
inst✝⁶ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝⁵ : Pretriangulated C
inst✝⁴ : HasShift D ℤ
inst✝³ : L.CommShift ℤ
inst✝² : Preadditive D
inst✝¹ : L.Additive
inst✝ : ∀ (n : ℤ), (shiftFunctor D n).Additive
T : Triangle D
⊢ T ∈ L.essImageDistTriang ↔ T.rotate ∈ L.essImageDistTriang
state_after: case mp
C : Type u_1
D : Type u_2
inst✝¹¹ : Category.{u_4, u_1} C
inst✝¹⁰ : Category.{u_3, u_2} D
L : C ⥤ D
inst✝⁹ : HasShift C ℤ
inst✝⁸ : Preadditive C
inst✝⁷ : HasZeroObject C
inst✝⁶ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝⁵ : Pretriangulated C
inst✝⁴ : HasShift D ℤ
inst✝³ : L.CommShift ℤ
inst✝² : Preadditive D
inst✝¹ : L.Additive
inst✝ : ∀ (n : ℤ), (shiftFunctor D n).Additive
T : Triangle D
⊢ T ∈ L.essImageDistTriang → T.rotate ∈ L.essImageDistTriang

case mpr
C : Type u_1
D : Type u_2
inst✝¹¹ : Category.{u_4, u_1} C
inst✝¹⁰ : Category.{u_3, u_2} D
L : C ⥤ D
inst✝⁹ : HasShift C ℤ
inst✝⁸ : Preadditive C
inst✝⁷ : HasZeroObject C
inst✝⁶ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝⁵ : Pretriangulated C
inst✝⁴ : HasShift D ℤ
inst✝³ : L.CommShift ℤ
inst✝² : Preadditive D
inst✝¹ : L.Additive
inst✝ : ∀ (n : ℤ), (shiftFunctor D n).Additive
T : Triangle D
⊢ T.rotate ∈ L.essImageDistTriang → T ∈ L.essImageDistTriang
tactic: constructor
Theorem: indicator_ae_eq_of_restrict_compl_ae_eq_zero
File: Mathlib/MeasureTheory/Measure/Restrict.lean

Proof steps:
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
inst✝¹ : MeasurableSpace α
μ : Measure α
s t : Set α
f : α → β
inst✝ : Zero β
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
⊢ s.indicator f =ᶠ[ae μ] f
state_after: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
inst✝¹ : MeasurableSpace α
μ : Measure α
s t : Set α
f : α → β
inst✝ : Zero β
hs : MeasurableSet s
hf : ∀ᵐ (x : α) ∂μ, x ∈ sᶜ → f x = 0 x
⊢ s.indicator f =ᶠ[ae μ] f
tactic: rw [Filter.EventuallyEq, ae_restrict_iff' hs.compl] at hf
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
inst✝¹ : MeasurableSpace α
μ : Measure α
s t : Set α
f : α → β
inst✝ : Zero β
hs : MeasurableSet s
hf : ∀ᵐ (x : α) ∂μ, x ∈ sᶜ → f x = 0 x
⊢ s.indicator f =ᶠ[ae μ] f
state_after: case h
R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
inst✝¹ : MeasurableSpace α
μ : Measure α
s t : Set α
f : α → β
inst✝ : Zero β
hs : MeasurableSet s
hf : ∀ᵐ (x : α) ∂μ, x ∈ sᶜ → f x = 0 x
x : α
hx : x ∈ sᶜ → f x = 0 x
⊢ s.indicator f x = f x
tactic: filter_upwards [hf] with x hx
state_before: case h
R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
inst✝¹ : MeasurableSpace α
μ : Measure α
s t : Set α
f : α → β
inst✝ : Zero β
hs : MeasurableSet s
hf : ∀ᵐ (x : α) ∂μ, x ∈ sᶜ → f x = 0 x
x : α
hx : x ∈ sᶜ → f x = 0 x
⊢ s.indicator f x = f x
state_after: case pos
R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
inst✝¹ : MeasurableSpace α
μ : Measure α
s t : Set α
f : α → β
inst✝ : Zero β
hs : MeasurableSet s
hf : ∀ᵐ (x : α) ∂μ, x ∈ sᶜ → f x = 0 x
x : α
hx : x ∈ sᶜ → f x = 0 x
hxs : x ∈ s
⊢ s.indicator f x = f x

case neg
R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
inst✝¹ : MeasurableSpace α
μ : Measure α
s t : Set α
f : α → β
inst✝ : Zero β
hs : MeasurableSet s
hf : ∀ᵐ (x : α) ∂μ, x ∈ sᶜ → f x = 0 x
x : α
hx : x ∈ sᶜ → f x = 0 x
hxs : x ∉ s
⊢ s.indicator f x = f x
tactic: by_cases hxs : x ∈ s
Theorem: zsmul_pos
File: Mathlib/Algebra/Order/Group/Basic.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedCommGroup α
m n : ℤ
a b : α
ha : 1 < a
hn : 0 < n
⊢ 1 < a ^ n
state_after: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedCommGroup α
m : ℤ
a b : α
ha : 1 < a
n : ℕ
hn : 0 < ↑n
⊢ 1 < a ^ ↑n
tactic: obtain ⟨n, rfl⟩ := Int.eq_ofNat_of_zero_le hn.le
state_before: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedCommGroup α
m : ℤ
a b : α
ha : 1 < a
n : ℕ
hn : 0 < ↑n
⊢ 1 < a ^ ↑n
state_after: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedCommGroup α
m : ℤ
a b : α
ha : 1 < a
n : ℕ
hn : 0 < ↑n
⊢ 1 < a ^ n
tactic: rw [zpow_natCast]
state_before: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedCommGroup α
m : ℤ
a b : α
ha : 1 < a
n : ℕ
hn : 0 < ↑n
⊢ 1 < a ^ n
state_after: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedCommGroup α
m : ℤ
a b : α
ha : 1 < a
n : ℕ
hn : 0 < ↑n
⊢ n ≠ 0
tactic: refine one_lt_pow' ha ?_
state_before: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedCommGroup α
m : ℤ
a b : α
ha : 1 < a
n : ℕ
hn : 0 < ↑n
⊢ n ≠ 0
state_after: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedCommGroup α
m : ℤ
a b : α
ha : 1 < a
hn : 0 < ↑0
⊢ False
tactic: rintro rfl
state_before: case intro
α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedCommGroup α
m : ℤ
a b : α
ha : 1 < a
hn : 0 < ↑0
⊢ False
state_after: no goals
tactic: simp at hn
Theorem: Matrix.UnitaryGroup.toGL_mul
File: Mathlib/LinearAlgebra/UnitaryGroup.lean

Proof steps:
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
α : Type v
inst✝¹ : CommRing α
inst✝ : StarRing α
A✝ : Matrix n n α
A B : ↥(unitaryGroup n α)
⊢ ↑(toGL (A * B)) = ↑(toGL A * toGL B)
state_after: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
α : Type v
inst✝¹ : CommRing α
inst✝ : StarRing α
A✝ : Matrix n n α
A B : ↥(unitaryGroup n α)
⊢ toLin' A ∘ₗ toLin' B = ↑(toGL A * toGL B)
tactic: simp only [coe_toGL, toLin'_mul]
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
α : Type v
inst✝¹ : CommRing α
inst✝ : StarRing α
A✝ : Matrix n n α
A B : ↥(unitaryGroup n α)
⊢ toLin' A ∘ₗ toLin' B = ↑(toGL A * toGL B)
state_after: no goals
tactic: rfl
Theorem: Real.sinh_nonneg_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Deriv.lean

Proof steps:
state_before: x y z : ℝ
⊢ 0 ≤ sinh x ↔ 0 ≤ x
state_after: no goals
tactic: simpa only [sinh_zero] using @sinh_le_sinh 0 x