Zulip Chat Archive

Stream: new members

Topic: linear independent with a non-hardcoded list of vectors


David Chanin (Jul 25 2022 at 10:38):

I understand I can say linear_independent ℝ ![![1,2,3], ![4,5,6]] when I have a hardcoded matrix like this, but I can't figure out how to say a list of vectors of length m are linearly independent. I'm trying to prove the following:

If v1,v2,...,vm is linearly independent in V, then 5v1-4v2, v2,...,vm then is also linearly independent.

I tried using a set with insert as follows, but linear_independent seems like it needs a matrix and not a set of vectors.

example
    (k : Type)
    (V : Type)
    [field k] [add_comm_group V] [module k V]
    (v1 v2 : V)
    (remainingV: set V)
  :
    linear_independent k (insert v1 (insert v2 remainingV))  linear_independent k (insert (5  v1 - 4
     v2) (insert v2 remainingV))
  := begin
    sorry
  end

Is there a way to specify a matrix that's a set of vectors of length m without hardcoding specific vectors into a matrix?

Eric Wieser (Jul 25 2022 at 11:38):

Perhaps what you're missing is that ![a, b, c] is notation for matrix.vec_cons a ![b, c]

Eric Wieser (Jul 25 2022 at 11:38):

insert is used for {a, b, c} notation

Eric Wieser (Jul 25 2022 at 11:39):

However, there's another way out here; while with ![a, b, c] you're using fin 3 as the index type, you can work with {a, b, c} if you use coe_sort {a, b, c} as the index type and coe as the function!

Eric Wieser (Jul 25 2022 at 11:40):

Indeed, that's how docs#linear_independent_insert is stated

Eric Wieser (Jul 25 2022 at 11:41):

David Chanin said:

I tried using a set with insert as follows, but linear_independent seems like it needs a matrix and not a set of vectors.

Strictly speaking, ![![1,2,3], ![4,5,6]] is a tuple of tuples (or vector of vectors); a matrix would be !![1,2,3; 4,5,6].

David Chanin (Jul 25 2022 at 19:45):

aah ok, I think I understand what you mean (at least with vec_cons). I can write the following and it doesn't error! Now just need to figure how to actually prove it...

open matrix

example
    (k : Type)
    (V : Type)
    (m : )
    [field k] [add_comm_group V] [module k V]
    (v1 v2 : V)
    (baseV: fin m  V)
  :
    linear_independent k (vec_cons v1 (vec_cons v2 baseV))  linear_independent k (vec_cons (5  v1 - 4
     v2) (vec_cons v2 baseV))
  := begin ... end

David Chanin (Jul 25 2022 at 19:56):

Thank you so much for the tips!

Eric Wieser (Jul 25 2022 at 20:16):

docs#linear_independent_fin_cons, docs#linear_independent.fin_cons'

Eric Wieser (Jul 25 2022 at 20:17):

matrix.vec_cons is defined as equal to docs#fin.cons, because the latter often elaborates badly due to dependent types


Last updated: Dec 20 2023 at 11:08 UTC