# HG changeset patch # User atton # Date 1486633929 -32400 # Node ID c407b7403548275b20fd8c6c3a8681a9ecadc910 # Parent 54cf3b3153fe3864abdfd6ea03e79c1de1068bbd Add figure diff -r 54cf3b3153fe -r c407b7403548 paper/akasha.tex --- a/paper/akasha.tex Thu Feb 09 18:37:26 2017 +0900 +++ b/paper/akasha.tex Thu Feb 09 18:52:09 2017 +0900 @@ -158,9 +158,15 @@ 最初に、検証の対象となる赤黒木と、検証に必要な DataSegment を含む Meta DataSegment を定義する(リスト\ref{src:akasha-context})。 これが akasha のレベルで利用する Meta DataSegment である。 赤黒木自体はユーザから見るとメタレベル計算であるが、今回はその実装の検証するため、赤黒木がノーマルレベルとなる。 -よって akasha はメタメタレベルの計算とも考えられる。 +よって akasha はメタメタレベルの計算とも考えられる(図~\ref{fig:metameta})。 -% TODO: meta meta の図 +\begin{figure}[htbp] + \begin{center} + \includegraphics[width=250pt]{fig/metameta.pdf} + \caption{akasha とメタの階層構造} + \label{fig:metameta} + \end{center} +\end{figure} akasha が使う DataSegment は データの挿入順を数え上げるためには使う環状リスト \verb/Iterator/ とその要素 \verb/IterElem/、検証に使う情報を保持する \verb/AkashaInfo/、木をなぞる際に使う \verb/AkashaNode/ がある。 @@ -183,8 +189,23 @@ 同様に最も高い高さを取得し、仕様であるリスト\ref{src:assert}の assert を挿入の度に実行する。 assert は CodeSegment の結合を行なうメタ計算である \verb/meta/ を上書きすることにより実現する。 +イメージとしては、挿入を行なう Meta CodeSegment を利用するプログラム(図~\ref{fig:put}) の途中に検証用のメタ計算を挟むことで実現できる(図~\ref{fig:akashaPut})。 -% TODO: 図 +\begin{figure}[htbp] + \begin{center} + \includegraphics[width=300pt]{fig/put.pdf} + \caption{put を利用するプログラム} + \label{fig:put} + \end{center} +\end{figure} + +\begin{figure}[htbp] + \begin{center} + \includegraphics[width=300pt]{fig/akashaPut.pdf} + \caption{put を利用するプログラムのメタを上書きする} + \label{fig:akahsaPut} + \end{center} +\end{figure} \verb/meta/ はリスト\ref{src:rbtree-insert-case-2}の \verb/insertCase2/ のように軽量継続を行なう際に CodeSegment 名と DataSegment を指定するものである。 検証を行なわない通常の \verb/meta/ の実装は CodeSegment 名から対応する実体への軽量継続である(リスト\ref{src:meta})。 diff -r 54cf3b3153fe -r c407b7403548 paper/atton-master.pdf Binary file paper/atton-master.pdf has changed diff -r 54cf3b3153fe -r c407b7403548 paper/fig/akashaPut.graffle Binary file paper/fig/akashaPut.graffle has changed diff -r 54cf3b3153fe -r c407b7403548 paper/fig/akashaPut.pdf Binary file paper/fig/akashaPut.pdf has changed diff -r 54cf3b3153fe -r c407b7403548 paper/fig/metameta.graffle Binary file paper/fig/metameta.graffle has changed diff -r 54cf3b3153fe -r c407b7403548 paper/fig/metameta.pdf Binary file paper/fig/metameta.pdf has changed diff -r 54cf3b3153fe -r c407b7403548 paper/fig/put.graffle Binary file paper/fig/put.graffle has changed diff -r 54cf3b3153fe -r c407b7403548 paper/fig/put.pdf Binary file paper/fig/put.pdf has changed