1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: rel_sup_mul
File: Mathlib/Topology/Algebra/InfiniteSum/NatInt.lean

tactic: convert rel_iSup_tprod m m0 R m_iSup fun b ↦ cond b s₁ s₂
state_before: M : Type u_1
inst✝⁵ : CommMonoid M
inst✝⁴ : TopologicalSpace M
m✝ m' : M
G : Type u_2
inst✝³ : CommGroup G
g g' : G
inst✝² : T2Space M
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : Countable β
inst✝ : CompleteLattice α
m : α → M
m0 : m ⊥ = 1
R : M → M → Prop
m_iSup : ∀ (s : ℕ → α), R (m (⨆ i, s i)) (∏' (i : ℕ), m (s i))
s₁ s₂ : α
⊢ R (m (s₁ ⊔ s₂)) (m s₁ * m s₂)
state_after: case h.e'_1.h.e'_1
M : Type u_1
inst✝⁵ : CommMonoid M
inst✝⁴ : TopologicalSpace M
m✝ m' : M
G : Type u_2
inst✝³ : CommGroup G
g g' : G
inst✝² : T2Space M
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : Countable β
inst✝ : CompleteLattice α
m : α → M
m0 : m ⊥ = 1
R : M → M → Prop
m_iSup : ∀ (s : ℕ → α), R (m (⨆ i, s i)) (∏' (i : ℕ), m (s i))
s₁ s₂ : α
⊢ s₁ ⊔ s₂ = ⨆ b, bif b then s₁ else s₂

case h.e'_2
M : Type u_1
inst✝⁵ : CommMonoid M
inst✝⁴ : TopologicalSpace M
m✝ m' : M
G : Type u_2
inst✝³ : CommGroup G
g g' : G
inst✝² : T2Space M
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : Countable β
inst✝ : CompleteLattice α
m : α → M
m0 : m ⊥ = 1
R : M → M → Prop
m_iSup : ∀ (s : ℕ → α), R (m (⨆ i, s i)) (∏' (i : ℕ), m (s i))
s₁ s₂ : α
⊢ m s₁ * m s₂ = ∏' (b : Bool), m (bif b then s₁ else s₂)

tactic: simp only [iSup_bool_eq, cond]
state_before: case h.e'_1.h.e'_1
M : Type u_1
inst✝⁵ : CommMonoid M
inst✝⁴ : TopologicalSpace M
m✝ m' : M
G : Type u_2
inst✝³ : CommGroup G
g g' : G
inst✝² : T2Space M
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : Countable β
inst✝ : CompleteLattice α
m : α → M
m0 : m ⊥ = 1
R : M → M → Prop
m_iSup : ∀ (s : ℕ → α), R (m (⨆ i, s i)) (∏' (i : ℕ), m (s i))
s₁ s₂ : α
⊢ s₁ ⊔ s₂ = ⨆ b, bif b then s₁ else s₂
state_after: no goals

tactic: rw [tprod_fintype, Fintype.prod_bool, cond, cond]
state_before: case h.e'_2
M : Type u_1
inst✝⁵ : CommMonoid M
inst✝⁴ : TopologicalSpace M
m✝ m' : M
G : Type u_2
inst✝³ : CommGroup G
g g' : G
inst✝² : T2Space M
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : Countable β
inst✝ : CompleteLattice α
m : α → M
m0 : m ⊥ = 1
R : M → M → Prop
m_iSup : ∀ (s : ℕ → α), R (m (⨆ i, s i)) (∏' (i : ℕ), m (s i))
s₁ s₂ : α
⊢ m s₁ * m s₂ = ∏' (b : Bool), m (bif b then s₁ else s₂)
state_after: no goals
Theorem: Polynomial.derivative_C_mul_X_sq
File: Mathlib/Algebra/Polynomial/Derivative.lean

tactic: rw [derivative_C_mul_X_pow, Nat.cast_two, pow_one]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a✝ b : R
n : ℕ
inst✝ : Semiring R
a : R
⊢ derivative (C a * X ^ 2) = C (a * 2) * X
state_after: no goals
Theorem: ZMod.χ₄_nat_three_mod_four
File: Mathlib/NumberTheory/LegendreSymbol/ZModChar.lean

tactic: rw [χ₄_nat_mod_four, hn]
state_before: n : ℕ
hn : n % 4 = 3
⊢ χ₄ ↑n = -1
state_after: n : ℕ
hn : n % 4 = 3
⊢ χ₄ ↑3 = -1

tactic: rfl
state_before: n : ℕ
hn : n % 4 = 3
⊢ χ₄ ↑3 = -1
state_after: no goals
Theorem: update_le_self_iff
File: Mathlib/Order/Basic.lean

tactic: simp [update_le_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Preorder (π i)
x y : (i : ι) → π i
i : ι
a b : π i
⊢ update x i a ≤ x ↔ a ≤ x i
state_after: no goals
Theorem: LieAlgebra.killingForm_of_equiv_apply
File: Mathlib/Algebra/Lie/Killing.lean

tactic: simp_rw [killingForm_apply_apply, ← LieAlgebra.conj_ad_apply, ← LinearEquiv.conj_comp,
  LinearMap.trace_conj']
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
L' : Type u_5
inst✝¹ : LieRing L'
inst✝ : LieAlgebra R L'
e : L ≃ₗ⁅R⁆ L'
x y : L
⊢ ((killingForm R L') (e x)) (e y) = ((killingForm R L) x) y
state_after: no goals
Theorem: isClopen_iff_frontier_eq_empty
File: Mathlib/Topology/Clopen.lean

tactic: rw [IsClopen, ← closure_eq_iff_isClosed, ← interior_eq_iff_isOpen, frontier, diff_eq_empty]
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
⊢ IsClopen s ↔ frontier s = ∅
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
⊢ closure s = s ∧ interior s = s ↔ closure s ⊆ interior s

tactic: refine ⟨fun h => (h.1.trans h.2.symm).subset, fun h => ?_⟩
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
⊢ closure s = s ∧ interior s = s ↔ closure s ⊆ interior s
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
h : closure s ⊆ interior s
⊢ closure s = s ∧ interior s = s

tactic: exact ⟨(h.trans interior_subset).antisymm subset_closure,
  interior_subset.antisymm (subset_closure.trans h)⟩
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
h : closure s ⊆ interior s
⊢ closure s = s ∧ interior s = s
state_after: no goals
Theorem: List.getElem_permutations'Aux
File: Mathlib/Data/List/Perm.lean

tactic: induction' s with y s IH generalizing n
state_before: α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a : α
s : List α
x : α
n : ℕ
hn : n < (permutations'Aux x s).length
⊢ (permutations'Aux x s)[n] = insertNth n x s
state_after: case nil
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
n : ℕ
hn : n < (permutations'Aux x []).length
⊢ (permutations'Aux x [])[n] = insertNth n x []

case cons
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x y : α
s : List α
IH : ∀ (n : ℕ) (hn : n < (permutations'Aux x s).length), (permutations'Aux x s)[n] = insertNth n x s
n : ℕ
hn : n < (permutations'Aux x (y :: s)).length
⊢ (permutations'Aux x (y :: s))[n] = insertNth n x (y :: s)

tactic: simp only [length, Nat.zero_add, Nat.lt_one_iff] at hn
state_before: case nil
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
n : ℕ
hn : n < (permutations'Aux x []).length
⊢ (permutations'Aux x [])[n] = insertNth n x []
state_after: case nil
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
n : ℕ
hn✝ : n < (permutations'Aux x []).length
hn : n = 0
⊢ (permutations'Aux x [])[n] = insertNth n x []

tactic: simp [hn]
state_before: case nil
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
n : ℕ
hn✝ : n < (permutations'Aux x []).length
hn : n = 0
⊢ (permutations'Aux x [])[n] = insertNth n x []
state_after: no goals

tactic: cases n
state_before: case cons
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x y : α
s : List α
IH : ∀ (n : ℕ) (hn : n < (permutations'Aux x s).length), (permutations'Aux x s)[n] = insertNth n x s
n : ℕ
hn : n < (permutations'Aux x (y :: s)).length
⊢ (permutations'Aux x (y :: s))[n] = insertNth n x (y :: s)
state_after: case cons.zero
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x y : α
s : List α
IH : ∀ (n : ℕ) (hn : n < (permutations'Aux x s).length), (permutations'Aux x s)[n] = insertNth n x s
hn : 0 < (permutations'Aux x (y :: s)).length
⊢ (permutations'Aux x (y :: s))[0] = insertNth 0 x (y :: s)

case cons.succ
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x y : α
s : List α
IH : ∀ (n : ℕ) (hn : n < (permutations'Aux x s).length), (permutations'Aux x s)[n] = insertNth n x s
n✝ : ℕ
hn : n✝ + 1 < (permutations'Aux x (y :: s)).length
⊢ (permutations'Aux x (y :: s))[n✝ + 1] = insertNth (n✝ + 1) x (y :: s)

tactic: simp [get]
state_before: case cons.zero
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x y : α
s : List α
IH : ∀ (n : ℕ) (hn : n < (permutations'Aux x s).length), (permutations'Aux x s)[n] = insertNth n x s
hn : 0 < (permutations'Aux x (y :: s)).length
⊢ (permutations'Aux x (y :: s))[0] = insertNth 0 x (y :: s)
state_after: no goals

tactic: simpa [get] using IH _ _
state_before: case cons.succ
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x y : α
s : List α
IH : ∀ (n : ℕ) (hn : n < (permutations'Aux x s).length), (permutations'Aux x s)[n] = insertNth n x s
n✝ : ℕ
hn : n✝ + 1 < (permutations'Aux x (y :: s)).length
⊢ (permutations'Aux x (y :: s))[n✝ + 1] = insertNth (n✝ + 1) x (y :: s)
state_after: no goals
Theorem: Set.eqOn_piecewise
File: Mathlib/Data/Set/Function.lean

tactic: simp only [EqOn, ← forall_and]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
δ : α → Sort u_6
s : Set α
f✝ g✝ : (i : α) → δ i
inst✝ : (j : α) → Decidable (j ∈ s)
f f' g : α → β
t : Set α
⊢ EqOn (s.piecewise f f') g t ↔ EqOn f g (t ∩ s) ∧ EqOn f' g (t ∩ sᶜ)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
δ : α → Sort u_6
s : Set α
f✝ g✝ : (i : α) → δ i
inst✝ : (j : α) → Decidable (j ∈ s)
f f' g : α → β
t : Set α
⊢ (∀ ⦃x : α⦄, x ∈ t → s.piecewise f f' x = g x) ↔ ∀ (x : α), (x ∈ t ∩ s → f x = g x) ∧ (x ∈ t ∩ sᶜ → f' x = g x)

tactic: refine forall_congr' fun a => ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
δ : α → Sort u_6
s : Set α
f✝ g✝ : (i : α) → δ i
inst✝ : (j : α) → Decidable (j ∈ s)
f f' g : α → β
t : Set α
⊢ (∀ ⦃x : α⦄, x ∈ t → s.piecewise f f' x = g x) ↔ ∀ (x : α), (x ∈ t ∩ s → f x = g x) ∧ (x ∈ t ∩ sᶜ → f' x = g x)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
δ : α → Sort u_6
s : Set α
f✝ g✝ : (i : α) → δ i
inst✝ : (j : α) → Decidable (j ∈ s)
f f' g : α → β
t : Set α
a : α
⊢ a ∈ t → s.piecewise f f' a = g a ↔ (a ∈ t ∩ s → f a = g a) ∧ (a ∈ t ∩ sᶜ → f' a = g a)

tactic: by_cases a ∈ s <;> simp [*]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
δ : α → Sort u_6
s : Set α
f✝ g✝ : (i : α) → δ i
inst✝ : (j : α) → Decidable (j ∈ s)
f f' g : α → β
t : Set α
a : α
⊢ a ∈ t → s.piecewise f f' a = g a ↔ (a ∈ t ∩ s → f a = g a) ∧ (a ∈ t ∩ sᶜ → f' a = g a)
state_after: no goals
Theorem: QuadraticForm.polarBilin_injective
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: simpa using DFunLike.congr_fun (congr_arg toQuadraticForm h₁₂) x
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
h : IsUnit 2
Q₁ Q₂ : QuadraticForm R M
h₁₂ : Q₁.polarBilin = Q₂.polarBilin
x : M
⊢ 2 * Q₁ x = 2 * Q₂ x
state_after: no goals
Theorem: EMetric.continuous_infEdist_hausdorffEdist
File: Mathlib/Topology/MetricSpace/Closeds.lean

tactic: refine continuous_of_le_add_edist 2 (by simp) ?_
state_before: α : Type u
inst✝ : EMetricSpace α
s : Set α
⊢ Continuous fun p => infEdist p.1 ↑p.2
state_after: α : Type u
inst✝ : EMetricSpace α
s : Set α
⊢ ∀ (x y : α × Closeds α), infEdist x.1 ↑x.2 ≤ infEdist y.1 ↑y.2 + 2 * edist x y

tactic: rintro ⟨x, s⟩ ⟨y, t⟩
state_before: α : Type u
inst✝ : EMetricSpace α
s : Set α
⊢ ∀ (x y : α × Closeds α), infEdist x.1 ↑x.2 ≤ infEdist y.1 ↑y.2 + 2 * edist x y
state_after: case mk.mk
α : Type u
inst✝ : EMetricSpace α
s✝ : Set α
x : α
s : Closeds α
y : α
t : Closeds α
⊢ infEdist (x, s).1 ↑(x, s).2 ≤ infEdist (y, t).1 ↑(y, t).2 + 2 * edist (x, s) (y, t)

tactic: calc
  infEdist x s ≤ infEdist x t + hausdorffEdist (t : Set α) s :=
    infEdist_le_infEdist_add_hausdorffEdist
  _ ≤ infEdist y t + edist x y + hausdorffEdist (t : Set α) s :=
    (add_le_add_right infEdist_le_infEdist_add_edist _)
  _ = infEdist y t + (edist x y + hausdorffEdist (s : Set α) t) := by
    rw [add_assoc, hausdorffEdist_comm]
  _ ≤ infEdist y t + (edist (x, s) (y, t) + edist (x, s) (y, t)) :=
    (add_le_add_left (add_le_add (le_max_left _ _) (le_max_right _ _)) _)
  _ = infEdist y t + 2 * edist (x, s) (y, t) := by rw [← mul_two, mul_comm]
state_before: case mk.mk
α : Type u
inst✝ : EMetricSpace α
s✝ : Set α
x : α
s : Closeds α
y : α
t : Closeds α
⊢ infEdist (x, s).1 ↑(x, s).2 ≤ infEdist (y, t).1 ↑(y, t).2 + 2 * edist (x, s) (y, t)
state_after: no goals

tactic: simp
state_before: α : Type u
inst✝ : EMetricSpace α
s : Set α
⊢ 2 ≠ ⊤
state_after: no goals

tactic: rw [add_assoc, hausdorffEdist_comm]
state_before: α : Type u
inst✝ : EMetricSpace α
s✝ : Set α
x : α
s : Closeds α
y : α
t : Closeds α
⊢ infEdist y ↑t + edist x y + hausdorffEdist ↑t ↑s = infEdist y ↑t + (edist x y + hausdorffEdist ↑s ↑t)
state_after: no goals

tactic: rw [← mul_two, mul_comm]
state_before: α : Type u
inst✝ : EMetricSpace α
s✝ : Set α
x : α
s : Closeds α
y : α
t : Closeds α
⊢ infEdist y ↑t + (edist (x, s) (y, t) + edist (x, s) (y, t)) = infEdist y ↑t + 2 * edist (x, s) (y, t)
state_after: no goals
Theorem: List.forall_zipWith
File: Mathlib/Data/List/Zip.lean

tactic: simp
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → β → γ
p : γ → Prop
x✝ : [].length = [].length
⊢ Forall p (zipWith f [] []) ↔ Forall₂ (fun x y => p (f x y)) [] []
state_after: no goals

tactic: simp only [length_cons, succ_inj'] at h
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → β → γ
p : γ → Prop
a : α
l₁ : List α
b : β
l₂ : List β
h : (a :: l₁).length = (b :: l₂).length
⊢ Forall p (zipWith f (a :: l₁) (b :: l₂)) ↔ Forall₂ (fun x y => p (f x y)) (a :: l₁) (b :: l₂)
state_after: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → β → γ
p : γ → Prop
a : α
l₁ : List α
b : β
l₂ : List β
h : l₁.length = l₂.length
⊢ Forall p (zipWith f (a :: l₁) (b :: l₂)) ↔ Forall₂ (fun x y => p (f x y)) (a :: l₁) (b :: l₂)

tactic: simp [forall_zipWith h]
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → β → γ
p : γ → Prop
a : α
l₁ : List α
b : β
l₂ : List β
h : l₁.length = l₂.length
⊢ Forall p (zipWith f (a :: l₁) (b :: l₂)) ↔ Forall₂ (fun x y => p (f x y)) (a :: l₁) (b :: l₂)
state_after: no goals
Theorem: Complex.Gamma_eq_integral
File: Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean

tactic: norm_cast
state_before: s : ℂ
hs : 0 < s.re
⊢ -s.re < ↑0
state_after: s : ℂ
hs : 0 < s.re
⊢ -s.re < 0

tactic: linarith
state_before: s : ℂ
hs : 0 < s.re
⊢ -s.re < 0
state_after: no goals
Theorem: AlgebraicGeometry.Scheme.Hom.appLE_congr
File: Mathlib/AlgebraicGeometry/Scheme.lean

tactic: subst e₁
state_before: X Y : Scheme
f : X.Hom Y
U U' : Opens ↑↑Y.toPresheafedSpace
V V' : Opens ↑↑X.toPresheafedSpace
e : V ≤ f ⁻¹ᵁ U
e₁ : U = U'
e₂ : V = V'
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
⊢ P (f.appLE U V e) ↔ P (f.appLE U' V' ⋯)
state_after: X Y : Scheme
f : X.Hom Y
U : Opens ↑↑Y.toPresheafedSpace
V V' : Opens ↑↑X.toPresheafedSpace
e : V ≤ f ⁻¹ᵁ U
e₂ : V = V'
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
⊢ P (f.appLE U V e) ↔ P (f.appLE U V' ⋯)

tactic: subst e₂
state_before: X Y : Scheme
f : X.Hom Y
U : Opens ↑↑Y.toPresheafedSpace
V V' : Opens ↑↑X.toPresheafedSpace
e : V ≤ f ⁻¹ᵁ U
e₂ : V = V'
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
⊢ P (f.appLE U V e) ↔ P (f.appLE U V' ⋯)
state_after: X Y : Scheme
f : X.Hom Y
U : Opens ↑↑Y.toPresheafedSpace
V : Opens ↑↑X.toPresheafedSpace
e : V ≤ f ⁻¹ᵁ U
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
⊢ P (f.appLE U V e) ↔ P (f.appLE U V ⋯)

tactic: rfl
state_before: X Y : Scheme
f : X.Hom Y
U : Opens ↑↑Y.toPresheafedSpace
V : Opens ↑↑X.toPresheafedSpace
e : V ≤ f ⁻¹ᵁ U
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
⊢ P (f.appLE U V e) ↔ P (f.appLE U V ⋯)
state_after: no goals
Theorem: Int.tendsto_zmultiplesHom_cofinite
File: Mathlib/Topology/Instances/Real.lean

tactic: apply (zmultiplesHom ℝ a).tendsto_coe_cofinite_of_discrete <| smul_left_injective ℤ ha
state_before: α : Type u
β : Type v
γ : Type w
a : ℝ
ha : a ≠ 0
⊢ Tendsto (⇑((zmultiplesHom ℝ) a)) Filter.cofinite (cocompact ℝ)
state_after: α : Type u
β : Type v
γ : Type w
a : ℝ
ha : a ≠ 0
⊢ DiscreteTopology ↥((zmultiplesHom ℝ) a).range

tactic: rw [AddSubgroup.range_zmultiplesHom]
state_before: α : Type u
β : Type v
γ : Type w
a : ℝ
ha : a ≠ 0
⊢ DiscreteTopology ↥((zmultiplesHom ℝ) a).range
state_after: α : Type u
β : Type v
γ : Type w
a : ℝ
ha : a ≠ 0
⊢ DiscreteTopology ↥(AddSubgroup.zmultiples a)

tactic: infer_instance
state_before: α : Type u
β : Type v
γ : Type w
a : ℝ
ha : a ≠ 0
⊢ DiscreteTopology ↥(AddSubgroup.zmultiples a)
state_after: no goals
Theorem: LinearMap.IsProj.trace
File: Mathlib/LinearAlgebra/Trace.lean

tactic: rw [h.eq_conj_prodMap, trace_conj', trace_prodMap', trace_id, map_zero, add_zero]
state_before: R : Type u_1
inst✝¹⁶ : CommRing R
M : Type u_2
inst✝¹⁵ : AddCommGroup M
inst✝¹⁴ : Module R M
N : Type u_3
P : Type u_4
inst✝¹³ : AddCommGroup N
inst✝¹² : Module R N
inst✝¹¹ : AddCommGroup P
inst✝¹⁰ : Module R P
ι : Type u_5
inst✝⁹ : Module.Free R M
inst✝⁸ : Module.Finite R M
inst✝⁷ : Module.Free R N
inst✝⁶ : Module.Finite R N
inst✝⁵ : Module.Free R P
inst✝⁴ : Module.Finite R P
p : Submodule R M
f : M →ₗ[R] M
h : IsProj p f
inst✝³ : Module.Free R ↥p
inst✝² : Module.Finite R ↥p
inst✝¹ : Module.Free R ↥(ker f)
inst✝ : Module.Finite R ↥(ker f)
⊢ (LinearMap.trace R M) f = ↑(finrank R ↥p)
state_after: no goals
Theorem: AntilipschitzWith.injective
File: Mathlib/Topology/MetricSpace/Antilipschitz.lean

tactic: simpa only [h, edist_self, mul_zero, edist_le_zero] using hf x y
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝⁴ : PseudoEMetricSpace α✝
inst✝³ : PseudoEMetricSpace β✝
inst✝² : PseudoEMetricSpace γ
K✝ : ℝ≥0
f✝ : α✝ → β✝
α : Type u_4
β : Type u_5
inst✝¹ : EMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
f : α → β
hf : AntilipschitzWith K f
x y : α
h : f x = f y
⊢ x = y
state_after: no goals
Theorem: Finset.Ioi_disjUnion_Iio
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: ext
state_before: ι : Type u_1
α : Type u_2
inst✝³ : LinearOrder α
inst✝² : Fintype α
inst✝¹ : LocallyFiniteOrderTop α
inst✝ : LocallyFiniteOrderBot α
a : α
⊢ (Ioi a).disjUnion (Iio a) ⋯ = {a}ᶜ
state_after: case a
ι : Type u_1
α : Type u_2
inst✝³ : LinearOrder α
inst✝² : Fintype α
inst✝¹ : LocallyFiniteOrderTop α
inst✝ : LocallyFiniteOrderBot α
a a✝ : α
⊢ a✝ ∈ (Ioi a).disjUnion (Iio a) ⋯ ↔ a✝ ∈ {a}ᶜ

tactic: simp [eq_comm]
state_before: case a
ι : Type u_1
α : Type u_2
inst✝³ : LinearOrder α
inst✝² : Fintype α
inst✝¹ : LocallyFiniteOrderTop α
inst✝ : LocallyFiniteOrderBot α
a a✝ : α
⊢ a✝ ∈ (Ioi a).disjUnion (Iio a) ⋯ ↔ a✝ ∈ {a}ᶜ
state_after: no goals
Theorem: ZNum.div_to_int
File: Mathlib/Data/Num/Lemmas.lean

tactic: simp [Int.ediv_zero]
state_before: ⊢ ↑(0 / 0) = ↑0 / ↑0
state_after: no goals

tactic: rw [← Num.to_nat_to_int]
state_before: n d : PosNum
⊢ ↑(n.div' d) = ↑(pos n) / ↑(pos d)
state_after: n d : PosNum
⊢ ↑↑(n.div' d) = ↑(pos n) / ↑(pos d)

tactic: simp
state_before: n d : PosNum
⊢ ↑↑(n.div' d) = ↑(pos n) / ↑(pos d)
state_after: no goals

tactic: rw [← Num.to_nat_to_int]
state_before: n d : PosNum
⊢ -↑(n.div' d) = ↑(pos n) / ↑(neg d)
state_after: n d : PosNum
⊢ -↑↑(n.div' d) = ↑(pos n) / ↑(neg d)

tactic: simp
state_before: n d : PosNum
⊢ -↑↑(n.div' d) = ↑(pos n) / ↑(neg d)
state_after: no goals

tactic: rw [n.to_int_eq_succ_pred, d.to_int_eq_succ_pred, ← PosNum.to_nat_to_int, Num.succ'_to_nat,
  Num.div_to_nat]
state_before: n d : PosNum
⊢ -↑(n.pred' / Num.pos d).succ' = -↑n / ↑d
state_after: n d : PosNum
⊢ -↑(↑n.pred' / ↑(Num.pos d) + 1) = -(↑↑n.pred' + 1) / (↑↑d.pred' + 1)

tactic: change -[n.pred' / ↑d+1] = -[n.pred' / (d.pred' + 1)+1]
state_before: n d : PosNum
⊢ -↑(↑n.pred' / ↑(Num.pos d) + 1) = -(↑↑n.pred' + 1) / (↑↑d.pred' + 1)
state_after: n d : PosNum
⊢ -[↑n.pred' / ↑d+1] = -[↑n.pred' / (↑d.pred' + 1)+1]

tactic: rw [d.to_nat_eq_succ_pred]
state_before: n d : PosNum
⊢ -[↑n.pred' / ↑d+1] = -[↑n.pred' / (↑d.pred' + 1)+1]
state_after: no goals

tactic: rw [n.to_int_eq_succ_pred, d.to_int_eq_succ_pred, ← PosNum.to_nat_to_int, Num.succ'_to_nat,
  Num.div_to_nat]
state_before: n d : PosNum
⊢ ↑(n.pred' / Num.pos d).succ' = -↑n / -↑d
state_after: n d : PosNum
⊢ ↑(↑n.pred' / ↑(Num.pos d) + 1) = -(↑↑n.pred' + 1) / -(↑↑d.pred' + 1)

tactic: change (Nat.succ (_ / d) : ℤ) = Nat.succ (n.pred' / (d.pred' + 1))
state_before: n d : PosNum
⊢ ↑(↑n.pred' / ↑(Num.pos d) + 1) = -(↑↑n.pred' + 1) / -(↑↑d.pred' + 1)
state_after: n d : PosNum
⊢ ↑(↑n.pred' / ↑d).succ = ↑(↑n.pred' / (↑d.pred' + 1)).succ

tactic: rw [d.to_nat_eq_succ_pred]
state_before: n d : PosNum
⊢ ↑(↑n.pred' / ↑d).succ = ↑(↑n.pred' / (↑d.pred' + 1)).succ
state_after: no goals
Theorem: IsAdjoinRoot.liftHom_root
File: Mathlib/RingTheory/IsAdjoinRoot.lean

tactic: rw [← lift_algebraMap_apply, lift_root]
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
⊢ (liftHom x hx' h) h.root = x
state_after: no goals
Theorem: Polynomial.derivative_eval₂_C
File: Mathlib/Algebra/Polynomial/Derivative.lean

tactic: rw [eval₂_C, derivative_C, eval₂_zero, zero_mul]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : CommSemiring R
p q : R[X]
r : R
⊢ derivative (eval₂ C q (C r)) = eval₂ C q (derivative (C r)) * derivative q
state_after: no goals

tactic: rw [eval₂_add, derivative_add, ih₁, ih₂, derivative_add, eval₂_add, add_mul]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : CommSemiring R
p q p₁ p₂ : R[X]
ih₁ : derivative (eval₂ C q p₁) = eval₂ C q (derivative p₁) * derivative q
ih₂ : derivative (eval₂ C q p₂) = eval₂ C q (derivative p₂) * derivative q
⊢ derivative (eval₂ C q (p₁ + p₂)) = eval₂ C q (derivative (p₁ + p₂)) * derivative q
state_after: no goals

tactic: rw [pow_succ, ← mul_assoc, eval₂_mul, eval₂_X, derivative_mul, ih, @derivative_mul _ _ _ X,
  derivative_X, mul_one, eval₂_add, @eval₂_mul _ _ _ _ X, eval₂_X, add_mul, mul_right_comm]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝ : CommSemiring R
p q : R[X]
n : ℕ
r : R
ih : derivative (eval₂ C q (C r * X ^ n)) = eval₂ C q (derivative (C r * X ^ n)) * derivative q
⊢ derivative (eval₂ C q (C r * X ^ (n + 1))) = eval₂ C q (derivative (C r * X ^ (n + 1))) * derivative q
state_after: no goals
Theorem: Matrix.matPolyEquiv_eval_eq_map
File: Mathlib/LinearAlgebra/Matrix/Charpoly/Coeff.lean

tactic: simpa only [AlgEquiv.symm_apply_apply] using (matPolyEquiv_symm_map_eval (matPolyEquiv M) r).symm
state_before: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
M : Matrix n n R[X]
r : R
⊢ eval ((scalar n) r) (matPolyEquiv M) = M.map (eval r)
state_after: no goals