tasksource/leandojo huggingface dataset:
Theorem: WithTop.mul_eq_top_iff
File: Mathlib/Algebra/Order/Ring/WithTop.lean

tactic: rw [mul_def, ite_eq_iff, ← none_eq_top, Option.map₂_eq_none_iff]
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Zero α
inst✝ : Mul α
a b : WithTop α
⊢ a * b = ⊤ ↔ a ≠ 0 ∧ b = ⊤ ∨ a = ⊤ ∧ b ≠ 0

tactic: have ha : a = 0 → a ≠ none := fun h => h.symm ▸ zero_ne_top
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Zero α
inst✝ : Mul α
a b : WithTop α
⊢ (a = 0 ∨ b = 0) ∧ 0 = none ∨ ¬(a = 0 ∨ b = 0) ∧ (a = none ∨ b = none) ↔ a ≠ 0 ∧ b = none ∨ a = none ∧ b ≠ 0

tactic: have hb : b = 0 → b ≠ none := fun h => h.symm ▸ zero_ne_top
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Zero α
inst✝ : Mul α
a b : WithTop α
ha : a = 0 → a ≠ none
⊢ (a = 0 ∨ b = 0) ∧ 0 = none ∨ ¬(a = 0 ∨ b = 0) ∧ (a = none ∨ b = none) ↔ a ≠ 0 ∧ b = none ∨ a = none ∧ b ≠ 0

tactic: tauto
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Zero α
inst✝ : Mul α
a b : WithTop α
ha : a = 0 → a ≠ none
hb : b = 0 → b ≠ none
⊢ (a = 0 ∨ b = 0) ∧ 0 = none ∨ ¬(a = 0 ∨ b = 0) ∧ (a = none ∨ b = none) ↔ a ≠ 0 ∧ b = none ∨ a = none ∧ b ≠ 0
Theorem: DirectSum.IsInternal.submodule_iSup_eq_top
File: Mathlib/Algebra/DirectSum/Module.lean

tactic: rw [Submodule.iSup_eq_range_dfinsupp_lsum, LinearMap.range_eq_top]
state_before: R : Type u
inst✝² : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : Type u_1
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
A : ι → Submodule R M
h : IsInternal A
⊢ iSup A = ⊤

tactic: exact Function.Bijective.surjective h
state_before: R : Type u
inst✝² : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : Type u_1
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
A : ι → Submodule R M
h : IsInternal A
⊢ Function.Surjective ↑(↑(Dfinsupp.lsum ℕ) fun i => Submodule.subtype (A i))
Theorem: Asymptotics.IsBigOWith.add
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: rw [IsBigOWith_def] at *
state_before: α : Type u_1
β : Type ?u.196977
E : Type ?u.196980
F : Type u_3
G : Type ?u.196986
E' : Type u_2
F' : Type ?u.196992
G' : Type ?u.196995
E'' : Type ?u.196998
F'' : Type ?u.197001
G'' : Type ?u.197004
R : Type ?u.197007
R' : Type ?u.197010
𝕜 : Type ?u.197013
𝕜' : Type ?u.197016
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f₁ f₂ : α → E'
g₁ g₂ : α → F'
h₁ : IsBigOWith c₁ l f₁ g
h₂ : IsBigOWith c₂ l f₂ g
⊢ IsBigOWith (c₁ + c₂) l (fun x => f₁ x + f₂ x) g

tactic: filter_upwards [h₁,
  h₂]with x hx₁ hx₂ using calc
    ‖f₁ x + f₂ x‖ ≤ c₁ * ‖g x‖ + c₂ * ‖g x‖ := norm_add_le_of_le hx₁ hx₂
    _ = (c₁ + c₂) * ‖g x‖ := (add_mul _ _ _).symm
state_before: α : Type u_1
β : Type ?u.196977
E : Type ?u.196980
F : Type u_3
G : Type ?u.196986
E' : Type u_2
F' : Type ?u.196992
G' : Type ?u.196995
E'' : Type ?u.196998
F'' : Type ?u.197001
G'' : Type ?u.197004
R : Type ?u.197007
R' : Type ?u.197010
𝕜 : Type ?u.197013
𝕜' : Type ?u.197016
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f₁ f₂ : α → E'
g₁ g₂ : α → F'
h₁ : ∀ᶠ (x : α) in l, ‖f₁ x‖ ≤ c₁ * ‖g x‖
h₂ : ∀ᶠ (x : α) in l, ‖f₂ x‖ ≤ c₂ * ‖g x‖
⊢ ∀ᶠ (x : α) in l, ‖f₁ x + f₂ x‖ ≤ (c₁ + c₂) * ‖g x‖
Theorem: FirstOrder.Language.Substructure.FG.map
File: Mathlib/ModelTheory/FinitelyGenerated.lean

tactic: rw [closure_image, ht.2]
state_before: L : Language
M : Type u_4
inst✝¹ : Structure L M
N : Type u_1
inst✝ : Structure L N
f : M →[L] N
s : Substructure L M
hs : FG s
t : Set M
ht : Set.Finite t ∧ LowerAdjoint.toFun (closure L) t = s
⊢ LowerAdjoint.toFun (closure L) (↑f '' t) = Substructure.map f s
Theorem: Stream'.WSeq.get?_ofSeq
File: Mathlib/Data/Seq/WSeq.lean

tactic: dsimp [get?]
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
n : ℕ
⊢ get? (↑s) n = Computation.pure (Seq.get? s n)

tactic: rw [dropn_ofSeq, head_ofSeq, Seq.head_dropn]
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
n : ℕ
⊢ head (drop (↑s) n) = Computation.pure (Seq.get? s n)
Theorem: isCoprime_group_smul_left
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: rwa [smul_mul_assoc, ← mul_smul_comm]
state_before: R : Type u_1
G : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : Group G
inst✝² : MulAction G R
inst✝¹ : SMulCommClass G R R
inst✝ : IsScalarTower G R R
x : G
y z : R
x✝ : IsCoprime (x • y) z
a b : R
h : a * x • y + b * z = 1
⊢ x • a * y + b * z = 1

tactic: rwa [smul_mul_smul, inv_mul_self, one_smul]
state_before: R : Type u_1
G : Type u_2
inst✝⁴ : CommSemiring R
inst✝³ : Group G
inst✝² : MulAction G R
inst✝¹ : SMulCommClass G R R
inst✝ : IsScalarTower G R R
x : G
y z : R
x✝ : IsCoprime y z
a b : R
h : a * y + b * z = 1
⊢ x⁻¹ • a * x • y + b * z = 1
Theorem: Matrix.dotProduct_assoc
File: Mathlib/Data/Matrix/Basic.lean

tactic: simpa [dotProduct, Finset.mul_sum, Finset.sum_mul, mul_assoc] using Finset.sum_comm
state_before: l : Type ?u.108126
m : Type u_1
n : Type u_2
o : Type ?u.108135
m' : o → Type ?u.108140
n' : o → Type ?u.108145
R : Type ?u.108148
S : Type ?u.108151
α : Type v
β : Type w
γ : Type ?u.108158
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : NonUnitalSemiring α
u : m → α
w : n → α
v : Matrix m n α
⊢ (fun j => u ⬝ᵥ fun i => v i j) ⬝ᵥ w = u ⬝ᵥ fun i => v i ⬝ᵥ w
Theorem: WellOrder.eta
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: cases o
state_before: α : Type ?u.19042
β : Type ?u.19045
γ : Type ?u.19048
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : WellOrder
⊢ { α := o.α, r := o.r, wo := (_ : IsWellOrder o.α o.r) } = o

tactic: rfl
state_before: case mk
α : Type ?u.19042
β : Type ?u.19045
γ : Type ?u.19048
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
α✝ : Type u_1
r✝ : α✝ → α✝ → Prop
wo✝ : IsWellOrder α✝ r✝
⊢ { α := { α := α✝, r := r✝, wo := wo✝ }.α, r := { α := α✝, r := r✝, wo := wo✝ }.r,
      wo := (_ : IsWellOrder { α := α✝, r := r✝, wo := wo✝ }.α { α := α✝, r := r✝, wo := wo✝ }.r) } =
    { α := α✝, r := r✝, wo := wo✝ }
Theorem: Primrec.option_map
File: Mathlib/Computability/Primrec.lean

tactic: cases f x <;> rfl
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.114704
δ : Type ?u.114707
σ : Type u_3
inst✝⁴ : Primcodable α
inst✝³ : Primcodable β
inst✝² : Primcodable γ
inst✝¹ : Primcodable δ
inst✝ : Primcodable σ
f : α → Option β
g : α → β → σ
hf : Primrec f
hg : Primrec₂ g
x : α
⊢ (Option.bind (f x) fun b => some (g x b)) = Option.map (g x) (f x)
Theorem: Polynomial.sum_monomial_index
File: Mathlib/Data/Polynomial/Basic.lean

tactic: by_cases h : a = 0
state_before: R : Type u
a✝ b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p q : R[X]
S : Type u_1
inst✝ : AddCommMonoid S
n : ℕ
a : R
f : ℕ → R → S
hf : f n 0 = 0
⊢ sum (↑(monomial n) a) f = f n a

tactic: simp [h, hf]
state_before: case pos
R : Type u
a✝ b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p q : R[X]
S : Type u_1
inst✝ : AddCommMonoid S
n : ℕ
a : R
f : ℕ → R → S
hf : f n 0 = 0
h : a = 0
⊢ sum (↑(monomial n) a) f = f n a

tactic: simp [sum, support_monomial, h, coeff_monomial]
state_before: case neg
R : Type u
a✝ b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p q : R[X]
S : Type u_1
inst✝ : AddCommMonoid S
n : ℕ
a : R
f : ℕ → R → S
hf : f n 0 = 0
h : ¬a = 0
⊢ sum (↑(monomial n) a) f = f n a
Theorem: BoundedContinuousFunction.exists_extension_norm_eq_of_closedEmbedding
File: Mathlib/Topology/TietzeExtension.lean

tactic: rcases exists_extension_norm_eq_of_closedEmbedding' f ⟨e, he.continuous⟩ he with ⟨g, hg, rfl⟩
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : NormalSpace Y
f : X →ᵇ ℝ
e : X → Y
he : ClosedEmbedding e
⊢ ∃ g, ‖g‖ = ‖f‖ ∧ ↑g ∘ e = ↑f

tactic: exact ⟨g, hg, rfl⟩
state_before: case intro.intro
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : NormalSpace Y
e : X → Y
he : ClosedEmbedding e
g : Y →ᵇ ℝ
hg : ‖g‖ = ‖compContinuous g (ContinuousMap.mk e)‖
⊢ ∃ g_1, ‖g_1‖ = ‖compContinuous g (ContinuousMap.mk e)‖ ∧ ↑g_1 ∘ e = ↑(compContinuous g (ContinuousMap.mk e))
Theorem: Ordinal.ne_mex
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simpa using mex_not_mem_range.{_, v} f
state_before: α : Type ?u.373790
β : Type ?u.373793
γ : Type ?u.373796
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
⊢ ∀ (i : ι), f i ≠ mex f
Theorem: seqLeft_eq_bind
File: src/lean/Init/Control/Lawful.lean

tactic: rw [seqLeft_eq]
state_before: m : Type u_1 → Type u_2
α β : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
x : m α
y : m β
⊢ (SeqLeft.seqLeft x fun x => y) = do
    let a ← x
    let _ ← y
    pure a

tactic: simp [map_eq_pure_bind, seq_eq_bind_map]
state_before: m : Type u_1 → Type u_2
α β : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
x : m α
y : m β
⊢ (Seq.seq (const β <$> x) fun x => y) = do
    let a ← x
    let _ ← y
    pure a
Theorem: AddCommGroupCat.asHom_injective
File: Mathlib/Algebra/Category/GroupCat/Basic.lean

tactic: convert congr_arg (fun k : AddCommGroupCat.of ℤ ⟶ G => (k : ℤ → G) (1 : ℤ)) w <;> simp
state_before: G : AddCommGroupCat
h k : ↑G
w : asHom h = asHom k
⊢ h = k
Theorem: List.forall₂_reverse_iff
File: Mathlib/Data/List/Forall2.lean

tactic: rw [← reverse_reverse l₁, ← reverse_reverse l₂]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.142594
δ : Type ?u.142597
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
l₁ : List α
l₂ : List β
h : Forall₂ R (reverse l₁) (reverse l₂)
⊢ Forall₂ R l₁ l₂

tactic: exact rel_reverse h
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.142594
δ : Type ?u.142597
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
l₁ : List α
l₂ : List β
h : Forall₂ R (reverse l₁) (reverse l₂)
⊢ Forall₂ R (reverse (reverse l₁)) (reverse (reverse l₂))
Theorem: Rat.divInt_div_divInt_cancel_left
File: Mathlib/Data/Rat/Defs.lean

tactic: rw [div_eq_mul_inv, inv_def', divInt_mul_divInt_cancel hx]
state_before: a b c : ℚ
x : ℤ
hx : x ≠ 0
n d : ℤ
⊢ n /. x / (d /. x) = n /. d
Theorem: Std.RBNode.forIn_eq_forIn_toList
File: Std/Data/RBMap/Lemmas.lean

tactic: simp [forIn, RBNode.forIn]
state_before: m : Type u_1 → Type u_2
α : Type u_3
α✝ : Type u_1
init : α✝
f : α → α✝ → m (ForInStep α✝)
inst✝¹ : Monad m
inst✝ : LawfulMonad m
t : RBNode α
⊢ forIn t init f = forIn (toList t) init f

tactic: rw [List.forIn_eq_bindList, forIn_visit_eq_bindList]
state_before: m : Type u_1 → Type u_2
α : Type u_3
α✝ : Type u_1
init : α✝
f : α → α✝ → m (ForInStep α✝)
inst✝¹ : Monad m
inst✝ : LawfulMonad m
t : RBNode α
⊢ ForInStep.run <$> forIn.visit f t init = forIn (toList t) init f
Theorem: Metric.uniformity_basis_dist
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: rw [toUniformSpace_eq]
state_before: α : Type u
β : Type v
X : Type ?u.49037
ι : Type ?u.49040
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
⊢ HasBasis (𝓤 α) (fun ε => 0 < ε) fun ε => {p | dist p.fst p.snd < ε}

tactic: exact UniformSpace.hasBasis_ofFun (exists_gt _) _ _ _ _ _
state_before: α : Type u
β : Type v
X : Type ?u.49037
ι : Type ?u.49040
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
⊢ HasBasis (𝓤 α) (fun ε => 0 < ε) fun ε => {p | dist p.fst p.snd < ε}
Theorem: Set.fiber_ncard_ne_zero_iff_mem_image
File: Mathlib/Data/Set/Ncard.lean

tactic: refine' ⟨nonempty_of_ncard_ne_zero, _⟩
state_before: α : Type u_1
β : Type u_2
s t : Set α
a b x y✝ : α
f : α → β
y : β
hs : autoParam (Set.Finite s) _auto✝
⊢ ncard {x | x ∈ s ∧ f x = y} ≠ 0 ↔ y ∈ f '' s

tactic: rintro ⟨z, hz, rfl⟩
state_before: α : Type u_1
β : Type u_2
s t : Set α
a b x y✝ : α
f : α → β
y : β
hs : autoParam (Set.Finite s) _auto✝
⊢ y ∈ f '' s → ncard {x | x ∈ s ∧ f x = y} ≠ 0

tactic: exact @ncard_ne_zero_of_mem _ ({ x ∈ s | f x = f z }) z (mem_sep hz rfl)
  (hs.subset (sep_subset _ _))
state_before: case intro.intro
α : Type u_1
β : Type u_2
s t : Set α
a b x y : α
f : α → β
hs : autoParam (Set.Finite s) _auto✝
z : α
hz : z ∈ s
⊢ ncard {x | x ∈ s ∧ f x = f z} ≠ 0
Theorem: MeasureTheory.Measure.restrict_add_restrict_compl
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: rw [← restrict_union (@disjoint_compl_right (Set α) _ _) hs.compl, union_compl_self,
  restrict_univ]
state_before: α : Type u_1
β : Type ?u.298586
γ : Type ?u.298589
δ : Type ?u.298592
ι : Type ?u.298595
R : Type ?u.298598
R' : Type ?u.298601
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
hs : MeasurableSet s
⊢ restrict μ s + restrict μ (sᶜ) = μ
Theorem: bind₁_xInTermsOfW_wittPolynomial
File: Mathlib/RingTheory/WittVector/WittPolynomial.lean

tactic: rw [wittPolynomial_eq_sum_c_mul_x_pow, AlgHom.map_sum]
state_before: p : ℕ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : DecidableEq R
inst✝ : Invertible ↑p
k : ℕ
⊢ ↑(bind₁ (xInTermsOfW p R)) (W_ R k) = X k

tactic: simp only [Nat.cast_pow, AlgHom.map_pow, C_pow, AlgHom.map_mul, algHom_C]
state_before: p : ℕ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : DecidableEq R
inst✝ : Invertible ↑p
k : ℕ
⊢ ∑ x in range (k + 1), ↑(bind₁ (xInTermsOfW p R)) (↑C (↑p ^ x) * X x ^ p ^ (k - x)) = X k

tactic: rw [sum_range_succ_comm, tsub_self, pow_zero, pow_one, bind₁_X_right, mul_comm, ← C_pow,
  xInTermsOfW_aux]
state_before: p : ℕ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : DecidableEq R
inst✝ : Invertible ↑p
k : ℕ
⊢ ∑ x in range (k + 1), ↑C ↑p ^ x * ↑(bind₁ (xInTermsOfW p R)) (X x) ^ p ^ (k - x) = X k

tactic: simp only [Nat.cast_pow, C_pow, bind₁_X_right, sub_add_cancel]
state_before: p : ℕ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : DecidableEq R
inst✝ : Invertible ↑p
k : ℕ
⊢ X k - ∑ i in range k, ↑C (↑p ^ i) * xInTermsOfW p R i ^ p ^ (k - i) +
      ∑ x in range k, ↑C ↑p ^ x * ↑(bind₁ (xInTermsOfW p R)) (X x) ^ p ^ (k - x) =
    X k
Theorem: AList.union_empty
File: Mathlib/Data/List/AList.lean

tactic: simp
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s : AList β
⊢ (s ∪ ∅).entries = s.entries
Theorem: Matrix.zpow_bit1
File: Mathlib/LinearAlgebra/Matrix/ZPow.lean

tactic: rw [bit1, zpow_add_one_of_ne_neg_one, zpow_bit0]
state_before: n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
n : ℤ
⊢ A ^ bit1 n = A ^ n * A ^ n * A

tactic: intro h
state_before: case a
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
n : ℤ
⊢ bit0 n ≠ -1

tactic: simpa using congr_arg bodd h
state_before: case a
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
n : ℤ
h : bit0 n = -1
⊢ False
Theorem: Valuation.map_sum_lt
File: Mathlib/RingTheory/Valuation/Basic.lean

tactic: refine'
  Finset.induction_on s (fun _ => v.map_zero ▸ (zero_lt_iff.2 hg))
    (fun a s has ih hf => _) hf
state_before: K : Type ?u.668108
F : Type ?u.668111
R : Type u_3
inst✝⁴ : DivisionRing K
Γ₀ : Type u_2
Γ'₀ : Type ?u.668123
Γ''₀ : Type ?u.668126
inst✝³ : LinearOrderedCommMonoidWithZero Γ''₀
inst✝² : Ring R
inst✝¹ : LinearOrderedCommMonoidWithZero Γ₀
inst✝ : LinearOrderedCommMonoidWithZero Γ'₀
v : Valuation R Γ₀
x y z : R
ι : Type u_1
s : Finset ι
f : ι → R
g : Γ₀
hg : g ≠ 0
hf : ∀ (i : ι), i ∈ s → ↑v (f i) < g
⊢ ↑v (∑ i in s, f i) < g

tactic: rw [Finset.forall_mem_insert] at hf
state_before: K : Type ?u.668108
F : Type ?u.668111
R : Type u_3
inst✝⁴ : DivisionRing K
Γ₀ : Type u_2
Γ'₀ : Type ?u.668123
Γ''₀ : Type ?u.668126
inst✝³ : LinearOrderedCommMonoidWithZero Γ''₀
inst✝² : Ring R
inst✝¹ : LinearOrderedCommMonoidWithZero Γ₀
inst✝ : LinearOrderedCommMonoidWithZero Γ'₀
v : Valuation R Γ₀
x y z : R
ι : Type u_1
s✝ : Finset ι
f : ι → R
g : Γ₀
hg : g ≠ 0
hf✝ : ∀ (i : ι), i ∈ s✝ → ↑v (f i) < g
a : ι
s : Finset ι
has : ¬a ∈ s
ih : (∀ (i : ι), i ∈ s → ↑v (f i) < g) → ↑v (∑ i in s, f i) < g
hf : ∀ (i : ι), i ∈ insert a s → ↑v (f i) < g
⊢ ↑v (∑ i in insert a s, f i) < g

tactic: rw [Finset.sum_insert has]
state_before: K : Type ?u.668108
F : Type ?u.668111
R : Type u_3
inst✝⁴ : DivisionRing K
Γ₀ : Type u_2
Γ'₀ : Type ?u.668123
Γ''₀ : Type ?u.668126
inst✝³ : LinearOrderedCommMonoidWithZero Γ''₀
inst✝² : Ring R
inst✝¹ : LinearOrderedCommMonoidWithZero Γ₀
inst✝ : LinearOrderedCommMonoidWithZero Γ'₀
v : Valuation R Γ₀
x y z : R
ι : Type u_1
s✝ : Finset ι
f : ι → R
g : Γ₀
hg : g ≠ 0
hf✝ : ∀ (i : ι), i ∈ s✝ → ↑v (f i) < g
a : ι
s : Finset ι
has : ¬a ∈ s
ih : (∀ (i : ι), i ∈ s → ↑v (f i) < g) → ↑v (∑ i in s, f i) < g
hf : ↑v (f a) < g ∧ ∀ (x : ι), x ∈ s → ↑v (f x) < g
⊢ ↑v (∑ i in insert a s, f i) < g

tactic: exact v.map_add_lt hf.1 (ih hf.2)
state_before: K : Type ?u.668108
F : Type ?u.668111
R : Type u_3
inst✝⁴ : DivisionRing K
Γ₀ : Type u_2
Γ'₀ : Type ?u.668123
Γ''₀ : Type ?u.668126
inst✝³ : LinearOrderedCommMonoidWithZero Γ''₀
inst✝² : Ring R
inst✝¹ : LinearOrderedCommMonoidWithZero Γ₀
inst✝ : LinearOrderedCommMonoidWithZero Γ'₀
v : Valuation R Γ₀
x y z : R
ι : Type u_1
s✝ : Finset ι
f : ι → R
g : Γ₀
hg : g ≠ 0
hf✝ : ∀ (i : ι), i ∈ s✝ → ↑v (f i) < g
a : ι
s : Finset ι
has : ¬a ∈ s
ih : (∀ (i : ι), i ∈ s → ↑v (f i) < g) → ↑v (∑ i in s, f i) < g
hf : ↑v (f a) < g ∧ ∀ (x : ι), x ∈ s → ↑v (f x) < g
⊢ ↑v (f a + ∑ x in s, f x) < g
Theorem: upperCentralSeries.map
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: induction' n with d hd
state_before: G : Type u_2
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : Normal H✝
H : Type u_1
inst✝ : Group H
f : G →* H
h : Function.Surjective ↑f
n : ℕ
⊢ Subgroup.map f (upperCentralSeries G n) ≤ upperCentralSeries H n

tactic: simp
state_before: case zero
G : Type u_2
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : Normal H✝
H : Type u_1
inst✝ : Group H
f : G →* H
h : Function.Surjective ↑f
⊢ Subgroup.map f (upperCentralSeries G Nat.zero) ≤ upperCentralSeries H Nat.zero

tactic: rintro _ ⟨x, hx : x ∈ upperCentralSeries G d.succ, rfl⟩ y'
state_before: case succ
G : Type u_2
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : Normal H✝
H : Type u_1
inst✝ : Group H
f : G →* H
h : Function.Surjective ↑f
d : ℕ
hd : Subgroup.map f (upperCentralSeries G d) ≤ upperCentralSeries H d
⊢ Subgroup.map f (upperCentralSeries G (Nat.succ d)) ≤ upperCentralSeries H (Nat.succ d)

tactic: rcases h y' with ⟨y, rfl⟩
state_before: case succ.intro.intro
G : Type u_2
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : Normal H✝
H : Type u_1
inst✝ : Group H
f : G →* H
h : Function.Surjective ↑f
d : ℕ
hd : Subgroup.map f (upperCentralSeries G d) ≤ upperCentralSeries H d
x : G
hx : x ∈ upperCentralSeries G (Nat.succ d)
y' : H
⊢ ↑f x * y' * (↑f x)⁻¹ * y'⁻¹ ∈ (upperCentralSeriesAux H d).fst

tactic: simpa using hd (mem_map_of_mem f (hx y))
state_before: case succ.intro.intro.intro
G : Type u_2
inst✝² : Group G
H✝ : Subgroup G
inst✝¹ : Normal H✝
H : Type u_1
inst✝ : Group H
f : G →* H
h : Function.Surjective ↑f
d : ℕ
hd : Subgroup.map f (upperCentralSeries G d) ≤ upperCentralSeries H d
x : G
hx : x ∈ upperCentralSeries G (Nat.succ d)
y : G
⊢ ↑f x * ↑f y * (↑f x)⁻¹ * (↑f y)⁻¹ ∈ (upperCentralSeriesAux H d).fst
Theorem: DirectSum.fromAddMonoid_of_apply
File: Mathlib/Algebra/DirectSum/Basic.lean

tactic: rw [fromAddMonoid_of, AddMonoidHom.coe_comp, Function.comp]
state_before: ι : Type v
dec_ι : DecidableEq ι
β : ι → Type w
inst✝¹ : (i : ι) → AddCommMonoid (β i)
γ : Type u₁
inst✝ : AddCommMonoid γ
i : ι
f : γ →+ β i
x : γ
⊢ ↑(↑fromAddMonoid (↑(of (fun i => γ →+ β i) i) f)) x = ↑(of β i) (↑f x)
Theorem: MeasureTheory.Measure.pi'_pi
File: Mathlib/MeasureTheory/Constructions/Pi.lean

tactic: rw [pi']
state_before: ι : Type u_2
ι' : Type ?u.2392482
α : ι → Type u_1
inst✝³ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝² : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
inst✝¹ : Encodable ι
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
s : (i : ι) → Set (α i)
⊢ ↑↑(pi' μ) (Set.pi univ s) = ∏ i : ι, ↑↑(μ i) (s i)

tactic: simp only [TProd.elim']
state_before: ι : Type u_2
ι' : Type ?u.2392482
α : ι → Type u_1
inst✝³ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝² : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
inst✝¹ : Encodable ι
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
s : (i : ι) → Set (α i)
⊢ ↑↑(map (TProd.elim' (_ : ∀ (x : ι), x ∈ sortedUniv ι)) (Measure.tprod (sortedUniv ι) μ)) (Set.pi univ s) =
    ∏ i : ι, ↑↑(μ i) (s i)

tactic: erw [← MeasurableEquiv.piMeasurableEquivTProd_symm_apply, MeasurableEquiv.map_apply,
  MeasurableEquiv.piMeasurableEquivTProd_symm_apply, elim_preimage_pi, tprod_tprod _ μ, ←
  List.prod_toFinset, sortedUniv_toFinset] <;>
exact sortedUniv_nodup ι
state_before: ι : Type u_2
ι' : Type ?u.2392482
α : ι → Type u_1
inst✝³ : Fintype ι
m : (i : ι) → OuterMeasure (α i)
inst✝² : (i : ι) → MeasurableSpace (α i)
μ : (i : ι) → Measure (α i)
inst✝¹ : Encodable ι
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
s : (i : ι) → Set (α i)
⊢ ↑↑(map (fun v i => TProd.elim v (_ : i ∈ sortedUniv ι)) (Measure.tprod (sortedUniv ι) μ)) (Set.pi univ s) =
    ∏ i : ι, ↑↑(μ i) (s i)
Theorem: FractionalIdeal.le_self_mul_self
File: Mathlib/RingTheory/FractionalIdeal.lean

tactic: convert mul_left_mono I hI
state_before: R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I : FractionalIdeal S P
hI : 1 ≤ I
⊢ I ≤ I * I

tactic: exact (mul_one I).symm
state_before: case h.e'_3
R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I : FractionalIdeal S P
hI : 1 ≤ I
⊢ I = (fun x x_1 => x * x_1) I 1
Theorem: CategoryTheory.CostructuredArrow.w
File: Mathlib/CategoryTheory/StructuredArrow.lean

tactic: simp
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
T T' T'' : D
Y Y' : C
S : C ⥤ D
A B : CostructuredArrow S T
f : A ⟶ B
⊢ S.map f.left ≫ B.hom = A.hom
Theorem: Nat.coprime.gcd_mul_right_cancel
File: Std/Data/Nat/Gcd.lean

tactic: rw [Nat.mul_comm m k, H.gcd_mul_left_cancel m]
state_before: k n m : Nat
H : coprime k n
⊢ gcd (m * k) n = gcd m n
Theorem: PrimeSpectrum.range_comap_of_surjective
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [← Set.image_univ]
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.388826
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
⊢ Set.range ↑(comap f) = zeroLocus ↑(ker f)

tactic: convert image_comap_zeroLocus_eq_zeroLocus_comap _ _ hf _
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.388826
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
⊢ ↑(comap f) '' Set.univ = zeroLocus ↑(ker f)

tactic: rw [zeroLocus_bot]
state_before: case h.e'_2.h.e'_4
R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
S' : Type ?u.388826
inst✝ : CommRing S'
f : R →+* S
hf : Surjective ↑f
⊢ Set.univ = zeroLocus ↑⊥
Theorem: LocalEquiv.forall_mem_target
File: Mathlib/Logic/Equiv/LocalEquiv.lean

tactic: rw [← image_source_eq_target, ball_image_iff]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.25263
δ : Type ?u.25266
e : LocalEquiv α β
e' : LocalEquiv β γ
p : β → Prop
⊢ (∀ (y : β), y ∈ e.target → p y) ↔ ∀ (x : α), x ∈ e.source → p (↑e x)
Theorem: PFun.lift_graph
File: Mathlib/Data/PFun.lean

tactic: simp
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.15079
δ : Type ?u.15082
ε : Type ?u.15085
ι : Type ?u.15088
f : α → β
a : α
b : β
⊢ (∃ x, f a = b) ↔ f a = b
Theorem: dist_smul₀
File: Mathlib/Analysis/Normed/MulAction.lean

tactic: simp_rw [dist_eq_norm, (norm_smul s (x - y)).symm, smul_sub]
state_before: α : Type u_2
β : Type u_1
inst✝³ : NormedDivisionRing α
inst✝² : SeminormedAddCommGroup β
inst✝¹ : Module α β
inst✝ : BoundedSMul α β
s : α
x y : β
⊢ dist (s • x) (s • y) = ‖s‖ * dist x y