1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: IntermediateField.adjoin_eq_top_of_adjoin_eq_top
File: Mathlib/FieldTheory/Adjoin.lean

tactic: rw [restrictScalars_top, ← top_le_iff, ← hprim, adjoin_le_iff,
  coe_restrictScalars, ← adjoin_le_iff]
state_before: F : Type u_1
inst✝⁸ : Field F
E : Type u_2
inst✝⁷ : Field E
inst✝⁶ : Algebra F E
α : E
K : Type u
inst✝⁵ : Field K
inst✝⁴ : Algebra F K
L : Type u_3
inst✝³ : Field L
inst✝² : Algebra K L
inst✝¹ : Algebra E K
inst✝ : IsScalarTower F E K
S : Set K
hprim : adjoin F S = ⊤
⊢ restrictScalars F (adjoin E S) = restrictScalars F ⊤
state_after: no goals
Theorem: Polynomial.cyclotomic.roots_to_finset_eq_primitiveRoots
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Roots.lean

tactic: ext a
state_before: R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
⊢ { val := (cyclotomic n R).roots, nodup := ⋯ } = primitiveRoots n R
state_after: case a
R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
a : R
⊢ a ∈ { val := (cyclotomic n R).roots, nodup := ⋯ } ↔ a ∈ primitiveRoots n R

tactic: simp only [mem_primitiveRoots, NeZero.pos_of_neZero_natCast R]
state_before: case a
R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
a : R
⊢ a ∈ { val := (cyclotomic n R).roots, nodup := ⋯ } ↔ a ∈ primitiveRoots n R
state_after: case a
R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
a : R
⊢ a ∈ { val := (cyclotomic n R).roots, nodup := ⋯ } ↔ IsPrimitiveRoot a n

tactic: convert isRoot_cyclotomic_iff (n := n) (μ := a)
state_before: case a
R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
a : R
⊢ a ∈ { val := (cyclotomic n R).roots, nodup := ⋯ } ↔ IsPrimitiveRoot a n
state_after: case h.e'_1.a
R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
a : R
⊢ a ∈ { val := (cyclotomic n R).roots, nodup := ⋯ } ↔ (cyclotomic n R).IsRoot a

tactic: simp [cyclotomic_ne_zero n R]
state_before: case h.e'_1.a
R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
a : R
⊢ a ∈ { val := (cyclotomic n R).roots, nodup := ⋯ } ↔ (cyclotomic n R).IsRoot a
state_after: no goals
Theorem: EuclideanDomain.lcm_zero_right
File: Mathlib/Algebra/EuclideanDomain/Basic.lean

tactic: rw [lcm, mul_zero, zero_div]
state_before: R : Type u
inst✝¹ : EuclideanDomain R
inst✝ : DecidableEq R
x : R
⊢ lcm x 0 = 0
state_after: no goals
Theorem: nilpotencyClass_zero_iff_subsingleton
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: rw [Group.nilpotencyClass, @Nat.find_eq_zero _ (Classical.decPred _), upperCentralSeries_zero,
  subsingleton_iff_bot_eq_top, Subgroup.subsingleton_iff]
state_before: G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
inst✝ : Group.IsNilpotent G
⊢ Group.nilpotencyClass G = 0 ↔ Subsingleton G
state_after: no goals
Theorem: Matrix.scalar_commute_iff
File: Mathlib/Data/Matrix/Basic.lean

tactic: simp_rw [Commute, SemiconjBy, scalar_apply, ← smul_eq_diagonal_mul, ← op_smul_eq_mul_diagonal]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : Semiring α
inst✝¹ : DecidableEq n
inst✝ : Fintype n
r : α
M : Matrix n n α
⊢ Commute ((scalar n) r) M ↔ r • M = MulOpposite.op r • M
state_after: no goals
Theorem: CategoryTheory.Bicategory.associator_inv_naturality_middle
File: Mathlib/CategoryTheory/Bicategory/Basic.lean

tactic: simp
state_before: B : Type u
inst✝ : Bicategory B
a b c d e : B
f : a ⟶ b
g g' : b ⟶ c
η : g ⟶ g'
h : c ⟶ d
⊢ f ◁ η ▷ h ≫ (α_ f g' h).inv = (α_ f g h).inv ≫ (f ◁ η) ▷ h
state_after: no goals
Theorem: Polynomial.coeff_sub_eq_neg_right_of_lt
File: Mathlib/Algebra/Polynomial/Degree/Lemmas.lean

tactic: rwa [sub_eq_add_neg, coeff_add_eq_right_of_lt, coeff_neg]
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Ring R
p q : R[X]
df : p.natDegree < n
⊢ (p - q).coeff n = -q.coeff n
state_after: no goals
Theorem: AlgebraicGeometry.ProjIsoSpecTopComponent.FromSpec.carrier.asIdeal.homogeneous
File: Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Scheme.lean

tactic: simpa only [proj_apply, decompose_coe, of_eq_same] using ha _
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
hm : 0 < m
q : ↑↑(Spec A⁰_ f).toPresheafedSpace
i : ℕ
a : A
ha : a ∈ asIdeal f_deg hm q
j : ℕ
h : i = j
⊢ HomogeneousLocalization.mk
      { deg := m * i, num := ⟨(proj 𝒜 i) ↑(((decompose 𝒜) a) i) ^ m, ⋯⟩, den := ⟨f ^ i, ⋯⟩, den_mem := ⋯ } ∈
    q.asIdeal
state_after: no goals

tactic: simpa only [proj_apply, decompose_of_mem_ne 𝒜 (Submodule.coe_mem (decompose 𝒜 a i)) h,
  zero_pow hm.ne', map_zero] using carrier.zero_mem f_deg hm q j
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
hm : 0 < m
q : ↑↑(Spec A⁰_ f).toPresheafedSpace
i : ℕ
a : A
ha : a ∈ asIdeal f_deg hm q
j : ℕ
h : ¬i = j
⊢ HomogeneousLocalization.mk
      { deg := m * j, num := ⟨(proj 𝒜 j) ↑(((decompose 𝒜) a) i) ^ m, ⋯⟩, den := ⟨f ^ j, ⋯⟩, den_mem := ⋯ } ∈
    q.asIdeal
state_after: no goals
Theorem: Asymptotics.IsBigOWith.eq_zero_imp
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: simpa [hg] using hx
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
inst✝¹³ : Norm E
inst✝¹² : Norm F
inst✝¹¹ : Norm G
inst✝¹⁰ : SeminormedAddCommGroup E'
inst✝⁹ : SeminormedAddCommGroup F'
inst✝⁸ : SeminormedAddCommGroup G'
inst✝⁷ : NormedAddCommGroup E''
inst✝⁶ : NormedAddCommGroup F''
inst✝⁵ : NormedAddCommGroup G''
inst✝⁴ : SeminormedRing R
inst✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
h : IsBigOWith c l f'' g''
x : α
hx : ‖f'' x‖ ≤ c * ‖g'' x‖
hg : g'' x = 0
⊢ ‖f'' x‖ ≤ 0
state_after: no goals
Theorem: ceilDiv_one
File: Mathlib/Algebra/Order/Floor/Div.lean

tactic: simp [zero_lt_one' α]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : OrderedSemiring α
inst✝³ : OrderedAddCommMonoid β
inst✝² : MulActionWithZero α β
inst✝¹ : CeilDiv α β
a : α
inst✝ : Nontrivial α
b c : β
⊢ b ⌈/⌉ 1 ≤ c ↔ b ≤ c
state_after: no goals
Theorem: abs_le
File: Mathlib/Algebra/Order/Group/Abs.lean

tactic: rw [abs_le', and_comm, @neg_le α]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a b c d : α
⊢ |a| ≤ b ↔ -b ≤ a ∧ a ≤ b
state_after: no goals
Theorem: Nat.factors_lemma
File: Mathlib/Data/Nat/Prime.lean

tactic: apply Nat.ne_of_gt
state_before: n k : ℕ
⊢ k + 2 ≠ 1
state_after: case h
n k : ℕ
⊢ 1 < k + 2

tactic: apply Nat.succ_lt_succ
state_before: case h
n k : ℕ
⊢ 1 < k + 2
state_after: case h.a
n k : ℕ
⊢ 0 < k + 1

tactic: apply Nat.zero_lt_succ
state_before: case h.a
n k : ℕ
⊢ 0 < k + 1
state_after: no goals
Theorem: MeasureTheory.Integrable.div_const
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simp_rw [div_eq_mul_inv, h.mul_const]
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✝ : NormedDivisionRing 𝕜
f✝ f : α → 𝕜
h : Integrable f μ
c : 𝕜
⊢ Integrable (fun x => f x / c) μ
state_after: no goals
Theorem: LocallyConstant.comap_const
File: Mathlib/Topology/LocallyConstant/Basic.lean

tactic: ext
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : C(X, Y)
y : Y
h : ∀ (x : X), f x = y
⊢ comap f = fun g => const X (g y)
state_after: case h.h
X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : C(X, Y)
y : Y
h : ∀ (x : X), f x = y
x✝¹ : LocallyConstant Y Z
x✝ : X
⊢ (comap f x✝¹) x✝ = (const X (x✝¹ y)) x✝

tactic: simp [h]
state_before: case h.h
X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : C(X, Y)
y : Y
h : ∀ (x : X), f x = y
x✝¹ : LocallyConstant Y Z
x✝ : X
⊢ (comap f x✝¹) x✝ = (const X (x✝¹ y)) x✝
state_after: no goals
Theorem: Basis.dual_rank_eq
File: Mathlib/LinearAlgebra/Dual.lean

tactic: classical rw [← lift_umax.{uV,uK}, b.toDualEquiv.lift_rank_eq, lift_id'.{uV,uK}]
state_before: R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : _root_.Finite ι
b : Basis ι K V
⊢ lift.{uK, uV} (Module.rank K V) = Module.rank K (Dual K V)
state_after: no goals

tactic: rw [← lift_umax.{uV,uK}, b.toDualEquiv.lift_rank_eq, lift_id'.{uV,uK}]
state_before: R : Type uR
M : Type uM
K : Type uK
V : Type uV
ι : Type uι
inst✝³ : CommRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : _root_.Finite ι
b : Basis ι K V
⊢ lift.{uK, uV} (Module.rank K V) = Module.rank K (Dual K V)
state_after: no goals
Theorem: Polynomial.splits_prod
File: Mathlib/Algebra/Polynomial/Splits.lean

tactic: classical
refine Finset.induction_on t (fun _ => splits_one i) fun a t hat ih ht => ?_
rw [Finset.forall_mem_insert] at ht; rw [Finset.prod_insert hat]
exact splits_mul i ht.1 (ih ht.2)
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
ι : Type u
s : ι → K[X]
t : Finset ι
⊢ (∀ j ∈ t, Splits i (s j)) → Splits i (∏ x ∈ t, s x)
state_after: no goals

tactic: refine Finset.induction_on t (fun _ => splits_one i) fun a t hat ih ht => ?_
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
ι : Type u
s : ι → K[X]
t : Finset ι
⊢ (∀ j ∈ t, Splits i (s j)) → Splits i (∏ x ∈ t, s x)
state_after: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
ι : Type u
s : ι → K[X]
t✝ : Finset ι
a : ι
t : Finset ι
hat : a ∉ t
ih : (∀ j ∈ t, Splits i (s j)) → Splits i (∏ x ∈ t, s x)
ht : ∀ j ∈ insert a t, Splits i (s j)
⊢ Splits i (∏ x ∈ insert a t, s x)

tactic: rw [Finset.forall_mem_insert] at ht
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
ι : Type u
s : ι → K[X]
t✝ : Finset ι
a : ι
t : Finset ι
hat : a ∉ t
ih : (∀ j ∈ t, Splits i (s j)) → Splits i (∏ x ∈ t, s x)
ht : ∀ j ∈ insert a t, Splits i (s j)
⊢ Splits i (∏ x ∈ insert a t, s x)
state_after: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
ι : Type u
s : ι → K[X]
t✝ : Finset ι
a : ι
t : Finset ι
hat : a ∉ t
ih : (∀ j ∈ t, Splits i (s j)) → Splits i (∏ x ∈ t, s x)
ht : Splits i (s a) ∧ ∀ x ∈ t, Splits i (s x)
⊢ Splits i (∏ x ∈ insert a t, s x)

tactic: rw [Finset.prod_insert hat]
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
ι : Type u
s : ι → K[X]
t✝ : Finset ι
a : ι
t : Finset ι
hat : a ∉ t
ih : (∀ j ∈ t, Splits i (s j)) → Splits i (∏ x ∈ t, s x)
ht : Splits i (s a) ∧ ∀ x ∈ t, Splits i (s x)
⊢ Splits i (∏ x ∈ insert a t, s x)
state_after: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
ι : Type u
s : ι → K[X]
t✝ : Finset ι
a : ι
t : Finset ι
hat : a ∉ t
ih : (∀ j ∈ t, Splits i (s j)) → Splits i (∏ x ∈ t, s x)
ht : Splits i (s a) ∧ ∀ x ∈ t, Splits i (s x)
⊢ Splits i (s a * ∏ x ∈ t, s x)

tactic: exact splits_mul i ht.1 (ih ht.2)
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
ι : Type u
s : ι → K[X]
t✝ : Finset ι
a : ι
t : Finset ι
hat : a ∉ t
ih : (∀ j ∈ t, Splits i (s j)) → Splits i (∏ x ∈ t, s x)
ht : Splits i (s a) ∧ ∀ x ∈ t, Splits i (s x)
⊢ Splits i (s a * ∏ x ∈ t, s x)
state_after: no goals
Theorem: List.rdropWhile_eq_nil_iff
File: Mathlib/Data/List/DropRight.lean

tactic: simp [rdropWhile]
state_before: α : Type u_1
p : α → Bool
l : List α
n : ℕ
⊢ rdropWhile p l = [] ↔ ∀ (x : α), x ∈ l → p x = true
state_after: no goals
Theorem: MeasureTheory.Measure.snd_map_swap
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

tactic: rw [Measure.snd, Measure.map_map measurable_snd measurable_swap]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SFinite ν
ρ : Measure (α × β)
⊢ (map Prod.swap ρ).snd = ρ.fst
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SFinite ν
ρ : Measure (α × β)
⊢ map (Prod.snd ∘ Prod.swap) ρ = ρ.fst

tactic: rfl
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁶ : MeasurableSpace α
inst✝⁵ : MeasurableSpace α'
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace β'
inst✝² : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝¹ : NormedAddCommGroup E
inst✝ : SFinite ν
ρ : Measure (α × β)
⊢ map (Prod.snd ∘ Prod.swap) ρ = ρ.fst
state_after: no goals
Theorem: MeasureTheory.setLIntegral_pdf_le_map
File: Mathlib/Probability/Density.lean

tactic: apply (withDensity_apply_le _ s).trans
state_before: Ω : Type u_1
E : Type u_2
inst✝ : MeasurableSpace E
m : MeasurableSpace Ω
X : Ω → E
ℙ : Measure Ω
μ : autoParam (Measure E) _auto✝
s : Set E
⊢ ∫⁻ (x : E) in s, pdf X ℙ μ x ∂μ ≤ (map X ℙ) s
state_after: Ω : Type u_1
E : Type u_2
inst✝ : MeasurableSpace E
m : MeasurableSpace Ω
X : Ω → E
ℙ : Measure Ω
μ : autoParam (Measure E) _auto✝
s : Set E
⊢ (withDensity μ (pdf X ℙ μ)) s ≤ (map X ℙ) s

tactic: exact withDensity_pdf_le_map _ _ _ s
state_before: Ω : Type u_1
E : Type u_2
inst✝ : MeasurableSpace E
m : MeasurableSpace Ω
X : Ω → E
ℙ : Measure Ω
μ : autoParam (Measure E) _auto✝
s : Set E
⊢ (withDensity μ (pdf X ℙ μ)) s ≤ (map X ℙ) s
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.N₁Γ₀_hom_app
File: Mathlib/AlgebraicTopology/DoldKan/GammaCompN.lean

tactic: change (N₁Γ₀.app K).hom = _
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
⊢ N₁Γ₀.hom.app K =
    (Γ₀.splitting K).toKaroubiNondegComplexIsoN₁.inv ≫ (toKaroubi (ChainComplex C ℕ)).map (Γ₀NondegComplexIso K).hom
state_after: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
⊢ (N₁Γ₀.app K).hom =
    (Γ₀.splitting K).toKaroubiNondegComplexIsoN₁.inv ≫ (toKaroubi (ChainComplex C ℕ)).map (Γ₀NondegComplexIso K).hom

tactic: simp only [N₁Γ₀_app]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
⊢ (N₁Γ₀.app K).hom =
    (Γ₀.splitting K).toKaroubiNondegComplexIsoN₁.inv ≫ (toKaroubi (ChainComplex C ℕ)).map (Γ₀NondegComplexIso K).hom
state_after: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
⊢ ((Γ₀.splitting K).toKaroubiNondegComplexIsoN₁.symm ≪≫
        (toKaroubi (ChainComplex C ℕ)).mapIso (Γ₀NondegComplexIso K)).hom =
    (Γ₀.splitting K).toKaroubiNondegComplexIsoN₁.inv ≫ (toKaroubi (ChainComplex C ℕ)).map (Γ₀NondegComplexIso K).hom

tactic: rfl
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
⊢ ((Γ₀.splitting K).toKaroubiNondegComplexIsoN₁.symm ≪≫
        (toKaroubi (ChainComplex C ℕ)).mapIso (Γ₀NondegComplexIso K)).hom =
    (Γ₀.splitting K).toKaroubiNondegComplexIsoN₁.inv ≫ (toKaroubi (ChainComplex C ℕ)).map (Γ₀NondegComplexIso K).hom
state_after: no goals
Theorem: MeasureTheory.AEEqFun.lintegral_coeFn
File: Mathlib/MeasureTheory/Function/AEEqFun.lean

tactic: rw [← lintegral_mk, mk_coeFn]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] ℝ≥0∞
⊢ ∫⁻ (a : α), ↑f a ∂μ = f.lintegral
state_after: no goals
Theorem: AffineSubspace.convex
File: Mathlib/Analysis/Convex/Basic.lean

tactic: simpa [Convex.combo_eq_smul_sub_add hab] using Q.2 _ hy hx hx
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
Q : AffineSubspace 𝕜 E
x : E
hx : x ∈ ↑Q
y : E
hy : y ∈ ↑Q
a b : 𝕜
x✝¹ : 0 ≤ a
x✝ : 0 ≤ b
hab : a + b = 1
⊢ a • x + b • y ∈ ↑Q
state_after: no goals
Theorem: smul_ball_one
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

tactic: rw [smul_ball, smul_eq_mul, mul_one]
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
⊢ x • ball 1 δ = ball x δ
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.addY_of_X_eq'
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: erw [addY, negY, addZ_of_X_eq hx, mul_zero, sub_zero, zero_pow three_ne_zero, mul_zero, sub_zero,
  neg_mul, negAddY_of_X_eq' hP hQ hx, Odd.neg_pow <| by decide]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hP : W'.Equation P
hQ : W'.Equation Q
hx : P x * Q z ^ 2 = Q x * P z ^ 2
⊢ W'.addY P Q * (P z * Q z) ^ 3 = (-(P y * Q z ^ 3 - Q y * P z ^ 3)) ^ 3
state_after: no goals

tactic: decide
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hP : W'.Equation P
hQ : W'.Equation Q
hx : P x * Q z ^ 2 = Q x * P z ^ 2
⊢ Odd 3
state_after: no goals
Theorem: IsUpperSet.card_inter_le_finset
File: Mathlib/Combinatorics/SetFamily/HarrisKleitman.lean

tactic: rw [← isLowerSet_compl, ← coe_compl] at h𝒜
state_before: α : Type u_1
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
inst✝ : Fintype α
h𝒜 : IsUpperSet ↑𝒜
hℬ : IsLowerSet ↑ℬ
⊢ 2 ^ Fintype.card α * (𝒜 ∩ ℬ).card ≤ 𝒜.card * ℬ.card
state_after: α : Type u_1
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
inst✝ : Fintype α
h𝒜 : IsLowerSet ↑𝒜ᶜ
hℬ : IsLowerSet ↑ℬ
⊢ 2 ^ Fintype.card α * (𝒜 ∩ ℬ).card ≤ 𝒜.card * ℬ.card

tactic: have := h𝒜.le_card_inter_finset hℬ
state_before: α : Type u_1
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
inst✝ : Fintype α
h𝒜 : IsLowerSet ↑𝒜ᶜ
hℬ : IsLowerSet ↑ℬ
⊢ 2 ^ Fintype.card α * (𝒜 ∩ ℬ).card ≤ 𝒜.card * ℬ.card
state_after: α : Type u_1
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
inst✝ : Fintype α
h𝒜 : IsLowerSet ↑𝒜ᶜ
hℬ : IsLowerSet ↑ℬ
this : 𝒜ᶜ.card * ℬ.card ≤ 2 ^ Fintype.card α * (𝒜ᶜ ∩ ℬ).card
⊢ 2 ^ Fintype.card α * (𝒜 ∩ ℬ).card ≤ 𝒜.card * ℬ.card

tactic: rwa [card_compl, Fintype.card_finset, tsub_mul, tsub_le_iff_tsub_le, ← mul_tsub, ←
  card_sdiff inter_subset_right, sdiff_inter_self_right, sdiff_compl,
  _root_.inf_comm] at this
state_before: α : Type u_1
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
inst✝ : Fintype α
h𝒜 : IsLowerSet ↑𝒜ᶜ
hℬ : IsLowerSet ↑ℬ
this : 𝒜ᶜ.card * ℬ.card ≤ 2 ^ Fintype.card α * (𝒜ᶜ ∩ ℬ).card
⊢ 2 ^ Fintype.card α * (𝒜 ∩ ℬ).card ≤ 𝒜.card * ℬ.card
state_after: no goals
Theorem: Metric.denseRange_iff
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

tactic: simp only [mem_closure_iff, exists_range_iff]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x✝ y z : α
ε ε₁ ε₂ : ℝ
s : Set α
f : β → α
x : α
⊢ x ∈ closure (range f) ↔ ∀ r > 0, ∃ y, dist x (f y) < r
state_after: no goals
Theorem: PEquiv.symm_trans_self
File: Mathlib/Data/PEquiv.lean

tactic: simp [symm_trans_rev, self_trans_symm, -symm_symm]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
⊢ (f.symm.trans f).symm = (ofSet {b | (f.symm b).isSome = true}).symm
state_after: no goals
Theorem: MeasureTheory.AEEqFun.integrable_mk
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simp only [Integrable]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → β
hf : AEStronglyMeasurable f μ
⊢ (mk f hf).Integrable ↔ MeasureTheory.Integrable f μ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → β
hf : AEStronglyMeasurable f μ
⊢ MeasureTheory.Integrable (↑(mk f hf)) μ ↔ MeasureTheory.Integrable f μ

tactic: apply integrable_congr
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → β
hf : AEStronglyMeasurable f μ
⊢ MeasureTheory.Integrable (↑(mk f hf)) μ ↔ MeasureTheory.Integrable f μ
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 γ
f : α → β
hf : AEStronglyMeasurable f μ
⊢ ↑(mk f hf) =ᶠ[ae μ] f

tactic: exact coeFn_mk f hf
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 γ
f : α → β
hf : AEStronglyMeasurable f μ
⊢ ↑(mk f hf) =ᶠ[ae μ] f
state_after: no goals
Theorem: HasDerivAt.cpow
File: Mathlib/Analysis/SpecialFunctions/Pow/Deriv.lean

tactic: simpa only [aux] using (hf.hasFDerivAt.cpow hg h0).hasDerivAt
state_before: f g : ℂ → ℂ
s : Set ℂ
f' g' x c : ℂ
hf : HasDerivAt f f' x
hg : HasDerivAt g g' x
h0 : f x ∈ slitPlane
⊢ HasDerivAt (fun x => f x ^ g x) (g x * f x ^ (g x - 1) * f' + f x ^ g x * Complex.log (f x) * g') x
state_after: no goals
Theorem: ascPochhammer_pos
File: Mathlib/RingTheory/Polynomial/Pochhammer.lean

tactic: induction' n with n ih
state_before: S : Type u_1
inst✝ : StrictOrderedSemiring S
n : ℕ
s : S
h : 0 < s
⊢ 0 < eval s (ascPochhammer S n)
state_after: case zero
S : Type u_1
inst✝ : StrictOrderedSemiring S
s : S
h : 0 < s
⊢ 0 < eval s (ascPochhammer S 0)

case succ
S : Type u_1
inst✝ : StrictOrderedSemiring S
s : S
h : 0 < s
n : ℕ
ih : 0 < eval s (ascPochhammer S n)
⊢ 0 < eval s (ascPochhammer S (n + 1))

tactic: simp only [Nat.zero_eq, ascPochhammer_zero, eval_one]
state_before: case zero
S : Type u_1
inst✝ : StrictOrderedSemiring S
s : S
h : 0 < s
⊢ 0 < eval s (ascPochhammer S 0)
state_after: case zero
S : Type u_1
inst✝ : StrictOrderedSemiring S
s : S
h : 0 < s
⊢ 0 < 1

tactic: exact zero_lt_one
state_before: case zero
S : Type u_1
inst✝ : StrictOrderedSemiring S
s : S
h : 0 < s
⊢ 0 < 1
state_after: no goals

tactic: rw [ascPochhammer_succ_right, mul_add, eval_add, ← Nat.cast_comm, eval_natCast_mul, eval_mul_X,
  Nat.cast_comm, ← mul_add]
state_before: case succ
S : Type u_1
inst✝ : StrictOrderedSemiring S
s : S
h : 0 < s
n : ℕ
ih : 0 < eval s (ascPochhammer S n)
⊢ 0 < eval s (ascPochhammer S (n + 1))
state_after: case succ
S : Type u_1
inst✝ : StrictOrderedSemiring S
s : S
h : 0 < s
n : ℕ
ih : 0 < eval s (ascPochhammer S n)
⊢ 0 < eval s (ascPochhammer S n) * (s + ↑n)

tactic: exact mul_pos ih (lt_of_lt_of_le h (le_add_of_nonneg_right (Nat.cast_nonneg n)))
state_before: case succ
S : Type u_1
inst✝ : StrictOrderedSemiring S
s : S
h : 0 < s
n : ℕ
ih : 0 < eval s (ascPochhammer S n)
⊢ 0 < eval s (ascPochhammer S n) * (s + ↑n)
state_after: no goals