tasksource/leandojo huggingface dataset:
Theorem: CategoryTheory.Endofunctor.Adjunction.Algebra.homEquiv_naturality_str
File: Mathlib/CategoryTheory/Endofunctor/Algebra.lean

tactic: rw [← Adjunction.homEquiv_naturality_right, ← Adjunction.homEquiv_naturality_left, f.h]
state_before: C : Type u
inst✝ : Category C
F G : C ⥤ C
adj : F ⊣ G
A₁ A₂ : Algebra F
f : A₁ ⟶ A₂
⊢ ↑(Adjunction.homEquiv adj A₁.a A₁.a) A₁.str ≫ G.map f.f = f.f ≫ ↑(Adjunction.homEquiv adj A₂.a A₂.a) A₂.str
Theorem: Complex.exp_eq_exp_ℂ
File: Mathlib/Analysis/SpecialFunctions/Exponential.lean

tactic: refine' funext fun x => _
state_before: ⊢ exp = _root_.exp ℂ

tactic: rw [Complex.exp, exp_eq_tsum_div]
state_before: x : ℂ
⊢ exp x = _root_.exp ℂ x

tactic: have : CauSeq.IsComplete ℂ norm := Complex.instIsComplete
state_before: x : ℂ
⊢ CauSeq.lim (exp' x) = (fun x => ∑' (n : ℕ), x ^ n / ↑n !) x

tactic: exact tendsto_nhds_unique x.exp'.tendsto_limit (expSeries_div_summable ℝ x).hasSum.tendsto_sum_nat
state_before: x : ℂ
this : CauSeq.IsComplete ℂ norm
⊢ CauSeq.lim (exp' x) = (fun x => ∑' (n : ℕ), x ^ n / ↑n !) x
Theorem: Ordinal.zero_mod
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simp only [mod_def, zero_div, mul_zero, sub_self]
state_before: α : Type ?u.258355
β : Type ?u.258358
γ : Type ?u.258361
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
b : Ordinal
⊢ 0 % b = 0
Theorem: Finset.iSup_union
File: Mathlib/Data/Finset/Lattice.lean

tactic: simp [iSup_or, iSup_sup_eq]
state_before: F : Type ?u.436212
α : Type u_1
β : Type u_2
γ : Type ?u.436221
ι : Type ?u.436224
κ : Type ?u.436227
inst✝¹ : CompleteLattice β
inst✝ : DecidableEq α
f : α → β
s t : Finset α
⊢ (⨆ (x : α) (_ : x ∈ s ∪ t), f x) = (⨆ (x : α) (_ : x ∈ s), f x) ⊔ ⨆ (x : α) (_ : x ∈ t), f x
Theorem: Part.toFinset_some
File: Mathlib/Data/Finset/PImage.lean

tactic: simp [toFinset]
state_before: α : Type u_1
β : Type ?u.528
a : α
inst✝ : Decidable (some a).Dom
⊢ toFinset (some a) = {a}
Theorem: Real.logb_div
File: Mathlib/Analysis/SpecialFunctions/Log/Base.lean

tactic: simp_rw [logb, log_div hx hy, sub_div]
state_before: b x y : ℝ
hx : x ≠ 0
hy : y ≠ 0
⊢ logb b (x / y) = logb b x - logb b y
Theorem: Set.Ico.coe_eq_zero
File: Mathlib/Data/Set/Intervals/Instances.lean

tactic: symm
state_before: α : Type u_1
inst✝¹ : OrderedSemiring α
inst✝ : Nontrivial α
x : ↑(Ico 0 1)
⊢ ↑x = 0 ↔ x = 0

tactic: exact Subtype.ext_iff
state_before: α : Type u_1
inst✝¹ : OrderedSemiring α
inst✝ : Nontrivial α
x : ↑(Ico 0 1)
⊢ x = 0 ↔ ↑x = 0
Theorem: Localization.r_eq_r'
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: simp
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type ?u.37854
inst✝¹ : CommMonoid N
P : Type ?u.37860
inst✝ : CommMonoid P
x✝ : { x // x ∈ S }
⊢ ↑1 * (↑(↑x✝, x✝).snd * 1.fst) = ↑1 * (↑1.snd * (↑x✝, x✝).fst)

tactic: rw [← one_mul (p, q), ← one_mul (x, y)]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type ?u.37854
inst✝¹ : CommMonoid N
P : Type ?u.37860
inst✝ : CommMonoid P
b : Con (M × { x // x ∈ S })
H : b ∈ {c | ∀ (y : { x // x ∈ S }), ↑c 1 (↑y, y)}
x✝² x✝¹ : M × { x // x ∈ S }
p : M
q : { x // x ∈ S }
x : M
y : { x // x ∈ S }
x✝ : ↑(r' S) (p, q) (x, y)
t : { x // x ∈ S }
ht : ↑t * (↑(x, y).snd * (p, q).fst) = ↑t * (↑(p, q).snd * (x, y).fst)
⊢ ↑b (p, q) (x, y)

tactic: refine b.trans (b.mul (H (t * y)) (b.refl _)) ?_
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type ?u.37854
inst✝¹ : CommMonoid N
P : Type ?u.37860
inst✝ : CommMonoid P
b : Con (M × { x // x ∈ S })
H : b ∈ {c | ∀ (y : { x // x ∈ S }), ↑c 1 (↑y, y)}
x✝² x✝¹ : M × { x // x ∈ S }
p : M
q : { x // x ∈ S }
x : M
y : { x // x ∈ S }
x✝ : ↑(r' S) (p, q) (x, y)
t : { x // x ∈ S }
ht : ↑t * (↑(x, y).snd * (p, q).fst) = ↑t * (↑(p, q).snd * (x, y).fst)
⊢ ↑b (1 * (p, q)) (1 * (x, y))

tactic: convert b.symm (b.mul (H (t * q)) (b.refl (x, y))) using 1
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type ?u.37854
inst✝¹ : CommMonoid N
P : Type ?u.37860
inst✝ : CommMonoid P
b : Con (M × { x // x ∈ S })
H : b ∈ {c | ∀ (y : { x // x ∈ S }), ↑c 1 (↑y, y)}
x✝² x✝¹ : M × { x // x ∈ S }
p : M
q : { x // x ∈ S }
x : M
y : { x // x ∈ S }
x✝ : ↑(r' S) (p, q) (x, y)
t : { x // x ∈ S }
ht : ↑t * (↑(x, y).snd * (p, q).fst) = ↑t * (↑(p, q).snd * (x, y).fst)
⊢ ↑b ((↑(t * y), t * y) * (p, q)) (1 * (x, y))

tactic: dsimp only [Prod.mk_mul_mk, Submonoid.coe_mul] at ht ⊢
state_before: case h.e'_3
M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type ?u.37854
inst✝¹ : CommMonoid N
P : Type ?u.37860
inst✝ : CommMonoid P
b : Con (M × { x // x ∈ S })
H : b ∈ {c | ∀ (y : { x // x ∈ S }), ↑c 1 (↑y, y)}
x✝² x✝¹ : M × { x // x ∈ S }
p : M
q : { x // x ∈ S }
x : M
y : { x // x ∈ S }
x✝ : ↑(r' S) (p, q) (x, y)
t : { x // x ∈ S }
ht : ↑t * (↑(x, y).snd * (p, q).fst) = ↑t * (↑(p, q).snd * (x, y).fst)
⊢ (↑(t * y), t * y) * (p, q) = (↑(t * q), t * q) * (x, y)

tactic: simp_rw [mul_assoc, ht, mul_comm y q]
state_before: case h.e'_3
M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type ?u.37854
inst✝¹ : CommMonoid N
P : Type ?u.37860
inst✝ : CommMonoid P
b : Con (M × { x // x ∈ S })
H : b ∈ {c | ∀ (y : { x // x ∈ S }), ↑c 1 (↑y, y)}
x✝² x✝¹ : M × { x // x ∈ S }
p : M
q : { x // x ∈ S }
x : M
y : { x // x ∈ S }
x✝ : ↑(r' S) (p, q) (x, y)
t : { x // x ∈ S }
ht : ↑t * (↑y * p) = ↑t * (↑q * x)
⊢ (↑t * ↑y * p, t * y * q) = (↑t * ↑q * x, t * q * y)
Theorem: Finset.sum_smul_vsub_const_eq_weightedVSubOfPoint_sub
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: rw [sum_smul_vsub_eq_weightedVSubOfPoint_sub, weightedVSubOfPoint_apply_const]
state_before: k : Type u_3
V : Type u_1
P : Type u_4
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_2
s : Finset ι
ι₂ : Type ?u.101169
s₂ : Finset ι₂
w : ι → k
p₁ : ι → P
p₂ b : P
⊢ ∑ i in s, w i • (p₁ i -ᵥ p₂) = ↑(weightedVSubOfPoint s p₁ b) w - (∑ i in s, w i) • (p₂ -ᵥ b)
Theorem: MeasureTheory.Measure.dirac_prod_dirac
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

tactic: rw [prod_dirac, map_dirac measurable_prod_mk_right]
state_before: α : Type u_1
α' : Type ?u.4493213
β : Type u_2
β' : Type ?u.4493219
γ : Type ?u.4493222
E : Type ?u.4493225
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite μ
x : α
y : β
⊢ Measure.prod (dirac x) (dirac y) = dirac (x, y)
Theorem: Matrix.updateColumn_apply
File: Mathlib/Data/Matrix/Basic.lean

tactic: by_cases j' = j
state_before: l : Type ?u.1220689
m : Type u_2
n : Type u_1
o : Type ?u.1220698
m' : o → Type ?u.1220703
n' : o → Type ?u.1220708
R : Type ?u.1220711
S : Type ?u.1220714
α : Type v
β : Type w
γ : Type ?u.1220721
M : Matrix m n α
i : m
j : n
b : n → α
c : m → α
inst✝ : DecidableEq n
j' : n
⊢ updateColumn M j c i j' = if j' = j then c i else M i j'

tactic: rw [h, updateColumn_self, if_pos rfl]
state_before: case pos
l : Type ?u.1220689
m : Type u_2
n : Type u_1
o : Type ?u.1220698
m' : o → Type ?u.1220703
n' : o → Type ?u.1220708
R : Type ?u.1220711
S : Type ?u.1220714
α : Type v
β : Type w
γ : Type ?u.1220721
M : Matrix m n α
i : m
j : n
b : n → α
c : m → α
inst✝ : DecidableEq n
j' : n
h : j' = j
⊢ updateColumn M j c i j' = if j' = j then c i else M i j'

tactic: rw [updateColumn_ne h, if_neg h]
state_before: case neg
l : Type ?u.1220689
m : Type u_2
n : Type u_1
o : Type ?u.1220698
m' : o → Type ?u.1220703
n' : o → Type ?u.1220708
R : Type ?u.1220711
S : Type ?u.1220714
α : Type v
β : Type w
γ : Type ?u.1220721
M : Matrix m n α
i : m
j : n
b : n → α
c : m → α
inst✝ : DecidableEq n
j' : n
h : ¬j' = j
⊢ updateColumn M j c i j' = if j' = j then c i else M i j'
Theorem: Multiset.eq_union_right
File: Mathlib/Data/Multiset/Basic.lean

tactic: rw [union_comm, eq_union_left h]
state_before: α : Type u_1
β : Type ?u.179008
γ : Type ?u.179011
inst✝ : DecidableEq α
s t u : Multiset α
a b : α
h : s ≤ t
⊢ s ∪ t = t
Theorem: Complex.abs_re_le_abs
File: Mathlib/Data/Complex/Basic.lean

tactic: rw [normSq_apply, ← sq]
state_before: z : ℂ
⊢ z.re ^ 2 ≤ ↑normSq z

tactic: exact le_add_of_nonneg_right (mul_self_nonneg _)
state_before: z : ℂ
⊢ z.re ^ 2 ≤ z.re ^ 2 + z.im * z.im
Theorem: MeasureTheory.integral_diff
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

tactic: rw [eq_sub_iff_add_eq, ← integral_union, diff_union_of_subset hts]
state_before: α : Type u_1
β : Type ?u.7261
E : Type u_2
F : Type ?u.7267
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
ht : MeasurableSet t
hfs : IntegrableOn f s
hts : t ⊆ s
⊢ (∫ (x : α) in s \ t, f x ∂μ) = (∫ (x : α) in s, f x ∂μ) - ∫ (x : α) in t, f x ∂μ

tactic: exacts [disjoint_sdiff_self_left, ht, hfs.mono_set (diff_subset _ _), hfs.mono_set hts]
state_before: case hst
α : Type u_1
β : Type ?u.7261
E : Type u_2
F : Type ?u.7267
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
ht : MeasurableSet t
hfs : IntegrableOn f s
hts : t ⊆ s
⊢ Disjoint (s \ t) t

case ht
α : Type u_1
β : Type ?u.7261
E : Type u_2
F : Type ?u.7267
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
ht : MeasurableSet t
hfs : IntegrableOn f s
hts : t ⊆ s
⊢ MeasurableSet t

case hfs
α : Type u_1
β : Type ?u.7261
E : Type u_2
F : Type ?u.7267
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
ht : MeasurableSet t
hfs : IntegrableOn f s
hts : t ⊆ s
⊢ IntegrableOn (fun x => f x) (s \ t)

case hft
α : Type u_1
β : Type ?u.7261
E : Type u_2
F : Type ?u.7267
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
ht : MeasurableSet t
hfs : IntegrableOn f s
hts : t ⊆ s
⊢ IntegrableOn (fun x => f x) t
Theorem: Bool.decide_congr
File: Mathlib/Init/Data/Bool/Lemmas.lean

tactic: cases h' : decide q with
| false => exact decide_false (mt h.1 <| of_decide_false h')
| true => exact decide_true (h.2 <| of_decide_true h')
state_before: p q : Prop
inst✝¹ : Decidable p
inst✝ : Decidable q
h : p ↔ q
⊢ decide p = decide q

tactic: exact decide_false (mt h.1 <| of_decide_false h')
state_before: case false
p q : Prop
inst✝¹ : Decidable p
inst✝ : Decidable q
h : p ↔ q
h' : decide q = false
⊢ decide p = false

tactic: exact decide_true (h.2 <| of_decide_true h')
state_before: case true
p q : Prop
inst✝¹ : Decidable p
inst✝ : Decidable q
h : p ↔ q
h' : decide q = true
⊢ decide p = true
Theorem: Int.dvd_natAbs
File: Std/Data/Int/DivMod.lean

tactic: rw [← e]
state_before: a b : Int
e : b = ↑(natAbs b)
⊢ a ∣ ↑(natAbs b) ↔ a ∣ b

tactic: rw [← Int.dvd_neg, ← e]
state_before: a b : Int
e : b = -↑(natAbs b)
⊢ a ∣ ↑(natAbs b) ↔ a ∣ b
Theorem: Irrational.ne_zero
File: Mathlib/Data/Real/Irrational.lean

tactic: exact_mod_cast h.ne_nat 0
state_before: x : ℝ
h : Irrational x
⊢ x ≠ 0
Theorem: Finset.image_biUnion
File: Mathlib/Data/Finset/Image.lean

tactic: simp only [image_insert, biUnion_insert, ih]
state_before: α : Type u_2
β : Type u_3
γ : Type u_1
inst✝¹ : DecidableEq β
f✝ g : α → β
s✝¹ : Finset α
t✝ : Finset β
a✝ : α
b c : β
inst✝ : DecidableEq γ
f : α → β
s✝ : Finset α
t : β → Finset γ
this : DecidableEq α
a : α
s : Finset α
x✝ : ¬a ∈ s
ih : Finset.biUnion (image f s) t = Finset.biUnion s fun a => t (f a)
⊢ Finset.biUnion (image f (insert a s)) t = Finset.biUnion (insert a s) fun a => t (f a)
Theorem: IsPrimitiveRoot.pow_of_dvd
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: suffices orderOf (ζ ^ p) = k / p by exact this ▸ IsPrimitiveRoot.orderOf (ζ ^ p)
state_before: M : Type u_1
N : Type ?u.2172208
G : Type ?u.2172211
R : Type ?u.2172214
S : Type ?u.2172217
F : Type ?u.2172220
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : DivisionCommMonoid G
k l : ℕ
ζ : M
f : F
h✝ h : IsPrimitiveRoot ζ k
p : ℕ
hp : p ≠ 0
hdiv : p ∣ k
⊢ IsPrimitiveRoot (ζ ^ p) (k / p)

tactic: rw [orderOf_pow' _ hp, ← eq_orderOf h, Nat.gcd_eq_right hdiv]
state_before: M : Type u_1
N : Type ?u.2172208
G : Type ?u.2172211
R : Type ?u.2172214
S : Type ?u.2172217
F : Type ?u.2172220
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : DivisionCommMonoid G
k l : ℕ
ζ : M
f : F
h✝ h : IsPrimitiveRoot ζ k
p : ℕ
hp : p ≠ 0
hdiv : p ∣ k
⊢ orderOf (ζ ^ p) = k / p

tactic: exact this ▸ IsPrimitiveRoot.orderOf (ζ ^ p)
state_before: M : Type u_1
N : Type ?u.2172208
G : Type ?u.2172211
R : Type ?u.2172214
S : Type ?u.2172217
F : Type ?u.2172220
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
inst✝ : DivisionCommMonoid G
k l : ℕ
ζ : M
f : F
h✝ h : IsPrimitiveRoot ζ k
p : ℕ
hp : p ≠ 0
hdiv : p ∣ k
this : orderOf (ζ ^ p) = k / p
⊢ IsPrimitiveRoot (ζ ^ p) (k / p)
Theorem: Pi.exists_forall_pos_add_lt
File: Mathlib/Algebra/Order/Field/Pi.lean

tactic: cases nonempty_fintype ι
state_before: α : Type u_1
ι : Type u_2
inst✝² : LinearOrderedSemifield α
inst✝¹ : ExistsAddOfLE α
inst✝ : Finite ι
x y : ι → α
h : ∀ (i : ι), x i < y i
⊢ ∃ ε, 0 < ε ∧ ∀ (i : ι), x i + ε < y i

tactic: cases isEmpty_or_nonempty ι
state_before: case intro
α : Type u_1
ι : Type u_2
inst✝² : LinearOrderedSemifield α
inst✝¹ : ExistsAddOfLE α
inst✝ : Finite ι
x y : ι → α
h : ∀ (i : ι), x i < y i
val✝ : Fintype ι
⊢ ∃ ε, 0 < ε ∧ ∀ (i : ι), x i + ε < y i

tactic: choose ε hε hxε using fun i => exists_pos_add_of_lt' (h i)
state_before: case intro.inr
α : Type u_1
ι : Type u_2
inst✝² : LinearOrderedSemifield α
inst✝¹ : ExistsAddOfLE α
inst✝ : Finite ι
x y : ι → α
h : ∀ (i : ι), x i < y i
val✝ : Fintype ι
h✝ : Nonempty ι
⊢ ∃ ε, 0 < ε ∧ ∀ (i : ι), x i + ε < y i

tactic: obtain rfl : x + ε = y := funext hxε
state_before: case intro.inr
α : Type u_1
ι : Type u_2
inst✝² : LinearOrderedSemifield α
inst✝¹ : ExistsAddOfLE α
inst✝ : Finite ι
x y : ι → α
h : ∀ (i : ι), x i < y i
val✝ : Fintype ι
h✝ : Nonempty ι
ε : ι → α
hε : ∀ (i : ι), 0 < ε i
hxε : ∀ (i : ι), x i + ε i = y i
⊢ ∃ ε, 0 < ε ∧ ∀ (i : ι), x i + ε < y i

tactic: have hε : 0 < Finset.univ.inf' Finset.univ_nonempty ε := (Finset.lt_inf'_iff _).2 fun i _ => hε _
state_before: case intro.inr
α : Type u_1
ι : Type u_2
inst✝² : LinearOrderedSemifield α
inst✝¹ : ExistsAddOfLE α
inst✝ : Finite ι
x : ι → α
val✝ : Fintype ι
h✝ : Nonempty ι
ε : ι → α
hε : ∀ (i : ι), 0 < ε i
h : ∀ (i : ι), x i < (x + ε) i
hxε : ∀ (i : ι), x i + ε i = (x + ε) i
⊢ ∃ ε_1, 0 < ε_1 ∧ ∀ (i : ι), x i + ε_1 < (x + ε) i

tactic: exact
  ⟨_, half_pos hε, fun i =>
    add_lt_add_left ((half_lt_self hε).trans_le <| Finset.inf'_le _ <| Finset.mem_univ _) _⟩
state_before: case intro.inr
α : Type u_1
ι : Type u_2
inst✝² : LinearOrderedSemifield α
inst✝¹ : ExistsAddOfLE α
inst✝ : Finite ι
x : ι → α
val✝ : Fintype ι
h✝ : Nonempty ι
ε : ι → α
hε✝ : ∀ (i : ι), 0 < ε i
h : ∀ (i : ι), x i < (x + ε) i
hxε : ∀ (i : ι), x i + ε i = (x + ε) i
hε : 0 < Finset.inf' Finset.univ (_ : Finset.Nonempty Finset.univ) ε
⊢ ∃ ε_1, 0 < ε_1 ∧ ∀ (i : ι), x i + ε_1 < (x + ε) i

tactic: exact ⟨1, zero_lt_one, isEmptyElim⟩
state_before: case intro.inl
α : Type u_1
ι : Type u_2
inst✝² : LinearOrderedSemifield α
inst✝¹ : ExistsAddOfLE α
inst✝ : Finite ι
x y : ι → α
h : ∀ (i : ι), x i < y i
val✝ : Fintype ι
h✝ : IsEmpty ι
⊢ ∃ ε, 0 < ε ∧ ∀ (i : ι), x i + ε < y i
Theorem: Finsupp.sum_univ_single
File: Mathlib/Algebra/BigOperators/Finsupp.lean

tactic: classical rw [single, coe_mk, Finset.sum_pi_single']
state_before: α : Type u_2
ι : Type ?u.481609
γ : Type ?u.481612
A : Type ?u.481615
B : Type ?u.481618
C : Type ?u.481621
inst✝⁴ : AddCommMonoid A
inst✝³ : AddCommMonoid B
inst✝² : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f : α → ι →₀ A
i✝ : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type ?u.484751
M : Type u_1
M' : Type ?u.484757
N : Type ?u.484760
P : Type ?u.484763
G : Type ?u.484766
H : Type ?u.484769
R : Type ?u.484772
S : Type ?u.484775
inst✝¹ : AddCommMonoid M
inst✝ : Fintype α
i : α
m : M
⊢ ∑ j : α, ↑(single i m) j = m

tactic: simp
state_before: α : Type u_2
ι : Type ?u.481609
γ : Type ?u.481612
A : Type ?u.481615
B : Type ?u.481618
C : Type ?u.481621
inst✝⁴ : AddCommMonoid A
inst✝³ : AddCommMonoid B
inst✝² : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f : α → ι →₀ A
i✝ : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type ?u.484751
M : Type u_1
M' : Type ?u.484757
N : Type ?u.484760
P : Type ?u.484763
G : Type ?u.484766
H : Type ?u.484769
R : Type ?u.484772
S : Type ?u.484775
inst✝¹ : AddCommMonoid M
inst✝ : Fintype α
i : α
m : M
⊢ (if i ∈ univ then m else 0) = m

tactic: rw [single, coe_mk, Finset.sum_pi_single']
state_before: α : Type u_2
ι : Type ?u.481609
γ : Type ?u.481612
A : Type ?u.481615
B : Type ?u.481618
C : Type ?u.481621
inst✝⁴ : AddCommMonoid A
inst✝³ : AddCommMonoid B
inst✝² : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s : Finset α
f : α → ι →₀ A
i✝ : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type ?u.484751
M : Type u_1
M' : Type ?u.484757
N : Type ?u.484760
P : Type ?u.484763
G : Type ?u.484766
H : Type ?u.484769
R : Type ?u.484772
S : Type ?u.484775
inst✝¹ : AddCommMonoid M
inst✝ : Fintype α
i : α
m : M
⊢ ∑ j : α, ↑(single i m) j = m
Theorem: AlgebraicTopology.DoldKan.Γ₀.Obj.Termwise.mapMono_δ₀'
File: Mathlib/AlgebraicTopology/DoldKan/FunctorGamma.lean

tactic: unfold mapMono
state_before: C : Type u_2
inst✝² : Category C
inst✝¹ : Preadditive C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ Δ' Δ'' : SimplexCategory
i : Δ' ⟶ Δ
inst✝ : Mono i
hi : Isδ₀ i
⊢ mapMono K i = HomologicalComplex.d K (len Δ) (len Δ')

tactic: suffices Δ ≠ Δ' by
  simp only [dif_neg this, dif_pos hi]
state_before: C : Type u_2
inst✝² : Category C
inst✝¹ : Preadditive C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ Δ' Δ'' : SimplexCategory
i : Δ' ⟶ Δ
inst✝ : Mono i
hi : Isδ₀ i
⊢ (if h : Δ = Δ' then eqToHom (_ : HomologicalComplex.X K (len Δ) = HomologicalComplex.X K (len Δ'))
    else if h : Isδ₀ i then HomologicalComplex.d K (len Δ) (len Δ') else 0) =
    HomologicalComplex.d K (len Δ) (len Δ')

tactic: rintro rfl
state_before: C : Type u_2
inst✝² : Category C
inst✝¹ : Preadditive C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ Δ' Δ'' : SimplexCategory
i : Δ' ⟶ Δ
inst✝ : Mono i
hi : Isδ₀ i
⊢ Δ ≠ Δ'

tactic: simpa only [self_eq_add_right, Nat.one_ne_zero] using hi.1
state_before: C : Type u_2
inst✝² : Category C
inst✝¹ : Preadditive C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ Δ'' : SimplexCategory
i : Δ ⟶ Δ
inst✝ : Mono i
hi : Isδ₀ i
⊢ False

tactic: simp only [dif_neg this, dif_pos hi]
state_before: C : Type u_2
inst✝² : Category C
inst✝¹ : Preadditive C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ Δ' Δ'' : SimplexCategory
i : Δ' ⟶ Δ
inst✝ : Mono i
hi : Isδ₀ i
this : Δ ≠ Δ'
⊢ (if h : Δ = Δ' then eqToHom (_ : HomologicalComplex.X K (len Δ) = HomologicalComplex.X K (len Δ'))
    else if h : Isδ₀ i then HomologicalComplex.d K (len Δ) (len Δ') else 0) =
    HomologicalComplex.d K (len Δ) (len Δ')
Theorem: Set.image_update_uIcc_right
File: Mathlib/Data/Set/Intervals/Pi.lean

tactic: simpa using image_update_uIcc f i (f i) b
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → Lattice (α i)
inst✝ : DecidableEq ι
f : (i : ι) → α i
i : ι
b : α i
⊢ update f i '' uIcc (f i) b = uIcc f (update f i b)
Theorem: Subgroup.characteristic_iff_map_le
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: simp_rw [map_equiv_eq_comap_symm]
state_before: G : Type u_1
G' : Type ?u.352996
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.353005
inst✝ : AddGroup A
H K : Subgroup G
⊢ Characteristic H ↔ ∀ (ϕ : G ≃* G), map (MulEquiv.toMonoidHom ϕ) H ≤ H

tactic: exact characteristic_iff_comap_le.trans ⟨fun h ϕ => h ϕ.symm, fun h ϕ => h ϕ.symm⟩
state_before: G : Type u_1
G' : Type ?u.352996
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.353005
inst✝ : AddGroup A
H K : Subgroup G
⊢ Characteristic H ↔ ∀ (ϕ : G ≃* G), comap (MulEquiv.toMonoidHom (MulEquiv.symm ϕ)) H ≤ H
Theorem: BoundedContinuousFunction.norm_lt_iff_of_compact
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: simp_rw [norm_def, ← dist_zero_right]
state_before: F : Type ?u.1008073
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace α
f : α →ᵇ β
M : ℝ
M0 : 0 < M
⊢ ‖f‖ < M ↔ ∀ (x : α), ‖↑f x‖ < M

tactic: exact dist_lt_iff_of_compact M0
state_before: F : Type ?u.1008073
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace α
f : α →ᵇ β
M : ℝ
M0 : 0 < M
⊢ dist f 0 < M ↔ ∀ (x : α), dist (↑f x) 0 < M
Theorem: Filter.tendsto_comp_val_Iio_atBot
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: rw [← map_val_Iio_atBot a, tendsto_map'_iff]
state_before: ι : Type ?u.340608
ι' : Type ?u.340611
α : Type u_1
β : Type u_2
γ : Type ?u.340620
inst✝¹ : SemilatticeInf α
inst✝ : NoMinOrder α
a : α
f : α → β
l : Filter β
⊢ Tendsto (fun x => f ↑x) atBot l ↔ Tendsto f atBot l

tactic: rfl
state_before: ι : Type ?u.340608
ι' : Type ?u.340611
α : Type u_1
β : Type u_2
γ : Type ?u.340620
inst✝¹ : SemilatticeInf α
inst✝ : NoMinOrder α
a : α
f : α → β
l : Filter β
⊢ Tendsto (fun x => f ↑x) atBot l ↔ Tendsto (f ∘ Subtype.val) atBot l
Theorem: DenseInducing.closure_image_mem_nhds
File: Mathlib/Topology/DenseEmbedding.lean

tactic: rw [di.nhds_eq_comap a, ((nhds_basis_opens _).comap _).mem_iff] at hs
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.1224
δ : Type ?u.1227
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
i : α → β
di✝ : DenseInducing i
s : Set α
a : α
di : DenseInducing i
hs : s ∈ 𝓝 a
⊢ closure (i '' s) ∈ 𝓝 (i a)

tactic: rcases hs with ⟨U, ⟨haU, hUo⟩, sub : i ⁻¹' U ⊆ s⟩
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.1224
δ : Type ?u.1227
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
i : α → β
di✝ : DenseInducing i
s : Set α
a : α
di : DenseInducing i
hs : ∃ i_1, (i a ∈ i_1 ∧ IsOpen i_1) ∧ i ⁻¹' i_1 ⊆ s
⊢ closure (i '' s) ∈ 𝓝 (i a)

tactic: refine' mem_of_superset (hUo.mem_nhds haU) _
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type ?u.1224
δ : Type ?u.1227
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
i : α → β
di✝ : DenseInducing i
s : Set α
a : α
di : DenseInducing i
U : Set β
sub : i ⁻¹' U ⊆ s
haU : i a ∈ U
hUo : IsOpen U
⊢ closure (i '' s) ∈ 𝓝 (i a)

tactic: calc
  U ⊆ closure (i '' (i ⁻¹' U)) := di.dense.subset_closure_image_preimage_of_isOpen hUo
  _ ⊆ closure (i '' s) := closure_mono (image_subset i sub)
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type ?u.1224
δ : Type ?u.1227
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
i : α → β
di✝ : DenseInducing i
s : Set α
a : α
di : DenseInducing i
U : Set β
sub : i ⁻¹' U ⊆ s
haU : i a ∈ U
hUo : IsOpen U
⊢ U ⊆ closure (i '' s)
Theorem: TopologicalGroup.t2Space
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: haveI := TopologicalGroup.t3Space G
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : T0Space G
⊢ T2Space G

tactic: infer_instance
state_before: α : Type u
β : Type v
G : Type w
H : Type x
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : T0Space G
this : T3Space G
⊢ T2Space G