tasksource/leandojo huggingface dataset:
Theorem: FiniteDimensional.proper_isROrC
File: Mathlib/Data/IsROrC/Lemmas.lean

tactic: letI : NormedSpace ℝ E := RestrictScalars.normedSpace ℝ K E
state_before: K : Type u_1
E : Type u_2
inst✝³ : IsROrC K
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace K E
inst✝ : FiniteDimensional K E
⊢ ProperSpace E

tactic: letI : FiniteDimensional ℝ E := FiniteDimensional.trans ℝ K E
state_before: K : Type u_1
E : Type u_2
inst✝³ : IsROrC K
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace K E
inst✝ : FiniteDimensional K E
this : NormedSpace ℝ E := RestrictScalars.normedSpace ℝ K E
⊢ ProperSpace E

tactic: infer_instance
state_before: K : Type u_1
E : Type u_2
inst✝³ : IsROrC K
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace K E
inst✝ : FiniteDimensional K E
this✝ : NormedSpace ℝ E := RestrictScalars.normedSpace ℝ K E
this : FiniteDimensional ℝ E := trans ℝ K E
⊢ ProperSpace E
Theorem: Finset.exists_eq_pow_of_mul_eq_pow_of_coprime
File: Mathlib/RingTheory/IntegralDomain.lean

tactic: classical
  intro i hi
  rw [← insert_erase hi, prod_insert (not_mem_erase i s)] at hprod
  refine'
    exists_eq_pow_of_mul_eq_pow_of_coprime
      (IsCoprime.prod_right fun j hj => h i hi j (erase_subset i s hj) fun hij => _) hprod
  rw [hij] at hj
  exact (s.not_mem_erase _) hj
state_before: M : Type ?u.20156
inst✝⁵ : CancelMonoidWithZero M
inst✝⁴ : Finite M
ι : Type u_1
R : Type u_2
inst✝³ : CommSemiring R
inst✝² : IsDomain R
inst✝¹ : GCDMonoid R
inst✝ : Unique Rˣ
n : ℕ
c : R
s : Finset ι
f : ι → R
h : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → IsCoprime (f i) (f j)
hprod : ∏ i in s, f i = c ^ n
⊢ ∀ (i : ι), i ∈ s → ∃ d, f i = d ^ n

tactic: intro i hi
state_before: M : Type ?u.20156
inst✝⁵ : CancelMonoidWithZero M
inst✝⁴ : Finite M
ι : Type u_1
R : Type u_2
inst✝³ : CommSemiring R
inst✝² : IsDomain R
inst✝¹ : GCDMonoid R
inst✝ : Unique Rˣ
n : ℕ
c : R
s : Finset ι
f : ι → R
h : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → IsCoprime (f i) (f j)
hprod : ∏ i in s, f i = c ^ n
⊢ ∀ (i : ι), i ∈ s → ∃ d, f i = d ^ n

tactic: rw [← insert_erase hi, prod_insert (not_mem_erase i s)] at hprod
state_before: M : Type ?u.20156
inst✝⁵ : CancelMonoidWithZero M
inst✝⁴ : Finite M
ι : Type u_1
R : Type u_2
inst✝³ : CommSemiring R
inst✝² : IsDomain R
inst✝¹ : GCDMonoid R
inst✝ : Unique Rˣ
n : ℕ
c : R
s : Finset ι
f : ι → R
h : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → IsCoprime (f i) (f j)
hprod : ∏ i in s, f i = c ^ n
i : ι
hi : i ∈ s
⊢ ∃ d, f i = d ^ n

tactic: refine'
  exists_eq_pow_of_mul_eq_pow_of_coprime
    (IsCoprime.prod_right fun j hj => h i hi j (erase_subset i s hj) fun hij => _) hprod
state_before: M : Type ?u.20156
inst✝⁵ : CancelMonoidWithZero M
inst✝⁴ : Finite M
ι : Type u_1
R : Type u_2
inst✝³ : CommSemiring R
inst✝² : IsDomain R
inst✝¹ : GCDMonoid R
inst✝ : Unique Rˣ
n : ℕ
c : R
s : Finset ι
f : ι → R
h : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → IsCoprime (f i) (f j)
i : ι
hprod : f i * ∏ x in erase s i, f x = c ^ n
hi : i ∈ s
⊢ ∃ d, f i = d ^ n

tactic: rw [hij] at hj
state_before: M : Type ?u.20156
inst✝⁵ : CancelMonoidWithZero M
inst✝⁴ : Finite M
ι : Type u_1
R : Type u_2
inst✝³ : CommSemiring R
inst✝² : IsDomain R
inst✝¹ : GCDMonoid R
inst✝ : Unique Rˣ
n : ℕ
c : R
s : Finset ι
f : ι → R
h : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → IsCoprime (f i) (f j)
i : ι
hprod : f i * ∏ x in erase s i, f x = c ^ n
hi : i ∈ s
j : ι
hj : j ∈ erase s i
hij : i = j
⊢ False

tactic: exact (s.not_mem_erase _) hj
state_before: M : Type ?u.20156
inst✝⁵ : CancelMonoidWithZero M
inst✝⁴ : Finite M
ι : Type u_1
R : Type u_2
inst✝³ : CommSemiring R
inst✝² : IsDomain R
inst✝¹ : GCDMonoid R
inst✝ : Unique Rˣ
n : ℕ
c : R
s : Finset ι
f : ι → R
h : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → IsCoprime (f i) (f j)
i : ι
hprod : f i * ∏ x in erase s i, f x = c ^ n
hi : i ∈ s
j : ι
hj : j ∈ erase s j
hij : i = j
⊢ False
Theorem: PicardLindelof.exists_contracting_iterate
File: Mathlib/Analysis/ODE/PicardLindelof.lean

tactic: rcases ((Real.tendsto_pow_div_factorial_atTop (v.L * v.tDist)).eventually
  (gt_mem_nhds zero_lt_one)).exists with ⟨N, hN⟩
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
v : PicardLindelof E
inst✝ : CompleteSpace E
⊢ ∃ N K, ContractingWith K (FunSpace.next^[N])

tactic: have : (0 : ℝ) ≤ (v.L * v.tDist) ^ N / N ! :=
  div_nonneg (pow_nonneg (mul_nonneg v.L.2 v.tDist_nonneg) _) (Nat.cast_nonneg _)
state_before: case intro
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
v : PicardLindelof E
inst✝ : CompleteSpace E
N : ℕ
hN : (↑v.L * tDist v) ^ N / ↑N ! < 1
⊢ ∃ N K, ContractingWith K (FunSpace.next^[N])

tactic: exact ⟨N, ⟨_, this⟩, hN, LipschitzWith.of_dist_le_mul fun f g =>
  FunSpace.dist_iterate_next_le f g N⟩
state_before: case intro
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
v : PicardLindelof E
inst✝ : CompleteSpace E
N : ℕ
hN : (↑v.L * tDist v) ^ N / ↑N ! < 1
this : 0 ≤ (↑v.L * tDist v) ^ N / ↑N !
⊢ ∃ N K, ContractingWith K (FunSpace.next^[N])
Theorem: List.monotone_prod_take
File: Mathlib/Data/List/BigOperators/Basic.lean

tactic: refine' monotone_nat_of_le_succ fun n => _
state_before: ι : Type ?u.129579
α : Type ?u.129582
M : Type u_1
N : Type ?u.129588
P : Type ?u.129591
M₀ : Type ?u.129594
G : Type ?u.129597
R : Type ?u.129600
inst✝ : CanonicallyOrderedMonoid M
L : List M
⊢ Monotone fun i => prod (take i L)

tactic: cases' lt_or_le n L.length with h h
state_before: ι : Type ?u.129579
α : Type ?u.129582
M : Type u_1
N : Type ?u.129588
P : Type ?u.129591
M₀ : Type ?u.129594
G : Type ?u.129597
R : Type ?u.129600
inst✝ : CanonicallyOrderedMonoid M
L : List M
n : ℕ
⊢ prod (take n L) ≤ prod (take (n + 1) L)

tactic: rw [prod_take_succ _ _ h]
state_before: case inl
ι : Type ?u.129579
α : Type ?u.129582
M : Type u_1
N : Type ?u.129588
P : Type ?u.129591
M₀ : Type ?u.129594
G : Type ?u.129597
R : Type ?u.129600
inst✝ : CanonicallyOrderedMonoid M
L : List M
n : ℕ
h : n < length L
⊢ prod (take n L) ≤ prod (take (n + 1) L)

tactic: exact le_self_mul
state_before: case inl
ι : Type ?u.129579
α : Type ?u.129582
M : Type u_1
N : Type ?u.129588
P : Type ?u.129591
M₀ : Type ?u.129594
G : Type ?u.129597
R : Type ?u.129600
inst✝ : CanonicallyOrderedMonoid M
L : List M
n : ℕ
h : n < length L
⊢ prod (take n L) ≤ prod (take n L) * nthLe L n h

tactic: simp [take_all_of_le h, take_all_of_le (le_trans h (Nat.le_succ _))]
state_before: case inr
ι : Type ?u.129579
α : Type ?u.129582
M : Type u_1
N : Type ?u.129588
P : Type ?u.129591
M₀ : Type ?u.129594
G : Type ?u.129597
R : Type ?u.129600
inst✝ : CanonicallyOrderedMonoid M
L : List M
n : ℕ
h : length L ≤ n
⊢ prod (take n L) ≤ prod (take (n + 1) L)
Theorem: Array.get!_eq_get?
File: Std/Data/Array/Lemmas.lean

tactic: simp [get!_eq_getD]
state_before: α : Type u_1
n : Nat
inst✝ : Inhabited α
a : Array α
⊢ get! a n = Option.getD (get? a n) default
Theorem: Int.negOfNat_mul_ofNat
File: Std/Data/Int/Lemmas.lean

tactic: rw [Int.mul_comm]
state_before: m n : Nat
⊢ negOfNat m * ↑n = negOfNat (m * n)

tactic: simp [ofNat_mul_negOfNat, Nat.mul_comm]
state_before: m n : Nat
⊢ ↑n * negOfNat m = negOfNat (m * n)
Theorem: Pi.card_Ioc
File: Mathlib/Data/Pi/Interval.lean

tactic: rw [card_Ioc_eq_card_Icc_sub_one, card_Icc]
state_before: ι : Type u_1
α : ι → Type u_2
inst✝⁴ : DecidableEq ι
inst✝³ : Fintype ι
inst✝² : (i : ι) → DecidableEq (α i)
inst✝¹ : (i : ι) → PartialOrder (α i)
inst✝ : (i : ι) → LocallyFiniteOrder (α i)
a b : (i : ι) → α i
⊢ Finset.card (Ioc a b) = ∏ i : ι, Finset.card (Icc (a i) (b i)) - 1
Theorem: Matrix.blockDiagonal'_add
File: Mathlib/Data/Matrix/Block.lean

tactic: ext
state_before: l : Type ?u.212538
m : Type ?u.212541
n : Type ?u.212544
o : Type u_4
p : Type ?u.212550
q : Type ?u.212553
m' : o → Type u_2
n' : o → Type u_3
p' : o → Type ?u.212568
R : Type ?u.212571
S : Type ?u.212574
α : Type u_1
β : Type ?u.212580
inst✝¹ : DecidableEq o
inst✝ : AddZeroClass α
M N : (i : o) → Matrix (m' i) (n' i) α
⊢ blockDiagonal' (M + N) = blockDiagonal' M + blockDiagonal' N

tactic: simp only [blockDiagonal'_apply, Pi.add_apply, add_apply]
state_before: case a.h
l : Type ?u.212538
m : Type ?u.212541
n : Type ?u.212544
o : Type u_4
p : Type ?u.212550
q : Type ?u.212553
m' : o → Type u_2
n' : o → Type u_3
p' : o → Type ?u.212568
R : Type ?u.212571
S : Type ?u.212574
α : Type u_1
β : Type ?u.212580
inst✝¹ : DecidableEq o
inst✝ : AddZeroClass α
M N : (i : o) → Matrix (m' i) (n' i) α
i✝ : (i : o) × m' i
x✝ : (i : o) × n' i
⊢ blockDiagonal' (M + N) i✝ x✝ = (blockDiagonal' M + blockDiagonal' N) i✝ x✝

tactic: split_ifs <;> simp
state_before: case a.h
l : Type ?u.212538
m : Type ?u.212541
n : Type ?u.212544
o : Type u_4
p : Type ?u.212550
q : Type ?u.212553
m' : o → Type u_2
n' : o → Type u_3
p' : o → Type ?u.212568
R : Type ?u.212571
S : Type ?u.212574
α : Type u_1
β : Type ?u.212580
inst✝¹ : DecidableEq o
inst✝ : AddZeroClass α
M N : (i : o) → Matrix (m' i) (n' i) α
i✝ : (i : o) × m' i
x✝ : (i : o) × n' i
⊢ (if h : i✝.fst = x✝.fst then
      M i✝.fst i✝.snd (cast (_ : n' x✝.fst = n' i✝.fst) x✝.snd) +
        N i✝.fst i✝.snd (cast (_ : n' x✝.fst = n' i✝.fst) x✝.snd)
    else 0) =
    (if h : i✝.fst = x✝.fst then M i✝.fst i✝.snd (cast (_ : n' x✝.fst = n' i✝.fst) x✝.snd) else 0) +
      if h : i✝.fst = x✝.fst then N i✝.fst i✝.snd (cast (_ : n' x✝.fst = n' i✝.fst) x✝.snd) else 0
Theorem: TopologicalSpace.exists_countable_basis
File: Mathlib/Topology/Bases.lean

tactic: obtain ⟨b, hb₁, hb₂⟩ := @SecondCountableTopology.is_open_generated_countable α _ _
state_before: α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
⊢ ∃ b, Set.Countable b ∧ ¬∅ ∈ b ∧ IsTopologicalBasis b

tactic: refine' ⟨_, _, not_mem_diff_of_mem _, (isTopologicalBasis_of_subbasis hb₂).diff_empty⟩
state_before: case intro.intro
α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
b : Set (Set α)
hb₁ : Set.Countable b
hb₂ : t = generateFrom b
⊢ ∃ b, Set.Countable b ∧ ¬∅ ∈ b ∧ IsTopologicalBasis b

tactic: exacts [((countable_setOf_finite_subset hb₁).image _).mono (diff_subset _ _), rfl]
state_before: case intro.intro.refine'_1
α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
b : Set (Set α)
hb₁ : Set.Countable b
hb₂ : t = generateFrom b
⊢ Set.Countable ((fun f => ⋂₀ f) '' {f | Set.Finite f ∧ f ⊆ b} \ {∅})

case intro.intro.refine'_2
α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
b : Set (Set α)
hb₁ : Set.Countable b
hb₂ : t = generateFrom b
⊢ ∅ ∈ {∅}
Theorem: Ordinal.principal_mul_isLimit
File: Mathlib/SetTheory/Ordinal/Principal.lean

tactic: simpa using ho₂
state_before: o : Ordinal
ho₂ : 2 < o
ho : Principal (fun x x_1 => x * x_1) o
⊢ succ 1 < o
Theorem: Nat.sInf_add
File: Mathlib/Data/Nat/Lattice.lean

tactic: obtain h | ⟨m, hm⟩ := { m | p (m + n) }.eq_empty_or_nonempty
state_before: n : ℕ
p : ℕ → Prop
hn : n ≤ sInf {m | p m}
⊢ sInf {m | p (m + n)} + n = sInf {m | p m}

tactic: rw [h, Nat.sInf_empty, zero_add]
state_before: case inl
n : ℕ
p : ℕ → Prop
hn : n ≤ sInf {m | p m}
h : {m | p (m + n)} = ∅
⊢ sInf {m | p (m + n)} + n = sInf {m | p m}

tactic: obtain hnp | hnp := hn.eq_or_lt
state_before: case inl
n : ℕ
p : ℕ → Prop
hn : n ≤ sInf {m | p m}
h : {m | p (m + n)} = ∅
⊢ n = sInf {m | p m}

tactic: suffices hp : p (sInf { m | p m } - n + n)
state_before: case inl.inr
n : ℕ
p : ℕ → Prop
hn : n ≤ sInf {m | p m}
h : {m | p (m + n)} = ∅
hnp : n < sInf {m | p m}
⊢ n = sInf {m | p m}

tactic: rw [tsub_add_cancel_of_le hn]
state_before: case hp
n : ℕ
p : ℕ → Prop
hn : n ≤ sInf {m | p m}
h : {m | p (m + n)} = ∅
hnp : n < sInf {m | p m}
⊢ p (sInf {m | p m} - n + n)

tactic: exact csInf_mem (nonempty_of_pos_sInf <| n.zero_le.trans_lt hnp)
state_before: case hp
n : ℕ
p : ℕ → Prop
hn : n ≤ sInf {m | p m}
h : {m | p (m + n)} = ∅
hnp : n < sInf {m | p m}
⊢ p (sInf {m | p m})

tactic: exact hnp
state_before: case inl.inl
n : ℕ
p : ℕ → Prop
hn : n ≤ sInf {m | p m}
h : {m | p (m + n)} = ∅
hnp : n = sInf {m | p m}
⊢ n = sInf {m | p m}

tactic: exact (h.subset hp).elim
state_before: case inl.inr
n : ℕ
p : ℕ → Prop
hn : n ≤ sInf {m | p m}
h : {m | p (m + n)} = ∅
hnp : n < sInf {m | p m}
hp : p (sInf {m | p m} - n + n)
⊢ n = sInf {m | p m}

tactic: have hp : ∃ n, n ∈ { m | p m } := ⟨_, hm⟩
state_before: case inr.intro
n : ℕ
p : ℕ → Prop
hn : n ≤ sInf {m | p m}
m : ℕ
hm : m ∈ {m | p (m + n)}
⊢ sInf {m | p (m + n)} + n = sInf {m | p m}

tactic: rw [Nat.sInf_def ⟨m, hm⟩, Nat.sInf_def hp]
state_before: case inr.intro
n : ℕ
p : ℕ → Prop
hn : n ≤ sInf {m | p m}
m : ℕ
hm : m ∈ {m | p (m + n)}
hp : ∃ n, n ∈ {m | p m}
⊢ sInf {m | p (m + n)} + n = sInf {m | p m}

tactic: rw [Nat.sInf_def hp] at hn
state_before: case inr.intro
n : ℕ
p : ℕ → Prop
hn : n ≤ sInf {m | p m}
m : ℕ
hm : m ∈ {m | p (m + n)}
hp : ∃ n, n ∈ {m | p m}
⊢ Nat.find (_ : ∃ x, x ∈ {m | p (m + n)}) + n = Nat.find hp

tactic: exact find_add hn
state_before: case inr.intro
n : ℕ
p : ℕ → Prop
m : ℕ
hm : m ∈ {m | p (m + n)}
hp : ∃ n, n ∈ {m | p m}
hn : n ≤ Nat.find hp
⊢ Nat.find (_ : ∃ x, x ∈ {m | p (m + n)}) + n = Nat.find hp
Theorem: Function.Commute.iterate_pos_le_iff_map_le'
File: Mathlib/Order/Iterate.lean

tactic: simpa only [not_lt] using not_congr (h.symm.iterate_pos_lt_iff_map_lt hg hf hn)
state_before: α : Type u_1
inst✝ : LinearOrder α
f g : α → α
h : Commute f g
hf : StrictMono f
hg : Monotone g
x : α
n : ℕ
hn : 0 < n
⊢ (f^[n]) x ≤ (g^[n]) x ↔ f x ≤ g x
Theorem: Subgroup.eq_bot_of_subsingleton
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: rw [Subgroup.eq_bot_iff_forall]
state_before: G : Type u_1
G' : Type ?u.168605
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.168614
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Subsingleton { x // x ∈ H }
⊢ H = ⊥

tactic: intro y hy
state_before: G : Type u_1
G' : Type ?u.168605
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.168614
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Subsingleton { x // x ∈ H }
⊢ ∀ (x : G), x ∈ H → x = 1

tactic: rw [← Subgroup.coe_mk H y hy, Subsingleton.elim (⟨y, hy⟩ : H) 1, Subgroup.coe_one]
state_before: G : Type u_1
G' : Type ?u.168605
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.168614
inst✝¹ : AddGroup A
H K : Subgroup G
inst✝ : Subsingleton { x // x ∈ H }
y : G
hy : y ∈ H
⊢ y = 1
Theorem: LinearIndependent.restrict_scalars
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: refine' linearIndependent_iff'.mpr fun s g hg i hi => hinj _
state_before: ι : Type u'
ι' : Type ?u.123510
R : Type u_2
K : Type u_1
M : Type u_3
M' : Type ?u.123522
M'' : Type ?u.123525
V : Type u
V' : Type ?u.123530
v : ι → M
inst✝¹⁰ : Semiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : AddCommMonoid M''
inst✝⁶ : Module R M
inst✝⁵ : Module R M'
inst✝⁴ : Module R M''
a b : R
x y : M
inst✝³ : Semiring K
inst✝² : SMulWithZero R K
inst✝¹ : Module K M
inst✝ : IsScalarTower R K M
hinj : Injective fun r => r • 1
li : LinearIndependent K v
⊢ LinearIndependent R v

tactic: dsimp only
state_before: ι : Type u'
ι' : Type ?u.123510
R : Type u_2
K : Type u_1
M : Type u_3
M' : Type ?u.123522
M'' : Type ?u.123525
V : Type u
V' : Type ?u.123530
v : ι → M
inst✝¹⁰ : Semiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : AddCommMonoid M''
inst✝⁶ : Module R M
inst✝⁵ : Module R M'
inst✝⁴ : Module R M''
a b : R
x y : M
inst✝³ : Semiring K
inst✝² : SMulWithZero R K
inst✝¹ : Module K M
inst✝ : IsScalarTower R K M
hinj : Injective fun r => r • 1
li : LinearIndependent K v
s : Finset ι
g : ι → R
hg : ∑ i in s, g i • v i = 0
i : ι
hi : i ∈ s
⊢ (fun r => r • 1) (g i) = (fun r => r • 1) 0

tactic: rw [zero_smul]
state_before: ι : Type u'
ι' : Type ?u.123510
R : Type u_2
K : Type u_1
M : Type u_3
M' : Type ?u.123522
M'' : Type ?u.123525
V : Type u
V' : Type ?u.123530
v : ι → M
inst✝¹⁰ : Semiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : AddCommMonoid M''
inst✝⁶ : Module R M
inst✝⁵ : Module R M'
inst✝⁴ : Module R M''
a b : R
x y : M
inst✝³ : Semiring K
inst✝² : SMulWithZero R K
inst✝¹ : Module K M
inst✝ : IsScalarTower R K M
hinj : Injective fun r => r • 1
li : LinearIndependent K v
s : Finset ι
g : ι → R
hg : ∑ i in s, g i • v i = 0
i : ι
hi : i ∈ s
⊢ g i • 1 = 0 • 1

tactic: simp_rw [smul_assoc, one_smul]
state_before: ι : Type u'
ι' : Type ?u.123510
R : Type u_2
K : Type u_1
M : Type u_3
M' : Type ?u.123522
M'' : Type ?u.123525
V : Type u
V' : Type ?u.123530
v : ι → M
inst✝¹⁰ : Semiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : AddCommMonoid M''
inst✝⁶ : Module R M
inst✝⁵ : Module R M'
inst✝⁴ : Module R M''
a b : R
x y : M
inst✝³ : Semiring K
inst✝² : SMulWithZero R K
inst✝¹ : Module K M
inst✝ : IsScalarTower R K M
hinj : Injective fun r => r • 1
li : LinearIndependent K v
s : Finset ι
g : ι → R
hg : ∑ i in s, g i • v i = 0
i : ι
hi : i ∈ s
⊢ ∑ i in s, (fun x => g x • 1) i • v i = 0

tactic: exact hg
state_before: ι : Type u'
ι' : Type ?u.123510
R : Type u_2
K : Type u_1
M : Type u_3
M' : Type ?u.123522
M'' : Type ?u.123525
V : Type u
V' : Type ?u.123530
v : ι → M
inst✝¹⁰ : Semiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid M'
inst✝⁷ : AddCommMonoid M''
inst✝⁶ : Module R M
inst✝⁵ : Module R M'
inst✝⁴ : Module R M''
a b : R
x y : M
inst✝³ : Semiring K
inst✝² : SMulWithZero R K
inst✝¹ : Module K M
inst✝ : IsScalarTower R K M
hinj : Injective fun r => r • 1
li : LinearIndependent K v
s : Finset ι
g : ι → R
hg : ∑ i in s, g i • v i = 0
i : ι
hi : i ∈ s
⊢ ∑ x in s, g x • v x = 0
Theorem: Equiv.prod_assoc_image
File: Mathlib/Logic/Equiv/Set.lean

tactic: simpa only [Equiv.image_eq_preimage] using prod_assoc_symm_preimage
state_before: α✝ : Sort u
β✝ : Sort v
γ✝ : Sort w
α : Type u_1
β : Type u_2
γ : Type u_3
s : Set α
t : Set β
u : Set γ
⊢ ↑(prodAssoc α β γ) '' (s ×ˢ t) ×ˢ u = s ×ˢ t ×ˢ u
Theorem: Polynomial.coeff_X_pow_mul'
File: Mathlib/Data/Polynomial/Coeff.lean

tactic: rw [(commute_X_pow p n).eq, coeff_mul_X_pow']
state_before: R : Type u
S : Type v
a b : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
n d : ℕ
⊢ coeff (X ^ n * p) d = if n ≤ d then coeff p (d - n) else 0
Theorem: LinearIndependent.mono
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: simp only [linearIndependent_subtype_disjoint]
state_before: ι : Type u'
ι' : Type ?u.213479
R : Type u_2
K : Type ?u.213485
M : Type u_1
M' : Type ?u.213491
M'' : Type ?u.213494
V : Type u
V' : Type ?u.213499
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
t s : Set M
h : t ⊆ s
⊢ (LinearIndependent R fun x => ↑x) → LinearIndependent R fun x => ↑x

tactic: exact Disjoint.mono_left (Finsupp.supported_mono h)
state_before: ι : Type u'
ι' : Type ?u.213479
R : Type u_2
K : Type ?u.213485
M : Type u_1
M' : Type ?u.213491
M'' : Type ?u.213494
V : Type u
V' : Type ?u.213499
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
t s : Set M
h : t ⊆ s
⊢ Disjoint (Finsupp.supported R R s) (LinearMap.ker (Finsupp.total M M R id)) →
    Disjoint (Finsupp.supported R R t) (LinearMap.ker (Finsupp.total M M R id))
Theorem: padicValRat_of_nat
File: Mathlib/NumberTheory/Padics/PadicVal.lean

tactic: simp
state_before: p n : ℕ
⊢ ↑(padicValNat p n) = padicValRat p ↑n
Theorem: lowerCentralSeries_length_eq_nilpotencyClass
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: rw [← least_descending_central_series_length_eq_nilpotencyClass]
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hG : Group.IsNilpotent G
⊢ Nat.find (_ : ∃ n, lowerCentralSeries G n = ⊥) = nilpotencyClass G

tactic: refine' le_antisymm (Nat.find_mono _) (Nat.find_mono _)
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hG : Group.IsNilpotent G
⊢ Nat.find (_ : ∃ n, lowerCentralSeries G n = ⊥) = Nat.find (_ : ∃ n H, IsDescendingCentralSeries H ∧ H n = ⊥)

tactic: rintro n ⟨H, ⟨hH, hn⟩⟩
state_before: case refine'_1
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hG : Group.IsNilpotent G
⊢ ∀ (n : ℕ), (∃ H, IsDescendingCentralSeries H ∧ H n = ⊥) → lowerCentralSeries G n = ⊥

tactic: rw [← le_bot_iff, ← hn]
state_before: case refine'_1.intro.intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : Normal H✝
hG : Group.IsNilpotent G
n : ℕ
H : ℕ → Subgroup G
hH : IsDescendingCentralSeries H
hn : H n = ⊥
⊢ lowerCentralSeries G n = ⊥

tactic: exact descending_central_series_ge_lower H hH n
state_before: case refine'_1.intro.intro
G : Type u_1
inst✝¹ : Group G
H✝ : Subgroup G
inst✝ : Normal H✝
hG : Group.IsNilpotent G
n : ℕ
H : ℕ → Subgroup G
hH : IsDescendingCentralSeries H
hn : H n = ⊥
⊢ lowerCentralSeries G n ≤ H n

tactic: rintro n h
state_before: case refine'_2
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hG : Group.IsNilpotent G
⊢ ∀ (n : ℕ), lowerCentralSeries G n = ⊥ → ∃ H, IsDescendingCentralSeries H ∧ H n = ⊥

tactic: exact ⟨lowerCentralSeries G, ⟨lowerCentralSeries_isDescendingCentralSeries, h⟩⟩
state_before: case refine'_2
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hG : Group.IsNilpotent G
n : ℕ
h : lowerCentralSeries G n = ⊥
⊢ ∃ H, IsDescendingCentralSeries H ∧ H n = ⊥
Theorem: Seminorm.convex_ball
File: Mathlib/Analysis/Seminorm.lean

tactic: convert (p.convexOn.translate_left (-x)).convex_lt r
state_before: R : Type ?u.1306084
R' : Type ?u.1306087
𝕜 : Type u_2
𝕜₂ : Type ?u.1306093
𝕜₃ : Type ?u.1306096
𝕝 : Type ?u.1306099
E : Type u_1
E₂ : Type ?u.1306105
E₃ : Type ?u.1306108
F : Type ?u.1306111
G : Type ?u.1306114
ι : Type ?u.1306117
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : NormedSpace ℝ 𝕜
inst✝² : Module 𝕜 E
inst✝¹ : Module ℝ E
inst✝ : IsScalarTower ℝ 𝕜 E
p : Seminorm 𝕜 E
x : E
r : ℝ
⊢ Convex ℝ (ball p x r)

tactic: ext y
state_before: case h.e'_6
R : Type ?u.1306084
R' : Type ?u.1306087
𝕜 : Type u_2
𝕜₂ : Type ?u.1306093
𝕜₃ : Type ?u.1306096
𝕝 : Type ?u.1306099
E : Type u_1
E₂ : Type ?u.1306105
E₃ : Type ?u.1306108
F : Type ?u.1306111
G : Type ?u.1306114
ι : Type ?u.1306117
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : NormedSpace ℝ 𝕜
inst✝² : Module 𝕜 E
inst✝¹ : Module ℝ E
inst✝ : IsScalarTower ℝ 𝕜 E
p : Seminorm 𝕜 E
x : E
r : ℝ
⊢ ball p x r = {x_1 | x_1 ∈ (fun z => -x + z) ⁻¹' univ ∧ (↑p ∘ fun z => z + -x) x_1 < r}

tactic: rw [preimage_univ, sep_univ, p.mem_ball, sub_eq_add_neg]
state_before: case h.e'_6.h
R : Type ?u.1306084
R' : Type ?u.1306087
𝕜 : Type u_2
𝕜₂ : Type ?u.1306093
𝕜₃ : Type ?u.1306096
𝕝 : Type ?u.1306099
E : Type u_1
E₂ : Type ?u.1306105
E₃ : Type ?u.1306108
F : Type ?u.1306111
G : Type ?u.1306114
ι : Type ?u.1306117
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : NormedSpace ℝ 𝕜
inst✝² : Module 𝕜 E
inst✝¹ : Module ℝ E
inst✝ : IsScalarTower ℝ 𝕜 E
p : Seminorm 𝕜 E
x : E
r : ℝ
y : E
⊢ y ∈ ball p x r ↔ y ∈ {x_1 | x_1 ∈ (fun z => -x + z) ⁻¹' univ ∧ (↑p ∘ fun z => z + -x) x_1 < r}

tactic: rfl
state_before: case h.e'_6.h
R : Type ?u.1306084
R' : Type ?u.1306087
𝕜 : Type u_2
𝕜₂ : Type ?u.1306093
𝕜₃ : Type ?u.1306096
𝕝 : Type ?u.1306099
E : Type u_1
E₂ : Type ?u.1306105
E₃ : Type ?u.1306108
F : Type ?u.1306111
G : Type ?u.1306114
ι : Type ?u.1306117
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : NormedSpace ℝ 𝕜
inst✝² : Module 𝕜 E
inst✝¹ : Module ℝ E
inst✝ : IsScalarTower ℝ 𝕜 E
p : Seminorm 𝕜 E
x : E
r : ℝ
y : E
⊢ ↑p (y + -x) < r ↔ y ∈ {x_1 | (↑p ∘ fun z => z + -x) x_1 < r}