補題:32bit符号なし整数変数間の算術和演算をブール関数で表す その3

初期seedから日時を求める無謀な挑戦 - Plus Le Toolのための補題
以下で使う記号の定義については[id:plusletool:20130427:p2]を参照。
また、以下では独自に定義した関数 \mathfrak{C}_{r} を使うが、これについては[id:plusletool:20130612:p1]を参照。

補題:32bit符号なし整数変数間の算術和演算をブール関数で表す - Plus Le Toolの続き。
上記記事の(*20)の直前の「この式から何とかして c_{i}\,,\,d_{i} を消去したい。」の続きから始める。


まずは問題を再掲しておく。

(★1)[id:plusletool:20130615:p1](*16)再掲
\begin{array}{lclcl}x_{i}&=&\mathfrak{C}_{1}\left(\Omega_{i}\right)&\,&\left(\mathrm{as}\,1\le i\le 32\right)\\c_{i+1}&=&\mathfrak{C}_{2}\left(\Omega_{i}\right)&\,&\left(\mathrm{as}\,1\le i\le 31\right)\\d_{i+2}&=&\mathfrak{C}_{4}\left(\Omega_{i}\right)&\,&\left(\mathrm{as}\,1\le i\le 30\right)\end{array}
\begin{array}{lclcl}\\c_{1}&&&=&0\\d_{1}&=&d_{2}&=&0\end{array}

\Omega_{i}=\left\{p_{i}\,,\,q_{i}\,,\,r_{i}\,,\,s_{i}\,,\,t_{i}\,,\,c_{i}\,,\,d_{i}\right\}

この漸化式を、( x_{i} ではなく) p_{i} について解きたい。
前回は間違えて x_{i} について解いてしまったが、本当は p_{i} について解く必要がある問題だったんだ。


はじめに(★1)から解く対象である p_{i} と消去対象である c_{i}\,,\,d_{i}\mathfrak{C}_{r} の外に出しておく。
そのためには[id:plusletool:20130612:p1](*D)を使えばよく、これにより(★1)の漸化式部分は(*1)のようになる。

[id:plusletool:20130612:p1](*D)再掲
\Omega=\Omega_{1}\,\cup\,\Omega_{2}\;,\;\Omega_{1}\,\cap\,\Omega_{2}=\emptyset のとき、次の式が成り立つ。

\mathfrak{C}_{r}\left(\Omega\right)=\bigoplus_{k=0}^{r}\mathfrak{C}_{k}\left(\Omega_{1}\right)\mathfrak{C}_{r-k}\left(\Omega_{2}\right)

(*1)
\begin{array}{lcrcrcrcr}x_{i}&=&\mathfrak{C}_{1}\left(\Phi_{i}'\right)&\oplus&\left(c_{i}\,\oplus\,d_{i}\,\oplus\,p_{i}\right)\\c_{i+1}&=&\mathfrak{C}_{2}\left(\Phi_{i}'\right)&\oplus&\mathfrak{C}_{1}\left(\Phi_{i}'\right)\left(c_{i}\,\oplus\,d_{i}\,\oplus\,p_{i}\right)&\oplus&\left(c_{i}p_{i}\,\oplus\,d_{i}p_{i}\,\oplus\,c_{i}d_{i}\right)\\d_{i+2}&=&\mathfrak{C}_{4}\left(\Phi_{i}'\right)&\oplus&\mathfrak{C}_{3}\left(\Phi_{i}'\right)\left(c_{i}\,\oplus\,d_{i}\,\oplus\,p_{i}\right)&\oplus&\mathfrak{C}_{2}\left(\Phi_{i}'\right)\left(c_{i}p_{i}\,\oplus\,d_{i}p_{i}\,\oplus\,c_{i}d_{i}\right)&\oplus&\mathfrak{C}_{1}\left(\Phi_{i}'\right)c_{i}d_{i}p_{i}\end{array}

\Phi_{i}'=\left\{q_{i}\,,\,r_{i}\,,\,s_{i}\,,\,t_{i}\right\}

Q.なぜ \Phi_{i} じゃなくて \Phi_{i}' を使うのですか?
A.今までの記事ではずっと \Phi_{i}=\left\{p_{i}\,,\,q_{i}\,,\,r_{i}\,,\,s_{i}\,,\,t_{i}\right\} だったから、混同を避けるため。

(*1)を p_{i} について解くのが目的なので、(*1)の第1式を適当に移行して次のように変形する。

(*2)
p_{i}=\mathfrak{C}_{1}\left(\Phi_{i}'\right)\,\oplus\,x_{i}\,\oplus\,c_{i}\,\oplus\,d_{i}

(*2)を(*1)の第2式・第3式に代入して整理すると、それぞれ(*3)(*4)のようになる。

(*3)
\begin{eqnarray}c_{i+1}&=&\mathfrak{C}_{2}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}'\right)\left(c_{i}\,\oplus\,d_{i}\,\oplus\,p_{i}\right)\,\oplus\,\left(c_{i}p_{i}\,\oplus\,d_{i}p_{i}\,\oplus\,c_{i}d_{i}\right)\\&=&\mathfrak{C}_{2}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}'\right)\left(c_{i}\,\oplus\,d_{i}\,\oplus\,\left(\mathfrak{C}_{1}\left(\Phi_{i}'\right)\,\oplus\,x_{i}\,\oplus\,c_{i}\,\oplus\,d_{i}\right)\right)\\&&\,\oplus\,\left(\left(c_{i}\,\oplus\,d_{i}\right)\left(\mathfrak{C}_{1}\left(\Phi_{i}'\right)\,\oplus\,x_{i}\,\oplus\,c_{i}\,\oplus\,d_{i}\right)\,\oplus\,c_{i}d_{i}\right)\\&=&\mathfrak{C}_{2}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}'\right)x_{i}\,\oplus\,\left(\mathfrak{C}_{1}\left(\Phi_{i}'\right)\,\oplus\,1\,\oplus\,x_{i}\right)\left(c_{i}\,\oplus\,d_{i}\right)\,\oplus\,c_{i}d_{i}\\&=&\mathfrak{C}_{2}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}'\right)\bar{x_{i}}\,\oplus\,\left(\mathfrak{C}_{1}\left(\Phi_{i}'\right)\,\oplus\,\bar{x_{i}}\right)\left(c_{i}\,\oplus\,d_{i}\right)\,\oplus\,c_{i}d_{i}\end{eqnarray}

(*4)
\begin{eqnarray}d_{i+2}&=&\mathfrak{C}_{4}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{3}\left(\Phi_{i}'\right)\left(c_{i}\,\oplus\,d_{i}\,\oplus\,p_{i}\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i}'\right)\left(c_{i}p_{i}\,\oplus\,d_{i}p_{i}\,\oplus\,c_{i}d_{i}\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}'\right)c_{i}d_{i}p_{i}\\&=&\mathfrak{C}_{4}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{3}\left(\Phi_{i}'\right)\left(c_{i}\,\oplus\,d_{i}\,\oplus\,\left(\mathfrak{C}_{1}\left(\Phi_{i}'\right)\,\oplus\,x_{i}\,\oplus\,c_{i}\,\oplus\,d_{i}\right)\right)\\&&\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i}'\right)\left(\left(c_{i}\,\oplus\,d_{i}\right)\left(\mathfrak{C}_{1}\left(\Phi_{i}'\right)\,\oplus\,x_{i}\,\oplus\,c_{i}\,\oplus\,d_{i}\right)\,\oplus\,c_{i}d_{i}\right)\\&&\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}'\right)c_{i}d_{i}\left(\mathfrak{C}_{1}\left(\Phi_{i}'\right)\,\oplus\,x_{i}\,\oplus\,c_{i}\,\oplus\,d_{i}\right)\\&=&\mathfrak{C}_{4}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{3}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{3}\left(\Phi_{i}'\right)x_{i}\\&\oplus&\left(\mathfrak{C}_{3}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i}'\right)x_{i}\right)\left(c_{i}\,\oplus\,d_{i}\right)\\&\oplus&\left(\mathfrak{C}_{2}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}'\right)x_{i}\right)c_{i}d_{i}\\&=&\mathfrak{C}_{4}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{3}\left(\Phi_{i}'\right)\bar{x_{i}}\\&\oplus&\left(\mathfrak{C}_{3}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i}'\right)\bar{x_{i}}\right)\left(c_{i}\,\oplus\,d_{i}\right)\\&\oplus&\left(\mathfrak{C}_{2}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}'\right)\bar{x_{i}}\right)c_{i}d_{i}\end{eqnarray}

(*3)(*4)をよく見ると、 \mathfrak{C}_{r}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{r-1}\left(\Phi_{i}'\right)\bar{x_{i}} の形の式が多く含まれている。
この形の式は[id:plusletool:20130612:p1](*D)により \mathfrak{C}_{r}\left(\Phi_{i}'\,\cup\,\left\{\bar{x_{i}}\right\}\right) に変形できる(∵ \Phi_{i}'\,\cap\,\left\{\bar{x_{i}}\right\}=\emptyset )。

[id:plusletool:20130612:p1](*D)再掲
\Omega=\Omega_{1}\,\cup\,\Omega_{2}\;,\;\Omega_{1}\,\cap\,\Omega_{2}=\emptyset のとき、次の式が成り立つ。

\mathfrak{C}_{r}\left(\Omega\right)=\bigoplus_{k=0}^{r}\mathfrak{C}_{k}\left(\Omega_{1}\right)\mathfrak{C}_{r-k}\left(\Omega_{2}\right)

そこで集合 \Phi_{i}'' を次のように定義する。

(*5)
\begin{eqnarray}\Phi_{i}''&=&\Phi_{i}'\,\cup\,\left\{\bar{x_{i}}\right\}\\&=&\left\{q_{i}\,,\,r_{i}\,,\,s_{i}\,,\,t_{i}\,,\,\bar{x_{i}}\right\}\end{eqnarray}

これを使うと、(*3)(*4)はそれぞれ(*6)(*7)に書き換えられる。

(*3)再掲
\begin{eqnarray}c_{i+1}&=&\mathfrak{C}_{2}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}'\right)\bar{x_{i}}\,\oplus\,\left(\mathfrak{C}_{1}\left(\Phi_{i}'\right)\,\oplus\,\bar{x_{i}}\right)\left(c_{i}\,\oplus\,d_{i}\right)\,\oplus\,c_{i}d_{i}\end{eqnarray}

(*4)再掲
\begin{eqnarray}d_{i+2}&=&\mathfrak{C}_{4}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{3}\left(\Phi_{i}'\right)\bar{x_{i}}\,\oplus\,\left(\mathfrak{C}_{3}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i}'\right)\bar{x_{i}}\right)\left(c_{i}\,\oplus\,d_{i}\right)\,\oplus\,\left(\mathfrak{C}_{2}\left(\Phi_{i}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}'\right)\bar{x_{i}}\right)c_{i}d_{i}\end{eqnarray}

(*6)
\begin{eqnarray}c_{i+1}&=&\mathfrak{C}_{2}\left(\Phi_{i}''\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}''\right)\left(c_{i}\,\oplus\,d_{i}\right)\,\oplus\,c_{i}d_{i}\end{eqnarray}

(*7)
\begin{eqnarray}d_{i+2}&=&\mathfrak{C}_{4}\left(\Phi_{i}''\right)\,\oplus\,\mathfrak{C}_{3}\left(\Phi_{i}''\right)\left(c_{i}\,\oplus\,d_{i}\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i}''\right)c_{i}d_{i}\end{eqnarray}

さて、この(*6)(*7)の形の式に見覚えがないだろうか。
実は、前回の(★1)の式中の \Phi_{i}\Phi_{i}'' に置き換えたものと同じ式なのだ。

[id:plusletool:20130713:p1](★1)再掲
\begin{array}{lclcrcr}c_{i+1}&=&\mathfrak{C}_{2}\left(\Phi_{i}\right)&\oplus&\mathfrak{C}_{1}\left(\Phi_{i}\right)\left(c_{i}\,\oplus\,d_{i}\right)&\oplus&c_{i}d_{i}\\d_{i+2}&=&\mathfrak{C}_{4}\left(\Phi_{i}\right)&\oplus&\mathfrak{C}_{3}\left(\Phi_{i}\right)\left(c_{i}\,\oplus\,d_{i}\right)&\oplus&\mathfrak{C}_{2}\left(\Phi_{i}\right)c_{i}d_{i}\end{array}

\Phi_{i}\Phi_{i}'' の要素数はどちらも5なので、前回と同じ手順をたどれば同様の式変形ができるはずだ。
そこで前回の結果を要約すると、次のようなことがいえる。

(*8)前回の要約

b_{i}'=c_{i}\,\oplus\,d_{i}\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i-1}\right)\,\oplus\,\mathfrak{C}_{4}\left(\Phi_{i-2}\right)

と置くと、

\begin{array}{lclcrcr}c_{i+1}&=&\mathfrak{C}_{2}\left(\Phi_{i}\right)&\oplus&\mathfrak{C}_{1}\left(\Phi_{i}\right)\left(c_{i}\,\oplus\,d_{i}\right)&\oplus&c_{i}d_{i}\\d_{i+2}&=&\mathfrak{C}_{4}\left(\Phi_{i}\right)&\oplus&\mathfrak{C}_{3}\left(\Phi_{i}\right)\left(c_{i}\,\oplus\,d_{i}\right)&\oplus&\mathfrak{C}_{2}\left(\Phi_{i}\right)c_{i}d_{i}\end{array}

↑の式は↓のように変形できる。

\begin{array}{lcl}b_{i+1}'&=&\mathfrak{C}_{1}\left(\Phi_{i}\right)\mathfrak{C}_{2}\left(\Phi_{i-1}\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i-1}\right)\mathfrak{C}_{4}\left(\Phi_{i-2}\right)\,\oplus\,\mathfrak{C}_{4}\left(\Phi_{i-2}\right)\mathfrak{C}_{1}\left(\Phi_{i}\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i-1}\right)\mathfrak{C}_{2}\left(\Phi_{i-2}\right)\\&\oplus&\left(\mathfrak{C}_{1}\left(\Phi_{i}\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i-1}\right)\,\oplus\,\mathfrak{C}_{4}\left(\Phi_{i-2}\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i-1}\right)\mathfrak{C}_{2}\left(\Phi_{i-2}\right)\right)b_{i}'\end{array}

これと同様の変形をするために、まず b_{i}'' を次のように定義する。

(*9)
b_{i}''=c_{i}\,\oplus\,d_{i}\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i-1}''\right)\,\oplus\,\mathfrak{C}_{4}\left(\Phi_{i-2}''\right)

このとき(*8)より、(*6)(*7)は次のようになる。

(*10)
\begin{array}{lcl}b_{i+1}''&=&\mathfrak{C}_{1}\left(\Phi_{i}''\right)\mathfrak{C}_{2}\left(\Phi_{i-1}''\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i-1}''\right)\mathfrak{C}_{4}\left(\Phi_{i-2}''\right)\,\oplus\,\mathfrak{C}_{4}\left(\Phi_{i-2}''\right)\mathfrak{C}_{1}\left(\Phi_{i}''\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i-1}''\right)\mathfrak{C}_{2}\left(\Phi_{i-2}''\right)\\&\oplus&\left(\mathfrak{C}_{1}\left(\Phi_{i}''\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i-1}''\right)\,\oplus\,\mathfrak{C}_{4}\left(\Phi_{i-2}''\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i-1}''\right)\mathfrak{C}_{2}\left(\Phi_{i-2}''\right)\right)b_{i}''\end{array}

また、(*5)(*9)を使うと(*2)は(*11)のようになる。

(*2)再掲
p_{i}=\mathfrak{C}_{1}\left(\Phi_{i}'\right)\,\oplus\,x_{i}\,\oplus\,c_{i}\,\oplus\,d_{i}

(*5)再掲
\begin{eqnarray}\Phi_{i}''&=&\Phi_{i}'\,\cup\,\left\{\bar{x_{i}}\right\}\end{eqnarray}

(*11)
p_{i}=1\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}''\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i-1}''\right)\,\oplus\,\mathfrak{C}_{4}\left(\Phi_{i-2}''\right)\,\oplus\,b_{i}''

初期値などの条件も含めて(*10)(*11)を正確に書くと、次のようになる。

(*12)
\begin{array}{lclcl}p_{1}&=&1\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{1}''\right)\\p_{2}&=&1\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{2}''\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{1}''\right)\\p_{i}&=&1\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}''\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i-1}''\right)\,\oplus\,\mathfrak{C}_{4}\left(\Phi_{i-2}''\right)\,\oplus\,b_{i}''&\,&\left(\,\mathrm{as}\,i\ge 3\,\right)\\b_{1}''&=&0\\b_{2}''&=&0\\b_{3}''&=&\mathfrak{C}_{1}\left(\Phi_{2}''\right)\mathfrak{C}_{2}\left(\Phi_{1}''\right)\\b_{i+1}''&=&\mathfrak{C}_{1}\left(\Phi_{i}''\right)\mathfrak{C}_{2}\left(\Phi_{i-1}''\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i-1}''\right)\mathfrak{C}_{4}\left(\Phi_{i-2}''\right)\,\oplus\,\mathfrak{C}_{4}\left(\Phi_{i-2}''\right)\mathfrak{C}_{1}\left(\Phi_{i}''\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i-1}''\right)\mathfrak{C}_{2}\left(\Phi_{i-2}''\right)\\&\oplus&\left(\mathfrak{C}_{1}\left(\Phi_{i}''\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i-1}''\right)\,\oplus\,\mathfrak{C}_{4}\left(\Phi_{i-2}''\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i-1}''\right)\mathfrak{C}_{2}\left(\Phi_{i-2}''\right)\right)b_{i}''&\,&\left(\,\mathrm{as}\,i\ge 3\,\right)\end{array}

(*12)には \mathfrak{C}_{1}\left(\Phi_{i}''\right)\mathfrak{C}_{2}\left(\Phi_{i-1}''\right)\mathfrak{C}_{4}\left(\Phi_{i-2}''\right) の対称式で表される部分が多く含まれている。
対称式は \mathfrak{C}_{r} を使えば簡略化できるので、そのために集合 \Psi_{i}' を次のように定義する。

(*13)
\begin{array}{lclcl}\Psi_{i}'&=&\emptyset&\,&\left(\,\mathrm{as}\,i\le 0\,\right)\\\Psi_{1}'&=&\left\{\,\mathfrak{C}_{1}\left(\Phi_{1}''\right)\,\right\}\\\Psi_{2}'&=&\left\{\,\mathfrak{C}_{1}\left(\Phi_{2}''\right)\,,\,\mathfrak{C}_{2}\left(\Phi_{1}''\right)\,\right\}\\\Psi_{i}'&=&\left\{\,\mathfrak{C}_{1}\left(\Phi_{i}''\right)\,,\,\mathfrak{C}_{2}\left(\Phi_{i-1}''\right)\,,\,\mathfrak{C}_{4}\left(\Phi_{i-2}''\right)\,\right\}&\,&\left(\,\mathrm{as}\,i\ge 3\,\right)\end{array}

これを使うと、(*12)の漸化式部分は次のように書き換えられる。

(*14)
\begin{array}{lcl}p_{i}&=&1\,\oplus\,\mathfrak{C}_{1}\left(\Psi_{i}'\right)\,\oplus\,b_{i}''\\b_{i+1}''&=&\mathfrak{C}_{2}\left(\Psi_{i}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i-1}''\right)\mathfrak{C}_{2}\left(\Phi_{i-2}''\right)\,\oplus\,\left(\mathfrak{C}_{1}\left(\Psi_{i}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i-1}''\right)\mathfrak{C}_{2}\left(\Phi_{i-2}''\right)\right)b_{i}''\end{array}

(*14)の第2式( b_{i+1}'' の式)は簡単に解くことができて、 b_{i}'' の一般式は次のように表される。

(*15)
b_{i}''=\bigoplus_{k=1}^{i-1}\left(\,\!\left(\mathfrak{C}_{2}\left(\Psi_{k}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{k-1}''\right)\mathfrak{C}_{2}\left(\Phi_{k-2}''\right)\right)\bigcap_{l=k+1}^{i-1}\left(\mathfrak{C}_{1}\left(\Psi_{l}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{l-1}''\right)\mathfrak{C}_{2}\left(\Phi_{l-2}''\right)\right)\,\!\right)

よって求めたかった p_{i} の一般式は次式で表される。

(*16)
\begin{eqnarray}p_{i}&=&1\,\oplus\,\mathfrak{C}_{1}\left(\Psi_{i}'\right)\,\oplus\,\bigoplus_{k=1}^{i-1}\left(\,\!\left(\mathfrak{C}_{2}\left(\Psi_{k}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{k-1}''\right)\mathfrak{C}_{2}\left(\Phi_{k-2}''\right)\right)\bigcap_{l=k+1}^{i-1}\left(\mathfrak{C}_{1}\left(\Psi_{l}'\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{l-1}''\right)\mathfrak{C}_{2}\left(\Phi_{l-2}''\right)\right)\,\!\right)\\&=&1\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{i}''\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{i-1}''\right)\,\oplus\,\mathfrak{C}_{4}\left(\Phi_{i-2}''\right)\\&&\,\oplus\,\bigoplus_{k=1}^{i-1}\left(\,\!\left({\mathfrak{C}_{1}\left(\Phi_{k}''\right)\mathfrak{C}_{2}\left(\Phi_{k-1}''\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{k-1}''\right)\mathfrak{C}_{4}\left(\Phi_{k-2}''\right)\\\,\oplus\,\mathfrak{C}_{4}\left(\Phi_{k-2}''\right)\mathfrak{C}_{1}\left(\Phi_{k}''\right)\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{k-1}''\right)\mathfrak{C}_{2}\left(\Phi_{k-2}''\right)}\right)\bigcap_{l=k+1}^{i-1}\left({\mathfrak{C}_{1}\left(\Phi_{l}''\right)\,\oplus\,\mathfrak{C}_{2}\left(\Phi_{l-1}''\right)\,\oplus\,\mathfrak{C}_{4}\left(\Phi_{l-2}''\right)\\\,\oplus\,\mathfrak{C}_{1}\left(\Phi_{l-1}''\right)\mathfrak{C}_{2}\left(\Phi_{l-2}''\right)}\right)\,\!\right)\end{eqnarray}


(途中からあからさまに前回のコピペだけどいいよね……)


これで5変数の算術和をブール型変数で記述することができた。
ようやく次のステップに進める。
と言っても、残りの演算はすべては論理和論理積・論理否定・排他的論理和・ビットシフトだけだから、特に難しいところはない……はず。
問題があるとしたら、計算量が多すぎて System.OutOfMemoryException 吐きそうなことくらい……かなぁ。

とにかく、今回の結果は初期seedから起動日時の直接逆算への大きな一歩になると思う。タブンネ


……
ちなみに。
今回の計算はものすごくめんどうなのが多かったけど、ブール代数式の特定の変数に式を代入して(リード・マラー標準形に)正規化させるプログラムを書いたらあっという間だった。
結論:式変形はプログラムに任せるべし。