ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: MeasureTheory.Measure.map_mono_of_aemeasurable
File: Mathlib/MeasureTheory/Measure/AEMeasurable.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
f✝ g : α → β
μ ν : Measure α
f : α → δ
h : μ ≤ ν
hf : AEMeasurable f ν
s : Set δ
hs : MeasurableSet s
⊢ (map f μ) s ≤ (map f ν) s
state_after: no goals
tactic: simpa [hf, hs, hf.mono_measure h] using h (f ⁻¹' s)
Theorem: ENNReal.iInf_mul
File: Mathlib/Data/ENNReal/Real.lean

Proof steps:
state_before: ι✝ : Sort u_1
f✝ g : ι✝ → ℝ≥0∞
a b c d : ℝ≥0∞
r p q : ℝ≥0
ι : Sort u_2
inst✝ : Nonempty ι
f : ι → ℝ≥0∞
x : ℝ≥0∞
h : x ≠ ⊤
⊢ iInf f * x = ⨅ i, f i * x
state_after: case pos
ι✝ : Sort u_1
f✝ g : ι✝ → ℝ≥0∞
a b c d : ℝ≥0∞
r p q : ℝ≥0
ι : Sort u_2
inst✝ : Nonempty ι
f : ι → ℝ≥0∞
x : ℝ≥0∞
h : x ≠ ⊤
h0 : x = 0
⊢ iInf f * x = ⨅ i, f i * x

case neg
ι✝ : Sort u_1
f✝ g : ι✝ → ℝ≥0∞
a b c d : ℝ≥0∞
r p q : ℝ≥0
ι : Sort u_2
inst✝ : Nonempty ι
f : ι → ℝ≥0∞
x : ℝ≥0∞
h : x ≠ ⊤
h0 : ¬x = 0
⊢ iInf f * x = ⨅ i, f i * x
tactic: by_cases h0 : x = 0
Theorem: unitSphereToUnits_injective
File: Mathlib/Analysis/Normed/Field/UnitBall.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝ : NormedDivisionRing 𝕜
x y : ↑(sphere 0 1)
h : (unitSphereToUnits 𝕜) x = (unitSphereToUnits 𝕜) y
⊢ ↑x = ↑y
state_after: no goals
tactic: convert congr_arg Units.val h
Theorem: ProbabilityTheory.Kernel.lintegral_compProd
File: Mathlib/Probability/Kernel/Composition.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (bc : β × γ), f bc ∂(κ ⊗ₖ η) a = ∫⁻ (b : β), ∫⁻ (c : γ), f (b, c) ∂η (a, b) ∂κ a
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → ℝ≥0∞
hf : Measurable f
g : β → γ → ℝ≥0∞ := Function.curry f
⊢ ∫⁻ (bc : β × γ), f bc ∂(κ ⊗ₖ η) a = ∫⁻ (b : β), ∫⁻ (c : γ), f (b, c) ∂η (a, b) ∂κ a
tactic: let g := Function.curry f
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → ℝ≥0∞
hf : Measurable f
g : β → γ → ℝ≥0∞ := Function.curry f
⊢ ∫⁻ (bc : β × γ), f bc ∂(κ ⊗ₖ η) a = ∫⁻ (b : β), ∫⁻ (c : γ), f (b, c) ∂η (a, b) ∂κ a
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → ℝ≥0∞
hf : Measurable f
g : β → γ → ℝ≥0∞ := Function.curry f
⊢ ∫⁻ (bc : β × γ), f bc ∂(κ ⊗ₖ η) a = ∫⁻ (b : β), ∫⁻ (c : γ), g b c ∂η (a, b) ∂κ a
tactic: change ∫⁻ bc, f bc ∂(κ ⊗ₖ η) a = ∫⁻ b, ∫⁻ c, g b c ∂η (a, b) ∂κ a
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → ℝ≥0∞
hf : Measurable f
g : β → γ → ℝ≥0∞ := Function.curry f
⊢ ∫⁻ (bc : β × γ), f bc ∂(κ ⊗ₖ η) a = ∫⁻ (b : β), ∫⁻ (c : γ), g b c ∂η (a, b) ∂κ a
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → ℝ≥0∞
hf : Measurable f
g : β → γ → ℝ≥0∞ := Function.curry f
⊢ ∫⁻ (bc : β × γ), f bc ∂(κ ⊗ₖ η) a = ∫⁻ (bc : β × γ), g bc.1 bc.2 ∂(κ ⊗ₖ η) a

case hf
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : Kernel α β
inst✝¹ : IsSFiniteKernel κ
η : Kernel (α × β) γ
inst✝ : IsSFiniteKernel η
a : α
f : β × γ → ℝ≥0∞
hf : Measurable f
g : β → γ → ℝ≥0∞ := Function.curry f
⊢ Measurable (Function.uncurry g)
tactic: rw [← lintegral_compProd']
Theorem: Batteries.HashMap.Imp.expand_size.go
File: .lake/packages/batteries/Batteries/Data/HashMap/WF.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
sz : Nat
inst✝ : Hashable α
buckets : Buckets α β
⊢ (expand sz buckets).buckets.size = buckets.size
state_after: α : Type u_1
β : Type u_2
sz : Nat
inst✝ : Hashable α
buckets : Buckets α β
⊢ Nat.sum (List.map (fun x => x.toList.length) buckets.val.data) + (Buckets.mk (buckets.val.size * 2) ⋯).size =
    buckets.size

case hs
α : Type u_1
β : Type u_2
sz : Nat
inst✝ : Hashable α
buckets : Buckets α β
⊢ ∀ (j : Nat), j < 0 → buckets.val.data[j]?.getD AssocList.nil = AssocList.nil
tactic: rw [expand, go]
state_before: α : Type u_1
β : Type u_2
sz : Nat
inst✝ : Hashable α
buckets : Buckets α β
i : Nat
source : Array (AssocList α β)
target : Buckets α β
hs : ∀ (j : Nat), j < i → source.data[j]?.getD AssocList.nil = AssocList.nil
⊢ (expand.go i source target).size = Nat.sum (List.map (fun x => x.toList.length) source.data) + target.size
state_after: α : Type u_1
β : Type u_2
sz : Nat
inst✝ : Hashable α
buckets : Buckets α β
i : Nat
source : Array (AssocList α β)
target : Buckets α β
hs : ∀ (j : Nat), j < i → source.data[j]?.getD AssocList.nil = AssocList.nil
⊢ (if h : i < source.size then
        let idx := ⟨i, h⟩;
        let es := source.get idx;
        let source := source.set idx AssocList.nil;
        let target := AssocList.foldl reinsertAux target es;
        expand.go (i + 1) source target
      else target).size =
    Nat.sum (List.map (fun x => x.toList.length) source.data) + target.size
tactic: unfold expand.go
state_before: α : Type u_1
β : Type u_2
sz : Nat
inst✝ : Hashable α
buckets : Buckets α β
i : Nat
source : Array (AssocList α β)
target : Buckets α β
hs : ∀ (j : Nat), j < i → source.data[j]?.getD AssocList.nil = AssocList.nil
⊢ (if h : i < source.size then
        let idx := ⟨i, h⟩;
        let es := source.get idx;
        let source := source.set idx AssocList.nil;
        let target := AssocList.foldl reinsertAux target es;
        expand.go (i + 1) source target
      else target).size =
    Nat.sum (List.map (fun x => x.toList.length) source.data) + target.size
state_after: case isTrue
α : Type u_1
β : Type u_2
sz : Nat
inst✝ : Hashable α
buckets : Buckets α β
i : Nat
source : Array (AssocList α β)
target : Buckets α β
hs : ∀ (j : Nat), j < i → source.data[j]?.getD AssocList.nil = AssocList.nil
h✝ : i < source.size
⊢ (let idx := ⟨i, h✝⟩;
      let es := source.get idx;
      let source := source.set idx AssocList.nil;
      let target := AssocList.foldl reinsertAux target es;
      expand.go (i + 1) source target).size =
    Nat.sum (List.map (fun x => x.toList.length) source.data) + target.size

case isFalse
α : Type u_1
β : Type u_2
sz : Nat
inst✝ : Hashable α
buckets : Buckets α β
i : Nat
source : Array (AssocList α β)
target : Buckets α β
hs : ∀ (j : Nat), j < i → source.data[j]?.getD AssocList.nil = AssocList.nil
h✝ : ¬i < source.size
⊢ target.size = Nat.sum (List.map (fun x => x.toList.length) source.data) + target.size
tactic: split
Theorem: Set.indicator_eq_one_iff_mem
File: Mathlib/Algebra/GroupWithZero/Indicator.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝¹ : MulZeroOneClass M₀
s t : Set ι
i : ι
inst✝ : Nontrivial M₀
⊢ s.indicator 1 i = 1 ↔ i ∈ s
state_after: no goals
tactic: classical simp [indicator_apply, imp_false]
Theorem: EuclideanSpace.ball_zero_eq
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
n : Type u_8
inst✝ : Fintype n
r : ℝ
hr : 0 ≤ r
⊢ Metric.ball 0 r = {x | ∑ i : n, x i ^ 2 < r ^ 2}
state_after: case h
ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
n : Type u_8
inst✝ : Fintype n
r : ℝ
hr : 0 ≤ r
x : EuclideanSpace ℝ n
⊢ x ∈ Metric.ball 0 r ↔ x ∈ {x | ∑ i : n, x i ^ 2 < r ^ 2}
tactic: ext x
state_before: case h
ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
n : Type u_8
inst✝ : Fintype n
r : ℝ
hr : 0 ≤ r
x : EuclideanSpace ℝ n
⊢ x ∈ Metric.ball 0 r ↔ x ∈ {x | ∑ i : n, x i ^ 2 < r ^ 2}
state_after: case h
ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
n : Type u_8
inst✝ : Fintype n
r : ℝ
hr : 0 ≤ r
x : EuclideanSpace ℝ n
this : 0 ≤ ∑ i : n, x i ^ 2
⊢ x ∈ Metric.ball 0 r ↔ x ∈ {x | ∑ i : n, x i ^ 2 < r ^ 2}
tactic: have : (0 : ℝ) ≤ ∑ i, x i ^ 2 := Finset.sum_nonneg fun _ _ => sq_nonneg _
state_before: case h
ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
n : Type u_8
inst✝ : Fintype n
r : ℝ
hr : 0 ≤ r
x : EuclideanSpace ℝ n
this : 0 ≤ ∑ i : n, x i ^ 2
⊢ x ∈ Metric.ball 0 r ↔ x ∈ {x | ∑ i : n, x i ^ 2 < r ^ 2}
state_after: no goals
tactic: simp_rw [mem_setOf, mem_ball_zero_iff, norm_eq, norm_eq_abs, sq_abs, sqrt_lt this hr]
Theorem: List.foldl_range_subset_of_range_subset
File: Mathlib/Data/List/Lemmas.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β → α
g : α → γ → α
hfg : (Set.range fun a c => f c a) ⊆ Set.range fun b c => g c b
a : α
⊢ Set.range (foldl f a) ⊆ Set.range (foldl g a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β → α
g : α → γ → α
hfg : (Set.range fun a c => f c a) ⊆ Set.range fun b c => g c b
a : α
⊢ (Set.range fun l => foldl f a l) ⊆ Set.range fun l => foldl g a l
tactic: change (Set.range fun l => _) ⊆ Set.range fun l => _
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β → α
g : α → γ → α
hfg : (Set.range fun a c => f c a) ⊆ Set.range fun b c => g c b
a : α
⊢ (Set.range fun l => foldl f a l) ⊆ Set.range fun l => foldl g a l
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β → α
g : α → γ → α
hfg : (Set.range fun a c => f c a) ⊆ Set.range fun b c => g c b
a : α
⊢ (Set.range fun l => foldr (fun z w => f w z) a l.reverse) ⊆ Set.range fun l => foldr (fun z w => g w z) a l.reverse
tactic: simp_rw [← foldr_reverse _ (fun z w => g w z), ← foldr_reverse _ (fun z w => f w z)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β → α
g : α → γ → α
hfg : (Set.range fun a c => f c a) ⊆ Set.range fun b c => g c b
a : α
⊢ (Set.range fun l => foldr (fun z w => f w z) a l.reverse) ⊆ Set.range fun l => foldr (fun z w => g w z) a l.reverse
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β → α
g : α → γ → α
hfg : (Set.range fun a c => f c a) ⊆ Set.range fun b c => g c b
a : α
⊢ Set.range (foldr (fun z w => f w z) a ∘ reverse) ⊆ Set.range (foldr (fun z w => g w z) a ∘ reverse)
tactic: change (Set.range (foldr (fun z w => f w z) a ∘ reverse)) ⊆
    Set.range (foldr (fun z w => g w z) a ∘ reverse)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β → α
g : α → γ → α
hfg : (Set.range fun a c => f c a) ⊆ Set.range fun b c => g c b
a : α
⊢ Set.range (foldr (fun z w => f w z) a ∘ reverse) ⊆ Set.range (foldr (fun z w => g w z) a ∘ reverse)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β → α
g : α → γ → α
hfg : (Set.range fun a c => f c a) ⊆ Set.range fun b c => g c b
a : α
⊢ Set.range (foldr (fun z w => f w z) a) ⊆ Set.range (foldr (fun z w => g w z) a)
tactic: simp_rw [Set.range_comp _ reverse, reverse_involutive.bijective.surjective.range_eq,
    Set.image_univ]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β → α
g : α → γ → α
hfg : (Set.range fun a c => f c a) ⊆ Set.range fun b c => g c b
a : α
⊢ Set.range (foldr (fun z w => f w z) a) ⊆ Set.range (foldr (fun z w => g w z) a)
state_after: no goals
tactic: exact foldr_range_subset_of_range_subset hfg a
Theorem: ProbabilityTheory.gaussianPDFReal_add
File: Mathlib/Probability/Distributions/Gaussian.lean

Proof steps:
state_before: μ : ℝ
v : ℝ≥0
x y : ℝ
⊢ gaussianPDFReal μ v (x + y) = gaussianPDFReal (μ - y) v x
state_after: no goals
tactic: rw [sub_eq_add_neg, ← gaussianPDFReal_sub, sub_eq_add_neg, neg_neg]
Theorem: Nat.coprime_or_dvd_of_prime
File: Mathlib/Data/Nat/Prime/Basic.lean

Proof steps:
state_before: n p : ℕ
pp : Prime p
i : ℕ
⊢ p.Coprime i ∨ p ∣ i
state_after: n p : ℕ
pp : Prime p
i : ℕ
⊢ p.Coprime i ∨ ¬p.Coprime i
tactic: rw [pp.dvd_iff_not_coprime]
state_before: n p : ℕ
pp : Prime p
i : ℕ
⊢ p.Coprime i ∨ ¬p.Coprime i
state_after: no goals
tactic: apply em
Theorem: OrdinalApprox.lfpApprox_add_one
File: Mathlib/SetTheory/Ordinal/FixedPointApproximants.lean

Proof steps:
state_before: α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
h : x ≤ f x
a : Ordinal.{u}
⊢ lfpApprox f x (a + 1) = f (lfpApprox f x a)
state_after: case a
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
h : x ≤ f x
a : Ordinal.{u}
⊢ lfpApprox f x (a + 1) ≤ f (lfpApprox f x a)

case a
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
h : x ≤ f x
a : Ordinal.{u}
⊢ f (lfpApprox f x a) ≤ lfpApprox f x (a + 1)
tactic: apply le_antisymm
Theorem: BialgHom.toAlgHom_toLinearMap
File: Mathlib/RingTheory/Bialgebra/Hom.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
B : Type u_3
C : Type u_4
D : Type u_5
inst✝¹² : CommSemiring R
inst✝¹¹ : Semiring A
inst✝¹⁰ : Algebra R A
inst✝⁹ : Semiring B
inst✝⁸ : Algebra R B
inst✝⁷ : Semiring C
inst✝⁶ : Algebra R C
inst✝⁵ : Semiring D
inst✝⁴ : Algebra R D
inst✝³ : CoalgebraStruct R A
inst✝² : CoalgebraStruct R B
inst✝¹ : CoalgebraStruct R C
inst✝ : CoalgebraStruct R D
f : A →ₐc[R] B
⊢ (↑↑f).toLinearMap = ↑f
state_after: no goals
tactic: rfl
Theorem: Nat.lt_iff_add_one_le
File: Mathlib/Data/Nat/Defs.lean

Proof steps:
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ m < n ↔ m + 1 ≤ n
state_after: no goals
tactic: rw [succ_le_iff]
Theorem: addLECancellable_zero
File: Mathlib/Algebra/Order/Monoid/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Monoid α
inst✝ : LE α
a b : α
⊢ 1 * a ≤ 1 * b → a ≤ b
state_after: no goals
tactic: simpa only [one_mul] using id
Theorem: add_pos_iff
File: Mathlib/Algebra/Order/Monoid/Canonical/Defs.lean

Proof steps:
state_before: α : Type u
inst✝ : CanonicallyOrderedCommMonoid α
a b c d : α
⊢ 1 < a * b ↔ 1 < a ∨ 1 < b
state_after: no goals
tactic: simp only [one_lt_iff_ne_one, Ne, mul_eq_one_iff, not_and_or]
Theorem: Multiset.mem_toList
File: Mathlib/Data/Multiset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
a : α
s : Multiset α
⊢ a ∈ s.toList ↔ a ∈ s
state_after: no goals
tactic: rw [← mem_coe, coe_toList]
Theorem: SetTheory.PGame.le_iff_forall_lf
File: Mathlib/SetTheory/Game/PGame.lean

Proof steps:
state_before: xl xr : Type u
x y : PGame
⊢ x ≤ y ↔ (∀ (i : x.LeftMoves), x.moveLeft i ⧏ y) ∧ ∀ (j : y.RightMoves), x ⧏ y.moveRight j
state_after: xl xr : Type u
x y : PGame
⊢ {
          le :=
            Sym2.GameAdd.fix wf_isOption fun x y le =>
              (∀ (i : x.LeftMoves), ¬le y (x.moveLeft i) ⋯) ∧ ∀ (j : y.RightMoves), ¬le (y.moveRight j) x ⋯ }.1
      x y ↔
    (∀ (i : x.LeftMoves), x.moveLeft i ⧏ y) ∧ ∀ (j : y.RightMoves), x ⧏ y.moveRight j
tactic: unfold LE.le le
state_before: xl xr : Type u
x y : PGame
⊢ {
          le :=
            Sym2.GameAdd.fix wf_isOption fun x y le =>
              (∀ (i : x.LeftMoves), ¬le y (x.moveLeft i) ⋯) ∧ ∀ (j : y.RightMoves), ¬le (y.moveRight j) x ⋯ }.1
      x y ↔
    (∀ (i : x.LeftMoves), x.moveLeft i ⧏ y) ∧ ∀ (j : y.RightMoves), x ⧏ y.moveRight j
state_after: xl xr : Type u
x y : PGame
⊢ Sym2.GameAdd.fix wf_isOption
      (fun x y le => (∀ (i : x.LeftMoves), ¬le y (x.moveLeft i) ⋯) ∧ ∀ (j : y.RightMoves), ¬le (y.moveRight j) x ⋯) x
      y ↔
    (∀ (i : x.LeftMoves), x.moveLeft i ⧏ y) ∧ ∀ (j : y.RightMoves), x ⧏ y.moveRight j
tactic: simp only
state_before: xl xr : Type u
x y : PGame
⊢ Sym2.GameAdd.fix wf_isOption
      (fun x y le => (∀ (i : x.LeftMoves), ¬le y (x.moveLeft i) ⋯) ∧ ∀ (j : y.RightMoves), ¬le (y.moveRight j) x ⋯) x
      y ↔
    (∀ (i : x.LeftMoves), x.moveLeft i ⧏ y) ∧ ∀ (j : y.RightMoves), x ⧏ y.moveRight j
state_after: xl xr : Type u
x y : PGame
⊢ ((∀ (i : x.LeftMoves),
        ¬(fun a' b' x =>
              Sym2.GameAdd.fix wf_isOption
                (fun x y le =>
                  (∀ (i : x.LeftMoves), ¬le y (x.moveLeft i) ⋯) ∧ ∀ (j : y.RightMoves), ¬le (y.moveRight j) x ⋯)
                a' b')
            y (x.moveLeft i) ⋯) ∧
      ∀ (j : y.RightMoves),
        ¬(fun a' b' x =>
              Sym2.GameAdd.fix wf_isOption
                (fun x y le =>
                  (∀ (i : x.LeftMoves), ¬le y (x.moveLeft i) ⋯) ∧ ∀ (j : y.RightMoves), ¬le (y.moveRight j) x ⋯)
                a' b')
            (y.moveRight j) x ⋯) ↔
    (∀ (i : x.LeftMoves), x.moveLeft i ⧏ y) ∧ ∀ (j : y.RightMoves), x ⧏ y.moveRight j
tactic: rw [Sym2.GameAdd.fix_eq]
state_before: xl xr : Type u
x y : PGame
⊢ ((∀ (i : x.LeftMoves),
        ¬(fun a' b' x =>
              Sym2.GameAdd.fix wf_isOption
                (fun x y le =>
                  (∀ (i : x.LeftMoves), ¬le y (x.moveLeft i) ⋯) ∧ ∀ (j : y.RightMoves), ¬le (y.moveRight j) x ⋯)
                a' b')
            y (x.moveLeft i) ⋯) ∧
      ∀ (j : y.RightMoves),
        ¬(fun a' b' x =>
              Sym2.GameAdd.fix wf_isOption
                (fun x y le =>
                  (∀ (i : x.LeftMoves), ¬le y (x.moveLeft i) ⋯) ∧ ∀ (j : y.RightMoves), ¬le (y.moveRight j) x ⋯)
                a' b')
            (y.moveRight j) x ⋯) ↔
    (∀ (i : x.LeftMoves), x.moveLeft i ⧏ y) ∧ ∀ (j : y.RightMoves), x ⧏ y.moveRight j
state_after: no goals
tactic: rfl
Theorem: Real.log_mul_self_monotoneOn
File: Mathlib/Analysis/SpecialFunctions/Log/Monotone.lean

Proof steps:
state_before: x y : ℝ
⊢ MonotoneOn (fun x => log x * x) {x | 1 ≤ x}
state_after: x y : ℝ
⊢ ∀ ⦃a : ℝ⦄, 1 ≤ a → ∀ ⦃b : ℝ⦄, 1 ≤ b → a ≤ b → log a * a ≤ log b * b
tactic: simp only [MonotoneOn, mem_setOf_eq]
state_before: x y : ℝ
⊢ ∀ ⦃a : ℝ⦄, 1 ≤ a → ∀ ⦃b : ℝ⦄, 1 ≤ b → a ≤ b → log a * a ≤ log b * b
state_after: x✝ y✝ x : ℝ
hex : 1 ≤ x
y : ℝ
hey : 1 ≤ y
hxy : x ≤ y
⊢ log x * x ≤ log y * y
tactic: intro x hex y hey hxy
state_before: x✝ y✝ x : ℝ
hex : 1 ≤ x
y : ℝ
hey : 1 ≤ y
hxy : x ≤ y
⊢ log x * x ≤ log y * y
state_after: x✝ y✝ x : ℝ
hex : 1 ≤ x
y : ℝ
hey : 1 ≤ y
hxy : x ≤ y
y_pos : 0 < y
⊢ log x * x ≤ log y * y
tactic: have y_pos : 0 < y := lt_of_lt_of_le zero_lt_one hey
state_before: x✝ y✝ x : ℝ
hex : 1 ≤ x
y : ℝ
hey : 1 ≤ y
hxy : x ≤ y
y_pos : 0 < y
⊢ log x * x ≤ log y * y
state_after: case b0
x✝ y✝ x : ℝ
hex : 1 ≤ x
y : ℝ
hey : 1 ≤ y
hxy : x ≤ y
y_pos : 0 < y
⊢ 0 ≤ log y
tactic: gcongr
state_before: case b0
x✝ y✝ x : ℝ
hex : 1 ≤ x
y : ℝ
hey : 1 ≤ y
hxy : x ≤ y
y_pos : 0 < y
⊢ 0 ≤ log y
state_after: no goals
tactic: rwa [le_log_iff_exp_le y_pos, Real.exp_zero]
Theorem: CategoryTheory.Adjunction.unit_leftAdjointUniq_hom
File: Mathlib/CategoryTheory/Adjunction/Unique.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{u_4, u_2} D
F F' : C ⥤ D
G : D ⥤ C
adj1 : F ⊣ G
adj2 : F' ⊣ G
⊢ adj1.unit ≫ whiskerRight (adj1.leftAdjointUniq adj2).hom G = adj2.unit
state_after: case w.h
C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{u_4, u_2} D
F F' : C ⥤ D
G : D ⥤ C
adj1 : F ⊣ G
adj2 : F' ⊣ G
x : C
⊢ (adj1.unit ≫ whiskerRight (adj1.leftAdjointUniq adj2).hom G).app x = adj2.unit.app x
tactic: ext x
state_before: case w.h
C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{u_4, u_2} D
F F' : C ⥤ D
G : D ⥤ C
adj1 : F ⊣ G
adj2 : F' ⊣ G
x : C
⊢ (adj1.unit ≫ whiskerRight (adj1.leftAdjointUniq adj2).hom G).app x = adj2.unit.app x
state_after: case w.h
C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{u_4, u_2} D
F F' : C ⥤ D
G : D ⥤ C
adj1 : F ⊣ G
adj2 : F' ⊣ G
x : C
⊢ adj1.unit.app x ≫ (whiskerRight (adj1.leftAdjointUniq adj2).hom G).app x =
    (adj1.homEquiv x (F'.obj x)) ((adj1.leftAdjointUniq adj2).hom.app x)
tactic: rw [NatTrans.comp_app, ← homEquiv_leftAdjointUniq_hom_app adj1 adj2]
state_before: case w.h
C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{u_4, u_2} D
F F' : C ⥤ D
G : D ⥤ C
adj1 : F ⊣ G
adj2 : F' ⊣ G
x : C
⊢ adj1.unit.app x ≫ (whiskerRight (adj1.leftAdjointUniq adj2).hom G).app x =
    (adj1.homEquiv x (F'.obj x)) ((adj1.leftAdjointUniq adj2).hom.app x)
state_after: no goals
tactic: simp [← G.map_comp]
Theorem: AffineSubspace.bot_ne_top
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
⊢ ⊥ ≠ ⊤
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
contra : ⊥ = ⊤
⊢ False
tactic: intro contra
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
contra : ⊥ = ⊤
⊢ False
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
contra : ∅ = univ
⊢ False
tactic: rw [AffineSubspace.ext_iff, bot_coe, top_coe] at contra
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
contra : ∅ = univ
⊢ False
state_after: no goals
tactic: exact Set.empty_ne_univ contra
Theorem: Stream'.Seq.dropn_tail
File: Mathlib/Data/Seq/Seq.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
n : ℕ
⊢ s.tail.drop n = s.drop (n + 1)
state_after: α : Type u
β : Type v
γ : Type w
s : Seq α
n : ℕ
⊢ s.tail.drop n = s.drop (1 + n)
tactic: rw [Nat.add_comm]
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
n : ℕ
⊢ s.tail.drop n = s.drop (1 + n)
state_after: α : Type u
β : Type v
γ : Type w
s : Seq α
n : ℕ
⊢ s.drop (1 + n) = s.tail.drop n
tactic: symm
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
n : ℕ
⊢ s.drop (1 + n) = s.tail.drop n
state_after: no goals
tactic: apply dropn_add
Theorem: upperClosure_sUnion
File: Mathlib/Order/UpperLower/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
x : α
S : Set (Set α)
⊢ upperClosure (⋃₀ S) = ⨅ s ∈ S, upperClosure s
state_after: no goals
tactic: simp_rw [sUnion_eq_biUnion, upperClosure_iUnion]