tasksource/leandojo huggingface dataset:
Theorem: Filter.Tendsto.atTop_nsmul_const
File: Mathlib/Order/Filter/Archimedean.lean

tactic: refine' tendsto_atTop.mpr fun s => _
state_before: α : Type u_2
R : Type u_1
l : Filter α
f✝ : α → R
r : R
inst✝¹ : LinearOrderedCancelAddCommMonoid R
inst✝ : Archimedean R
f : α → ℕ
hr : 0 < r
hf : Tendsto f l atTop
⊢ Tendsto (fun x => f x • r) l atTop

tactic: obtain ⟨n : ℕ, hn : s ≤ n • r⟩ := Archimedean.arch s hr
state_before: α : Type u_2
R : Type u_1
l : Filter α
f✝ : α → R
r : R
inst✝¹ : LinearOrderedCancelAddCommMonoid R
inst✝ : Archimedean R
f : α → ℕ
hr : 0 < r
hf : Tendsto f l atTop
s : R
⊢ ∀ᶠ (a : α) in l, s ≤ f a • r

tactic: exact (tendsto_atTop.mp hf n).mono fun a ha => hn.trans (nsmul_le_nsmul hr.le ha)
state_before: case intro
α : Type u_2
R : Type u_1
l : Filter α
f✝ : α → R
r : R
inst✝¹ : LinearOrderedCancelAddCommMonoid R
inst✝ : Archimedean R
f : α → ℕ
hr : 0 < r
hf : Tendsto f l atTop
s : R
n : ℕ
hn : s ≤ n • r
⊢ ∀ᶠ (a : α) in l, s ≤ f a • r
Theorem: Besicovitch.SatelliteConfig.hlast'
File: Mathlib/MeasureTheory/Covering/Besicovitch.lean

tactic: rcases lt_or_le i (last N) with (H | H)
state_before: α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin (Nat.succ N)
h : 1 ≤ τ
⊢ r a (last N) ≤ τ * r a i

tactic: exact (a.hlast i H).2
state_before: case inl
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin (Nat.succ N)
h : 1 ≤ τ
H : i < last N
⊢ r a (last N) ≤ τ * r a i

tactic: have : i = last N := top_le_iff.1 H
state_before: case inr
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin (Nat.succ N)
h : 1 ≤ τ
H : last N ≤ i
⊢ r a (last N) ≤ τ * r a i

tactic: rw [this]
state_before: case inr
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin (Nat.succ N)
h : 1 ≤ τ
H : last N ≤ i
this : i = last N
⊢ r a (last N) ≤ τ * r a i

tactic: exact le_mul_of_one_le_left (a.rpos _).le h
state_before: case inr
α : Type u_1
inst✝ : MetricSpace α
N : ℕ
τ : ℝ
a : SatelliteConfig α N τ
i : Fin (Nat.succ N)
h : 1 ≤ τ
H : last N ≤ i
this : i = last N
⊢ r a (last N) ≤ τ * r a (last N)
Theorem: ENNReal.le_of_forall_lt_one_mul_le
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: rw [one_mul] at this
state_before: α : Type ?u.113642
β : Type ?u.113645
γ : Type ?u.113648
a b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y✝ z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
x y : ℝ≥0∞
h : ∀ (a : ℝ≥0∞), a < 1 → a * x ≤ y
this : Tendsto (fun x_1 => x_1 * x) (𝓝[Iio 1] 1) (𝓝 (1 * x))
⊢ x ≤ y

tactic: exact le_of_tendsto this (eventually_nhdsWithin_iff.2 <| eventually_of_forall h)
state_before: α : Type ?u.113642
β : Type ?u.113645
γ : Type ?u.113648
a b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y✝ z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
x y : ℝ≥0∞
h : ∀ (a : ℝ≥0∞), a < 1 → a * x ≤ y
this : Tendsto (fun x_1 => x_1 * x) (𝓝[Iio 1] 1) (𝓝 x)
⊢ x ≤ y
Theorem: conformalAt_iff
File: Mathlib/Analysis/Calculus/Conformal/InnerProduct.lean

tactic: simp only [conformalAt_iff', h.fderiv]
state_before: E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ E
inst✝ : InnerProductSpace ℝ F
f : E → F
x : E
f' : E →L[ℝ] F
h : HasFDerivAt f f' x
⊢ ConformalAt f x ↔ ∃ c, 0 < c ∧ ∀ (u v : E), inner (↑f' u) (↑f' v) = c * inner u v
Theorem: dist_le_tsum_of_dist_le_of_tendsto
File: Mathlib/Topology/Algebra/InfiniteSum/Real.lean

tactic: refine' le_of_tendsto (tendsto_const_nhds.dist ha) (eventually_atTop.2 ⟨n, fun m hnm => _⟩)
state_before: α : Type u_1
inst✝ : PseudoMetricSpace α
f : ℕ → α
a✝ : α
d : ℕ → ℝ
hf : ∀ (n : ℕ), dist (f n) (f (Nat.succ n)) ≤ d n
hd : Summable d
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
⊢ dist (f n) a ≤ ∑' (m : ℕ), d (n + m)

tactic: refine' le_trans (dist_le_Ico_sum_of_dist_le hnm fun _ _ => hf _) _
state_before: α : Type u_1
inst✝ : PseudoMetricSpace α
f : ℕ → α
a✝ : α
d : ℕ → ℝ
hf : ∀ (n : ℕ), dist (f n) (f (Nat.succ n)) ≤ d n
hd : Summable d
a : α
ha : Tendsto f atTop (𝓝 a)
n m : ℕ
hnm : m ≥ n
⊢ dist (f n) (f m) ≤ ∑' (m : ℕ), d (n + m)

tactic: rw [sum_Ico_eq_sum_range]
state_before: α : Type u_1
inst✝ : PseudoMetricSpace α
f : ℕ → α
a✝ : α
d : ℕ → ℝ
hf : ∀ (n : ℕ), dist (f n) (f (Nat.succ n)) ≤ d n
hd : Summable d
a : α
ha : Tendsto f atTop (𝓝 a)
n m : ℕ
hnm : m ≥ n
⊢ ∑ i in Ico n m, d i ≤ ∑' (m : ℕ), d (n + m)

tactic: refine' sum_le_tsum (range _) (fun _ _ => le_trans dist_nonneg (hf _)) _
state_before: α : Type u_1
inst✝ : PseudoMetricSpace α
f : ℕ → α
a✝ : α
d : ℕ → ℝ
hf : ∀ (n : ℕ), dist (f n) (f (Nat.succ n)) ≤ d n
hd : Summable d
a : α
ha : Tendsto f atTop (𝓝 a)
n m : ℕ
hnm : m ≥ n
⊢ ∑ k in range (m - n), d (n + k) ≤ ∑' (m : ℕ), d (n + m)

tactic: exact hd.comp_injective (add_right_injective n)
state_before: α : Type u_1
inst✝ : PseudoMetricSpace α
f : ℕ → α
a✝ : α
d : ℕ → ℝ
hf : ∀ (n : ℕ), dist (f n) (f (Nat.succ n)) ≤ d n
hd : Summable d
a : α
ha : Tendsto f atTop (𝓝 a)
n m : ℕ
hnm : m ≥ n
⊢ Summable fun k => d (n + k)
Theorem: Filter.tendsto_cocompact_mul_right
File: Mathlib/Topology/Algebra/Monoid.lean

tactic: refine Filter.Tendsto.of_tendsto_comp ?_ (Filter.comap_cocompact_le (continuous_mul_right b))
state_before: ι : Type ?u.374432
α : Type ?u.374435
X : Type ?u.374438
M : Type u_1
N : Type ?u.374444
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : ContinuousMul M
a b : M
ha : a * b = 1
⊢ Tendsto (fun x => x * a) (cocompact M) (cocompact M)

tactic: simp only [comp_mul_right, ha, mul_one]
state_before: ι : Type ?u.374432
α : Type ?u.374435
X : Type ?u.374438
M : Type u_1
N : Type ?u.374444
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : ContinuousMul M
a b : M
ha : a * b = 1
⊢ Tendsto ((fun b_1 => b_1 * b) ∘ fun x => x * a) (cocompact M) (cocompact M)

tactic: exact Filter.tendsto_id
state_before: ι : Type ?u.374432
α : Type ?u.374435
X : Type ?u.374438
M : Type u_1
N : Type ?u.374444
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : ContinuousMul M
a b : M
ha : a * b = 1
⊢ Tendsto (fun x => x) (cocompact M) (cocompact M)
Theorem: AlgebraicTopology.karoubi_alternatingFaceMapComplex_d
File: Mathlib/AlgebraicTopology/AlternatingFaceMapComplex.lean

tactic: dsimp
state_before: C : Type u_1
inst✝¹ : Category C
inst✝ : Preadditive C
P : Karoubi (SimplicialObject C)
n : ℕ
⊢ (HomologicalComplex.d (AlternatingFaceMapComplex.obj (KaroubiFunctorCategoryEmbedding.obj P)) (n + 1) n).f =
    P.p.app [n + 1].op ≫ HomologicalComplex.d (AlternatingFaceMapComplex.obj P.X) (n + 1) n

tactic: simp only [AlternatingFaceMapComplex.obj_d_eq, Karoubi.sum_hom, Preadditive.comp_sum,
  Karoubi.zsmul_hom, Preadditive.comp_zsmul]
state_before: C : Type u_1
inst✝¹ : Category C
inst✝ : Preadditive C
P : Karoubi (SimplicialObject C)
n : ℕ
⊢ (HomologicalComplex.d (AlternatingFaceMapComplex.obj (KaroubiFunctorCategoryEmbedding.obj P)) (n + 1) n).f =
    P.p.app [n + 1].op ≫ HomologicalComplex.d (AlternatingFaceMapComplex.obj P.X) (n + 1) n

tactic: rfl
state_before: C : Type u_1
inst✝¹ : Category C
inst✝ : Preadditive C
P : Karoubi (SimplicialObject C)
n : ℕ
⊢ ∑ x : Fin (n + 2), (-1) ^ ↑x • (SimplicialObject.δ (KaroubiFunctorCategoryEmbedding.obj P) x).f =
    ∑ x : Fin (n + 2), (-1) ^ ↑x • P.p.app [n + 1].op ≫ SimplicialObject.δ P.X x
Theorem: Matrix.det_succ_column
File: Mathlib/LinearAlgebra/Matrix/Determinant.lean

tactic: rw [← det_transpose, det_succ_row _ j]
state_before: m : Type ?u.2570289
n✝ : Type ?u.2570292
inst✝⁴ : DecidableEq n✝
inst✝³ : Fintype n✝
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
n : ℕ
A : Matrix (Fin (Nat.succ n)) (Fin (Nat.succ n)) R
j : Fin (Nat.succ n)
⊢ det A = ∑ i : Fin (Nat.succ n), (-1) ^ (↑i + ↑j) * A i j * det (submatrix A ↑(Fin.succAbove i) ↑(Fin.succAbove j))

tactic: refine' Finset.sum_congr rfl fun i _ => _
state_before: m : Type ?u.2570289
n✝ : Type ?u.2570292
inst✝⁴ : DecidableEq n✝
inst✝³ : Fintype n✝
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
n : ℕ
A : Matrix (Fin (Nat.succ n)) (Fin (Nat.succ n)) R
j : Fin (Nat.succ n)
⊢ ∑ j_1 : Fin (Nat.succ n), (-1) ^ (↑j + ↑j_1) * Aᵀ j j_1 * det (submatrix Aᵀ ↑(Fin.succAbove j) ↑(Fin.succAbove j_1)) =
    ∑ i : Fin (Nat.succ n), (-1) ^ (↑i + ↑j) * A i j * det (submatrix A ↑(Fin.succAbove i) ↑(Fin.succAbove j))

tactic: rw [add_comm, ← det_transpose, transpose_apply, transpose_submatrix, transpose_transpose]
state_before: m : Type ?u.2570289
n✝ : Type ?u.2570292
inst✝⁴ : DecidableEq n✝
inst✝³ : Fintype n✝
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
n : ℕ
A : Matrix (Fin (Nat.succ n)) (Fin (Nat.succ n)) R
j i : Fin (Nat.succ n)
x✝ : i ∈ univ
⊢ (-1) ^ (↑j + ↑i) * Aᵀ j i * det (submatrix Aᵀ ↑(Fin.succAbove j) ↑(Fin.succAbove i)) =
    (-1) ^ (↑i + ↑j) * A i j * det (submatrix A ↑(Fin.succAbove i) ↑(Fin.succAbove j))
Theorem: Int.coe_nat_modEq_iff
File: Mathlib/Data/Int/ModEq.lean

tactic: unfold ModEq Nat.ModEq
state_before: m n✝ a✝ b✝ c d : ℤ
a b n : ℕ
⊢ ↑a ≡ ↑b [ZMOD ↑n] ↔ a ≡ b [MOD n]

tactic: rw [← Int.ofNat_inj]
state_before: m n✝ a✝ b✝ c d : ℤ
a b n : ℕ
⊢ ↑a % ↑n = ↑b % ↑n ↔ a % n = b % n

tactic: simp [coe_nat_mod]
state_before: m n✝ a✝ b✝ c d : ℤ
a b n : ℕ
⊢ ↑a % ↑n = ↑b % ↑n ↔ ↑(a % n) = ↑(b % n)
Theorem: MeasureTheory.union_ae_eq_right
File: Mathlib/MeasureTheory/Measure/MeasureSpaceDef.lean

tactic: simp [eventuallyLE_antisymm_iff, ae_le_set, union_diff_right,
  diff_eq_empty.2 (Set.subset_union_right _ _)]
state_before: α : Type u_1
β : Type ?u.105395
γ : Type ?u.105398
δ : Type ?u.105401
ι : Type ?u.105404
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s s₁ s₂ t : Set α
⊢ s ∪ t =ᵐ[μ] t ↔ ↑↑μ (s \ t) = 0
Theorem: MeasureTheory.SimpleFunc.tendsto_nearestPt
File: Mathlib/MeasureTheory/Function/SimpleFuncDense.lean

tactic: refine' (atTop_basis.tendsto_iff nhds_basis_eball).2 fun ε hε => _
state_before: α : Type u_1
β : Type ?u.27019
ι : Type ?u.27022
E : Type ?u.27025
F : Type ?u.27028
𝕜 : Type ?u.27031
inst✝² : MeasurableSpace α
inst✝¹ : PseudoEMetricSpace α
inst✝ : OpensMeasurableSpace α
e : ℕ → α
x : α
hx : x ∈ closure (Set.range e)
⊢ Tendsto (fun N => ↑(nearestPt e N) x) atTop (𝓝 x)

tactic: rcases EMetric.mem_closure_iff.1 hx ε hε with ⟨_, ⟨N, rfl⟩, hN⟩
state_before: α : Type u_1
β : Type ?u.27019
ι : Type ?u.27022
E : Type ?u.27025
F : Type ?u.27028
𝕜 : Type ?u.27031
inst✝² : MeasurableSpace α
inst✝¹ : PseudoEMetricSpace α
inst✝ : OpensMeasurableSpace α
e : ℕ → α
x : α
hx : x ∈ closure (Set.range e)
ε : ℝ≥0∞
hε : 0 < ε
⊢ ∃ ia, True ∧ ∀ (x_1 : ℕ), x_1 ∈ Set.Ici ia → ↑(nearestPt e x_1) x ∈ ball x ε

tactic: rw [edist_comm] at hN
state_before: case intro.intro.intro
α : Type u_1
β : Type ?u.27019
ι : Type ?u.27022
E : Type ?u.27025
F : Type ?u.27028
𝕜 : Type ?u.27031
inst✝² : MeasurableSpace α
inst✝¹ : PseudoEMetricSpace α
inst✝ : OpensMeasurableSpace α
e : ℕ → α
x : α
hx : x ∈ closure (Set.range e)
ε : ℝ≥0∞
hε : 0 < ε
N : ℕ
hN : edist x (e N) < ε
⊢ ∃ ia, True ∧ ∀ (x_1 : ℕ), x_1 ∈ Set.Ici ia → ↑(nearestPt e x_1) x ∈ ball x ε

tactic: exact ⟨N, trivial, fun n hn => (edist_nearestPt_le e x hn).trans_lt hN⟩
state_before: case intro.intro.intro
α : Type u_1
β : Type ?u.27019
ι : Type ?u.27022
E : Type ?u.27025
F : Type ?u.27028
𝕜 : Type ?u.27031
inst✝² : MeasurableSpace α
inst✝¹ : PseudoEMetricSpace α
inst✝ : OpensMeasurableSpace α
e : ℕ → α
x : α
hx : x ∈ closure (Set.range e)
ε : ℝ≥0∞
hε : 0 < ε
N : ℕ
hN : edist (e N) x < ε
⊢ ∃ ia, True ∧ ∀ (x_1 : ℕ), x_1 ∈ Set.Ici ia → ↑(nearestPt e x_1) x ∈ ball x ε
Theorem: List.filter_beq'
File: Mathlib/Data/List/Count.lean

tactic: simp only [count, countp_eq_length_filter, eq_replicate, mem_filter, beq_iff_eq]
state_before: α : Type u_1
l✝ : List α
inst✝ : DecidableEq α
l : List α
a : α
⊢ filter (fun x => x == a) l = replicate (count a l) a

tactic: exact ⟨trivial, fun _ h => h.2⟩
state_before: α : Type u_1
l✝ : List α
inst✝ : DecidableEq α
l : List α
a : α
⊢ True ∧ ∀ (b : α), b ∈ l ∧ b = a → b = a
Theorem: PGame.le_or_gf
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [← PGame.not_le]
state_before: x y : PGame
⊢ x ≤ y ∨ y ⧏ x

tactic: apply em
state_before: x y : PGame
⊢ x ≤ y ∨ ¬x ≤ y
Theorem: CategoryTheory.preserves_mono_of_preservesLimit
File: Mathlib/CategoryTheory/Limits/Constructions/EpiMono.lean

tactic: have := isLimitPullbackConeMapOfIsLimit F _ (PullbackCone.isLimitMkIdId f)
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category C
inst✝² : Category D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝¹ : PreservesLimit (cospan f f) F
inst✝ : Mono f
⊢ Mono (F.map f)

tactic: simp_rw [F.map_id] at this
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category C
inst✝² : Category D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝¹ : PreservesLimit (cospan f f) F
inst✝ : Mono f
this :
  let_fun this := (_ : F.map (𝟙 X) ≫ F.map f = F.map (𝟙 X) ≫ F.map f);
  IsLimit (PullbackCone.mk (F.map (𝟙 X)) (F.map (𝟙 X)) this)
⊢ Mono (F.map f)

tactic: apply PullbackCone.mono_of_isLimitMkIdId _ this
state_before: C : Type u₁
D : Type u₂
inst✝³ : Category C
inst✝² : Category D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝¹ : PreservesLimit (cospan f f) F
inst✝ : Mono f
this : IsLimit (PullbackCone.mk (𝟙 (F.obj X)) (𝟙 (F.obj X)) (_ : 𝟙 (F.obj X) ≫ F.map f = 𝟙 (F.obj X) ≫ F.map f))
⊢ Mono (F.map f)
Theorem: CompositionSeries.append_succ_castAdd
File: Mathlib/Order/JordanHolder.lean

tactic: rw [coe_append, append_succ_castAdd_aux _ _ _ h]
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s₁ s₂ : CompositionSeries X
h : top s₁ = bot s₂
i : Fin s₁.length
⊢ series (append s₁ s₂ h) (Fin.succ (↑(Fin.castAdd s₂.length) i)) = series s₁ (Fin.succ i)
Theorem: iInf_eq_of_forall_le_of_tendsto
File: Mathlib/Topology/Algebra/Order/LiminfLimsup.lean

tactic: refine' iInf_eq_of_forall_ge_of_forall_gt_exists_lt (fun i ↦ x_le i) _
state_before: α : Type u
β : Type v
ι : Type u_2
R : Type u_1
inst✝³ : CompleteLinearOrder R
inst✝² : TopologicalSpace R
inst✝¹ : OrderTopology R
x : R
as : ι → R
x_le : ∀ (i : ι), x ≤ as i
F : Filter ι
inst✝ : NeBot F
as_lim : Tendsto as F (𝓝 x)
⊢ (⨅ (i : ι), as i) = x

tactic: apply fun w x_lt_w ↦ ‹Filter.NeBot F›.nonempty_of_mem (eventually_lt_of_tendsto_lt x_lt_w as_lim)
state_before: α : Type u
β : Type v
ι : Type u_2
R : Type u_1
inst✝³ : CompleteLinearOrder R
inst✝² : TopologicalSpace R
inst✝¹ : OrderTopology R
x : R
as : ι → R
x_le : ∀ (i : ι), x ≤ as i
F : Filter ι
inst✝ : NeBot F
as_lim : Tendsto as F (𝓝 x)
⊢ ∀ (w : R), x < w → ∃ i, as i < w
Theorem: Field.DirectLimit.mul_inv_cancel
File: Mathlib/Algebra/DirectLimit.lean

tactic: rw [inv, dif_neg hp, Classical.choose_spec (DirectLimit.exists_inv G f hp)]
state_before: R : Type u
inst✝⁴ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝³ : Preorder ι
G : ι → Type w
inst✝² : Nonempty ι
inst✝¹ : IsDirected ι fun x x_1 => x ≤ x_1
inst✝ : (i : ι) → Field (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
p : Ring.DirectLimit G f
hp : p ≠ 0
⊢ p * inv G f p = 1
Theorem: Matrix.cons_val_one
File: Mathlib/Data/Fin/VecNotation.lean

tactic: rw [← Fin.succ_zero_eq_one, cons_val_succ]
state_before: α : Type u
m n o : ℕ
m' : Type ?u.22403
n' : Type ?u.22406
o' : Type ?u.22409
x : α
u : Fin (Nat.succ m) → α
⊢ vecCons x u 1 = vecHead u

tactic: rfl
state_before: α : Type u
m n o : ℕ
m' : Type ?u.22403
n' : Type ?u.22406
o' : Type ?u.22409
x : α
u : Fin (Nat.succ m) → α
⊢ u 0 = vecHead u
Theorem: Homotopy.prevD_zero_cochainComplex
File: Mathlib/Algebra/Homology/Homotopy.lean

tactic: dsimp [prevD]
state_before: ι : Type ?u.383391
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 : ι
P Q : CochainComplex V ℕ
f : (i j : ℕ) → X P i ⟶ X Q j
⊢ ↑(prevD 0) f = 0

tactic: rw [Q.shape, comp_zero]
state_before: ι : Type ?u.383391
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 : ι
P Q : CochainComplex V ℕ
f : (i j : ℕ) → X P i ⟶ X Q j
⊢ f 0 (ComplexShape.prev (ComplexShape.up ℕ) 0) ≫ d Q (ComplexShape.prev (ComplexShape.up ℕ) 0) 0 = 0

tactic: rw [CochainComplex.prev_nat_zero]
state_before: case a
ι : Type ?u.383391
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 : ι
P Q : CochainComplex V ℕ
f : (i j : ℕ) → X P i ⟶ X Q j
⊢ ¬ComplexShape.Rel (ComplexShape.up ℕ) (ComplexShape.prev (ComplexShape.up ℕ) 0) 0

tactic: dsimp
state_before: case a
ι : Type ?u.383391
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 : ι
P Q : CochainComplex V ℕ
f : (i j : ℕ) → X P i ⟶ X Q j
⊢ ¬ComplexShape.Rel (ComplexShape.up ℕ) 0 0

tactic: decide
state_before: case a
ι : Type ?u.383391
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 : ι
P Q : CochainComplex V ℕ
f : (i j : ℕ) → X P i ⟶ X Q j
⊢ ¬0 + 1 = 0
Theorem: Complex.arg_nonneg_iff
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: rcases eq_or_ne z 0 with (rfl | h₀)
state_before: z : ℂ
⊢ 0 ≤ arg z ↔ 0 ≤ z.im

tactic: calc
  0 ≤ arg z ↔ 0 ≤ Real.sin (arg z) :=
    ⟨fun h => Real.sin_nonneg_of_mem_Icc ⟨h, arg_le_pi z⟩, by
      contrapose!
      intro h
      exact Real.sin_neg_of_neg_of_neg_pi_lt h (neg_pi_lt_arg _)⟩
  _ ↔ _ := by rw [sin_arg, le_div_iff (abs.pos h₀), MulZeroClass.zero_mul]
state_before: case inr
z : ℂ
h₀ : z ≠ 0
⊢ 0 ≤ arg z ↔ 0 ≤ z.im

tactic: simp
state_before: case inl

⊢ 0 ≤ arg 0 ↔ 0 ≤ 0.im

tactic: contrapose!
state_before: z : ℂ
h₀ : z ≠ 0
⊢ 0 ≤ Real.sin (arg z) → 0 ≤ arg z

tactic: intro h
state_before: z : ℂ
h₀ : z ≠ 0
⊢ arg z < 0 → Real.sin (arg z) < 0

tactic: exact Real.sin_neg_of_neg_of_neg_pi_lt h (neg_pi_lt_arg _)
state_before: z : ℂ
h₀ : z ≠ 0
h : arg z < 0
⊢ Real.sin (arg z) < 0

tactic: rw [sin_arg, le_div_iff (abs.pos h₀), MulZeroClass.zero_mul]
state_before: z : ℂ
h₀ : z ≠ 0
⊢ 0 ≤ Real.sin (arg z) ↔ 0 ≤ z.im
Theorem: Matrix.mul_assoc
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type ?u.375873
n' : o → Type ?u.375878
R : Type ?u.375881
S : Type ?u.375884
α : Type v
β : Type w
γ : Type ?u.375891
inst✝² : NonUnitalSemiring α
inst✝¹ : Fintype m
inst✝ : Fintype n
L : Matrix l m α
M : Matrix m n α
N : Matrix n o α
⊢ L ⬝ M ⬝ N = L ⬝ (M ⬝ N)

tactic: apply dotProduct_assoc
state_before: case a.h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type ?u.375873
n' : o → Type ?u.375878
R : Type ?u.375881
S : Type ?u.375884
α : Type v
β : Type w
γ : Type ?u.375891
inst✝² : NonUnitalSemiring α
inst✝¹ : Fintype m
inst✝ : Fintype n
L : Matrix l m α
M : Matrix m n α
N : Matrix n o α
i✝ : l
x✝ : o
⊢ (L ⬝ M ⬝ N) i✝ x✝ = (L ⬝ (M ⬝ N)) i✝ x✝
Theorem: MonoidHom.ker_toHomUnits
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: ext x
state_before: G : Type u_2
G' : Type ?u.511685
inst✝⁶ : Group G
inst✝⁵ : Group G'
A : Type ?u.511694
inst✝⁴ : AddGroup A
N : Type ?u.511700
P : Type ?u.511703
inst✝³ : Group N
inst✝² : Group P
K : Subgroup G
M✝ : Type ?u.511720
inst✝¹ : MulOneClass M✝
M : Type u_1
inst✝ : Monoid M
f : G →* M
⊢ ker (toHomUnits f) = ker f

tactic: simp [mem_ker, Units.ext_iff]
state_before: case h
G : Type u_2
G' : Type ?u.511685
inst✝⁶ : Group G
inst✝⁵ : Group G'
A : Type ?u.511694
inst✝⁴ : AddGroup A
N : Type ?u.511700
P : Type ?u.511703
inst✝³ : Group N
inst✝² : Group P
K : Subgroup G
M✝ : Type ?u.511720
inst✝¹ : MulOneClass M✝
M : Type u_1
inst✝ : Monoid M
f : G →* M
x : G
⊢ x ∈ ker (toHomUnits f) ↔ x ∈ ker f
Theorem: tendsto_nhds_true
File: Mathlib/Topology/Order.lean

tactic: simp
state_before: α : Type u_1
inst✝ : TopologicalSpace α
l : Filter α
p : α → Prop
⊢ Tendsto p l (𝓝 True) ↔ ∀ᶠ (x : α) in l, p x
Theorem: IsROrC.inv_im
File: Mathlib/Data/IsROrC/Basic.lean

tactic: rw [inv_def, normSq_eq_def', mul_comm, ofReal_mul_im, conj_im, div_eq_inv_mul]
state_before: K : Type u_1
E : Type ?u.5463776
inst✝ : IsROrC K
z : K
⊢ ↑im z⁻¹ = -↑im z / ↑normSq z
Theorem: String.Iterator.ValidFor.prev_nil
File: Std/Data/String/Lemmas.lean

tactic: simp [Iterator.prev, h.toString, h.pos]
state_before: r : List Char
it : Iterator
h : ValidFor [] r it
⊢ ValidFor [] r (Iterator.prev it)

tactic: constructor
state_before: r : List Char
it : Iterator
h : ValidFor [] r it
⊢ ValidFor [] r { s := { data := r }, i := 0 }
Theorem: List.splitWrtComposition_join
File: Mathlib/Combinatorics/Composition.lean

tactic: simp only [eq_self_iff_true, and_self_iff, eq_iff_join_eq, join_splitWrtComposition,
  map_length_splitWrtComposition, h]
state_before: n : ℕ
α : Type u_1
L : List (List α)
c : Composition (length (join L))
h : map length L = c.blocks
⊢ splitWrtComposition (join L) c = L
Theorem: toZ_of_eq
File: Mathlib/Order/SuccPred/LinearLocallyFinite.lean

tactic: rw [toZ_of_ge le_rfl]
state_before: ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
⊢ toZ i0 i0 = 0

tactic: norm_cast
state_before: ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
⊢ ↑(Nat.find (_ : ∃ n, (succ^[n]) i0 = i0)) = 0

tactic: refine' le_antisymm (Nat.find_le _) (zero_le _)
state_before: ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
⊢ Nat.find (_ : ∃ n, (succ^[n]) i0 = i0) = 0

tactic: rw [Function.iterate_zero, id.def]
state_before: ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
⊢ (succ^[0]) i0 = i0
Theorem: Equiv.Perm.sameCycle_subtypePerm
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: simp [Subtype.ext_iff]
state_before: ι : Type ?u.206150
α : Type u_1
β : Type ?u.206156
f g : Perm α
p : α → Prop
x✝ y✝ z : α
h : ∀ (x : α), p x ↔ p (↑f x)
x y : { x // p x }
n : ℤ
⊢ ↑(subtypePerm f h ^ n) x = y ↔ ↑(f ^ n) ↑x = ↑y
Theorem: Ordnode.node3L_size
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: dsimp [node3L, node', size]
state_before: α : Type u_1
l : Ordnode α
x : α
m : Ordnode α
y : α
r : Ordnode α
⊢ size (node3L l x m y r) = size l + size m + size r + 2

tactic: rw [add_right_comm _ 1]
state_before: α : Type u_1
l : Ordnode α
x : α
m : Ordnode α
y : α
r : Ordnode α
⊢ (((match l with
            | nil => 0
            | node sz l x r => sz) +
            match m with
            | nil => 0
            | node sz l x r => sz) +
          1 +
        match r with
        | nil => 0
        | node sz l x r => sz) +
      1 =
    (((match l with
          | nil => 0
          | node sz l x r => sz) +
          match m with
          | nil => 0
          | node sz l x r => sz) +
        match r with
        | nil => 0
        | node sz l x r => sz) +
      2
Theorem: exists_unique_eq'
File: Mathlib/Logic/Basic.lean

tactic: simp only [ExistsUnique, and_self, forall_eq', exists_eq']
state_before: ι : Sort ?u.16719
α : Sort u_1
κ : ι → Sort ?u.16721
p q : α → Prop
a' : α
⊢ ∃! a, a' = a
Theorem: CategoryTheory.IsPushout.of_is_coproduct
File: Mathlib/CategoryTheory/Limits/Shapes/CommSq.lean

tactic: dsimp
state_before: case mk.right
C : Type u₁
inst✝ : Category C
Z X Y P : C
f : Z ⟶ X
g : Z ⟶ Y
inl : X ⟶ P
inr : Y ⟶ P
c : BinaryCofan X Y
h : IsColimit c
t : IsInitial Z
⊢ c.ι.app { as := WalkingPair.right } ≫ (Iso.refl c.pt).hom =
    (BinaryCofan.mk (c.ι.1 { as := WalkingPair.left }) (c.ι.1 { as := WalkingPair.right })).ι.app
      { as := WalkingPair.right }

tactic: simp
state_before: case mk.right
C : Type u₁
inst✝ : Category C
Z X Y P : C
f : Z ⟶ X
g : Z ⟶ Y
inl : X ⟶ P
inr : Y ⟶ P
c : BinaryCofan X Y
h : IsColimit c
t : IsInitial Z
⊢ BinaryCofan.inr c ≫ 𝟙 c.pt = BinaryCofan.inr c