ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: MvQPF.suppPreservation_iff_liftpPreservation
File: Mathlib/Data/QPF/Multivariate/Basic.lean

Proof steps:
state_before: n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
⊢ SuppPreservation ↔ LiftPPreservation
state_after: case mp
n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
h : SuppPreservation
⊢ LiftPPreservation

case mpr
n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
h : LiftPPreservation
⊢ SuppPreservation
tactic: constructor <;> intro h
Theorem: Real.concaveOn_rpow
File: Mathlib/Analysis/Convex/SpecificFunctions/Pow.lean

Proof steps:
state_before: p : ℝ
hp₀ : 0 ≤ p
hp₁ : p ≤ 1
⊢ ConcaveOn ℝ (Ici 0) fun x => x ^ p
state_after: case inl
hp₀ : 0 ≤ 0
hp₁ : 0 ≤ 1
⊢ ConcaveOn ℝ (Ici 0) fun x => x ^ 0

case inr
p : ℝ
hp₀✝ : 0 ≤ p
hp₁ : p ≤ 1
hp₀ : 0 < p
⊢ ConcaveOn ℝ (Ici 0) fun x => x ^ p
tactic: rcases eq_or_lt_of_le hp₀ with (rfl | hp₀)
state_before: case inr
p : ℝ
hp₀✝ : 0 ≤ p
hp₁ : p ≤ 1
hp₀ : 0 < p
⊢ ConcaveOn ℝ (Ici 0) fun x => x ^ p
state_after: case inr.inl
hp₀✝ : 0 ≤ 1
hp₁ : 1 ≤ 1
hp₀ : 0 < 1
⊢ ConcaveOn ℝ (Ici 0) fun x => x ^ 1

case inr.inr
p : ℝ
hp₀✝ : 0 ≤ p
hp₁✝ : p ≤ 1
hp₀ : 0 < p
hp₁ : p < 1
⊢ ConcaveOn ℝ (Ici 0) fun x => x ^ p
tactic: rcases eq_or_lt_of_le hp₁ with (rfl | hp₁)
state_before: case inr.inr
p : ℝ
hp₀✝ : 0 ≤ p
hp₁✝ : p ≤ 1
hp₀ : 0 < p
hp₁ : p < 1
⊢ ConcaveOn ℝ (Ici 0) fun x => x ^ p
state_after: no goals
tactic: exact (strictConcaveOn_rpow hp₀ hp₁).concaveOn
Theorem: QuadraticMap.polar_comp
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

Proof steps:
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
A : Type u_7
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
F : Type u_8
inst✝² : CommRing S
inst✝¹ : FunLike F N S
inst✝ : AddMonoidHomClass F N S
f : M → N
g : F
x y : M
⊢ polar (⇑g ∘ f) x y = g (polar f x y)
state_after: no goals
tactic: simp only [polar, Pi.smul_apply, Function.comp_apply, map_sub]
Theorem: TypeVec.dropFun_toSubtype
File: Mathlib/Data/TypeVec.lean

Proof steps:
state_before: n : ℕ
α : TypeVec.{u_1} (n + 1)
p : α ⟹ repeat (n + 1) Prop
⊢ dropFun (toSubtype p) = toSubtype fun i => p i.fs
state_after: case a.h
n : ℕ
α : TypeVec.{u_1} (n + 1)
p : α ⟹ repeat (n + 1) Prop
i : Fin2 n
x✝ : drop (fun i => { x // ofRepeat (p i x) }) i
⊢ dropFun (toSubtype p) i x✝ = toSubtype (fun i => p i.fs) i x✝
tactic: ext i
state_before: case a.h
n : ℕ
α : TypeVec.{u_1} (n + 1)
p : α ⟹ repeat (n + 1) Prop
i : Fin2 n
x✝ : drop (fun i => { x // ofRepeat (p i x) }) i
⊢ dropFun (toSubtype p) i x✝ = toSubtype (fun i => p i.fs) i x✝
state_after: no goals
tactic: induction i <;> simp [dropFun, *] <;> rfl
Theorem: CochainComplex.mappingCone.map_inr
File: Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.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
inst✝⁴ : Preadditive C
inst✝³ : Preadditive D
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝² : HasHomotopyCofiber φ
H : C ⥤ D
inst✝¹ : H.Additive
inst✝ : HasHomotopyCofiber ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)
⊢ (H.mapHomologicalComplex (ComplexShape.up ℤ)).map (inr φ) ≫ (mapHomologicalComplexIso φ H).hom =
    inr ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)
state_after: case h
C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_4, u_1} C
inst✝⁵ : Category.{u_3, u_2} D
inst✝⁴ : Preadditive C
inst✝³ : Preadditive D
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝² : HasHomotopyCofiber φ
H : C ⥤ D
inst✝¹ : H.Additive
inst✝ : HasHomotopyCofiber ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)
n : ℤ
⊢ ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map (inr φ) ≫ (mapHomologicalComplexIso φ H).hom).f n =
    (inr ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)).f n
tactic: ext n
state_before: case h
C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_4, u_1} C
inst✝⁵ : Category.{u_3, u_2} D
inst✝⁴ : Preadditive C
inst✝³ : Preadditive D
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝² : HasHomotopyCofiber φ
H : C ⥤ D
inst✝¹ : H.Additive
inst✝ : HasHomotopyCofiber ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)
n : ℤ
⊢ ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map (inr φ) ≫ (mapHomologicalComplexIso φ H).hom).f n =
    (inr ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)).f n
state_after: case h
C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_4, u_1} C
inst✝⁵ : Category.{u_3, u_2} D
inst✝⁴ : Preadditive C
inst✝³ : Preadditive D
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝² : HasHomotopyCofiber φ
H : C ⥤ D
inst✝¹ : H.Additive
inst✝ : HasHomotopyCofiber ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)
n : ℤ
⊢ H.map ((inr φ).f n) ≫ (mapHomologicalComplexXIso φ H n).hom =
    (inr ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)).f n
tactic: dsimp [mapHomologicalComplexIso]
state_before: case h
C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_4, u_1} C
inst✝⁵ : Category.{u_3, u_2} D
inst✝⁴ : Preadditive C
inst✝³ : Preadditive D
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝² : HasHomotopyCofiber φ
H : C ⥤ D
inst✝¹ : H.Additive
inst✝ : HasHomotopyCofiber ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)
n : ℤ
⊢ H.map ((inr φ).f n) ≫ (mapHomologicalComplexXIso φ H n).hom =
    (inr ((H.mapHomologicalComplex (ComplexShape.up ℤ)).map φ)).f n
state_after: no goals
tactic: simp only [mapHomologicalComplexXIso_eq φ H n (n + 1) rfl, mappingCone.ext_to_iff _ _ _ rfl,
    Functor.mapHomologicalComplex_obj_X, mapHomologicalComplexXIso'_hom, comp_add,
    add_comp, assoc, inl_v_fst_v, comp_id, inr_f_fst_v, comp_zero, add_zero, inl_v_snd_v,
    inr_f_snd_v, zero_add, ← H.map_comp, H.map_zero, H.map_id, and_self]
Theorem: iterateFrobeniusEquiv_symm
File: Mathlib/FieldTheory/Perfect.lean

Proof steps:
state_before: R : Type u_1
p m n : ℕ
inst✝² : CommSemiring R
inst✝¹ : ExpChar R p
inst✝ : PerfectRing R p
⊢ (iterateFrobeniusEquiv R p n).symm = (frobeniusEquiv R p).symm ^ n
state_after: R : Type u_1
p m n : ℕ
inst✝² : CommSemiring R
inst✝¹ : ExpChar R p
inst✝ : PerfectRing R p
⊢ (frobeniusEquiv R p ^ n).symm = (frobeniusEquiv R p).symm ^ n
tactic: rw [iterateFrobeniusEquiv_eq_pow]
state_before: R : Type u_1
p m n : ℕ
inst✝² : CommSemiring R
inst✝¹ : ExpChar R p
inst✝ : PerfectRing R p
⊢ (frobeniusEquiv R p ^ n).symm = (frobeniusEquiv R p).symm ^ n
state_after: no goals
tactic: exact (inv_pow _ _).symm
Theorem: Mathlib.Tactic.Abel.zero_term
File: Mathlib/Tactic/Abel.lean

Proof steps:
state_before: α : Type u_1
inst✝ : AddCommMonoid α
x a : α
⊢ term 0 x a = a
state_after: no goals
tactic: simp [term, zero_nsmul, one_nsmul]
Theorem: CategoryTheory.Presieve.isSheafFor_subsieve_aux
File: Mathlib/CategoryTheory/Sites/IsSheafFor.lean

Proof steps:
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P✝ Q U : Cᵒᵖ ⥤ Type w
X Y : C
S✝ : Sieve X
R✝ : Presieve X
P : Cᵒᵖ ⥤ Type w
S : Sieve X
R : Presieve X
h : S.arrows ≤ R
hS : IsSheafFor P S.arrows
trans : ∀ ⦃Y : C⦄ ⦃f : Y ⟶ X⦄, R f → IsSeparatedFor P (Sieve.pullback f S).arrows
⊢ IsSheafFor P R
state_after: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P✝ Q U : Cᵒᵖ ⥤ Type w
X Y : C
S✝ : Sieve X
R✝ : Presieve X
P : Cᵒᵖ ⥤ Type w
S : Sieve X
R : Presieve X
h : S.arrows ≤ R
hS : IsSheafFor P S.arrows
trans : ∀ ⦃Y : C⦄ ⦃f : Y ⟶ X⦄, R f → IsSeparatedFor P (Sieve.pullback f S).arrows
⊢ IsSeparatedFor P R ∧ ∀ (x : FamilyOfElements P R), x.Compatible → ∃ t, x.IsAmalgamation t
tactic: rw [← isSeparatedFor_and_exists_isAmalgamation_iff_isSheafFor]
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P✝ Q U : Cᵒᵖ ⥤ Type w
X Y : C
S✝ : Sieve X
R✝ : Presieve X
P : Cᵒᵖ ⥤ Type w
S : Sieve X
R : Presieve X
h : S.arrows ≤ R
hS : IsSheafFor P S.arrows
trans : ∀ ⦃Y : C⦄ ⦃f : Y ⟶ X⦄, R f → IsSeparatedFor P (Sieve.pullback f S).arrows
⊢ IsSeparatedFor P R ∧ ∀ (x : FamilyOfElements P R), x.Compatible → ∃ t, x.IsAmalgamation t
state_after: case left
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P✝ Q U : Cᵒᵖ ⥤ Type w
X Y : C
S✝ : Sieve X
R✝ : Presieve X
P : Cᵒᵖ ⥤ Type w
S : Sieve X
R : Presieve X
h : S.arrows ≤ R
hS : IsSheafFor P S.arrows
trans : ∀ ⦃Y : C⦄ ⦃f : Y ⟶ X⦄, R f → IsSeparatedFor P (Sieve.pullback f S).arrows
⊢ IsSeparatedFor P R

case right
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P✝ Q U : Cᵒᵖ ⥤ Type w
X Y : C
S✝ : Sieve X
R✝ : Presieve X
P : Cᵒᵖ ⥤ Type w
S : Sieve X
R : Presieve X
h : S.arrows ≤ R
hS : IsSheafFor P S.arrows
trans : ∀ ⦃Y : C⦄ ⦃f : Y ⟶ X⦄, R f → IsSeparatedFor P (Sieve.pullback f S).arrows
⊢ ∀ (x : FamilyOfElements P R), x.Compatible → ∃ t, x.IsAmalgamation t
tactic: constructor
Theorem: Real.arcsin_eq_arccos
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

Proof steps:
state_before: x✝ y x : ℝ
h : 0 ≤ x
⊢ arcsin x = arccos √(1 - x ^ 2)
state_after: x✝ y x : ℝ
h : 0 ≤ x
⊢ arccos (cos (arcsin x)) = arcsin x
tactic: rw [eq_comm, ← cos_arcsin]
state_before: x✝ y x : ℝ
h : 0 ≤ x
⊢ arccos (cos (arcsin x)) = arcsin x
state_after: no goals
tactic: exact
    arccos_cos (arcsin_nonneg.2 h)
      ((arcsin_le_pi_div_two _).trans (div_le_self pi_pos.le one_le_two))
Theorem: SimpleGraph.IsSRGWith.top
File: Mathlib/Combinatorics/SimpleGraph/StronglyRegular.lean

Proof steps:
state_before: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v w : V
h : ⊤.Adj v w
⊢ Fintype.card ↑(⊤.commonNeighbors v w) = Fintype.card V - 2
state_after: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v w : V
h : ⊤.Adj v w
⊢ v ≠ w
tactic: rw [card_commonNeighbors_top]
state_before: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v w : V
h : ⊤.Adj v w
⊢ v ≠ w
state_after: no goals
tactic: exact h
Theorem: Fin.append_right_eq_snoc
File: Mathlib/Data/Fin/Tuple/Basic.lean

Proof steps:
state_before: m n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x✝ : α✝ (last n✝)
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.castSucc
i : Fin n✝
y : α✝ i.castSucc
z : α✝ (last n✝)
α : Type u_1
n : ℕ
x : Fin n → α
x₀ : Fin 1 → α
⊢ append x x₀ = snoc x (x₀ 0)
state_after: case h
m n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x✝ : α✝ (last n✝)
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.castSucc
i✝ : Fin n✝
y : α✝ i✝.castSucc
z : α✝ (last n✝)
α : Type u_1
n : ℕ
x : Fin n → α
x₀ : Fin 1 → α
i : Fin (n + 1)
⊢ append x x₀ i = snoc x (x₀ 0) i
tactic: ext i
state_before: case h
m n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x✝ : α✝ (last n✝)
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.castSucc
i✝ : Fin n✝
y : α✝ i✝.castSucc
z : α✝ (last n✝)
α : Type u_1
n : ℕ
x : Fin n → α
x₀ : Fin 1 → α
i : Fin (n + 1)
⊢ append x x₀ i = snoc x (x₀ 0) i
state_after: case h.refine_1
m n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x✝ : α✝ (last n✝)
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.castSucc
i : Fin n✝
y : α✝ i.castSucc
z : α✝ (last n✝)
α : Type u_1
n : ℕ
x : Fin n → α
x₀ : Fin 1 → α
⊢ ∀ (i : Fin n), append x x₀ (castAdd 1 i) = snoc x (x₀ 0) (castAdd 1 i)

case h.refine_2
m n✝ : ℕ
α✝ : Fin (n✝ + 1) → Type u
x✝ : α✝ (last n✝)
q : (i : Fin (n✝ + 1)) → α✝ i
p : (i : Fin n✝) → α✝ i.castSucc
i : Fin n✝
y : α✝ i.castSucc
z : α✝ (last n✝)
α : Type u_1
n : ℕ
x : Fin n → α
x₀ : Fin 1 → α
⊢ ∀ (i : Fin 1), append x x₀ (natAdd n i) = snoc x (x₀ 0) (natAdd n i)
tactic: refine Fin.addCases ?_ ?_ i <;> clear i
Theorem: Asymptotics.isLittleO_neg_right
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
inst✝¹³ : Norm E
inst✝¹² : Norm F
inst✝¹¹ : Norm G
inst✝¹⁰ : SeminormedAddCommGroup E'
inst✝⁹ : SeminormedAddCommGroup F'
inst✝⁸ : SeminormedAddCommGroup G'
inst✝⁷ : NormedAddCommGroup E''
inst✝⁶ : NormedAddCommGroup F''
inst✝⁵ : NormedAddCommGroup G''
inst✝⁴ : SeminormedRing R
inst✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
⊢ (f =o[l] fun x => -g' x) ↔ f =o[l] g'
state_after: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
inst✝¹³ : Norm E
inst✝¹² : Norm F
inst✝¹¹ : Norm G
inst✝¹⁰ : SeminormedAddCommGroup E'
inst✝⁹ : SeminormedAddCommGroup F'
inst✝⁸ : SeminormedAddCommGroup G'
inst✝⁷ : NormedAddCommGroup E''
inst✝⁶ : NormedAddCommGroup F''
inst✝⁵ : NormedAddCommGroup G''
inst✝⁴ : SeminormedRing R
inst✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
⊢ (∀ ⦃c : ℝ⦄, 0 < c → IsBigOWith c l f fun x => -g' x) ↔ ∀ ⦃c : ℝ⦄, 0 < c → IsBigOWith c l f g'
tactic: simp only [IsLittleO_def]
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
inst✝¹³ : Norm E
inst✝¹² : Norm F
inst✝¹¹ : Norm G
inst✝¹⁰ : SeminormedAddCommGroup E'
inst✝⁹ : SeminormedAddCommGroup F'
inst✝⁸ : SeminormedAddCommGroup G'
inst✝⁷ : NormedAddCommGroup E''
inst✝⁶ : NormedAddCommGroup F''
inst✝⁵ : NormedAddCommGroup G''
inst✝⁴ : SeminormedRing R
inst✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
⊢ (∀ ⦃c : ℝ⦄, 0 < c → IsBigOWith c l f fun x => -g' x) ↔ ∀ ⦃c : ℝ⦄, 0 < c → IsBigOWith c l f g'
state_after: no goals
tactic: exact forall₂_congr fun _ _ => isBigOWith_neg_right
Theorem: Subgroup.val_centerUnitsEquivUnitsCenter_symm_apply_coe
File: Mathlib/GroupTheory/Subgroup/Center.lean

Proof steps:
state_before: G : Type u_1
inst✝¹ : Group G
G₀ : Type u_2
inst✝ : GroupWithZero G₀
u : ↥(center G₀ˣ)
r : G₀
⊢ r * ↑↑u = ↑↑u * r
state_after: case inl
G : Type u_1
inst✝¹ : Group G
G₀ : Type u_2
inst✝ : GroupWithZero G₀
u : ↥(center G₀ˣ)
⊢ 0 * ↑↑u = ↑↑u * 0

case inr
G : Type u_1
inst✝¹ : Group G
G₀ : Type u_2
inst✝ : GroupWithZero G₀
u : ↥(center G₀ˣ)
r : G₀
hr : r ≠ 0
⊢ r * ↑↑u = ↑↑u * r
tactic: rcases eq_or_ne r 0 with (rfl | hr)
state_before: case inr
G : Type u_1
inst✝¹ : Group G
G₀ : Type u_2
inst✝ : GroupWithZero G₀
u : ↥(center G₀ˣ)
r : G₀
hr : r ≠ 0
⊢ r * ↑↑u = ↑↑u * r
state_after: no goals
tactic: exact congrArg Units.val <| (u.2.comm <| Units.mk0 r hr).symm
state_before: G : Type u_1
inst✝¹ : Group G
G₀ : Type u_2
inst✝ : GroupWithZero G₀
x✝ : ↥(center G₀ˣ)
⊢ (fun u => (unitsCenterToCenterUnits G₀) u)
      ({ toFun := fun u => ⟨↑↑u, ⋯⟩, map_one' := ?m.1767, map_mul' := ⋯ }.toHomUnits x✝) =
    x✝
state_after: case a.a
G : Type u_1
inst✝¹ : Group G
G₀ : Type u_2
inst✝ : GroupWithZero G₀
x✝ : ↥(center G₀ˣ)
⊢ ↑↑((fun u => (unitsCenterToCenterUnits G₀) u)
          ({ toFun := fun u => ⟨↑↑u, ⋯⟩, map_one' := ?m.1767, map_mul' := ⋯ }.toHomUnits x✝)) =
    ↑↑x✝
tactic: ext
state_before: case a.a
G : Type u_1
inst✝¹ : Group G
G₀ : Type u_2
inst✝ : GroupWithZero G₀
x✝ : ↥(center G₀ˣ)
⊢ ↑↑((fun u => (unitsCenterToCenterUnits G₀) u)
          ({ toFun := fun u => ⟨↑↑u, ⋯⟩, map_one' := ?m.1767, map_mul' := ⋯ }.toHomUnits x✝)) =
    ↑↑x✝
state_after: no goals
tactic: rfl
state_before: G : Type u_1
inst✝¹ : Group G
G₀ : Type u_2
inst✝ : GroupWithZero G₀
x✝ : (↥(Submonoid.center G₀))ˣ
⊢ { toFun := fun u => ⟨↑↑u, ⋯⟩, map_one' := ?m.1767, map_mul' := ⋯ }.toHomUnits
      ((fun u => (unitsCenterToCenterUnits G₀) u) x✝) =
    x✝
state_after: case a.a
G : Type u_1
inst✝¹ : Group G
G₀ : Type u_2
inst✝ : GroupWithZero G₀
x✝ : (↥(Submonoid.center G₀))ˣ
⊢ ↑↑({ toFun := fun u => ⟨↑↑u, ⋯⟩, map_one' := ?m.1767, map_mul' := ⋯ }.toHomUnits
          ((fun u => (unitsCenterToCenterUnits G₀) u) x✝)) =
    ↑↑x✝
tactic: ext
state_before: case a.a
G : Type u_1
inst✝¹ : Group G
G₀ : Type u_2
inst✝ : GroupWithZero G₀
x✝ : (↥(Submonoid.center G₀))ˣ
⊢ ↑↑({ toFun := fun u => ⟨↑↑u, ⋯⟩, map_one' := ?m.1767, map_mul' := ⋯ }.toHomUnits
          ((fun u => (unitsCenterToCenterUnits G₀) u) x✝)) =
    ↑↑x✝
state_after: no goals
tactic: rfl
Theorem: Nat.Coprime.coprime_dvd_left
File: .lake/packages/batteries/Batteries/Data/Nat/Gcd.lean

Proof steps:
state_before: m k n : Nat
H1 : m ∣ k
H2 : k.Coprime n
⊢ m.Coprime n
state_after: case H
m k n : Nat
H1 : m ∣ k
H2 : k.Coprime n
⊢ m.gcd n ∣ 1
tactic: apply eq_one_of_dvd_one
state_before: case H
m k n : Nat
H1 : m ∣ k
H2 : k.Coprime n
⊢ m.gcd n ∣ 1
state_after: case H
m k n : Nat
H1 : m ∣ k
H2 : k.gcd n = 1
⊢ m.gcd n ∣ 1
tactic: rw [Coprime] at H2
state_before: case H
m k n : Nat
H1 : m ∣ k
H2 : k.gcd n = 1
⊢ m.gcd n ∣ 1
state_after: case H
m k n : Nat
H1 : m ∣ k
H2 : k.gcd n = 1
this : m.gcd n ∣ k.gcd n
⊢ m.gcd n ∣ 1
tactic: have := Nat.gcd_dvd_gcd_of_dvd_left n H1
state_before: case H
m k n : Nat
H1 : m ∣ k
H2 : k.gcd n = 1
this : m.gcd n ∣ k.gcd n
⊢ m.gcd n ∣ 1
state_after: no goals
tactic: rwa [← H2]
Theorem: Asymptotics.IsLittleO.tendsto_div_nhds_zero
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
inst✝¹³ : Norm E
inst✝¹² : Norm F
inst✝¹¹ : Norm G
inst✝¹⁰ : SeminormedAddCommGroup E'
inst✝⁹ : SeminormedAddCommGroup F'
inst✝⁸ : SeminormedAddCommGroup G'
inst✝⁷ : NormedAddCommGroup E''
inst✝⁶ : NormedAddCommGroup F''
inst✝⁵ : NormedAddCommGroup G''
inst✝⁴ : SeminormedRing R
inst✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c c' c₁ c₂ : ℝ
f✝ : α → E
g✝ : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f g : α → 𝕜
h : f =o[l] g
⊢ (fun x => f x / g x) =o[l] fun _x => 1
state_after: no goals
tactic: calc
      (fun x => f x / g x) =o[l] fun x => g x / g x := by
        simpa only [div_eq_mul_inv] using h.mul_isBigO (isBigO_refl _ _)
      _ =O[l] fun _x => (1 : 𝕜) := isBigO_of_le _ fun x => by simp [div_self_le_one]
Theorem: Multiset.dedup_bind_dedup
File: Mathlib/Data/Multiset/Bind.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
⊢ (s.dedup.bind f).dedup = (s.bind f).dedup
state_after: case a
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
x : β
⊢ count x (s.dedup.bind f).dedup = count x (s.bind f).dedup
tactic: ext x
state_before: case a
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
x : β
⊢ count x (s.dedup.bind f).dedup = count x (s.bind f).dedup
state_after: case a
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
x : β
⊢ (if x ∈ s.dedup.bind f then 1 else 0) = if x ∈ s.bind f then 1 else 0
tactic: simp_rw [count_dedup]
state_before: case a
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
x : β
⊢ (if x ∈ s.dedup.bind f then 1 else 0) = if x ∈ s.bind f then 1 else 0
state_after: case a
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
x : β
⊢ x ∈ s.dedup.bind f ↔ x ∈ s.bind f
tactic: refine if_congr ?_ rfl rfl
state_before: case a
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
s✝ t : Multiset α
f✝ g : α → Multiset β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Multiset α
f : α → Multiset β
x : β
⊢ x ∈ s.dedup.bind f ↔ x ∈ s.bind f
state_after: no goals
tactic: simp
Theorem: Associated.trans
File: Mathlib/Algebra/Associated/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x : α
u v : αˣ
⊢ x * ↑(u * v) = x * ↑u * ↑v
state_after: no goals
tactic: rw [Units.val_mul, mul_assoc]
Theorem: LinearMap.IsSymmetric.isSelfAdjoint
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : InnerProductSpace 𝕜 E
inst✝³ : InnerProductSpace 𝕜 F
inst✝² : InnerProductSpace 𝕜 G
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
A : E →L[𝕜] E
hA : (↑A).IsSymmetric
⊢ IsSelfAdjoint A
state_after: no goals
tactic: rwa [← ContinuousLinearMap.isSelfAdjoint_iff_isSymmetric] at hA
Theorem: MeasureTheory.ExistsSeqTendstoAe.seqTendstoAeSeq_spec
File: Mathlib/MeasureTheory/Function/ConvergenceInMeasure.lean

Proof steps:
state_before: α : Type u_1
ι : Type u_2
E : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
hfg : TendstoInMeasure μ f atTop g
n k : ℕ
hn : seqTendstoAeSeq hfg n ≤ k
⊢ μ {x | 2⁻¹ ^ n ≤ dist (f k x) (g x)} ≤ 2⁻¹ ^ n
state_after: case zero
α : Type u_1
ι : Type u_2
E : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
hfg : TendstoInMeasure μ f atTop g
k : ℕ
hn : seqTendstoAeSeq hfg 0 ≤ k
⊢ μ {x | 2⁻¹ ^ 0 ≤ dist (f k x) (g x)} ≤ 2⁻¹ ^ 0

case succ
α : Type u_1
ι : Type u_2
E : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
hfg : TendstoInMeasure μ f atTop g
k n✝ : ℕ
hn : seqTendstoAeSeq hfg (n✝ + 1) ≤ k
⊢ μ {x | 2⁻¹ ^ (n✝ + 1) ≤ dist (f k x) (g x)} ≤ 2⁻¹ ^ (n✝ + 1)
tactic: cases n
Theorem: Commute.add_pow_add_eq_zero_of_pow_eq_zero
File: Mathlib/RingTheory/Nilpotent/Basic.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
x y : R
inst✝ : Semiring R
h_comm : Commute x y
m n : ℕ
hx : x ^ m = 0
hy : y ^ n = 0
⊢ m + n ≤ m + n - 1 + 1
state_after: no goals
tactic: rw [← Nat.sub_le_iff_le_add]