1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: intermediate_value_uIcc
File: Mathlib/Topology/Order/IntermediateValue.lean

tactic: cases le_total (f a) (f b) <;> simp [*, isPreconnected_uIcc.intermediate_value]
state_before: α : Type u
β : Type v
γ : Type w
inst✝¹⁰ : ConditionallyCompleteLinearOrder α
inst✝⁹ : TopologicalSpace α
inst✝⁸ : OrderTopology α
inst✝⁷ : ConditionallyCompleteLinearOrder β
inst✝⁶ : TopologicalSpace β
inst✝⁵ : OrderTopology β
inst✝⁴ : Nonempty γ
inst✝³ : DenselyOrdered α
a✝ b✝ : α
δ : Type u_1
inst✝² : LinearOrder δ
inst✝¹ : TopologicalSpace δ
inst✝ : OrderClosedTopology δ
a b : α
f : α → δ
hf : ContinuousOn f (uIcc a b)
⊢ uIcc (f a) (f b) ⊆ f '' uIcc a b
state_after: no goals
Theorem: CategoryTheory.Limits.IsZero.of_epi_eq_zero
File: Mathlib/CategoryTheory/Limits/Shapes/ZeroMorphisms.lean

tactic: subst h
state_before: C : Type u
inst✝³ : Category.{v, u} C
D : Type u'
inst✝² : Category.{v', u'} D
inst✝¹ : HasZeroMorphisms C
X Y : C
f : X ⟶ Y
inst✝ : Epi f
h : f = 0
⊢ IsZero Y
state_after: C : Type u
inst✝³ : Category.{v, u} C
D : Type u'
inst✝² : Category.{v', u'} D
inst✝¹ : HasZeroMorphisms C
X Y : C
inst✝ : Epi 0
⊢ IsZero Y

tactic: apply of_epi_zero X Y
state_before: C : Type u
inst✝³ : Category.{v, u} C
D : Type u'
inst✝² : Category.{v', u'} D
inst✝¹ : HasZeroMorphisms C
X Y : C
inst✝ : Epi 0
⊢ IsZero Y
state_after: no goals
Theorem: Rat.sqrt_intCast
File: Mathlib/Data/Rat/Sqrt.lean

tactic: simp only [sqrt, num_intCast, den_intCast, Nat.sqrt_one, mkRat_one]
state_before: z : ℤ
⊢ sqrt ↑z = ↑(Int.sqrt z)
state_after: no goals
Theorem: Polynomial.Separable.of_dvd
File: Mathlib/FieldTheory/Separable.lean

tactic: rcases hfg with ⟨f', rfl⟩
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
hf : f.Separable
hfg : g ∣ f
⊢ g.Separable
state_after: case intro
R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
g f' : R[X]
hf : (g * f').Separable
⊢ g.Separable

tactic: exact Separable.of_mul_left hf
state_before: case intro
R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
g f' : R[X]
hf : (g * f').Separable
⊢ g.Separable
state_after: no goals
Theorem: Polynomial.C_eq_intCast
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: simp
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Ring R
n : ℤ
⊢ C ↑n = ↑n
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.associator_inv_naturality_right
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X✝ Y✝ Z✝ X Y Z Z' : C
f : Z ⟶ Z'
⊢ X ◁ Y ◁ f ≫ (α_ X Y Z').inv = (α_ X Y Z).inv ≫ (X ⊗ Y) ◁ f
state_after: no goals
Theorem: AbstractCompletion.extend_map
File: Mathlib/Topology/UniformSpace/AbstractCompletion.lean

tactic: rw [pkg.extend_coe (hf.comp hg), comp_apply, pkg.map_coe pkg' hg, pkg'.extend_coe hf]
state_before: α : Type u_1
inst✝⁴ : UniformSpace α
pkg : AbstractCompletion α
β : Type u_2
inst✝³ : UniformSpace β
pkg' : AbstractCompletion β
f✝ : α → β
γ : Type u_3
inst✝² : UniformSpace γ
inst✝¹ : CompleteSpace γ
inst✝ : T0Space γ
f : β → γ
g : α → β
hf : UniformContinuous f
hg : UniformContinuous g
a : α
⊢ (pkg'.extend f ∘ pkg.map pkg' g) (pkg.coe a) = pkg.extend (f ∘ g) (pkg.coe a)
state_after: α : Type u_1
inst✝⁴ : UniformSpace α
pkg : AbstractCompletion α
β : Type u_2
inst✝³ : UniformSpace β
pkg' : AbstractCompletion β
f✝ : α → β
γ : Type u_3
inst✝² : UniformSpace γ
inst✝¹ : CompleteSpace γ
inst✝ : T0Space γ
f : β → γ
g : α → β
hf : UniformContinuous f
hg : UniformContinuous g
a : α
⊢ f (g a) = (f ∘ g) a

tactic: rfl
state_before: α : Type u_1
inst✝⁴ : UniformSpace α
pkg : AbstractCompletion α
β : Type u_2
inst✝³ : UniformSpace β
pkg' : AbstractCompletion β
f✝ : α → β
γ : Type u_3
inst✝² : UniformSpace γ
inst✝¹ : CompleteSpace γ
inst✝ : T0Space γ
f : β → γ
g : α → β
hf : UniformContinuous f
hg : UniformContinuous g
a : α
⊢ f (g a) = (f ∘ g) a
state_after: no goals
Theorem: IsConformalMap.injective
File: Mathlib/Analysis/NormedSpace/ConformalLinearMap.lean

tactic: rcases h with ⟨c, hc, li, rfl⟩
state_before: R : Type u_1
M : Type u_2
N : Type u_3
G : Type u_4
M' : Type u_5
inst✝⁸ : NormedField R
inst✝⁷ : SeminormedAddCommGroup M
inst✝⁶ : SeminormedAddCommGroup N
inst✝⁵ : SeminormedAddCommGroup G
inst✝⁴ : NormedSpace R M
inst✝³ : NormedSpace R N
inst✝² : NormedSpace R G
inst✝¹ : NormedAddCommGroup M'
inst✝ : NormedSpace R M'
f✝ : M →L[R] N
g : N →L[R] G
c : R
f : M' →L[R] N
h : IsConformalMap f
⊢ Injective ⇑f
state_after: case intro.intro.intro
R : Type u_1
M : Type u_2
N : Type u_3
G : Type u_4
M' : Type u_5
inst✝⁸ : NormedField R
inst✝⁷ : SeminormedAddCommGroup M
inst✝⁶ : SeminormedAddCommGroup N
inst✝⁵ : SeminormedAddCommGroup G
inst✝⁴ : NormedSpace R M
inst✝³ : NormedSpace R N
inst✝² : NormedSpace R G
inst✝¹ : NormedAddCommGroup M'
inst✝ : NormedSpace R M'
f : M →L[R] N
g : N →L[R] G
c✝ c : R
hc : c ≠ 0
li : M' →ₗᵢ[R] N
⊢ Injective ⇑(c • li.toContinuousLinearMap)

tactic: exact (smul_right_injective _ hc).comp li.injective
state_before: case intro.intro.intro
R : Type u_1
M : Type u_2
N : Type u_3
G : Type u_4
M' : Type u_5
inst✝⁸ : NormedField R
inst✝⁷ : SeminormedAddCommGroup M
inst✝⁶ : SeminormedAddCommGroup N
inst✝⁵ : SeminormedAddCommGroup G
inst✝⁴ : NormedSpace R M
inst✝³ : NormedSpace R N
inst✝² : NormedSpace R G
inst✝¹ : NormedAddCommGroup M'
inst✝ : NormedSpace R M'
f : M →L[R] N
g : N →L[R] G
c✝ c : R
hc : c ≠ 0
li : M' →ₗᵢ[R] N
⊢ Injective ⇑(c • li.toContinuousLinearMap)
state_after: no goals
Theorem: EMetric.hausdorffEdist_le_of_mem_edist
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: refine hausdorffEdist_le_of_infEdist (fun x xs ↦ ?_) (fun x xt ↦ ?_)
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ x ∈ s, ∃ y ∈ t, edist x y ≤ r
H2 : ∀ x ∈ t, ∃ y ∈ s, edist x y ≤ r
⊢ hausdorffEdist s t ≤ r
state_after: case refine_1
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ x ∈ s, ∃ y ∈ t, edist x y ≤ r
H2 : ∀ x ∈ t, ∃ y ∈ s, edist x y ≤ r
x : α
xs : x ∈ s
⊢ infEdist x t ≤ r

case refine_2
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ x ∈ s, ∃ y ∈ t, edist x y ≤ r
H2 : ∀ x ∈ t, ∃ y ∈ s, edist x y ≤ r
x : α
xt : x ∈ t
⊢ infEdist x s ≤ r

tactic: rcases H1 x xs with ⟨y, yt, hy⟩
state_before: case refine_1
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ x ∈ s, ∃ y ∈ t, edist x y ≤ r
H2 : ∀ x ∈ t, ∃ y ∈ s, edist x y ≤ r
x : α
xs : x ∈ s
⊢ infEdist x t ≤ r
state_after: case refine_1.intro.intro
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y✝ : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ x ∈ s, ∃ y ∈ t, edist x y ≤ r
H2 : ∀ x ∈ t, ∃ y ∈ s, edist x y ≤ r
x : α
xs : x ∈ s
y : α
yt : y ∈ t
hy : edist x y ≤ r
⊢ infEdist x t ≤ r

tactic: exact le_trans (infEdist_le_edist_of_mem yt) hy
state_before: case refine_1.intro.intro
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y✝ : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ x ∈ s, ∃ y ∈ t, edist x y ≤ r
H2 : ∀ x ∈ t, ∃ y ∈ s, edist x y ≤ r
x : α
xs : x ∈ s
y : α
yt : y ∈ t
hy : edist x y ≤ r
⊢ infEdist x t ≤ r
state_after: no goals

tactic: rcases H2 x xt with ⟨y, ys, hy⟩
state_before: case refine_2
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ x ∈ s, ∃ y ∈ t, edist x y ≤ r
H2 : ∀ x ∈ t, ∃ y ∈ s, edist x y ≤ r
x : α
xt : x ∈ t
⊢ infEdist x s ≤ r
state_after: case refine_2.intro.intro
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y✝ : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ x ∈ s, ∃ y ∈ t, edist x y ≤ r
H2 : ∀ x ∈ t, ∃ y ∈ s, edist x y ≤ r
x : α
xt : x ∈ t
y : α
ys : y ∈ s
hy : edist x y ≤ r
⊢ infEdist x s ≤ r

tactic: exact le_trans (infEdist_le_edist_of_mem ys) hy
state_before: case refine_2.intro.intro
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y✝ : α
s t u : Set α
Φ : α → β
r : ℝ≥0∞
H1 : ∀ x ∈ s, ∃ y ∈ t, edist x y ≤ r
H2 : ∀ x ∈ t, ∃ y ∈ s, edist x y ≤ r
x : α
xt : x ∈ t
y : α
ys : y ∈ s
hy : edist x y ≤ r
⊢ infEdist x s ≤ r
state_after: no goals
Theorem: Filter.Tendsto.div_atTop
File: Mathlib/Topology/Algebra/Order/Field.lean

tactic: simp only [div_eq_mul_inv]
state_before: 𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
l : Filter α
f g : α → 𝕜
a : 𝕜
h : Tendsto f l (𝓝 a)
hg : Tendsto g l atTop
⊢ Tendsto (fun x => f x / g x) l (𝓝 0)
state_after: 𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
l : Filter α
f g : α → 𝕜
a : 𝕜
h : Tendsto f l (𝓝 a)
hg : Tendsto g l atTop
⊢ Tendsto (fun x => f x * (g x)⁻¹) l (𝓝 0)

tactic: exact mul_zero a ▸ h.mul (tendsto_inv_atTop_zero.comp hg)
state_before: 𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
l : Filter α
f g : α → 𝕜
a : 𝕜
h : Tendsto f l (𝓝 a)
hg : Tendsto g l atTop
⊢ Tendsto (fun x => f x * (g x)⁻¹) l (𝓝 0)
state_after: no goals
Theorem: Nat.factorial_inj
File: Mathlib/Data/Nat/Factorial/Basic.lean

tactic: refine ⟨fun h => ?_, congr_arg _⟩
state_before: m n : ℕ
hn : 1 < n
⊢ n ! = m ! ↔ n = m
state_after: m n : ℕ
hn : 1 < n
h : n ! = m !
⊢ n = m

tactic: obtain hnm | rfl | hnm := lt_trichotomy n m
state_before: m n : ℕ
hn : 1 < n
h : n ! = m !
⊢ n = m
state_after: case inl
m n : ℕ
hn : 1 < n
h : n ! = m !
hnm : n < m
⊢ n = m

case inr.inl
n : ℕ
hn : 1 < n
h : n ! = n !
⊢ n = n

case inr.inr
m n : ℕ
hn : 1 < n
h : n ! = m !
hnm : m < n
⊢ n = m

tactic: rw [← one_lt_factorial, h, one_lt_factorial] at hn
state_before: case inr.inr
m n : ℕ
hn : 1 < n
h : n ! = m !
hnm : m < n
⊢ n = m
state_after: case inr.inr
m n : ℕ
hn : 1 < m
h : n ! = m !
hnm : m < n
⊢ n = m

tactic: rw [← factorial_lt <| lt_of_succ_lt hn, h] at hnm
state_before: case inr.inr
m n : ℕ
hn : 1 < m
h : n ! = m !
hnm : m < n
⊢ n = m
state_after: case inr.inr
m n : ℕ
hn : 1 < m
h : n ! = m !
hnm : m ! < m !
⊢ n = m

tactic: cases lt_irrefl _ hnm
state_before: case inr.inr
m n : ℕ
hn : 1 < m
h : n ! = m !
hnm : m ! < m !
⊢ n = m
state_after: no goals

tactic: rw [← factorial_lt <| lt_of_succ_lt hn, h] at hnm
state_before: case inl
m n : ℕ
hn : 1 < n
h : n ! = m !
hnm : n < m
⊢ n = m
state_after: case inl
m n : ℕ
hn : 1 < n
h : n ! = m !
hnm : m ! < m !
⊢ n = m

tactic: cases lt_irrefl _ hnm
state_before: case inl
m n : ℕ
hn : 1 < n
h : n ! = m !
hnm : m ! < m !
⊢ n = m
state_after: no goals

tactic: rfl
state_before: case inr.inl
n : ℕ
hn : 1 < n
h : n ! = n !
⊢ n = n
state_after: no goals
Theorem: Multiset.inter_le_right
File: Mathlib/Data/Multiset/Basic.lean

tactic: simpa [h] using cons_le_cons a (IH (t.erase a))
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝¹ t✝ u : Multiset α
a✝ b : α
s✝ : Multiset α
a : α
s : Multiset α
IH : ∀ (t : Multiset α), s ∩ t ≤ t
t : Multiset α
h : a ∈ t
⊢ (a ::ₘ s) ∩ t ≤ t
state_after: no goals

tactic: simp [h, IH]
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝¹ t✝ u : Multiset α
a✝ b : α
s✝ : Multiset α
a : α
s : Multiset α
IH : ∀ (t : Multiset α), s ∩ t ≤ t
t : Multiset α
h : a ∉ t
⊢ (a ::ₘ s) ∩ t ≤ t
state_after: no goals
Theorem: ENNReal.funMulInvSnorm_rpow
File: Mathlib/MeasureTheory/Integral/MeanInequalities.lean

tactic: rw [funMulInvSnorm, mul_rpow_of_nonneg _ _ (le_of_lt hp0)]
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
p : ℝ
hp0 : 0 < p
f : α → ℝ≥0∞
a : α
⊢ funMulInvSnorm f p μ a ^ p = f a ^ p * (∫⁻ (c : α), f c ^ p ∂μ)⁻¹
state_after: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
p : ℝ
hp0 : 0 < p
f : α → ℝ≥0∞
a : α
⊢ f a ^ p * ((∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p))⁻¹ ^ p = f a ^ p * (∫⁻ (c : α), f c ^ p ∂μ)⁻¹

tactic: suffices h_inv_rpow : ((∫⁻ c : α, f c ^ p ∂μ) ^ (1 / p))⁻¹ ^ p = (∫⁻ c : α, f c ^ p ∂μ)⁻¹ by
  rw [h_inv_rpow]
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
p : ℝ
hp0 : 0 < p
f : α → ℝ≥0∞
a : α
⊢ f a ^ p * ((∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p))⁻¹ ^ p = f a ^ p * (∫⁻ (c : α), f c ^ p ∂μ)⁻¹
state_after: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
p : ℝ
hp0 : 0 < p
f : α → ℝ≥0∞
a : α
⊢ ((∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p))⁻¹ ^ p = (∫⁻ (c : α), f c ^ p ∂μ)⁻¹

tactic: rw [inv_rpow, ← rpow_mul, one_div_mul_cancel hp0.ne', rpow_one]
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
p : ℝ
hp0 : 0 < p
f : α → ℝ≥0∞
a : α
⊢ ((∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p))⁻¹ ^ p = (∫⁻ (c : α), f c ^ p ∂μ)⁻¹
state_after: no goals

tactic: rw [h_inv_rpow]
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
p : ℝ
hp0 : 0 < p
f : α → ℝ≥0∞
a : α
h_inv_rpow : ((∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p))⁻¹ ^ p = (∫⁻ (c : α), f c ^ p ∂μ)⁻¹
⊢ f a ^ p * ((∫⁻ (c : α), f c ^ p ∂μ) ^ (1 / p))⁻¹ ^ p = f a ^ p * (∫⁻ (c : α), f c ^ p ∂μ)⁻¹
state_after: no goals
Theorem: Nat.ofDigits_div_pow_eq_ofDigits_drop
File: Mathlib/Data/Nat/Digits.lean

tactic: induction' i with i hi
state_before: n p i : ℕ
hpos : 0 < p
digits : List ℕ
w₁ : ∀ l ∈ digits, l < p
⊢ ofDigits p digits / p ^ i = ofDigits p (List.drop i digits)
state_after: case zero
n p : ℕ
hpos : 0 < p
digits : List ℕ
w₁ : ∀ l ∈ digits, l < p
⊢ ofDigits p digits / p ^ 0 = ofDigits p (List.drop 0 digits)

case succ
n p : ℕ
hpos : 0 < p
digits : List ℕ
w₁ : ∀ l ∈ digits, l < p
i : ℕ
hi : ofDigits p digits / p ^ i = ofDigits p (List.drop i digits)
⊢ ofDigits p digits / p ^ (i + 1) = ofDigits p (List.drop (i + 1) digits)

tactic: simp
state_before: case zero
n p : ℕ
hpos : 0 < p
digits : List ℕ
w₁ : ∀ l ∈ digits, l < p
⊢ ofDigits p digits / p ^ 0 = ofDigits p (List.drop 0 digits)
state_after: no goals

tactic: rw [Nat.pow_succ, ← Nat.div_div_eq_div_mul, hi, ofDigits_div_eq_ofDigits_tail hpos
  (List.drop i digits) fun x hx ↦ w₁ x <| List.mem_of_mem_drop hx, ← List.drop_one,
  List.drop_drop, add_comm]
state_before: case succ
n p : ℕ
hpos : 0 < p
digits : List ℕ
w₁ : ∀ l ∈ digits, l < p
i : ℕ
hi : ofDigits p digits / p ^ i = ofDigits p (List.drop i digits)
⊢ ofDigits p digits / p ^ (i + 1) = ofDigits p (List.drop (i + 1) digits)
state_after: no goals
Theorem: bihimp_eq_bot
File: Mathlib/Order/SymmDiff.lean

tactic: rw [bihimp_eq', ← compl_sup, sup_eq_bot_iff, compl_eq_bot, isCompl_iff, disjoint_iff,
  codisjoint_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : BooleanAlgebra α
a b c d : α
⊢ a ⇔ b = ⊥ ↔ IsCompl a b
state_after: no goals
Theorem: NNReal.tsum_eq_toNNReal_tsum
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: by_cases h : Summable f
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : β → ℝ≥0
⊢ ∑' (b : β), f b = (∑' (b : β), ↑(f b)).toNNReal
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
f : β → ℝ≥0
h : Summable f
⊢ ∑' (b : β), f b = (∑' (b : β), ↑(f b)).toNNReal

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
f : β → ℝ≥0
h : ¬Summable f
⊢ ∑' (b : β), f b = (∑' (b : β), ↑(f b)).toNNReal

tactic: rw [← ENNReal.coe_tsum h, ENNReal.toNNReal_coe]
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
f : β → ℝ≥0
h : Summable f
⊢ ∑' (b : β), f b = (∑' (b : β), ↑(f b)).toNNReal
state_after: no goals

tactic: have A := tsum_eq_zero_of_not_summable h
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
f : β → ℝ≥0
h : ¬Summable f
⊢ ∑' (b : β), f b = (∑' (b : β), ↑(f b)).toNNReal
state_after: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
f : β → ℝ≥0
h : ¬Summable f
A : ∑' (b : β), f b = 0
⊢ ∑' (b : β), f b = (∑' (b : β), ↑(f b)).toNNReal

tactic: simp only [← ENNReal.tsum_coe_ne_top_iff_summable, Classical.not_not] at h
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
f : β → ℝ≥0
h : ¬Summable f
A : ∑' (b : β), f b = 0
⊢ ∑' (b : β), f b = (∑' (b : β), ↑(f b)).toNNReal
state_after: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
f : β → ℝ≥0
A : ∑' (b : β), f b = 0
h : ∑' (b : β), ↑(f b) = ⊤
⊢ ∑' (b : β), f b = (∑' (b : β), ↑(f b)).toNNReal

tactic: simp only [h, ENNReal.top_toNNReal, A]
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
f : β → ℝ≥0
A : ∑' (b : β), f b = 0
h : ∑' (b : β), ↑(f b) = ⊤
⊢ ∑' (b : β), f b = (∑' (b : β), ↑(f b)).toNNReal
state_after: no goals
Theorem: Real.range_sin_infinite
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: rw [Real.range_sin]
state_before: ⊢ (range sin).Infinite
state_after: ⊢ (Icc (-1) 1).Infinite

tactic: exact Icc_infinite (by norm_num)
state_before: ⊢ (Icc (-1) 1).Infinite
state_after: no goals

tactic: norm_num
state_before: ⊢ -1 < 1
state_after: no goals
Theorem: QuotientGroup.rangeKerLift_surjective
File: Mathlib/GroupTheory/QuotientGroup.lean

tactic: rintro ⟨_, g, rfl⟩
state_before: G : Type u
inst✝² : Group G
N : Subgroup G
nN : N.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
φ : G →* H
⊢ Surjective ⇑(rangeKerLift φ)
state_after: case mk.intro
G : Type u
inst✝² : Group G
N : Subgroup G
nN : N.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
φ : G →* H
g : G
⊢ ∃ a, (rangeKerLift φ) a = ⟨φ g, ⋯⟩

tactic: use mk g
state_before: case mk.intro
G : Type u
inst✝² : Group G
N : Subgroup G
nN : N.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
φ : G →* H
g : G
⊢ ∃ a, (rangeKerLift φ) a = ⟨φ g, ⋯⟩
state_after: case h
G : Type u
inst✝² : Group G
N : Subgroup G
nN : N.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
φ : G →* H
g : G
⊢ (rangeKerLift φ) ↑g = ⟨φ g, ⋯⟩

tactic: rfl
state_before: case h
G : Type u
inst✝² : Group G
N : Subgroup G
nN : N.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
φ : G →* H
g : G
⊢ (rangeKerLift φ) ↑g = ⟨φ g, ⋯⟩
state_after: no goals
Theorem: ONote.NFBelow.fst
File: Mathlib/SetTheory/Ordinal/Notation.lean

tactic: cases' h with _ _ _ _ eb _ h₁ h₂ h₃
state_before: e : ONote
n : ℕ+
a : ONote
b : Ordinal.{0}
h : (e.oadd n a).NFBelow b
⊢ e.NF
state_after: case oadd'
e : ONote
n : ℕ+
a : ONote
b eb : Ordinal.{0}
h₁ : e.NFBelow eb
h₂ : a.NFBelow e.repr
h₃ : e.repr < b
⊢ e.NF

tactic: exact ⟨⟨_, h₁⟩⟩
state_before: case oadd'
e : ONote
n : ℕ+
a : ONote
b eb : Ordinal.{0}
h₁ : e.NFBelow eb
h₂ : a.NFBelow e.repr
h₃ : e.repr < b
⊢ e.NF
state_after: no goals
Theorem: ENNReal.coe_rpow_of_nonneg
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: by_cases hx : x = 0
state_before: x : ℝ≥0
y : ℝ
h : 0 ≤ y
⊢ ↑x ^ y = ↑(x ^ y)
state_after: case pos
x : ℝ≥0
y : ℝ
h : 0 ≤ y
hx : x = 0
⊢ ↑x ^ y = ↑(x ^ y)

case neg
x : ℝ≥0
y : ℝ
h : 0 ≤ y
hx : ¬x = 0
⊢ ↑x ^ y = ↑(x ^ y)

tactic: rcases le_iff_eq_or_lt.1 h with (H | H)
state_before: case pos
x : ℝ≥0
y : ℝ
h : 0 ≤ y
hx : x = 0
⊢ ↑x ^ y = ↑(x ^ y)
state_after: case pos.inl
x : ℝ≥0
y : ℝ
h : 0 ≤ y
hx : x = 0
H : 0 = y
⊢ ↑x ^ y = ↑(x ^ y)

case pos.inr
x : ℝ≥0
y : ℝ
h : 0 ≤ y
hx : x = 0
H : 0 < y
⊢ ↑x ^ y = ↑(x ^ y)

tactic: simp [hx, H.symm]
state_before: case pos.inl
x : ℝ≥0
y : ℝ
h : 0 ≤ y
hx : x = 0
H : 0 = y
⊢ ↑x ^ y = ↑(x ^ y)
state_after: no goals

tactic: simp [hx, zero_rpow_of_pos H, NNReal.zero_rpow (ne_of_gt H)]
state_before: case pos.inr
x : ℝ≥0
y : ℝ
h : 0 ≤ y
hx : x = 0
H : 0 < y
⊢ ↑x ^ y = ↑(x ^ y)
state_after: no goals

tactic: exact coe_rpow_of_ne_zero hx _
state_before: case neg
x : ℝ≥0
y : ℝ
h : 0 ≤ y
hx : ¬x = 0
⊢ ↑x ^ y = ↑(x ^ y)
state_after: no goals
Theorem: FirstOrder.Language.Structure.cg_iff
File: Mathlib/ModelTheory/FinitelyGenerated.lean

tactic: rw [cg_def, Substructure.cg_def]
state_before: L : Language
M : Type u_1
inst✝ : L.Structure M
⊢ CG L M ↔ ∃ S, S.Countable ∧ (closure L).toFun S = ⊤
state_after: no goals
Theorem: Ordinal.mul_div_le
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simp only [b0, zero_mul, Ordinal.zero_le]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
b0 : b = 0
⊢ b * (a / b) ≤ a
state_after: no goals
Theorem: MvPowerSeries.X_pow_eq
File: Mathlib/RingTheory/MvPowerSeries/Basic.lean

tactic: induction' n with n ih
state_before: σ : Type u_1
R : Type u_2
inst✝ : Semiring R
s : σ
n : ℕ
⊢ X s ^ n = (monomial R (single s n)) 1
state_after: case zero
σ : Type u_1
R : Type u_2
inst✝ : Semiring R
s : σ
⊢ X s ^ 0 = (monomial R (single s 0)) 1

case succ
σ : Type u_1
R : Type u_2
inst✝ : Semiring R
s : σ
n : ℕ
ih : X s ^ n = (monomial R (single s n)) 1
⊢ X s ^ (n + 1) = (monomial R (single s (n + 1))) 1

tactic: simp
state_before: case zero
σ : Type u_1
R : Type u_2
inst✝ : Semiring R
s : σ
⊢ X s ^ 0 = (monomial R (single s 0)) 1
state_after: no goals

tactic: rw [pow_succ, ih, Finsupp.single_add, X, monomial_mul_monomial, one_mul]
state_before: case succ
σ : Type u_1
R : Type u_2
inst✝ : Semiring R
s : σ
n : ℕ
ih : X s ^ n = (monomial R (single s n)) 1
⊢ X s ^ (n + 1) = (monomial R (single s (n + 1))) 1
state_after: no goals
Theorem: CategoryTheory.Bicategory.pentagon_hom_inv_inv_inv_inv
File: Mathlib/CategoryTheory/Bicategory/Basic.lean

tactic: simp [← cancel_epi (f ◁ (α_ g h i).inv)]
state_before: B : Type u
inst✝ : Bicategory B
a b c d e : B
f : a ⟶ b
g : b ⟶ c
h : c ⟶ d
i : d ⟶ e
⊢ f ◁ (α_ g h i).hom ≫ (α_ f g (h ≫ i)).inv ≫ (α_ (f ≫ g) h i).inv = (α_ f (g ≫ h) i).inv ≫ (α_ f g h).inv ▷ i
state_after: no goals
Theorem: Polynomial.monomial_one_right_eq_X_pow
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: induction' n with n ih
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
⊢ (monomial n) 1 = X ^ n
state_after: case zero
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ (monomial 0) 1 = X ^ 0

case succ
R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
ih : (monomial n) 1 = X ^ n
⊢ (monomial (n + 1)) 1 = X ^ (n + 1)

tactic: simp [monomial_zero_one]
state_before: case zero
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ (monomial 0) 1 = X ^ 0
state_after: no goals

tactic: rw [pow_succ, ← ih, ← monomial_one_one_eq_X, monomial_mul_monomial, mul_one]
state_before: case succ
R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
ih : (monomial n) 1 = X ^ n
⊢ (monomial (n + 1)) 1 = X ^ (n + 1)
state_after: no goals
Theorem: SetTheory.PGame.le_or_gf
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [← PGame.not_le]
state_before: xl xr : Type u
x y : PGame
⊢ x ≤ y ∨ y ⧏ x
state_after: xl xr : Type u
x y : PGame
⊢ x ≤ y ∨ ¬x ≤ y

tactic: apply em
state_before: xl xr : Type u
x y : PGame
⊢ x ≤ y ∨ ¬x ≤ y
state_after: no goals
Theorem: continuous_sigma_iff
File: Mathlib/Topology/Constructions.lean

tactic: rw [continuous_iSup_dom]
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
κ : Type u_6
σ : ι → Type u_7
τ : κ → Type u_8
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace X
f : Sigma σ → X
⊢ Continuous f ↔ ∀ (i : ι), Continuous fun a => f ⟨i, a⟩
state_after: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
κ : Type u_6
σ : ι → Type u_7
τ : κ → Type u_8
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace X
f : Sigma σ → X
⊢ (∀ (i : ι), Continuous f) ↔ ∀ (i : ι), Continuous fun a => f ⟨i, a⟩

tactic: exact forall_congr' fun _ => continuous_coinduced_dom
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
κ : Type u_6
σ : ι → Type u_7
τ : κ → Type u_8
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace X
f : Sigma σ → X
⊢ (∀ (i : ι), Continuous f) ↔ ∀ (i : ι), Continuous fun a => f ⟨i, a⟩
state_after: no goals
Theorem: CategoryTheory.Iso.refl_conj
File: Mathlib/CategoryTheory/Conj.lean

tactic: rw [conj_apply, Iso.refl_inv, Iso.refl_hom, Category.id_comp, Category.comp_id]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
α : X ≅ Y
f : End X
⊢ (refl X).conj f = f
state_after: no goals