open import Algebra
open import Algebra.Apartness
open import Algebra.Module
open import Function

module Algebra.Module.DefsField
  {c ℓ₁ ℓ₂ mr ℓm}
  (hField : HeytingField c ℓ₁ ℓ₂)
  (leftModule : LeftModule (CommutativeRing.ring
   $ HeytingCommutativeRing.commutativeRing
   $ HeytingField.heytingCommutativeRing hField) mr ℓm)
  where

open import Algebra.Module.Definition leftModule public

open import Level using (Level; _⊔_)
open import Data.Bool
open import Data.Product
open import Data.Nat using ()
open import Data.Vec.Functional

open LeftModule leftModule renaming (Carrierᴹ to M)
open HeytingField hField renaming (Carrier to A)

private variable
  n : 

IsLinearDependent : Vector M n  Set _
IsLinearDependent xs = Σ[ (ys by _)  xs reaches 0ᴹ ]  λ i  ys i # 0#

data LinearIndependent? (xs : Vector M n) : Bool  Set (c  ℓ₁  ℓ₂  ℓm) where
  linDep : IsLinearDependent   xs  LinearIndependent? xs false
  linInd : IsLinearIndependent xs  LinearIndependent? xs true