最初にヤコビ記号がかっこよく表示されるように指示します。

In [1]:
texput(jacobi,lambda([f],concat("\\left(\\frac{",tex1(args(f)[1]),"}{",tex1(args(f)[2]),"}\\right)")))$

次に命題4.11にしたがって幾つかの関数を定義します。 まず$qast(q)$を定義します。これは$q^*$の定義になっています。 次に$jcbast(q,p)$を定義します。$jcbast(q,p)$は2つの素数$q,p$から$\left(\frac{\left(\frac{-1}{q}\right)\,q}{p}\right)$を計算します。

In [4]:
qast(q):=jacobi(-1,q)*q$
jcbast(q,p):=jacobi(qast(q),p)$

以下の式が成り立つことを幾つかの具体的な素数の組で確認します。

In [5]:
jcbast(q,p)=jacobi(p,q);
Out[5]:
\[\tag{${\it \%o}_{7}$}\left(\frac{\left(\frac{-1}{q}\right)\,q}{p}\right)=\left(\frac{p}{q}\right)\]

こんなコードを走らせるとどの素数の組でも値が同じになることが分かります。

In [8]:
map(lambda([arg],block([p,q],[p,q]:arg,[jcbast(p,q),jacobi(q,p)])),
    [[3,7],[11,13],[37,19],[31,91],[53,11]]);
Out[8]:
\[\tag{${\it \%o}_{8}$}\left[ \left[ 1 , 1 \right] , \left[ -1 , -1 \right] , \left[ -1 , -1 \right] , \left[ -1 , -1 \right] , \left[ 1 , 1 \right] \right] \]