QE で独立

 今回は線形代数のお話です.係数,数ベクトルの成分は実数とします.
 まず,線形独立な 2 個の 2 項数ベクトルが存在することを見ましょう.数ベクトル(a,b),(c,d)が線形独立であるとは

∀s ∀t ( s(a,b) + t(c,d) = (0,0) → s=t=0 )

ということでしたから

Reduce[
 Exists[{a, b, c, d},
  ForAll[{s, t}, s*a + t*c == s*b + t*d == 0, s == t == 0]
 ],
 Reals
]

のように QE すれば

True

と出力されます.では,どのようなベクトルが線形独立なのか?ということで

Reduce[
 ForAll[{s, t}, s*a + t*c == s*b + t*d == 0, s == t == 0]
]

と問えば,Mathematica

(a == 0 && b c != 0) || a (-b c + a d) != 0

のように a で場合を分けてしまうので

rlqepcad all ( {s,t}, s*a + t*c = s*b + t*d = 0 impl s = t = 0 );

と問えば,QEPCAD B は

a*d - b*c <> 0

と答えてくれます.
 次に,任意の 3 個の 2 項数ベクトルが線形従属であることを確かめます.数ベクトル(x1,y1),(x2,y2),(x3,y3)が線形従属であるとは

∃c1 ∃c2 ∃c3( c1(x1,y1) + c2(x2,y2) + c3(x3,y3) = (0,0) ∧ ¬(c1=c2=c3=0) )

ということでしたから

Reduce[ForAll[{x[1], y[1], x[2], y[2], x[3], y[3]},
Exists[{c[1], c[2], c[3]},
Sum[c[k]*{x[k], y[k]}, {k, 1, 3}] == {0, 0},
Not[c[1] == c[2] == c[3] == 0]]], Reals]

のように QE すれば

True

と出力されます.これで,2 項数ベクトル全体からなる空間 R^2 の次元は 2 であることが判りました.