1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Adjunction.leftAdjointUniq_hom_counit
File: Mathlib/CategoryTheory/Adjunction/Unique.lean

tactic: ext x
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
⊢ whiskerLeft G (adj1.leftAdjointUniq adj2).hom ≫ adj2.counit = adj1.counit
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 : D
⊢ (whiskerLeft G (adj1.leftAdjointUniq adj2).hom ≫ adj2.counit).app x = adj1.counit.app x

tactic: simp only [Functor.comp_obj, Functor.id_obj, leftAdjointUniq, Iso.symm_hom, natIsoEquiv_apply_inv,
  Iso.refl_inv, NatTrans.comp_app, whiskerLeft_app, natTransEquiv_apply_app, whiskerLeft_id',
  Category.comp_id, Category.assoc]
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 : D
⊢ (whiskerLeft G (adj1.leftAdjointUniq adj2).hom ≫ adj2.counit).app x = adj1.counit.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 : D
⊢ F.map (adj2.unit.app (G.obj x)) ≫ adj1.counit.app (F'.obj (G.obj x)) ≫ adj2.counit.app x = adj1.counit.app x

tactic: rw [← adj1.counit_naturality, ← Category.assoc, ← F.map_comp]
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 : D
⊢ F.map (adj2.unit.app (G.obj x)) ≫ adj1.counit.app (F'.obj (G.obj x)) ≫ adj2.counit.app x = adj1.counit.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 : D
⊢ F.map (adj2.unit.app (G.obj x) ≫ G.map (adj2.counit.app x)) ≫ adj1.counit.app x = adj1.counit.app x

tactic: simp
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 : D
⊢ F.map (adj2.unit.app (G.obj x) ≫ G.map (adj2.counit.app x)) ≫ adj1.counit.app x = adj1.counit.app x
state_after: no goals
Theorem: Nat.Odd.sub_odd
File: Mathlib/Algebra/Ring/Parity.lean

tactic: simp only [even_sub' h, *]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m n : ℕ
hm : Odd m
hn : Odd n
h : n ≤ m
⊢ Even (m - n)
state_after: no goals

tactic: simp only [Nat.sub_eq_zero_iff_le.2 h, even_zero]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m n : ℕ
hm : Odd m
hn : Odd n
h : m ≤ n
⊢ Even (m - n)
state_after: no goals
Theorem: LinearMap.det_toMatrix_eq_det_toMatrix
File: Mathlib/LinearAlgebra/Determinant.lean

tactic: rw [← linearMap_toMatrix_mul_basis_toMatrix c b c, ← basis_toMatrix_mul_linearMap_toMatrix b c b,
    Matrix.det_conj_of_mul_eq_one] <;>
  rw [Basis.toMatrix_mul_toMatrix, Basis.toMatrix_self]
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
κ : Type u_6
inst✝¹ : Fintype κ
inst✝ : DecidableEq κ
b : Basis ι A M
c : Basis κ A M
f : M →ₗ[A] M
⊢ ((toMatrix b b) f).det = ((toMatrix c c) f).det
state_after: no goals
Theorem: Polynomial.Monic.natDegree_eq_zero
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rintro rfl
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
hf : p.Monic
⊢ p = 1 → p.natDegree = 0
state_after: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type u_1
hf : Monic 1
⊢ natDegree 1 = 0

tactic: simp
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p q : R[X]
ι : Type u_1
hf : Monic 1
⊢ natDegree 1 = 0
state_after: no goals
Theorem: Set.Ici_disjoint_Iic
File: Mathlib/Order/Interval/Set/Disjoint.lean

tactic: rw [Set.disjoint_iff_inter_eq_empty, Ici_inter_Iic, Icc_eq_empty_iff]
state_before: ι : Sort u
α : Type v
β : Type w
inst✝ : Preorder α
a b c : α
⊢ Disjoint (Ici a) (Iic b) ↔ ¬a ≤ b
state_after: no goals
Theorem: Polynomial.leadingCoeff_add_of_degree_lt'
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [add_comm]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : q.degree < p.degree
⊢ (p + q).leadingCoeff = p.leadingCoeff
state_after: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : q.degree < p.degree
⊢ (q + p).leadingCoeff = p.leadingCoeff

tactic: exact leadingCoeff_add_of_degree_lt h
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : q.degree < p.degree
⊢ (q + p).leadingCoeff = p.leadingCoeff
state_after: no goals
Theorem: BoxIntegral.Prepartition.mem_biUnion
File: Mathlib/Analysis/BoxIntegral/Partition/Basic.lean

tactic: simp [biUnion]
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
⊢ J ∈ π.biUnion πi ↔ ∃ J' ∈ π, J ∈ πi J'
state_after: no goals
Theorem: Nat.ceilRoot_zero_left
File: Mathlib/Data/Nat/Factorization/Root.lean

tactic: simp [ceilRoot]
state_before: a✝ b n a : ℕ
⊢ ceilRoot 0 a = 0
state_after: no goals
Theorem: Ordinal.enumOrd_univ
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [← range_id]
state_before: S : Set Ordinal.{u}
⊢ enumOrd Set.univ = id
state_after: S : Set Ordinal.{u}
⊢ enumOrd (range id) = id

tactic: exact enumOrd_range strictMono_id
state_before: S : Set Ordinal.{u}
⊢ enumOrd (range id) = id
state_after: no goals
Theorem: compact_covered_by_mul_left_translates
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: exact ⟨t, Subset.trans ht <| iUnion₂_mono fun g _ => interior_subset⟩
state_before: case intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K V : Set G
hK : IsCompact K
hV : (interior V).Nonempty
t : Finset G
ht : K ⊆ ⋃ x ∈ t, interior ((fun x_1 => x * x_1) ⁻¹' V)
⊢ ∃ t, K ⊆ ⋃ g ∈ t, (fun x => g * x) ⁻¹' V
state_after: no goals

tactic: cases' hV with g₀ hg₀
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K V : Set G
hK : IsCompact K
hV : (interior V).Nonempty
⊢ K ⊆ ⋃ i, (fun x => interior ((fun x_1 => x * x_1) ⁻¹' V)) i
state_after: case intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K V : Set G
hK : IsCompact K
g₀ : G
hg₀ : g₀ ∈ interior V
⊢ K ⊆ ⋃ i, (fun x => interior ((fun x_1 => x * x_1) ⁻¹' V)) i

tactic: refine fun g _ => mem_iUnion.2 ⟨g₀ * g⁻¹, ?_⟩
state_before: case intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K V : Set G
hK : IsCompact K
g₀ : G
hg₀ : g₀ ∈ interior V
⊢ K ⊆ ⋃ i, (fun x => interior ((fun x_1 => x * x_1) ⁻¹' V)) i
state_after: case intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K V : Set G
hK : IsCompact K
g₀ : G
hg₀ : g₀ ∈ interior V
g : G
x✝ : g ∈ K
⊢ g ∈ interior ((fun x => g₀ * g⁻¹ * x) ⁻¹' V)

tactic: refine preimage_interior_subset_interior_preimage (continuous_const.mul continuous_id) ?_
state_before: case intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K V : Set G
hK : IsCompact K
g₀ : G
hg₀ : g₀ ∈ interior V
g : G
x✝ : g ∈ K
⊢ g ∈ interior ((fun x => g₀ * g⁻¹ * x) ⁻¹' V)
state_after: case intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K V : Set G
hK : IsCompact K
g₀ : G
hg₀ : g₀ ∈ interior V
g : G
x✝ : g ∈ K
⊢ g ∈ (fun x => g₀ * g⁻¹ * id x) ⁻¹' interior V

tactic: rwa [mem_preimage, Function.id_def, inv_mul_cancel_right]
state_before: case intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
K V : Set G
hK : IsCompact K
g₀ : G
hg₀ : g₀ ∈ interior V
g : G
x✝ : g ∈ K
⊢ g ∈ (fun x => g₀ * g⁻¹ * id x) ⁻¹' interior V
state_after: no goals
Theorem: HasFDerivAt.hasLineDerivAt
File: Mathlib/Analysis/Calculus/LineDeriv/Basic.lean

tactic: rw [← hasLineDerivWithinAt_univ]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ : E → F
f' : F
s t : Set E
x v✝ : E
L : E →L[𝕜] F
hf : HasFDerivAt f L x
v : E
⊢ HasLineDerivAt 𝕜 f (L v) x v
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ : E → F
f' : F
s t : Set E
x v✝ : E
L : E →L[𝕜] F
hf : HasFDerivAt f L x
v : E
⊢ HasLineDerivWithinAt 𝕜 f (L v) univ x v

tactic: exact hf.hasFDerivWithinAt.hasLineDerivWithinAt v
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ : E → F
f' : F
s t : Set E
x v✝ : E
L : E →L[𝕜] F
hf : HasFDerivAt f L x
v : E
⊢ HasLineDerivWithinAt 𝕜 f (L v) univ x v
state_after: no goals
Theorem: CategoryTheory.Limits.biprod.braiding_map_braiding
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

tactic: aesop_cat
state_before: J : Type w
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
D : Type uD
inst✝² : Category.{uD', uD} D
inst✝¹ : HasZeroMorphisms D
P Q : C
inst✝ : HasBinaryBiproducts C
W X Y Z : C
f : W ⟶ Y
g : X ⟶ Z
⊢ (braiding X W).hom ≫ map f g ≫ (braiding Y Z).hom = map g f
state_after: no goals
Theorem: Equiv.Perm.support_prod_of_pairwise_disjoint
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: induction' l with hd tl hl
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
l : List (Perm α)
h : List.Pairwise Disjoint l
⊢ l.prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support l)
state_after: case nil
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
h : List.Pairwise Disjoint []
⊢ [].prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support [])

case cons
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g hd : Perm α
tl : List (Perm α)
hl : List.Pairwise Disjoint tl → tl.prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support tl)
h : List.Pairwise Disjoint (hd :: tl)
⊢ (hd :: tl).prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support (hd :: tl))

tactic: simp
state_before: case nil
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
h : List.Pairwise Disjoint []
⊢ [].prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support [])
state_after: no goals

tactic: rw [List.pairwise_cons] at h
state_before: case cons
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g hd : Perm α
tl : List (Perm α)
hl : List.Pairwise Disjoint tl → tl.prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support tl)
h : List.Pairwise Disjoint (hd :: tl)
⊢ (hd :: tl).prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support (hd :: tl))
state_after: case cons
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g hd : Perm α
tl : List (Perm α)
hl : List.Pairwise Disjoint tl → tl.prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support tl)
h : (∀ a' ∈ tl, hd.Disjoint a') ∧ List.Pairwise Disjoint tl
⊢ (hd :: tl).prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support (hd :: tl))

tactic: have : Disjoint hd tl.prod := disjoint_prod_right _ h.left
state_before: case cons
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g hd : Perm α
tl : List (Perm α)
hl : List.Pairwise Disjoint tl → tl.prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support tl)
h : (∀ a' ∈ tl, hd.Disjoint a') ∧ List.Pairwise Disjoint tl
⊢ (hd :: tl).prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support (hd :: tl))
state_after: case cons
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g hd : Perm α
tl : List (Perm α)
hl : List.Pairwise Disjoint tl → tl.prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support tl)
h : (∀ a' ∈ tl, hd.Disjoint a') ∧ List.Pairwise Disjoint tl
this : hd.Disjoint tl.prod
⊢ (hd :: tl).prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support (hd :: tl))

tactic: simp [this.support_mul, hl h.right]
state_before: case cons
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g hd : Perm α
tl : List (Perm α)
hl : List.Pairwise Disjoint tl → tl.prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support tl)
h : (∀ a' ∈ tl, hd.Disjoint a') ∧ List.Pairwise Disjoint tl
this : hd.Disjoint tl.prod
⊢ (hd :: tl).prod.support = List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (List.map support (hd :: tl))
state_after: no goals
Theorem: Polynomial.degree_X_pow
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [X_pow_eq_monomial, degree_monomial _ (one_ne_zero' R)]
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝¹ : Semiring R
inst✝ : Nontrivial R
p q : R[X]
n : ℕ
⊢ (X ^ n).degree = ↑n
state_after: no goals
Theorem: partialSups_apply
File: Mathlib/Order/PartialSups.lean

tactic: simp only [partialSups_eq_sup'_range, Finset.sup'_apply]
state_before: α : Type u_1
inst✝¹ : SemilatticeSup α
ι : Type u_2
π : ι → Type u_3
inst✝ : (i : ι) → SemilatticeSup (π i)
f : ℕ → (i : ι) → π i
n : ℕ
i : ι
⊢ (partialSups f) n i = (partialSups fun x => f x i) n
state_after: no goals
Theorem: iteratedFDeriv_succ_const
File: Mathlib/Analysis/Calculus/ContDiff/Basic.lean

tactic: simpa [← iteratedFDerivWithin_univ] using
iteratedFDerivWithin_succ_const n c uniqueDiffOn_univ (mem_univ x)
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type u_2
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x✝ x₀ : E
c✝ : F
b : E × F → G
m n✝ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
n : ℕ
c : F
x : E
⊢ iteratedFDeriv 𝕜 (n + 1) (fun x => c) x = 0 x
state_after: no goals
Theorem: strongConvexOn_zero
File: Mathlib/Analysis/Convex/Strong.lean

tactic: simp [StrongConvexOn, ← Pi.zero_def]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
φ ψ : ℝ → ℝ
s✝ : Set E
a b m✝ : ℝ
x y : E
f✝ g : E → ℝ
s : Set E
f : E → ℝ
m n : ℝ
⊢ StrongConvexOn s 0 f ↔ ConvexOn ℝ s f
state_after: no goals
Theorem: MeasureTheory.Integrable.bdd_mul'
File: Mathlib/MeasureTheory/Function/L1Space.lean

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
⊢ 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: filter_upwards [hf_bound] with x hx
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: 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 • 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: exact (norm_mul_le _ _).trans (mul_le_mul_of_nonneg_right hx (norm_nonneg _))
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
Theorem: Int.gcd_mul_left
File: Mathlib/Data/Int/GCD.lean

tactic: rw [Int.gcd, Int.gcd, natAbs_mul, natAbs_mul]
state_before: i j k : ℤ
⊢ (i * j).gcd (i * k) = i.natAbs * j.gcd k
state_after: i j k : ℤ
⊢ (i.natAbs * j.natAbs).gcd (i.natAbs * k.natAbs) = i.natAbs * j.natAbs.gcd k.natAbs

tactic: apply Nat.gcd_mul_left
state_before: i j k : ℤ
⊢ (i.natAbs * j.natAbs).gcd (i.natAbs * k.natAbs) = i.natAbs * j.natAbs.gcd k.natAbs
state_after: no goals
Theorem: nndist_div_right
File: Mathlib/Topology/MetricSpace/IsometricSMul.lean

tactic: simp only [div_eq_mul_inv, nndist_mul_right]
state_before: M : Type u
G : Type v
X : Type w
inst✝² : DivInvMonoid M
inst✝¹ : PseudoMetricSpace M
inst✝ : IsometricSMul Mᵐᵒᵖ M
a b c : M
⊢ nndist (a / c) (b / c) = nndist a b
state_after: no goals
Theorem: Polynomial.natDegree_comp
File: Mathlib/Algebra/Polynomial/Degree/Lemmas.lean

tactic: by_cases q0 : q.natDegree = 0
state_before: R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
a : R
⊢ (p.comp q).natDegree = p.natDegree * q.natDegree
state_after: case pos
R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
a : R
q0 : q.natDegree = 0
⊢ (p.comp q).natDegree = p.natDegree * q.natDegree

case neg
R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
a : R
q0 : ¬q.natDegree = 0
⊢ (p.comp q).natDegree = p.natDegree * q.natDegree

tactic: rw [degree_le_zero_iff.mp (natDegree_eq_zero_iff_degree_le_zero.mp q0), comp_C, natDegree_C,
  natDegree_C, mul_zero]
state_before: case pos
R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
a : R
q0 : q.natDegree = 0
⊢ (p.comp q).natDegree = p.natDegree * q.natDegree
state_after: no goals

tactic: by_cases p0 : p = 0
state_before: case neg
R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
a : R
q0 : ¬q.natDegree = 0
⊢ (p.comp q).natDegree = p.natDegree * q.natDegree
state_after: case pos
R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
a : R
q0 : ¬q.natDegree = 0
p0 : p = 0
⊢ (p.comp q).natDegree = p.natDegree * q.natDegree

case neg
R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
a : R
q0 : ¬q.natDegree = 0
p0 : ¬p = 0
⊢ (p.comp q).natDegree = p.natDegree * q.natDegree

tactic: refine le_antisymm natDegree_comp_le (le_natDegree_of_ne_zero ?_)
state_before: case neg
R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
a : R
q0 : ¬q.natDegree = 0
p0 : ¬p = 0
⊢ (p.comp q).natDegree = p.natDegree * q.natDegree
state_after: case neg
R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
a : R
q0 : ¬q.natDegree = 0
p0 : ¬p = 0
⊢ (p.comp q).coeff (p.natDegree * q.natDegree) ≠ 0

tactic: simp only [coeff_comp_degree_mul_degree q0, p0, mul_eq_zero, leadingCoeff_eq_zero, or_self_iff,
  ne_zero_of_natDegree_gt (Nat.pos_of_ne_zero q0), pow_ne_zero, Ne, not_false_iff]
state_before: case neg
R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
a : R
q0 : ¬q.natDegree = 0
p0 : ¬p = 0
⊢ (p.comp q).coeff (p.natDegree * q.natDegree) ≠ 0
state_after: no goals

tactic: simp only [p0, zero_comp, natDegree_zero, zero_mul]
state_before: case pos
R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
a : R
q0 : ¬q.natDegree = 0
p0 : p = 0
⊢ (p.comp q).natDegree = p.natDegree * q.natDegree
state_after: no goals
Theorem: Matroid.Basis.basis_restriction
File: Mathlib/Data/Matroid/Restrict.lean

tactic: obtain ⟨R, hR, rfl⟩ := hNM
state_before: α : Type u_1
M : Matroid α
R I J X Y : Set α
N : Matroid α
hI : M.Basis I X
hNM : N ≤r M
hX : X ⊆ N.E
⊢ N.Basis I X
state_after: case intro.intro
α : Type u_1
M : Matroid α
R✝ I J X Y : Set α
hI : M.Basis I X
R : Set α
hR : R ⊆ M.E
hX : X ⊆ (M ↾ R).E
⊢ (M ↾ R).Basis I X

tactic: rwa [basis_restrict_iff, and_iff_left (show X ⊆ R from hX)]
state_before: case intro.intro
α : Type u_1
M : Matroid α
R✝ I J X Y : Set α
hI : M.Basis I X
R : Set α
hR : R ⊆ M.E
hX : X ⊆ (M ↾ R).E
⊢ (M ↾ R).Basis I X
state_after: no goals
Theorem: CompositionSeries.total
File: Mathlib/Order/JordanHolder.lean

tactic: rcases Set.mem_range.1 hx with ⟨i, rfl⟩
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x y : X
hx : x ∈ s
hy : y ∈ s
⊢ x ≤ y ∨ y ≤ x
state_after: case intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
y : X
hy : y ∈ s
i : Fin (s.length + 1)
hx : s.toFun i ∈ s
⊢ s.toFun i ≤ y ∨ y ≤ s.toFun i

tactic: rcases Set.mem_range.1 hy with ⟨j, rfl⟩
state_before: case intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
y : X
hy : y ∈ s
i : Fin (s.length + 1)
hx : s.toFun i ∈ s
⊢ s.toFun i ≤ y ∨ y ≤ s.toFun i
state_after: case intro.intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
i : Fin (s.length + 1)
hx : s.toFun i ∈ s
j : Fin (s.length + 1)
hy : s.toFun j ∈ s
⊢ s.toFun i ≤ s.toFun j ∨ s.toFun j ≤ s.toFun i

tactic: rw [s.strictMono.le_iff_le, s.strictMono.le_iff_le]
state_before: case intro.intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
i : Fin (s.length + 1)
hx : s.toFun i ∈ s
j : Fin (s.length + 1)
hy : s.toFun j ∈ s
⊢ s.toFun i ≤ s.toFun j ∨ s.toFun j ≤ s.toFun i
state_after: case intro.intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
i : Fin (s.length + 1)
hx : s.toFun i ∈ s
j : Fin (s.length + 1)
hy : s.toFun j ∈ s
⊢ i ≤ j ∨ j ≤ i

tactic: exact le_total i j
state_before: case intro.intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
i : Fin (s.length + 1)
hx : s.toFun i ∈ s
j : Fin (s.length + 1)
hy : s.toFun j ∈ s
⊢ i ≤ j ∨ j ≤ i
state_after: no goals