ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Finite.induction_empty_option
File: Mathlib/Data/Fintype/Option.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
⊢ P α
state_after: case intro
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ P α
tactic: cases nonempty_fintype α
state_before: case intro
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ P α
state_after: case intro.refine_1
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ ∀ (α β : Type u) [inst : Fintype β], α ≃ β → P α → P β

case intro.refine_2
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ P PEmpty.{u + 1}

case intro.refine_3
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ ∀ (α : Type u) [inst : Fintype α], P α → P (Option α)
tactic: refine Fintype.induction_empty_option ?_ ?_ ?_ α
state_before: case intro.refine_1
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ ∀ (α β : Type u) [inst : Fintype β], α ≃ β → P α → P β

case intro.refine_2
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ P PEmpty.{u + 1}

case intro.refine_3
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ ∀ (α : Type u) [inst : Fintype α], P α → P (Option α)
state_after: no goals
tactic: exacts [fun α β _ => of_equiv, h_empty, @h_option]
Theorem: ProbabilityTheory.iIndepFun.isProbabilityMeasure
File: Mathlib/Probability/Independence/Basic.lean

Proof steps:
state_before: Ω : Type u_1
ι : Type u_2
β✝¹ : Type u_3
γ✝ : Type u_4
κ : ι → Type u_5
β✝ : Type u_6
β' : Type u_7
γ : Type u_8
γ' : Type u_9
_mΩ : MeasurableSpace Ω
μ : Measure Ω
f✝ : Ω → β✝
g : Ω → β'
β : ι → Type u_10
m : (i : ι) → MeasurableSpace (β i)
f : (i : ι) → Ω → β i
h : iIndepFun m f μ
⊢ μ univ = 1
state_after: no goals
tactic: simpa using h.meas_biInter (S := ∅) (s := fun _ ↦ univ)
Theorem: Pi.lex_desc
File: Mathlib/Order/PiLex.lean

Proof steps:
state_before: ι : Type u_1
β : ι → Type u_2
r : ι → ι → Prop
s : {i : ι} → β i → β i → Prop
α : Type u_3
inst✝² : Preorder ι
inst✝¹ : DecidableEq ι
inst✝ : Preorder α
f : ι → α
i j : ι
h₁ : i ≤ j
h₂ : f j < f i
⊢ (fun x x_1 x_2 => x_1 < x_2) i (toLex (f ∘ ⇑(Equiv.swap i j)) i) (toLex f i)
state_after: no goals
tactic: simpa only [Pi.toLex_apply, Function.comp_apply, Equiv.swap_apply_left] using h₂
Theorem: Nat.maxPowDiv.go_succ
File: Mathlib/Data/Nat/MaxPowDiv.lean

Proof steps:
state_before: k p n : ℕ
⊢ go (k + 1) p n = go k p n + 1
state_after: case case1
k✝ p✝ n✝ : ℕ
h✝ : 1 < p✝ ∧ 0 < n✝ ∧ n✝ % p✝ = 0
ih1✝ : go (k✝ + 1 + 1) p✝ (n✝ / p✝) = go (k✝ + 1) p✝ (n✝ / p✝) + 1
⊢ go (k✝ + 1) p✝ n✝ = go k✝ p✝ n✝ + 1

case case2
k✝ p✝ n✝ : ℕ
h✝ : ¬(1 < p✝ ∧ 0 < n✝ ∧ n✝ % p✝ = 0)
⊢ go (k✝ + 1) p✝ n✝ = go k✝ p✝ n✝ + 1
tactic: induction k, p, n using go.induct
state_before: case case1
k✝ p✝ n✝ : ℕ
h✝ : 1 < p✝ ∧ 0 < n✝ ∧ n✝ % p✝ = 0
ih1✝ : go (k✝ + 1 + 1) p✝ (n✝ / p✝) = go (k✝ + 1) p✝ (n✝ / p✝) + 1
⊢ go (k✝ + 1) p✝ n✝ = go k✝ p✝ n✝ + 1

case case2
k✝ p✝ n✝ : ℕ
h✝ : ¬(1 < p✝ ∧ 0 < n✝ ∧ n✝ % p✝ = 0)
⊢ go (k✝ + 1) p✝ n✝ = go k✝ p✝ n✝ + 1
state_after: case case2
k✝ p✝ n✝ : ℕ
h✝ : ¬(1 < p✝ ∧ 0 < n✝ ∧ n✝ % p✝ = 0)
⊢ go (k✝ + 1) p✝ n✝ = go k✝ p✝ n✝ + 1
tactic: case case1 h ih =>
    unfold go
    simp only [if_pos h]
    exact ih
state_before: case case2
k✝ p✝ n✝ : ℕ
h✝ : ¬(1 < p✝ ∧ 0 < n✝ ∧ n✝ % p✝ = 0)
⊢ go (k✝ + 1) p✝ n✝ = go k✝ p✝ n✝ + 1
state_after: no goals
tactic: case case2 h =>
    unfold go
    simp only [if_neg h]
Theorem: EReal.preimage_coe_Iic
File: Mathlib/Data/Real/EReal.lean

Proof steps:
state_before: y : ℝ
⊢ Real.toEReal ⁻¹' Iic ↑y = Iic y
state_after: y : ℝ
⊢ WithBot.some ∘ WithTop.some ⁻¹' Iic ↑↑y = Iic y
tactic: change (WithBot.some ∘ WithTop.some) ⁻¹' (Iic (WithBot.some (WithTop.some y))) = _
state_before: y : ℝ
⊢ WithBot.some ∘ WithTop.some ⁻¹' Iic ↑↑y = Iic y
state_after: y : ℝ
⊢ WithTop.some ⁻¹' (WithBot.some ⁻¹' Iic ↑↑y) = Iic y
tactic: refine preimage_comp.trans ?_
state_before: y : ℝ
⊢ WithTop.some ⁻¹' (WithBot.some ⁻¹' Iic ↑↑y) = Iic y
state_after: no goals
tactic: simp only [WithBot.preimage_coe_Iic, WithTop.preimage_coe_Iic]
Theorem: Equiv.Perm.sign_abs
File: Mathlib/GroupTheory/Perm/Sign.lean

Proof steps:
state_before: α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Fintype α
f : Perm α
⊢ |↑(sign f)| = 1
state_after: no goals
tactic: rw [Int.abs_eq_natAbs, Int.units_natAbs, Nat.cast_one]
Theorem: eq_of_sub_eq_zero
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✝ : DivisionMonoid α
a b c d : α
h : a / b = 1
⊢ a * b⁻¹ = 1
state_after: no goals
tactic: rwa [← div_eq_mul_inv]
Theorem: summable_sum_mul_range_of_summable_mul
File: Mathlib/Topology/Algebra/InfiniteSum/Ring.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
R : Type u_3
α : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : NonUnitalNonAssocSemiring α
f g : ℕ → α
inst✝¹ : T3Space α
inst✝ : TopologicalSemiring α
h : Summable fun x => f x.1 * g x.2
⊢ Summable fun n => ∑ k ∈ range (n + 1), f k * g (n - k)
state_after: ι : Type u_1
κ : Type u_2
R : Type u_3
α : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : NonUnitalNonAssocSemiring α
f g : ℕ → α
inst✝¹ : T3Space α
inst✝ : TopologicalSemiring α
h : Summable fun x => f x.1 * g x.2
⊢ Summable fun n => ∑ ij ∈ antidiagonal n, f ij.1 * g ij.2
tactic: simp_rw [← Nat.sum_antidiagonal_eq_sum_range_succ fun k l ↦ f k * g l]
state_before: ι : Type u_1
κ : Type u_2
R : Type u_3
α : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : NonUnitalNonAssocSemiring α
f g : ℕ → α
inst✝¹ : T3Space α
inst✝ : TopologicalSemiring α
h : Summable fun x => f x.1 * g x.2
⊢ Summable fun n => ∑ ij ∈ antidiagonal n, f ij.1 * g ij.2
state_after: no goals
tactic: exact summable_sum_mul_antidiagonal_of_summable_mul h
Theorem: MulEquiv.ofLeftInverse'_symm_apply
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
T : Submonoid M
f : M →* N
g : N → M
h : Function.LeftInverse g ⇑f
x : ↥(MonoidHom.mrange f)
x' : M
hx' : f x' = ↑x
⊢ f (g ↑x) = ↑x
state_after: no goals
tactic: rw [← hx', h x']
Theorem: EuclideanDomain.gcd_val
File: Mathlib/Algebra/EuclideanDomain/Basic.lean

Proof steps:
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b : R
⊢ gcd a b = gcd (b % a) a
state_after: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b : R
⊢ (if a0 : a = 0 then b
    else
      let_fun x := ⋯;
      gcd (b % a) a) =
    gcd (b % a) a
tactic: rw [gcd]
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
a b : R
⊢ (if a0 : a = 0 then b
    else
      let_fun x := ⋯;
      gcd (b % a) a) =
    gcd (b % a) a
state_after: no goals
tactic: split_ifs with h <;> [simp only [h, mod_zero, gcd_zero_right]; rfl]
Theorem: SeminormedGroup.uniformCauchySeqOnFilter_iff_tendstoUniformlyOnFilter_one
File: Mathlib/Analysis/Normed/Group/Basic.lean

Proof steps:
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝³ : SeminormedGroup E
inst✝² : SeminormedGroup F
inst✝¹ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝ : FunLike 𝓕 E F
f : ι → κ → G
l : Filter ι
l' : Filter κ
⊢ UniformCauchySeqOnFilter f l l' ↔ TendstoUniformlyOnFilter (fun n z => f n.1 z / f n.2 z) 1 (l ×ˢ l) l'
state_after: case refine_1
𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝³ : SeminormedGroup E
inst✝² : SeminormedGroup F
inst✝¹ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝ : FunLike 𝓕 E F
f : ι → κ → G
l : Filter ι
l' : Filter κ
hf : UniformCauchySeqOnFilter f l l'
u : Set (G × G)
hu : u ∈ 𝓤 G
⊢ ∀ᶠ (n : (ι × ι) × κ) in (l ×ˢ l) ×ˢ l', (1 n.2, (fun n z => f n.1 z / f n.2 z) n.1 n.2) ∈ u

case refine_2
𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝³ : SeminormedGroup E
inst✝² : SeminormedGroup F
inst✝¹ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝ : FunLike 𝓕 E F
f : ι → κ → G
l : Filter ι
l' : Filter κ
hf : TendstoUniformlyOnFilter (fun n z => f n.1 z / f n.2 z) 1 (l ×ˢ l) l'
u : Set (G × G)
hu : u ∈ 𝓤 G
⊢ ∀ᶠ (m : (ι × ι) × κ) in (l ×ˢ l) ×ˢ l', (f m.1.1 m.2, f m.1.2 m.2) ∈ u
tactic: refine ⟨fun hf u hu => ?_, fun hf u hu => ?_⟩
Theorem: CategoryTheory.Limits.PushoutCocone.unop_snd
File: Mathlib/CategoryTheory/Limits/Opposites.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X✝ : Type v₂
X Y Z : Cᵒᵖ
f : X ⟶ Y
g : X ⟶ Z
c : PushoutCocone f g
⊢ c.unop.snd = c.inr.unop
state_after: no goals
tactic: aesop_cat
Theorem: List.rtakeWhile_concat_pos
File: Mathlib/Data/List/DropRight.lean

Proof steps:
state_before: α : Type u_1
p : α → Bool
l : List α
n : ℕ
x : α
h : p x = true
⊢ rtakeWhile p (l ++ [x]) = rtakeWhile p l ++ [x]
state_after: no goals
tactic: rw [rtakeWhile_concat, if_pos h]
Theorem: AffineSubspace.sOppSide_vadd_left_iff
File: Mathlib/Analysis/Convex/Side.lean

Proof steps:
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : StrictOrderedCommRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y : P
v : V
hv : v ∈ s.direction
⊢ s.SOppSide (v +ᵥ x) y ↔ s.SOppSide x y
state_after: no goals
tactic: rw [SOppSide, SOppSide, wOppSide_vadd_left_iff hv, vadd_mem_iff_mem_of_mem_direction hv]
Theorem: MvPolynomial.isSymmetric_rename
File: Mathlib/RingTheory/MvPolynomial/Symmetric.lean

Proof steps:
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
φ ψ : MvPolynomial σ R
e : σ ≃ τ
h : ((rename ⇑e) φ).IsSymmetric
⊢ φ.IsSymmetric
state_after: no goals
tactic: simpa using (IsSymmetric.rename (R := R) h e.symm)
Theorem: gramSchmidtOrthonormalBasis_det
File: Mathlib/Analysis/InnerProductSpace/GramSchmidtOrtho.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝⁵ : LinearOrder ι
inst✝⁴ : LocallyFiniteOrderBot ι
inst✝³ : IsWellOrder ι fun x x_1 => x < x_1
inst✝² : Fintype ι
inst✝¹ : FiniteDimensional 𝕜 E
h : finrank 𝕜 E = Fintype.card ι
f : ι → E
inst✝ : DecidableEq ι
⊢ (gramSchmidtOrthonormalBasis h f).toBasis.det f = ∏ i : ι, ⟪(gramSchmidtOrthonormalBasis h f) i, f i⟫_𝕜
state_after: case h.e'_3.a
𝕜 : Type u_1
E : Type u_2
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝⁵ : LinearOrder ι
inst✝⁴ : LocallyFiniteOrderBot ι
inst✝³ : IsWellOrder ι fun x x_1 => x < x_1
inst✝² : Fintype ι
inst✝¹ : FiniteDimensional 𝕜 E
h : finrank 𝕜 E = Fintype.card ι
f : ι → E
inst✝ : DecidableEq ι
x✝ : ι
a✝ : x✝ ∈ Finset.univ
⊢ ⟪(gramSchmidtOrthonormalBasis h f) x✝, f x✝⟫_𝕜 = (gramSchmidtOrthonormalBasis h f).toBasis.toMatrix f x✝ x✝
tactic: convert Matrix.det_of_upperTriangular (gramSchmidtOrthonormalBasis_inv_blockTriangular h f)
state_before: case h.e'_3.a
𝕜 : Type u_1
E : Type u_2
inst✝⁸ : RCLike 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝⁵ : LinearOrder ι
inst✝⁴ : LocallyFiniteOrderBot ι
inst✝³ : IsWellOrder ι fun x x_1 => x < x_1
inst✝² : Fintype ι
inst✝¹ : FiniteDimensional 𝕜 E
h : finrank 𝕜 E = Fintype.card ι
f : ι → E
inst✝ : DecidableEq ι
x✝ : ι
a✝ : x✝ ∈ Finset.univ
⊢ ⟪(gramSchmidtOrthonormalBasis h f) x✝, f x✝⟫_𝕜 = (gramSchmidtOrthonormalBasis h f).toBasis.toMatrix f x✝ x✝
state_after: no goals
tactic: exact ((gramSchmidtOrthonormalBasis h f).repr_apply_apply (f _) _).symm
Theorem: MeasureTheory.Integrable.bdd_mul'
File: Mathlib/MeasureTheory/Function/L1Space.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
𝕜 : Type u_5
inst✝ : NormedRing 𝕜
f✝ f g : α → 𝕜
c : ℝ
hg : Integrable g μ
hf : AEStronglyMeasurable f μ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
⊢ Integrable (fun x => f x * g x) μ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
𝕜 : Type u_5
inst✝ : NormedRing 𝕜
f✝ f g : α → 𝕜
c : ℝ
hg : Integrable g μ
hf : AEStronglyMeasurable f μ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
⊢ ∀ᵐ (a : α) ∂μ, ‖f a * g a‖ ≤ (c • fun a => ‖g a‖) a
tactic: refine Integrable.mono' (hg.norm.smul c) (hf.mul hg.1) ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
𝕜 : Type u_5
inst✝ : NormedRing 𝕜
f✝ f g : α → 𝕜
c : ℝ
hg : Integrable g μ
hf : AEStronglyMeasurable f μ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
⊢ ∀ᵐ (a : α) ∂μ, ‖f a * g a‖ ≤ (c • fun a => ‖g a‖) a
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
𝕜 : Type u_5
inst✝ : NormedRing 𝕜
f✝ f g : α → 𝕜
c : ℝ
hg : Integrable g μ
hf : AEStronglyMeasurable f μ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
x : α
hx : ‖f x‖ ≤ c
⊢ ‖f x * g x‖ ≤ (c • fun a => ‖g a‖) x
tactic: filter_upwards [hf_bound] with x hx
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
𝕜 : Type u_5
inst✝ : NormedRing 𝕜
f✝ f g : α → 𝕜
c : ℝ
hg : Integrable g μ
hf : AEStronglyMeasurable f μ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
x : α
hx : ‖f x‖ ≤ c
⊢ ‖f x * g x‖ ≤ (c • fun a => ‖g a‖) x
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
𝕜 : Type u_5
inst✝ : NormedRing 𝕜
f✝ f g : α → 𝕜
c : ℝ
hg : Integrable g μ
hf : AEStronglyMeasurable f μ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
x : α
hx : ‖f x‖ ≤ c
⊢ ‖f x * g x‖ ≤ c * ‖g x‖
tactic: rw [Pi.smul_apply, smul_eq_mul]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
𝕜 : Type u_5
inst✝ : NormedRing 𝕜
f✝ f g : α → 𝕜
c : ℝ
hg : Integrable g μ
hf : AEStronglyMeasurable f μ
hf_bound : ∀ᵐ (x : α) ∂μ, ‖f x‖ ≤ c
x : α
hx : ‖f x‖ ≤ c
⊢ ‖f x * g x‖ ≤ c * ‖g x‖
state_after: no goals
tactic: exact (norm_mul_le _ _).trans (mul_le_mul_of_nonneg_right hx (norm_nonneg _))
Theorem: SemidirectProduct.inl_aut_inv
File: Mathlib/GroupTheory/SemidirectProduct.lean

Proof steps:
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
g : G
n : N
⊢ inl ((φ g)⁻¹ n) = inr g⁻¹ * inl n * inr g
state_after: no goals
tactic: rw [← MonoidHom.map_inv, inl_aut, inv_inv]
Theorem: List.support_formPerm_le
File: Mathlib/GroupTheory/Perm/List.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : DecidableEq α
l : List α
inst✝ : Fintype α
⊢ l.formPerm.support ≤ l.toFinset
state_after: α : Type u_1
β : Type u_2
inst✝¹ : DecidableEq α
l : List α
inst✝ : Fintype α
x : α
hx : x ∈ l.formPerm.support
⊢ x ∈ l.toFinset
tactic: intro x hx
state_before: α : Type u_1
β : Type u_2
inst✝¹ : DecidableEq α
l : List α
inst✝ : Fintype α
x : α
hx : x ∈ l.formPerm.support
⊢ x ∈ l.toFinset
state_after: α : Type u_1
β : Type u_2
inst✝¹ : DecidableEq α
l : List α
inst✝ : Fintype α
x : α
hx : x ∈ l.formPerm.support
hx' : x ∈ {x | l.formPerm x ≠ x}
⊢ x ∈ l.toFinset
tactic: have hx' : x ∈ { x | formPerm l x ≠ x } := by simpa using hx
state_before: α : Type u_1
β : Type u_2
inst✝¹ : DecidableEq α
l : List α
inst✝ : Fintype α
x : α
hx : x ∈ l.formPerm.support
hx' : x ∈ {x | l.formPerm x ≠ x}
⊢ x ∈ l.toFinset
state_after: no goals
tactic: simpa using support_formPerm_le' _ hx'
Theorem: ProperCone.nonempty
File: Mathlib/Analysis/Convex/Cone/Proper.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝³ : OrderedSemiring 𝕜
E : Type u_2
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
K : ProperCone 𝕜 E
⊢ 0 ∈ ↑K
state_after: no goals
tactic: simp_rw [SetLike.mem_coe, ← ProperCone.mem_coe, Submodule.zero_mem]
Theorem: CategoryTheory.StructuredArrow.isoMk_hom_right
File: Mathlib/CategoryTheory/Comma/StructuredArrow.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
S S' S'' : D
Y Y' Y'' : C
T T' : C ⥤ D
f f' : StructuredArrow S T
g : f.right ≅ f'.right
w : autoParam (f.hom ≫ T.map g.hom = f'.hom) _auto✝
⊢ f.left = f'.left
state_after: no goals
tactic: ext
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
S S' S'' : D
Y Y' Y'' : C
T T' : C ⥤ D
f f' : StructuredArrow S T
g : f.right ≅ f'.right
w : autoParam (f.hom ≫ T.map g.hom = f'.hom) _auto✝
⊢ (Functor.fromPUnit S).map (eqToIso ⋯).hom ≫ f'.hom = f.hom ≫ T.map g.hom
state_after: no goals
tactic: simpa using w.symm
Theorem: Subgroup.exists_right_transversal_of_le
File: Mathlib/GroupTheory/Complement.lean

Proof steps:
state_before: G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H' H : Subgroup G
h : H' ≤ H
⊢ ∃ S, ↑H' * S = ↑H ∧ Nat.card ↥H' * Nat.card ↑S = Nat.card ↥H
state_after: G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H' H : Subgroup G
h : H' ≤ H
H'' : Subgroup ↥H := comap H.subtype H'
⊢ ∃ S, ↑H' * S = ↑H ∧ Nat.card ↥H' * Nat.card ↑S = Nat.card ↥H
tactic: let H'' : Subgroup H := H'.comap H.subtype
state_before: G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H' H : Subgroup G
h : H' ≤ H
H'' : Subgroup ↥H := comap H.subtype H'
⊢ ∃ S, ↑H' * S = ↑H ∧ Nat.card ↥H' * Nat.card ↑S = Nat.card ↥H
state_after: G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H' H : Subgroup G
h : H' ≤ H
H'' : Subgroup ↥H := comap H.subtype H'
this : H' = map H.subtype H''
⊢ ∃ S, ↑H' * S = ↑H ∧ Nat.card ↥H' * Nat.card ↑S = Nat.card ↥H
tactic: have : H' = H''.map H.subtype := by simp [H'', h]
state_before: G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H' H : Subgroup G
h : H' ≤ H
H'' : Subgroup ↥H := comap H.subtype H'
this : H' = map H.subtype H''
⊢ ∃ S, ↑H' * S = ↑H ∧ Nat.card ↥H' * Nat.card ↑S = Nat.card ↥H
state_after: G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H' H : Subgroup G
h : H' ≤ H
H'' : Subgroup ↥H := comap H.subtype H'
this : H' = map H.subtype H''
⊢ ∃ S, ↑(map H.subtype H'') * S = ↑H ∧ Nat.card ↥(map H.subtype H'') * Nat.card ↑S = Nat.card ↥H
tactic: rw [this]
state_before: G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S T : Set G
H' H : Subgroup G
h : H' ≤ H
H'' : Subgroup ↥H := comap H.subtype H'
this : H' = map H.subtype H''
⊢ ∃ S, ↑(map H.subtype H'') * S = ↑H ∧ Nat.card ↥(map H.subtype H'') * Nat.card ↑S = Nat.card ↥H
state_after: case intro.intro
G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S✝ T : Set G
H' H : Subgroup G
h : H' ≤ H
H'' : Subgroup ↥H := comap H.subtype H'
this : H' = map H.subtype H''
S : Set ↥H
cmem : S ∈ rightTransversals ↑H''
⊢ ∃ S, ↑(map H.subtype H'') * S = ↑H ∧ Nat.card ↥(map H.subtype H'') * Nat.card ↑S = Nat.card ↥H
tactic: obtain ⟨S, cmem, -⟩ := H''.exists_right_transversal 1
state_before: case intro.intro
G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S✝ T : Set G
H' H : Subgroup G
h : H' ≤ H
H'' : Subgroup ↥H := comap H.subtype H'
this : H' = map H.subtype H''
S : Set ↥H
cmem : S ∈ rightTransversals ↑H''
⊢ ∃ S, ↑(map H.subtype H'') * S = ↑H ∧ Nat.card ↥(map H.subtype H'') * Nat.card ↑S = Nat.card ↥H
state_after: case intro.intro.refine_1
G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S✝ T : Set G
H' H : Subgroup G
h : H' ≤ H
H'' : Subgroup ↥H := comap H.subtype H'
this : H' = map H.subtype H''
S : Set ↥H
cmem : S ∈ rightTransversals ↑H''
⊢ ↑(map H.subtype H'') * ⇑H.subtype '' S = ↑H

case intro.intro.refine_2
G : Type u_1
inst✝ : Group G
H✝ K : Subgroup G
S✝ T : Set G
H' H : Subgroup G
h : H' ≤ H
H'' : Subgroup ↥H := comap H.subtype H'
this : H' = map H.subtype H''
S : Set ↥H
cmem : S ∈ rightTransversals ↑H''
⊢ Nat.card ↥(map H.subtype H'') * Nat.card ↑(⇑H.subtype '' S) = Nat.card ↥H
tactic: refine ⟨H.subtype '' S, ?_, ?_⟩