ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: multiplicity.multiplicity_pow_self
File: Mathlib/RingTheory/Multiplicity.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p : α
h0 : p ≠ 0
hu : ¬IsUnit p
n : ℕ
⊢ multiplicity p (p ^ n) = ↑n
state_after: α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p : α
h0 : p ≠ 0
hu : ¬IsUnit p
n : ℕ
⊢ p ^ n ∣ p ^ n ∧ ¬p ^ (n + 1) ∣ p ^ n
tactic: rw [eq_coe_iff]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p : α
h0 : p ≠ 0
hu : ¬IsUnit p
n : ℕ
⊢ p ^ n ∣ p ^ n ∧ ¬p ^ (n + 1) ∣ p ^ n
state_after: case right
α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p : α
h0 : p ≠ 0
hu : ¬IsUnit p
n : ℕ
⊢ ¬p ^ (n + 1) ∣ p ^ n
tactic: use dvd_rfl
state_before: case right
α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p : α
h0 : p ≠ 0
hu : ¬IsUnit p
n : ℕ
⊢ ¬p ^ (n + 1) ∣ p ^ n
state_after: case right
α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p : α
h0 : p ≠ 0
hu : ¬IsUnit p
n : ℕ
⊢ ¬n + 1 ≤ n
tactic: rw [pow_dvd_pow_iff h0 hu]
state_before: case right
α : Type u_1
β : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
p : α
h0 : p ≠ 0
hu : ¬IsUnit p
n : ℕ
⊢ ¬n + 1 ≤ n
state_after: no goals
tactic: apply Nat.not_succ_le_self
Theorem: MeasurableEmbedding.gaussianReal_comap_apply
File: Mathlib/Probability/Distributions/Gaussian.lean

Proof steps:
state_before: μ : ℝ
v : ℝ≥0
hv : v ≠ 0
f : ℝ → ℝ
hf : MeasurableEmbedding f
f' : ℝ → ℝ
h_deriv : ∀ (x : ℝ), HasDerivAt f (f' x) x
s : Set ℝ
hs : MeasurableSet s
⊢ (Measure.comap f (gaussianReal μ v)) s = ENNReal.ofReal (∫ (x : ℝ) in s, |f' x| * gaussianPDFReal μ v (f x))
state_after: μ : ℝ
v : ℝ≥0
hv : v ≠ 0
f : ℝ → ℝ
hf : MeasurableEmbedding f
f' : ℝ → ℝ
h_deriv : ∀ (x : ℝ), HasDerivAt f (f' x) x
s : Set ℝ
hs : MeasurableSet s
⊢ (Measure.comap f (ℙ.withDensity fun x => ENNReal.ofReal (gaussianPDFReal μ v x))) s =
    ENNReal.ofReal (∫ (x : ℝ) in s, |f' x| * gaussianPDFReal μ v (f x))
tactic: rw [gaussianReal_of_var_ne_zero _ hv, gaussianPDF_def]
state_before: μ : ℝ
v : ℝ≥0
hv : v ≠ 0
f : ℝ → ℝ
hf : MeasurableEmbedding f
f' : ℝ → ℝ
h_deriv : ∀ (x : ℝ), HasDerivAt f (f' x) x
s : Set ℝ
hs : MeasurableSet s
⊢ (Measure.comap f (ℙ.withDensity fun x => ENNReal.ofReal (gaussianPDFReal μ v x))) s =
    ENNReal.ofReal (∫ (x : ℝ) in s, |f' x| * gaussianPDFReal μ v (f x))
state_after: no goals
tactic: exact hf.withDensity_ofReal_comap_apply_eq_integral_abs_deriv_mul' hs h_deriv
    (ae_of_all _ (gaussianPDFReal_nonneg _ _)) (integrable_gaussianPDFReal _ _)
Theorem: MeasureTheory.L1.integral_eq_setToL1
File: Mathlib/MeasureTheory/Integral/Bochner.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NormedSpace 𝕜 E
inst✝² : SMulCommClass ℝ 𝕜 E
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace E
f : ↥(Lp E 1 μ)
⊢ integral f = (setToL1 ⋯) f
state_after: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NormedSpace 𝕜 E
inst✝² : SMulCommClass ℝ 𝕜 E
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace E
f : ↥(Lp E 1 μ)
⊢ integralCLM f = (setToL1 ⋯) f
tactic: simp only [integral]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NormedSpace 𝕜 E
inst✝² : SMulCommClass ℝ 𝕜 E
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace E
f : ↥(Lp E 1 μ)
⊢ integralCLM f = (setToL1 ⋯) f
state_after: no goals
tactic: rfl
Theorem: IsProjective.iff_projective
File: Mathlib/Algebra/Category/ModuleCat/Projective.lean

Proof steps:
state_before: R : Type u
inst✝² : Ring R
P : Type (max u v)
inst✝¹ : AddCommGroup P
inst✝ : Module R P
⊢ Module.Projective R P ↔ Projective (of R P)
state_after: case refine_1
R : Type u
inst✝² : Ring R
P : Type (max u v)
inst✝¹ : AddCommGroup P
inst✝ : Module R P
h : Module.Projective R P
⊢ Projective (of R P)

case refine_2
R : Type u
inst✝² : Ring R
P : Type (max u v)
inst✝¹ : AddCommGroup P
inst✝ : Module R P
h : Projective (of R P)
⊢ Module.Projective R P
tactic: refine ⟨fun h => ?_, fun h => ?_⟩
Theorem: Polynomial.mapAlg_eq_map
File: Mathlib/Algebra/Polynomial/Lifts.lean

Proof steps:
state_before: R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : Semiring S
inst✝ : Algebra R S
p : R[X]
⊢ (mapAlg R S) p = map (algebraMap R S) p
state_after: R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : Semiring S
inst✝ : Algebra R S
p : R[X]
⊢ (p.sum fun e a => C ((algebraMap R S) a) * X ^ e) = p.sum fun e a => (⇑C ∘ ⇑(algebraMap R S)) a * X ^ e
tactic: simp only [mapAlg, aeval_def, eval₂_eq_sum, map, algebraMap_apply, RingHom.coe_comp]
state_before: R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : Semiring S
inst✝ : Algebra R S
p : R[X]
⊢ (p.sum fun e a => C ((algebraMap R S) a) * X ^ e) = p.sum fun e a => (⇑C ∘ ⇑(algebraMap R S)) a * X ^ e
state_after: case a
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : Semiring S
inst✝ : Algebra R S
p : R[X]
n✝ : ℕ
⊢ (p.sum fun e a => C ((algebraMap R S) a) * X ^ e).coeff n✝ =
    (p.sum fun e a => (⇑C ∘ ⇑(algebraMap R S)) a * X ^ e).coeff n✝
tactic: ext
state_before: case a
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : Semiring S
inst✝ : Algebra R S
p : R[X]
n✝ : ℕ
⊢ (p.sum fun e a => C ((algebraMap R S) a) * X ^ e).coeff n✝ =
    (p.sum fun e a => (⇑C ∘ ⇑(algebraMap R S)) a * X ^ e).coeff n✝
state_after: no goals
tactic: congr
Theorem: Finsupp.erase_update_eq_erase
File: Mathlib/Data/Finsupp/Defs.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✝ : Zero M
f : α →₀ M
a : α
b : M
⊢ erase a (f.update a b) = erase a f
state_after: no goals
tactic: rw [erase_eq_update_zero, erase_eq_update_zero, update_idem]
Theorem: Mathlib.Tactic.Ring.mul_pf_right
File: Mathlib/Tactic/Ring/Basic.lean

Proof steps:
state_before: u✝ : Lean.Level
arg : Q(Type u✝)
sα✝ : Q(CommSemiring «$arg»)
u : Lean.Level
α : Q(Type u)
sα : Q(CommSemiring «$α»)
R : Type u_1
inst✝ : CommSemiring R
a a' a₁ a₂ a₃ b b' b₁✝ b₂✝ b₃ c c₁ c₂ b₁ : R
b₂ : ℕ
x✝ : a * b₃ = c
⊢ a * (b₁ ^ b₂ * b₃) = b₁ ^ b₂ * c
state_after: u✝ : Lean.Level
arg : Q(Type u✝)
sα✝ : Q(CommSemiring «$arg»)
u : Lean.Level
α : Q(Type u)
sα : Q(CommSemiring «$α»)
R : Type u_1
inst✝ : CommSemiring R
a a' a₁ a₂ a₃ b b' b₁✝ b₂✝ b₃ c₁ c₂ b₁ : R
b₂ : ℕ
⊢ a * (b₁ ^ b₂ * b₃) = b₁ ^ b₂ * (a * b₃)
tactic: subst_vars
state_before: u✝ : Lean.Level
arg : Q(Type u✝)
sα✝ : Q(CommSemiring «$arg»)
u : Lean.Level
α : Q(Type u)
sα : Q(CommSemiring «$α»)
R : Type u_1
inst✝ : CommSemiring R
a a' a₁ a₂ a₃ b b' b₁✝ b₂✝ b₃ c₁ c₂ b₁ : R
b₂ : ℕ
⊢ a * (b₁ ^ b₂ * b₃) = b₁ ^ b₂ * (a * b₃)
state_after: no goals
tactic: rw [mul_left_comm]
Theorem: LieModule.traceForm_eq_zero_of_isNilpotent
File: Mathlib/Algebra/Lie/TraceForm.lean

Proof steps:
state_before: R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
⊢ traceForm R L M = 0
state_after: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
x y : L
⊢ ((traceForm R L M) x) y = (0 x) y
tactic: ext x y
state_before: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
x y : L
⊢ ((traceForm R L M) x) y = (0 x) y
state_after: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
x y : L
⊢ _root_.IsNilpotent ((trace R M) (φ x ∘ₗ φ y))
tactic: simp only [traceForm_apply_apply, LinearMap.zero_apply, ← isNilpotent_iff_eq_zero]
state_before: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
x y : L
⊢ _root_.IsNilpotent ((trace R M) (φ x ∘ₗ φ y))
state_after: case H.hf
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
x y : L
⊢ _root_.IsNilpotent (φ x ∘ₗ φ y)
tactic: apply LinearMap.isNilpotent_trace_of_isNilpotent
state_before: case H.hf
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
x y : L
⊢ _root_.IsNilpotent (φ x ∘ₗ φ y)
state_after: no goals
tactic: exact isNilpotent_toEnd_of_isNilpotent₂ R L M x y
Theorem: Nat.prime_of_mem_primeFactorsList
File: Mathlib/Data/Nat/Factors.lean

Proof steps:
state_before: n : ℕ
⊢ ∀ {p : ℕ}, p ∈ n.primeFactorsList → Prime p
state_after: no goals
tactic: match n with
  | 0 => simp
  | 1 => simp
  | k + 2 =>
      intro p h
      let m := minFac (k + 2)
      have : (k + 2) / m < (k + 2) := factors_lemma
      have h₁ : p = m ∨ p ∈ primeFactorsList ((k + 2) / m) :=
        List.mem_cons.1 (by rwa [primeFactorsList] at h)
      exact Or.casesOn h₁ (fun h₂ => h₂.symm ▸ minFac_prime (by simp)) prime_of_mem_primeFactorsList
Theorem: List.isRotated_cyclicPermutations_iff
File: Mathlib/Data/List/Rotate.lean

Proof steps:
state_before: α : Type u
l✝ l'✝ l l' : List α
⊢ l.cyclicPermutations ~r l'.cyclicPermutations ↔ l ~r l'
state_after: no goals
tactic: simp only [IsRotated, ← cyclicPermutations_rotate, cyclicPermutations_inj]
Theorem: MeasureTheory.Measure.toENNRealVectorMeasure_ennrealToMeasure
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ : VectorMeasure α ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ↑μ.ennrealToMeasure.toENNRealVectorMeasure s = ↑μ s
state_after: no goals
tactic: rw [toENNRealVectorMeasure_apply_measurable hs, ennrealToMeasure_apply hs]
Theorem: AffineIsometryEquiv.dist_pointReflection_self'
File: Mathlib/Analysis/NormedSpace/AffineIsometry.lean

Proof steps:
state_before: 𝕜 : Type u_1
V : Type u_2
V₁ : Type u_3
V₁' : Type u_4
V₂ : Type u_5
V₃ : Type u_6
V₄ : Type u_7
P₁ : Type u_8
P₁' : Type u_9
P : Type u_10
P₂ : Type u_11
P₃ : Type u_12
P₄ : Type u_13
inst✝²⁵ : NormedField 𝕜
inst✝²⁴ : SeminormedAddCommGroup V
inst✝²³ : NormedSpace 𝕜 V
inst✝²² : PseudoMetricSpace P
inst✝²¹ : NormedAddTorsor V P
inst✝²⁰ : SeminormedAddCommGroup V₁
inst✝¹⁹ : NormedSpace 𝕜 V₁
inst✝¹⁸ : PseudoMetricSpace P₁
inst✝¹⁷ : NormedAddTorsor V₁ P₁
inst✝¹⁶ : SeminormedAddCommGroup V₁'
inst✝¹⁵ : NormedSpace 𝕜 V₁'
inst✝¹⁴ : MetricSpace P₁'
inst✝¹³ : NormedAddTorsor V₁' P₁'
inst✝¹² : SeminormedAddCommGroup V₂
inst✝¹¹ : NormedSpace 𝕜 V₂
inst✝¹⁰ : PseudoMetricSpace P₂
inst✝⁹ : NormedAddTorsor V₂ P₂
inst✝⁸ : SeminormedAddCommGroup V₃
inst✝⁷ : NormedSpace 𝕜 V₃
inst✝⁶ : PseudoMetricSpace P₃
inst✝⁵ : NormedAddTorsor V₃ P₃
inst✝⁴ : SeminormedAddCommGroup V₄
inst✝³ : NormedSpace 𝕜 V₄
inst✝² : PseudoMetricSpace P₄
inst✝¹ : NormedAddTorsor V₄ P₄
e : P ≃ᵃⁱ[𝕜] P₂
α : Type u_14
inst✝ : TopologicalSpace α
x y : P
⊢ dist ((pointReflection 𝕜 x) y) y = ‖2 • (x -ᵥ y)‖
state_after: no goals
tactic: rw [pointReflection_apply, dist_eq_norm_vsub V, vadd_vsub_assoc, two_nsmul]
Theorem: CategoryTheory.ShortComplex.leftRightHomologyComparison'_compatibility
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁✝ : S₁.HomologyData
h₂✝ : S₂.HomologyData
h₁ h₁' : S.LeftHomologyData
h₂ h₂' : S.RightHomologyData
⊢ leftRightHomologyComparison' h₁ h₂ =
    leftHomologyMap' (𝟙 S) h₁ h₁' ≫ leftRightHomologyComparison' h₁' h₂' ≫ rightHomologyMap' (𝟙 S) h₂' h₂
state_after: no goals
tactic: rw [leftRightHomologyComparison'_naturality_assoc (𝟙 S) h₁ h₂ h₁' h₂',
    ← rightHomologyMap'_comp, comp_id, rightHomologyMap'_id, comp_id]
Theorem: groupCohomology.oneCocycles_map_mul_of_isTrivial
File: Mathlib/RepresentationTheory/GroupCohomology/LowDegree.lean

Proof steps:
state_before: k G : Type u
inst✝² : CommRing k
inst✝¹ : Group G
A : Rep k G
inst✝ : A.IsTrivial
f : ↥(oneCocycles A)
g h : G
⊢ ↑f (g * h) = ↑f g + ↑f h
state_after: no goals
tactic: rw [(mem_oneCocycles_iff f.1).1 f.2, apply_eq_self A.ρ g (f.1 h), add_comm]
Theorem: Subgroup.pi_bot
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁶ : Group G
inst✝⁵ : Group G'
inst✝⁴ : Group G''
A : Type u_4
inst✝³ : AddGroup A
H K : Subgroup G
k : Set G
N : Type u_5
inst✝² : Group N
P : Type u_6
inst✝¹ : Group P
η : Type u_7
f : η → Type u_8
inst✝ : (i : η) → Group (f i)
p : (i : η) → f i
hp : p ∈ pi univ fun i => ⊥
⊢ p = 1
state_after: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁶ : Group G
inst✝⁵ : Group G'
inst✝⁴ : Group G''
A : Type u_4
inst✝³ : AddGroup A
H K : Subgroup G
k : Set G
N : Type u_5
inst✝² : Group N
P : Type u_6
inst✝¹ : Group P
η : Type u_7
f : η → Type u_8
inst✝ : (i : η) → Group (f i)
p : (i : η) → f i
hp : ∀ i ∈ univ, p i = 1
⊢ p = 1
tactic: simp only [mem_pi, mem_bot] at *
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁶ : Group G
inst✝⁵ : Group G'
inst✝⁴ : Group G''
A : Type u_4
inst✝³ : AddGroup A
H K : Subgroup G
k : Set G
N : Type u_5
inst✝² : Group N
P : Type u_6
inst✝¹ : Group P
η : Type u_7
f : η → Type u_8
inst✝ : (i : η) → Group (f i)
p : (i : η) → f i
hp : ∀ i ∈ univ, p i = 1
⊢ p = 1
state_after: case h
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁶ : Group G
inst✝⁵ : Group G'
inst✝⁴ : Group G''
A : Type u_4
inst✝³ : AddGroup A
H K : Subgroup G
k : Set G
N : Type u_5
inst✝² : Group N
P : Type u_6
inst✝¹ : Group P
η : Type u_7
f : η → Type u_8
inst✝ : (i : η) → Group (f i)
p : (i : η) → f i
hp : ∀ i ∈ univ, p i = 1
j : η
⊢ p j = 1 j
tactic: ext j
state_before: case h
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁶ : Group G
inst✝⁵ : Group G'
inst✝⁴ : Group G''
A : Type u_4
inst✝³ : AddGroup A
H K : Subgroup G
k : Set G
N : Type u_5
inst✝² : Group N
P : Type u_6
inst✝¹ : Group P
η : Type u_7
f : η → Type u_8
inst✝ : (i : η) → Group (f i)
p : (i : η) → f i
hp : ∀ i ∈ univ, p i = 1
j : η
⊢ p j = 1 j
state_after: no goals
tactic: exact hp j trivial
Theorem: Mathlib.Meta.NormNum.isInt_zpow_neg
File: Mathlib/Tactic/NormNum/Pow.lean

Proof steps:
state_before: a✝ b✝ c : ℕ
α : Type u_1
inst✝ : DivisionRing α
a : α
b : ℤ
nb ne : ℕ
pb : IsInt b (Int.negOfNat nb)
pe' : IsInt (a ^ nb)⁻¹ (Int.negOfNat ne)
⊢ IsInt (a ^ b) (Int.negOfNat ne)
state_after: no goals
tactic: rwa [pb.out, Int.cast_negOfNat, zpow_neg, zpow_natCast]
Theorem: AddMonoidAlgebra.divOf_zero
File: Mathlib/Algebra/MonoidAlgebra/Division.lean

Proof steps:
state_before: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
⊢ x /ᵒᶠ 0 = x
state_after: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
x✝ : G
⊢ (x /ᵒᶠ 0) x✝ = x x✝
tactic: refine Finsupp.ext fun _ => ?_
state_before: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
x✝ : G
⊢ (x /ᵒᶠ 0) x✝ = x x✝
state_after: no goals
tactic: simp only [AddMonoidAlgebra.divOf_apply, zero_add]
Theorem: CategoryTheory.SingleFunctors.isoMk_hom_hom
File: Mathlib/CategoryTheory/Shift/SingleFunctors.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
E : Type u_3
E' : Type u_4
inst✝⁷ : Category.{?u.41001, u_1} C
inst✝⁶ : Category.{?u.41005, u_2} D
inst✝⁵ : Category.{?u.41009, u_3} E
inst✝⁴ : Category.{?u.41013, u_4} E'
A : Type u_5
inst✝³ : AddMonoid A
inst✝² : HasShift D A
inst✝¹ : HasShift E A
inst✝ : HasShift E' A
F G H : SingleFunctors C D A
iso : (a : A) → F.functor a ≅ G.functor a
comm :
  ∀ (n a a' : A) (ha' : n + a = a'),
    (F.shiftIso n a a' ha').hom ≫ (iso a).hom =
      whiskerRight (iso a').hom (shiftFunctor D n) ≫ (G.shiftIso n a a' ha').hom
n a a' : A
ha' : n + a = a'
⊢ (G.shiftIso n a a' ha').hom ≫ (fun a => (iso a).inv) a =
    whiskerRight ((fun a => (iso a).inv) a') (shiftFunctor D n) ≫ (F.shiftIso n a a' ha').hom
state_after: C : Type u_1
D : Type u_2
E : Type u_3
E' : Type u_4
inst✝⁷ : Category.{?u.41001, u_1} C
inst✝⁶ : Category.{?u.41005, u_2} D
inst✝⁵ : Category.{?u.41009, u_3} E
inst✝⁴ : Category.{?u.41013, u_4} E'
A : Type u_5
inst✝³ : AddMonoid A
inst✝² : HasShift D A
inst✝¹ : HasShift E A
inst✝ : HasShift E' A
F G H : SingleFunctors C D A
iso : (a : A) → F.functor a ≅ G.functor a
comm :
  ∀ (n a a' : A) (ha' : n + a = a'),
    (F.shiftIso n a a' ha').hom ≫ (iso a).hom =
      whiskerRight (iso a').hom (shiftFunctor D n) ≫ (G.shiftIso n a a' ha').hom
n a a' : A
ha' : n + a = a'
⊢ (G.shiftIso n a a' ha').hom ≫ (iso a).inv = whiskerRight (iso a').inv (shiftFunctor D n) ≫ (F.shiftIso n a a' ha').hom
tactic: dsimp only
state_before: C : Type u_1
D : Type u_2
E : Type u_3
E' : Type u_4
inst✝⁷ : Category.{?u.41001, u_1} C
inst✝⁶ : Category.{?u.41005, u_2} D
inst✝⁵ : Category.{?u.41009, u_3} E
inst✝⁴ : Category.{?u.41013, u_4} E'
A : Type u_5
inst✝³ : AddMonoid A
inst✝² : HasShift D A
inst✝¹ : HasShift E A
inst✝ : HasShift E' A
F G H : SingleFunctors C D A
iso : (a : A) → F.functor a ≅ G.functor a
comm :
  ∀ (n a a' : A) (ha' : n + a = a'),
    (F.shiftIso n a a' ha').hom ≫ (iso a).hom =
      whiskerRight (iso a').hom (shiftFunctor D n) ≫ (G.shiftIso n a a' ha').hom
n a a' : A
ha' : n + a = a'
⊢ (G.shiftIso n a a' ha').hom ≫ (iso a).inv = whiskerRight (iso a').inv (shiftFunctor D n) ≫ (F.shiftIso n a a' ha').hom
state_after: no goals
tactic: rw [← cancel_mono (iso a).hom, assoc, assoc, Iso.inv_hom_id, comp_id, comm,
          ← whiskerRight_comp_assoc, Iso.inv_hom_id, whiskerRight_id', id_comp]
Theorem: Matroid.Indep.of_restriction
File: Mathlib/Data/Matroid/Restrict.lean

Proof steps:
state_before: α : Type u_1
M : Matroid α
R I J X Y : Set α
N : Matroid α
hI : N.Indep I
hNM : N ≤r M
⊢ M.Indep I
state_after: case intro.intro
α : Type u_1
M : Matroid α
R✝ I J X Y R : Set α
hI : (M ↾ R).Indep I
⊢ M.Indep I
tactic: obtain ⟨R, -, rfl⟩ := hNM
state_before: case intro.intro
α : Type u_1
M : Matroid α
R✝ I J X Y R : Set α
hI : (M ↾ R).Indep I
⊢ M.Indep I
state_after: no goals
tactic: exact hI.of_restrict
Theorem: Set.Countable.substructure_closure
File: Mathlib/ModelTheory/Substructures.lean

Proof steps:
state_before: 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
S : L.Substructure M
s : Set M
inst✝ : Countable ((l : ℕ) × L.Functions l)
h : s.Countable
⊢ Countable ↥((closure L).toFun s)
state_after: 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
S : L.Substructure M
s : Set M
inst✝ : Countable ((l : ℕ) × L.Functions l)
h : s.Countable
this : Countable ↑s
⊢ Countable ↥((closure L).toFun s)
tactic: haveI : Countable s := h.to_subtype
state_before: 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
S : L.Substructure M
s : Set M
inst✝ : Countable ((l : ℕ) × L.Functions l)
h : s.Countable
this : Countable ↑s
⊢ Countable ↥((closure L).toFun s)
state_after: 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
S : L.Substructure M
s : Set M
inst✝ : Countable ((l : ℕ) × L.Functions l)
h : s.Countable
this : Countable ↑s
⊢ lift.{?u.25480, w} #↥((closure L).toFun s) ≤ ℵ₀
tactic: rw [← mk_le_aleph0_iff, ← lift_le_aleph0]
state_before: 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
S : L.Substructure M
s : Set M
inst✝ : Countable ((l : ℕ) × L.Functions l)
h : s.Countable
this : Countable ↑s
⊢ lift.{?u.25480, w} #↥((closure L).toFun s) ≤ ℵ₀
state_after: no goals
tactic: exact lift_card_closure_le_card_term.trans mk_le_aleph0
Theorem: Nat.strong_decreasing_induction
File: Mathlib/Order/Interval/Finset/Nat.lean

Proof steps:
state_before: a b c : ℕ
P : ℕ → Prop
h : ∀ (n : ℕ), P (n + 1) → P n
base : ∃ n, ∀ m > n, P m
step : ∀ (n : ℕ), (∀ m > n, P m) → P n
n : ℕ
⊢ P n
state_after: a b c : ℕ
P : ℕ → Prop
h : ∀ (n : ℕ), P (n + 1) → P n
base : ∃ n, ∀ m > n, P m
step : ∀ (n : ℕ), (∀ m > n, P m) → P n
n : ℕ
⊢ ∀ (n : ℕ), (fun n => ∀ m ≥ n, P m) (n + 1) → (fun n => ∀ m ≥ n, P m) n

a b c : ℕ
P : ℕ → Prop
h : ∀ (n : ℕ), P (n + 1) → P n
base : ∃ n, ∀ m > n, P m
step : ∀ (n : ℕ), (∀ m > n, P m) → P n
n : ℕ
⊢ ¬BddAbove {x | (fun n => ∀ m ≥ n, P m) x}
tactic: apply Nat.decreasing_induction_of_not_bddAbove (P := fun n ↦ ∀ m ≥ n, P m) _ _ n n le_rfl
Theorem: Metric.dist_le_infDist_add_diam
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
hs : Bornology.IsBounded s
hy : y ∈ s
⊢ dist x y ≤ infDist x s + diam s
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
hs : Bornology.IsBounded s
hy : y ∈ s
⊢ (edist x y).toReal ≤ (infEdist x s).toReal + (EMetric.diam s).toReal
tactic: rw [infDist, diam, dist_edist]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
hs : Bornology.IsBounded s
hy : y ∈ s
⊢ (edist x y).toReal ≤ (infEdist x s).toReal + (EMetric.diam s).toReal
state_after: no goals
tactic: exact toReal_le_add (edist_le_infEdist_add_ediam hy) (infEdist_ne_top ⟨y, hy⟩) hs.ediam_ne_top
Theorem: Real.hasDerivAt_fourierChar
File: Mathlib/Analysis/Fourier/FourierTransformDeriv.lean

Proof steps:
state_before: x : ℝ
⊢ HasDerivAt (fun x => ↑(𝐞 x)) (2 * ↑π * I * ↑(𝐞 x)) x
state_after: x : ℝ
h1 : ∀ (y : ℝ), ↑(𝐞 y) = (fourier 1) ↑y
⊢ HasDerivAt (fun x => ↑(𝐞 x)) (2 * ↑π * I * ↑(𝐞 x)) x
tactic: have h1 (y : ℝ) : 𝐞 y = fourier 1 (y : UnitAddCircle) := by
    rw [fourierChar_apply, fourier_coe_apply]
    push_cast
    ring_nf
state_before: x : ℝ
h1 : ∀ (y : ℝ), ↑(𝐞 y) = (fourier 1) ↑y
⊢ HasDerivAt (fun x => ↑(𝐞 x)) (2 * ↑π * I * ↑(𝐞 x)) x
state_after: no goals
tactic: simpa only [h1, Int.cast_one, ofReal_one, div_one, mul_one] using hasDerivAt_fourier 1 1 x