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