1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: FirstOrder.Language.BoundedFormula.relabelAux_sum_inl
File: Mathlib/ModelTheory/Syntax.lean

tactic: ext x
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n k : ℕ
⊢ relabelAux Sum.inl k = Sum.map id (natAdd n)
state_after: case h
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n k : ℕ
x : α ⊕ Fin k
⊢ relabelAux Sum.inl k x = Sum.map id (natAdd n) x

tactic: simp [relabelAux]
state_before: case h.inr
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n k : ℕ
val✝ : Fin k
⊢ relabelAux Sum.inl k (Sum.inr val✝) = Sum.map id (natAdd n) (Sum.inr val✝)
state_after: no goals
Theorem: isPurelyInseparable_iff_minpoly_eq_X_pow_sub_C
File: Mathlib/FieldTheory/PurelyInseparable.lean

tactic: simp_rw [isPurelyInseparable_iff_natSepDegree_eq_one,
  minpoly.natSepDegree_eq_one_iff_eq_X_pow_sub_C q]
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
q : ℕ
hF : ExpChar F q
⊢ IsPurelyInseparable F E ↔ ∀ (x : E), ∃ n y, minpoly F x = X ^ q ^ n - C y
state_after: no goals
Theorem: ContinuousLinearMap.ring_inverse_equiv
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: suffices Ring.inverse ((ContinuousLinearEquiv.unitsEquiv _ _).symm e : M →L[R] M) = inverse ↑e by
  convert this
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M
⊢ Ring.inverse ↑e = (↑e).inverse
state_after: R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M
⊢ Ring.inverse ↑((ContinuousLinearEquiv.unitsEquiv R M).symm e) = (↑e).inverse

tactic: simp
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M
⊢ Ring.inverse ↑((ContinuousLinearEquiv.unitsEquiv R M).symm e) = (↑e).inverse
state_after: R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M
⊢ ↑((ContinuousLinearEquiv.unitsEquiv R M).symm e)⁻¹ = ↑e.symm

tactic: rfl
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M
⊢ ↑((ContinuousLinearEquiv.unitsEquiv R M).symm e)⁻¹ = ↑e.symm
state_after: no goals

tactic: convert this
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M
this : Ring.inverse ↑((ContinuousLinearEquiv.unitsEquiv R M).symm e) = (↑e).inverse
⊢ Ring.inverse ↑e = (↑e).inverse
state_after: no goals
Theorem: Real.isTheta_exp_comp_exp_comp
File: Mathlib/Analysis/SpecialFunctions/Exp.lean

tactic: simp only [isBoundedUnder_le_abs, ← isBoundedUnder_le_neg, neg_sub, IsTheta,
  isBigO_exp_comp_exp_comp, Pi.sub_def]
state_before: α : Type u_1
x y z : ℝ
l : Filter α
f g : α → ℝ
⊢ ((fun x => rexp (f x)) =Θ[l] fun x => rexp (g x)) ↔ IsBoundedUnder (fun x x_1 => x ≤ x_1) l fun x => |f x - g x|
state_after: no goals
Theorem: Setoid.eqv_class_mem'
File: Mathlib/Data/Setoid/Partition.lean

tactic: convert @Setoid.eqv_class_mem _ _ H x using 3
state_before: α : Type u_1
c : Set (Set α)
H : ∀ (a : α), ∃! b, b ∈ c ∧ a ∈ b
x : α
⊢ {y | (mkClasses c H).Rel x y} ∈ c
state_after: case h.e'_4.h.e'_2.h.a
α : Type u_1
c : Set (Set α)
H : ∀ (a : α), ∃! b, b ∈ c ∧ a ∈ b
x x✝ : α
⊢ (mkClasses c H).Rel x x✝ ↔ (mkClasses c H).Rel x✝ x

tactic: rw [Setoid.comm']
state_before: case h.e'_4.h.e'_2.h.a
α : Type u_1
c : Set (Set α)
H : ∀ (a : α), ∃! b, b ∈ c ∧ a ∈ b
x x✝ : α
⊢ (mkClasses c H).Rel x x✝ ↔ (mkClasses c H).Rel x✝ x
state_after: no goals
Theorem: quadraticCharFun_one
File: Mathlib/NumberTheory/LegendreSymbol/QuadraticChar/Basic.lean

tactic: simp only [quadraticCharFun, one_ne_zero, isSquare_one, if_true, if_false]
state_before: F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
⊢ quadraticCharFun F 1 = 1
state_after: no goals
Theorem: Polynomial.expand_one
File: Mathlib/Algebra/Polynomial/Expand.lean

tactic: rw [expand_C]
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p q : ℕ
f : R[X]
r : R
⊢ (expand R 1) (C r) = C r
state_after: no goals

tactic: rw [AlgHom.map_add, ihf, ihg]
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p q : ℕ
f✝ f g : R[X]
ihf : (expand R 1) f = f
ihg : (expand R 1) g = g
⊢ (expand R 1) (f + g) = f + g
state_after: no goals

tactic: rw [AlgHom.map_mul, expand_C, AlgHom.map_pow, expand_X, pow_one]
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p q : ℕ
f : R[X]
n : ℕ
r : R
x✝ : (expand R 1) (C r * X ^ n) = C r * X ^ n
⊢ (expand R 1) (C r * X ^ (n + 1)) = C r * X ^ (n + 1)
state_after: no goals
Theorem: ContinuousLinearMap.coe_ofSeqClosedGraph
File: Mathlib/Analysis/NormedSpace/Banach.lean

tactic: ext
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : ∀ (u : ℕ → E) (x : E) (y : F), Tendsto u atTop (𝓝 x) → Tendsto (⇑g ∘ u) atTop (𝓝 y) → y = g x
⊢ ↑(ofSeqClosedGraph hg) = g
state_after: case h
𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : ∀ (u : ℕ → E) (x : E) (y : F), Tendsto u atTop (𝓝 x) → Tendsto (⇑g ∘ u) atTop (𝓝 y) → y = g x
x✝ : E
⊢ ↑(ofSeqClosedGraph hg) x✝ = g x✝

tactic: rfl
state_before: case h
𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : ∀ (u : ℕ → E) (x : E) (y : F), Tendsto u atTop (𝓝 x) → Tendsto (⇑g ∘ u) atTop (𝓝 y) → y = g x
x✝ : E
⊢ ↑(ofSeqClosedGraph hg) x✝ = g x✝
state_after: no goals
Theorem: WittVector.truncate_liftFun
File: Mathlib/RingTheory/WittVector/Truncated.lean

tactic: ext i
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : Semiring S
f : (k : ℕ) → S →+* TruncatedWittVector p k R
f_compat : ∀ (k₁ k₂ : ℕ) (hk : k₁ ≤ k₂), (TruncatedWittVector.truncate hk).comp (f k₂) = f k₁
s : S
⊢ (truncate n) (liftFun f s) = (f n) s
state_after: case h
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : Semiring S
f : (k : ℕ) → S →+* TruncatedWittVector p k R
f_compat : ∀ (k₁ k₂ : ℕ) (hk : k₁ ≤ k₂), (TruncatedWittVector.truncate hk).comp (f k₂) = f k₁
s : S
i : Fin n
⊢ TruncatedWittVector.coeff i ((truncate n) (liftFun f s)) = TruncatedWittVector.coeff i ((f n) s)

tactic: simp only [liftFun, TruncatedWittVector.coeff_mk, WittVector.truncate_mk']
state_before: case h
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : Semiring S
f : (k : ℕ) → S →+* TruncatedWittVector p k R
f_compat : ∀ (k₁ k₂ : ℕ) (hk : k₁ ≤ k₂), (TruncatedWittVector.truncate hk).comp (f k₂) = f k₁
s : S
i : Fin n
⊢ TruncatedWittVector.coeff i ((truncate n) (liftFun f s)) = TruncatedWittVector.coeff i ((f n) s)
state_after: case h
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : Semiring S
f : (k : ℕ) → S →+* TruncatedWittVector p k R
f_compat : ∀ (k₁ k₂ : ℕ) (hk : k₁ ≤ k₂), (TruncatedWittVector.truncate hk).comp (f k₂) = f k₁
s : S
i : Fin n
⊢ TruncatedWittVector.coeff (Fin.last ↑i) ((f (↑i + 1)) s) = TruncatedWittVector.coeff i ((f n) s)

tactic: rw [← f_compat (i + 1) n i.is_lt, RingHom.comp_apply, TruncatedWittVector.coeff_truncate]
state_before: case h
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : Semiring S
f : (k : ℕ) → S →+* TruncatedWittVector p k R
f_compat : ∀ (k₁ k₂ : ℕ) (hk : k₁ ≤ k₂), (TruncatedWittVector.truncate hk).comp (f k₂) = f k₁
s : S
i : Fin n
⊢ TruncatedWittVector.coeff (Fin.last ↑i) ((f (↑i + 1)) s) = TruncatedWittVector.coeff i ((f n) s)
state_after: case h
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : Semiring S
f : (k : ℕ) → S →+* TruncatedWittVector p k R
f_compat : ∀ (k₁ k₂ : ℕ) (hk : k₁ ≤ k₂), (TruncatedWittVector.truncate hk).comp (f k₂) = f k₁
s : S
i : Fin n
⊢ TruncatedWittVector.coeff (Fin.castLE ⋯ (Fin.last ↑i)) ((f n) s) = TruncatedWittVector.coeff i ((f n) s)

tactic: congr 1 with _
state_before: case h
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : Semiring S
f : (k : ℕ) → S →+* TruncatedWittVector p k R
f_compat : ∀ (k₁ k₂ : ℕ) (hk : k₁ ≤ k₂), (TruncatedWittVector.truncate hk).comp (f k₂) = f k₁
s : S
i : Fin n
⊢ TruncatedWittVector.coeff (Fin.castLE ⋯ (Fin.last ↑i)) ((f n) s) = TruncatedWittVector.coeff i ((f n) s)
state_after: no goals
Theorem: Sum.getRight?_map
File: .lake/packages/batteries/Batteries/Data/Sum/Lemmas.lean

tactic: cases x <;> rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
f : α → β
g : γ → δ
x : α ⊕ γ
⊢ (Sum.map f g x).getRight? = Option.map g x.getRight?
state_after: no goals
Theorem: Nat.Ico_filter_modEq_card
File: Mathlib/Data/Int/CardIntervalMod.lean

tactic: simp_rw [← Ico_filter_modEq_cast _ _ ▸ card_map _,
  Int.Ico_filter_modEq_card _ _ (cast_lt.mpr hr), Int.cast_natCast]
state_before: a b r : ℕ
hr : 0 < r
v : ℕ
⊢ ↑(filter (fun x => x ≡ v [MOD r]) (Ico a b)).card = max (⌈(↑b - ↑v) / ↑r⌉ - ⌈(↑a - ↑v) / ↑r⌉) 0
state_after: no goals
Theorem: MeasureTheory.VectorMeasure.of_diff
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

tactic: rw [← of_add_of_diff hA hB h, add_sub_cancel_left]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
M✝ : Type u_3
inst✝⁵ : AddCommMonoid M✝
inst✝⁴ : TopologicalSpace M✝
inst✝³ : T2Space M✝
v✝ : VectorMeasure α M✝
f : ℕ → Set α
M : Type u_4
inst✝² : AddCommGroup M
inst✝¹ : TopologicalSpace M
inst✝ : T2Space M
v : VectorMeasure α M
A B : Set α
hA : MeasurableSet A
hB : MeasurableSet B
h : A ⊆ B
⊢ ↑v (B \ A) = ↑v B - ↑v A
state_after: no goals
Theorem: PartialHomeomorph.eventually_nhdsWithin
File: Mathlib/Topology/PartialHomeomorph.lean

tactic: refine Iff.trans ?_ eventually_map
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
x : X
p : Y → Prop
s : Set X
hx : x ∈ e.source
⊢ (∀ᶠ (y : Y) in 𝓝[↑e.symm ⁻¹' s] ↑e x, p y) ↔ ∀ᶠ (x : X) in 𝓝[s] x, p (↑e 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
x : X
p : Y → Prop
s : Set X
hx : x ∈ e.source
⊢ (∀ᶠ (y : Y) in 𝓝[↑e.symm ⁻¹' s] ↑e x, p y) ↔ ∀ᶠ (b : Y) in map (↑e) (𝓝[s] x), p b

tactic: rw [e.map_nhdsWithin_eq hx, e.image_source_inter_eq', e.nhdsWithin_target_inter (e.mapsTo hx)]
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
x : X
p : Y → Prop
s : Set X
hx : x ∈ e.source
⊢ (∀ᶠ (y : Y) in 𝓝[↑e.symm ⁻¹' s] ↑e x, p y) ↔ ∀ᶠ (b : Y) in map (↑e) (𝓝[s] x), p b
state_after: no goals
Theorem: Complex.inv_cpow
File: Mathlib/Analysis/SpecialFunctions/Pow/Complex.lean

tactic: rw [inv_cpow_eq_ite, if_neg hx]
state_before: x n : ℂ
hx : x.arg ≠ π
⊢ x⁻¹ ^ n = (x ^ n)⁻¹
state_after: no goals
Theorem: Nat.card_eq_finsetCard
File: Mathlib/SetTheory/Cardinal/Finite.lean

tactic: simp only [Nat.card_eq_fintype_card, Fintype.card_coe]
state_before: α : Type u_1
β : Type u_2
s : Finset α
⊢ Nat.card { x // x ∈ s } = s.card
state_after: no goals
Theorem: List.get?_set_of_lt
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp [getElem?_set', getElem?_eq_getElem h]
state_before: α : Type u_1
a : α
m n : Nat
l : List α
h : n < l.length
⊢ (l.set m a).get? n = if m = n then some a else l.get? n
state_after: no goals
Theorem: SetTheory.PGame.lf_zero_le
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [lf_iff_exists_le]
state_before: xl xr : Type u
x : PGame
⊢ x ⧏ 0 ↔ ∃ j, x.moveRight j ≤ 0
state_after: xl xr : Type u
x : PGame
⊢ ((∃ i, x ≤ moveLeft 0 i) ∨ ∃ j, x.moveRight j ≤ 0) ↔ ∃ j, x.moveRight j ≤ 0

tactic: simp
state_before: xl xr : Type u
x : PGame
⊢ ((∃ i, x ≤ moveLeft 0 i) ∨ ∃ j, x.moveRight j ≤ 0) ↔ ∃ j, x.moveRight j ≤ 0
state_after: no goals
Theorem: Metric.frontier_thickening_disjoint
File: Mathlib/Topology/MetricSpace/Thickening.lean

tactic: refine (pairwise_disjoint_on _).2 fun r₁ r₂ hr => ?_
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x : α
A : Set α
⊢ Pairwise (Disjoint on fun r => frontier (thickening r A))
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x : α
A : Set α
r₁ r₂ : ℝ
hr : r₁ < r₂
⊢ Disjoint (frontier (thickening r₁ A)) (frontier (thickening r₂ A))

tactic: rcases le_total r₁ 0 with h₁ | h₁
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x : α
A : Set α
r₁ r₂ : ℝ
hr : r₁ < r₂
⊢ Disjoint (frontier (thickening r₁ A)) (frontier (thickening r₂ A))
state_after: case inl
ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x : α
A : Set α
r₁ r₂ : ℝ
hr : r₁ < r₂
h₁ : r₁ ≤ 0
⊢ Disjoint (frontier (thickening r₁ A)) (frontier (thickening r₂ A))

case inr
ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x : α
A : Set α
r₁ r₂ : ℝ
hr : r₁ < r₂
h₁ : 0 ≤ r₁
⊢ Disjoint (frontier (thickening r₁ A)) (frontier (thickening r₂ A))

tactic: refine ((disjoint_singleton.2 fun h => hr.ne ?_).preimage _).mono (frontier_thickening_subset _)
  (frontier_thickening_subset _)
state_before: case inr
ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x : α
A : Set α
r₁ r₂ : ℝ
hr : r₁ < r₂
h₁ : 0 ≤ r₁
⊢ Disjoint (frontier (thickening r₁ A)) (frontier (thickening r₂ A))
state_after: case inr
ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x : α
A : Set α
r₁ r₂ : ℝ
hr : r₁ < r₂
h₁ : 0 ≤ r₁
h : ENNReal.ofReal r₁ = ENNReal.ofReal r₂
⊢ r₁ = r₂

tactic: apply_fun ENNReal.toReal at h
state_before: case inr
ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x : α
A : Set α
r₁ r₂ : ℝ
hr : r₁ < r₂
h₁ : 0 ≤ r₁
h : ENNReal.ofReal r₁ = ENNReal.ofReal r₂
⊢ r₁ = r₂
state_after: case inr
ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x : α
A : Set α
r₁ r₂ : ℝ
hr : r₁ < r₂
h₁ : 0 ≤ r₁
h : (ENNReal.ofReal r₁).toReal = (ENNReal.ofReal r₂).toReal
⊢ r₁ = r₂

tactic: rwa [ENNReal.toReal_ofReal h₁, ENNReal.toReal_ofReal (h₁.trans hr.le)] at h
state_before: case inr
ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x : α
A : Set α
r₁ r₂ : ℝ
hr : r₁ < r₂
h₁ : 0 ≤ r₁
h : (ENNReal.ofReal r₁).toReal = (ENNReal.ofReal r₂).toReal
⊢ r₁ = r₂
state_after: no goals

tactic: simp [thickening_of_nonpos h₁]
state_before: case inl
ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x : α
A : Set α
r₁ r₂ : ℝ
hr : r₁ < r₂
h₁ : r₁ ≤ 0
⊢ Disjoint (frontier (thickening r₁ A)) (frontier (thickening r₂ A))
state_after: no goals
Theorem: List.prod_eq_pow_card
File: Mathlib/Algebra/BigOperators/Group/List.lean

tactic: rw [← prod_replicate, ← List.eq_replicate.mpr ⟨rfl, h⟩]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l✝ l₁ l₂ : List M
a : M
l : List M
m : M
h : ∀ x ∈ l, x = m
⊢ l.prod = m ^ l.length
state_after: no goals
Theorem: PowerSeries.derivativeFun_mul
File: Mathlib/RingTheory/PowerSeries/Derivative.lean

tactic: ext n
state_before: R : Type u_1
inst✝ : CommSemiring R
f g : R⟦X⟧
⊢ (f * g).derivativeFun = f • g.derivativeFun + g • f.derivativeFun
state_after: case h
R : Type u_1
inst✝ : CommSemiring R
f g : R⟦X⟧
n : ℕ
⊢ (coeff R n) (f * g).derivativeFun = (coeff R n) (f • g.derivativeFun + g • f.derivativeFun)

tactic: have h₁ : n < n + 1 := lt_succ_self n
state_before: case h
R : Type u_1
inst✝ : CommSemiring R
f g : R⟦X⟧
n : ℕ
⊢ (coeff R n) (f * g).derivativeFun = (coeff R n) (f • g.derivativeFun + g • f.derivativeFun)
state_after: case h
R : Type u_1
inst✝ : CommSemiring R
f g : R⟦X⟧
n : ℕ
h₁ : n < n + 1
⊢ (coeff R n) (f * g).derivativeFun = (coeff R n) (f • g.derivativeFun + g • f.derivativeFun)

tactic: have h₂ : n < n + 1 + 1 := Nat.lt_add_right _ h₁
state_before: case h
R : Type u_1
inst✝ : CommSemiring R
f g : R⟦X⟧
n : ℕ
h₁ : n < n + 1
⊢ (coeff R n) (f * g).derivativeFun = (coeff R n) (f • g.derivativeFun + g • f.derivativeFun)
state_after: case h
R : Type u_1
inst✝ : CommSemiring R
f g : R⟦X⟧
n : ℕ
h₁ : n < n + 1
h₂ : n < n + 1 + 1
⊢ (coeff R n) (f * g).derivativeFun = (coeff R n) (f • g.derivativeFun + g • f.derivativeFun)

tactic: rw [coeff_derivativeFun, map_add, coeff_mul_eq_coeff_trunc_mul_trunc _ _ (lt_succ_self _),
  smul_eq_mul, smul_eq_mul, coeff_mul_eq_coeff_trunc_mul_trunc₂ g f.derivativeFun h₂ h₁,
  coeff_mul_eq_coeff_trunc_mul_trunc₂ f g.derivativeFun h₂ h₁, trunc_derivativeFun,
  trunc_derivativeFun, ← map_add, ← derivativeFun_coe_mul_coe, coeff_derivativeFun]
state_before: case h
R : Type u_1
inst✝ : CommSemiring R
f g : R⟦X⟧
n : ℕ
h₁ : n < n + 1
h₂ : n < n + 1 + 1
⊢ (coeff R n) (f * g).derivativeFun = (coeff R n) (f • g.derivativeFun + g • f.derivativeFun)
state_after: no goals
Theorem: parallelogram_law
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: simp only [inner_add_add_self, inner_sub_sub_self]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : E
⊢ ⟪x + y, x + y⟫_𝕜 + ⟪x - y, x - y⟫_𝕜 = 2 * (⟪x, x⟫_𝕜 + ⟪y, y⟫_𝕜)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : E
⊢ ⟪x, x⟫_𝕜 + ⟪x, y⟫_𝕜 + ⟪y, x⟫_𝕜 + ⟪y, y⟫_𝕜 + (⟪x, x⟫_𝕜 - ⟪x, y⟫_𝕜 - ⟪y, x⟫_𝕜 + ⟪y, y⟫_𝕜) = 2 * (⟪x, x⟫_𝕜 + ⟪y, y⟫_𝕜)

tactic: ring
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : E
⊢ ⟪x, x⟫_𝕜 + ⟪x, y⟫_𝕜 + ⟪y, x⟫_𝕜 + ⟪y, y⟫_𝕜 + (⟪x, x⟫_𝕜 - ⟪x, y⟫_𝕜 - ⟪y, x⟫_𝕜 + ⟪y, y⟫_𝕜) = 2 * (⟪x, x⟫_𝕜 + ⟪y, y⟫_𝕜)
state_after: no goals
Theorem: Real.volume_emetric_closedBall
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: rcases eq_or_ne r ∞ with (rfl | hr)
state_before: ι : Type u_1
inst✝ : Fintype ι
a : ℝ
r : ℝ≥0∞
⊢ volume (EMetric.closedBall a r) = 2 * r
state_after: case inl
ι : Type u_1
inst✝ : Fintype ι
a : ℝ
⊢ volume (EMetric.closedBall a ⊤) = 2 * ⊤

case inr
ι : Type u_1
inst✝ : Fintype ι
a : ℝ
r : ℝ≥0∞
hr : r ≠ ⊤
⊢ volume (EMetric.closedBall a r) = 2 * r

tactic: rw [EMetric.closedBall_top, volume_univ, two_mul, _root_.top_add]
state_before: case inl
ι : Type u_1
inst✝ : Fintype ι
a : ℝ
⊢ volume (EMetric.closedBall a ⊤) = 2 * ⊤
state_after: no goals

tactic: lift r to ℝ≥0 using hr
state_before: case inr
ι : Type u_1
inst✝ : Fintype ι
a : ℝ
r : ℝ≥0∞
hr : r ≠ ⊤
⊢ volume (EMetric.closedBall a r) = 2 * r
state_after: case inr.intro
ι : Type u_1
inst✝ : Fintype ι
a : ℝ
r : ℝ≥0
⊢ volume (EMetric.closedBall a ↑r) = 2 * ↑r

tactic: rw [Metric.emetric_closedBall_nnreal, volume_closedBall, two_mul, ← NNReal.coe_add,
  ENNReal.ofReal_coe_nnreal, ENNReal.coe_add, two_mul]
state_before: case inr.intro
ι : Type u_1
inst✝ : Fintype ι
a : ℝ
r : ℝ≥0
⊢ volume (EMetric.closedBall a ↑r) = 2 * ↑r
state_after: no goals
Theorem: Finset.card_mono
File: Mathlib/Data/Finset/Card.lean

tactic: apply card_le_card
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t : Finset α
a b : α
⊢ Monotone card
state_after: no goals
Theorem: Equiv.Perm.sign_trans
File: Mathlib/GroupTheory/Perm/Sign.lean

tactic: rw [← mul_def, sign_mul]
state_before: α : Type u
inst✝¹ : DecidableEq α
β : Type v
inst✝ : Fintype α
f g : Perm α
⊢ sign (Equiv.trans f g) = sign g * sign f
state_after: no goals
Theorem: CategoryTheory.congrArg_cast_hom_left
File: Mathlib/CategoryTheory/EqToHom.lean

tactic: cases p
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
β : Sort u_1
X Y Z : C
p : X = Y
q : Y ⟶ Z
⊢ cast ⋯ q = eqToHom p ≫ q
state_after: case refl
C : Type u₁
inst✝ : Category.{v₁, u₁} C
β : Sort u_1
X Z : C
q : X ⟶ Z
⊢ cast ⋯ q = eqToHom ⋯ ≫ q

tactic: simp
state_before: case refl
C : Type u₁
inst✝ : Category.{v₁, u₁} C
β : Sort u_1
X Z : C
q : X ⟶ Z
⊢ cast ⋯ q = eqToHom ⋯ ≫ q
state_after: no goals
Theorem: Subgroup.coe_eq_univ
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: rfl
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H✝ K H : Subgroup G
⊢ ↑H = ↑⊤ ↔ ↑H = Set.univ
state_after: no goals
Theorem: MeasureTheory.setLIntegral_smul_measure
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [Measure.restrict_smul, lintegral_smul_measure]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
c : ℝ≥0∞
f : α → ℝ≥0∞
s : Set α
⊢ ∫⁻ (a : α) in s, f a ∂c • μ = c * ∫⁻ (a : α) in s, f a ∂μ
state_after: no goals