ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Algebra.isIntegral_trace
File: Mathlib/RingTheory/Trace/Basic.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing T
inst✝¹¹ : Algebra R S
inst✝¹⁰ : Algebra R T
K : Type u_4
L : Type u_5
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra K L
ι κ : Type w
inst✝⁶ : Fintype ι
F : Type u_6
inst✝⁵ : Field F
inst✝⁴ : Algebra R L
inst✝³ : Algebra L F
inst✝² : Algebra R F
inst✝¹ : IsScalarTower R L F
inst✝ : FiniteDimensional L F
x : F
hx : IsIntegral R x
⊢ IsIntegral R ((trace L F) x)
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing T
inst✝¹¹ : Algebra R S
inst✝¹⁰ : Algebra R T
K : Type u_4
L : Type u_5
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra K L
ι κ : Type w
inst✝⁶ : Fintype ι
F : Type u_6
inst✝⁵ : Field F
inst✝⁴ : Algebra R L
inst✝³ : Algebra L F
inst✝² : Algebra R F
inst✝¹ : IsScalarTower R L F
inst✝ : FiniteDimensional L F
x : F
hx : IsIntegral R x
hx' : IsIntegral L x
⊢ IsIntegral R ((trace L F) x)
tactic: have hx' : IsIntegral L x := hx.tower_top
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing T
inst✝¹¹ : Algebra R S
inst✝¹⁰ : Algebra R T
K : Type u_4
L : Type u_5
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra K L
ι κ : Type w
inst✝⁶ : Fintype ι
F : Type u_6
inst✝⁵ : Field F
inst✝⁴ : Algebra R L
inst✝³ : Algebra L F
inst✝² : Algebra R F
inst✝¹ : IsScalarTower R L F
inst✝ : FiniteDimensional L F
x : F
hx : IsIntegral R x
hx' : IsIntegral L x
⊢ IsIntegral R ((trace L F) x)
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing T
inst✝¹¹ : Algebra R S
inst✝¹⁰ : Algebra R T
K : Type u_4
L : Type u_5
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra K L
ι κ : Type w
inst✝⁶ : Fintype ι
F : Type u_6
inst✝⁵ : Field F
inst✝⁴ : Algebra R L
inst✝³ : Algebra L F
inst✝² : Algebra R F
inst✝¹ : IsScalarTower R L F
inst✝ : FiniteDimensional L F
x : F
hx : IsIntegral R x
hx' : IsIntegral L x
⊢ IsIntegral R (finrank (↥L⟮x⟯) F • ((minpoly L x).aroots (AlgebraicClosure F)).sum)

R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁴ : CommRing R
inst✝¹³ : CommRing S
inst✝¹² : CommRing T
inst✝¹¹ : Algebra R S
inst✝¹⁰ : Algebra R T
K : Type u_4
L : Type u_5
inst✝⁹ : Field K
inst✝⁸ : Field L
inst✝⁷ : Algebra K L
ι κ : Type w
inst✝⁶ : Fintype ι
F : Type u_6
inst✝⁵ : Field F
inst✝⁴ : Algebra R L
inst✝³ : Algebra L F
inst✝² : Algebra R F
inst✝¹ : IsScalarTower R L F
inst✝ : FiniteDimensional L F
x : F
hx : IsIntegral R x
hx' : IsIntegral L x
⊢ Splits (algebraMap L (AlgebraicClosure F)) (minpoly L x)
tactic: rw [← isIntegral_algebraMap_iff (algebraMap L (AlgebraicClosure F)).injective, trace_eq_sum_roots]
Theorem: Pi.basisFun_det
File: Mathlib/LinearAlgebra/Determinant.lean

Proof steps:
state_before: R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e : Basis ι R M
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M
⊢ (basisFun R ι).det = detRowAlternating
state_after: case H
R : Type u_1
inst✝⁸ : CommRing R
M✝ : Type u_2
inst✝⁷ : AddCommGroup M✝
inst✝⁶ : Module R M✝
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e : Basis ι R M✝
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M✝
M : ι → ι → R
⊢ (basisFun R ι).det M = detRowAlternating M
tactic: ext M
state_before: case H
R : Type u_1
inst✝⁸ : CommRing R
M✝ : Type u_2
inst✝⁷ : AddCommGroup M✝
inst✝⁶ : Module R M✝
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e : Basis ι R M✝
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M✝
M : ι → ι → R
⊢ (basisFun R ι).det M = detRowAlternating M
state_after: no goals
tactic: rw [Basis.det_apply, Basis.coePiBasisFun.toMatrix_eq_transpose, det_transpose]
Theorem: Polynomial.leadingCoeff_neg
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✝ : Ring R
p : R[X]
⊢ (-p).leadingCoeff = -p.leadingCoeff
state_after: no goals
tactic: rw [leadingCoeff, leadingCoeff, natDegree_neg, coeff_neg]
Theorem: Associates.dvd_count_of_dvd_count_mul
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

Proof steps:
state_before: α : Type u_1
inst✝⁴ : CancelCommMonoidWithZero α
inst✝³ : UniqueFactorizationMonoid α
inst✝² : DecidableEq (Associates α)
inst✝¹ : (p : Associates α) → Decidable (Irreducible p)
inst✝ : DecidableEq (Associates α)
a b : Associates α
hb : b ≠ 0
p : Associates α
hp : Irreducible p
hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d
k : ℕ
habk : k ∣ p.count (a * b).factors
⊢ k ∣ p.count a.factors
state_after: case pos
α : Type u_1
inst✝⁴ : CancelCommMonoidWithZero α
inst✝³ : UniqueFactorizationMonoid α
inst✝² : DecidableEq (Associates α)
inst✝¹ : (p : Associates α) → Decidable (Irreducible p)
inst✝ : DecidableEq (Associates α)
a b : Associates α
hb : b ≠ 0
p : Associates α
hp : Irreducible p
hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d
k : ℕ
habk : k ∣ p.count (a * b).factors
ha : a = 0
⊢ k ∣ p.count a.factors

case neg
α : Type u_1
inst✝⁴ : CancelCommMonoidWithZero α
inst✝³ : UniqueFactorizationMonoid α
inst✝² : DecidableEq (Associates α)
inst✝¹ : (p : Associates α) → Decidable (Irreducible p)
inst✝ : DecidableEq (Associates α)
a b : Associates α
hb : b ≠ 0
p : Associates α
hp : Irreducible p
hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d
k : ℕ
habk : k ∣ p.count (a * b).factors
ha : ¬a = 0
⊢ k ∣ p.count a.factors
tactic: by_cases ha : a = 0
state_before: case neg
α : Type u_1
inst✝⁴ : CancelCommMonoidWithZero α
inst✝³ : UniqueFactorizationMonoid α
inst✝² : DecidableEq (Associates α)
inst✝¹ : (p : Associates α) → Decidable (Irreducible p)
inst✝ : DecidableEq (Associates α)
a b : Associates α
hb : b ≠ 0
p : Associates α
hp : Irreducible p
hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d
k : ℕ
habk : k ∣ p.count (a * b).factors
ha : ¬a = 0
⊢ k ∣ p.count a.factors
state_after: case neg.inl
α : Type u_1
inst✝⁴ : CancelCommMonoidWithZero α
inst✝³ : UniqueFactorizationMonoid α
inst✝² : DecidableEq (Associates α)
inst✝¹ : (p : Associates α) → Decidable (Irreducible p)
inst✝ : DecidableEq (Associates α)
a b : Associates α
hb : b ≠ 0
p : Associates α
hp : Irreducible p
hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d
k : ℕ
habk : k ∣ p.count (a * b).factors
ha : ¬a = 0
hz : p.count a.factors = 0
⊢ k ∣ p.count a.factors

case neg.inr
α : Type u_1
inst✝⁴ : CancelCommMonoidWithZero α
inst✝³ : UniqueFactorizationMonoid α
inst✝² : DecidableEq (Associates α)
inst✝¹ : (p : Associates α) → Decidable (Irreducible p)
inst✝ : DecidableEq (Associates α)
a b : Associates α
hb : b ≠ 0
p : Associates α
hp : Irreducible p
hab : ∀ (d : Associates α), d ∣ a → d ∣ b → ¬Prime d
k : ℕ
habk : k ∣ p.count (a * b).factors
ha : ¬a = 0
h : p.count b.factors = 0
⊢ k ∣ p.count a.factors
tactic: cases' count_of_coprime ha hb hab hp with hz h
Theorem: List.count_erase_self
File: .lake/packages/batteries/Batteries/Data/List/Count.lean

Proof steps:
state_before: α : Type u_1
inst✝ : DecidableEq α
a : α
l : List α
⊢ count a (l.erase a) = count a l - 1
state_after: no goals
tactic: rw [count_erase, if_pos rfl]
Theorem: symmDiff_eq_sup_sdiff_inf
File: Mathlib/Order/SymmDiff.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
⊢ a ∆ b = (a ⊔ b) \ (a ⊓ b)
state_after: no goals
tactic: simp [sup_sdiff, symmDiff]
Theorem: toMatrix_rotation
File: Mathlib/Analysis/Complex/Isometry.lean

Proof steps:
state_before: a : ↥circle
⊢ (↑a).re ^ 2 + (↑a).im ^ 2 ≠ 0
state_after: no goals
tactic: simp [pow_two, ← normSq_apply]
state_before: a : ↥circle
⊢ (LinearMap.toMatrix basisOneI basisOneI) ↑(rotation a).toLinearEquiv =
    ↑(Matrix.planeConformalMatrix (↑a).re (↑a).im ⋯)
state_after: case a
a : ↥circle
i j : Fin 2
⊢ (LinearMap.toMatrix basisOneI basisOneI) (↑(rotation a).toLinearEquiv) i j =
    ↑(Matrix.planeConformalMatrix (↑a).re (↑a).im ⋯) i j
tactic: ext i j
state_before: case a
a : ↥circle
i j : Fin 2
⊢ (LinearMap.toMatrix basisOneI basisOneI) (↑(rotation a).toLinearEquiv) i j =
    ↑(Matrix.planeConformalMatrix (↑a).re (↑a).im ⋯) i j
state_after: case a
a : ↥circle
i j : Fin 2
⊢ ![(↑a).re * (![1, I] j).re - (↑a).im * (![1, I] j).im, (↑a).re * (![1, I] j).im + (↑a).im * (![1, I] j).re] i =
    Matrix.vecCons (![(↑a).re, -(↑a).im] j) (fun i => ![(↑a).im, (↑a).re] j) i
tactic: simp only [LinearMap.toMatrix_apply, coe_basisOneI, LinearEquiv.coe_coe,
    LinearIsometryEquiv.coe_toLinearEquiv, rotation_apply, coe_basisOneI_repr, mul_re, mul_im,
    Matrix.val_planeConformalMatrix, Matrix.of_apply, Matrix.cons_val', Matrix.empty_val',
    Matrix.cons_val_fin_one]
state_before: case a
a : ↥circle
i j : Fin 2
⊢ ![(↑a).re * (![1, I] j).re - (↑a).im * (![1, I] j).im, (↑a).re * (![1, I] j).im + (↑a).im * (![1, I] j).re] i =
    Matrix.vecCons (![(↑a).re, -(↑a).im] j) (fun i => ![(↑a).im, (↑a).re] j) i
state_after: no goals
tactic: fin_cases i <;> fin_cases j <;> simp
Theorem: CategoryTheory.IsIso.of_mono_retraction'
File: Mathlib/CategoryTheory/EpiMono.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
f : X ⟶ Y
hf : SplitMono f
inst✝ : Mono hf.retraction
⊢ f ≫ hf.retraction = 𝟙 X
state_after: no goals
tactic: simp
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
f : X ⟶ Y
hf : SplitMono f
inst✝ : Mono hf.retraction
⊢ (hf.retraction ≫ f) ≫ hf.retraction = hf.retraction
state_after: no goals
tactic: simp
Theorem: CategoryTheory.DifferentialObject.isoApp_inv
File: Mathlib/CategoryTheory/DifferentialObject.lean

Proof steps:
state_before: S : Type u_1
inst✝⁴ : AddMonoidWithOne S
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
inst✝¹ : HasShift C S
inst✝ : (shiftFunctor C 1).PreservesZeroMorphisms
X Y : DifferentialObject S C
f : X ≅ Y
⊢ f.hom.f ≫ f.inv.f = 𝟙 X.obj
state_after: no goals
tactic: rw [← comp_f, Iso.hom_inv_id, id_f]
state_before: S : Type u_1
inst✝⁴ : AddMonoidWithOne S
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
inst✝¹ : HasShift C S
inst✝ : (shiftFunctor C 1).PreservesZeroMorphisms
X Y : DifferentialObject S C
f : X ≅ Y
⊢ f.inv.f ≫ f.hom.f = 𝟙 Y.obj
state_after: no goals
tactic: rw [← comp_f, Iso.inv_hom_id, id_f]
Theorem: UniformEquiv.uniformInducing
File: Mathlib/Topology/UniformSpace/Equiv.lean

Proof steps:
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
inst✝³ : UniformSpace α
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
inst✝ : UniformSpace δ
h : α ≃ᵤ β
⊢ UniformInducing (⇑h.symm ∘ ⇑h)
state_after: no goals
tactic: simp only [symm_comp_self, uniformInducing_id]
Theorem: IsLUB.mul_left
File: Mathlib/Algebra/Order/Field/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
s : Set α
ha : 0 ≤ a
hs : IsLUB s b
⊢ IsLUB ((fun b => a * b) '' s) (a * b)
state_after: case inl
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
s : Set α
ha✝ : 0 ≤ a
hs : IsLUB s b
ha : 0 < a
⊢ IsLUB ((fun b => a * b) '' s) (a * b)

case inr
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
b c d : α
n : ℤ
s : Set α
hs : IsLUB s b
ha : 0 ≤ 0
⊢ IsLUB ((fun b => 0 * b) '' s) (0 * b)
tactic: rcases lt_or_eq_of_le ha with (ha | rfl)
Theorem: MeasureTheory.SimpleFunc.negPart_map_norm
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✝² : LinearOrder E
inst✝¹ : Zero E
inst✝ : MeasurableSpace α
f : α →ₛ ℝ
⊢ map norm f.negPart = f.negPart
state_after: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝² : LinearOrder E
inst✝¹ : Zero E
inst✝ : MeasurableSpace α
f : α →ₛ ℝ
⊢ map norm (-f).posPart = (-f).posPart
tactic: rw [negPart]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝² : LinearOrder E
inst✝¹ : Zero E
inst✝ : MeasurableSpace α
f : α →ₛ ℝ
⊢ map norm (-f).posPart = (-f).posPart
state_after: no goals
tactic: exact posPart_map_norm _
Theorem: ProjectiveSpectrum.le_iff_mem_closure
File: Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Topology.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
x y : ProjectiveSpectrum 𝒜
⊢ x ≤ y ↔ y ∈ closure {x}
state_after: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
x y : ProjectiveSpectrum 𝒜
⊢ x.asHomogeneousIdeal ≤ y.asHomogeneousIdeal ↔ ↑x.asHomogeneousIdeal ⊆ ↑y.asHomogeneousIdeal
tactic: rw [← as_ideal_le_as_ideal, ← zeroLocus_vanishingIdeal_eq_closure, mem_zeroLocus,
    vanishingIdeal_singleton]
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
x y : ProjectiveSpectrum 𝒜
⊢ x.asHomogeneousIdeal ≤ y.asHomogeneousIdeal ↔ ↑x.asHomogeneousIdeal ⊆ ↑y.asHomogeneousIdeal
state_after: no goals
tactic: simp only [as_ideal_le_as_ideal, coe_subset_coe]
Theorem: Fin.natCast_self
File: Mathlib/Data/Fin/Basic.lean

Proof steps:
state_before: n✝ m n : ℕ
inst✝ : NeZero n
⊢ ↑n = 0
state_after: case h
n✝ m n : ℕ
inst✝ : NeZero n
⊢ ↑↑n = ↑0
tactic: ext
state_before: case h
n✝ m n : ℕ
inst✝ : NeZero n
⊢ ↑↑n = ↑0
state_after: no goals
tactic: simp
Theorem: IsAdjoinRoot.lift_map
File: Mathlib/RingTheory/IsAdjoinRoot.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝³ : CommRing R
inst✝² : Ring S
f : R[X]
inst✝¹ : Algebra R S
T : Type u_1
inst✝ : CommRing T
i : R →+* T
x : T
hx : eval₂ i x f = 0
h : IsAdjoinRoot S f
z : R[X]
⊢ (lift i x hx h) (h.map z) = eval₂ i x z
state_after: R : Type u
S : Type v
inst✝³ : CommRing R
inst✝² : Ring S
f : R[X]
inst✝¹ : Algebra R S
T : Type u_1
inst✝ : CommRing T
i : R →+* T
x : T
hx : eval₂ i x f = 0
h : IsAdjoinRoot S f
z : R[X]
⊢ { toFun := fun z => eval₂ i x (h.repr z), map_one' := ⋯, map_mul' := ⋯ } (h.map z) = eval₂ i x z
tactic: rw [lift, RingHom.coe_mk]
state_before: R : Type u
S : Type v
inst✝³ : CommRing R
inst✝² : Ring S
f : R[X]
inst✝¹ : Algebra R S
T : Type u_1
inst✝ : CommRing T
i : R →+* T
x : T
hx : eval₂ i x f = 0
h : IsAdjoinRoot S f
z : R[X]
⊢ { toFun := fun z => eval₂ i x (h.repr z), map_one' := ⋯, map_mul' := ⋯ } (h.map z) = eval₂ i x z
state_after: R : Type u
S : Type v
inst✝³ : CommRing R
inst✝² : Ring S
f : R[X]
inst✝¹ : Algebra R S
T : Type u_1
inst✝ : CommRing T
i : R →+* T
x : T
hx : eval₂ i x f = 0
h : IsAdjoinRoot S f
z : R[X]
⊢ eval₂ i x (h.repr (h.map z)) = eval₂ i x z
tactic: dsimp
state_before: R : Type u
S : Type v
inst✝³ : CommRing R
inst✝² : Ring S
f : R[X]
inst✝¹ : Algebra R S
T : Type u_1
inst✝ : CommRing T
i : R →+* T
x : T
hx : eval₂ i x f = 0
h : IsAdjoinRoot S f
z : R[X]
⊢ eval₂ i x (h.repr (h.map z)) = eval₂ i x z
state_after: no goals
tactic: rw [h.eval₂_repr_eq_eval₂_of_map_eq hx _ _ rfl]
Theorem: MeasureTheory.measure_liminf_eq_zero
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : ℕ → Set α
h : ∑' (i : ℕ), μ (s i) ≠ ⊤
⊢ μ (liminf s atTop) = 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : ℕ → Set α
h : ∑' (i : ℕ), μ (s i) ≠ ⊤
⊢ μ (liminf s atTop) ≤ 0
tactic: rw [← le_zero_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : ℕ → Set α
h : ∑' (i : ℕ), μ (s i) ≠ ⊤
⊢ μ (liminf s atTop) ≤ 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : ℕ → Set α
h : ∑' (i : ℕ), μ (s i) ≠ ⊤
this : liminf s atTop ≤ limsup s atTop
⊢ μ (liminf s atTop) ≤ 0
tactic: have : liminf s atTop ≤ limsup s atTop := liminf_le_limsup
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : ℕ → Set α
h : ∑' (i : ℕ), μ (s i) ≠ ⊤
this : liminf s atTop ≤ limsup s atTop
⊢ μ (liminf s atTop) ≤ 0
state_after: no goals
tactic: exact (μ.mono this).trans (by simp [measure_limsup_eq_zero h])
Theorem: Set.bounded_lt_inter_le
File: Mathlib/Order/Bounded.lean

Proof steps:
state_before: α : Type u_1
r : α → α → Prop
s t : Set α
inst✝ : LinearOrder α
a : α
⊢ Bounded (fun x x_1 => x < x_1) (s ∩ {b | a ≤ b}) ↔ Bounded (fun x x_1 => x < x_1) s
state_after: case h.e'_1.h.e'_3.h.e'_4.h.e'_2.h.a
α : Type u_1
r : α → α → Prop
s t : Set α
inst✝ : LinearOrder α
a x✝ : α
⊢ a ≤ x✝ ↔ ¬x✝ < a
tactic: convert @bounded_lt_inter_not_lt _ s _ a
state_before: case h.e'_1.h.e'_3.h.e'_4.h.e'_2.h.a
α : Type u_1
r : α → α → Prop
s t : Set α
inst✝ : LinearOrder α
a x✝ : α
⊢ a ≤ x✝ ↔ ¬x✝ < a
state_after: no goals
tactic: exact not_lt.symm
Theorem: Set.mem_ite_empty_left
File: Mathlib/Data/Set/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s s₁ s₂ t✝ t₁ t₂ u : Set α
p : Prop
inst✝ : Decidable p
t : Set α
x : α
⊢ (∃ (_ : ¬p), x ∈ t) ↔ ¬p ∧ x ∈ t
state_after: no goals
tactic: simp
Theorem: Finset.mem_inv_smul_finset_iff
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 : β
⊢ b ∈ a⁻¹ • s ↔ a • b ∈ s
state_after: no goals
tactic: rw [← smul_mem_smul_finset_iff a, smul_inv_smul]
Theorem: Nat.Primrec'.pred
File: Mathlib/Computability/Primrec.lean

Proof steps:
state_before: v : Vector ℕ (Nat.succ 0)
⊢ Nat.rec 0 (fun y IH => (y ::ᵥ IH ::ᵥ v).head) v.head = v.head.pred
state_after: v : Vector ℕ (Nat.succ 0)
⊢ Nat.rec 0 (fun y IH => y) v.head = v.head - 1
tactic: simp
state_before: v : Vector ℕ (Nat.succ 0)
⊢ Nat.rec 0 (fun y IH => y) v.head = v.head - 1
state_after: no goals
tactic: cases v.head <;> rfl
Theorem: Cardinal.mk_embedding_eq_zero_iff_lt
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

Proof steps:
state_before: α β : Type u
β' : Type v
⊢ #(α ↪ β) = 0 ↔ #β < #α
state_after: no goals
tactic: rw [mk_embedding_eq_zero_iff_lift_lt, lift_lt]
Theorem: Irreducible.dvd_iff
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 y : α
hx : Irreducible x
⊢ y ∣ x ↔ IsUnit y ∨ x ~ᵤ y
state_after: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
⊢ y ∣ x → IsUnit y ∨ x ~ᵤ y

case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x y : α
hx : Irreducible x
⊢ IsUnit y ∨ x ~ᵤ y → y ∣ x
tactic: constructor
Theorem: IsometryEquiv.image_sphere
File: Mathlib/Topology/MetricSpace/Isometry.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
h✝ h : α ≃ᵢ β
x : α
r : ℝ
⊢ ⇑h '' Metric.sphere x r = Metric.sphere (h x) r
state_after: no goals
tactic: rw [← h.preimage_symm, h.symm.preimage_sphere, symm_symm]
Theorem: Finset.coe_erase
File: Mathlib/Data/Finset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a✝ b a : α
s : Finset α
x✝ : α
⊢ x✝ ≠ a ∧ x✝ ∈ s ↔ x✝ ∈ ↑s \ {a}
state_after: no goals
tactic: rw [and_comm, Set.mem_diff, Set.mem_singleton_iff, mem_coe]
Theorem: Subspace.finiteDimensional_quot_dualCoannihilator_iff
File: Mathlib/LinearAlgebra/Dual.lean

Proof steps:
state_before: K✝ : Type uK
inst✝⁷ : Field K✝
V₁ : Type uV₁
V₂ : Type uV₂
inst✝⁶ : AddCommGroup V₁
inst✝⁵ : Module K✝ V₁
inst✝⁴ : AddCommGroup V₂
inst✝³ : Module K✝ V₂
K : Type u_1
V : Type u_2
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
W : Submodule K (Dual K V)
x✝ : FiniteDimensional K ↥W
⊢ FiniteDimensional K (V ⧸ W.dualCoannihilator)
state_after: no goals
tactic: set_option maxSynthPendingDepth 2 in
      exact FiniteDimensional.of_injective _ W.quotDualCoannihilatorToDual_injective
Theorem: Stream'.Seq.append_nil
File: Mathlib/Data/Seq/Seq.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
⊢ s.append nil = s
state_after: case H
α : Type u
β : Type v
γ : Type w
s : Seq α
⊢ ∀ (s : Seq α), BisimO (fun s1 s2 => ∃ s, s1 = s.append nil ∧ s2 = s) (s.append nil).destruct s.destruct
tactic: apply coinduction2 s
state_before: case H
α : Type u
β : Type v
γ : Type w
s : Seq α
⊢ ∀ (s : Seq α), BisimO (fun s1 s2 => ∃ s, s1 = s.append nil ∧ s2 = s) (s.append nil).destruct s.destruct
state_after: case H
α : Type u
β : Type v
γ : Type w
s✝ s : Seq α
⊢ BisimO (fun s1 s2 => ∃ s, s1 = s.append nil ∧ s2 = s) (s.append nil).destruct s.destruct
tactic: intro s
state_before: case H
α : Type u
β : Type v
γ : Type w
s✝ s : Seq α
⊢ BisimO (fun s1 s2 => ∃ s, s1 = s.append nil ∧ s2 = s) (s.append nil).destruct s.destruct
state_after: α : Type u
β : Type v
γ : Type w
s✝ s : Seq α
⊢ BisimO (fun s1 s2 => ∃ s, s1 = s.append nil ∧ s2 = s) (nil.append nil).destruct nil.destruct

α : Type u
β : Type v
γ : Type w
s✝ s : Seq α
⊢ ∀ (x : α) (s : Seq α),
    BisimO (fun s1 s2 => ∃ s, s1 = s.append nil ∧ s2 = s) ((cons x s).append nil).destruct (cons x s).destruct
tactic: apply recOn s _ _
Theorem: Equiv.Perm.ofSubtype_subtypePerm
File: Mathlib/GroupTheory/Perm/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
p : α → Prop
f✝ : Perm α
inst✝ : DecidablePred p
a : α
f : Perm α
h₁ : ∀ (x : α), p x ↔ p (f x)
h₂ : ∀ (x : α), f x ≠ x → p x
x : α
⊢ (ofSubtype (f.subtypePerm h₁)) x = f x
state_after: case pos
α : Type u
β : Type v
p : α → Prop
f✝ : Perm α
inst✝ : DecidablePred p
a : α
f : Perm α
h₁ : ∀ (x : α), p x ↔ p (f x)
h₂ : ∀ (x : α), f x ≠ x → p x
x : α
hx : p x
⊢ (ofSubtype (f.subtypePerm h₁)) x = f x

case neg
α : Type u
β : Type v
p : α → Prop
f✝ : Perm α
inst✝ : DecidablePred p
a : α
f : Perm α
h₁ : ∀ (x : α), p x ↔ p (f x)
h₂ : ∀ (x : α), f x ≠ x → p x
x : α
hx : ¬p x
⊢ (ofSubtype (f.subtypePerm h₁)) x = f x
tactic: by_cases hx : p x
Theorem: primorial_le_4_pow
File: Mathlib/NumberTheory/Primorial.lean

Proof steps:
state_before: n : ℕ
⊢ n# ≤ 4 ^ n
state_after: case h
n : ℕ
ihn : ∀ m < n, m# ≤ 4 ^ m
⊢ n# ≤ 4 ^ n
tactic: induction' n using Nat.strong_induction_on with n ihn
state_before: case h
n : ℕ
ihn : ∀ m < n, m# ≤ 4 ^ m
⊢ n# ≤ 4 ^ n
state_after: case h.zero
ihn : ∀ m < 0, m# ≤ 4 ^ m
⊢ 0# ≤ 4 ^ 0

case h.succ
n : ℕ
ihn : ∀ m < n + 1, m# ≤ 4 ^ m
⊢ (n + 1)# ≤ 4 ^ (n + 1)
tactic: cases' n with n
state_before: case h.succ
n : ℕ
ihn : ∀ m < n + 1, m# ≤ 4 ^ m
⊢ (n + 1)# ≤ 4 ^ (n + 1)
state_after: case h.succ.inl.intro
m : ℕ
ihn : ∀ m_1 < m + m + 1, m_1# ≤ 4 ^ m_1
⊢ (m + m + 1)# ≤ 4 ^ (m + m + 1)

case h.succ.inr
n : ℕ
ihn : ∀ m < n + 1, m# ≤ 4 ^ m
ho : Odd n
⊢ (n + 1)# ≤ 4 ^ (n + 1)
tactic: rcases n.even_or_odd with (⟨m, rfl⟩ | ho)