動物論理におけるアダマール積

動物論理〈animal logic〉のリーズニングとは、動物知データベースに蓄えられた経験則に対する操作のこと。経験則は、動物シーケントにマルコフテンソルを割り当てたデータとして保存されている(と想定する)。知的動物は、動物知データベースから幾つかの経験則を取り出して、それにリーズニングを施して何らかの知的判断をする(と想定する)。

したがって、リーズニングはマルコフテンソルに対する操作〈オペレーション | 演算〉となる。マルコフテンソルに対する演算は色々あるが、計算途中で使われる演算にアダマール積がある。

アダマール積は、テンソルの成分ごとに掛け算するだけなので、任意の拡張テンソル(圏XTensの射 「マルコフ・テンソルに関連する圏達」参照)に対して定義できる。総和を取らないので、集合が有限集合である必要もない。ただし、“どこを”掛け算するかの指定をテキストでおこなうのは難しい。ストリング図を使えば一目瞭然。
\newcommand{\In}{\mbox{ in }}%
\newcommand{\P}{{\bf P}}%

\xymatrix{
% 1
  *{} %1
  & *{}\ar[d]^A %2
  & *{} %3  
  & *{} %4
  & *{} \ar[d]^E %5
  & *{} %6
\\
% 2
  *{} %1
  & *++[o][F]{x} \ar[ddddl]_B \ar@{-}[d] \ar[ddddr]_D %2
  & *{} %3  
  & *{} %4
  & *++[o][F]{y} \ar[ddl]_C %5
  & *++[o][F]{z} \ar[dddl]_C%6
\\
% 3
  *{} %1
  & *{} \ar[drr]^C %2
  & *{} %3  
  & *{} %4
  & *{} %5
  & *{} %6
\\
% 4
  *{} %1
  & *{} %2
  & *{} %3  
  & *{\ast\:\mbox{(1)}} \ar[dr]^C%4
  & *{} %5
  & *{} %6
\\
% 5
  *{} %1
  & *{} %2
  & *{} %3  
  & *{} %4
  & *{\ast\:\mbox{(2)}} \ar[d]^C%5
  & *{} %6
\\
% 6
  *{} %1
  & *{} %2
  & *{} %3  
  & *{} %4
  & *{} %5
  & *{} %6
\\
}

上のストリング図(もどき)に出現する3つのテンソルのプロファイルは

  1. x: (A) \to (B, C, D) \In {\bf XTens}
  2. y: (E) \to (C) \In {\bf XTens}
  3. z: () \to (C) \In {\bf XTens}

テンソルの実体である関数のプロファイルは

  1. x: A \times (B\times C \times D) \to \P \In {\bf Set}
  2. y: E \times C \to \P \In {\bf Set}
  3. z: \{*\} \times C \to \P \In {\bf Set}

ラムダ記法で関数を書けば

  1.  x = \lambda\, (b, c, d\mid a)\in A \times (B\times C \times D). x(b, c, d\mid a)
  2.  y = \lambda\, (c \mid e) \in E \times C. y(c \mid e)
  3.  z = \lambda\, (c \mid *) \in \{*\} \times C. z( c \mid *)

ラムダ記法を一部省略すれば

  1.  x = \lambda\, (b, c, d\mid a). x(b, c, d\mid a)
  2.  y = \lambda\, (c \mid e) . y(c \mid e)
  3.  z = \lambda\, (c \mid *) . z( c \mid *)

以上でセットアップは済み。

一番のアダマール積をした結果を s とすると、次のように書ける。


s = \lambda\, (b, d, c\mid a, e). x(b, c, d \mid a) y(c \mid e)

ニ番のアダマール積をした結果を t とすると、次のように書ける。


t = \lambda\, (b, d, c\mid a). s(b, d, c \mid a,e) z(c \mid *) \\
= \lambda\, (b, d, c\mid a).  x(b, c, d \mid a,e) y(c \mid e)z(c \mid *)

次に、アダマール積を実行するタイミングを変える。


\xymatrix{
% 1
  *{} %1
  & *{}\ar[d]^A %2
  & *{} %3  
  & *{} %4
  & *{} \ar[d]^E %5
  & *{} %6
\\
% 2
  *{} %1
  & *++[o][F]{x} \ar[ddddl]_B \ar@{-}[d] \ar[ddddr]_D %2
  & *{} %3  
  & *{} %4
  & *++[o][F]{y} \ar[dr]_C %5
  & *++[o][F]{z} \ar[d]_C%6
\\
% 3
  *{} %1
  & *{} \ar[ddrrr]^C %2 折れ線
  & *{} %3  
  & *{} %4
  & *{} %5
  & *{\ast\:\mbox{(3)}} \ar[ddl]^C%6  
\\
% 4
  *{} %1
  & *{} %2
  & *{} %3  
  & *{} %4
  & *{} %5
  & *{} %6
\\
% 5
  *{} %1
  & *{} %2
  & *{} %3  
  & *{} %4
  & *{\ast\:\mbox{(4)}} \ar[d]^C%5
  & *{} %6
\\
% 6
  *{} %1
  & *{} %2
  & *{} %3  
  & *{} %4
  & *{} %5
  & *{} %6
\\
}

三番のアダマール積をした結果を s' とすると、次のように書ける。


s' = \lambda\, (c\mid e). y(c \mid e)z(c |*)

四番のアダマール積をした結果を t' とすると、次のように書ける。


t' = \lambda\, (b, d, c\mid a, e). x(b, c, d \mid a)s'(c\mid e) \\
= \lambda\, (b, d, c\mid a, e). x(b, c, d \mid a) y(c \mid e)z(c \mid *)

先ほどと結果は等しい t = t' ので、ある種の“結合律”は成立しているのだが、結合律の一般的な形式をテキスト記法で書き下すのはだいぶ面倒。


ストリング図(もどき)の XyJax ソース。書くの大変なんよ、コレ。

\xymatrix{
% 1
  *{} %1
  & *{}\ar[d\]^A %2
  & *{} %3  
  & *{} %4
  & *{} \ar[d\]^E %5
  & *{} %6
\\
% 2
  *{} %1
  & *++[o\][F\]{x} \ar[ddddl\]_B \ar@{-}[d\] \ar[ddddr\]_D %2
  & *{} %3  
  & *{} %4
  & *++[o\][F\]{y} \ar[ddl\]_C %5
  & *++[o\][F\]{z} \ar[dddl\]_C%6
\\
% 3
  *{} %1
  & *{} \ar[drr\]^C %2
  & *{} %3  
  & *{} %4
  & *{} %5
  & *{} %6
\\
% 4
  *{} %1
  & *{} %2
  & *{} %3  
  & *{\ast\:\mbox{(1)}} \ar[dr\]^C%4
  & *{} %5
  & *{} %6
\\
% 5
  *{} %1
  & *{} %2
  & *{} %3  
  & *{} %4
  & *{\ast\:\mbox{(2)}} \ar[d\]^C%5
  & *{} %6
\\
% 6
  *{} %1
  & *{} %2
  & *{} %3  
  & *{} %4
  & *{} %5
  & *{} %6
\\
}


\xymatrix{
% 1
  *{} %1
  & *{}\ar[d\]^A %2
  & *{} %3  
  & *{} %4
  & *{} \ar[d\]^E %5
  & *{} %6
\\
% 2
  *{} %1
  & *++[o\][F\]{x} \ar[ddddl\]_B \ar@{-}[d\] \ar[ddddr\]_D %2
  & *{} %3  
  & *{} %4
  & *++[o\][F\]{y} \ar[dr\]_C %5
  & *++[o\][F\]{z} \ar[d\]_C%6
\\
% 3
  *{} %1
  & *{} \ar[ddrrr\]^C %2 折れ線
  & *{} %3  
  & *{} %4
  & *{} %5
  & *{\ast\:\mbox{(3)}} \ar[ddl\]^C%6  
\\
% 4
  *{} %1
  & *{} %2
  & *{} %3  
  & *{} %4
  & *{} %5
  & *{} %6
\\
% 5
  *{} %1
  & *{} %2
  & *{} %3  
  & *{} %4
  & *{\ast\:\mbox{(4)}} \ar[d\]^C%5
  & *{} %6
\\
% 6
  *{} %1
  & *{} %2
  & *{} %3  
  & *{} %4
  & *{} %5
  & *{} %6
\\
}