1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: LinearMap.trace_comp_comm'
File: Mathlib/LinearAlgebra/Trace.lean

tactic: have h := ext_iff.1 (ext_iff.1 (trace_comp_comm R M N) g) f
state_before: R : Type u_1
inst✝¹² : CommRing R
M : Type u_2
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : Module R M
N : Type u_3
P : Type u_4
inst✝⁹ : AddCommGroup N
inst✝⁸ : Module R N
inst✝⁷ : AddCommGroup P
inst✝⁶ : Module R P
ι : Type u_5
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : Module.Free R N
inst✝² : Module.Finite R N
inst✝¹ : Module.Free R P
inst✝ : Module.Finite R P
f : M →ₗ[R] N
g : N →ₗ[R] M
⊢ (trace R M) (g ∘ₗ f) = (trace R N) (f ∘ₗ g)
state_after: R : Type u_1
inst✝¹² : CommRing R
M : Type u_2
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : Module R M
N : Type u_3
P : Type u_4
inst✝⁹ : AddCommGroup N
inst✝⁸ : Module R N
inst✝⁷ : AddCommGroup P
inst✝⁶ : Module R P
ι : Type u_5
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : Module.Free R N
inst✝² : Module.Finite R N
inst✝¹ : Module.Free R P
inst✝ : Module.Finite R P
f : M →ₗ[R] N
g : N →ₗ[R] M
h : (((llcomp R M N M).compr₂ (trace R M)) g) f = (((llcomp R N M N).flip.compr₂ (trace R N)) g) f
⊢ (trace R M) (g ∘ₗ f) = (trace R N) (f ∘ₗ g)

tactic: simp only [llcomp_apply', compr₂_apply, flip_apply] at h
state_before: R : Type u_1
inst✝¹² : CommRing R
M : Type u_2
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : Module R M
N : Type u_3
P : Type u_4
inst✝⁹ : AddCommGroup N
inst✝⁸ : Module R N
inst✝⁷ : AddCommGroup P
inst✝⁶ : Module R P
ι : Type u_5
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : Module.Free R N
inst✝² : Module.Finite R N
inst✝¹ : Module.Free R P
inst✝ : Module.Finite R P
f : M →ₗ[R] N
g : N →ₗ[R] M
h : (((llcomp R M N M).compr₂ (trace R M)) g) f = (((llcomp R N M N).flip.compr₂ (trace R N)) g) f
⊢ (trace R M) (g ∘ₗ f) = (trace R N) (f ∘ₗ g)
state_after: R : Type u_1
inst✝¹² : CommRing R
M : Type u_2
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : Module R M
N : Type u_3
P : Type u_4
inst✝⁹ : AddCommGroup N
inst✝⁸ : Module R N
inst✝⁷ : AddCommGroup P
inst✝⁶ : Module R P
ι : Type u_5
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : Module.Free R N
inst✝² : Module.Finite R N
inst✝¹ : Module.Free R P
inst✝ : Module.Finite R P
f : M →ₗ[R] N
g : N →ₗ[R] M
h : (trace R M) (g ∘ₗ f) = (trace R N) (f ∘ₗ g)
⊢ (trace R M) (g ∘ₗ f) = (trace R N) (f ∘ₗ g)

tactic: exact h
state_before: R : Type u_1
inst✝¹² : CommRing R
M : Type u_2
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : Module R M
N : Type u_3
P : Type u_4
inst✝⁹ : AddCommGroup N
inst✝⁸ : Module R N
inst✝⁷ : AddCommGroup P
inst✝⁶ : Module R P
ι : Type u_5
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : Module.Free R N
inst✝² : Module.Finite R N
inst✝¹ : Module.Free R P
inst✝ : Module.Finite R P
f : M →ₗ[R] N
g : N →ₗ[R] M
h : (trace R M) (g ∘ₗ f) = (trace R N) (f ∘ₗ g)
⊢ (trace R M) (g ∘ₗ f) = (trace R N) (f ∘ₗ g)
state_after: no goals
Theorem: CategoryTheory.Limits.Multifork.pi_condition
File: Mathlib/CategoryTheory/Limits/Shapes/Multiequalizer.lean

tactic: ext
state_before: C : Type u
inst✝² : Category.{v, u} C
I : MulticospanIndex C
K : Multifork I
inst✝¹ : HasProduct I.left
inst✝ : HasProduct I.right
⊢ Pi.lift K.ι ≫ I.fstPiMap = Pi.lift K.ι ≫ I.sndPiMap
state_after: case h
C : Type u
inst✝² : Category.{v, u} C
I : MulticospanIndex C
K : Multifork I
inst✝¹ : HasProduct I.left
inst✝ : HasProduct I.right
b✝ : I.R
⊢ (Pi.lift K.ι ≫ I.fstPiMap) ≫ Pi.π I.right b✝ = (Pi.lift K.ι ≫ I.sndPiMap) ≫ Pi.π I.right b✝

tactic: simp
state_before: case h
C : Type u
inst✝² : Category.{v, u} C
I : MulticospanIndex C
K : Multifork I
inst✝¹ : HasProduct I.left
inst✝ : HasProduct I.right
b✝ : I.R
⊢ (Pi.lift K.ι ≫ I.fstPiMap) ≫ Pi.π I.right b✝ = (Pi.lift K.ι ≫ I.sndPiMap) ≫ Pi.π I.right b✝
state_after: no goals
Theorem: Complex.comap_exp_cobounded
File: Mathlib/Analysis/SpecialFunctions/Exp.lean

tactic: rw [Real.comap_exp_atTop]
state_before: ⊢ comap re (comap Real.exp atTop) = comap re atTop
state_after: no goals
Theorem: FirstOrder.Ring.realize_neg
File: Mathlib/ModelTheory/Algebra/Ring/Basic.lean

tactic: simp [neg_def, funMap_neg]
state_before: α : Type u_1
R : Type u_2
inst✝⁵ : Add R
inst✝⁴ : Mul R
inst✝³ : Neg R
inst✝² : One R
inst✝¹ : Zero R
inst✝ : CompatibleRing R
x : ring.Term α
v : α → R
⊢ Term.realize v (-x) = -Term.realize v x
state_after: no goals
Theorem: CategoryTheory.Limits.colimit.ι_coconeMorphism
File: Mathlib/CategoryTheory/Limits/HasLimits.lean

tactic: simp
state_before: J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u
inst✝¹ : Category.{v, u} C
F✝ F : J ⥤ C
inst✝ : HasColimit F
c : Cocone F
j : J
⊢ ι F j ≫ (coconeMorphism c).hom = c.ι.app j
state_after: no goals
Theorem: hasGradientAtFilter_const
File: Mathlib/Analysis/Calculus/Gradient/Basic.lean

tactic: rw [HasGradientAtFilter, map_zero]
state_before: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
c : 𝕜
⊢ HasGradientAtFilter (fun x => c) 0 x L
state_after: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
c : 𝕜
⊢ HasFDerivAtFilter (fun x => c) 0 x L

tactic: apply hasFDerivAtFilter_const c x L
state_before: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
c : 𝕜
⊢ HasFDerivAtFilter (fun x => c) 0 x L
state_after: no goals
Theorem: Part.some_append_some
File: Mathlib/Data/Part.lean

tactic: simp [append_def]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Append α
a b : α
⊢ some a ++ some b = some (a ++ b)
state_after: no goals
Theorem: Multiset.toFinset_card_eq_one_iff
File: Mathlib/Data/Finset/Card.lean

tactic: simp_rw [card_eq_one, Multiset.toFinset_eq_singleton_iff, exists_and_left]
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
s : Multiset α
⊢ s.toFinset.card = 1 ↔ Multiset.card s ≠ 0 ∧ ∃ a, s = Multiset.card s • {a}
state_after: no goals
Theorem: EReal.top_mul_of_neg
File: Mathlib/Data/Real/EReal.lean

tactic: rw [EReal.mul_comm]
state_before: x : EReal
h : x < 0
⊢ ⊤ * x = ⊥
state_after: x : EReal
h : x < 0
⊢ x * ⊤ = ⊥

tactic: exact mul_top_of_neg h
state_before: x : EReal
h : x < 0
⊢ x * ⊤ = ⊥
state_after: no goals
Theorem: ContinuousLinearMap.continuous_integral_comp_L1
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

tactic: rw [← funext L.integral_compLp]
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝⁶ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
p : ℝ≥0∞
inst✝ : NormedSpace ℝ F
L : E →L[𝕜] F
⊢ Continuous fun φ => ∫ (x : X), L (↑↑φ x) ∂μ
state_after: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝⁶ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
p : ℝ≥0∞
inst✝ : NormedSpace ℝ F
L : E →L[𝕜] F
⊢ Continuous fun x => ∫ (x_1 : X), ↑↑(L.compLp x) x_1 ∂μ

tactic: exact continuous_integral.comp (L.compLpL 1 μ).continuous
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝⁶ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
p : ℝ≥0∞
inst✝ : NormedSpace ℝ F
L : E →L[𝕜] F
⊢ Continuous fun x => ∫ (x_1 : X), ↑↑(L.compLp x) x_1 ∂μ
state_after: no goals
Theorem: le_iSup_iff
File: Mathlib/Order/CompleteLattice.lean

tactic: simp [iSup, le_sSup_iff, upperBounds]
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteSemilatticeSup α
s✝ t : Set α
a b : α
s : ι → α
⊢ a ≤ iSup s ↔ ∀ (b : α), (∀ (i : ι), s i ≤ b) → a ≤ b
state_after: no goals
Theorem: TopCat.induced_of_isLimit
File: Mathlib/Topology/Category/TopCat/Limits/Products.lean

tactic: let homeo := homeoOfIso (hC.conePointUniqueUpToIso (limitConeInfiIsLimit F))
state_before: J : Type v
inst✝ : SmallCategory J
F : J ⥤ TopCat
C : Cone F
hC : IsLimit C
⊢ C.pt.str = ⨅ j, induced (⇑(C.π.app j)) (F.obj j).str
state_after: J : Type v
inst✝ : SmallCategory J
F : J ⥤ TopCat
C : Cone F
hC : IsLimit C
homeo : ↑C.pt ≃ₜ ↑(limitConeInfi F).pt := homeoOfIso (hC.conePointUniqueUpToIso (limitConeInfiIsLimit F))
⊢ C.pt.str = ⨅ j, induced (⇑(C.π.app j)) (F.obj j).str

tactic: refine homeo.inducing.induced.trans ?_
state_before: J : Type v
inst✝ : SmallCategory J
F : J ⥤ TopCat
C : Cone F
hC : IsLimit C
homeo : ↑C.pt ≃ₜ ↑(limitConeInfi F).pt := homeoOfIso (hC.conePointUniqueUpToIso (limitConeInfiIsLimit F))
⊢ C.pt.str = ⨅ j, induced (⇑(C.π.app j)) (F.obj j).str
state_after: J : Type v
inst✝ : SmallCategory J
F : J ⥤ TopCat
C : Cone F
hC : IsLimit C
homeo : ↑C.pt ≃ₜ ↑(limitConeInfi F).pt := homeoOfIso (hC.conePointUniqueUpToIso (limitConeInfiIsLimit F))
⊢ induced (⇑homeo) (limitConeInfi F).pt.topologicalSpace_coe = ⨅ j, induced (⇑(C.π.app j)) (F.obj j).str

tactic: change induced homeo (⨅ j : J, _) = _
state_before: J : Type v
inst✝ : SmallCategory J
F : J ⥤ TopCat
C : Cone F
hC : IsLimit C
homeo : ↑C.pt ≃ₜ ↑(limitConeInfi F).pt := homeoOfIso (hC.conePointUniqueUpToIso (limitConeInfiIsLimit F))
⊢ induced (⇑homeo) (limitConeInfi F).pt.topologicalSpace_coe = ⨅ j, induced (⇑(C.π.app j)) (F.obj j).str
state_after: J : Type v
inst✝ : SmallCategory J
F : J ⥤ TopCat
C : Cone F
hC : IsLimit C
homeo : ↑C.pt ≃ₜ ↑(limitConeInfi F).pt := homeoOfIso (hC.conePointUniqueUpToIso (limitConeInfiIsLimit F))
⊢ induced (⇑homeo) (⨅ j, induced ((Types.limitCone (F ⋙ forget TopCat)).π.app j) (F.obj j).str) =
    ⨅ j, induced (⇑(C.π.app j)) (F.obj j).str

tactic: simp [induced_iInf, induced_compose]
state_before: J : Type v
inst✝ : SmallCategory J
F : J ⥤ TopCat
C : Cone F
hC : IsLimit C
homeo : ↑C.pt ≃ₜ ↑(limitConeInfi F).pt := homeoOfIso (hC.conePointUniqueUpToIso (limitConeInfiIsLimit F))
⊢ induced (⇑homeo) (⨅ j, induced ((Types.limitCone (F ⋙ forget TopCat)).π.app j) (F.obj j).str) =
    ⨅ j, induced (⇑(C.π.app j)) (F.obj j).str
state_after: J : Type v
inst✝ : SmallCategory J
F : J ⥤ TopCat
C : Cone F
hC : IsLimit C
homeo : ↑C.pt ≃ₜ ↑(limitConeInfi F).pt := homeoOfIso (hC.conePointUniqueUpToIso (limitConeInfiIsLimit F))
⊢ ⨅ i, induced ((Types.limitCone (F ⋙ forget TopCat)).π.app i ∘ ⇑homeo) (F.obj i).str =
    ⨅ j, induced (⇑(C.π.app j)) (F.obj j).str

tactic: rfl
state_before: J : Type v
inst✝ : SmallCategory J
F : J ⥤ TopCat
C : Cone F
hC : IsLimit C
homeo : ↑C.pt ≃ₜ ↑(limitConeInfi F).pt := homeoOfIso (hC.conePointUniqueUpToIso (limitConeInfiIsLimit F))
⊢ ⨅ i, induced ((Types.limitCone (F ⋙ forget TopCat)).π.app i ∘ ⇑homeo) (F.obj i).str =
    ⨅ j, induced (⇑(C.π.app j)) (F.obj j).str
state_after: no goals
Theorem: Complex.arg_of_re_neg_of_im_nonneg
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: simp only [arg, hx_re.not_le, hx_im, if_true, if_false]
state_before: a x✝ z x : ℂ
hx_re : x.re < 0
hx_im : 0 ≤ x.im
⊢ x.arg = Real.arcsin ((-x).im / abs x) + π
state_after: no goals
Theorem: Equiv.Perm.decomposeFin_symm_of_refl
File: Mathlib/GroupTheory/Perm/Fin.lean

tactic: simp [Equiv.Perm.decomposeFin, Equiv.permCongr_def]
state_before: n : ℕ
p : Fin (n + 1)
⊢ decomposeFin.symm (p, Equiv.refl (Fin n)) = swap 0 p
state_after: no goals
Theorem: Cardinal.toNat_add
File: Mathlib/SetTheory/Cardinal/ToNat.lean

tactic: lift c to ℕ using hc
state_before: α : Type u
c d : Cardinal.{u}
hc : c < ℵ₀
hd : d < ℵ₀
⊢ toNat (c + d) = toNat c + toNat d
state_after: case intro
α : Type u
d : Cardinal.{u}
hd : d < ℵ₀
c : ℕ
⊢ toNat (↑c + d) = toNat ↑c + toNat d

tactic: lift d to ℕ using hd
state_before: case intro
α : Type u
d : Cardinal.{u}
hd : d < ℵ₀
c : ℕ
⊢ toNat (↑c + d) = toNat ↑c + toNat d
state_after: case intro.intro
α : Type u
c d : ℕ
⊢ toNat (↑c + ↑d) = toNat ↑c + toNat ↑d

tactic: norm_cast
state_before: case intro.intro
α : Type u
c d : ℕ
⊢ toNat (↑c + ↑d) = toNat ↑c + toNat ↑d
state_after: no goals
Theorem: conj_cong_is_cong
File: Mathlib/NumberTheory/ModularForms/CongruenceSubgroups.lean

tactic: obtain ⟨N, HN⟩ := h
state_before: N : ℕ
g : ConjAct SL(2, ℤ)
Γ : Subgroup SL(2, ℤ)
h : IsCongruenceSubgroup Γ
⊢ IsCongruenceSubgroup (g • Γ)
state_after: case intro
N✝ : ℕ
g : ConjAct SL(2, ℤ)
Γ : Subgroup SL(2, ℤ)
N : ℕ+
HN : Gamma ↑N ≤ Γ
⊢ IsCongruenceSubgroup (g • Γ)

tactic: refine ⟨N, ?_⟩
state_before: case intro
N✝ : ℕ
g : ConjAct SL(2, ℤ)
Γ : Subgroup SL(2, ℤ)
N : ℕ+
HN : Gamma ↑N ≤ Γ
⊢ IsCongruenceSubgroup (g • Γ)
state_after: case intro
N✝ : ℕ
g : ConjAct SL(2, ℤ)
Γ : Subgroup SL(2, ℤ)
N : ℕ+
HN : Gamma ↑N ≤ Γ
⊢ Gamma ↑N ≤ g • Γ

tactic: rw [← Gamma_cong_eq_self N g, Subgroup.pointwise_smul_le_pointwise_smul_iff]
state_before: case intro
N✝ : ℕ
g : ConjAct SL(2, ℤ)
Γ : Subgroup SL(2, ℤ)
N : ℕ+
HN : Gamma ↑N ≤ Γ
⊢ Gamma ↑N ≤ g • Γ
state_after: case intro
N✝ : ℕ
g : ConjAct SL(2, ℤ)
Γ : Subgroup SL(2, ℤ)
N : ℕ+
HN : Gamma ↑N ≤ Γ
⊢ Gamma ↑N ≤ Γ

tactic: exact HN
state_before: case intro
N✝ : ℕ
g : ConjAct SL(2, ℤ)
Γ : Subgroup SL(2, ℤ)
N : ℕ+
HN : Gamma ↑N ≤ Γ
⊢ Gamma ↑N ≤ Γ
state_after: no goals
Theorem: CategoryTheory.ShortComplex.opcyclesMap'_neg
File: Mathlib/Algebra/Homology/ShortComplex/Preadditive.lean

tactic: have γ : RightHomologyMapData φ h₁ h₂ := default
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ φ' : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
⊢ opcyclesMap' (-φ) h₁ h₂ = -opcyclesMap' φ h₁ h₂
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ φ' : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
γ : RightHomologyMapData φ h₁ h₂
⊢ opcyclesMap' (-φ) h₁ h₂ = -opcyclesMap' φ h₁ h₂

tactic: simp only [γ.opcyclesMap'_eq, γ.neg.opcyclesMap'_eq, RightHomologyMapData.neg_φQ]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ φ' : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
γ : RightHomologyMapData φ h₁ h₂
⊢ opcyclesMap' (-φ) h₁ h₂ = -opcyclesMap' φ h₁ h₂
state_after: no goals
Theorem: Int.succ_neg_succ
File: Mathlib/Data/Int/Defs.lean

tactic: rw [neg_succ, succ_pred]
state_before: a✝ b c d m n a : ℤ
⊢ (-a.succ).succ = -a
state_after: no goals
Theorem: CategoryTheory.ShortComplex.mapLeftHomologyIso_inv_naturality
File: Mathlib/Algebra/Homology/ShortComplex/PreservesHomology.lean

tactic: rw [← cancel_epi (S₁.mapLeftHomologyIso F).hom, ← mapLeftHomologyIso_hom_naturality_assoc,
  Iso.hom_inv_id, comp_id, Iso.hom_inv_id_assoc]
state_before: C : Type u_1
D : Type u_2
inst✝⁹ : Category.{u_3, u_1} C
inst✝⁸ : Category.{u_4, u_2} D
inst✝⁷ : HasZeroMorphisms C
inst✝⁶ : HasZeroMorphisms D
S : ShortComplex C
h₁✝ : S.LeftHomologyData
h₂✝ : S.RightHomologyData
F✝ : C ⥤ D
inst✝⁵ : F✝.PreservesZeroMorphisms
hl : S.LeftHomologyData
hr : S.RightHomologyData
S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
hl₁ : S₁.LeftHomologyData
hr₁ : S₁.RightHomologyData
hl₂ : S₂.LeftHomologyData
hr₂ : S₂.RightHomologyData
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
F : C ⥤ D
inst✝⁴ : F.PreservesZeroMorphisms
inst✝³ : S₁.HasLeftHomology
inst✝² : S₂.HasLeftHomology
inst✝¹ : F.PreservesLeftHomologyOf S₁
inst✝ : F.PreservesLeftHomologyOf S₂
⊢ F.map (leftHomologyMap φ) ≫ (S₂.mapLeftHomologyIso F).inv =
    (S₁.mapLeftHomologyIso F).inv ≫ leftHomologyMap (F.mapShortComplex.map φ)
state_after: no goals
Theorem: PowerSeries.trunc_add
File: Mathlib/RingTheory/PowerSeries/Trunc.lean

tactic: simp only [coeff_trunc, AddMonoidHom.map_add, Polynomial.coeff_add]
state_before: R : Type u_1
inst✝ : Semiring R
n : ℕ
φ ψ : R⟦X⟧
m : ℕ
⊢ (trunc n (φ + ψ)).coeff m = (trunc n φ + trunc n ψ).coeff m
state_after: R : Type u_1
inst✝ : Semiring R
n : ℕ
φ ψ : R⟦X⟧
m : ℕ
⊢ (if m < n then (coeff R m) (φ + ψ) else 0) = (if m < n then (coeff R m) φ else 0) + if m < n then (coeff R m) ψ else 0

tactic: split_ifs with H
state_before: R : Type u_1
inst✝ : Semiring R
n : ℕ
φ ψ : R⟦X⟧
m : ℕ
⊢ (if m < n then (coeff R m) (φ + ψ) else 0) = (if m < n then (coeff R m) φ else 0) + if m < n then (coeff R m) ψ else 0
state_after: case pos
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ ψ : R⟦X⟧
m : ℕ
H : m < n
⊢ (coeff R m) (φ + ψ) = (coeff R m) φ + (coeff R m) ψ

case neg
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ ψ : R⟦X⟧
m : ℕ
H : ¬m < n
⊢ 0 = 0 + 0

tactic: rfl
state_before: case pos
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ ψ : R⟦X⟧
m : ℕ
H : m < n
⊢ (coeff R m) (φ + ψ) = (coeff R m) φ + (coeff R m) ψ
state_after: no goals

tactic: rw [zero_add]
state_before: case neg
R : Type u_1
inst✝ : Semiring R
n : ℕ
φ ψ : R⟦X⟧
m : ℕ
H : ¬m < n
⊢ 0 = 0 + 0
state_after: no goals
Theorem: PiTensorProduct.lift_comp_map
File: Mathlib/LinearAlgebra/PiTensorProduct.lean

tactic: ext
state_before: ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝¹¹ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝¹⁰ : (i : ι) → AddCommMonoid (s i)
inst✝⁹ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
E : Type u_9
inst✝⁶ : AddCommMonoid E
inst✝⁵ : Module R E
F : Type u_10
inst✝⁴ : AddCommMonoid F
t : ι → Type u_11
t' : ι → Type u_12
inst✝³ : (i : ι) → AddCommMonoid (t i)
inst✝² : (i : ι) → Module R (t i)
inst✝¹ : (i : ι) → AddCommMonoid (t' i)
inst✝ : (i : ι) → Module R (t' i)
g : (i : ι) → t i →ₗ[R] t' i
f : (i : ι) → s i →ₗ[R] t i
h : MultilinearMap R t E
⊢ lift h ∘ₗ map f = lift (h.compLinearMap f)
state_after: case H.H
ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝¹¹ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝¹⁰ : (i : ι) → AddCommMonoid (s i)
inst✝⁹ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
E : Type u_9
inst✝⁶ : AddCommMonoid E
inst✝⁵ : Module R E
F : Type u_10
inst✝⁴ : AddCommMonoid F
t : ι → Type u_11
t' : ι → Type u_12
inst✝³ : (i : ι) → AddCommMonoid (t i)
inst✝² : (i : ι) → Module R (t i)
inst✝¹ : (i : ι) → AddCommMonoid (t' i)
inst✝ : (i : ι) → Module R (t' i)
g : (i : ι) → t i →ₗ[R] t' i
f : (i : ι) → s i →ₗ[R] t i
h : MultilinearMap R t E
x✝ : (i : ι) → s i
⊢ ((lift h ∘ₗ map f).compMultilinearMap (tprod R)) x✝ = ((lift (h.compLinearMap f)).compMultilinearMap (tprod R)) x✝

tactic: simp only [LinearMap.compMultilinearMap_apply, LinearMap.coe_comp, Function.comp_apply,
  map_tprod, lift.tprod, MultilinearMap.compLinearMap_apply]
state_before: case H.H
ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝¹¹ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝¹⁰ : (i : ι) → AddCommMonoid (s i)
inst✝⁹ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
E : Type u_9
inst✝⁶ : AddCommMonoid E
inst✝⁵ : Module R E
F : Type u_10
inst✝⁴ : AddCommMonoid F
t : ι → Type u_11
t' : ι → Type u_12
inst✝³ : (i : ι) → AddCommMonoid (t i)
inst✝² : (i : ι) → Module R (t i)
inst✝¹ : (i : ι) → AddCommMonoid (t' i)
inst✝ : (i : ι) → Module R (t' i)
g : (i : ι) → t i →ₗ[R] t' i
f : (i : ι) → s i →ₗ[R] t i
h : MultilinearMap R t E
x✝ : (i : ι) → s i
⊢ ((lift h ∘ₗ map f).compMultilinearMap (tprod R)) x✝ = ((lift (h.compLinearMap f)).compMultilinearMap (tprod R)) x✝
state_after: no goals
Theorem: ENNReal.rpow_add
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: cases' x with x
state_before: x : ℝ≥0∞
y z : ℝ
hx : x ≠ 0
h'x : x ≠ ⊤
⊢ x ^ (y + z) = x ^ y * x ^ z
state_after: case top
y z : ℝ
hx : ⊤ ≠ 0
h'x : ⊤ ≠ ⊤
⊢ ⊤ ^ (y + z) = ⊤ ^ y * ⊤ ^ z

case coe
y z : ℝ
x : ℝ≥0
hx : ↑x ≠ 0
h'x : ↑x ≠ ⊤
⊢ ↑x ^ (y + z) = ↑x ^ y * ↑x ^ z

tactic: have : x ≠ 0 := fun h => by simp [h] at hx
state_before: case coe
y z : ℝ
x : ℝ≥0
hx : ↑x ≠ 0
h'x : ↑x ≠ ⊤
⊢ ↑x ^ (y + z) = ↑x ^ y * ↑x ^ z
state_after: case coe
y z : ℝ
x : ℝ≥0
hx : ↑x ≠ 0
h'x : ↑x ≠ ⊤
this : x ≠ 0
⊢ ↑x ^ (y + z) = ↑x ^ y * ↑x ^ z

tactic: simp [coe_rpow_of_ne_zero this, NNReal.rpow_add this]
state_before: case coe
y z : ℝ
x : ℝ≥0
hx : ↑x ≠ 0
h'x : ↑x ≠ ⊤
this : x ≠ 0
⊢ ↑x ^ (y + z) = ↑x ^ y * ↑x ^ z
state_after: no goals

tactic: exact (h'x rfl).elim
state_before: case top
y z : ℝ
hx : ⊤ ≠ 0
h'x : ⊤ ≠ ⊤
⊢ ⊤ ^ (y + z) = ⊤ ^ y * ⊤ ^ z
state_after: no goals

tactic: simp [h] at hx
state_before: y z : ℝ
x : ℝ≥0
hx : ↑x ≠ 0
h'x : ↑x ≠ ⊤
h : x = 0
⊢ False
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.map_polynomialX
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: simp [polynomialX, map_polynomial, pderiv_map]
state_before: R : Type u
inst✝² : CommRing R
W' : Jacobian R
F : Type v
inst✝¹ : Field F
W : Jacobian F
S : Type u_1
inst✝ : CommRing S
f : R →+* S
P Q : Fin 3 → R
⊢ (map W' f).toJacobian.polynomialX = (MvPolynomial.map f) W'.polynomialX
state_after: no goals
Theorem: Besicovitch.one_lt_goodτ
File: Mathlib/MeasureTheory/Covering/BesicovitchVectorSpace.lean

tactic: dsimp [goodτ, goodδ]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
⊢ 1 < goodτ E
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
⊢ 1 < 1 + ⋯.choose / 4

tactic: linarith [(exists_goodδ E).choose_spec.1]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
⊢ 1 < 1 + ⋯.choose / 4
state_after: no goals
Theorem: MeasureTheory.condexp_of_aestronglyMeasurable'
File: Mathlib/MeasureTheory/Function/ConditionalExpectation/Basic.lean

tactic: refine ((condexp_congr_ae hf.ae_eq_mk).trans ?_).trans hf.ae_eq_mk.symm
state_before: α : Type u_1
F : Type u_2
F' : Type u_3
𝕜 : Type u_4
p : ℝ≥0∞
inst✝⁶ : RCLike 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedAddCommGroup F'
inst✝² : NormedSpace 𝕜 F'
inst✝¹ : NormedSpace ℝ F'
inst✝ : CompleteSpace F'
m m0 : MeasurableSpace α
μ : Measure α
f✝ g : α → F'
s : Set α
hm : m ≤ m0
hμm : SigmaFinite (μ.trim hm)
f : α → F'
hf : AEStronglyMeasurable' m f μ
hfi : Integrable f μ
⊢ μ[f|m] =ᶠ[ae μ] f
state_after: α : Type u_1
F : Type u_2
F' : Type u_3
𝕜 : Type u_4
p : ℝ≥0∞
inst✝⁶ : RCLike 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedAddCommGroup F'
inst✝² : NormedSpace 𝕜 F'
inst✝¹ : NormedSpace ℝ F'
inst✝ : CompleteSpace F'
m m0 : MeasurableSpace α
μ : Measure α
f✝ g : α → F'
s : Set α
hm : m ≤ m0
hμm : SigmaFinite (μ.trim hm)
f : α → F'
hf : AEStronglyMeasurable' m f μ
hfi : Integrable f μ
⊢ μ[AEStronglyMeasurable'.mk f hf|m] =ᶠ[ae μ] AEStronglyMeasurable'.mk f hf

tactic: rw [condexp_of_stronglyMeasurable hm hf.stronglyMeasurable_mk
  ((integrable_congr hf.ae_eq_mk).mp hfi)]
state_before: α : Type u_1
F : Type u_2
F' : Type u_3
𝕜 : Type u_4
p : ℝ≥0∞
inst✝⁶ : RCLike 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedAddCommGroup F'
inst✝² : NormedSpace 𝕜 F'
inst✝¹ : NormedSpace ℝ F'
inst✝ : CompleteSpace F'
m m0 : MeasurableSpace α
μ : Measure α
f✝ g : α → F'
s : Set α
hm : m ≤ m0
hμm : SigmaFinite (μ.trim hm)
f : α → F'
hf : AEStronglyMeasurable' m f μ
hfi : Integrable f μ
⊢ μ[AEStronglyMeasurable'.mk f hf|m] =ᶠ[ae μ] AEStronglyMeasurable'.mk f hf
state_after: no goals
Theorem: IsPrimitiveRoot.norm_sub_one_of_prime_ne_two
File: Mathlib/NumberTheory/Cyclotomic/PrimitiveRoots.lean

tactic: simpa using hζ.norm_pow_sub_one_of_prime_ne_two hirr k.zero_le h
state_before: p n : ℕ+
A : Type w
B : Type z
K : Type u
L : Type v
C : Type w
inst✝⁷ : CommRing A
inst✝⁶ : CommRing B
inst✝⁵ : Algebra A B
inst✝⁴ : IsCyclotomicExtension {n} A B
inst✝³ : Field L
ζ : L
hζ✝ : IsPrimitiveRoot ζ ↑n
inst✝² : Field K
inst✝¹ : Algebra K L
k : ℕ
hζ : IsPrimitiveRoot ζ ↑(p ^ (k + 1))
hpri : Fact (Nat.Prime ↑p)
inst✝ : IsCyclotomicExtension {p ^ (k + 1)} K L
hirr : Irreducible (cyclotomic (↑(p ^ (k + 1))) K)
h : p ≠ 2
⊢ (Algebra.norm K) (ζ - 1) = ↑↑p
state_after: no goals
Theorem: Nat.eq_zero_of_dvd_of_div_eq_zero
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [← Nat.div_mul_cancel hab, h, Nat.zero_mul]
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hab : a ∣ b
h : b / a = 0
⊢ b = 0
state_after: no goals