ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: archimedean_iff_nat_lt
File: Mathlib/Algebra/Order/Archimedean.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
inst✝ : LinearOrderedField α
H : ∀ (x : α), ∃ n, x < ↑n
x y : α
y0 : 0 < y
n : ℕ
h : x / y < ↑n
⊢ x < n • y
state_after: no goals
tactic: rwa [div_lt_iff y0, ← nsmul_eq_mul] at h
Theorem: FiberBundleCore.localTrivAt_apply
File: Mathlib/Topology/FiberBundle/Basic.lean

Proof steps:
state_before: ι : Type u_1
B : Type u_2
F : Type u_3
X : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace B
inst✝ : TopologicalSpace F
Z : FiberBundleCore ι B F
i : ι
b : B
a : F
p : Z.TotalSpace
⊢ ↑(Z.localTrivAt p.proj) p = (p.proj, p.snd)
state_after: case a
ι : Type u_1
B : Type u_2
F : Type u_3
X : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace B
inst✝ : TopologicalSpace F
Z : FiberBundleCore ι B F
i : ι
b : B
a : F
p : Z.TotalSpace
⊢ p.proj ∈ Z.baseSet (Z.indexAt p.proj)
tactic: rw [localTrivAt, localTriv_apply, coordChange_self]
state_before: case a
ι : Type u_1
B : Type u_2
F : Type u_3
X : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace B
inst✝ : TopologicalSpace F
Z : FiberBundleCore ι B F
i : ι
b : B
a : F
p : Z.TotalSpace
⊢ p.proj ∈ Z.baseSet (Z.indexAt p.proj)
state_after: no goals
tactic: exact Z.mem_baseSet_at p.1
Theorem: Polynomial.degree_C_mul_X
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

Proof steps:
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
ha : a ≠ 0
⊢ (C a * X).degree = 1
state_after: no goals
tactic: simpa only [pow_one] using degree_C_mul_X_pow 1 ha
Theorem: finprod_cond_eq_right
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 : Set α
⊢ ∏ᶠ (i : α) (_ : a = i), f i = f a
state_after: no goals
tactic: simp [@eq_comm _ a]
Theorem: List.exists_erase_eq
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
l : List α
h : a ∈ l
⊢ ∃ l₁ l₂, ¬a ∈ l₁ ∧ l = l₁ ++ a :: l₂ ∧ l.erase a = l₁ ++ l₂
state_after: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
l : List α
h : a ∈ l
w✝ : α
l₁ l₂ : List α
h₁ : ∀ (b : α), b ∈ l₁ → ¬(a == b) = true
e : (a == w✝) = true
h₂ : l = l₁ ++ w✝ :: l₂
h₃ : eraseP (BEq.beq a) l = l₁ ++ l₂
⊢ ∃ l₁ l₂, ¬a ∈ l₁ ∧ l = l₁ ++ a :: l₂ ∧ l.erase a = l₁ ++ l₂
tactic: let ⟨_, l₁, l₂, h₁, e, h₂, h₃⟩ := exists_of_eraseP h (beq_self_eq_true _)
state_before: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
l : List α
h : a ∈ l
w✝ : α
l₁ l₂ : List α
h₁ : ∀ (b : α), b ∈ l₁ → ¬(a == b) = true
e : (a == w✝) = true
h₂ : l = l₁ ++ w✝ :: l₂
h₃ : eraseP (BEq.beq a) l = l₁ ++ l₂
⊢ ∃ l₁ l₂, ¬a ∈ l₁ ∧ l = l₁ ++ a :: l₂ ∧ l.erase a = l₁ ++ l₂
state_after: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
l : List α
h : a ∈ l
w✝ : α
l₁ l₂ : List α
h₁ : ∀ (b : α), b ∈ l₁ → ¬(a == b) = true
e : (a == w✝) = true
h₂ : l = l₁ ++ w✝ :: l₂
h₃ : eraseP (BEq.beq a) l = l₁ ++ l₂
⊢ ∃ l₁ l₂, ¬a ∈ l₁ ∧ l = l₁ ++ a :: l₂ ∧ eraseP (fun x => a == x) l = l₁ ++ l₂
tactic: rw [erase_eq_eraseP]
state_before: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
l : List α
h : a ∈ l
w✝ : α
l₁ l₂ : List α
h₁ : ∀ (b : α), b ∈ l₁ → ¬(a == b) = true
e : (a == w✝) = true
h₂ : l = l₁ ++ w✝ :: l₂
h₃ : eraseP (BEq.beq a) l = l₁ ++ l₂
⊢ ∃ l₁ l₂, ¬a ∈ l₁ ∧ l = l₁ ++ a :: l₂ ∧ eraseP (fun x => a == x) l = l₁ ++ l₂
state_after: no goals
tactic: exact ⟨l₁, l₂, fun h => h₁ _ h (beq_self_eq_true _), eq_of_beq e ▸ h₂, h₃⟩
Theorem: Finset.le_sum_condensed'
File: Mathlib/Analysis/PSeries.lean

Proof steps:
state_before: M : Type u_1
inst✝ : OrderedAddCommMonoid M
f : ℕ → M
u : ℕ → ℕ
hf : ∀ ⦃m n : ℕ⦄, 0 < m → m ≤ n → f n ≤ f m
n : ℕ
⊢ ∑ k ∈ Ico 1 (2 ^ n), f k ≤ ∑ k ∈ range n, 2 ^ k • f (2 ^ k)
state_after: case h.e'_4.a
M : Type u_1
inst✝ : OrderedAddCommMonoid M
f : ℕ → M
u : ℕ → ℕ
hf : ∀ ⦃m n : ℕ⦄, 0 < m → m ≤ n → f n ≤ f m
n x✝ : ℕ
a✝ : x✝ ∈ range n
⊢ 2 ^ x✝ • f (2 ^ x✝) = (2 ^ (x✝ + 1) - 2 ^ x✝) • f (2 ^ x✝)
tactic: convert le_sum_schlomilch' hf (fun n => pow_pos zero_lt_two n)
    (fun m n hm => pow_le_pow_right one_le_two hm) n using 2
state_before: case h.e'_4.a
M : Type u_1
inst✝ : OrderedAddCommMonoid M
f : ℕ → M
u : ℕ → ℕ
hf : ∀ ⦃m n : ℕ⦄, 0 < m → m ≤ n → f n ≤ f m
n x✝ : ℕ
a✝ : x✝ ∈ range n
⊢ 2 ^ x✝ • f (2 ^ x✝) = (2 ^ (x✝ + 1) - 2 ^ x✝) • f (2 ^ x✝)
state_after: no goals
tactic: simp [pow_succ, mul_two, two_mul]
Theorem: comap_norm_atTop
File: Mathlib/Analysis/Normed/Group/Bounded.lean

Proof steps:
state_before: α : Type u_1
ι : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
⊢ comap norm atTop = cobounded E
state_after: no goals
tactic: simpa only [dist_one_right] using comap_dist_right_atTop (1 : E)
Theorem: Set.subset_image_diff
File: Mathlib/Data/Set/Image.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
s✝ t✝ : Set α
f : α → β
s t : Set α
⊢ f '' s \ f '' t ⊆ f '' (s \ t)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
s✝ t✝ : Set α
f : α → β
s t : Set α
⊢ f '' s ⊆ f '' (t ∪ s)
tactic: rw [diff_subset_iff, ← image_union, union_diff_self]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
s✝ t✝ : Set α
f : α → β
s t : Set α
⊢ f '' s ⊆ f '' (t ∪ s)
state_after: no goals
tactic: exact image_subset f subset_union_right
Theorem: EuclideanGeometry.angle_const_sub
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Affine.lean

Proof steps:
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p p₀ p₁ p₂ : P
v v₁ v₂ v₃ : V
⊢ ∠ (v - v₁) (v - v₂) (v - v₃) = ∠ v₁ v₂ v₃
state_after: no goals
tactic: simpa only [vsub_eq_sub] using angle_const_vsub v v₁ v₂ v₃
Theorem: summable_iff_cauchySeq_finset
File: Mathlib/Topology/Algebra/InfiniteSum/Group.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommGroup α
inst✝¹ : UniformSpace α
inst✝ : CompleteSpace α
f : β → α
⊢ Multipliable f ↔ CauchySeq fun s => ∏ b ∈ s, f b
state_after: no goals
tactic: classical exact cauchy_map_iff_exists_tendsto.symm
Theorem: quadraticChar_zero
File: Mathlib/NumberTheory/LegendreSymbol/QuadraticChar/Basic.lean

Proof steps:
state_before: F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
⊢ (quadraticChar F) 0 = 0
state_after: no goals
tactic: simp only [quadraticChar_apply, quadraticCharFun_zero]
Theorem: List.rotate'_length
File: Mathlib/Data/List/Rotate.lean

Proof steps:
state_before: α : Type u
l : List α
⊢ l.rotate' l.length = l
state_after: α : Type u
l : List α
⊢ drop l.length l ++ take l.length l = l
tactic: rw [rotate'_eq_drop_append_take le_rfl]
state_before: α : Type u
l : List α
⊢ drop l.length l ++ take l.length l = l
state_after: no goals
tactic: simp
Theorem: CategoryTheory.RelCat.Hom.rel_comp_apply₂
File: Mathlib/CategoryTheory/Category/RelCat.lean

Proof steps:
state_before: X Y Z : RelCat
f : X ⟶ Y
g : Y ⟶ Z
x : X
z : Z
⊢ (f ≫ g) x z ↔ ∃ y, f x y ∧ g y z
state_after: no goals
tactic: rfl
Theorem: Equiv.Set.union_symm_apply_right
File: Mathlib/Logic/Equiv/Set.lean

Proof steps:
state_before: α✝ : Sort u
β : Sort v
γ : Sort w
α : Type ?u.16393
s t : Set α
inst✝ : DecidablePred fun x => x ∈ s
H : s ∩ t ⊆ ∅
a : ↑t
⊢ ↑a ∈ s ∪ t
state_after: no goals
tactic: simp
Theorem: DirectSum.gMulLHom_apply_apply
File: Mathlib/Algebra/DirectSum/Algebra.lean

Proof steps:
state_before: ι : Type uι
R : Type uR
A : ι → Type uA
B : Type uB
inst✝⁸ : DecidableEq ι
inst✝⁷ : CommSemiring R
inst✝⁶ : (i : ι) → AddCommMonoid (A i)
inst✝⁵ : (i : ι) → Module R (A i)
inst✝⁴ : AddMonoid ι
inst✝³ : GSemiring A
inst✝² : Semiring B
inst✝¹ : GAlgebra R A
inst✝ : Algebra R B
i j : ι
a : A i
r : R
x : A j
⊢ { toFun := fun b => GradedMonoid.GMul.mul a b, map_add' := ⋯ }.toFun (r • x) =
    (RingHom.id R) r • { toFun := fun b => GradedMonoid.GMul.mul a b, map_add' := ⋯ }.toFun x
state_after: no goals
tactic: injection (smul_comm r (GradedMonoid.mk _ a) (GradedMonoid.mk _ x)).symm
state_before: ι : Type uι
R : Type uR
A : ι → Type uA
B : Type uB
inst✝⁸ : DecidableEq ι
inst✝⁷ : CommSemiring R
inst✝⁶ : (i : ι) → AddCommMonoid (A i)
inst✝⁵ : (i : ι) → Module R (A i)
inst✝⁴ : AddMonoid ι
inst✝³ : GSemiring A
inst✝² : Semiring B
inst✝¹ : GAlgebra R A
inst✝ : Algebra R B
i j : ι
r : R
x : A i
y : A j
⊢ ({ toFun := fun a => { toFun := fun b => GradedMonoid.GMul.mul a b, map_add' := ⋯, map_smul' := ⋯ },
            map_add' := ⋯ }.toFun
        (r • x))
      y =
    ((RingHom.id R) r •
        { toFun := fun a => { toFun := fun b => GradedMonoid.GMul.mul a b, map_add' := ⋯, map_smul' := ⋯ },
              map_add' := ⋯ }.toFun
          x)
      y
state_after: no goals
tactic: injection smul_assoc r (GradedMonoid.mk _ x) (GradedMonoid.mk _ y)
Theorem: Finsupp.equivMapDomain_eq_mapDomain
File: Mathlib/Data/Finsupp/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M✝ : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : AddCommMonoid M✝
v v₁ v₂ : α →₀ M✝
M : Type u_13
inst✝ : AddCommMonoid M
f : α ≃ β
l : α →₀ M
⊢ equivMapDomain f l = mapDomain (⇑f) l
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M✝ : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : AddCommMonoid M✝
v v₁ v₂ : α →₀ M✝
M : Type u_13
inst✝ : AddCommMonoid M
f : α ≃ β
l : α →₀ M
x : β
⊢ (equivMapDomain f l) x = (mapDomain (⇑f) l) x
tactic: ext x
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M✝ : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : AddCommMonoid M✝
v v₁ v₂ : α →₀ M✝
M : Type u_13
inst✝ : AddCommMonoid M
f : α ≃ β
l : α →₀ M
x : β
⊢ (equivMapDomain f l) x = (mapDomain (⇑f) l) x
state_after: no goals
tactic: simp [mapDomain_equiv_apply]
Theorem: CategoryTheory.Functor.mapHomologicalComplex_upToQuasiIso_Q_inverts_quasiIso
File: Mathlib/Algebra/Homology/Localization.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝⁹ : Category.{u_4, u_1} C
inst✝⁸ : Category.{u_6, u_2} D
F : C ⥤ D
ι : Type u_3
c : ComplexShape ι
inst✝⁷ : Preadditive C
inst✝⁶ : Preadditive D
inst✝⁵ : CategoryWithHomology C
inst✝⁴ : CategoryWithHomology D
inst✝³ : (HomologicalComplex.quasiIso C c).HasLocalization
inst✝² : (HomologicalComplex.quasiIso D c).HasLocalization
inst✝¹ : F.Additive
inst✝ : F.PreservesHomology
⊢ (HomologicalComplex.quasiIso C c).IsInvertedBy (F.mapHomologicalComplex c ⋙ HomologicalComplexUpToQuasiIso.Q)
state_after: no goals
tactic: apply (F.mapHomologicalComplexUpToQuasiIsoLocalizerMorphism c).inverts
Theorem: CategoryTheory.OverPresheafAux.costructuredArrowPresheafToOver_map
File: Mathlib/CategoryTheory/Comma/Presheaf.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
A✝ A : Cᵒᵖ ⥤ Type v
⊢ ∀ {Y Z : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v} (g : Y ⟶ Z),
    (yonedaCollectionFunctor A).map g ≫ yonedaCollectionPresheafToA Z = yonedaCollectionPresheafToA Y
state_after: no goals
tactic: aesop_cat
Theorem: CategoryTheory.SmallObject.functorMapSrc_functorObjTop
File: Mathlib/CategoryTheory/SmallObject/Construction.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
I : Type w
A B : I → C
f : (i : I) → A i ⟶ B i
S X Y Z : C
πX : X ⟶ S
πY : Y ⟶ S
φ : X ⟶ Y
inst✝¹ : HasColimitsOfShape (Discrete (FunctorObjIndex f πX)) C
inst✝ : HasColimitsOfShape (Discrete (FunctorObjIndex f πY)) C
hφ : φ ≫ πY = πX
⊢ functorMapSrc f πX πY φ hφ ≫ functorObjTop f πY = functorObjTop f πX ≫ φ
state_after: case h.mk
C : Type u
inst✝² : Category.{v, u} C
I : Type w
A B : I → C
f : (i : I) → A i ⟶ B i
S X Y Z : C
πX : X ⟶ S
πY : Y ⟶ S
φ : X ⟶ Y
inst✝¹ : HasColimitsOfShape (Discrete (FunctorObjIndex f πX)) C
inst✝ : HasColimitsOfShape (Discrete (FunctorObjIndex f πY)) C
hφ : φ ≫ πY = πX
i : I
t : A i ⟶ X
b : B i ⟶ S
w : t ≫ πX = f i ≫ b
⊢ Sigma.ι (functorObjSrcFamily f πX) { i := i, t := t, b := b, w := w } ≫
      functorMapSrc f πX πY φ hφ ≫ functorObjTop f πY =
    Sigma.ι (functorObjSrcFamily f πX) { i := i, t := t, b := b, w := w } ≫ functorObjTop f πX ≫ φ
tactic: ext ⟨i, t, b, w⟩
state_before: case h.mk
C : Type u
inst✝² : Category.{v, u} C
I : Type w
A B : I → C
f : (i : I) → A i ⟶ B i
S X Y Z : C
πX : X ⟶ S
πY : Y ⟶ S
φ : X ⟶ Y
inst✝¹ : HasColimitsOfShape (Discrete (FunctorObjIndex f πX)) C
inst✝ : HasColimitsOfShape (Discrete (FunctorObjIndex f πY)) C
hφ : φ ≫ πY = πX
i : I
t : A i ⟶ X
b : B i ⟶ S
w : t ≫ πX = f i ≫ b
⊢ Sigma.ι (functorObjSrcFamily f πX) { i := i, t := t, b := b, w := w } ≫
      functorMapSrc f πX πY φ hφ ≫ functorObjTop f πY =
    Sigma.ι (functorObjSrcFamily f πX) { i := i, t := t, b := b, w := w } ≫ functorObjTop f πX ≫ φ
state_after: no goals
tactic: simp [ι_functorMapSrc_assoc f πX πY φ hφ i t b w _ rfl]
Theorem: Finset.coe_pow
File: Mathlib/Data/Finset/Pointwise.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s✝ t : Finset α
a : α
m n✝ : ℕ
s : Finset α
n : ℕ
⊢ ↑(s ^ n) = ↑s ^ n
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s✝ t : Finset α
a : α
m n✝ : ℕ
s : Finset α
n : ℕ
⊢ ↑(npowRec n s) = ↑s ^ n
tactic: change ↑(npowRec n s) = (s : Set α) ^ n
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s✝ t : Finset α
a : α
m n✝ : ℕ
s : Finset α
n : ℕ
⊢ ↑(npowRec n s) = ↑s ^ n
state_after: case zero
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s✝ t : Finset α
a : α
m n : ℕ
s : Finset α
⊢ ↑(npowRec 0 s) = ↑s ^ 0

case succ
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : Monoid α
s✝ t : Finset α
a : α
m n✝ : ℕ
s : Finset α
n : ℕ
ih : ↑(npowRec n s) = ↑s ^ n
⊢ ↑(npowRec (n + 1) s) = ↑s ^ (n + 1)
tactic: induction' n with n ih
Theorem: Multiset.nodup_union
File: Mathlib/Data/Multiset/Nodup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s✝ t✝ : Multiset α
a✝ : α
inst✝ : DecidableEq α
s t : Multiset α
x✝ : s.Nodup ∧ t.Nodup
h₁ : s.Nodup
h₂ : t.Nodup
a : α
⊢ count a (s ∪ t) ≤ 1
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s✝ t✝ : Multiset α
a✝ : α
inst✝ : DecidableEq α
s t : Multiset α
x✝ : s.Nodup ∧ t.Nodup
h₁ : s.Nodup
h₂ : t.Nodup
a : α
⊢ max (count a s) (count a t) ≤ 1
tactic: rw [count_union]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s✝ t✝ : Multiset α
a✝ : α
inst✝ : DecidableEq α
s t : Multiset α
x✝ : s.Nodup ∧ t.Nodup
h₁ : s.Nodup
h₂ : t.Nodup
a : α
⊢ max (count a s) (count a t) ≤ 1
state_after: no goals
tactic: exact max_le (nodup_iff_count_le_one.1 h₁ a) (nodup_iff_count_le_one.1 h₂ a)
Theorem: Real.rpow_natCast
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

Proof steps:
state_before: x✝ y z x : ℝ
n : ℕ
⊢ x ^ ↑n = x ^ n
state_after: no goals
tactic: simpa using rpow_intCast x n
Theorem: CategoryTheory.ShortComplex.SnakeInput.exact_C₃_down
File: Mathlib/Algebra/Homology/ShortComplex/SnakeLemma.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{?u.41028, u_1} C
inst✝ : Abelian C
S : SnakeInput C
⊢ S.v₁₂.τ₃ ≫ S.v₂₃.τ₃ = 0
state_after: no goals
tactic: rw [← comp_τ₃, S.w₁₃, zero_τ₃]
Theorem: SimpleGraph.CliqueFree.sup_edge
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
h : G.CliqueFree n
v w : α
⊢ (G ⊔ edge v w).CliqueFree (n + 1)
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
⊢ ¬G.CliqueFree n
tactic: contrapose h
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
⊢ ¬G.CliqueFree n
state_after: case mk
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ⊤.Adj a b
⊢ ¬G.CliqueFree n
tactic: obtain ⟨f, ha⟩ := topEmbeddingOfNotCliqueFree h
state_before: case mk
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ⊤.Adj a b
⊢ ¬G.CliqueFree n
state_after: case mk
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
⊢ ¬G.CliqueFree n
tactic: simp only [ne_eq, top_adj] at ha
state_before: case mk
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
⊢ ¬G.CliqueFree n
state_after: case mk
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
⊢ Nonempty (⊤ ↪g G)
tactic: rw [not_cliqueFree_iff]
state_before: case mk
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
⊢ Nonempty (⊤ ↪g G)
state_after: case pos
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∈ Set.range ⇑f
⊢ Nonempty (⊤ ↪g G)

case neg
α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
v w : α
h : ¬(G ⊔ edge v w).CliqueFree (n + 1)
f : Fin (n + 1) ↪ α
ha : ∀ {a b : Fin (n + 1)}, (G ⊔ edge v w).Adj (f a) (f b) ↔ ¬a = b
mw : w ∉ Set.range ⇑f
⊢ Nonempty (⊤ ↪g G)
tactic: by_cases mw : w ∈ Set.range f
Theorem: HomologicalComplex.homotopyCofiber.sndX_inrX
File: Mathlib/Algebra/Homology/HomotopyCofiber.lean

Proof steps:
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i : ι
hi : ¬c.Rel i (c.next i)
⊢ sndX φ i ≫ inrX φ i = 𝟙 (X φ i)
state_after: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i : ι
hi : ¬c.Rel i (c.next i)
⊢ ((if hi : c.Rel i (c.next i) then (XIsoBiprod φ i (c.next i) hi).hom ≫ biprod.snd else (XIso φ i hi).hom) ≫
      if hi : c.Rel i (c.next i) then biprod.inr ≫ (XIsoBiprod φ i (c.next i) hi).inv else (XIso φ i hi).inv) =
    𝟙 (X φ i)
tactic: dsimp [sndX, inrX]
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i : ι
hi : ¬c.Rel i (c.next i)
⊢ ((if hi : c.Rel i (c.next i) then (XIsoBiprod φ i (c.next i) hi).hom ≫ biprod.snd else (XIso φ i hi).hom) ≫
      if hi : c.Rel i (c.next i) then biprod.inr ≫ (XIsoBiprod φ i (c.next i) hi).inv else (XIso φ i hi).inv) =
    𝟙 (X φ i)
state_after: no goals
tactic: simp only [dif_neg hi, Iso.hom_inv_id]
Theorem: Finset.periodic_sum
File: Mathlib/Algebra/Periodic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f✝ g : α → β
c c₁ c₂ x : α
inst✝¹ : Add α
inst✝ : CommMonoid β
ι : Type u_4
f : ι → α → β
s : Finset ι
hs : ∀ i ∈ s, Periodic (f i) c
⊢ ∀ f_1 ∈ List.map f s.toList, Periodic f_1 c
state_after: no goals
tactic: simpa [-Periodic]
Theorem: Nat.filter_coprime_Ico_eq_totient
File: Mathlib/Data/Nat/Totient.lean

Proof steps:
state_before: a n : ℕ
⊢ (filter a.Coprime (Ico n (n + a))).card = φ a
state_after: case pp
a n : ℕ
⊢ Function.Periodic a.Coprime a
tactic: rw [totient, filter_Ico_card_eq_of_periodic, count_eq_card_filter_range]
state_before: case pp
a n : ℕ
⊢ Function.Periodic a.Coprime a
state_after: no goals
tactic: exact periodic_coprime a
Theorem: Array.size_shrink_loop
File: .lake/packages/batteries/Batteries/Data/Array/Lemmas.lean

Proof steps:
state_before: α : Type u_1
a : Array α
n : Nat
⊢ (shrink.loop n a).size = a.size - n
state_after: no goals
tactic: induction n generalizing a with simp[shrink.loop]
  | succ n ih =>
      simp[ih]
      omega
Theorem: AddMonoidAlgebra.infDegree_withTop_some_comp
File: Mathlib/Algebra/MonoidAlgebra/Degree.lean

Proof steps:
state_before: R : Type u_1
R' : Type u_2
A : Type u_3
T : Type u_4
B : Type u_5
ι : Type u_6
inst✝⁵ : Semiring R
inst✝⁴ : Ring R'
inst✝³ : AddZeroClass A
inst✝² : SemilatticeInf T
inst✝¹ : Add T
inst✝ : OrderTop T
D : A → T
s : R[A]
hs : s.support.Nonempty
⊢ infDegree (WithTop.some ∘ D) s = ↑(infDegree D s)
state_after: R : Type u_1
R' : Type u_2
A : Type u_3
T : Type u_4
B : Type u_5
ι : Type u_6
inst✝⁵ : Semiring R
inst✝⁴ : Ring R'
inst✝³ : AddZeroClass A
inst✝² : SemilatticeInf T
inst✝¹ : Add T
inst✝ : OrderTop T
D : A → T
s : R[A]
hs : s.support.Nonempty
⊢ s.support.inf (WithTop.some ∘ D) = ↑(s.support.inf D)
tactic: unfold AddMonoidAlgebra.infDegree
state_before: R : Type u_1
R' : Type u_2
A : Type u_3
T : Type u_4
B : Type u_5
ι : Type u_6
inst✝⁵ : Semiring R
inst✝⁴ : Ring R'
inst✝³ : AddZeroClass A
inst✝² : SemilatticeInf T
inst✝¹ : Add T
inst✝ : OrderTop T
D : A → T
s : R[A]
hs : s.support.Nonempty
⊢ s.support.inf (WithTop.some ∘ D) = ↑(s.support.inf D)
state_after: no goals
tactic: rw [← Finset.coe_inf' hs, Finset.inf'_eq_inf]
Theorem: CharP.intCast_eq_intCast
File: Mathlib/Algebra/CharP/Defs.lean

Proof steps:
state_before: R : Type u_1
inst✝¹ : AddGroupWithOne R
p : ℕ
inst✝ : CharP R p
a b : ℤ
⊢ ↑a = ↑b ↔ a ≡ b [ZMOD ↑p]
state_after: no goals
tactic: rw [eq_comm, ← sub_eq_zero, ← Int.cast_sub, CharP.intCast_eq_zero_iff R p, Int.modEq_iff_dvd]
Theorem: posMulReflectLT_iff_mulPosReflectLT
File: Mathlib/Algebra/Order/GroupWithZero/Unbundled.lean

Proof steps:
state_before: α : Type u_1
a b c d : α
inst✝³ : Mul α
inst✝² : IsSymmOp α α fun x x_1 => x * x_1
inst✝¹ : Zero α
inst✝ : Preorder α
⊢ PosMulReflectLT α ↔ MulPosReflectLT α
state_after: no goals
tactic: simp only [PosMulReflectLT, MulPosReflectLT, IsSymmOp.symm_op]
Theorem: MeasureTheory.Measure.haarMeasure_closure_self
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

Proof steps:
state_before: G : Type u_1
inst✝⁴ : Group G
inst✝³ : TopologicalSpace G
inst✝² : TopologicalGroup G
inst✝¹ : MeasurableSpace G
inst✝ : BorelSpace G
K₀ : PositiveCompacts G
⊢ (haarMeasure K₀) (closure ↑K₀) = 1
state_after: no goals
tactic: rw [K₀.isCompact.measure_closure, haarMeasure_self]
Theorem: Turing.tr_reaches_rev
File: Mathlib/Computability/TuringMachine.lean

Proof steps:
state_before: σ₁ : Type u_1
σ₂ : Type u_2
f₁ : σ₁ → Option σ₁
f₂ : σ₂ → Option σ₂
tr : σ₁ → σ₂ → Prop
H : Respects f₁ f₂ tr
a₁ : σ₁
a₂ : σ₂
aa : tr a₁ a₂
b₂ : σ₂
ab : Reaches f₂ a₂ b₂
⊢ ∃ c₁ c₂, Reaches f₂ b₂ c₂ ∧ tr c₁ c₂ ∧ Reaches f₁ a₁ c₁
state_after: case refl
σ₁ : Type u_1
σ₂ : Type u_2
f₁ : σ₁ → Option σ₁
f₂ : σ₂ → Option σ₂
tr : σ₁ → σ₂ → Prop
H : Respects f₁ f₂ tr
a₁ : σ₁
a₂ : σ₂
aa : tr a₁ a₂
b₂ : σ₂
⊢ ∃ c₁ c₂, Reaches f₂ a₂ c₂ ∧ tr c₁ c₂ ∧ Reaches f₁ a₁ c₁

case tail
σ₁ : Type u_1
σ₂ : Type u_2
f₁ : σ₁ → Option σ₁
f₂ : σ₂ → Option σ₂
tr : σ₁ → σ₂ → Prop
H : Respects f₁ f₂ tr
a₁ : σ₁
a₂ : σ₂
aa : tr a₁ a₂
b₂ c₂ d₂ : σ₂
a✝ : ReflTransGen (fun a b => b ∈ f₂ a) a₂ c₂
cd : d₂ ∈ f₂ c₂
IH : ∃ c₁ c₂_1, Reaches f₂ c₂ c₂_1 ∧ tr c₁ c₂_1 ∧ Reaches f₁ a₁ c₁
⊢ ∃ c₁ c₂, Reaches f₂ d₂ c₂ ∧ tr c₁ c₂ ∧ Reaches f₁ a₁ c₁
tactic: induction' ab with c₂ d₂ _ cd IH