ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Nat.smoothNumbers_succ
File: Mathlib/NumberTheory/SmoothNumbers.lean

Proof steps:
state_before: N : ℕ
hN : ¬Prime N
⊢ N.succ.smoothNumbers = N.smoothNumbers
state_after: no goals
tactic: simp only [smoothNumbers_eq_factoredNumbers, Finset.range_succ, factoredNumbers_insert _ hN]
Theorem: List.get?_modifyNth_ne
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

Proof steps:
state_before: α : Type u_1
f : α → α
m n : Nat
l : List α
h : m ≠ n
⊢ (modifyNth f m l).get? n = l.get? n
state_after: no goals
tactic: simp [h]
Theorem: TensorProduct.sum_tmul_eq_zero_of_vanishesTrivially
File: Mathlib/LinearAlgebra/TensorProduct/Vanishing.lean

Proof steps:
state_before: R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
hmn : VanishesTrivially R m n
⊢ ∑ i : ι, m i ⊗ₜ[R] n i = 0
state_after: case intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
κ : Type u
w✝ : Fintype κ
a : ι → κ → R
y : κ → N
h₁ : ∀ (i : ι), n i = ∑ j : κ, a i j • y j
h₂ : ∀ (j : κ), ∑ i : ι, a i j • m i = 0
⊢ ∑ i : ι, m i ⊗ₜ[R] n i = 0
tactic: obtain ⟨κ, _, a, y, h₁, h₂⟩ := hmn
state_before: case intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
κ : Type u
w✝ : Fintype κ
a : ι → κ → R
y : κ → N
h₁ : ∀ (i : ι), n i = ∑ j : κ, a i j • y j
h₂ : ∀ (j : κ), ∑ i : ι, a i j • m i = 0
⊢ ∑ i : ι, m i ⊗ₜ[R] n i = 0
state_after: case intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
κ : Type u
w✝ : Fintype κ
a : ι → κ → R
y : κ → N
h₁ : ∀ (i : ι), n i = ∑ j : κ, a i j • y j
h₂ : ∀ (j : κ), ∑ i : ι, a i j • m i = 0
⊢ ∑ x : ι, ∑ x_1 : κ, a x x_1 • m x ⊗ₜ[R] y x_1 = 0
tactic: simp_rw [h₁, tmul_sum, tmul_smul]
state_before: case intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
κ : Type u
w✝ : Fintype κ
a : ι → κ → R
y : κ → N
h₁ : ∀ (i : ι), n i = ∑ j : κ, a i j • y j
h₂ : ∀ (j : κ), ∑ i : ι, a i j • m i = 0
⊢ ∑ x : ι, ∑ x_1 : κ, a x x_1 • m x ⊗ₜ[R] y x_1 = 0
state_after: case intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
κ : Type u
w✝ : Fintype κ
a : ι → κ → R
y : κ → N
h₁ : ∀ (i : ι), n i = ∑ j : κ, a i j • y j
h₂ : ∀ (j : κ), ∑ i : ι, a i j • m i = 0
⊢ ∑ y_1 : κ, ∑ x : ι, a x y_1 • m x ⊗ₜ[R] y y_1 = 0
tactic: rw [Finset.sum_comm]
state_before: case intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
κ : Type u
w✝ : Fintype κ
a : ι → κ → R
y : κ → N
h₁ : ∀ (i : ι), n i = ∑ j : κ, a i j • y j
h₂ : ∀ (j : κ), ∑ i : ι, a i j • m i = 0
⊢ ∑ y_1 : κ, ∑ x : ι, a x y_1 • m x ⊗ₜ[R] y y_1 = 0
state_after: no goals
tactic: simp_rw [← tmul_smul, ← smul_tmul, ← sum_tmul, h₂, zero_tmul, Finset.sum_const_zero]
Theorem: EsakiaHom.cancel_left
File: Mathlib/Topology/Order/Hom/Esakia.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁷ : TopologicalSpace α
inst✝⁶ : Preorder α
inst✝⁵ : TopologicalSpace β
inst✝⁴ : Preorder β
inst✝³ : TopologicalSpace γ
inst✝² : Preorder γ
inst✝¹ : TopologicalSpace δ
inst✝ : Preorder δ
g : EsakiaHom β γ
f₁ f₂ : EsakiaHom α β
hg : Injective ⇑g
h : g.comp f₁ = g.comp f₂
a : α
⊢ g (f₁ a) = g (f₂ a)
state_after: no goals
tactic: rw [← comp_apply, h, comp_apply]
Theorem: ZMod.intCast_cast_sub
File: Mathlib/Data/ZMod/Basic.lean

Proof steps:
state_before: m n : ℕ
x y : ZMod n
⊢ (x - y).cast = (x.cast - y.cast) % ↑n
state_after: no goals
tactic: rw [← ZMod.coe_intCast, Int.cast_sub, ZMod.intCast_zmod_cast, ZMod.intCast_zmod_cast]
Theorem: Set.einfsep_pos_of_finite
File: Mathlib/Topology/MetricSpace/Infsep.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : EMetricSpace α
x y z : α
s t : Set α
C : ℝ≥0∞
sC : Set ℝ≥0∞
inst✝ : Finite ↑s
⊢ 0 < s.einfsep
state_after: case intro
α : Type u_1
β : Type u_2
inst✝¹ : EMetricSpace α
x y z : α
s t : Set α
C : ℝ≥0∞
sC : Set ℝ≥0∞
inst✝ : Finite ↑s
val✝ : Fintype ↑s
⊢ 0 < s.einfsep
tactic: cases nonempty_fintype s
state_before: case intro
α : Type u_1
β : Type u_2
inst✝¹ : EMetricSpace α
x y z : α
s t : Set α
C : ℝ≥0∞
sC : Set ℝ≥0∞
inst✝ : Finite ↑s
val✝ : Fintype ↑s
⊢ 0 < s.einfsep
state_after: case pos
α : Type u_1
β : Type u_2
inst✝¹ : EMetricSpace α
x y z : α
s t : Set α
C : ℝ≥0∞
sC : Set ℝ≥0∞
inst✝ : Finite ↑s
val✝ : Fintype ↑s
hs : s.Nontrivial
⊢ 0 < s.einfsep

case neg
α : Type u_1
β : Type u_2
inst✝¹ : EMetricSpace α
x y z : α
s t : Set α
C : ℝ≥0∞
sC : Set ℝ≥0∞
inst✝ : Finite ↑s
val✝ : Fintype ↑s
hs : ¬s.Nontrivial
⊢ 0 < s.einfsep
tactic: by_cases hs : s.Nontrivial
Theorem: AList.empty_lookupFinsupp
File: Mathlib/Data/Finsupp/AList.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
inst✝ : Zero M
⊢ ∅.lookupFinsupp = 0
state_after: no goals
tactic: classical
    ext
    simp
Theorem: RCLike.reCLM_norm
File: Mathlib/Analysis/RCLike/Lemmas.lean

Proof steps:
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
⊢ ‖reCLM‖ = 1
state_after: K : Type u_1
E : Type u_2
inst✝ : RCLike K
⊢ 1 ≤ ‖reLm.mkContinuous 1 ⋯‖
tactic: apply le_antisymm (LinearMap.mkContinuous_norm_le _ zero_le_one _)
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
⊢ 1 ≤ ‖reLm.mkContinuous 1 ⋯‖
state_after: case h.e'_3
K : Type u_1
E : Type u_2
inst✝ : RCLike K
⊢ 1 = ‖reCLM 1‖ / ‖1‖
tactic: convert ContinuousLinearMap.ratio_le_opNorm (reCLM : K →L[ℝ] ℝ) (1 : K)
state_before: case h.e'_3
K : Type u_1
E : Type u_2
inst✝ : RCLike K
⊢ 1 = ‖reCLM 1‖ / ‖1‖
state_after: no goals
tactic: simp
Theorem: pow_pos_iff
File: Mathlib/Algebra/Order/GroupWithZero/Canonical.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : LinearOrderedCommMonoidWithZero α
a b c d x y z : α
n : ℕ
inst✝ : NoZeroDivisors α
hn : n ≠ 0
⊢ 0 < a ^ n ↔ 0 < a
state_after: no goals
tactic: simp_rw [zero_lt_iff, pow_ne_zero_iff hn]
Theorem: CategoryTheory.Abelian.epi_fst_of_isLimit
File: Mathlib/CategoryTheory/Abelian/Basic.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasPullbacks C
W X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : Epi g
s : PullbackCone f g
hs : IsLimit s
⊢ Epi s.fst
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasPullbacks C
W X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : Epi g
s : PullbackCone f g
hs : IsLimit s
this : Epi ((limit.cone (cospan f g)).π.app WalkingCospan.left)
⊢ Epi s.fst
tactic: haveI : Epi (NatTrans.app (limit.cone (cospan f g)).π WalkingCospan.left) :=
    Abelian.epi_pullback_of_epi_g f g
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Abelian C
inst✝¹ : HasPullbacks C
W X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : Epi g
s : PullbackCone f g
hs : IsLimit s
this : Epi ((limit.cone (cospan f g)).π.app WalkingCospan.left)
⊢ Epi s.fst
state_after: no goals
tactic: apply epi_of_epi_fac (IsLimit.conePointUniqueUpToIso_hom_comp (limit.isLimit _) hs _)
Theorem: Finset.inv_smul_finset_distrib
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✝² : Group α
inst✝¹ : MulAction α β
s✝ t : Finset β
a✝ : α
b : β
inst✝ : DecidableEq α
a : α
s : Finset α
⊢ (a • s)⁻¹ = op a⁻¹ • s⁻¹
state_after: case a
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : DecidableEq β
inst✝² : Group α
inst✝¹ : MulAction α β
s✝ t : Finset β
a✝¹ : α
b : β
inst✝ : DecidableEq α
a : α
s : Finset α
a✝ : α
⊢ a✝ ∈ (a • s)⁻¹ ↔ a✝ ∈ op a⁻¹ • s⁻¹
tactic: ext
state_before: case a
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : DecidableEq β
inst✝² : Group α
inst✝¹ : MulAction α β
s✝ t : Finset β
a✝¹ : α
b : β
inst✝ : DecidableEq α
a : α
s : Finset α
a✝ : α
⊢ a✝ ∈ (a • s)⁻¹ ↔ a✝ ∈ op a⁻¹ • s⁻¹
state_after: no goals
tactic: simp [← inv_smul_mem_iff]
Theorem: CategoryTheory.Meq.congr_apply
File: Mathlib/CategoryTheory/Sites/ConcreteSheafification.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
J : GrothendieckTopology C
D : Type w
inst✝¹ : Category.{max v u, w} D
inst✝ : ConcreteCategory D
X : C
P : Cᵒᵖ ⥤ D
S : J.Cover X
x : Meq P S
Y : C
f g : Y ⟶ X
h : f = g
hf : S.sieve.arrows f
⊢ S.sieve.arrows g
state_after: no goals
tactic: simpa only [← h] using hf
state_before: C : Type u
inst✝² : Category.{v, u} C
J : GrothendieckTopology C
D : Type w
inst✝¹ : Category.{max v u, w} D
inst✝ : ConcreteCategory D
X : C
P : Cᵒᵖ ⥤ D
S : J.Cover X
x : Meq P S
Y : C
f g : Y ⟶ X
h : f = g
hf : S.sieve.arrows f
⊢ ↑x { Y := Y, f := f, hf := hf } = ↑x { Y := Y, f := g, hf := ⋯ }
state_after: C : Type u
inst✝² : Category.{v, u} C
J : GrothendieckTopology C
D : Type w
inst✝¹ : Category.{max v u, w} D
inst✝ : ConcreteCategory D
X : C
P : Cᵒᵖ ⥤ D
S : J.Cover X
x : Meq P S
Y : C
f : Y ⟶ X
hf : S.sieve.arrows f
⊢ ↑x { Y := Y, f := f, hf := hf } = ↑x { Y := Y, f := f, hf := ⋯ }
tactic: subst h
state_before: C : Type u
inst✝² : Category.{v, u} C
J : GrothendieckTopology C
D : Type w
inst✝¹ : Category.{max v u, w} D
inst✝ : ConcreteCategory D
X : C
P : Cᵒᵖ ⥤ D
S : J.Cover X
x : Meq P S
Y : C
f : Y ⟶ X
hf : S.sieve.arrows f
⊢ ↑x { Y := Y, f := f, hf := hf } = ↑x { Y := Y, f := f, hf := ⋯ }
state_after: no goals
tactic: rfl
Theorem: CategoryTheory.Abelian.coimageStrongEpiMonoFactorisation_m
File: Mathlib/CategoryTheory/Abelian/Basic.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
P Q : C
f : P ⟶ Q
⊢ Mono (Abelian.factorThruCoimage f)
state_after: no goals
tactic: infer_instance
Theorem: WeierstrassCurve.Φ_three
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

Proof steps:
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
⊢ W.Φ 3 = X * W.Ψ₃ ^ 2 - W.preΨ₄ * W.Ψ₂Sq
state_after: no goals
tactic: erw [Φ_ofNat, preΨ'_three, mul_one, preΨ'_four, preΨ'_two, mul_one, if_pos even_two]
Theorem: CoxeterSystem.length_mul_ge_length_sub_length'
File: Mathlib/GroupTheory/Coxeter/Length.lean

Proof steps:
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w₁ w₂ : W
⊢ cs.length w₂ - cs.length w₁ ≤ cs.length (w₁ * w₂)
state_after: no goals
tactic: simpa [Nat.sub_le_of_le_add, add_comm] using cs.length_mul_le w₁⁻¹ (w₁ * w₂)
Theorem: Finset.coe_image
File: Mathlib/Data/Finset/Image.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b c : β
⊢ ∀ (x : β), x ∈ ↑(image f s) ↔ x ∈ f '' ↑s
state_after: no goals
tactic: simp only [mem_coe, mem_image, Set.mem_image, implies_true]
Theorem: add_sub_one_nsmul
File: Mathlib/Algebra/Group/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Monoid M
a✝ b c : M
m n : ℕ
hn : n ≠ 0
a : M
⊢ a ^ (n - 1) * a = a ^ n
state_after: no goals
tactic: rw [← pow_succ, Nat.sub_add_cancel $ Nat.one_le_iff_ne_zero.2 hn]
Theorem: LieAlgebra.InvariantForm.restrict_nondegenerate
File: Mathlib/Algebra/Lie/InvariantForm.lean

Proof steps:
state_before: K : Type u_1
L : Type u_2
M : Type u_3
inst✝⁶ : Field K
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra K L
inst✝³ : AddCommGroup M
inst✝² : Module K M
inst✝¹ : LieRingModule L M
inst✝ : Module.Finite K L
Φ : LinearMap.BilinForm K L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hΦ_refl : Φ.IsRefl
hL : ∀ (I : LieIdeal K L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal K L
hI : IsAtom I
⊢ (Φ.restrict (lieIdealSubalgebra K L I).toSubmodule).Nondegenerate
state_after: K : Type u_1
L : Type u_2
M : Type u_3
inst✝⁶ : Field K
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra K L
inst✝³ : AddCommGroup M
inst✝² : Module K M
inst✝¹ : LieRingModule L M
inst✝ : Module.Finite K L
Φ : LinearMap.BilinForm K L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hΦ_refl : Φ.IsRefl
hL : ∀ (I : LieIdeal K L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal K L
hI : IsAtom I
⊢ IsCompl (lieIdealSubalgebra K L I).toSubmodule (Φ.orthogonal (lieIdealSubalgebra K L I).toSubmodule)
tactic: rw [LinearMap.BilinForm.restrict_nondegenerate_iff_isCompl_orthogonal hΦ_refl]
state_before: K : Type u_1
L : Type u_2
M : Type u_3
inst✝⁶ : Field K
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra K L
inst✝³ : AddCommGroup M
inst✝² : Module K M
inst✝¹ : LieRingModule L M
inst✝ : Module.Finite K L
Φ : LinearMap.BilinForm K L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hΦ_refl : Φ.IsRefl
hL : ∀ (I : LieIdeal K L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal K L
hI : IsAtom I
⊢ IsCompl (lieIdealSubalgebra K L I).toSubmodule (Φ.orthogonal (lieIdealSubalgebra K L I).toSubmodule)
state_after: no goals
tactic: exact orthogonal_isCompl_coe_submodule Φ hΦ_nondeg hΦ_inv hΦ_refl hL I hI
Theorem: CategoryTheory.ComposableArrows.exact₀
File: Mathlib/Algebra/Homology/ExactSequence.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
n : ℕ
S✝ : ComposableArrows C n
S : ComposableArrows C 0
i : ℕ
hi : autoParam (i + 2 ≤ 0) _auto✝
⊢ (S.sc ⋯ i ⋯).Exact
state_after: no goals
tactic: simp [autoParam] at hi
Theorem: Cardinal.nfpBFamily_lt_ord_of_isRegular
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

Proof steps:
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{u}
f : (a : Ordinal.{u}) → a < o → Ordinal.{u} → Ordinal.{u}
c : Cardinal.{u}
hc : c.IsRegular
ho : o.card < c
hc' : c ≠ ℵ₀
hf : ∀ (i : Ordinal.{u}) (hi : i < o), ∀ b < c.ord, f i hi b < c.ord
a : Ordinal.{u}
⊢ lift.{u, u} o.card < c
state_after: no goals
tactic: rwa [lift_id]
Theorem: alternatingGroup.nontrivial_of_three_le_card
File: Mathlib/GroupTheory/SpecificGroups/Alternating.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
⊢ Nontrivial ↥(alternatingGroup α)
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
this : Nontrivial α
⊢ Nontrivial ↥(alternatingGroup α)
tactic: haveI := Fintype.one_lt_card_iff_nontrivial.1 (lt_trans (by decide) h3)
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
this : Nontrivial α
⊢ Nontrivial ↥(alternatingGroup α)
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
this : Nontrivial α
⊢ 1 < card ↥(alternatingGroup α)
tactic: rw [← Fintype.one_lt_card_iff_nontrivial]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
this : Nontrivial α
⊢ 1 < card ↥(alternatingGroup α)
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
this : Nontrivial α
⊢ 2 * 1 < 2 * card ↥(alternatingGroup α)
tactic: refine lt_of_mul_lt_mul_left ?_ (le_of_lt Nat.prime_two.pos)
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
this : Nontrivial α
⊢ 2 * 1 < 2 * card ↥(alternatingGroup α)
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
this : Nontrivial α
⊢ (2 * 1).succ ≤ (card α).factorial
tactic: rw [two_mul_card_alternatingGroup, card_perm, ← Nat.succ_le_iff]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
h3 : 3 ≤ card α
this : Nontrivial α
⊢ (2 * 1).succ ≤ (card α).factorial
state_after: no goals
tactic: exact le_trans h3 (card α).self_le_factorial
Theorem: Irrational.of_int_mul
File: Mathlib/Data/Real/Irrational.lean

Proof steps:
state_before: q : ℚ
x y : ℝ
m : ℤ
h : Irrational (↑m * x)
⊢ Irrational (↑↑m * x)
state_after: no goals
tactic: rwa [cast_intCast]
Theorem: NNReal.summable_rpow_inv
File: Mathlib/Analysis/PSeries.lean

Proof steps:
state_before: p : ℝ
⊢ (Summable fun n => (↑n ^ p)⁻¹) ↔ 1 < p
state_after: no goals
tactic: simp [← NNReal.summable_coe]
Theorem: Nat.tendsto_div_const_atTop
File: Mathlib/Analysis/SpecificLimits/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
R : Type u_4
inst✝³ : TopologicalSpace R
inst✝² : LinearOrderedField R
inst✝¹ : OrderTopology R
inst✝ : FloorRing R
n : ℕ
hn : n ≠ 0
⊢ Tendsto (fun x => x / n) atTop atTop
state_after: no goals
tactic: rw [Tendsto, map_div_atTop_eq_nat n hn.bot_lt]
Theorem: Sum.getRight?_eq_some_iff
File: .lake/packages/batteries/Batteries/Data/Sum/Lemmas.lean

Proof steps:
state_before: β✝ : Type u_1
b : β✝
α✝ : Type u_2
x : α✝ ⊕ β✝
⊢ x.getRight? = some b ↔ x = inr b
state_after: no goals
tactic: cases x <;> simp only [getRight?, Option.some.injEq, inr.injEq]
Theorem: Affine.Simplex.face_centroid_eq_centroid
File: Mathlib/LinearAlgebra/AffineSpace/Independent.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
n : ℕ
s : Simplex k P n
fs : Finset (Fin (n + 1))
m : ℕ
h : fs.card = m + 1
⊢ centroid k univ (s.face h).points = centroid k fs s.points
state_after: case h.e'_3.h.e'_9
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
n : ℕ
s : Simplex k P n
fs : Finset (Fin (n + 1))
m : ℕ
h : fs.card = m + 1
⊢ fs = map (fs.orderEmbOfFin h).toEmbedding univ
tactic: convert (Finset.univ.centroid_map k (fs.orderEmbOfFin h).toEmbedding s.points).symm
state_before: case h.e'_3.h.e'_9
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
n : ℕ
s : Simplex k P n
fs : Finset (Fin (n + 1))
m : ℕ
h : fs.card = m + 1
⊢ fs = map (fs.orderEmbOfFin h).toEmbedding univ
state_after: case h.e'_3.h.e'_9
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
n : ℕ
s : Simplex k P n
fs : Finset (Fin (n + 1))
m : ℕ
h : fs.card = m + 1
⊢ ↑fs = Set.range ⇑(fs.orderEmbOfFin h).toEmbedding
tactic: rw [← Finset.coe_inj, Finset.coe_map, Finset.coe_univ, Set.image_univ]
state_before: case h.e'_3.h.e'_9
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
n : ℕ
s : Simplex k P n
fs : Finset (Fin (n + 1))
m : ℕ
h : fs.card = m + 1
⊢ ↑fs = Set.range ⇑(fs.orderEmbOfFin h).toEmbedding
state_after: no goals
tactic: simp
Theorem: RCLike.re_ofReal_mul
File: Mathlib/Analysis/RCLike/Basic.lean

Proof steps:
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
r : ℝ
z : K
⊢ re (↑r * z) = r * re z
state_after: no goals
tactic: simp only [mul_re, ofReal_im, zero_mul, ofReal_re, sub_zero]
Theorem: mul_div_left_comm
File: Mathlib/Algebra/Group/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionCommMonoid α
a b c d : α
⊢ a * (b / c) = b * (a / c)
state_after: no goals
tactic: simp
Theorem: Filter.tendsto_atTop_diagonal
File: Mathlib/Order/Filter/AtTopBot.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
⊢ Tendsto (fun a => (a, a)) atTop atTop
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
⊢ Tendsto (fun a => (a, a)) atTop (atTop ×ˢ atTop)
tactic: rw [← prod_atTop_atTop_eq]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
⊢ Tendsto (fun a => (a, a)) atTop (atTop ×ˢ atTop)
state_after: no goals
tactic: exact tendsto_id.prod_mk tendsto_id
Theorem: EMetric.diam_pi_le_of_le
File: Mathlib/Topology/EMetricSpace/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
X : Type u_1
inst✝² : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s✝ t : Set α
π : β → Type u_2
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), diam (s b) ≤ c
⊢ diam (univ.pi s) ≤ c
state_after: α : Type u
β : Type v
X : Type u_1
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
ε ε₁ ε₂ : ℝ≥0∞
s✝ t : Set α
π : β → Type u_2
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), diam (s b) ≤ c
x : (i : β) → π i
hx : x ∈ univ.pi s
y : (i : β) → π i
hy : y ∈ univ.pi s
⊢ ∀ (b : β), edist (x b) (y b) ≤ c
tactic: refine diam_le fun x hx y hy => edist_pi_le_iff.mpr ?_
state_before: α : Type u
β : Type v
X : Type u_1
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
ε ε₁ ε₂ : ℝ≥0∞
s✝ t : Set α
π : β → Type u_2
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), diam (s b) ≤ c
x : (i : β) → π i
hx : x ∈ univ.pi s
y : (i : β) → π i
hy : y ∈ univ.pi s
⊢ ∀ (b : β), edist (x b) (y b) ≤ c
state_after: α : Type u
β : Type v
X : Type u_1
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
ε ε₁ ε₂ : ℝ≥0∞
s✝ t : Set α
π : β → Type u_2
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), diam (s b) ≤ c
x : (i : β) → π i
hx : ∀ (i : β), x i ∈ s i
y : (i : β) → π i
hy : ∀ (i : β), y i ∈ s i
⊢ ∀ (b : β), edist (x b) (y b) ≤ c
tactic: rw [mem_univ_pi] at hx hy
state_before: α : Type u
β : Type v
X : Type u_1
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
ε ε₁ ε₂ : ℝ≥0∞
s✝ t : Set α
π : β → Type u_2
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), diam (s b) ≤ c
x : (i : β) → π i
hx : ∀ (i : β), x i ∈ s i
y : (i : β) → π i
hy : ∀ (i : β), y i ∈ s i
⊢ ∀ (b : β), edist (x b) (y b) ≤ c
state_after: no goals
tactic: exact fun b => diam_le_iff.1 (h b) (x b) (hx b) (y b) (hy b)
Theorem: MeasureTheory.Measure.mkMetric_mono_smul
File: Mathlib/MeasureTheory/Measure/Hausdorff.lean

Proof steps:
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
m₁ m₂ : ℝ≥0∞ → ℝ≥0∞
c : ℝ≥0∞
hc : c ≠ ⊤
h0 : c ≠ 0
hle : m₁ ≤ᶠ[𝓝[≥] 0] c • m₂
s : Set X
⊢ (mkMetric m₁) s ≤ (c • mkMetric m₂) s
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
m₁ m₂ : ℝ≥0∞ → ℝ≥0∞
c : ℝ≥0∞
hc : c ≠ ⊤
h0 : c ≠ 0
hle : m₁ ≤ᶠ[𝓝[≥] 0] c • m₂
s : Set X
⊢ (OuterMeasure.mkMetric m₁) s ≤ (c • ⇑(OuterMeasure.mkMetric m₂)) s
tactic: rw [← OuterMeasure.coe_mkMetric, coe_smul, ← OuterMeasure.coe_mkMetric]
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝³ : EMetricSpace X
inst✝² : EMetricSpace Y
inst✝¹ : MeasurableSpace X
inst✝ : BorelSpace X
m₁ m₂ : ℝ≥0∞ → ℝ≥0∞
c : ℝ≥0∞
hc : c ≠ ⊤
h0 : c ≠ 0
hle : m₁ ≤ᶠ[𝓝[≥] 0] c • m₂
s : Set X
⊢ (OuterMeasure.mkMetric m₁) s ≤ (c • ⇑(OuterMeasure.mkMetric m₂)) s
state_after: no goals
tactic: exact OuterMeasure.mkMetric_mono_smul hc h0 hle s
Theorem: Cardinal.aleph_le_beth
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

Proof steps:
state_before: o : Ordinal.{u_1}
⊢ aleph o ≤ beth o
state_after: no goals
tactic: induction o using limitRecOn with
  | H₁ => simp
  | H₂ o h =>
    rw [aleph_succ, beth_succ, succ_le_iff]
    exact (cantor _).trans_le (power_le_power_left two_ne_zero h)
  | H₃ o ho IH =>
    rw [aleph_limit ho, beth_limit ho]
    exact ciSup_mono (bddAbove_of_small _) fun x => IH x.1 x.2
Theorem: Language.map_id
File: Mathlib/Computability/Language.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x : List α
l : Language α
⊢ (map id) l = l
state_after: no goals
tactic: simp [map]