tasksource/leandojo huggingface dataset:
Theorem: isTopologicalBasis_clopen
File: Mathlib/Topology/Separation.lean

tactic: apply isTopologicalBasis_of_open_of_nhds fun U (hU : IsClopen U) => hU.1
state_before: α : Type u
β : Type v
inst✝³ : TopologicalSpace α
inst✝² : T2Space α
inst✝¹ : CompactSpace α
inst✝ : TotallyDisconnectedSpace α
⊢ IsTopologicalBasis {s | IsClopen s}

tactic: intro x U hxU U_op
state_before: α : Type u
β : Type v
inst✝³ : TopologicalSpace α
inst✝² : T2Space α
inst✝¹ : CompactSpace α
inst✝ : TotallyDisconnectedSpace α
⊢ ∀ (a : α) (u : Set α), a ∈ u → IsOpen u → ∃ v, (v ∈ fun U => IsOpen U ∧ IsClosed U) ∧ a ∈ v ∧ v ⊆ u

tactic: have : U ∈ 𝓝 x := IsOpen.mem_nhds U_op hxU
state_before: α : Type u
β : Type v
inst✝³ : TopologicalSpace α
inst✝² : T2Space α
inst✝¹ : CompactSpace α
inst✝ : TotallyDisconnectedSpace α
x : α
U : Set α
hxU : x ∈ U
U_op : IsOpen U
⊢ ∃ v, (v ∈ fun U => IsOpen U ∧ IsClosed U) ∧ x ∈ v ∧ v ⊆ U

tactic: rcases (nhds_basis_clopen x).mem_iff.mp this with ⟨V, ⟨hxV, hV⟩, hVU : V ⊆ U⟩
state_before: α : Type u
β : Type v
inst✝³ : TopologicalSpace α
inst✝² : T2Space α
inst✝¹ : CompactSpace α
inst✝ : TotallyDisconnectedSpace α
x : α
U : Set α
hxU : x ∈ U
U_op : IsOpen U
this : U ∈ 𝓝 x
⊢ ∃ v, (v ∈ fun U => IsOpen U ∧ IsClosed U) ∧ x ∈ v ∧ v ⊆ U

tactic: use V
state_before: case intro.intro.intro
α : Type u
β : Type v
inst✝³ : TopologicalSpace α
inst✝² : T2Space α
inst✝¹ : CompactSpace α
inst✝ : TotallyDisconnectedSpace α
x : α
U : Set α
hxU : x ∈ U
U_op : IsOpen U
this : U ∈ 𝓝 x
V : Set α
hVU : V ⊆ U
hxV : x ∈ V
hV : IsClopen V
⊢ ∃ v, (v ∈ fun U => IsOpen U ∧ IsClosed U) ∧ x ∈ v ∧ v ⊆ U

tactic: tauto
state_before: case intro.intro.intro
α : Type u
β : Type v
inst✝³ : TopologicalSpace α
inst✝² : T2Space α
inst✝¹ : CompactSpace α
inst✝ : TotallyDisconnectedSpace α
x : α
U : Set α
hxU : x ∈ U
U_op : IsOpen U
this : U ∈ 𝓝 x
V : Set α
hVU : V ⊆ U
hxV : x ∈ V
hV : IsClopen V
⊢ (V ∈ fun U => IsOpen U ∧ IsClosed U) ∧ x ∈ V ∧ V ⊆ U
Theorem: mem_skewAdjointMatricesLieSubalgebra_unit_smul
File: Mathlib/Algebra/Lie/SkewAdjoint.lean

tactic: change A ∈ skewAdjointMatricesSubmodule (u • J) ↔ A ∈ skewAdjointMatricesSubmodule J
state_before: R : Type u
n : Type w
inst✝² : CommRing R
inst✝¹ : DecidableEq n
inst✝ : Fintype n
J✝ : Matrix n n R
u : Rˣ
J A : Matrix n n R
⊢ A ∈ skewAdjointMatricesLieSubalgebra (u • J) ↔ A ∈ skewAdjointMatricesLieSubalgebra J

tactic: simp only [mem_skewAdjointMatricesSubmodule, Matrix.IsSkewAdjoint, Matrix.IsAdjointPair]
state_before: R : Type u
n : Type w
inst✝² : CommRing R
inst✝¹ : DecidableEq n
inst✝ : Fintype n
J✝ : Matrix n n R
u : Rˣ
J A : Matrix n n R
⊢ A ∈ skewAdjointMatricesSubmodule (u • J) ↔ A ∈ skewAdjointMatricesSubmodule J

tactic: constructor <;> intro h
state_before: R : Type u
n : Type w
inst✝² : CommRing R
inst✝¹ : DecidableEq n
inst✝ : Fintype n
J✝ : Matrix n n R
u : Rˣ
J A : Matrix n n R
⊢ Aᵀ ⬝ (u • J) = (u • J) ⬝ (-A) ↔ Aᵀ ⬝ J = J ⬝ (-A)

tactic: simpa using congr_arg (fun B => u⁻¹ • B) h
state_before: case mp
R : Type u
n : Type w
inst✝² : CommRing R
inst✝¹ : DecidableEq n
inst✝ : Fintype n
J✝ : Matrix n n R
u : Rˣ
J A : Matrix n n R
h : Aᵀ ⬝ (u • J) = (u • J) ⬝ (-A)
⊢ Aᵀ ⬝ J = J ⬝ (-A)

tactic: simp [h]
state_before: case mpr
R : Type u
n : Type w
inst✝² : CommRing R
inst✝¹ : DecidableEq n
inst✝ : Fintype n
J✝ : Matrix n n R
u : Rˣ
J A : Matrix n n R
h : Aᵀ ⬝ J = J ⬝ (-A)
⊢ Aᵀ ⬝ (u • J) = (u • J) ⬝ (-A)
Theorem: Metric.mem_sphere'
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: rw [dist_comm, mem_sphere]
state_before: α : Type u
β : Type v
X : Type ?u.32472
ι : Type ?u.32475
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
⊢ y ∈ sphere x ε ↔ dist x y = ε
Theorem: Pretrivialization.coe_linearMapAt_of_mem
File: Mathlib/Topology/VectorBundle/Basic.lean

tactic: simp_rw [coe_linearMapAt, if_pos hb]
state_before: R : Type u_4
B : Type u_1
F : Type u_2
E : B → Type u_3
inst✝⁷ : Semiring R
inst✝⁶ : TopologicalSpace F
inst✝⁵ : TopologicalSpace B
e✝ : Pretrivialization F TotalSpace.proj
x : TotalSpace E
b✝ : B
y : E b✝
inst✝⁴ : AddCommMonoid F
inst✝³ : Module R F
inst✝² : (x : B) → AddCommMonoid (E x)
inst✝¹ : (x : B) → Module R (E x)
e : Pretrivialization F TotalSpace.proj
inst✝ : Pretrivialization.IsLinear R e
b : B
hb : b ∈ e.baseSet
⊢ ↑(Pretrivialization.linearMapAt R e b) = fun y => (↑e (totalSpaceMk b y)).snd
Theorem: Con.sSup_eq_conGen
File: Mathlib/GroupTheory/Congruence.lean

tactic: rw [conGen_eq]
state_before: M : Type u_1
N : Type ?u.30054
P : Type ?u.30057
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
c : Con M
S : Set (Con M)
⊢ sSup S = conGen fun x y => ∃ c, c ∈ S ∧ ↑c x y

tactic: apply congr_arg sInf
state_before: M : Type u_1
N : Type ?u.30054
P : Type ?u.30057
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
c : Con M
S : Set (Con M)
⊢ sSup S = sInf {s | ∀ (x y : M), (∃ c, c ∈ S ∧ ↑c x y) → ↑s x y}

tactic: ext
state_before: M : Type u_1
N : Type ?u.30054
P : Type ?u.30057
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
c : Con M
S : Set (Con M)
⊢ upperBounds S = {s | ∀ (x y : M), (∃ c, c ∈ S ∧ ↑c x y) → ↑s x y}

tactic: exact ⟨fun h _ _ ⟨r, hr⟩ => h hr.1 hr.2, fun h r hS _ _ hr => h _ _ ⟨r, hS, hr⟩⟩
state_before: case h
M : Type u_1
N : Type ?u.30054
P : Type ?u.30057
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
c : Con M
S : Set (Con M)
x✝ : Con M
⊢ x✝ ∈ upperBounds S ↔ x✝ ∈ {s | ∀ (x y : M), (∃ c, c ∈ S ∧ ↑c x y) → ↑s x y}
Theorem: Multiset.normalize_gcd
File: Mathlib/Algebra/GCDMonoid/Multiset.lean

tactic: simp
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s : Multiset α
⊢ ↑normalize (gcd 0) = gcd 0

tactic: simp
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s✝ : Multiset α
a : α
s : Multiset α
x✝ : ↑normalize (gcd s) = gcd s
⊢ ↑normalize (gcd (a ::ₘ s)) = gcd (a ::ₘ s)
Theorem: Multiset.Icc_self
File: Mathlib/Data/Multiset/LocallyFinite.lean

tactic: rw [Icc, Finset.Icc_self, Finset.singleton_val]
state_before: α : Type u_1
inst✝¹ : PartialOrder α
inst✝ : LocallyFiniteOrder α
a✝ b a : α
⊢ Icc a a = {a}
Theorem: top_le_span_range_iff_forall_exists_fun
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: simp_rw [← mem_span_range_iff_exists_fun]
state_before: α : Type u_3
M : Type u_1
R : Type u_2
inst✝⁶ : Fintype α
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
S : Type ?u.748757
inst✝² : Semiring S
inst✝¹ : Module S M
inst✝ : SMulCommClass R S M
v : α → M
x : M
⊢ ⊤ ≤ span R (Set.range v) ↔ ∀ (x : M), ∃ c, ∑ i : α, c i • v i = x

tactic: exact ⟨fun h x => h trivial, fun h x _ => h x⟩
state_before: α : Type u_3
M : Type u_1
R : Type u_2
inst✝⁶ : Fintype α
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
S : Type ?u.748757
inst✝² : Semiring S
inst✝¹ : Module S M
inst✝ : SMulCommClass R S M
v : α → M
x : M
⊢ ⊤ ≤ span R (Set.range v) ↔ ∀ (x : M), x ∈ span R (Set.range fun i => v i)
Theorem: Polynomial.Separable.of_mul_left
File: Mathlib/FieldTheory/Separable.lean

tactic: have := h.of_mul_left_left
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
h : Separable (f * g)
⊢ Separable f

tactic: rw [derivative_mul] at this
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
h : Separable (f * g)
this : IsCoprime f (↑derivative (f * g))
⊢ Separable f

tactic: exact IsCoprime.of_mul_right_left (IsCoprime.of_add_mul_left_right this)
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
f g : R[X]
h : Separable (f * g)
this : IsCoprime f (↑derivative f * g + f * ↑derivative g)
⊢ Separable f
Theorem: Filter.nhds_mono
File: Mathlib/Topology/Filter.lean

tactic: refine' ⟨fun h => _, fun h => monotone_nhds h⟩
state_before: ι : Sort ?u.15181
α : Type u_1
β : Type ?u.15187
X : Type ?u.15190
Y : Type ?u.15193
l₁ l₂ : Filter α
⊢ 𝓝 l₁ ≤ 𝓝 l₂ ↔ l₁ ≤ l₂

tactic: rw [← Iic_subset_Iic, ← sInter_nhds, ← sInter_nhds]
state_before: ι : Sort ?u.15181
α : Type u_1
β : Type ?u.15187
X : Type ?u.15190
Y : Type ?u.15193
l₁ l₂ : Filter α
h : 𝓝 l₁ ≤ 𝓝 l₂
⊢ l₁ ≤ l₂

tactic: exact sInter_subset_sInter h
state_before: ι : Sort ?u.15181
α : Type u_1
β : Type ?u.15187
X : Type ?u.15190
Y : Type ?u.15193
l₁ l₂ : Filter α
h : 𝓝 l₁ ≤ 𝓝 l₂
⊢ ⋂₀ {s | s ∈ 𝓝 l₁} ⊆ ⋂₀ {s | s ∈ 𝓝 l₂}
Theorem: CategoryTheory.finrank_hom_simple_simple_eq_zero_of_not_iso
File: Mathlib/CategoryTheory/Preadditive/Schur.lean

tactic: have p := not_congr (isIso_iff_nonzero f)
state_before: C : Type u_2
inst✝⁶ : Category C
inst✝⁵ : Preadditive C
𝕜 : Type u_3
inst✝⁴ : DivisionRing 𝕜
inst✝³ : HasKernels C
inst✝² : Linear 𝕜 C
X Y : C
inst✝¹ : Simple X
inst✝ : Simple Y
h : (X ≅ Y) → False
f : X ⟶ Y
⊢ f = 0

tactic: simp only [Classical.not_not, Ne.def] at p
state_before: C : Type u_2
inst✝⁶ : Category C
inst✝⁵ : Preadditive C
𝕜 : Type u_3
inst✝⁴ : DivisionRing 𝕜
inst✝³ : HasKernels C
inst✝² : Linear 𝕜 C
X Y : C
inst✝¹ : Simple X
inst✝ : Simple Y
h : (X ≅ Y) → False
f : X ⟶ Y
p : ¬IsIso f ↔ ¬f ≠ 0
⊢ f = 0

tactic: refine' p.mp fun _ => h (asIso f)
state_before: C : Type u_2
inst✝⁶ : Category C
inst✝⁵ : Preadditive C
𝕜 : Type u_3
inst✝⁴ : DivisionRing 𝕜
inst✝³ : HasKernels C
inst✝² : Linear 𝕜 C
X Y : C
inst✝¹ : Simple X
inst✝ : Simple Y
h : (X ≅ Y) → False
f : X ⟶ Y
p : ¬IsIso f ↔ f = 0
⊢ f = 0
Theorem: OrthonormalBasis.toMatrix_orthonormalBasis_mem_unitary
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

tactic: rw [Matrix.mem_unitaryGroup_iff']
state_before: ι : Type u_1
ι' : Type ?u.1459554
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.1459583
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.1459601
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.1459621
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
a b : OrthonormalBasis ι 𝕜 E
⊢ Basis.toMatrix (OrthonormalBasis.toBasis a) ↑b ∈ Matrix.unitaryGroup ι 𝕜

tactic: ext (i j)
state_before: ι : Type u_1
ι' : Type ?u.1459554
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.1459583
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.1459601
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.1459621
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
a b : OrthonormalBasis ι 𝕜 E
⊢ star (Basis.toMatrix (OrthonormalBasis.toBasis a) ↑b) * Basis.toMatrix (OrthonormalBasis.toBasis a) ↑b = 1

tactic: convert a.repr.inner_map_map (b i) (b j)
state_before: case a.h
ι : Type u_1
ι' : Type ?u.1459554
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.1459583
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.1459601
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.1459621
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
a b : OrthonormalBasis ι 𝕜 E
i j : ι
⊢ (star (Basis.toMatrix (OrthonormalBasis.toBasis a) ↑b) * Basis.toMatrix (OrthonormalBasis.toBasis a) ↑b) i j =
    OfNat.ofNat 1 i j

tactic: rw [orthonormal_iff_ite.mp b.orthonormal i j]
state_before: case h.e'_3
ι : Type u_1
ι' : Type ?u.1459554
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.1459583
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.1459601
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.1459621
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
a b : OrthonormalBasis ι 𝕜 E
i j : ι
⊢ OfNat.ofNat 1 i j = inner (↑b i) (↑b j)

tactic: rfl
state_before: case h.e'_3
ι : Type u_1
ι' : Type ?u.1459554
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.1459583
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.1459601
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.1459621
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
a b : OrthonormalBasis ι 𝕜 E
i j : ι
⊢ OfNat.ofNat 1 i j = if i = j then 1 else 0
Theorem: mul_eq_zero_of_ne_zero_imp_eq_zero
File: Mathlib/Algebra/GroupWithZero/Basic.lean

tactic: rw [ha, zero_mul]
state_before: α : Type ?u.682
M₀ : Type u_1
G₀ : Type ?u.688
M₀' : Type ?u.691
G₀' : Type ?u.694
F : Type ?u.697
F' : Type ?u.700
inst✝ : MulZeroClass M₀
a✝ b✝ a b : M₀
h : a ≠ 0 → b = 0
ha : a = 0
⊢ a * b = 0

tactic: rw [h ha, mul_zero]
state_before: α : Type ?u.682
M₀ : Type u_1
G₀ : Type ?u.688
M₀' : Type ?u.691
G₀' : Type ?u.694
F : Type ?u.697
F' : Type ?u.700
inst✝ : MulZeroClass M₀
a✝ b✝ a b : M₀
h : a ≠ 0 → b = 0
ha : ¬a = 0
⊢ a * b = 0
Theorem: Subtype.nontrivial_iff_exists_ne
File: Mathlib/Logic/Nontrivial.lean

tactic: simp only [_root_.nontrivial_iff_exists_ne x, Subtype.exists, Ne.def, Subtype.ext_iff]
state_before: α : Type u_1
β : Type ?u.1252
p : α → Prop
x : Subtype p
⊢ Nontrivial (Subtype p) ↔ ∃ y x_1, y ≠ ↑x
Theorem: Homotopy.nullHomotopicMap'_f_eq_zero
File: Mathlib/Algebra/Homology/Homotopy.lean

tactic: simp only [nullHomotopicMap']
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h✝ k : D ⟶ E
i k₀ : ι
hk₀ : ∀ (l : ι), ¬ComplexShape.Rel c k₀ l
hk₀' : ∀ (l : ι), ¬ComplexShape.Rel c l k₀
h : (i j : ι) → ComplexShape.Rel c j i → (X C i ⟶ X D j)
⊢ Hom.f (nullHomotopicMap' h) k₀ = 0

tactic: apply nullHomotopicMap_f_eq_zero hk₀ hk₀'
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f g : C ⟶ D
h✝ k : D ⟶ E
i k₀ : ι
hk₀ : ∀ (l : ι), ¬ComplexShape.Rel c k₀ l
hk₀' : ∀ (l : ι), ¬ComplexShape.Rel c l k₀
h : (i j : ι) → ComplexShape.Rel c j i → (X C i ⟶ X D j)
⊢ Hom.f (nullHomotopicMap fun i j => dite (ComplexShape.Rel c j i) (h i j) fun x => 0) k₀ = 0
Theorem: Matrix.inv_zpow'
File: Mathlib/LinearAlgebra/Matrix/ZPow.lean

tactic: rw [zpow_neg h, inv_zpow]
state_before: n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
h : IsUnit (det A)
n : ℤ
⊢ A⁻¹ ^ n = A ^ (-n)
Theorem: Rat.den_dvd
File: Mathlib/Data/Rat/Lemmas.lean

tactic: by_cases b0 : b = 0
state_before: a b : ℤ
⊢ ↑(a /. b).den ∣ b

tactic: cases' e : a /. b with n d h c
state_before: case neg
a b : ℤ
b0 : ¬b = 0
⊢ ↑(a /. b).den ∣ b

tactic: rw [num_den', divInt_eq_iff b0 (ne_of_gt (Int.coe_nat_pos.2 (Nat.pos_of_ne_zero h)))] at e
state_before: case neg.mk'
a b : ℤ
b0 : ¬b = 0
n : ℤ
d : ℕ
h : d ≠ 0
c : Nat.coprime (Int.natAbs n) d
e : a /. b = mk' n d
⊢ ↑(mk' n d).den ∣ b

tactic: refine' Int.dvd_natAbs.1 <| Int.coe_nat_dvd.2 <| c.symm.dvd_of_dvd_mul_left _
state_before: case neg.mk'
a b : ℤ
b0 : ¬b = 0
n : ℤ
d : ℕ
h : d ≠ 0
c : Nat.coprime (Int.natAbs n) d
e : a * ↑d = n * b
⊢ ↑(mk' n d).den ∣ b

tactic: rw [← Int.natAbs_mul, ← Int.coe_nat_dvd, Int.dvd_natAbs, ← e]
state_before: case neg.mk'
a b : ℤ
b0 : ¬b = 0
n : ℤ
d : ℕ
h : d ≠ 0
c : Nat.coprime (Int.natAbs n) d
e : a * ↑d = n * b
⊢ d ∣ Int.natAbs n * Int.natAbs b

tactic: simp
state_before: case neg.mk'
a b : ℤ
b0 : ¬b = 0
n : ℤ
d : ℕ
h : d ≠ 0
c : Nat.coprime (Int.natAbs n) d
e : a * ↑d = n * b
⊢ ↑d ∣ a * ↑d

tactic: simp [b0]
state_before: case pos
a b : ℤ
b0 : b = 0
⊢ ↑(a /. b).den ∣ b
Theorem: WithBot.add_bot
File: Mathlib/Algebra/Order/Monoid/WithTop.lean

tactic: cases a <;> rfl
state_before: α : Type u
β : Type v
inst✝ : Add α
a✝ b c d : WithBot α
x y : α
a : WithBot α
⊢ a + ⊥ = ⊥
Theorem: Int.neg_eq_of_add_eq_zero
File: Std/Data/Int/Lemmas.lean

tactic: rw [← Int.add_zero (-a), ← h, ← Int.add_assoc, Int.add_left_neg, Int.zero_add]
state_before: a b : Int
h : a + b = 0
⊢ -a = b
Theorem: Fin.map_valEmbedding_Ioo
File: Mathlib/Data/Fin/Interval.lean

tactic: simp [Ioo_eq_finset_subtype, Finset.fin, Finset.map_map]
state_before: n : ℕ
a b : Fin n
⊢ map valEmbedding (Ioo a b) = Ioo ↑a ↑b
Theorem: Int.cast_sub
File: Mathlib/Data/Int/Cast/Basic.lean

tactic: simp [Int.sub_eq_add_neg, sub_eq_add_neg, Int.cast_neg, Int.cast_add]
state_before: R : Type u
inst✝ : AddGroupWithOne R
m n : ℤ
⊢ ↑(m - n) = ↑m - ↑n
Theorem: LieSubmodule.isNilpotent_iff_exists_lcs_eq_bot
File: Mathlib/Algebra/Lie/Nilpotent.lean

tactic: rw [isNilpotent_iff]
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
k : ℕ
N✝ N : LieSubmodule R L M
⊢ IsNilpotent R L { x // x ∈ ↑N } ↔ ∃ k, LieSubmodule.lcs k N = ⊥

tactic: refine' exists_congr fun k => _
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
k : ℕ
N✝ N : LieSubmodule R L M
⊢ (∃ k, lowerCentralSeries R L { x // x ∈ ↑N } k = ⊥) ↔ ∃ k, LieSubmodule.lcs k N = ⊥

tactic: rw [N.lowerCentralSeries_eq_lcs_comap k, LieSubmodule.comap_incl_eq_bot,
  inf_eq_right.mpr (N.lcs_le_self k)]
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
k✝ : ℕ
N✝ N : LieSubmodule R L M
k : ℕ
⊢ lowerCentralSeries R L { x // x ∈ ↑N } k = ⊥ ↔ LieSubmodule.lcs k N = ⊥
Theorem: linearMap_toMatrix_mul_basis_toMatrix
File: Mathlib/LinearAlgebra/Matrix/Basis.lean

tactic: rw [toLin_toMatrix, toLin_mul b b' c', toLin_toMatrix, b'.toLin_toMatrix, comp_id]
state_before: ι : Type u_1
ι' : Type u_2
κ : Type ?u.369990
κ' : Type u_3
R : Type u_4
M : Type u_5
inst✝¹³ : CommSemiring R
inst✝¹² : AddCommMonoid M
inst✝¹¹ : Module R M
R₂ : Type ?u.370186
M₂ : Type ?u.370189
inst✝¹⁰ : CommRing R₂
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : Module R₂ M₂
e : Basis ι R M
v : ι' → M
i : ι
j : ι'
N : Type u_6
inst✝⁷ : AddCommMonoid N
inst✝⁶ : Module R N
b : Basis ι R M
b' : Basis ι' R M
c : Basis κ R N
c' : Basis κ' R N
f : M →ₗ[R] N
inst✝⁵ : Fintype ι'
inst✝⁴ : Fintype κ
inst✝³ : Fintype κ'
inst✝² : Fintype ι
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq ι'
⊢ ↑(toLin b c') (↑(toMatrix b' c') f ⬝ Basis.toMatrix b' ↑b) = ↑(toLin b c') (↑(toMatrix b c') f)
Theorem: PFun.mem_res
File: Mathlib/Data/PFun.lean

tactic: simp [res, @eq_comm _ b]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.14382
δ : Type ?u.14385
ε : Type ?u.14388
ι : Type ?u.14391
f : α → β
s : Set α
a : α
b : β
⊢ b ∈ res f s a ↔ a ∈ s ∧ f a = b
Theorem: CategoryTheory.NatTrans.congr
File: Mathlib/CategoryTheory/EqToHom.lean

tactic: rw [α.naturality_assoc]
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
F G : C ⥤ D
α : F ⟶ G
X Y : C
h : X = Y
⊢ α.app X = F.map (eqToHom h) ≫ α.app Y ≫ G.map (eqToHom (_ : Y = X))

tactic: simp [eqToHom_map]
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
F G : C ⥤ D
α : F ⟶ G
X Y : C
h : X = Y
⊢ α.app X = α.app X ≫ G.map (eqToHom h) ≫ G.map (eqToHom (_ : Y = X))
Theorem: Set.exists_lower_bound_image
File: Mathlib/Data/Set/Finite.lean

tactic: rcases s.eq_empty_or_nonempty with rfl | hs
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝¹ : Nonempty α
inst✝ : LinearOrder β
s : Set α
f : α → β
h : Set.Finite s
⊢ ∃ a, ∀ (b : α), b ∈ s → f a ≤ f b

tactic: exact ‹Nonempty α›.elim fun a => ⟨a, fun _ => False.elim⟩
state_before: case inl
α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝¹ : Nonempty α
inst✝ : LinearOrder β
f : α → β
h : Set.Finite ∅
⊢ ∃ a, ∀ (b : α), b ∈ ∅ → f a ≤ f b

tactic: rcases Set.exists_min_image s f h hs with ⟨x₀, _, hx₀⟩
state_before: case inr
α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝¹ : Nonempty α
inst✝ : LinearOrder β
s : Set α
f : α → β
h : Set.Finite s
hs : Set.Nonempty s
⊢ ∃ a, ∀ (b : α), b ∈ s → f a ≤ f b

tactic: exact ⟨x₀, fun x hx => hx₀ x hx⟩
state_before: case inr.intro.intro
α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝¹ : Nonempty α
inst✝ : LinearOrder β
s : Set α
f : α → β
h : Set.Finite s
hs : Set.Nonempty s
x₀ : α
left✝ : x₀ ∈ s
hx₀ : ∀ (b : α), b ∈ s → f x₀ ≤ f b
⊢ ∃ a, ∀ (b : α), b ∈ s → f a ≤ f b
Theorem: symmDiff_eq_sup_sdiff_inf
File: Mathlib/Order/SymmDiff.lean

tactic: simp [sup_sdiff, symmDiff]
state_before: ι : Type ?u.22302
α : Type u_1
β : Type ?u.22308
π : ι → Type ?u.22313
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
⊢ a ∆ b = (a ⊔ b) \ (a ⊓ b)
Theorem: CategoryTheory.Abelian.exact_cokernel
File: Mathlib/CategoryTheory/Abelian/Exact.lean

tactic: rw [exact_iff]
state_before: C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
⊢ Exact f (cokernel.π f)

tactic: aesop_cat
state_before: C : Type u₁
inst✝¹ : Category C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
⊢ f ≫ cokernel.π f = 0 ∧ kernel.ι (cokernel.π f) ≫ cokernel.π f = 0
Theorem: Sum.update_inr_apply_inr
File: Mathlib/Data/Sum/Basic.lean

tactic: rw [← update_inr_comp_inr, Function.comp_apply]
state_before: α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type ?u.21604
inst✝¹ : DecidableEq β
inst✝ : DecidableEq (α ⊕ β)
f : α ⊕ β → γ
i j : β
x : γ
⊢ update f (inr i) x (inr j) = update (f ∘ inr) i x j
Theorem: Finset.weightedVSubOfPoint_const_smul
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: simp_rw [weightedVSubOfPoint_apply, smul_sum, Pi.smul_apply, smul_smul, smul_eq_mul]
state_before: k : Type u_2
V : Type u_1
P : Type u_4
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_3
s : Finset ι
ι₂ : Type ?u.134871
s₂ : Finset ι₂
w : ι → k
p : ι → P
b : P
c : k
⊢ ↑(weightedVSubOfPoint s p b) (c • w) = c • ↑(weightedVSubOfPoint s p b) w
Theorem: CategoryTheory.Adjunction.rightAdjointUniq_refl
File: Mathlib/CategoryTheory/Adjunction/Opposites.lean

tactic: delta rightAdjointUniq
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
F : C ⥤ D
G : D ⥤ C
adj1 : F ⊣ G
⊢ (rightAdjointUniq adj1 adj1).hom = 𝟙 G

tactic: simp
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
F : C ⥤ D
G : D ⥤ C
adj1 : F ⊣ G
⊢ (NatIso.removeOp (leftAdjointUniq (opAdjointOpOfAdjoint G F adj1) (opAdjointOpOfAdjoint G F adj1))).hom = 𝟙 G
Theorem: Asymptotics.superpolynomialDecay_param_mul_iff
File: Mathlib/Analysis/Asymptotics/SuperpolynomialDecay.lean

tactic: simp [← mul_assoc, inv_mul_cancel hx]
state_before: α : Type u_1
β : Type u_2
l : Filter α
k f g g' : α → β
inst✝² : TopologicalSpace β
inst✝¹ : LinearOrderedField β
inst✝ : OrderTopology β
hk : Tendsto k l atTop
h : SuperpolynomialDecay l k (k * f)
x : α
hx : k x ≠ 0
⊢ (k⁻¹ * (k * f)) x = f x
Theorem: sub_smul_slope
File: Mathlib/LinearAlgebra/AffineSpace/Slope.lean

tactic: rcases eq_or_ne a b with (rfl | hne)
state_before: k : Type u_2
E : Type u_1
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → PE
a b : k
⊢ (b - a) • slope f a b = f b -ᵥ f a

tactic: rw [sub_self, zero_smul, vsub_self]
state_before: case inl
k : Type u_2
E : Type u_1
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → PE
a : k
⊢ (a - a) • slope f a a = f a -ᵥ f a

tactic: rw [slope, smul_inv_smul₀ (sub_ne_zero.2 hne.symm)]
state_before: case inr
k : Type u_2
E : Type u_1
PE : Type u_3
inst✝³ : Field k
inst✝² : AddCommGroup E
inst✝¹ : Module k E
inst✝ : AddTorsor E PE
f : k → PE
a b : k
hne : a ≠ b
⊢ (b - a) • slope f a b = f b -ᵥ f a