1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Metric.infDist_zero_of_mem_closure
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: rw [← infDist_closure]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
hx : x ∈ closure s
⊢ infDist x s = 0
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
hx : x ∈ closure s
⊢ infDist x (closure s) = 0

tactic: exact infDist_zero_of_mem hx
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
hx : x ∈ closure s
⊢ infDist x (closure s) = 0
state_after: no goals
Theorem: IsAdjoinRoot.liftHom_map
File: Mathlib/RingTheory/IsAdjoinRoot.lean

tactic: rw [← lift_algebraMap_apply, lift_map, aeval_def]
state_before: R : Type u
S : Type v
inst✝⁴ : CommRing R
inst✝³ : Ring S
f : R[X]
inst✝² : Algebra R S
T : Type u_1
inst✝¹ : CommRing T
i : R →+* T
x : T
hx : eval₂ i x f = 0
inst✝ : Algebra R T
hx' : (aeval x) f = 0
h : IsAdjoinRoot S f
z : R[X]
⊢ (liftHom x hx' h) (h.map z) = (aeval x) z
state_after: no goals
Theorem: piecewise_ae_eq_of_ae_eq_set
File: Mathlib/MeasureTheory/Measure/Restrict.lean

tactic: simp [piecewise, hx]
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
inst✝² : MeasurableSpace α
μ : Measure α
s t : Set α
f g : α → β
inst✝¹ : DecidablePred fun x => x ∈ s
inst✝ : DecidablePred fun x => x ∈ t
hst : s =ᶠ[ae μ] t
x : α
hx : x ∈ s ↔ x ∈ t
⊢ s.piecewise f g x = t.piecewise f g x
state_after: no goals
Theorem: LocallyFinite.finite_of_compact
File: Mathlib/Topology/Compactness/Compact.lean

tactic: simpa only [hne] using hf.finite_nonempty_of_compact
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
inst✝ : CompactSpace X
f : ι → Set X
hf : LocallyFinite f
hne : ∀ (i : ι), (f i).Nonempty
⊢ univ.Finite
state_after: no goals
Theorem: LieAlgebra.IsKilling.killingForm_nondegenerate
File: Mathlib/Algebra/Lie/Killing.lean

tactic: simp [LinearMap.BilinForm.nondegenerate_iff_ker_eq_bot]
state_before: R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : Field K
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : LieAlgebra K L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R L
inst✝ : IsKilling R L
⊢ (killingForm R L).Nondegenerate
state_after: no goals
Theorem: IsHilbertSum.linearIsometryEquiv_symm_apply_dfinsupp_sum_single
File: Mathlib/Analysis/InnerProductSpace/l2Space.lean

tactic: simp only [map_dfinsupp_sum, IsHilbertSum.linearIsometryEquiv_symm_apply_single]
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : RCLike 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
F : ι → Submodule 𝕜 E
hV : IsHilbertSum 𝕜 G V
W₀ : Π₀ (i : ι), G i
⊢ hV.linearIsometryEquiv.symm (W₀.sum (lp.single 2)) = W₀.sum fun i => ⇑(V i)
state_after: no goals
Theorem: Complex.betaIntegral_convergent
File: Mathlib/Analysis/SpecialFunctions/Gamma/Beta.lean

tactic: refine (betaIntegral_convergent_left hu v).trans ?_
state_before: u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
⊢ IntervalIntegrable (fun x => ↑x ^ (u - 1) * (1 - ↑x) ^ (v - 1)) volume 0 1
state_after: u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
⊢ IntervalIntegrable (fun x => ↑x ^ (u - 1) * (1 - ↑x) ^ (v - 1)) volume (1 / 2) 1

tactic: rw [IntervalIntegrable.iff_comp_neg]
state_before: u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
⊢ IntervalIntegrable (fun x => ↑x ^ (u - 1) * (1 - ↑x) ^ (v - 1)) volume (1 / 2) 1
state_after: u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
⊢ IntervalIntegrable (fun x => ↑(-x) ^ (u - 1) * (1 - ↑(-x)) ^ (v - 1)) volume (-(1 / 2)) (-1)

tactic: convert ((betaIntegral_convergent_left hv u).comp_add_right 1).symm using 1
state_before: u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
⊢ IntervalIntegrable (fun x => ↑(-x) ^ (u - 1) * (1 - ↑(-x)) ^ (v - 1)) volume (-(1 / 2)) (-1)
state_after: case h.e'_3
u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
⊢ (fun x => ↑(-x) ^ (u - 1) * (1 - ↑(-x)) ^ (v - 1)) = fun x => ↑(x + 1) ^ (v - 1) * (1 - ↑(x + 1)) ^ (u - 1)

case h.e'_5
u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
⊢ -(1 / 2) = 1 / 2 - 1

case h.e'_6
u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
⊢ -1 = 0 - 1

tactic: ext1 x
state_before: case h.e'_3
u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
⊢ (fun x => ↑(-x) ^ (u - 1) * (1 - ↑(-x)) ^ (v - 1)) = fun x => ↑(x + 1) ^ (v - 1) * (1 - ↑(x + 1)) ^ (u - 1)
state_after: case h.e'_3.h
u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
x : ℝ
⊢ ↑(-x) ^ (u - 1) * (1 - ↑(-x)) ^ (v - 1) = ↑(x + 1) ^ (v - 1) * (1 - ↑(x + 1)) ^ (u - 1)

tactic: conv_lhs => rw [mul_comm]
state_before: case h.e'_3.h
u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
x : ℝ
⊢ ↑(-x) ^ (u - 1) * (1 - ↑(-x)) ^ (v - 1) = ↑(x + 1) ^ (v - 1) * (1 - ↑(x + 1)) ^ (u - 1)
state_after: case h.e'_3.h
u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
x : ℝ
⊢ (1 - ↑(-x)) ^ (v - 1) * ↑(-x) ^ (u - 1) = ↑(x + 1) ^ (v - 1) * (1 - ↑(x + 1)) ^ (u - 1)

tactic: push_cast
state_before: case h.e'_3.h.e_a.e_a
u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
x : ℝ
⊢ ↑(-x) = 1 - ↑(x + 1)
state_after: case h.e'_3.h.e_a.e_a
u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
x : ℝ
⊢ -↑x = 1 - (↑x + 1)

tactic: ring
state_before: case h.e'_3.h.e_a.e_a
u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
x : ℝ
⊢ -↑x = 1 - (↑x + 1)
state_after: no goals

tactic: norm_num
state_before: case h.e'_5
u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
⊢ -(1 / 2) = 1 / 2 - 1
state_after: no goals

tactic: norm_num
state_before: case h.e'_6
u v : ℂ
hu : 0 < u.re
hv : 0 < v.re
⊢ -1 = 0 - 1
state_after: no goals
Theorem: Real.add_lt_add_iff_left
File: Mathlib/Data/Real/Basic.lean

tactic: induction a using Real.ind_mk
state_before: x y a b c : ℝ
⊢ c + a < c + b ↔ a < b
state_after: case h
x y b c : ℝ
y✝ : CauSeq ℚ abs
⊢ c + mk y✝ < c + b ↔ mk y✝ < b

tactic: induction b using Real.ind_mk
state_before: case h
x y b c : ℝ
y✝ : CauSeq ℚ abs
⊢ c + mk y✝ < c + b ↔ mk y✝ < b
state_after: case h.h
x y c : ℝ
y✝¹ y✝ : CauSeq ℚ abs
⊢ c + mk y✝¹ < c + mk y✝ ↔ mk y✝¹ < mk y✝

tactic: induction c using Real.ind_mk
state_before: case h.h
x y c : ℝ
y✝¹ y✝ : CauSeq ℚ abs
⊢ c + mk y✝¹ < c + mk y✝ ↔ mk y✝¹ < mk y✝
state_after: case h.h.h
x y : ℝ
y✝² y✝¹ y✝ : CauSeq ℚ abs
⊢ mk y✝ + mk y✝² < mk y✝ + mk y✝¹ ↔ mk y✝² < mk y✝¹

tactic: simp only [mk_lt, ← mk_add]
state_before: case h.h.h
x y : ℝ
y✝² y✝¹ y✝ : CauSeq ℚ abs
⊢ mk y✝ + mk y✝² < mk y✝ + mk y✝¹ ↔ mk y✝² < mk y✝¹
state_after: case h.h.h
x y : ℝ
y✝² y✝¹ y✝ : CauSeq ℚ abs
⊢ y✝ + y✝² < y✝ + y✝¹ ↔ y✝² < y✝¹

tactic: show Pos _ ↔ Pos _
state_before: case h.h.h
x y : ℝ
y✝² y✝¹ y✝ : CauSeq ℚ abs
⊢ y✝ + y✝² < y✝ + y✝¹ ↔ y✝² < y✝¹
state_after: case h.h.h
x y : ℝ
y✝² y✝¹ y✝ : CauSeq ℚ abs
⊢ (y✝ + y✝¹ - (y✝ + y✝²)).Pos ↔ (y✝¹ - y✝²).Pos

tactic: rw [add_sub_add_left_eq_sub]
state_before: case h.h.h
x y : ℝ
y✝² y✝¹ y✝ : CauSeq ℚ abs
⊢ (y✝ + y✝¹ - (y✝ + y✝²)).Pos ↔ (y✝¹ - y✝²).Pos
state_after: no goals
Theorem: finRotate_last'
File: Mathlib/Logic/Equiv/Fin.lean

tactic: omega
state_before: m n : ℕ
⊢ n < n + 1
state_after: no goals

tactic: dsimp [finRotate_succ]
state_before: m n : ℕ
⊢ (finRotate (n + 1)) ⟨n, ⋯⟩ = ⟨0, ⋯⟩
state_after: m n : ℕ
⊢ Fin.cast ⋯ (finAddFlip ⟨n, ⋯⟩) = 0

tactic: rw [finAddFlip_apply_mk_right le_rfl]
state_before: m n : ℕ
⊢ Fin.cast ⋯ (finAddFlip ⟨n, ⋯⟩) = 0
state_after: m n : ℕ
⊢ Fin.cast ⋯ ⟨n - n, ⋯⟩ = 0

tactic: simp
state_before: m n : ℕ
⊢ Fin.cast ⋯ ⟨n - n, ⋯⟩ = 0
state_after: no goals
Theorem: Real.rpow_lt_one_of_one_lt_of_neg
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: convert rpow_lt_rpow_of_exponent_lt hx hz
state_before: x✝ y z✝ : ℝ
n : ℕ
x z : ℝ
hx : 1 < x
hz : z < 0
⊢ x ^ z < 1
state_after: case h.e'_4
x✝ y z✝ : ℝ
n : ℕ
x z : ℝ
hx : 1 < x
hz : z < 0
⊢ 1 = x ^ 0

tactic: exact (rpow_zero x).symm
state_before: case h.e'_4
x✝ y z✝ : ℝ
n : ℕ
x z : ℝ
hx : 1 < x
hz : z < 0
⊢ 1 = x ^ 0
state_after: no goals
Theorem: Set.definable_finset_biUnion
File: Mathlib/ModelTheory/Definability.lean

tactic: rw [← Finset.sup_set_eq_biUnion]
state_before: M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
ι : Type u_2
f : ι → Set (α → M)
hf : ∀ (i : ι), A.Definable L (f i)
s : Finset ι
⊢ A.Definable L (⋃ i ∈ s, f i)
state_after: M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
ι : Type u_2
f : ι → Set (α → M)
hf : ∀ (i : ι), A.Definable L (f i)
s : Finset ι
⊢ A.Definable L (s.sup f)

tactic: exact definable_finset_sup hf s
state_before: M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s✝ : Set (α → M)
ι : Type u_2
f : ι → Set (α → M)
hf : ∀ (i : ι), A.Definable L (f i)
s : Finset ι
⊢ A.Definable L (s.sup f)
state_after: no goals
Theorem: PadicInt.limNthHom_zero
File: Mathlib/NumberTheory/Padics/RingHoms.lean

tactic: simp [limNthHom]
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
R : Type u_1
inst✝ : NonAssocSemiring R
f : (k : ℕ) → R →+* ZMod (p ^ k)
f_compat : ∀ (k1 k2 : ℕ) (hk : k1 ≤ k2), (ZMod.castHom ⋯ (ZMod (p ^ k1))).comp (f k2) = f k1
⊢ limNthHom f_compat 0 = 0
state_after: p : ℕ
hp_prime : Fact (Nat.Prime p)
R : Type u_1
inst✝ : NonAssocSemiring R
f : (k : ℕ) → R →+* ZMod (p ^ k)
f_compat : ∀ (k1 k2 : ℕ) (hk : k1 ≤ k2), (ZMod.castHom ⋯ (ZMod (p ^ k1))).comp (f k2) = f k1
⊢ ofIntSeq 0 ⋯ = 0

tactic: rfl
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
R : Type u_1
inst✝ : NonAssocSemiring R
f : (k : ℕ) → R →+* ZMod (p ^ k)
f_compat : ∀ (k1 k2 : ℕ) (hk : k1 ≤ k2), (ZMod.castHom ⋯ (ZMod (p ^ k1))).comp (f k2) = f k1
⊢ ofIntSeq 0 ⋯ = 0
state_after: no goals
Theorem: gold_sq
File: Mathlib/Data/Real/GoldenRatio.lean

tactic: rw [goldenRatio, ← sub_eq_zero]
state_before: ⊢ φ ^ 2 = φ + 1
state_after: ⊢ ((1 + √5) / 2) ^ 2 - ((1 + √5) / 2 + 1) = 0

tactic: ring_nf
state_before: ⊢ ((1 + √5) / 2) ^ 2 - ((1 + √5) / 2 + 1) = 0
state_after: ⊢ -5 / 4 + √5 ^ 2 * (1 / 4) = 0

tactic: rw [Real.sq_sqrt] <;> norm_num
state_before: ⊢ -5 / 4 + √5 ^ 2 * (1 / 4) = 0
state_after: no goals
Theorem: FirstOrder.Language.BoundedFormula.relabel_not
File: Mathlib/ModelTheory/Syntax.lean

tactic: simp [BoundedFormula.not]
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 : ℕ
g : α → β ⊕ Fin n
k : ℕ
φ : L.BoundedFormula α k
⊢ relabel g φ.not = (relabel g φ).not
state_after: no goals
Theorem: Finset.sum_card_fiberwise_eq_card_filter
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: simpa only [card_eq_sum_ones] using sum_fiberwise_eq_sum_filter _ _ _ _
state_before: ι : Type u_1
κ✝ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f g✝ : α → β
κ : Type u_6
inst✝ : DecidableEq κ
s : Finset ι
t : Finset κ
g : ι → κ
⊢ ∑ j ∈ t, (filter (fun i => g i = j) s).card = (filter (fun i => g i ∈ t) s).card
state_after: no goals
Theorem: isCoprime_one_left
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: rw [one_mul, zero_mul, add_zero]
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
⊢ 1 * 1 + 0 * x = 1
state_after: no goals
Theorem: Ordinal.ne_bmex
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [typein_enum]
state_before: case h.e'_2.h.e'_1
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
f : (a : Ordinal.{u}) → a < o → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
⊢ i = typein (fun x x_1 => x < x_1) (enum (fun x x_1 => x < x_1) i ⋯)
state_after: no goals

tactic: rwa [type_lt]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
f : (a : Ordinal.{u}) → a < o → Ordinal.{max u v}
i : Ordinal.{u}
hi : i < o
⊢ i < type fun x x_1 => x < x_1
state_after: no goals
Theorem: Matrix.TransvectionStruct.inv_mul
File: Mathlib/LinearAlgebra/Matrix/Transvection.lean

tactic: rcases t with ⟨_, _, t_hij⟩
state_before: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Fintype n
t : TransvectionStruct n R
⊢ t.inv.toMatrix * t.toMatrix = 1
state_after: case mk
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Fintype n
i✝ j✝ : n
t_hij : i✝ ≠ j✝
c✝ : R
⊢ { i := i✝, j := j✝, hij := t_hij, c := c✝ }.inv.toMatrix * { i := i✝, j := j✝, hij := t_hij, c := c✝ }.toMatrix = 1

tactic: simp [toMatrix, transvection_mul_transvection_same, t_hij]
state_before: case mk
n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Fintype n
i✝ j✝ : n
t_hij : i✝ ≠ j✝
c✝ : R
⊢ { i := i✝, j := j✝, hij := t_hij, c := c✝ }.inv.toMatrix * { i := i✝, j := j✝, hij := t_hij, c := c✝ }.toMatrix = 1
state_after: no goals
Theorem: continuousWithinAt_of_not_mem_closure
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [mem_closure_iff_nhdsWithin_neBot, not_neBot] at hx
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s : Set α
x : α
hx : x ∉ closure s
⊢ ContinuousWithinAt f s x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s : Set α
x : α
hx : 𝓝[s] x = ⊥
⊢ ContinuousWithinAt f s x

tactic: rw [ContinuousWithinAt, hx]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s : Set α
x : α
hx : 𝓝[s] x = ⊥
⊢ ContinuousWithinAt f s x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s : Set α
x : α
hx : 𝓝[s] x = ⊥
⊢ Tendsto f ⊥ (𝓝 (f x))

tactic: exact tendsto_bot
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s : Set α
x : α
hx : 𝓝[s] x = ⊥
⊢ Tendsto f ⊥ (𝓝 (f x))
state_after: no goals
Theorem: MeasureTheory.JordanDecomposition.eq_of_posPart_eq_posPart
File: Mathlib/MeasureTheory/Decomposition/Jordan.lean

tactic: ext1
state_before: α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : j₁.toSignedMeasure = j₂.toSignedMeasure
⊢ j₁ = j₂
state_after: case posPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : j₁.toSignedMeasure = j₂.toSignedMeasure
⊢ j₁.posPart = j₂.posPart

case negPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : j₁.toSignedMeasure = j₂.toSignedMeasure
⊢ j₁.negPart = j₂.negPart

tactic: exact hj
state_before: case posPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : j₁.toSignedMeasure = j₂.toSignedMeasure
⊢ j₁.posPart = j₂.posPart
state_after: no goals

tactic: rw [← toSignedMeasure_eq_toSignedMeasure_iff]
state_before: case negPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : j₁.toSignedMeasure = j₂.toSignedMeasure
⊢ j₁.negPart = j₂.negPart
state_after: case negPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : j₁.toSignedMeasure = j₂.toSignedMeasure
⊢ j₁.negPart.toSignedMeasure = j₂.negPart.toSignedMeasure

tactic: unfold toSignedMeasure at hj'
state_before: case negPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : j₁.toSignedMeasure = j₂.toSignedMeasure
⊢ j₁.negPart.toSignedMeasure = j₂.negPart.toSignedMeasure
state_after: case negPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : j₁.posPart.toSignedMeasure - j₁.negPart.toSignedMeasure = j₂.posPart.toSignedMeasure - j₂.negPart.toSignedMeasure
⊢ j₁.negPart.toSignedMeasure = j₂.negPart.toSignedMeasure

tactic: simp_rw [hj, sub_right_inj] at hj'
state_before: case negPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : j₁.posPart.toSignedMeasure - j₁.negPart.toSignedMeasure = j₂.posPart.toSignedMeasure - j₂.negPart.toSignedMeasure
⊢ j₁.negPart.toSignedMeasure = j₂.negPart.toSignedMeasure
state_after: case negPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : j₁.negPart.toSignedMeasure = j₂.negPart.toSignedMeasure
⊢ j₁.negPart.toSignedMeasure = j₂.negPart.toSignedMeasure

tactic: exact hj'
state_before: case negPart
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
j₁ j₂ : JordanDecomposition α
hj : j₁.posPart = j₂.posPart
hj' : j₁.negPart.toSignedMeasure = j₂.negPart.toSignedMeasure
⊢ j₁.negPart.toSignedMeasure = j₂.negPart.toSignedMeasure
state_after: no goals
Theorem: Rat.mul_num
File: Mathlib/Data/Rat/Lemmas.lean

tactic: rw [mul_def, normalize_eq]
state_before: q₁ q₂ : ℚ
⊢ (q₁ * q₂).num = q₁.num * q₂.num / ↑((q₁.num * q₂.num).natAbs.gcd (q₁.den * q₂.den))
state_after: no goals
Theorem: SimplexCategory.image_eq
File: Mathlib/AlgebraicTopology/SimplexCategory.lean

tactic: haveI := strongEpi_of_epi e
state_before: Δ Δ' Δ'' : SimplexCategory
φ : Δ ⟶ Δ''
e : Δ ⟶ Δ'
inst✝¹ : Epi e
i : Δ' ⟶ Δ''
inst✝ : Mono i
fac : e ≫ i = φ
⊢ image φ = Δ'
state_after: Δ Δ' Δ'' : SimplexCategory
φ : Δ ⟶ Δ''
e : Δ ⟶ Δ'
inst✝¹ : Epi e
i : Δ' ⟶ Δ''
inst✝ : Mono i
fac : e ≫ i = φ
this : StrongEpi e
⊢ image φ = Δ'

tactic: let e := image.isoStrongEpiMono e i fac
state_before: Δ Δ' Δ'' : SimplexCategory
φ : Δ ⟶ Δ''
e : Δ ⟶ Δ'
inst✝¹ : Epi e
i : Δ' ⟶ Δ''
inst✝ : Mono i
fac : e ≫ i = φ
this : StrongEpi e
⊢ image φ = Δ'
state_after: Δ Δ' Δ'' : SimplexCategory
φ : Δ ⟶ Δ''
e✝ : Δ ⟶ Δ'
inst✝¹ : Epi e✝
i : Δ' ⟶ Δ''
inst✝ : Mono i
fac : e✝ ≫ i = φ
this : StrongEpi e✝
e : Δ' ≅ image φ := image.isoStrongEpiMono e✝ i fac
⊢ image φ = Δ'

tactic: ext
state_before: Δ Δ' Δ'' : SimplexCategory
φ : Δ ⟶ Δ''
e✝ : Δ ⟶ Δ'
inst✝¹ : Epi e✝
i : Δ' ⟶ Δ''
inst✝ : Mono i
fac : e✝ ≫ i = φ
this : StrongEpi e✝
e : Δ' ≅ image φ := image.isoStrongEpiMono e✝ i fac
⊢ image φ = Δ'
state_after: case a
Δ Δ' Δ'' : SimplexCategory
φ : Δ ⟶ Δ''
e✝ : Δ ⟶ Δ'
inst✝¹ : Epi e✝
i : Δ' ⟶ Δ''
inst✝ : Mono i
fac : e✝ ≫ i = φ
this : StrongEpi e✝
e : Δ' ≅ image φ := image.isoStrongEpiMono e✝ i fac
⊢ (image φ).len = Δ'.len

tactic: exact
  le_antisymm (len_le_of_epi (inferInstance : Epi e.hom))
    (len_le_of_mono (inferInstance : Mono e.hom))
state_before: case a
Δ Δ' Δ'' : SimplexCategory
φ : Δ ⟶ Δ''
e✝ : Δ ⟶ Δ'
inst✝¹ : Epi e✝
i : Δ' ⟶ Δ''
inst✝ : Mono i
fac : e✝ ≫ i = φ
this : StrongEpi e✝
e : Δ' ≅ image φ := image.isoStrongEpiMono e✝ i fac
⊢ (image φ).len = Δ'.len
state_after: no goals
Theorem: Matrix.dotProduct_self_star_eq_zero
File: Mathlib/LinearAlgebra/Matrix/DotProduct.lean

tactic: simp [Function.funext_iff, mul_eq_zero]
state_before: m : Type u_1
n : Type u_2
p : Type u_3
R : Type u_4
inst✝⁷ : Fintype m
inst✝⁶ : Fintype n
inst✝⁵ : Fintype p
inst✝⁴ : PartialOrder R
inst✝³ : NonUnitalRing R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : NoZeroDivisors R
v : n → R
⊢ (∀ i ∈ Finset.univ, v i * star (v i) = 0) ↔ v = 0
state_after: no goals
Theorem: iteratedDeriv_exp_const_mul
File: Mathlib/Analysis/SpecialFunctions/ExpDeriv.lean

tactic: rw [iteratedDeriv_const_mul contDiff_exp, iteratedDeriv_eq_iterate, iter_deriv_exp]
state_before: n : ℕ
c : ℝ
⊢ (iteratedDeriv n fun s => rexp (c * s)) = fun s => c ^ n * rexp (c * s)
state_after: no goals
Theorem: Polynomial.leadingCoeff_div
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

tactic: by_cases hq : q = 0
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hpq : q.degree ≤ p.degree
⊢ (p / q).leadingCoeff = p.leadingCoeff / q.leadingCoeff
state_after: case pos
R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hpq : q.degree ≤ p.degree
hq : q = 0
⊢ (p / q).leadingCoeff = p.leadingCoeff / q.leadingCoeff

case neg
R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hpq : q.degree ≤ p.degree
hq : ¬q = 0
⊢ (p / q).leadingCoeff = p.leadingCoeff / q.leadingCoeff

tactic: rw [div_def, leadingCoeff_mul, leadingCoeff_C,
  leadingCoeff_divByMonic_of_monic (monic_mul_leadingCoeff_inv hq) _, mul_comm,
  div_eq_mul_inv]
state_before: case neg
R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hpq : q.degree ≤ p.degree
hq : ¬q = 0
⊢ (p / q).leadingCoeff = p.leadingCoeff / q.leadingCoeff
state_after: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hpq : q.degree ≤ p.degree
hq : ¬q = 0
⊢ (q * C q.leadingCoeff⁻¹).degree ≤ p.degree

tactic: rwa [degree_mul_leadingCoeff_inv q hq]
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hpq : q.degree ≤ p.degree
hq : ¬q = 0
⊢ (q * C q.leadingCoeff⁻¹).degree ≤ p.degree
state_after: no goals

tactic: simp [hq]
state_before: case pos
R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hpq : q.degree ≤ p.degree
hq : q = 0
⊢ (p / q).leadingCoeff = p.leadingCoeff / q.leadingCoeff
state_after: no goals
Theorem: Pi.card_Ico
File: Mathlib/Data/Pi/Interval.lean

tactic: rw [card_Ico_eq_card_Icc_sub_one, card_Icc]
state_before: ι : Type u_1
α : ι → Type u_2
inst✝⁴ : Fintype ι
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → DecidableEq (α i)
inst✝¹ : (i : ι) → PartialOrder (α i)
inst✝ : (i : ι) → LocallyFiniteOrder (α i)
a b : (i : ι) → α i
⊢ (Ico a b).card = ∏ i : ι, (Icc (a i) (b i)).card - 1
state_after: no goals
Theorem: ProperCone.hyperplane_separation_of_nmem
File: Mathlib/Analysis/Convex/Cone/Proper.lean

tactic: contrapose! disj
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace ℝ E
inst✝³ : CompleteSpace E
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
K : ProperCone ℝ E
f : E →L[ℝ] F
b : F
disj : b ∉ map f K
⊢ ∃ y, (adjoint f) y ∈ K.dual ∧ ⟪y, b⟫_ℝ < 0
state_after: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace ℝ E
inst✝³ : CompleteSpace E
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
K : ProperCone ℝ E
f : E →L[ℝ] F
b : F
disj : ∀ (y : F), (adjoint f) y ∈ K.dual → 0 ≤ ⟪y, b⟫_ℝ
⊢ b ∈ map f K

tactic: rwa [K.hyperplane_separation]
state_before: E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : InnerProductSpace ℝ E
inst✝³ : CompleteSpace E
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ F
inst✝ : CompleteSpace F
K : ProperCone ℝ E
f : E →L[ℝ] F
b : F
disj : ∀ (y : F), (adjoint f) y ∈ K.dual → 0 ≤ ⟪y, b⟫_ℝ
⊢ b ∈ map f K
state_after: no goals
Theorem: Basis.sum_equivFun
File: Mathlib/LinearAlgebra/Basis.lean

tactic: rw [← b.equivFun_symm_apply, b.equivFun.symm_apply_apply]
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
u : M
⊢ ∑ i : ι, b.equivFun u i • b i = u
state_after: no goals