1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Mathlib.Meta.NormNum.isFibAux_two_mul
File: Mathlib/Tactic/NormNum/NatFib.lean

tactic: rw [← hn, fib_two_mul, H.1, H.2, ← h1]
state_before: n a b n' a' b' : ℕ
H : IsFibAux n a b
hn : 2 * n = n'
h1 : a * (2 * b - a) = a'
h2 : a * a + b * b = b'
⊢ fib n' = a'
state_after: no goals

tactic: rw [← hn, fib_two_mul_add_one, H.1, H.2, pow_two, pow_two, add_comm, h2]
state_before: n a b n' a' b' : ℕ
H : IsFibAux n a b
hn : 2 * n = n'
h1 : a * (2 * b - a) = a'
h2 : a * a + b * b = b'
⊢ fib (n' + 1) = b'
state_after: no goals
Theorem: PFunctor.Approx.approx_eta
File: Mathlib/Data/PFunctor/Univariate/M.lean

tactic: cases x
state_before: F : PFunctor.{u}
n : ℕ
x : CofixA F (n + 1)
⊢ x = CofixA.intro (head' x) (children' x)
state_after: case intro
F : PFunctor.{u}
n : ℕ
a✝¹ : F.A
a✝ : F.B a✝¹ → CofixA F n
⊢ CofixA.intro a✝¹ a✝ = CofixA.intro (head' (CofixA.intro a✝¹ a✝)) (children' (CofixA.intro a✝¹ a✝))

tactic: rfl
state_before: case intro
F : PFunctor.{u}
n : ℕ
a✝¹ : F.A
a✝ : F.B a✝¹ → CofixA F n
⊢ CofixA.intro a✝¹ a✝ = CofixA.intro (head' (CofixA.intro a✝¹ a✝)) (children' (CofixA.intro a✝¹ a✝))
state_after: no goals
Theorem: ProbabilityTheory.truncation_eq_self
File: Mathlib/Probability/StrongLaw.lean

tactic: simp only [truncation, indicator, Set.mem_Icc, id, Function.comp_apply, ite_eq_left_iff]
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
⊢ truncation f A x = f x
state_after: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
⊢ f x ∉ Set.Ioc (-A) A → 0 = f x

tactic: intro H
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
⊢ f x ∉ Set.Ioc (-A) A → 0 = f x
state_after: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
H : f x ∉ Set.Ioc (-A) A
⊢ 0 = f x

tactic: apply H.elim
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
H : f x ∉ Set.Ioc (-A) A
⊢ 0 = f x
state_after: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
H : f x ∉ Set.Ioc (-A) A
⊢ f x ∈ Set.Ioc (-A) A

tactic: simp [(abs_lt.1 h).1, (abs_lt.1 h).2.le]
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f✝ f : α → ℝ
A : ℝ
x : α
h : |f x| < A
H : f x ∉ Set.Ioc (-A) A
⊢ f x ∈ Set.Ioc (-A) A
state_after: no goals
Theorem: lowerSemicontinuousAt_iSup
File: Mathlib/Topology/Semicontinuous.lean

tactic: simp
state_before: α : Type u_1
inst✝³ : TopologicalSpace α
β : Type u_2
inst✝² : Preorder β
f✝ g : α → β
x : α
s t : Set α
y z : β
ι : Sort u_3
δ : Type u_4
δ' : Type u_5
inst✝¹ : CompleteLinearOrder δ
inst✝ : ConditionallyCompleteLinearOrder δ'
f : ι → α → δ
h : ∀ (i : ι), LowerSemicontinuousAt (f i) x
⊢ ∀ᶠ (y : α) in 𝓝 x, BddAbove (range fun i => f i y)
state_after: no goals
Theorem: zpow_sub₀
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

tactic: rw [Int.sub_eq_add_neg, zpow_add₀ ha, zpow_neg, div_eq_mul_inv]
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a b c d : G₀
m✝ n✝ : ℕ
ha : a ≠ 0
m n : ℤ
⊢ a ^ (m - n) = a ^ m / a ^ n
state_after: no goals
Theorem: Real.tendsto_exp_comp_atTop
File: Mathlib/Analysis/SpecialFunctions/Exp.lean

tactic: simp_rw [← comp_apply (f := exp), ← tendsto_comap_iff, comap_exp_atTop]
state_before: α : Type u_1
x y z : ℝ
l : Filter α
f : α → ℝ
⊢ Tendsto (fun x => rexp (f x)) l atTop ↔ Tendsto f l atTop
state_after: no goals
Theorem: Cardinal.toPartENat_eq_top
File: Mathlib/SetTheory/Cardinal/PartENat.lean

tactic: rw [← partENatOfENat_toENat, ← PartENat.withTopEquiv_symm_top, ← toENat_eq_top,
  ← PartENat.withTopEquiv.symm.injective.eq_iff]
state_before: α : Type u
c : Cardinal.{u_1}
⊢ toPartENat c = ⊤ ↔ ℵ₀ ≤ c
state_after: α : Type u
c : Cardinal.{u_1}
⊢ ↑(toENat c) = PartENat.withTopEquiv.symm ⊤ ↔ PartENat.withTopEquiv.symm (toENat c) = PartENat.withTopEquiv.symm ⊤

tactic: simp
state_before: α : Type u
c : Cardinal.{u_1}
⊢ ↑(toENat c) = PartENat.withTopEquiv.symm ⊤ ↔ PartENat.withTopEquiv.symm (toENat c) = PartENat.withTopEquiv.symm ⊤
state_after: no goals
Theorem: PartialHomeomorph.continuousAt_iff_continuousAt_comp_left
File: Mathlib/Topology/PartialHomeomorph.lean

tactic: have hx : f x ∈ e.source := (mem_of_mem_nhds h : _)
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
f : Z → X
x : Z
h : f ⁻¹' e.source ∈ 𝓝 x
⊢ ContinuousAt f x ↔ ContinuousAt (↑e ∘ f) x
state_after: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
f : Z → X
x : Z
h : f ⁻¹' e.source ∈ 𝓝 x
hx : f x ∈ e.source
⊢ ContinuousAt f x ↔ ContinuousAt (↑e ∘ f) x

tactic: have h' : f ⁻¹' e.source ∈ 𝓝[univ] x := by rwa [nhdsWithin_univ]
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
f : Z → X
x : Z
h : f ⁻¹' e.source ∈ 𝓝 x
hx : f x ∈ e.source
⊢ ContinuousAt f x ↔ ContinuousAt (↑e ∘ f) x
state_after: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
f : Z → X
x : Z
h : f ⁻¹' e.source ∈ 𝓝 x
hx : f x ∈ e.source
h' : f ⁻¹' e.source ∈ 𝓝[univ] x
⊢ ContinuousAt f x ↔ ContinuousAt (↑e ∘ f) x

tactic: rw [← continuousWithinAt_univ, ← continuousWithinAt_univ,
  e.continuousWithinAt_iff_continuousWithinAt_comp_left hx h']
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
f : Z → X
x : Z
h : f ⁻¹' e.source ∈ 𝓝 x
hx : f x ∈ e.source
h' : f ⁻¹' e.source ∈ 𝓝[univ] x
⊢ ContinuousAt f x ↔ ContinuousAt (↑e ∘ f) x
state_after: no goals

tactic: rwa [nhdsWithin_univ]
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
f : Z → X
x : Z
h : f ⁻¹' e.source ∈ 𝓝 x
hx : f x ∈ e.source
⊢ f ⁻¹' e.source ∈ 𝓝[univ] x
state_after: no goals
Theorem: Interval.subset_coe_map
File: Mathlib/Order/Interval/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
κ : ι → Sort u_6
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
s t : Interval α
a b : α
f : α →o β
⊢ ⇑f '' ↑⊥ ⊆ ↑(map f ⊥)
state_after: no goals
Theorem: StrictConcaveOn.congr
File: Mathlib/Analysis/SpecialFunctions/Gamma/BohrMollerup.lean

tactic: simpa only [← hfg hx, ← hfg hy, ← hfg (hf.1 hx hy ha.le hb.le hab)] using
  hf.2 hx hy hxy ha hb hab
state_before: 𝕜 : Type u_1
E : Type u_2
β : Type u_3
s : Set E
f g : E → β
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : SMul 𝕜 E
inst✝² : AddCommMonoid E
inst✝¹ : OrderedAddCommMonoid β
inst✝ : SMul 𝕜 β
hf : StrictConcaveOn 𝕜 s f
hfg : EqOn f g s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a • g x + b • g y < g (a • x + b • y)
state_after: no goals
Theorem: Basis.equivFun_symm_apply
File: Mathlib/LinearAlgebra/Basis.lean

tactic: simp [Basis.equivFun, Finsupp.total_apply, Finsupp.sum_fintype, Finsupp.equivFunOnFinite]
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : Fintype ι
b : Basis ι R M
x : ι → R
⊢ b.equivFun.symm x = ∑ i : ι, x i • b i
state_after: no goals
Theorem: MeasureTheory.norm_setIntegral_le_of_norm_le_const_ae
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

tactic: rw [← Measure.restrict_apply_univ] at *
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
C : ℝ
hs : μ s < ⊤
hC : ∀ᵐ (x : X) ∂μ.restrict s, ‖f x‖ ≤ C
⊢ ‖∫ (x : X) in s, f x ∂μ‖ ≤ C * (μ s).toReal
state_after: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
C : ℝ
hs : (μ.restrict s) univ < ⊤
hC : ∀ᵐ (x : X) ∂μ.restrict s, ‖f x‖ ≤ C
⊢ ‖∫ (x : X) in s, f x ∂μ‖ ≤ C * ((μ.restrict s) univ).toReal

tactic: haveI : IsFiniteMeasure (μ.restrict s) := ⟨hs⟩
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
C : ℝ
hs : (μ.restrict s) univ < ⊤
hC : ∀ᵐ (x : X) ∂μ.restrict s, ‖f x‖ ≤ C
⊢ ‖∫ (x : X) in s, f x ∂μ‖ ≤ C * ((μ.restrict s) univ).toReal
state_after: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
C : ℝ
hs : (μ.restrict s) univ < ⊤
hC : ∀ᵐ (x : X) ∂μ.restrict s, ‖f x‖ ≤ C
this : IsFiniteMeasure (μ.restrict s)
⊢ ‖∫ (x : X) in s, f x ∂μ‖ ≤ C * ((μ.restrict s) univ).toReal

tactic: exact norm_integral_le_of_norm_le_const hC
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
C : ℝ
hs : (μ.restrict s) univ < ⊤
hC : ∀ᵐ (x : X) ∂μ.restrict s, ‖f x‖ ≤ C
this : IsFiniteMeasure (μ.restrict s)
⊢ ‖∫ (x : X) in s, f x ∂μ‖ ≤ C * ((μ.restrict s) univ).toReal
state_after: no goals
Theorem: MulAction.pow_smul_eq_iff_minimalPeriod_dvd
File: Mathlib/Dynamics/PeriodicPts.lean

tactic: rw [← period_eq_minimalPeriod, pow_smul_eq_iff_period_dvd]
state_before: α : Type v
G : Type u
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u
inst✝¹ : Monoid M
inst✝ : MulAction M α
a : G
b : α
n : ℕ
⊢ a ^ n • b = b ↔ minimalPeriod (fun x => a • x) b ∣ n
state_after: no goals
Theorem: Orientation.oangle_sign_sub_left_eq_neg
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: rw [← o.oangle_sign_smul_sub_left x y 1, one_smul]
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
⊢ (o.oangle (y - x) y).sign = -(o.oangle x y).sign
state_after: no goals
Theorem: bit1_zero
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [bit1, bit0_zero, zero_add]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M✝ : Type u_4
M : Type u
inst✝¹ : AddMonoid M
a b c : M
inst✝ : One M
⊢ bit1 0 = 1
state_after: no goals
Theorem: CategoryTheory.braiding_tensorUnit_left
File: Mathlib/CategoryTheory/Monoidal/Braided/Basic.lean

tactic: simp [← braiding_rightUnitor]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X : C
⊢ (β_ (𝟙_ C) X).hom = (λ_ X).hom ≫ (ρ_ X).inv
state_after: no goals
Theorem: ZMod.coe_valMinAbs
File: Mathlib/Data/ZMod/Basic.lean

tactic: rw [valMinAbs_def_pos]
state_before: k n : ℕ
h✝ : k = n + 1
x : ZMod (namedPattern k (n + 1) h✝)
⊢ ↑x.valMinAbs = x
state_after: k n : ℕ
h✝ : k = n + 1
x : ZMod (namedPattern k (n + 1) h✝)
⊢ ↑(if x.val ≤ namedPattern k (n + 1) h✝ / 2 then ↑x.val else ↑x.val - ↑(namedPattern k (n + 1) h✝)) = x

tactic: split_ifs
state_before: k n : ℕ
h✝ : k = n + 1
x : ZMod (namedPattern k (n + 1) h✝)
⊢ ↑(if x.val ≤ namedPattern k (n + 1) h✝ / 2 then ↑x.val else ↑x.val - ↑(namedPattern k (n + 1) h✝)) = x
state_after: case pos
k n : ℕ
h✝¹ : k = n + 1
x : ZMod (namedPattern k (n + 1) h✝¹)
h✝ : x.val ≤ namedPattern k (n + 1) h✝¹ / 2
⊢ ↑↑x.val = x

case neg
k n : ℕ
h✝¹ : k = n + 1
x : ZMod (namedPattern k (n + 1) h✝¹)
h✝ : ¬x.val ≤ namedPattern k (n + 1) h✝¹ / 2
⊢ ↑(↑x.val - ↑(namedPattern k (n + 1) h✝¹)) = x

tactic: rw [Int.cast_natCast, natCast_zmod_val]
state_before: case pos
k n : ℕ
h✝¹ : k = n + 1
x : ZMod (namedPattern k (n + 1) h✝¹)
h✝ : x.val ≤ namedPattern k (n + 1) h✝¹ / 2
⊢ ↑↑x.val = x
state_after: no goals

tactic: rw [Int.cast_sub, Int.cast_natCast, natCast_zmod_val, Int.cast_natCast, natCast_self,
  sub_zero]
state_before: case neg
k n : ℕ
h✝¹ : k = n + 1
x : ZMod (namedPattern k (n + 1) h✝¹)
h✝ : ¬x.val ≤ namedPattern k (n + 1) h✝¹ / 2
⊢ ↑(↑x.val - ↑(namedPattern k (n + 1) h✝¹)) = x
state_after: no goals
Theorem: Module.End.exists_isNilpotent_isSemisimple
File: Mathlib/LinearAlgebra/JordanChevalley.lean

tactic: obtain ⟨g, k, sep, -, nil⟩ := exists_squarefree_dvd_pow_of_ne_zero (minpoly.ne_zero_of_finite K f)
state_before: K : Type u_1
V : Type u_2
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : FiniteDimensional K V
f : End K V
inst✝ : PerfectField K
⊢ ∃ n ∈ adjoin K {f}, ∃ s ∈ adjoin K {f}, IsNilpotent n ∧ s.IsSemisimple ∧ f = n + s
state_after: case intro.intro.intro.intro
K : Type u_1
V : Type u_2
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : FiniteDimensional K V
f : End K V
inst✝ : PerfectField K
g : K[X]
k : ℕ
sep : Squarefree g
nil : minpoly K f ∣ g ^ k
⊢ ∃ n ∈ adjoin K {f}, ∃ s ∈ adjoin K {f}, IsNilpotent n ∧ s.IsSemisimple ∧ f = n + s

tactic: rw [← PerfectField.separable_iff_squarefree] at sep
state_before: case intro.intro.intro.intro
K : Type u_1
V : Type u_2
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : FiniteDimensional K V
f : End K V
inst✝ : PerfectField K
g : K[X]
k : ℕ
sep : Squarefree g
nil : minpoly K f ∣ g ^ k
⊢ ∃ n ∈ adjoin K {f}, ∃ s ∈ adjoin K {f}, IsNilpotent n ∧ s.IsSemisimple ∧ f = n + s
state_after: case intro.intro.intro.intro
K : Type u_1
V : Type u_2
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : FiniteDimensional K V
f : End K V
inst✝ : PerfectField K
g : K[X]
k : ℕ
sep : g.Separable
nil : minpoly K f ∣ g ^ k
⊢ ∃ n ∈ adjoin K {f}, ∃ s ∈ adjoin K {f}, IsNilpotent n ∧ s.IsSemisimple ∧ f = n + s

tactic: exact exists_isNilpotent_isSemisimple_of_separable_of_dvd_pow sep nil
state_before: case intro.intro.intro.intro
K : Type u_1
V : Type u_2
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : FiniteDimensional K V
f : End K V
inst✝ : PerfectField K
g : K[X]
k : ℕ
sep : g.Separable
nil : minpoly K f ∣ g ^ k
⊢ ∃ n ∈ adjoin K {f}, ∃ s ∈ adjoin K {f}, IsNilpotent n ∧ s.IsSemisimple ∧ f = n + s
state_after: no goals
Theorem: strictConcaveOn_of_deriv2_neg
File: Mathlib/Analysis/Convex/Deriv.lean

tactic: rwa [interior_interior]
state_before: D : Set ℝ
hD : Convex ℝ D
f : ℝ → ℝ
hf : ContinuousOn f D
hf'' : ∀ x ∈ interior D, deriv^[2] f x < 0
⊢ ∀ x ∈ interior (interior D), deriv (deriv f) x < 0
state_after: no goals
Theorem: Prod.snd_zmod_cast
File: Mathlib/Data/ZMod/Basic.lean

tactic: cases n
state_before: n : ℕ
R : Type u_1
inst✝¹ : AddGroupWithOne R
S : Type u_2
inst✝ : AddGroupWithOne S
a : ZMod n
⊢ a.cast.2 = a.cast
state_after: case zero
R : Type u_1
inst✝¹ : AddGroupWithOne R
S : Type u_2
inst✝ : AddGroupWithOne S
a : ZMod 0
⊢ a.cast.2 = a.cast

case succ
R : Type u_1
inst✝¹ : AddGroupWithOne R
S : Type u_2
inst✝ : AddGroupWithOne S
n✝ : ℕ
a : ZMod (n✝ + 1)
⊢ a.cast.2 = a.cast

tactic: rfl
state_before: case zero
R : Type u_1
inst✝¹ : AddGroupWithOne R
S : Type u_2
inst✝ : AddGroupWithOne S
a : ZMod 0
⊢ a.cast.2 = a.cast
state_after: no goals

tactic: simp [ZMod.cast]
state_before: case succ
R : Type u_1
inst✝¹ : AddGroupWithOne R
S : Type u_2
inst✝ : AddGroupWithOne S
n✝ : ℕ
a : ZMod (n✝ + 1)
⊢ a.cast.2 = a.cast
state_after: no goals
Theorem: Ideal.isCoprime_span_singleton_iff
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: simp_rw [isCoprime_iff_codisjoint, codisjoint_iff, eq_top_iff_one, mem_span_singleton_sup,
  mem_span_singleton]
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
x y : R
⊢ IsCoprime (span {x}) (span {y}) ↔ IsCoprime x y
state_after: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
x y : R
⊢ (∃ a b, y ∣ b ∧ a * x + b = 1) ↔ IsCoprime x y

tactic: constructor
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
x y : R
⊢ (∃ a b, y ∣ b ∧ a * x + b = 1) ↔ IsCoprime x y
state_after: case mp
R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
x y : R
⊢ (∃ a b, y ∣ b ∧ a * x + b = 1) → IsCoprime x y

case mpr
R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
x y : R
⊢ IsCoprime x y → ∃ a b, y ∣ b ∧ a * x + b = 1

tactic: rintro ⟨a, _, ⟨b, rfl⟩, e⟩
state_before: case mp
R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
x y : R
⊢ (∃ a b, y ∣ b ∧ a * x + b = 1) → IsCoprime x y
state_after: case mp.intro.intro.intro.intro
R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
x y a b : R
e : a * x + y * b = 1
⊢ IsCoprime x y

tactic: exact ⟨a, b, mul_comm b y ▸ e⟩
state_before: case mp.intro.intro.intro.intro
R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
x y a b : R
e : a * x + y * b = 1
⊢ IsCoprime x y
state_after: no goals

tactic: rintro ⟨a, b, e⟩
state_before: case mpr
R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
x y : R
⊢ IsCoprime x y → ∃ a b, y ∣ b ∧ a * x + b = 1
state_after: case mpr.intro.intro
R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
x y a b : R
e : a * x + b * y = 1
⊢ ∃ a b, y ∣ b ∧ a * x + b = 1

tactic: exact ⟨a, _, ⟨b, rfl⟩, mul_comm y b ▸ e⟩
state_before: case mpr.intro.intro
R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
x y a b : R
e : a * x + b * y = 1
⊢ ∃ a b, y ∣ b ∧ a * x + b = 1
state_after: no goals
Theorem: Nat.two_not_dvd_two_mul_add_one
File: Mathlib/Algebra/Group/Nat.lean

tactic: simp [add_mod]
state_before: m n✝ n : ℕ
⊢ ¬2 ∣ 2 * n + 1
state_after: no goals
Theorem: IntervalIntegrable.comp_add_left
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simpa only [add_comm] using IntervalIntegrable.comp_add_right hf c
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedRing A
f g : ℝ → E
a b : ℝ
μ : Measure ℝ
hf : IntervalIntegrable f volume a b
c : ℝ
⊢ IntervalIntegrable (fun x => f (c + x)) volume (a - c) (b - c)
state_after: no goals
Theorem: lowerSemicontinuous_iff_isClosed_preimage
File: Mathlib/Topology/Semicontinuous.lean

tactic: rw [lowerSemicontinuous_iff_isOpen_preimage]
state_before: α : Type u_1
inst✝² : TopologicalSpace α
β : Type u_2
inst✝¹ : Preorder β
f✝ g : α → β
x : α
s t : Set α
y z : β
γ : Type u_3
inst✝ : LinearOrder γ
f : α → γ
⊢ LowerSemicontinuous f ↔ ∀ (y : γ), IsClosed (f ⁻¹' Iic y)
state_after: α : Type u_1
inst✝² : TopologicalSpace α
β : Type u_2
inst✝¹ : Preorder β
f✝ g : α → β
x : α
s t : Set α
y z : β
γ : Type u_3
inst✝ : LinearOrder γ
f : α → γ
⊢ (∀ (y : γ), IsOpen (f ⁻¹' Ioi y)) ↔ ∀ (y : γ), IsClosed (f ⁻¹' Iic y)

tactic: simp only [← isOpen_compl_iff, ← preimage_compl, compl_Iic]
state_before: α : Type u_1
inst✝² : TopologicalSpace α
β : Type u_2
inst✝¹ : Preorder β
f✝ g : α → β
x : α
s t : Set α
y z : β
γ : Type u_3
inst✝ : LinearOrder γ
f : α → γ
⊢ (∀ (y : γ), IsOpen (f ⁻¹' Ioi y)) ↔ ∀ (y : γ), IsClosed (f ⁻¹' Iic y)
state_after: no goals
Theorem: Real.Angle.tan_coe_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rw [tan_coe, Real.tan_pi]
state_before: ⊢ (↑π).tan = 0
state_after: no goals
Theorem: Polynomial.degree_eq_one_of_irreducible_of_splits
File: Mathlib/Algebra/Polynomial/Splits.lean

tactic: rcases hp_splits with ⟨⟩ | hp_splits
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝³ : CommRing R
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
p : K[X]
hp : Irreducible p
hp_splits : Splits (RingHom.id K) p
⊢ p.degree = 1
state_after: case inl
R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝³ : CommRing R
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
p : K[X]
hp : Irreducible p
h✝ : map (RingHom.id K) p = 0
⊢ p.degree = 1

case inr
R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝³ : CommRing R
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
p : K[X]
hp : Irreducible p
hp_splits : ∀ {g : K[X]}, Irreducible g → g ∣ map (RingHom.id K) p → g.degree = 1
⊢ p.degree = 1

tactic: exfalso
state_before: case inl
R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝³ : CommRing R
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
p : K[X]
hp : Irreducible p
h✝ : map (RingHom.id K) p = 0
⊢ p.degree = 1
state_after: case inl
R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝³ : CommRing R
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
p : K[X]
hp : Irreducible p
h✝ : map (RingHom.id K) p = 0
⊢ False

tactic: simp_all
state_before: case inl
R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝³ : CommRing R
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
p : K[X]
hp : Irreducible p
h✝ : map (RingHom.id K) p = 0
⊢ False
state_after: no goals

tactic: apply hp_splits hp
state_before: case inr
R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝³ : CommRing R
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
p : K[X]
hp : Irreducible p
hp_splits : ∀ {g : K[X]}, Irreducible g → g ∣ map (RingHom.id K) p → g.degree = 1
⊢ p.degree = 1
state_after: case inr
R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝³ : CommRing R
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
p : K[X]
hp : Irreducible p
hp_splits : ∀ {g : K[X]}, Irreducible g → g ∣ map (RingHom.id K) p → g.degree = 1
⊢ p ∣ map (RingHom.id K) p

tactic: simp
state_before: case inr
R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝³ : CommRing R
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
p : K[X]
hp : Irreducible p
hp_splits : ∀ {g : K[X]}, Irreducible g → g ∣ map (RingHom.id K) p → g.degree = 1
⊢ p ∣ map (RingHom.id K) p
state_after: no goals
Theorem: Finsupp.erase_ne
File: Mathlib/Data/Finsupp/Defs.lean

tactic: classical simp only [erase, coe_mk, h, ite_false]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
a a' : α
f : α →₀ M
h : a' ≠ a
⊢ (erase a f) a' = f a'
state_after: no goals

tactic: simp only [erase, coe_mk, h, ite_false]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
a a' : α
f : α →₀ M
h : a' ≠ a
⊢ (erase a f) a' = f a'
state_after: no goals
Theorem: Finsupp.sum_comapDomain
File: Mathlib/Data/Finsupp/Basic.lean

tactic: exact Finset.sum_preimage_of_bij f _ hf fun x => g x (l x)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M
inst✝ : AddCommMonoid N
f : α → β
l : β →₀ M
g : β → M → N
hf : Set.BijOn f (f ⁻¹' ↑l.support) ↑l.support
⊢ ∑ x ∈ l.support.preimage f ⋯,
      g (f x) ({ support := l.support.preimage f ⋯, toFun := fun a => l (f a), mem_support_toFun := ⋯ } x) =
    ∑ a ∈ l.support, g a (l a)
state_after: no goals