複数の引数 → ベクトル渡しだと考える

たとえば、フィボナッチ関数を考えます
例によって 変な擬似言語


F(0 x1 x2) :- 0
F(0 x1 x2) :- x2

F(x,y) :- F(n-1,x2,x1+x2)

で、ここで引数を n次のベクトルだと考えてみます


X={n x1 x2 1} ベクトル
F( [0 x1 x2 1]) :- 0 #ベクトルXの第1要素が0
F( [1 x1 x2 1]) :- x2 # 同 1
F(X) :- F( A X ) #行列A とベクトルXの積

ただし、Aは行列
\begin{equation}A=\begin{bmatrix}1&0&0&{-1}\\0&0&1&0\\0&1&1&0\\0&0&0&1\\\end{bmatrix}\\\end{equation}