changeset 40:e4bdf44eafc7

fix
author mir3636
date Thu, 12 Apr 2018 20:15:23 +0900
parents ee58fd57fd09
children d55a001df3d6
files Paper/dummy.tex Paper/ipsjcommon.sty Paper/ipsjpapers.cls Paper/ipsjpapers.sty Paper/ipsjprosym.cls Paper/ipsjsort.bst Paper/sigos.tex
diffstat 7 files changed, 3187 insertions(+), 209 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/dummy.tex	Thu Apr 12 20:15:23 2018 +0900
@@ -0,0 +1,60 @@
+%%% jdummy.def
+%
+\DeclareRelationFont{JY1}{mc}{it}{}{OT1}{cmr}{it}{}
+\DeclareRelationFont{JT1}{mc}{it}{}{OT1}{cmr}{it}{}
+\DeclareFontShape{JY1}{mc}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*min
+    <10.95><12><14.4><17.28><20.74><24.88> min10
+    <-> min10}{}
+\DeclareFontShape{JT1}{mc}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*tmin
+    <10.95><12><14.4><17.28><20.74><24.88> tmin10
+    <-> tmin10}{}
+\DeclareRelationFont{JY1}{mc}{sl}{}{OT1}{cmr}{sl}{}
+\DeclareRelationFont{JT1}{mc}{sl}{}{OT1}{cmr}{sl}{}
+\DeclareFontShape{JY1}{mc}{m}{sl}{<5> <6> <7> <8> <9> <10> sgen*min
+    <10.95><12><14.4><17.28><20.74><24.88> min10
+    <-> min10}{}
+\DeclareFontShape{JT1}{mc}{m}{sl}{<5> <6> <7> <8> <9> <10> sgen*tmin
+    <10.95><12><14.4><17.28><20.74><24.88> tmin10
+    <-> tmin10}{}
+\DeclareRelationFont{JY1}{mc}{sc}{}{OT1}{cmr}{sc}{}
+\DeclareRelationFont{JT1}{mc}{sc}{}{OT1}{cmr}{sc}{}
+\DeclareFontShape{JY1}{mc}{m}{sc}{<5> <6> <7> <8> <9> <10> sgen*min
+    <10.95><12><14.4><17.28><20.74><24.88> min10
+    <-> min10}{}
+\DeclareFontShape{JT1}{mc}{m}{sc}{<5> <6> <7> <8> <9> <10> sgen*tmin
+    <10.95><12><14.4><17.28><20.74><24.88> tmin10
+    <-> tmin10}{}
+\DeclareRelationFont{JY1}{gt}{it}{}{OT1}{cmbx}{it}{}
+\DeclareRelationFont{JT1}{gt}{it}{}{OT1}{cmbx}{it}{}
+\DeclareFontShape{JY1}{mc}{bx}{it}{<5> <6> <7> <8> <9> <10> sgen*goth
+    <10.95><12><14.4><17.28><20.74><24.88> goth10
+    <-> goth10}{}
+\DeclareFontShape{JT1}{mc}{bx}{it}{<5> <6> <7> <8> <9> <10> sgen*tgoth
+    <10.95><12><14.4><17.28><20.74><24.88> tgoth10
+    <-> tgoth10}{}
+\DeclareRelationFont{JY1}{gt}{sl}{}{OT1}{cmbx}{sl}{}
+\DeclareRelationFont{JT1}{gt}{sl}{}{OT1}{cmbx}{sl}{}
+\DeclareFontShape{JY1}{mc}{bx}{sl}{<5> <6> <7> <8> <9> <10> sgen*goth
+    <10.95><12><14.4><17.28><20.74><24.88> goth10
+    <-> goth10}{}
+\DeclareFontShape{JT1}{mc}{bx}{sl}{<5> <6> <7> <8> <9> <10> sgen*tgoth
+    <10.95><12><14.4><17.28><20.74><24.88> tgoth10
+    <-> tgoth10}{}
+\DeclareRelationFont{JY1}{gt}{sc}{}{OT1}{cmbx}{sc}{}
+\DeclareRelationFont{JT1}{gt}{sc}{}{OT1}{cmbx}{sc}{}
+\DeclareFontShape{JY1}{mc}{bx}{sc}{<5> <6> <7> <8> <9> <10> sgen*goth
+    <10.95><12><14.4><17.28><20.74><24.88> goth10
+    <-> goth10}{}
+\DeclareFontShape{JT1}{mc}{bx}{sc}{<5> <6> <7> <8> <9> <10> sgen*tgoth
+    <10.95><12><14.4><17.28><20.74><24.88> tgoth10
+    <-> tgoth10}{}
+\DeclareRelationFont{JY1}{gt}{it}{}{OT1}{cmr}{it}{}
+\DeclareRelationFont{JT1}{gt}{it}{}{OT1}{cmr}{it}{}
+\DeclareFontShape{JY1}{gt}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*goth
+    <10.95><12><14.4><17.28><20.74><24.88> goth10
+    <-> goth10}{}
+\DeclareFontShape{JT1}{gt}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*tgoth
+    <10.95><12><14.4><17.28><20.74><24.88> tgoth10
+    <-> tgoth10}{}
+\endinput
+%%%% end of jdummy.def
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/ipsjcommon.sty	Thu Apr 12 20:15:23 2018 +0900
@@ -0,0 +1,995 @@
+% Copyright (C) 1995-2007 by Hiroshi Nakashima, Yasuki Saito and
+%                            The Editorial Board of the IPSJ Journal
+%
+% ipsjcommon.sty 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
+% (revision history deleted)
+% ipsjcommon.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0)
+
+%%%%%% Sectioning Commands %%%%%%
+
+% \section:	2 rows
+% others:	1 row
+%
+% Note that \paragraph and \subparagraph act as \subsubsubsection and
+% \subsubsubsubsection resp.
+%
+% The form of sectioning header is;
+%	<1 Kanji sp> \the<sect-command> [`.' if \section] <1 Kanji sp> <title>
+% Nothe that <1 Kanji sp> is that of \normalsize.
+
+\def\section{\@startsection
+	{section}{1}{\@mojihaba}{\sec@aboveskip}{\sec@belowskip}{\fs@sec\bf}}
+\let\ipsj@section\section					% 2.04(1)
+\def\subsection{\@startsection
+	{subsection}{2}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}
+\def\subsubsection{\@startsection
+	{subsubsection}{3}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}
+\def\paragraph{\@startsection
+	{paragraph}{4}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}
+\def\subparagraph{\@startsection
+	{subparagraph}{5}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}
+
+\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\newcounter{subparagraph}[paragraph]
+
+\def\thesection{\arabic{section}}
+\def\sec@section@postfix{.}
+\def\thesubsection{\thesection.\arabic{subsection}}
+\def\thesubsubsection{\thesubsection.\arabic{subsubsection}}
+\def\theparagraph{\thesubsubsection.\arabic{paragraph}}
+\def\thesubparagraph{\theparagraph.\arabic{subparagraph}}
+
+\setcounter{secnumdepth}{5}
+
+\def\appendix{\let\sec@sec\section
+	\def\section{\@startsection
+		{section}{1}{\@mojihaba}{\z@}{\z@}{\fs@subsec\bf}}%
+	\def\thesection{\appendixprefix\arabic{section}}%
+	\def\sec@section@postfix{\appendixpostfix}%
+	\stepcounter{section}\setcounter{section}{0}%
+	\@ifnextchar[%]
+		     {\sec@oappendix}{\sec@xappendix}}
+\def\sec@xappendix{\@ifstar{\let\section\sec@sec}%
+	{\sec@sec*{\ifDS@english Appendix\else\ipsj@j@app \fi}}}% 2.12(1b)
+\def\sec@oappendix[#1]{\sec@sec*{\ifDS@english Appendix: \else
+	\ipsj@j@app\hskip\jspaceskip\fi #1}}			% 2.12(1b)
+\def\appendixprefix{A.}
+\def\appendixpostfix{}
+
+\def\acknowledgment{\par
+	{\bf \ifDS@english Acknowledgments \else\ipsj@j@ack\fi}%% 2.12(1b)
+	\hskip\@mojihaba \ignorespaces}
+\let\endacknowledgment\par
+
+\newif\ifipsj@recommendation \ipsj@recommendationfalse		% 2.04(1) >>
+\def\recommendation#1{\global\ipsj@recommendationtrue
+	\ifDS@draft\else \ra@putrcvacc\fi
+	\ipsj@section*{#1}
+}
+\def\endrecommendation{\par\vskip\baselineskip\penalty\opt@magicpenalty}
+								% 2.04(1) <<
+
+% Modified \@startsection has a trick for "2-row" of \section, which must
+% work even if \section appears the top of a page.  The BEFORESKIP must be
+% inserted with respect to the previous baseline.  So, we must go back to
+% the imaginary previous baseline at the top of a page.  That is, we do;
+%	\vskip\baselineskip \vspace*{-\baselineskip}
+% which resuls;
+% 	<a> do nothing at midpage
+%	<b> go to the first baseline by \topskip, then go back to 0th
+%	    baseline by \vspace*.
+% The trick "\vskip-\prevdepth \prevdepth\z@" will assure exact vertical
+% space even when the last line has much depth.
+%
+% \@startsection {NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}
+\def\@startsection#1#2#3#4#5#6{\if@noskipsec \leavevmode \fi
+	\par \@tempskipa #4\relax
+	\@afterindenttrue
+	\ifdim\@tempskipa<\z@ \@tempskipa-\@tempskipa \@afterindentfalse\fi
+	\if@nobreak \everypar{}\else \addpenalty{\@secpenalty}\fi
+	\ifdim\@tempskipa>\z@
+% Here is the trick for \section.
+		\vskip-\prevdepth \prevdepth\z@ \vskip\baselineskip
+		\vspace*{-\baselineskip}\vskip\@tempskipa\fi
+	\@ifstar
+	{\@ssect{#3}{#4}{#5}{#6}}{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
+
+% \@sect is modified to cope with `.' for \section and MOJI-DORI
+%
+% \@sect{NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}[TITLE]{TITLE}
+\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
+	\def\@svsec{}\else 
+	\refstepcounter{#1}
+								% 2.00(1)>>
+	\let\@@protect\protect \def\protect{\noexpand\protect\noexpand}
+	\edef\@svsec{\csname the#1\endcsname \csname sec@#1@postfix\endcsname
+		\hskip\@mojihaba} \let\protect\@@protect\fi	% 2.00(1)<<
+	\@tempskipa #5\relax
+	\ifdim \@tempskipa<\z@ 
+        	\def\@svsechd{#6\hskip #3\relax\@svsec #8}	% 2.00(1)
+	\else
+        	\begingroup #6\relax
+		\@hangfrom{\hskip #3\relax\@svsec}%
+			{\interlinepenalty\@M \sec@mojidori{#8}\par}%
+		\endgroup
+	\fi \@xsect{#5}}
+
+% \@ssect is modified to cope with MOJI-DORI
+%
+% \@sect{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}{TITLE}
+\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
+	\ifdim \@tempskipa<\z@ \def\@svsechd{#4\hskip #1\relax #5}%
+	\else \begingroup #4%
+		\@hangfrom{\hskip #1}{\interlinepenalty\@M
+			\sec@mojidori{#5}\par}\endgroup
+	\fi \@xsect{#3}}
+
+%% Modify \@xsect to avoid (buggy) \clubpenalty=10000. (H.N.)
+\def\@xsect#1{\@tempskipa #1\relax
+	\ifdim \@tempskipa<\z@
+		\glboal\@nobreakfalse \global\@noskipsectrue
+		\everypar{\global\@noskipsecfalse \hskip-\parindent
+			\begingroup \@svsechd \endgroup \unskip
+			\hskip -#1\everypar{}}%
+	\else
+		\par \nobreak
+		\vskip \@tempskipa \global\@nobreaktrue
+		\everypar{\global\@nobreakfalse
+			\if@afterindent\else {\setbox0\lastbox}\fi \everypar{}}
+	\fi\ignorespaces}
+
+% Here is a trick for MOJI-DORI of sectioning tilte.  The rule is;
+%	2 - 4 Kanji char -> 5 Kanji char
+%	otherwise    -> natural width
+%
+\def\sec@mojidori#1{\ifDS@english #1\else			% 2.12(1b)
+	\setbox0\hbox{#1}\settowidth\@tempdimb{\ipsj@j@a}%	% 2.12(1b)
+	\ifdim\wd0>4.5\@tempdimb #1\else
+	\ifdim\wd0<1.5\@tempdimb #1\else
+	\jintercharskip\fill \jasciikanjiskip\fill \jmathkanjiskip\fill
+	\leavevmode\hbox to5\@tempdimb{#1\hfil}\fi\fi\fi}
+
+%%%%%% List-like Environments %%%%%%
+%
+%		LM	RM	LW	LS	LPI	II
+% default	2K	0	0.75K	0.25K	0	0
+% \enumerate	3K	0	3K	0	0	0
+% \Enumerate	0	0	3K	0	0	3K
+% \ENUMERATE	0	0	3K	0	0	4K
+% \enumerate*	1K	0	3K	0	0	2K
+% \itemize	2K	0	2K	0	0	0
+% \Itemize	0	0	2K	0	0	2K
+% \ITEMIZE	0	0	2K	0	0	3K
+% \itemize*	1K	0	2K	0	0	1K
+% \description	2K	0	0	1K	0	-1K
+% \Description	0	0	0	1K	0	1K
+% \DESCRIPTION	0	0	0	1K	0	2K
+% \description*	1K	0	0	1K	0	0
+% \verse	3K	2K	0.75K	0.25K	-1K	-1K
+% \quotation	2K	2K	0.75K	0.25K	1K	1K
+% \quote	2K	2K	0.75K	0.25K	0	0
+%
+% where LM is \leftmargin, RM is \rightmargin, LW is \labelwidth, LS is
+% \labelsep, \LPI is \listparindent, II is \itemindent, and K is Kanji char
+% width (\@mojihaba).
+%
+% All vertical space parameters, \topsep, \partopsep, \itemsep and \parsep,
+% are 0pt.
+
+\leftmargini2\@mojihaba
+\leftmarginii2\@mojihaba
+\leftmarginiii2\@mojihaba
+\leftmarginiv2\@mojihaba
+\leftmarginv2\@mojihaba
+\leftmarginvi2\@mojihaba
+
+\def\lst@listi{\labelsep.75\@mojihaba \labelwidth.25\@mojihaba
+	\rightmargin\z@ \listparindent\z@ \itemindent\z@
+	\partopsep\z@ \parsep\z@ \topsep\z@ \itemsep\z@}
+\def\@listi{\leftmargin\leftmargini \lst@listi}
+\def\@listii{\leftmargin\leftmarginii \lst@listi}
+\def\@listiii{\leftmargin\leftmarginiii \lst@listi}
+\def\@listiv{\leftmargin\leftmarginiv \lst@listi}
+\def\@listv{\leftmargin\leftmarginv \lst@listi}
+\def\@listvi{\leftmargin\leftmarginvi \lst@listi}
+
+\@listi
+
+\def\labelenumi{(\,\theenumi\,)} 
+\def\theenumi{\arabic{enumi}} 
+\def\labelenumii{(\,\theenumii\,)}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{(\,\theenumiii\,)}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi(\theenumii)}
+\def\labelenumiv{(\,\theenumiv\,)}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else
+	\advance\@enumdepth \@ne 
+	\edef\@enumctr{enum\romannumeral\the\@enumdepth}
+	\list{\csname label\@enumctr\endcsname}{\usecounter
+		{\@enumctr}\def\makelabel##1{##1\hss}%
+		\leftmargin3\@mojihaba \labelwidth3\@mojihaba \labelsep\z@}\fi}
+\let\endenumerate\endlist
+
+\def\labelitemi{$\bullet$}
+\def\labelitemii{\bf --}
+\def\labelitemiii{$\ast$}
+\def\labelitemiv{$\cdot$}
+\def\itemize{\ifnum \@itemdepth >3 \@toodeep\else \advance\@itemdepth \@ne
+	\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+	\list{\csname\@itemitem\endcsname}{\def\makelabel##1{\hss##1\hss}%
+		\labelwidth2\@mojihaba \labelsep\z@}\fi}
+\let\enditemize\endlist
+
+\def\description{\list{}{\labelwidth\z@ \labelsep\@mojihaba
+	\itemindent\labelsep \advance\itemindent-\leftmargin
+	\def\makelabel##1{\bf ##1}}}
+\let\enddescription\endlist
+
+\let\latex@trivlist\@trivlist
+\def\lst@trivlist#1#2{\leftmargin#1\relax
+	\itemindent\labelwidth \advance\itemindent\labelsep
+	\advance\itemindent#2\relax
+	\let\@trivlist\latex@trivlist \@trivlist}
+
+\def\lst@Trivlist{\def\@trivlist{\lst@trivlist\z@\z@}}
+\def\Enumerate{\lst@Trivlist \enumerate}
+\let\endEnumerate\endlist
+\def\Itemize{\lst@Trivlist \itemize}
+\let\endItemize\endlist
+\def\Description{\lst@Trivlist \description}
+\let\endDescription\endlist
+
+\def\lst@TRIVLIST{\def\@trivlist{\lst@trivlist\z@\@mojihaba}}
+\def\ENUMERATE{\lst@TRIVLIST \enumerate}
+\let\endENUMERATE\endlist
+\def\ITEMIZE{\lst@TRIVLIST \itemize}
+\let\endITEMIZE\endlist
+\def\DESCRIPTION{\lst@TRIVLIST \description}
+\let\endDESCRIPTION\endlist
+
+\def\lst@strivlist{\def\@trivlist{\lst@trivlist\@mojihaba{-\@mojihaba}}}
+\@namedef{enumerate*}{\lst@strivlist \enumerate}
+\@namedef{endenumerate*}{\endlist}
+\@namedef{itemize*}{\lst@strivlist \itemize}
+\@namedef{enditemize*}{\endlist}
+\@namedef{description*}{\lst@strivlist \description}
+\@namedef{enddescription*}{\endlist}
+
+\def\verse{\let\\=\@centercr 
+	\list{}{\itemindent-\@mojihaba \listparindent\itemindent 
+	\rightmargin\leftmargin \advance\leftmargin\@mojihaba}\item[]}
+\let\endverse\endlist
+\def\quotation{\list{}{\listparindent\@mojihaba	\itemindent\listparindent
+	\rightmargin\leftmargin}\item[]}
+\let\endquotation\endlist
+\def\quote{\list{}{\rightmargin\leftmargin}\item[]}
+\let\endquote\endlist
+
+\def\newtheorem{\@ifstar
+	{\theo@newtheorem{\theo@it}{\ }}{\theo@newtheorem{}{\theo@sp}}}
+\def\theo@newtheorem#1#2#3{\@namedef{theo@it@#3}{#1}\@namedef{theo@sp@#3}{#2}%
+	\@ifnextchar[%]
+		     {\@othm{#3}}{\@nthm{#3}}}
+\def\@begintheorem#1#2{\DESCRIPTION \csname theo@it@\@currenvir\endcsname
+	\item[#1\csname theo@sp@\@currenvir\endcsname #2]}
+\def\@opargbegintheorem#1#2#3{\DESCRIPTION
+	\csname theo@style@\@currenvir\endcsname
+	\item[#1\csname theo@sp@\@currenvir\endcsname #2\ (#3)]}
+\let\@endtheorem\endlist					% 1.02(2)
+\ifDS@english
+\let\theo@it\it \let\theo@sp\ %
+\else
+\let\theo@it\relax \let\theo@sp\relax
+\fi
+
+%%%%%% Bibliography %%%%%%
+%
+% 1. Label format is "<nn>)".
+% 2. \leftmargin 24Q (or 2K)
+% 3. \labelsep is 6Q (or 0.5K)
+% 4. \baselineskip is 16Q(j)/15Q(e)/normal(d)
+% 5. ~ and \ is null but stretchable and (hardly) breakable.	% 2.09(1)
+
+\def\thebibliography#1{%
+	\section*{\hskip-\@mojihaba\hfill\hbox{\bib@refname}\hfill\hskip\z@}
+	\ifDS@draft \@tempdima\@mojihaba \else\@tempdima12\@Q\fi
+	\list{\arabic{enumi}\rlap{%(
+			   	  )}}%
+	     {\fs@bibliography \leftmargin2\@tempdima \labelwidth\z@
+		\labelsep\@tempdima \itemindent.5\@tempdima
+		\usecounter{enumi}\def\makelabel##1{\hss\llap{##1}}}
+	\def\newblock{\hskip .11em plus .33em minus .07em}
+	\sloppy \frenchspacing
+	\def\ {\hskip\z@ plus\fontdimen\thr@@\font \penalty5000\relax}
+								% 2.09(1)
+	\ifDS@english\else \ipsj@defcolonforbib \fi}		% 2.12(1b)(2)
+
+% (removal of \bib@refname)					% 2.12(1a)
+
+\newdimen\bib@adjustheight \bib@adjustheight-\maxdimen
+\def\endthebibliography{\endlist \par \@normalsize
+	\@tempdima\@colht \advance\@tempdima-\@colroom
+	\advance\@tempdima\pagetotal \advance\@tempdima-\prevdepth
+	\advance\@tempdima-\topskip
+	\@tempdimb\@tempdima \divide\@tempdima\baselineskip
+	\@tempcnta\@tempdima \@tempdima\@tempcnta\baselineskip
+	\advance\@tempdima-\@tempdimb
+	\ifdim\@tempdima<\z@ \advance\@tempdima\baselineskip \fi
+	\vskip-\prevdepth \vskip\@tempdima \prevdepth\z@
+	\bib@adjustheight\@tempdimb \advance\bib@adjustheight\@tempdima
+	\global\advance\bib@adjustheight\topskip
+	\if@firstcolumn\else\global\advance\bib@adjustheight\@M pt\fi}
+
+
+%%%%%% Floats %%%%%%
+
+% You may need to change following parameters
+\setcounter{topnumber}{4}
+\setcounter{bottomnumber}{4}
+\setcounter{totalnumber}{8}
+\setcounter{dbltopnumber}{4}
+\def\topfraction{.9}
+\def\bottomfraction{.9}
+\def\textfraction{.1}
+\def\dbltopfraction{.9}
+\def\floatpagefraction{.9}
+\def\dblfloatpagefraction{.9}
+
+\newcounter{figure}
+\newcounter{table}
+\def\thefigure{\@arabic\c@figure}
+\def\thetable{\@arabic\c@table}
+\def\fps@figure{tbp}
+\def\fps@table{tbp}
+\def\ftype@figure{1}
+\def\ftype@table{2}
+\def\fnum@figure{\fname@figure\thefigure}
+\def\fnum@table{\fname@table\thetable}
+\ifDS@english
+\def\fname@figure{Fig.\,}					% 2.06(1)
+\def\fname@Figure{Figure~}
+\def\fname@table{Table~}
+\def\fname@figures{Figs.\,}					% 2.12(8)>>
+\def\fname@Figures{Figures~}
+\def\fname@tables{Tables~}					% 2.12(8)<<
+\else
+\def\fname@figure{\ipsj@j@fig\fref@nobreak}		% 1.06(1), 2.12(1b)
+\let\fname@Figure\fname@figure
+\def\fname@table{\ipsj@j@tab\fref@nobreak}		% 1.06(1), 2.12(1b)
+\let\fname@figures\fname@figure					% 2.12(8)>>
+\let\fname@Figures\fname@figure
+\let\fname@tables\fname@table					% 2.12(8)<<
+\fi
+\def\fnum@efigure{Fig.\,\thefigure}				% 2.06(1)
+\def\fnum@etable{Table~\thetable}
+
+% 1.06(3) >>
+\def\figure{\let\cap@afterskip\relax \let\flt@fontsize\relax \@float{figure}}
+\def\endfigure{\end@float}
+\@namedef{figure*}{\let\cap@afterskip\relax \let\flt@fontsize\relax
+	\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+
+%% Default font for table env. is \footnotesize (H.N.)
+\def\table{\let\cap@beforeskip\relax \let\flt@fontsize\fs@table
+	\@float{table}}
+\def\endtable{\end@float}
+\@namedef{table*}{\let\cap@beforeskip\relax \let\flt@fontsize\fs@table
+	\@dblfloat{table}}					% 2.01(2)
+\@namedef{endtable*}{\end@dblfloat}
+% 1.06(3) <<
+
+\let\latex@float\@float
+\let\latex@dbflt\@dbflt
+\def\@float{\cap@linewidth\hsize \cap@hsize\hsize \latex@float}
+\def\@dbflt{\cap@linewidth.8\textwidth \cap@hsize.667\textwidth \latex@dbflt}
+\let\latex@xfloat\@xfloat					% 1.06(3)
+\def\@xfloat#1[#2]{\latex@xfloat#1[#2]\flt@fontsize}
+								% 1.06(3)
+\def\end@float{\flt@endfloat
+	\ifdim\bib@adjustheight=-\maxdimen\else
+		\advance\bib@adjustheight\@tempdima
+		\global\advance\bib@adjustheight\baselineskip \fi
+	\ifnum\@floatpenalty <\z@
+		\@nameuse{@largefloatcheck}%			% 2.00(2)
+		\@cons\@currlist\@currbox
+	\ifdim \ht\@currbox >\textheight 
+		\ht\@currbox\textheight \fi
+	\ifnum\@floatpenalty < -\@Mii 
+        	\penalty -\@Miv 
+		\@tempdima\prevdepth \vbox{} \prevdepth\@tempdima
+		\penalty\@floatpenalty
+	\else \vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@esphack
+	\fi\fi}
+\def\end@dblfloat{\if@twocolumn \flt@endfloat
+	\ifnum\@floatpenalty <\z@ \@cons\@dbldeferlist\@currbox\fi
+	\ifnum \@floatpenalty =-\@Mii \@esphack\fi\else\end@float\fi}
+\def\flt@endfloat{\par \boxmaxdepth\dp\strutbox			% 2.12(7c)
+	\global\@minipagefalse \@nameuse{outer@nobreak}\egroup	% 2.00(2)
+	\@nameuse{color@endbox}\@normalsize			% 2.00(2)
+	\@tempdima\ht\@currbox \advance\@tempdima\dp\@currbox
+	\divide\@tempdima\baselineskip \@tempcnta\@tempdima
+	\advance\@tempcnta\@ne \@tempdima\@tempcnta\baselineskip
+	\global\setbox\@currbox\vbox to\@tempdima{\box\@currbox\vfil}}
+								% 2.10(1)
+% 2.12(7a,b)>>
+\let\ipsj@cflb\@cflb
+\let\ipsj@comflelt\@comflelt
+\def\@cflb{\let\ipsj@botfigrule\botfigrule \let\botfigrule\vfil 
+	\let\@comflelt\ipsj@comfleltbot \ipsj@cflb
+	\let\@comflelt\ipsj@comflelt \let\botfigrule\ipsj@botfigrule}
+\def\ipsj@comfleltbot#1{%
+	\setbox#1\vbox to\ht#1{\vfil\unvbox#1\unskip}\ipsj@comflelt{#1}}
+% 2.12(7a,b)<<
+
+\def\cap@beforeskip{\nointerlineskip\vskip5pt}
+\def\cap@afterskip{\nointerlineskip\vskip5pt}
+\long\def\@caption#1[#2]#3{\par\begingroup
+	\fs@caption \cap@beforeskip
+	\@makecaption{{\bf \csname fnum@#1\endcsname}}{\ignorespaces#3}\par
+	\ifDS@english \cap@afterskip \fi
+	\endgroup}
+\def\ecaption{\@dblarg{\@ecaption\@captype}}
+\long\def\@ecaption#1[#2]#3{\par
+	\begingroup \fs@caption
+	\@makecaption{\csname fnum@e#1\endcsname}{\ignorespaces #3}\par
+	\cap@afterskip
+	\endgroup}
+
+\newif\ifcap@sw
+\newdimen\cap@linewidth
+\newdimen\cap@hsize
+\newcount\cap@prevgraf
+\newbox\cap@box
+\let\latex@label\label
+\long\def\@makecaption#1#2{\begingroup \gdef\cap@label{}\let\label\@gobble
+	\setbox0\hbox{#1\hskip\jspaceskip}
+	\advance\cap@linewidth-\wd0 \advance\cap@hsize-\wd0
+	\cap@makepar\cap@linewidth{#2}{\def\label##1{{%		    %1.03(1)
+		\def\protect{\noexpand\protect\noexpand}	    %1.03(1)
+		\xdef\cap@label{\cap@label\protect\label{##1}}}}}   %1.03(1)
+	\cap@swtrue
+	\ifnum\cap@prevgraf=\@ne
+		\setbox1\vbox{\unvcopy1\cap@getbox1
+			\ifhbox1 \global\setbox\cap@box\hbox{\unhbox1}
+			\ifdim\wd\cap@box>\cap@linewidth\else
+				\global\cap@swfalse \fi\fi}
+		\ifcap@sw\else
+			\cap@put{\vtop{\box\cap@box\hbox{}}}
+		\fi\fi
+	\ifcap@sw \cap@makepar\cap@hsize{#2}\relax
+	\ifnum\cap@prevgraf=\tw@
+		\setbox1\vbox{\unvcopy1\cap@getbox2\cap@getbox3
+			\ifhbox2\ifhbox3
+				\setbox2\hbox{\unhbox2}\setbox3\hbox{\unhbox3}
+				\ifdim\wd2>\cap@hsize\else
+				\ifdim\wd3>\cap@hsize\else
+				\global\cap@swfalse
+				\global\setbox\cap@box\vtop{\box3\box2\hbox{}}
+				\fi\fi\fi\fi}\fi
+	\ifcap@sw \setbox1\vtop{\hsize\cap@hsize
+		\@parboxrestore #2\par\hbox{}}\cap@put{\box1}
+	\else\cap@put{\box\cap@box}\fi
+	\fi
+	\endgroup \cap@label}
+\long\def\cap@makepar#1#2#3{\setbox1\vbox{\hsize#1\@parboxrestore
+	\rightskip\@flushglue \hfuzz\maxdimen
+	\exhyphenpenalty\z@ \finalhyphendemerits\z@
+	\let\@@par\cap@par \let\par\cap@par \global\cap@prevgraf\z@
+	#3#2\cap@par}}
+\let\cap@@par\@@par
+\def\cap@par{\cap@@par\global\advance\cap@prevgraf\prevgraf \prevgraf\z@}
+\def\cap@put#1{\hbox to\hsize{\hss\box0#1\hss}
+	\vskip-\baselineskip\prevdepth\z@}
+\def\cap@getbox#1{\@tempcnta10\relax\@whilenum\@tempcnta>0\do{%
+	\unskip\unkern\unpenalty\advance\@tempcnta\m@ne}\setbox#1\lastbox}
+
+\def\figref{\fref@ref\fname@figure}
+\def\Figref{\fref@ref\fname@Figure}
+\def\tabref{\fref@ref\fname@table}
+\let\Tabref\tabref
+\def\fref@ref#1{\@ifstar{\fref@sref{#1}}{\fref@iref\bf{#1}}}
+\def\fref@iref#1#2#3{{\@ifundefined{fref@r@#3}%
+	{#1#2\fref@doref{#3}\global\@namedef{fref@r@#3}{}}{#2\fref@doref{#3}}}}
+\def\fref@sref#1#2{#1\fref@doref{#2}}
+\def\fref@doref#1{{\let\null\relax\ref{#1}}}			% 1.06(2)
+\def\fref@nobreak{\nobreak\ifASCII\else\hskip\@@jasciikanjiskip\fi}
+								% 1.06(1)
+\def\figsref{\fref@refs\fname@figures}				% 2.12(8)>>
+\def\Figsref{\fref@refs\fname@Figures}
+\def\tabsref{\fref@refs\fname@tables}
+\let\Tabsref\tabsref
+\def\fref@refs#1{\@ifstar{\fref@irefs\relax{#1}}{\fref@irefs\bf{#1}}}
+\def\fref@irefs#1#2#3{\def\fref@list{#3}\@tempswafalse \@tempcnta\z@
+	\@for\fref@elem:=\fref@list\do{%
+		\@ifundefined{fref@r@\fref@elem}{\@tempswatrue}{}%
+		\advance\@tempcnta\@ne}%
+	\ifx#1\relax \@tempswafalse\fi
+	\ifDS@english {\if@tempswa #1\fi #2}\let\fref@temp\relax
+	\else \def\fref@temp{#2}\fi
+	\@for\fref@elem:=\fref@list\do{%
+		\if@tempswa \fref@iref{#1}{\fref@temp}{\fref@elem}%
+		\else \fref@temp\fref@doref{\fref@elem}\fi
+		\advance\@tempcnta\m@ne
+		\ifnum\@tempcnta=\@ne \fref@and
+		\else\ifnum\@tempcnta>\@ne \fref@comma \fi\fi}}
+\ifDS@english
+\def\fref@and{ and~}
+\def\fref@comma{, }
+\else
+\def\fref@and{\ipsj@j@comma}
+\let\fref@comma\fref@and
+\fi
+
+\ifDS@printer
+\def\figures{{\bf\fname@figures}}
+\def\Figures{{\bf\fname@Figures}}
+\def\tables{{\bf\fname@tables}}
+\let\Tables\tables
+\def\Ref{\fref@iref\bf\relax}
+\fi								% 2.12(8)<<
+
+\def\fig@extraspace{3mm}					%1.04(4)
+\def\figspace#1{\vskip#1\vskip\fig@extraspace}			%1.04(4)
+
+%%%%%% Footnote %%%%%%
+
+%% The following codes are from pfnote.sty, by H. Nakashima of Kyoto Univ.,
+%% to reset footnote counter at the begining of every page. (H.N.)
+
+% 1.04(2c)>>
+\def\footnote{\@ifnextchar[%]
+	{\@xfootnote}{{\PF@adjustfnote \stepcounter{\@mpfn}%
+		\def\protect{\noexpand\protect\noexpand}%
+		\xdef\@thefnmark{\thempfn}}\@footnotemark\@footnotetext}}
+\def\footnotemark{\@ifnextchar[%]
+	{\@xfootnotemark}{{\PF@adjustfnote \stepcounter{footnote}%
+		\def\protect{\noexpand\protect\noexpand}%
+		\xdef\@thefnmark{\thefootnote}}\@footnotemark}}
+% 1.04(2c)<<
+
+\newcount\PF@fnotectr\global\PF@fnotectr=\z@
+\newcount\PF@page\global\PF@page=-\@M
+\def\PF@thepage{\number\c@page}
+\def\PF@adjustfnote{\global\advance\PF@fnotectr\@ne
+	\expandafter\ifx\csname PF@fn\number\PF@fnotectr\endcsname\relax
+		\global\c@footnote\z@\else
+	\expandafter\@tempcnta\csname PF@fn\number\PF@fnotectr\endcsname\relax
+	\ifnum\@tempcnta=\PF@page\else
+		\global\PF@page\@tempcnta \global\c@footnote\z@ \fi\fi
+	\@tempcnta\c@footnote \multiply\@tempcnta\@M
+	\advance\@tempcnta\PF@fnotectr
+	\if@filesw{\let\PF@thepage\relax
+		\xdef\@gtempa{\write\@auxout{\string\PF@fnpage
+		{\number\@tempcnta}{\PF@thepage}}}}%
+		\@gtempa\fi}
+% 1.04(2a)<<
+
+% 1.04(2a)>>
+\def\PF@fnpage#1#2{\@tempcnta#1\relax \@tempcntb\@tempcnta \divide\@tempcnta\@M
+	\expandafter\xdef\csname PF@fnpage#2\endcsname{\number\@tempcnta}
+	\multiply\@tempcnta\@M \advance\@tempcntb-\@tempcnta	
+	\global\@namedef{PF@fn\number\@tempcntb}{#2}}
+% 1.04(2a)<<
+%% End of quote from pfnote.sty. (H.N.)
+
+\long\def\@makefntext#1{\leftskip20\@Q
+	\noindent\llap{\@makefnmarkforfn\hskip-\scriptspace\hskip5\@Q}#1}
+								% 1.04(2e)
+\def\@makefnmarkstar{$\@thefnmark$}				% 2.12(3)
+\def\@makefnmarkdagger{$\@thefnmark$}
+\def\@makefnmarkast{$\@thefnmark$}				% 2.12(3)
+\let\@makefnmarkforfn\@makefnmarkstar
+
+\def\@makefnmark{\smash{$^{\@thefnmark}$}}			% 2.12(3)
+								% 1.04(2d)
+						% smashed to make it
+						% zero height
+
+\def\thefootnote{\ifnum\c@footnote>0\relax{\star}\number\c@footnote\fi}
+								% 2.12(3)
+
+%%%%%% Citation %%%%%%
+
+%% The following codes for \cite are from overcite.sty by D. Arseneau, but
+%% modified for Trans. IPSJ (H.N.)
+%     O V E R C I T E . S T Y
+%
+%     version 3.2  (Mar 1993)
+%
+%     Compressed, sorted lists of superscript numerical citations.
+%     see also CITE.STY and DRFTCITE.STY
+%
+%     Copyright (C) 1989-1993 by Donald Arseneau
+%     These macros may be freely transmitted, reproduced, or modified for
+%     non-commercial purposes provided that this notice is left intact.
+%
+\def\cite{\protect\@p@cite}
+\def\@p@cite{\let\@citeY\@citey \@p@@cite}
+\def\Cite{\protect\@p@Cite}
+\def\@p@Cite{\let\@citeY\@Citey \@p@@cite}
+\def\@p@@cite{\@ifnextchar[%]
+		          {\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
+\def\@citex[#1]#2{\@citeY{\@p@citen{#2}}\if@tempswa\space[#1]\fi}
+\def\@citey#1{\leavevmode\unskip\kern\z@$\let\@cite@tiestyle\ipsj@j@citescript
+%     								% 2.06(2)
+								% 2.12(4)
+	\def\@cite@punct{,}\m@th^{\hbox{\scriptsize#1}}$\spacefactor\@m}
+\def\@Citey#1{\let\@cite@tiestyle\ipsj@j@citetext		% 2.12(4)
+								% 1.04(1)>>
+	\ifDS@english \def\@cite@punct{,\space\penalty\@highpenalty}
+	\else\def\@cite@punct{\ipsj@j@comma}\fi#1\spacefactor\@m}
+								% 1.04(1)<<
+								% 2.12(1b)
+\def\@p@citen#1{%
+	\edef\@tempa{\@ignspaftercomma,#1, \@end, }%
+	\edef\@tempa{\expandafter\@ignendcommas\@tempa\@end}%
+	\if@filesw \immediate\write\@auxout{\string\citation{\@tempa}}\fi
+	\@tempcntb\m@ne \let\@h@ld\relax \let\@citea\@empty
+	\let\@celt\relax \def\@cite@list{}%			% 2.06(3)
+	\@for\@citeb:=\@tempa\do{\@make@cite@list}%
+	\def\protect{\noexpand\protect\noexpand}%
+	\@tempcnta\m@ne \let\@celt\@compress@cite \@cite@list
+	\let\protect\relax \@h@ld}
+\def\@ignspaftercomma#1, {\ifx\@end#1\@empty\else
+	#1,\expandafter\@ignspaftercomma\fi}
+\def\@ignendcommas,#1,\@end{#1}
+
+%(
+\let\@cite@rp)
+\chardef\@cite@escape`\\
+\def\@make@cite@list{%
+    \expandafter\let\expandafter\@B@citeB\csname b@\@citeb\endcsname
+    \ifx\@B@citeB\relax
+	\@citea {\bf ?}\@cite@rp \let\@citea\@cite@punct
+	\@latex@warning{Citation `\@citeb' on page \thepage\space undefined}%
+								% 2.00(3)
+	\global\@namedef{b@\@citeb}{{\bf ?}}%
+    \else
+	\ifcat \@cite@escape\ifnum\z@<0\@B@citeB \@cite@escape\else A\fi
+	    \@tempcnta\@B@citeB \relax
+	    \ifnum \@tempcnta>\@tempcntb
+		\edef\@cite@list{\@cite@list \@celt{\@B@citeB}}%
+		\@tempcntb\@tempcnta
+	     \else
+		\edef\@cite@list{\expandafter\@sort@celt\@cite@list\@gobble @}%
+		\fi
+	\else \@citea \@B@citeB \@cite@rp \let\@citea\@cite@punct
+    \fi\fi}
+
+\def\@sort@celt#1#2{\ifx \@celt #1% parameters are \@celt {num}
+	\ifnum #2<\@tempcnta % number goes later in list
+	    \@celt{#2}\expandafter\expandafter\expandafter\@sort@celt
+	\else \@celt{\number\@tempcnta}\@celt{#2}\fi\fi}
+
+\def\@compress@cite#1{\advance\@tempcnta\@ne
+	\ifnum #1=\@tempcnta
+		\ifx\@h@ld\relax \edef\@h@ld{\@citea #1\@cite@rp}%
+		\else \edef\@h@ld{\@cite@tie{\protect\@cite@tiestyle}%
+								% 2.12(4)
+			\penalty\@highpenalty #1\@cite@rp}\fi
+	\else \@h@ld \@citea #1\@cite@rp
+		\let\@h@ld\relax
+	\fi \@tempcnta#1\relax \let\@citea\@cite@punct}
+
+%% End of quote from overcite.sty. (H.N.)
+
+\def\multicite{\protect\@p@multicite}
+\def\@p@multicite#1#2{\@citey{\@p@citen{#1}%
+	\@cite@tie\ipsj@j@citescript \@p@citen{#2}}}		% 2.12(4)
+\def\multiCite{\protect\@p@multiCite}
+\def\@p@multiCite#1#2{\@Citey{\@p@citen{#1}\@cite@tie\relax	% 2.12(4)
+	\penalty\@highpenalty \@p@citen{#2}}}
+
+
+%%%%%% Box Height Adjustment and Displayed Math %%%%%%
+
+\newbox\adj@boxa \newbox\adj@boxb
+\newdimen\adj@height
+\@tempdima\baselineskip \advance\@tempdima-\topskip
+\edef\adj@minaboveclearance{\the\@tempdima}
+\@tempdima\baselineskip \advance\@tempdima-1ex
+\edef\adj@maxaboveclearance{\the\@tempdima}
+
+\def\adj@setbhd#1{\setbox0\hbox{#1}				% 2.12(1c)>>
+	\@tempdima\baselineskip \advance\@tempdima-\ht0 \advance\@tempdima\dp0
+	\edef\adj@bhd{\the\@tempdima}}				% 2.12(1c)<<
+
+% 2.01(1) >>
+\def\adjustvboxheight{\ifinner \let\@tempa\relax
+	\let\endadjustvboxheight\relax \let\@endadjustvboxheight\relax
+	\else \let\@tempa\@adjustvboxheight \fi \@tempa}
+\def\@adjustvboxheight{\par\penalty\z@
+	\global\setbox\adj@boxa\vbox\bgroup\relax		% 1.01(3)
+	\let\@footnotetext\@mpfootnotetext			% 2.02(1)
+%								% 2.05(1)
+	\hsize\columnwidth}
+% 2.01(1) <<
+\def\endadjustvboxheight{\adj@closebox \adj@putbox
+	\ifvoid\@mpfootins\else\insert\footins{\unvbox\@mpfootins}\fi
+%								% 2.02(1)
+	\global\@ignoretrue\@endparenv}
+\def\adj@closebox{\egroup \normalsize \boxmaxdepth\@maxdepth	% 1.01(1,3)
+	\setbox\adj@boxa\vbox{\unvbox\adj@boxa}			% 1.01(3)
+	\adj@height\ht\adj@boxa
+	\advance\adj@height\adj@minaboveclearance\relax
+	\@tempdima\adj@height \divide\adj@height\baselineskip
+	\@tempcnta\adj@height \adj@height\@tempcnta\baselineskip
+	\ifdim\adj@height<\@tempdima \advance\adj@height\baselineskip\fi}
+\def\adj@putbox{\vskip-\prevdepth \prevdepth\z@ \vskip\baselineskip
+	\vspace*{-\baselineskip}\advance\@tempdima-\adj@height
+	\@tempdima-\@tempdima \advance\@tempdima\adj@minaboveclearance\relax
+	\@tempdimb\dp\adj@boxa
+	\ifdim\@tempdima>\adj@maxaboveclearance\relax
+		\advance\@tempdima-\@tempdimb \advance\@tempdima\adj@bhd\relax
+		\divide\@tempdima\tw@
+		\vbox to\adj@height{\vskip\@tempdima \box\adj@boxa \vss}
+	\else	\vbox to\adj@height{\vfil\box\adj@boxa\vskip-\@tempdimb}\fi}
+
+\newcount\adj@deadcycle
+\@namedef{adjustvboxheight*}{\adjustvboxheight}
+\@namedef{endadjustvboxheight*}{\@endadjustvboxheight}
+\def\@endadjustvboxheight{\global\adj@deadcycle10\relax
+	\@iendadjustvboxheight
+	\ifvoid\@mpfootins\else\insert\footins{\unvbox\@mpfootins}\fi
+%								% 2.05(2)
+	\global\@ignoretrue\@endparenv}
+\def\@iendadjustvboxheight{\adj@closebox
+	\ifnum\adj@deadcycle<\@ne
+	\ipsj@error{I cannot adjust too tall/deep box}{\@ehd}\fi    % 2.00(3)
+	\global\advance\adj@deadcycle\m@ne
+	\ifdim\pagegoal=\maxdimen
+		\@tempdimb\@colht \advance\@tempdimb-\topskip
+		\advance\@tempdimb\baselineskip
+	\else \@tempdimb\pagegoal
+		\advance\@tempdimb-\pagetotal \advance\@tempdimb-\pagedepth
+		\advance\@tempdimb\prevdepth \fi		% 1.01(4a)
+	\let\next\relax
+	\ifdim\adj@height<\@tempdimb \adj@putbox \else
+	\ifdim\adj@height=\@tempdimb \adj@putbox \else
+	\divide\@tempdimb\baselineskip \@tempcnta\@tempdimb	% 1.01(4b)>>
+	\@tempdimb\@tempcnta\baselineskip
+	\advance\@tempdimb-\adj@minaboveclearance\relax		% 1.01(4b)<<
+	\setbox\adj@boxa\vbox{\allowbreak\unvbox\adj@boxa}
+	\vbadness\@M \splittopskip\z@ \splitmaxdepth\@maxdepth	%1.01(1)
+	\setbox\@tempboxa\vsplit\adj@boxa to\@tempdimb
+	\setbox\adj@boxb\copy\adj@boxa
+	\setbox\@tempboxa\vbox{\unvbox\@tempboxa}
+	\@tempdimb\ht\@tempboxa \advance\@tempdimb\dp\@tempboxa
+	\ifdim\@tempdimb>\z@
+		\setbox\adj@boxa\vbox\bgroup\unvbox\@tempboxa
+		\adj@closebox \adj@putbox \newpage
+	\else \newpage \fi
+	\setbox\adj@boxa\vbox\bgroup\unvbox\adj@boxb
+	\let\next\@iendadjustvboxheight \fi\fi \next}
+
+\def\adj@eqindent{2\@mojihaba}
+\def\[{\adjustvboxheight\advance\@totalleftmargin\adj@eqindent\relax
+	\hbox to\hsize\bgroup\hskip\@totalleftmargin$\displaystyle}
+\def\]{$\hfill\egroup\endadjustvboxheight\@doendpe\ignorespaces} % 2.03(1)
+\def\equation{\refstepcounter{equation}\[}
+\def\endequation{\hfill\@eqnnum$\egroup\endadjustvboxheight}
+\def\theequation{\arabic{equation}}
+\def\@eqnnum{{\rm (\theequation)\hskip\@mojihaba}} 
+
+\def\adj@eqnlineskip{3pt}
+\def\adj@eqnlineskiplimit{2pt}
+\def\eqnarray{\futurelet\@tempa\adj@eqnarray}
+\def\adj@eqnarray{\ifx\@tempa[%]
+	\let\next\adj@ieqnarray\else\let\next\adj@xeqnarray\fi\next}
+\def\adj@ieqnarray[#1]{\@ifundefined{adj@xeqnarray#1}%
+	{\ipsj@warning{Unknown eqnarray option `#1'}\adj@xeqnarray}% 2.00(3)
+	{\@nameuse{adj@xeqnarray#1}}}
+\def\adj@xeqnarray{\adjustvboxheight
+	\advance\@totalleftmargin\adj@eqindent\relax
+	\stepcounter{equation}\let\@currentlabel=\theequation
+	\global\@eqnswtrue
+	\global\@eqcnt\z@\tabskip\z@\let\\=\@eqncr
+	\lineskip\adj@eqnlineskip \lineskiplimit\adj@eqnlineskiplimit \jot\z@
+	\halign to \hsize\bgroup\@eqnsel\hskip\@totalleftmargin
+		\hfil$\displaystyle{##}$&\global\@eqcnt\@ne	% 1.01(2)
+		\hfil$\displaystyle{}\mathrel{##}{}$\hfil
+		&\global\@eqcnt\tw@ $\displaystyle{##}$\hfil
+		\tabskip\@centering&\llap{##}\tabskip\z@\cr}
+\def\adj@xeqnarrays{\let\endadjustvboxheight\@endadjustvboxheight
+	\adj@xeqnarray}
+\@namedef{adj@xeqnarrays!}{\par\let\adjustvboxheight\relax
+	\let\endadjustvboxheight\relax \adj@xeqnarray}
+\def\endeqnarray{\@@eqncr \egroup \global\advance\c@equation\m@ne
+	\endadjustvboxheight}
+
+
+%%%%%% Miscellaneous %%%%%%
+
+%% \doublerulesep is 1pt (H.N.)
+\arraycolsep5pt \tabcolsep6pt \arrayrulewidth.4pt \doublerulesep1pt 
+\tabbingsep.5\@mojihaba
+
+\skip\@mpfootins\skip\footins
+\fboxsep3pt \fboxrule.4pt 
+
+%% We simply allow (not encourage) club and widow lines. (H.N.)
+\clubpenalty\z@ \widowpenalty\z@ \displaywidowpenalty\z@
+
+% The following redefinition influences \linebreak etc.
+\def\sloppy{\tolerance9999\hbadness9999\hfuzz.5\p@ \vfuzz.5\p@}
+
+%% For heading of TBIO papers
+\ifDS@TBIO							% 2.11(1)>>
+\def\TBIOpapercategory#1{\def\ipsj@TBIO@pcat{#1}\ignorespaces}
+\def\ipsj@TBIO@pcat{original}
+\def\ipsj@TBIO@pcat@original{Original Paper}
+\def\ipsj@TBIO@pcat@survey{Survey Paper}
+\def\ipsj@TBIO@pcat@database{Database/Software Paper}
+\def\ipsj@TBIO@pcatref{\@ifundefined{ipsj@TBIO@pcat@\ipsj@TBIO@pcat}%
+    {\ipsj@warning{TBIO paper category \ipsj@TBIO@pcat\space is undefined.}}%
+    \relax
+  \@nameuse{ipsj@TBIO@pcat@\ipsj@TBIO@pcat}}
+\fi								% 2.11(1)<<
+
+
+% 2.12(1a)>>
+\let\ipsj@j@citescript\scriptsize				% 2.12(4)>>
+\let\ipsj@j@citetext\normalsize
+\def\@cite@tie#1{\hbox{#1--}}					% 2.12(4)<<
+\def\bib@refname{References}
+\adj@setbhd{A}
+
+\ifipsj@nonjp \let\next\endinput \else \let\next\relax \fi
+\next
+
+\def\ipsj@j@a{あ}
+\def\ipsj@j@app{付録}
+\def\ipsj@j@ack{謝辞}
+\def\ipsj@j@bib{参考文献}
+\def\ipsj@j@fig{図}
+\def\ipsj@j@tab{表}
+\def\ipsj@j@comma{,}
+\def\ipsj@j@technote{テクニカルノート}
+\def\ipsj@j@invited{招待論文}
+\def\ipsj@j@sigrec{研究会推薦論文}
+\def\ipsj@j@talkabst{発表概要}
+\def\ipsj@j@presently{現在,}
+\def\ipsj@j@jipsj{情報処理学会論文誌}
+\def\ipsj@j@regpaper{論文}
+\def\ipsj@j@contactto{連絡先}
+\def\ipsj@j@abstract{概要}
+\def\ipsj@j@colon{:}
+\def\ipsj@j@year{年}
+\def\ipsj@j@month{月}
+\def\ipsj@j@day{日}
+\def\ipsj@j@lp{(}
+\def\ipsj@j@rp{)}
+\def\ipsj@j@edinch{担当編集委員}
+\def\ipsj@j@rerec{再受付}
+\def\ipsj@j@received{受付}
+\def\ipsj@j@accepted{採録}
+\def\ipsj@j@presented{発表}
+\def\ipsj@j@member{正会員}
+\def\ipsj@j@stmember{学生会員}
+\def\ipsj@j@nomember{非会員}
+
+\ifDS@english\else \ifDS@draft\else
+\sec@setskips{\ipsj@j@a}
+\fi\fi
+
+\expandafter\let\csname c@巻数\endcsname\c@volume
+\expandafter\let\csname c@号数\endcsname\c@number
+\expandafter\let\csname c@月数\endcsname\c@number
+\expandafter\let\csname c@年数\endcsname\c@year
+
+\def\ipsj@sig@PRO@j{プログラミング}
+\def\ipsj@sig@TOM@j{数理モデル化と応用}
+\def\ipsj@sig@TOD@j{データベース}
+\def\ipsj@sig@HPS@j{ハイパフォーマンスコンピューティングシステム}
+\def\ipsj@sig@CVIM@j{コンピュータビジョンとイメージメディア}
+\def\ipsj@sig@ACS@j{コンピューティングシステム}			% 2.09(2)
+
+\def\ra@nengo{平成}	%% Change here when ...
+\let\受付\received
+\let\採録\accepted
+\let\発表\presented						% 2.07(7)
+\let\再受付\rereceived
+
+\def\々{\hskip\jintercharskip\hbox to\jspaceskip{\hfil 々\hfil}%% 2.12(5)
+	\hskip\jintercharskip}
+
+\ifDS@english\else \ifDS@draft\else
+{\fs@sec \@tempdima7\jspaceskip
+\xdef\bib@refname{\hbox to\the\@tempdima{\jintercharskip\fill\ipsj@j@bib}}}
+\adj@setbhd\ipsj@j@a
+\fi\fi
+
+\def\ipsj@j@colon@command{{\nobreak				% 2.12(2)>>
+	\hbox to.7\jspaceskip{:\hss}\allowbreak
+	\@tempdima.3\jspaceskip \hskip\@tempdima minus\@tempdima
+	\allowbreak
+	\hskip\z@ minus-\@tempdima}\ignorespaces}
+\def\ipsj@defcolonforbib{\let\:\ipsj@j@colon@command}
+\ifDS@printer \ipsj@defcolonforbib \fi				% 2.12(2)<<
+
+
+%%%%%% Kinsoku Parameters %%%%%%
+
+% 1.04(3)>>
+\ifASCII
+\postbreakpenalty`\`=\@M
+\prebreakpenalty`'=\@M
+\prebreakpenalty`)=\@M
+\postbreakpenalty`(=\@M
+\prebreakpenalty`]=\@M
+\postbreakpenalty`[=\@M
+\prebreakpenalty`\}=\@M
+\postbreakpenalty`\{=\@M
+
+\prebreakpenalty`・=\@M
+\prebreakpenalty`:=\@M
+\prebreakpenalty`;=\@M
+\prebreakpenalty`?=\@M
+\prebreakpenalty`!=\@M
+
+\prebreakpenalty\jis"212D=\@M		% ´
+\postbreakpenalty\jis"212E=\@M		% `
+\postbreakpenalty\jis"2146=\@M		% ‘
+\prebreakpenalty\jis"2147=\@M		% ’
+\postbreakpenalty\jis"2148=\@M		% “
+\prebreakpenalty\jis"2149=\@M		% ”
+
+\prebreakpenalty`)=\@M
+\postbreakpenalty`(=\@M
+\prebreakpenalty`}=\@M
+\postbreakpenalty`{=\@M
+\prebreakpenalty`]=\@M
+\postbreakpenalty`[=\@M
+\postbreakpenalty`‘=\@M
+\prebreakpenalty`’=\@M
+
+\postbreakpenalty\jis"214C=\@M		%〔
+\prebreakpenalty\jis"214D=\@M		% 〕
+\postbreakpenalty\jis"2152=\@M		% 〈
+\prebreakpenalty\jis"2153=\@M		% 〉
+\postbreakpenalty\jis"2154=\@M		% 《
+\prebreakpenalty\jis"2155=\@M		% 》
+\postbreakpenalty\jis"2156=\@M		% 「
+\prebreakpenalty\jis"2157=\@M		% 」
+\postbreakpenalty\jis"2158=\@M		% 『
+\prebreakpenalty\jis"2159=\@M		% 』
+\postbreakpenalty\jis"215A=\@M		% 【
+\prebreakpenalty\jis"215B=\@M		% 】
+
+\prebreakpenalty`ー=\@M						% 2.12(6)
+\prebreakpenalty`〜=\@M						% 2.12(6)
+
+\prebreakpenalty`ぁ=\@M
+\prebreakpenalty`ぃ=\@M
+\prebreakpenalty`ぅ=\@M
+\prebreakpenalty`ぇ=\@M
+\prebreakpenalty`ぉ=\@M
+\prebreakpenalty`っ=\@M
+\prebreakpenalty`ゃ=\@M
+\prebreakpenalty`ゅ=\@M
+\prebreakpenalty`ょ=\@M
+\prebreakpenalty\jis"246E=\@M		% ゎ
+\prebreakpenalty`ァ=\@M
+\prebreakpenalty`ィ=\@M
+\prebreakpenalty`ゥ=\@M
+\prebreakpenalty`ェ=\@M
+\prebreakpenalty`ォ=\@M
+\prebreakpenalty`ッ=\@M
+\prebreakpenalty`ャ=\@M
+\prebreakpenalty`ュ=\@M
+\prebreakpenalty`ョ=\@M
+\prebreakpenalty\jis"256E=\@M		% ヮ
+\prebreakpenalty\jis"2575=\@M		% ヵ
+\prebreakpenalty\jis"2576=\@M		% ヶ
+
+\fi
+% 1.04(3)<<
+% 2.12(1a)<<
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/ipsjpapers.cls	Thu Apr 12 20:15:23 2018 +0900
@@ -0,0 +1,16 @@
+% Copyright (C) 1995-2007 by Hiroshi Nakashima, Yasuki Saito and
+%                            The Editorial Board of the IPSJ Journal
+%
+% ipsjpapers.cls 13-Mar-07 by Hiroshi Nakashima (ver 2.12)
+% (revision history deleted)
+% ipsjpapers.cls  1-Apr-96 by Hiroshi Nakashima (ver 2.00)
+
+\ifx\pfmtname\undefined
+\NeedsTeXFormat{LaTeX2e}
+\else
+\NeedsTeXFormat{pLaTeX2e}
+\fi
+
+\ProvidesClass{ipsjpapers}[2007/06/15 ver 2.12]
+\input{ipsjpapers.sty}
+\endinput
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/ipsjpapers.sty	Thu Apr 12 20:15:23 2018 +0900
@@ -0,0 +1,1919 @@
+% Copyright (C) 1995-2007 by Hiroshi Nakashima, Yasuki Saito and
+%                            The Editorial Board of the IPSJ Journal
+%
+% ipsjpapers.sty 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
+% (revision history deleted)
+% ipsjpapers.sty 24-Apr-95 by Hiroshi Nakashima (ver 1.0)
+% ipsjpapers.sty 30-Nov-93 by Hiroshi Nakashima
+% ipsjpapers.sty 3-Feb-93 by Yaski Saito
+% compsoft.sty 22-April-92 by Yaski Saito
+% compsoft.sty 18-July-90 by Hideki Isozaki 
+% j-article.sty 10-Feb-89 from report.sty 16-Mar-88
+
+%%%%%% LaTeX Version %%%%%%
+
+% 2.00(1) >>
+%% \ifASCII is true if ASCII version Japanese TeX, which doesn't have
+%% \jintercharskip (H.N.)
+\newif\ifipsj@nonjp \ipsj@nonjpfalse				% 2.12(1a)
+\newif\ifASCII \ASCIIfalse
+\ifx\jintercharskip\undefined \ASCIItrue
+\ifx\kanjiskip\undefined \ipsj@nonjptrue			% 2.12(1a)
+\fi\fi
+\newif\if@LaTeX@e \@LaTeX@efalse				% 1.06(1)
+\newif\if@LaTeX@eN \@LaTeX@eNfalse				% 2.00(1)
+\def\@tempa{LaTeX2e}						% 1.06(1)
+\ifx\fmtname\@tempa \@LaTeX@etrue				% 1.06(1)
+\ifx\xpt\undefined \@LaTeX@eNtrue \fi\fi			% 2.00(1)
+% 2.00(1) <<
+
+
+
+%%%%%% Document Styles %%%%%%
+
+% 2.00(2) >>
+\newif\ifDS@printer \DS@printerfalse
+\newif\ifDS@english \DS@englishfalse
+\newif\ifDS@technote \DS@technotefalse
+\newif\ifDS@preface \DS@prefacefalse
+\newif\ifDS@draft \DS@draftfalse
+\newif\ifDS@techrep \DS@techrepfalse				% 1.05(2)
+\newif\ifDS@sigrecommended \DS@sigrecommendedfalse		% 2.04(1)
+\newif\ifDS@invited \DS@invitedfalse				% 2.06(1)
+\newif\ifDS@abstract \DS@abstractfalse				% 2.07(7)
+\newif\ifDS@private \DS@privatefalse				% 2.07(8)
+\newif\ifDS@anonymous \DS@anonymousfalse			% 2.10(1)
+\newif\ifDS@TBIO \DS@TBIOfalse					% 2.11(1)
+\newif\ifDS@online \DS@onlinefalse				% 2.12(4a)
+
+\if@LaTeX@eN
+\DeclareOption{printer}{\DS@printertrue}			% 2.09(1)
+								% 2.12(2)
+\DeclareOption{english}{\DS@englishtrue}
+\DeclareOption{technote}{\DS@technotetrue}
+\DeclareOption{preface}{\DS@prefacetrue}
+\DeclareOption{draft}{\DS@drafttrue}
+\DeclareOption{techrep}{\DS@techreptrue}
+\DeclareOption{sigrecommended}{\DS@sigrecommendedtrue}		% 2.04(1)
+\DeclareOption{invited}{\DS@invitedtrue}			% 2.06(1)
+\DeclareOption{abstract}{\DS@abstracttrue}			% 2.07(7)
+\DeclareOption{private}{\DS@privatetrue}			% 2.07(8)
+\DeclareOption{anonymous}{\DS@anonymoustrue}			% 2.10(1)
+\DeclareOption{TBIO}{\DS@TBIOtrue \DS@englishtrue}		% 2.11(1)
+\DeclareOption{online}{\DS@onlinetrue \DS@printertrue \DS@englishtrue}
+								% 2.12(4a)
+\DeclareOption{10pt}{\def\@ptsize{0}}
+\DeclareOption{11pt}{\def\@ptsize{1}}
+\DeclareOption{12pt}{\def\@ptsize{2}}
+\ExecuteOptions{10pt}
+\ProcessOptions
+\def\ipsj@warning{\ClassWarning{ipsjpapers}}			% 2.00(3)
+\def\ipsj@error{\ClassError{ipsjpapers}}			% 2.00(3)
+\newskip \old@latex@skip					% 2.00(14)
+\let\@maxsep\old@latex@skip					% 2.00(14)
+\let\@dblmaxsep\old@latex@skip					% 2.00(14)
+
+\else
+\expandafter\ifx\csname ver@ipsjpapers.cls\endcsname\relax
+\typeout{Document Style `ipsjpapers' (ver 2.12) <15 Jun 2007>.}	% 2.05(1)
+\fi % \ifx
+
+\def\ds@printer{\relax}						% 2.09(1)
+\def\ds@english{\DS@englishtrue}
+\def\ds@technote{\DS@technotetrue}
+\def\ds@preface{\DS@prefacetrue}
+\def\ds@draft{\DS@drafttrue}
+\def\ds@techrep{\DS@techreptrue}				% 1.05(2)
+\def\ds@sigrecommended{\DS@sigrecommendedtrue}			% 2.04(1)
+\def\ds@invited{\DS@invitedtrue}				% 2.06(1)
+\def\ds@abstract{\DS@abstracttrue}				% 2.07(7)
+\def\ds@private{\DS@privatetrue}				% 2.07(8)
+\def\ds@anonymous{\DS@anonymoustrue}				% 2.10(1)
+\def\ds@TBIO{\DS@TBIOtrue \DS@englishtrue}			% 2.11(1)
+\def\ds@online{\DS@onlinetrue \DS@printertrue \DS@englishtrue}	% 2.12(4a)
+
+% 1.04(3)>>
+\def\@ptsize{0}
+\@namedef{ds@11pt}{\def\@ptsize{1}}
+\@namedef{ds@12pt}{\def\@ptsize{2}} 
+% 1.04(3)<<
+
+\@options
+\let\ipsj@warning\@warning					% 2.00(3)
+\let\@latex@warning\@warning					% 2.00(3)
+\def\ipsj@error#1#2{\errhlp{#2}\errmessge{#1}}			% 2.00(3)
+\fi % \if@LaTeX@eN
+% 2.00(2) <<
+
+\ifx\@classoptionslist\undefined\else				% 2.03(1) >>
+\def\ipsj@draft@option{draft}
+\def\ipsj@remove@draft@option{\def\@tempb{}%
+	\@for\@tempa:=\@classoptionslist\do{%
+		\ifx\@tempa\ipsj@draft@option\else
+		\edef\@tempb{\@tempb,\@tempa}\fi}%
+	\ifx\@tempb\@empty \def\@classoptionslist{}\else
+	\expandafter\ipsj@remove@draft@ption\@tempb\@nil\fi}
+\def\ipsj@remove@draft@ption,#1\@nil{%
+	\def\@classoptionslist{#1}}
+\ipsj@remove@draft@option
+\fi % \ifx							% 2.03(1) <<
+
+\ifipsj@nonjp \DS@englishtrue \fi				% 2.12(1a)
+
+%%%%%% Basics %%%%%%
+
+\newdimen\@Q \@Q=0.25mm
+
+\lineskip\z@ \normallineskip\z@ 
+\lineskiplimit\z@ \normallineskiplimit\z@
+\abovedisplayskip\z@ \belowdisplayskip\z@
+\abovedisplayshortskip\z@ \belowdisplayshortskip\z@
+
+\def\baselinestretch{1}
+\jot\z@ 
+
+\ifDS@draft\def\next{\input{ipsjdrafts.sty}\endinput}\else\let\next\relax\fi
+\next
+
+\@twosidetrue
+
+%%%%%% Fonts %%%%%%
+% \finvedm(dg)		dm5		\vpt	\tiny		fn-mark
+% \sixdm(dg)		dm6		\vipt	\scriptsize
+% \sevendm(dg)		dm7		\vipt	\footnotesize	f-note, capt
+%	10Q = 7.11304pt -> w(min7) = 6.73550pt
+% \eightdm(dg)		dm8		\viiipt	\small		abst, header
+%	11Q = 7.82434pt -> w(min8) = 7.69772pt
+% \eightdm(dg)half	dm9		\ixpt	\normalsize	main text
+%	12Q = 8.53564pt -> w(min9) = 8.65994
+% \tendm(dg)		dm10		\xpt	\large		sec title
+%	13Q = 9.24695pt -> w(min10) = 9.62216pt
+% \tendm(dg)half	dm10*1095	\xipt	\Large		author names
+%	15Q =10.66956pt -> w(min10*1095) = 10.53625pt
+% (\twlvdm)		(dm12)		\xiipt	\LARGE		e-title
+% \twelvedm(dg)half	dm12*1095	\xivpt	\huge		title
+%			min10*1440
+%	18Q =12.80347pt -> w(min10*1440) = 13.8559pt
+%
+% Note that cm fonts follows LaTeX standard. (e.g. \viiipt -> cmr8, etc.)
+
+% 2.00(4)>>
+\if@LaTeX@e
+\ifASCII
+\def\ipsj@declare@font#1#2#3{{\fontsize{#3}{\z@}#2\selectfont	    % 2.00(5)>>
+	\edef\@tempa{\ifipsj@nonjp \the\font \else \the\jfont \fi}  % 2.12(1b)
+	\expandafter\global\expandafter\let\expandafter#1\@tempa}}  % 2.00(5)<<
+
+\iffalse	% ASCII LaTeX2e printer settings is removed	% 2.12(2a)
+\else		% ASCII LaTeX2e non-printer
+\ifipsj@nonjp							% 2.12(1b)>>
+\ipsj@declare@font\fn@fontv\rmfamily\@vpt
+\ipsj@declare@font\fn@fontvi\rmfamily\@vpt
+\ipsj@declare@font\fn@fontvii\rmfamily\@vpt
+% no declaration for \fn@fontxv					% 2.12(1b)<<
+\else % \ifipsj@nonjp
+\ipsj@declare@font\fn@fontv\mcfamily\@vpt
+\ipsj@declare@font\fn@fontvi\mcfamily\@vpt
+\ipsj@declare@font\fn@fontvii\mcfamily\@vpt
+\ipsj@declare@font\fn@fontxv\gtfamily\@xipt
+\fi\fi %\ifipsj@nonjp\iffalse
+
+\else % \ifASCII = NTT LaTeX2e
+\def\ipsj@declare@font#1#2#3{{\fontsize{#3}{\z@}#2\selectfont	    % 2.00(5)
+	\xdef#1{\expandafter\noexpand\csname\jf@ntn@me\endcsname}}} % 2.00(5)
+\ipsj@declare@font\fn@fontv\dm\@vpt
+\ipsj@declare@font\fn@fontvi\dm\@vpt
+\ipsj@declare@font\fn@fontvii\dm\@vpt
+\ipsj@declare@font\fn@fontxv\dg\@xipt
+\fi % \ifASCII
+% 2.00(4) <<
+
+\else % \if@LaTeX@e = LaTeX 2.09				% 2.00(4)
+%% Fonts for ASCII TeX. (H.N.)
+\ifASCII
+\iffalse	% ASCII LaTeX 2.09 printer settings is removed	% 2.12(2a)
+\else \ifipsj@nonjp\else					% 2.12(1b)
+\font\fivedm		min5
+\font\fivedg		goth5
+\font\sixdm		min6
+\font\sixdg		goth6
+\font\sevendm		min7
+\font\sevendg		goth7
+\font\eightdm		min8
+\font\eightdg		goth8
+\font\eightdmhalf	min9
+\font\eightdghalf	goth9
+\font\tendm		min10
+\font\tendg		goth10
+\font\tendmhalf		min10 scaled\magstephalf
+\font\tendghalf		goth10 scaled\magstephalf
+\font\twelvedm		min10 scaled\magstep1
+\font\twelvedg		goth10 scaled\magstep1
+\font\twelvedmhalf	min10 scaled\magstep2
+\font\twelvedghalf	goth10 scaled\magstep2
+\let\fn@fontv\fivedm
+\let\fn@fontvi\fivedm
+\let\fn@fontvii\fivedm
+\let\fn@fontxv\tendghalf
+
+\fi\fi % \ifipsj@nonjp\iffalse
+
+%% ASCII doesn't have \old@Npt. (H.N.)
+\let\old@@vpt\vpt
+\let\old@@vipt\vipt
+\let\old@@viipt\viipt
+\let\old@@viiipt\viiipt
+\let\old@@ixpt\ixpt
+\let\old@@xpt\xpt
+\let\old@@xipt\xipt
+\let\old@@xiipt\xiipt
+\let\old@@xivpt\xivpt
+
+\ifipsj@nonjp							% 2.12(1b)>>
+\def\old@vpt{\old@@vpt}
+\def\old@vipt{\old@@vipt}
+\def\old@viipt{\old@@viipt}
+\def\old@viiipt{\old@@viiipt}
+\def\old@ixpt{\old@@ixpt}
+\def\old@xpt{\old@@xpt}
+\def\old@xipt{\old@@xipt}
+\def\old@xiipt{\old@@xiipt}
+\def\old@xivpt{\old@@xivpt}					% 2.12(1b)<<
+\else % \ifipsj@nonjp
+\def\old@vpt{\old@@vpt\jspaceskip1zw\relax}
+\def\old@vipt{\old@@vipt\jspaceskip1zw\relax}
+\def\old@viipt{\old@@viipt\jspaceskip1zw\relax}
+\def\old@viiipt{\old@@viiipt\jspaceskip1zw\relax}
+\def\old@ixpt{\old@@ixpt\jspaceskip1zw\relax}
+\def\old@xpt{\old@@xpt\jspaceskip1zw\relax}
+\def\old@xipt{\old@@xipt\jspaceskip1zw\relax}
+\def\old@xiipt{\old@@xiipt\jspaceskip1zw\relax}
+\def\old@xivpt{\old@@xivpt\jspaceskip1zw\relax}
+\fi % \ifipsj@nonjp
+								% 2.00(6)
+								% 1.06(2)
+
+%% ASCII doesn't have \dg nor \dm. (H.N.)
+\ifipsj@nonjp\else						% 2.12(1b)
+\def\dg{\protect\pdg}
+\def\dm{\protect\pdm}
+%% Redefine \gt and \mc
+\def\gt{\protect\pdg}
+\def\mc{\protect\pdm}
+\let\pdm\relax
+\fi % \ifipsj@nonjp
+
+\else % \ifASCII
+%% Fonts for NTT jTeX
+%% \magstephalf and \magstep1 may cause trouble in older versions.
+
+\jfont\fivedm=dm5
+\jfont\fivedg=dg5
+\jfont\sixdm=dm6
+\jfont\sixdg=dg6
+\jfont\sevendm=dm7
+\jfont\sevendg=dg7
+\jfont\eightdm=dm8
+\jfont\eightdg=dg8
+\jfont\eightdmhalf=dm9
+\jfont\eightdghalf=dg9
+\jfont\tendm=dm10
+\jfont\tendg=dg10
+\jfont\tendmhalf=dm10 scaled 1095
+\jfont\tendghalf=dg10 scaled 1095
+\jfont\twelvedm=dm12
+\jfont\twelvedg=dg12
+\jfont\twelvedmhalf=dm12 scaled 1095
+\jfont\twelvedghalf=dg12 scaled 1095
+\let\fn@fontv\fivedm
+\let\fn@fontvi\fivedm
+\let\fn@fontvii\fivedm
+\let\fn@fontxv\tendghalf
+								% 1.06(3)
+\fi % \ifASCII
+\fi % \if@LaTeX@e
+
+\ifx\jfsize\undefined \newcount\jfsize \fi			% 1.06(2)
+
+\ifASCII						% 1.06(3),2.00(6)>>
+\ifipsj@nonjp\else						% 2.12(1b)
+\let\setjglues\relax
+\let\jintercharskip\kanjiskip
+\let\jasciikanjiskip\xkanjiskip
+\let\jmathkanjiskip\xkanjiskip
+\newdimen\jspaceskip
+
+\def\defjintercharskip#1#2#3#4{\@asciiwarning{\defjintercharskip}}
+\def\defjasciikanjiskip#1#2#3#4{\@asciiwarning{\defjasciicharskip}}
+\def\defmathkanjiskip#1#2#3#4{\@asciiwarning{\defmathcharskip}}
+\def\defjspaceskip#1#2#3#4{\@asciiwarning{\defjspaceskip}}
+							
+\def\@asciiwarning#1{\ipsj@warning{\string#1\space		% 2.00(3)
+	is not supported in ASCII version}}
+							% 1.06(3),2.00(6)<<
+\fi % \ifipsj@nonjp
+\else % \ifASCII						% 2.00(7)>>
+\if@LaTeX@e
+\ipsj@declare@font\fn@eightdmhalf\dm\@ixpt
+\ipsj@declare@font\fn@eightdghalf\dg\@ixpt
+\else
+\def\fn@eightdmhalf{\eightdmhalf}
+\def\fn@eightdghalf{\eightdghalf}
+\fi % \if@LaTeX@e
+\ifx\setjglues\undefined\else
+\expandafter\defjintercharskip\fn@eightdmhalf{0pt}{1.4pt}{0.5pt}
+\expandafter\defjintercharskip\fn@eightdghalf{0pt}{1.4pt}{0.5pt}
+\expandafter\defjasciikanjiskip\fn@eightdmhalf{2pt}{1pt}{1pt}
+\expandafter\defjasciikanjiskip\fn@eightdghalf{2pt}{1pt}{1pt}
+\expandafter\defjmathkanjiskip\fn@eightdmhalf{2pt}{1pt}{1pt}
+\expandafter\defjmathkanjiskip\fn@eightdghalf{2pt}{1pt}{1pt}
+\fi % \if@LaTeX@e						% 2.00(7)<<
+\fi % \ifASCII							% 2.00(4)
+
+\if@LaTeX@e							% 2.00(8)>>
+\if@LaTeX@eN
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
+\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
+\ifASCII \ifipsj@nonjp\else					% 2.12(1b)
+\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
+\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
+\fi\fi\fi % \ifipsj@nonjp\ifASCII\if@LaTeX@eN
+
+\ifASCII \ifipsj@nonjp\else					% 2.12(1b)
+\def\dm{\mc}
+\def\dg{\gt}
+\fi\fi\fi % \ifipsj@nonjp\ifASCII\if@LaTeX@e			% 2.00(8)<<
+
+%%%%%% Basic Font Size Macros %%%%%%
+
+\if@LaTeX@e					% 1.06(4),2.00(9),2.04(3)>>
+\def\@setsize#1#2#3#4{\@setfontsize#1{#4}{#2}\ipsj@setjspaceskip}
+\let\ipsj@setjspaceskip\relax			% 2.12(1b)>>
+\ifASCII \ifipsj@nonjp\else
+\def\ipsj@setjspaceskip{\jspaceskip1zw\relax}
+\fi\fi % \ifipsj@nonjp\ifASCII			% 2.12(1b)<<
+						% 1.06(4),2.00(9),2.04(3)<<
+
+%% \vipt etc. are redefined to use appropriate Japanese fonts.
+\else % \if@LaTeX@e						% 2.00(9)
+\ifipsj@nonjp\else						% 2.12(1b)
+\def\vpt{\old@vpt\fivedm\let\pdg\fivedg\let\pdm\fivedm\jfsize=5\relax}
+\def\vipt{\old@vipt\sixdm\let\pdg\sixdg\let\pdm\sixdm\jfsize=6\relax}
+\def\viipt{\old@viipt\sevendm\let\pdg\sevendg\let\pdm\sevendm\jfsize=7\relax}
+\def\viiipt{\old@viiipt\eightdm\let\pdg\eightdg\let\pdm\eightdm\jfsize=8\relax}
+\def\ixpt{\old@ixpt\eightdmhalf\let\pdg\eightdghalf\let\pdm\eightdmhalf
+	\jfsize=9\relax \@ixptboldmath}				% 1.02(2)
+\def\xpt{\old@xpt\tendm\let\pdg\tendg\let\pdm\tendm\jfsize=10\relax}
+\def\xipt{\old@xipt\tendmhalf\let\pdg\tendghalf\let\pdm\tendmhalf\jfsize=11
+	\relax}
+\def\xiipt{\old@xiipt\twelvedm\let\pdg\twelvedg\let\pdm\twelvedm
+	\jfsize=12\relax}
+\def\xivpt{\old@xivpt\twelvedmhalf\let\pdg\twelvedghalf\let\pdm\twelvedmhalf
+	\jfsize=14\relax}
+\fi\fi % \ifipsj@nonjp\if@LaTeX@e				% 2.00(9)
+
+\if@LaTeX@e							% 1.06(5)
+\let\@ixptboldmath\relax					% 1.06(5)
+\else								% 1.06(5)
+% 1.02(2) >>
+\iffalse	% printer setting removed			% 2.12(2a)
+\else
+\def\@ixptboldmath{%
+	\def\unboldmath{\everymath{}\everydisplay{}\@nomath\unboldmath
+		\textfont\@ne\ninmi 
+		\textfont\tw@\ninsy \textfont\lyfam\ninly
+		\@boldfalse}\@boldfalse
+% 1.03(1) >>
+	\def\boldmath{\@ifundefined{ninmib}{\global\font\ninmib\@mbi 
+		\global\font\ninsyb\@mbsy\relax
+		\global\font\ninlyb\@lasyb\relax
+		\@addfontinfo\@ixpt
+			{\def\boldmath{\everymath{\mit}\everydisplay{\mit}%
+				\@prtct\@nomathbold
+				\textfont\@ne\ninmib \textfont\tw@\ninsyb 
+				\textfont\lyfam\ninlyb \@prtct\@boldtrue}}}{}%
+	\@ixpt\boldmath}}
+% 1.03(1) <<
+\fi % \iffalse
+% 1.02(2) <<
+\fi % \if@LaTeX@e						% 1.06(5)
+
+
+%%%%%% Font Size Macros %%%%%%
+
+\def\fs@setsize#1#2#3#4{\normalsize\dimen@\normalbaselineskip
+	\@ifstar{\@setsize{#1}{\dimen@}{#3}{#4}}%
+		{\@setsize{#1}{#2}{#3}{#4}}}
+
+% s = (3*b - (h' + d') - (h + d))/2
+% s_a = s + h' + d - b
+% s_b = s + h + d' - b
+\def\sec@setskips#1{\setbox0\hbox{\fs@sec\bf#1}\setbox1\hbox{#1}
+	\@tempdima3\baselineskip
+	\advance\@tempdima-\ht0 \advance\@tempdima-\dp0
+	\advance\@tempdima-\ht1 \advance\@tempdima-\dp1
+	\divide\@tempdima\tw@ \advance\@tempdima-\baselineskip
+	\@tempdimb\@tempdima
+	\advance\@tempdima\ht0 \advance\@tempdima\dp1
+	\advance\@tempdimb\ht1 \advance\@tempdimb\dp0
+	\edef\sec@aboveskip{\the\@tempdima}
+	\edef\sec@belowskip{\the\@tempdimb}}
+
+\ifDS@english
+% size		pt	\baselineskip	  size		\?pt	\baselineskip
+% \normalsize	10	16Q		  \large	11	18Q (*)
+% \small	 9	15Q		  \Large	12	22Q
+% \footnotesize	 8	13Q		  \LARGE	14	26Q (*)
+% \scriptsize	 6	8pt (*)		  \huge		18	30Q (*)
+% \tiny		 5	6pt (*)		  \Huge		18	30Q (*)
+% * : not measured
+
+\def\@normalsize{\@setsize\normalsize{16\@Q}\xpt\@xpt}
+\def\small{\fs@setsize\small{15\@Q}\ixpt\@ixpt}
+\def\footnotesize{\fs@setsize\footnotesize{13\@Q}\viiipt\@viiipt}
+\def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
+\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
+\def\large{\@setsize\Large{18\@Q}\xipt\@xipt}
+\def\Large{\@setsize\LARGE{22\@Q}\xiipt\@xiipt}
+\def\LARGE{\@setsize\LARGE{26\@Q}\xivpt\@xivpt}
+\def\huge{\@setsize\Huge{30\@Q}\xviipt\@xviipt}
+\let\Huge\huge
+
+\ifDS@techrep							% 1.05(2)>>
+\def\@normalsize{\@setsize\normalsize{17\@Q}\xpt\@xpt}
+\fi								% 1.05(2)<<
+
+\if@LaTeX@e							% 2.00(10)>>
+\let\normalsize\@normalsize
+\fi								% 2.00(10)<<
+
+\let\fs@footnote\footnotesize
+\let\fs@caption\footnotesize
+\let\fs@table\footnotesize
+\let\fs@eabst\footnotesize
+\let\fs@header\footnotesize
+\let\fs@footer\footnotesize
+\let\fs@bibliography\small
+\let\fs@subsec\normalsize
+\let\fs@sec\normalsize
+\let\fs@type\large
+\let\fs@eauthor\large
+\let\fs@title\Large
+
+\@normalsize
+
+\sec@setskips{A}
+
+\else % \ifDS@english
+% size		pt	\baselineskip	  size		\?pt	\baselineskip
+% \normalsize	 9	19Q		  \large	10	19Q
+% \small	 8	14Q		  \Large	11	22Q
+% \footnotesize	 7	14Q		  \LARGE	12	18Q
+% \scriptsize	 6	8pt (*)		  \huge		14	26Q
+% \tiny		 5	6pt (*)		  \Huge		14	26Q
+% * : not measured
+
+\def\@normalsize{\@setsize\normalsize{19\@Q}\ixpt\@ixpt}
+\def\small{\fs@setsize\small{14\@Q}\viiipt\@viiipt}
+\def\footnotesize{\fs@setsize\footnotesize{14\@Q}\viipt\@viipt}
+\def\scriptsize{\@setsize\scriptsize{8pt}\vipt\@vipt}
+\def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
+\def\large{\@setsize\large{19\@Q}\xpt\@xpt}
+\def\Large{\@setsize\Large{22\@Q}\xipt\@xipt}
+\def\LARGE{\@setsize\LARGE{18\@Q}\xiipt\@xiipt}
+\def\huge{\@setsize\Huge{26\@Q}\xivpt\@xivpt}
+\let\Huge\huge
+
+\ifDS@techrep							% 1.05(2)>>
+\def\@normalsize{\@setsize\normalsize{17\@Q}\ixpt\@ixpt}
+\fi								% 1.05(2)<<
+
+\if@LaTeX@e							% 2.00(10)>>
+\let\normalsize\@normalsize
+\fi								% 2.00(10)<<
+
+\let\fs@footnote\footnotesize
+\let\fs@caption\footnotesize
+\let\fs@table\footnotesize
+\let\fs@abst\small
+\def\fs@eabst{\small\baselineskip13\@Q}
+\let\fs@header\small
+\let\fs@footer\small
+\let\fs@subsec\normalsize
+\def\fs@bibliography{\normalsize\baselineskip16\@Q}
+\let\fs@sec\large
+\let\fs@type\fn@fontxv
+\let\fs@author\Large
+\def\fs@eauthor{\Large\baselineskip20\@Q}			% 2.12(7)
+\let\fs@etitle\LARGE
+\let\fs@title\huge
+
+\@normalsize 
+								% 2.00(7)
+\ifx\setjglues\undefined\else
+\setjglues
+\fi
+
+% \sec@setskips{<A of hiragana>} is moved to ipsjcommon		% 2.12(1c)
+\fi % \ifDS@englisth
+
+\if@LaTeX@e\else \ifipsj@nonjp\else			% 2.00(11),2.12(1b)
+\let\latex@bf\bf						% 1.06(6)
+\def\bf{\latex@bf \dg}						% 1.06(6)
+\fi\fi								% 2.00(11)
+
+
+%%%%%% Page Layout Parameters %%%%%%
+
+\newdimen\@mojihaba
+\ifipsj@nonjp \let\jspaceskip\@mojihaba	\fi			% 2.12(1b)
+
+\ifDS@printer							% 2.12(2b) >>
+\voffset=-20mm
+\hoffset=-14mm
+\fi								% 2.12(2b) <<
+
+\headheight 12\@Q
+
+% We want to allow a line containing $\displaystyle X^X$ to be a first line.
+\setbox0\hbox{$\displaystyle X^X$}
+\topskip\ht0
+
+\ifdim\maxdepth<\dp\strutbox \maxdepth\dp\strutbox \@maxdepth\maxdepth\fi
+
+\@tempswafalse							% 1.05(2)>>
+\ifDS@english \ifDS@techrep \else \@tempswatrue \fi\fi
+\if@tempswa							% 1.05(2)<<
+\topmargin 138\@Q \advance\topmargin-1in
+
+% \textheight = 53\baselineskip + \topskip + epsilon(100sp)
+\textheight53\baselineskip \advance\textheight\topskip \advance\textheight100sp
+
+% \headsep = 24Q - \topskip
+\headsep28\@Q \advance\headsep-\topskip				% 2.02(2)
+
+% Only first page has page number (footer) at the bottom
+\footskip 27\@Q
+
+\@mojihaba13\@Q
+
+\else % \if@tempswa
+\topmargin 131\@Q \advance\topmargin-1in
+
+% \textheight = 45\baselineskip + \topskip + epsilon(100sp)
+\textheight45\baselineskip \advance\textheight\topskip \advance\textheight100sp
+
+\ifDS@techrep							% 1.05(2)>>
+\textheight50\baselineskip \advance\textheight\topskip \advance\textheight100sp
+\fi % \ifDS@techrep						% 1.05(2)<<
+
+% \headsep = 28Q - \topskip
+\headsep28\@Q \advance\headsep-\topskip
+
+% Only first page has page number (footer) at the bottom
+\footskip24\@Q
+
+\@mojihaba12\@Q
+\fi % \if@tempswa
+
+\columnsep30\@Q
+
+% \textwidth - \columnwidth = 24 * 12Q * 2 + \columnsep = 606Q
+\textwidth606\@Q
+\columnseprule0pt
+
+\oddsidemargin210mm \advance\oddsidemargin-\textwidth \divide\oddsidemargin\tw@
+\advance\oddsidemargin-1in \evensidemargin\oddsidemargin
+
+\skip\footins\baselineskip \advance\skip\footins-.5\@mojihaba
+% \footnotesep = \baselineskip - depth(\strutbox)
+{\fs@footnote
+	\footnotesep\baselineskip
+	\global\advance\footnotesep-\dp\strutbox}
+
+\def\footnoterule{{\fs@footnote\kern-\dp\strutbox \hrule \kern-.4\p@
+	\kern\dp\strutbox}}
+
+\floatsep \baselineskip \textfloatsep \baselineskip 
+\intextsep \baselineskip \@maxsep \baselineskip
+\dblfloatsep \baselineskip \dbltextfloatsep \baselineskip
+\@dblmaxsep \baselineskip
+\@fptop 0pt plus 1fil \@fpsep 0pt plus 2fil \@fpbot 0pt plus 1fil 
+\@dblfptop 0pt plus 1fil \@dblfpsep 0pt plus 2fil \@dblfpbot 0pt plus 1fil
+
+\parskip\z@ \parindent\@mojihaba
+\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 
+\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty 
+
+
+%%%%%% Title and Authors %%%%%%
+%
+% Format of title, author names and abstract.
+%
+%	\huge\bf <Japanese title>
+%	\vskip 32Q
+%	\Large <Japanese author names>
+%	\vskip 32Q
+%	\small <Japanese abstract>
+%	\vskip 34Q
+%	\LARGE\bf <English title>
+%	\vskip 28Q
+%	\Large\sc <English author names>
+%	\vskip 28Q
+%	\small <English abstract>
+%	\vskip 25Q
+
+% 2.07(3)>>
+\def\ipsj@ohcheck#1#2#3{\fs@header\hskip12\@Q#1\qquad#2\qquad#3\hskip12\@Q}
+\def\ipsj@ohcvolno{Vol.~00\hskip12\@Q No.~SIG\ 00(\ipsj@sig@code\ 00)}
+
+\newif\ifipsj@trans \ipsj@transfalse				% 2.12(4f)
+\def\maketitle{\let\ipsj@oddhead@t\ipsj@oddhead@a
+	\ifipsj@trans
+	    \settowidth\@tempdima{%
+		\ipsj@ohcheck\ipsj@ohcvolno\@titlestring\ipsj@ohcvolno}%
+	    \ifdim\@tempdima>\textwidth
+		\let\ipsj@oddhead@t\ipsj@oddhead@b
+		\settowidth\@tempdima{%
+		    \ipsj@ohcheck\ipsj@ohcvolno\@titlestring{000}}%
+		\ifdim\@tempdima>\textwidth
+			\ipsj@warning{%				% 2.00(3)
+			\string\title\space for headding is too wide}%
+	    \fi \fi
+	\else
+	    \settowidth\@tempdima{\fs@header
+		\hskip12\@Q Vol.~00\hskip12\@Q No.~00\qquad\@titlestring\qquad
+		Vol.~00\hskip12\@Q No.~00\hskip12\@Q}
+	    \ifdim\@tempdima>\textwidth
+		\ipsj@warning{%					% 2.00(3)
+		\string\title\space for headding is too wide}%
+	\fi \fi
+	\par\twocolumn[\@maketitle]\thispagestyle{myheadings}\@thanks}
+% 2.07(3)<<
+
+% default title header
+
+\def\title{\@dblarg{\@xtitle}}
+\def\@xtitle[#1]#2{\gdef\@title{#2}%
+	{\def\protect{\noexpand\protect\noexpand}%
+		\ifDS@english\def\\{\unskip\ \ignorespaces}%
+		\else\def\\{\unskip\ignorespaces}\fi
+		\xdef\@titlestring{#1}}}			% 2.07(3)
+
+\def\@title{\mkt@warning\title}\def\@titlestring{}
+\long\def\author#1{\long\gdef\@author{#1}}
+\def\@author{\mkt@warning\author}
+
+\newbox\@abstractbox
+%% Introduce \@titlewidth because we now use this dimen repeatedly. (H.N.)
+%% \@titlewidth = 44 * 11Q = 484Q
+\newdimen\@titlewidth \@titlewidth 484\@Q
+
+\def\abstract{\global\let\@abstract\relax
+	\global\setbox\@abstractbox\hbox\bgroup
+		\begin{minipage}[b]{\@titlewidth}\fs@abst\parindent11\@Q}
+\def\endabstract{\end{minipage}\egroup}
+\def\@abstract{\mkt@warning{abstract env}}
+
+%% We need English title, author name(s) and abstract. (H.N.)
+\def\etitle#1{\gdef\@etitle{#1}}
+\def\@etitle{\mkt@warning\etitle}
+\long\def\eauthor#1{\long\gdef\@eauthor{#1}}
+\def\@eauthor{\mkt@warning\eauthor}
+
+\newbox\@eabstractbox
+\def\eabstract{\global\let\@eabstract\relax
+	\global\setbox\@eabstractbox\hbox\bgroup
+		\begin{minipage}[b]{\@titlewidth}\fs@eabst\parindent11\@Q}
+\let\endeabstract\endabstract
+\def\@eabstract{\mkt@warning{eabstract env}}
+
+\ifDS@english
+\let\author\eauthor \let\abstract\eabstract
+\let\@eauthor\@author \let\@eabstract\@abstract
+\fi
+
+\def\mkt@warning#1{\ipsj@warning{Missing \string#1}}		% 2.00(3)
+
+\newdimen\mkt@prevdepth
+\newbox\mkt@titlebox
+\def\@maketitle{\setbox\mkt@titlebox\vbox{
+	\ifDS@english \ifDS@preface
+		\hbox{}\vskip60\@Q \vskip-\headsep \vskip-\baselineskip
+	\else
+		\hbox{}\vskip26\@Q \vskip-\headsep \vskip-\baselineskip
+		\leftline{\fs@type\it
+		  	\ifDS@TBIO \ipsj@TBIO@pcatref		% 2.11(2)
+			\else\ifDS@technote Technical Note
+                        \else\ifDS@invited Invited Paper        % 2.06(1)
+			\else\ifDS@sigrecommended		% 2.04(1)
+				Recommended Paper		% 2.04(1)
+			\else\ifDS@abstract			% 2.07(7)
+				Abstract			% 2.07(7)
+			\else\ifDS@techrep\else			% 2.02(1)
+				Regular Paper\fi\fi\fi\fi\fi\fi}% 2.06(1)
+%								% 2.04(1)
+		\vskip32\@Q \vskip-\baselineskip \fi
+	\else							% 2.04(1) >>
+	\@tempswafalse	\ifDS@technote\@tempswatrue\fi
+			\ifDS@sigrecommended\@tempswatrue\fi
+                        \ifDS@invited\@tempswatrue\fi           % 2.06(1)
+			\ifDS@abstract\@tempswatrue\fi		% 2.07(7)
+	\if@tempswa
+		\vskip18\@Q \vskip-\headsep
+		\leftline{\vbox to28\@Q{\hrule height.8pt\vss
+			\hbox{\hskip7\@Q \fs@type
+				\ifDS@technote \ipsj@j@technote	% 2.12(1c)>>
+                                \else\ifDS@invited
+					\ipsj@j@invited		% 2.06(1)
+				\else\ifDS@sigrecommended
+					\ipsj@j@sigrec		% 2.06(1)
+				\else \ipsj@j@talkabst		% 2.07(7)
+				\fi\fi\fi			% 2.12(1c)<<
+				\hskip7\@Q}\vss\hrule height.8pt}}
+%								% 2.04(1) <<
+		\vskip40\@Q \vskip-\baselineskip
+	\else
+		\hbox{}\vskip60\@Q \vskip-\headsep \vskip-\baselineskip
+	\fi\fi
+	\@tempswafalse \ifDS@english\else\ifDS@preface\@tempswatrue\fi\fi
+	\mkt@maketitle{\fs@title\bf}\@title\title
+	\affi@labels
+	\ifDS@english\else
+	\vskip-\mkt@prevdepth \nointerlineskip\vskip32\@Q
+	\centerline{\vbox{\centering\hsize\@titlewidth\fs@author
+		\mkt@makeauthor}}
+	\ifDS@preface\else
+	\vskip-\prevdepth \nointerlineskip\vskip32\@Q
+	\centerline{\@abstract\box\@abstractbox}
+	\vskip-\prevdepth \nointerlineskip\vskip34\@Q
+	\mkt@maketitle{\fs@etitle\bf}\@etitle\etitle
+	\fi\fi
+	\if@tempswa\else
+	\vskip-\mkt@prevdepth \nointerlineskip\vskip28\@Q
+	\centerline{\vbox{\centering\hsize\@titlewidth\fs@eauthor\sc
+		\mkt@makeeauthor}}
+	\fi
+	\ifDS@preface\else
+	\vskip-\prevdepth \nointerlineskip\vskip28\@Q
+	\centerline{\@eabstract\box\@eabstractbox}
+	\fi
+	\vskip-\prevdepth \nointerlineskip\vskip25\@Q}
+	\@tempdimb\ht\mkt@titlebox \advance\@tempdimb\dp\mkt@titlebox
+	\@tempcnta\@tempdimb \@tempcntb\baselineskip
+	\divide\@tempcnta\@tempcntb \@tempdima\@tempcnta\baselineskip
+	\advance\@tempdima-\@tempdimb
+	\box\mkt@titlebox
+	\ifdim\@tempdima=\z@\else\advance\@tempdima\baselineskip
+		\vskip\@tempdima\fi}
+
+%% \mkt@maketitle puts Japanese/English title, whose lines should be
+%% properly broken with \\ by the user.  The result is flushed to left, then
+%% centered with respect to the longest line. (H.N.)
+\def\mkt@maketitle#1#2#3{\setbox\@tempboxa\vtop{
+	\def\\{\unskip\egroup\hbox\bgroup\ignorespaces}
+		#1\hbox\bgroup#2\unskip\egroup
+		\global\mkt@prevdepth\prevdepth}
+	\@tempdima\textwidth\advance\@tempdima-4\@mojihaba
+	\ifdim\wd\@tempboxa>\@tempdima
+		\ipsj@warning{%					% 2.00(3)
+			\string#3 is too wide. Break line(s) by \string\\}\fi
+	\centerline{\box\@tempboxa}}
+
+% Assignment of Japanese author names to lines:
+% 1 -> 1, 2 -> 2, 3 -> 3, 4 -> 2+2, 5 -> 3+2, 6 -> 3+3, 7 -> 3+2+2, 8 -> 3+3+2,
+% ...
+% Rule for N authors (N > 2, q := N div 3)
+%	N mod 3 = 0 -> 3 * q
+%	N mod 3 = 1 -> 3 * (q - 2) + 2 + 2
+%	N mod 3 = 2 -> 3 * (q - 1) + 2
+
+\newcount\mkt@cnta\newcount\mkt@cntb
+\newcount\mkt@sname\newcount\mkt@gname
+\newbox\mkt@boxa
+\newdimen\mkt@namewidth
+\def\mkt@makeauthor{\let\member\@gobble \let\nomember\relax
+	\let\stmember\@gobble	% Those are not necessary in final manuscript.
+	\def\@makefnmark{\smash{\rlap{$^{\affi@thefnmark}$}}}%	% 2.12(7)
+	\gdef\affi@thefnmark{}\leavevmode\let\+\ignorespaces
+	\settowidth\@tempdima{\ifipsj@nonjp x\else\ipsj@j@a \fi}% 2.12(1c)
+	\mkt@namewidth7\@tempdima\@tempcnta\z@
+	\expandafter\mkt@countauthor\@author\and\@nil\and
+	\ifnum\@tempcnta=\@ne\let\mkt@anhbox\mkt@anhboxc\mkt@makesingleauthor
+	\else
+		\@tempcntb\@tempcnta \divide\@tempcntb\thr@@
+		\multiply\@tempcntb\thr@@ \advance\@tempcntb-\@tempcnta
+		\ifnum\@tempcntb=\m@ne\relax\@tempcntb\tw@\else\@tempcntb\z@\fi
+		\mkt@cnta\thr@@
+		\let\mkt@anhbox\mkt@anhboxl
+		\expandafter\mkt@makemultiauthor\@author\and\and\fi}
+\def\mkt@countauthor#1\and{\def\@tempa{#1}\ifx\@tempa\@nnil\let\next\relax
+	\else\advance\@tempcnta\@ne \let\next\mkt@countauthor\fi\next}
+
+% If single author, author name has 9 KC width instead of 7.
+\def\mkt@makesingleauthor{\divide\mkt@namewidth7\multiply\mkt@namewidth9\relax
+	\expandafter\mkt@putauthor\@author\+ \@nil}
+
+\def\mkt@makemultiauthor#1\and{\ifnum\@tempcnta=\z@\unskip\let\next\relax\else
+	\leavevmode
+	\advance\mkt@cnta\m@ne \advance\@tempcnta\m@ne
+	\ifnum\mkt@cnta=\z@\mkt@maleft{#1}\mkt@cnta\thr@@\else
+	\ifnum\@tempcnta=\@tempcntb\mkt@maleft{#1}\mkt@cnta\tw@\else
+	\mkt@putauthor#1\+ \@nil\let\mkt@anhbox\mkt@anhboxc\fi\fi
+	\let\next\mkt@makemultiauthor\fi\next}
+\def\mkt@maleft#1{\let\mkt@anhbox\mkt@anhboxr\mkt@putauthor#1\+ \@nil
+	\par\let\mkt@anhbox\mkt@anhboxl}
+
+% Japanese author name format:
+%	Non Japanese : As is.
+%	Japanese w/o s/g delimitor : As is with warning.
+%	Japanese (s+g>6) : As is.
+%	Japanese (s+g<7) : Give 1-KC space to s/g delimitor, then insert
+%		infinit stretch between each character pair, assuming the
+%		s/g delimitor as a charcter, to make the name have 7-KC
+%		width.   An exception is 2s + 2g case, in which s/g
+%		delimitor has 0 width in order to have the result
+%		"S_S_G_G".
+
+\def\mkt@putauthor#1 #2\@nil{%
+	\ifipsj@nonjp \mkt@anhbox{#1 #2}\else
+	\setbox\@tempboxa\hbox{\let\affiref\@gobble \let\mkt@warning\@gobble
+		\jintercharskip\z@#1#2}%
+	\setbox\mkt@boxa\hbox{\let\affiref\@gobble \let\mkt@warning\@gobble
+		\jintercharskip1cm#1#2}%
+	\ifdim\wd\@tempboxa=\wd\mkt@boxa \mkt@anhbox{#1 #2}\else
+						% probably no Kanjis
+	\def\@tempa{#2}\ifx\@tempa\empty	% without space btwn s/g-name
+		{\let\affiref\@gobble \def\+{}%
+			\ipsj@warning{Author name #1 doesn't have a space}}%
+								% 2.00(3)
+		\mkt@anhbox{#1}\else
+	\mkt@getnamewidth\mkt@sname{#1}\mkt@getnamewidth\mkt@gname{#2}%
+	\mkt@cntb\mkt@sname \advance\mkt@cntb\mkt@gname
+	\ifnum\mkt@cntb>6\relax\mkt@anhbox{#1\ #2}\else
+	\jintercharskip\fill%
+	\@tempskipa\@tempdima plus2fill\relax
+	\ifnum\mkt@sname=\tw@ \ifnum\mkt@gname=\tw@ \@tempskipa\fill\fi\fi
+	\hbox to\mkt@namewidth{#1\hskip-\lastskip
+		\hskip\@tempskipa#2\hskip-\lastskip\@makefnmark}\fi\fi\fi
+	\fi
+	\gdef\affi@thefnmark{}\hskip\columnsep}
+
+% When an author name is formatted "as is", the following macros are used
+% according to their position (left, right, or center).
+\def\mkt@anhboxl#1{\hbox to\mkt@namewidth{\hss#1\@makefnmark}}
+\def\mkt@anhboxr#1{\hbox to\mkt@namewidth{#1\@makefnmark\hss}}
+\def\mkt@anhboxc#1{\setbox\@tempboxa\hbox{#1\@makefnmark}%
+	\ifdim\wd\@tempboxa>\mkt@namewidth\box\@tempboxa
+	\else\hbox to\mkt@namewidth{\hss\box\@tempboxa\hss}\fi}	% 2.08(1)
+
+\def\mkt@getnamewidth#1#2{\setbox\@tempboxa\hbox{\let\affiref\@gobble#2}%
+	\@tempdimb\wd\@tempboxa
+	\advance\@tempdimb.5\@tempdima #1\@tempdimb \mkt@cntb\@tempdima
+	\divide#1\mkt@cntb}
+
+% English author name format
+%	1 -> <name-1>^*
+%	2 -> <name-1>^* and~<name-2>^*
+%	3 or more -> <name-1>,^* <name-2>,^* ... <name-n-1>^* and~<name-n>^*
+% (be careful the position of comma).
+%
+% No special tricks for assignment names to line.  Names are simply put in a
+% \centering paragraph.
+
+\def\mkt@makeeauthor{\let\member\@gobble \let\nomember\relax
+	\let\stmember\@gobble	% Those are not necessary in final manuscript.
+	\leavevmode\let\mkt@and\relax\gdef\affi@thefnmark{}%
+	\def\@thefnmark{\affi@thefnmark}%
+	\expandafter\mkt@imakeeauthor\@eauthor\and\@nil\and}
+\def\mkt@imakeeauthor#1\and#2\and{\def\@tempa{#2}\ifx\@tempa\@nnil
+		#1\@makefnmark\let\next\relax
+	\else
+		\def\@tempb{#1}\def\next{\mkt@iimakeeauthor#2\and}%
+	\fi\next}
+\def\mkt@iimakeeauthor#1\and{\def\@tempa{#1}\ifx\@tempa\@nnil
+		\@makefnmark\ {\rm{and}~}\gdef\affi@thefnmark{}\hbox{\@tempb}%
+		\@makefnmark\let\next\relax
+	\else
+		\mkt@and\hbox{\@tempb}\let\mkt@and\mkt@andmid
+		\let\next\mkt@iimakeeauthor
+	\fi\def\@tempb{#1}\next}
+\def\mkt@andmid{,\@makefnmark\ \gdef\affi@thefnmark{}}
+
+% Macros to specify author's affiliation easily.
+% 2.12(7)>>
+\newcounter{affi@footnote} \c@affi@footnote\z@
+\newcounter{affi@pfootnote} \c@affi@pfootnote\z@
+\def\affilabel{\affi@deflabels\affi@affilabel}
+\def\paffilabel{\affi@deflabels\affi@paffilabel}
+\def\affi@deflabels#1#2#3{{\def\protect{\noexpand\protect\noexpand}%
+	\let\affi@affilabel\relax \let\affi@paffilabel\relax \let\\\relax
+	\xdef\affi@labels{\affi@labels#1{#2}{#3}}}}
+\def\affi@labels{}
+\def\affi@affilabel{\begingroup \affi@label{affi@footnote}\@makefnmarkdagger}
+\def\affi@paffilabel#1#2{\begingroup
+	\def\protect{\noexpand\protect\noexpand}%
+	\def\\{\noexpand\\Presently with \ignorespaces}%
+	\edef\@tempa{\ifDS@english Presently with \else		% 1.04(1d)
+		\ipsj@j@presently\fi#2}%			% 2.12(1c)
+	\affi@label{affi@pfootnote}\@makefnmarkast{#1}\@tempa}
+\def\affi@label#1#2#3#4{\stepcounter{#1}%
+	\@ifundefined{affi@r@#3}%
+		{\expandafter\xdef\csname affi@r@#3\endcsname{%
+			\csname the#1\endcsname}}%
+		{\ipsj@warning{Affiliation label `#3' multiply defined}}%
+								% 2.00(3)
+	\let\affi@footnotetext\relax\let\\\relax
+	\def\protect{\noexpand\protect\noexpand}%
+	\xdef\@thanks{\@thanks
+		\affi@footnotetext
+			{\csname the#1\endcsname}{\protect#2}{#4}}\endgroup}
+
+\def\affiref#1{\@ifundefined{affi@r@#1}%
+		{\ipsj@warning{Affiliation reference `#1' undefined}% 2.00(3)
+			\def\@tempa{?}}%
+		{\def\@tempa{\csname affi@r@#1\endcsname}}%
+	{\def\protect{\noexpand\protect\noexpand}%
+	\ifx\affi@thefnmark\empty \xdef\affi@thefnmark{\@tempa}\else
+	\xdef\affi@thefnmark{\affi@thefnmark,\hskip\z@\@tempa}\fi}}
+\def\affi@footnotetext#1#2#3{{\def\@thefnmark{#1}%
+	\def\@makefnmarkforfn{#2}\@footnotetext{#3}}}
+
+\def\theaffi@footnote{{\dagger}\number\c@affi@footnote}
+\def\theaffi@pfootnote{{\ast}\number\c@affi@pfootnote}
+
+\def\thanks#1{\begingroup
+	\stepcounter{affi@pfootnote}\let\thempfn\theaffi@pfootnote
+	\let\@thefnmark\thempfn \@makefnmark
+	\let\affi@footnotetext\relax\let\\\relax
+	\def\protect{\noexpand\protect\noexpand}%
+	\xdef\@thanks{\@thanks
+		\affi@footnotetext{\thempfn}{\protect\@makefnmarkast}{#1}}%
+	\endgroup}
+% 2.12(7)<<
+
+% \contact is necessary only for drafts.
+\long\def\contact#1{}
+
+
+%%%%%% Page Header and Footer %%%%%% 
+
+\mark{{}{}} 
+
+\newcounter{volpageoffset} % You must set this to appropriate value
+\setcounter{volpageoffset}{1} % for each issue!
+\ifDS@printer							% 2.12(4d)>>
+\def\LastPageNumber{\gdef\ipsj@last@page}
+\fi								% 2.12(4d)<<
+
+% 2.00(16)>>
+\let\latex@document\document
+\def\document{\latex@document
+	\ifDS@private\else
+	\ifDS@online \global\c@page\ipsj@olh@page		% 2.12(4)
+	\else \global\c@page\c@volpageoffset \fi \fi}		% 2.07(8)
+\let\c@volpage\c@page		% for backward compatibility
+\def\thevolpage{\thepage}	% for backward compatibility
+% 2.00(16)<<
+
+\newcounter{volume}						% 2.12(1c)>>
+\newcounter{number}
+\let\c@month\c@number						% 2.07(4)
+\newcounter{year}						% 2.12(1c)<<
+
+\ifDS@printer							% 2.12(4b)>>
+\def\SetOnlineHeaderInfo#1#2#3#4{%	% <vol><year><month><page>[<lastpage>]
+	\def\ipsj@olh@vol{#1}%
+	\def\ipsj@olh@year{#2}%
+	\def\ipsj@olh@month{#3}%
+	\def\ipsj@olh@page{#4}%
+	\@ifnextchar[%]
+		\ipsj@olh@setlastpage\relax}
+\def\ipsj@olh@setlastpage[#1]{\def\ipsj@olh@lastpage{#1}}
+\fi								% 2.12(4b)<<
+
+% 2.07(4)>>
+\ifDS@online							% 2.12(4b)
+\def\@thevolno{Vol.~\ipsj@olh@vol}				% 2.12(4b)
+\else
+\def\@thevolno{Vol.~\arabic{volume}\hskip\@mojihaba No.~%	% 2.12(1c)>>
+	\ifipsj@trans SIG\ \ipsj@sig@numa(\ipsj@sig@code\ \ipsj@sig@numb)%
+	\else \arabic{number}\fi}				% 2.12(1c)<<
+\fi
+% 2.07(4)<<
+% 2.00(15)>>
+% 2.12(1c)(4b)>>
+\def\@monthyear{%
+	\ifDS@online \ipsj@monthyear\ipsj@olh@month\ipsj@olh@year
+	\else \c@year1959 \advance\c@year\c@volume
+		\ipsj@monthyear\c@number\c@year \fi}
+\def\ipsj@monthyear#1#2{\ifcase#1\or Jan.\or Feb.\or Mar.\or Apr.\or May\or
+		June\or July\or Aug.\or Sep.\or Oct.\or Nov.\or Dec.\else\fi
+	\hskip.5\@mojihaba \number#2}
+% 2.12(1c)(4b)<<
+% 2.00(15)<<
+
+% 2.07(2)>>
+\def\transaction#1#2#3{\ipsj@transtrue
+	\def\ipsj@sig@code{#1}\def\ipsj@sig@numa{#2}\def\ipsj@sig@numb{#3}%
+	\expandafter\let\expandafter\ipsj@sig@title
+		\csname ipsj@sig@#1@\ifDS@english e\else j\fi\endcsname
+	\ifx\ipsj@sig@title\relax
+		\ipsj@warning{Transaction code #1 is unknown}\fi
+	\let\ipsj@oddhead@s\ipsj@oddhead@a
+	\ifDS@online\else					% 2.12(4c)
+	\settowidth\@tempdima{%
+	    \ipsj@ohcheck\ipsj@ohcvolno\hdr@tipsj\ipsj@ohcvolno}%
+	\ifdim\@tempdima>\textwidth
+	    \let\ipsj@oddhead@s\ipsj@oddhead@b
+	    \settowidth\@tempdima{\c@month3\relax	% "Mar." is longest
+		\ipsj@ohcheck\ipsj@ohcvolno\hdr@tipsj\@monthyear}%
+	    \ifdim\@tempdima>\textwidth
+		\let\ipsj@oddhead@s\ipsj@oddhead@c
+	\fi \fi \fi}
+
+\def\ipsj@sig@PRO@e{Programming}
+\def\ipsj@sig@TOM@e{Mathematical Modeling and Its Applications}
+\def\ipsj@sig@TOD@e{Databases}
+\def\ipsj@sig@HPS@e{High Performance Computing Systems}
+\def\ipsj@sig@CVIM@e{Computer Vision and Image Media}
+\def\ipsj@sig@ACS@e{Advanced Computing Systems}			% 2.09(2)
+\def\ipsj@sig@TBIO@e{Bioinformatics}				% 2.11(3)
+\def\ipsj@sig@SLDM@e{System LSI Design Methodology}		% 2.12(8)
+% 2.07(2)<<
+
+\def\copyrightnotice{\long\def\ipsj@cnotice}
+
+% 1.05(2)>>
+\ifDS@techrep
+\def\ps@headings{\let\@mkboth\markboth
+	\def\@oddhead{\@checklines\hss}\let\@evenhead\@oddhead
+	\def\@oddfoot{}\def\@evenfoot{}}
+\let\ps@myheadings\ps@headings
+
+\else\ifDS@private						% 2.07(8)>>
+\def\ps@headings{\let\@mkboth\markboth
+	\def\@oddhead{\@checklines\hfil\thepage\hskip12\@Q}%
+	\def\@evenhead{\@checklines\hskip12\@Q\thepage\hfil}
+	\def\@oddfoot{}\def\@evenfoot{}}
+\def\ps@myheadings{\ps@headings
+	\def\@oddhead{\@checklines
+		\smash{\parbox[b]{.75\textwidth}{\@nameuse{ipsj@cnotice}}}%
+		\hfil\thepage\hskip12\@Q}%
+	\let\@evenhead\@oddhead}
+								% 2.07(8)<<
+\else
+% 1.05(2)<<
+\def\ps@headings{\let\@mkboth\markboth
+	\def\@oddfoot{}
+	\def\@evenfoot{}
+	\def\@evenhead{\fs@header \@checklines
+		\hskip12\@Q\rlap{\thepage}\hss			% 2.07(3)
+		\hdr@tipsj\hss\llap{\@monthyear}\hskip12\@Q}
+	\def\@oddhead{\fs@header \@checklines
+		\ipsj@oddhead@t\@titlestring\thepage}		% 2.07(3)
+	\def\sectionmark##1{}\def\subsectionmark##1{}}
+
+\def\ps@myheadings{\let\@mkboth\@gobbletwo
+	\def\@oddhead{\fs@header \@checklines
+		\ipsj@oddhead@s\hdr@tipsj\@monthyear}		% 2.07(3)
+	\def\@oddfoot{\fs@footer\hfil\thepage\hfil}
+	\let\@evenhead\@oddhead
+	\let\@evenfoot\@oddfoot
+	\def\sectionmark##1{}\def\subsectionmark##1{}}
+\fi\fi								% 1.05(2)
+								% 2.07(8)
+
+% 2.12(9)>>
+\def\ipsj@lc@Rtop{\rlap{\smash{\rule[-\headsep]{0.05mm}{10mm}%
+	\rule[-\headsep]{10mm}{0.05mm}}}}
+\def\ipsj@lc@Ltop{\llap{\smash{\rule[-\headsep]{10mm}{0.05mm}%
+	\rule[-\headsep]{0.05mm}{10mm}}}}
+\def\ipsj@lc@Lbot{\llap{\smash{\raisebox{-\textheight}{%
+	\raisebox{-\headsep}{\rule{10mm}{0.05mm}\rule[-10mm]{0.05mm}{10mm}}}}}}
+\def\ipsj@lc@Rbot{\rlap{\smash{\raisebox{-\textheight}{%
+	\raisebox{-\headsep}{\rule[-10mm]{0.05mm}{10mm}\rule{10mm}{0.05mm}}}}}}
+
+\def\ps@layoutcheck{\ps@headings
+	\let\ipsj@lc@evenhead\@evenhead
+	\def\@evenhead{\ipsj@lc@Lbot \ipsj@lc@Ltop
+		\ipsj@lc@evenhead
+		\ipsj@lc@Rtop \ipsj@lc@Rbot}%
+	\let\ipsj@lc@oddhead\@oddhead
+	\def\@oddhead{\ipsj@lc@Lbot \ipsj@lc@Ltop
+		\ipsj@lc@oddhead
+		\ipsj@lc@Rtop \ipsj@lc@Rbot}%
+	\let\ipsj@lc@myheadings\ps@myheadings
+	\def\ps@myheadings{\ipsj@lc@myheadings
+		\let\ipsj@lc@fpoddhead\@oddhead
+		\def\@oddhead{\ipsj@lc@Lbot \ipsj@lc@Ltop
+			\ipsj@lc@fpoddhead
+			\ipsj@lc@Rtop \ipsj@lc@Rbot}%
+		\let\@evenhead\@oddhead}}
+% 2.12(9)<<
+
+% 2.07(3)>>
+\def\ipsj@oddhead@a#1#2{\hskip12\@Q \rlap{\@thevolno}\hss#1\hss
+	\llap{#2}\hskip12\@Q}
+\def\ipsj@oddhead@b#1#2{\hskip12\@Q \@thevolno\qquad#1\hss
+	\llap{#2}\hskip12\@Q}
+\def\ipsj@oddhead@c#1#2{\hskip12\@Q \@thevolno\hss#1\hss#2\hskip12\@Q}
+\let\ipsj@oddhead@t\ipsj@oddhead@a
+\let\ipsj@oddhead@s\ipsj@oddhead@a
+% 2.07(3)<<
+
+\def\ipsj@online@trans{IPSJ Digital Courier}			% 2.12(4c)
+\def\ipsj@online@journal{IPSJ Digital Courier}			% 2.12(4c)
+% 2.02(2),2.07(4)>>
+\ifDS@english
+\def\hdr@tipsj{\smash{%
+	\ifDS@online						% 2.12(4c)>>
+		\ifipsj@trans
+			\ipsj@online@trans
+		\else
+			\ipsj@online@journal\fi			% 2.12(4c)<<
+	\else
+		\ifipsj@trans
+			IPSJ Transactions on \ipsj@sig@title
+		\else
+			IPSJ Journal\fi
+	\fi}}
+\else
+\def\hdr@tipsj{\smash{\ipsj@j@jipsj				% 2.12(1c)>>
+	\ifipsj@trans \ipsj@j@colon \ipsj@sig@title \fi}}	% 2.12(1c)<<
+\fi
+% 2.02(2),2.07(4)<<
+
+% \checklines enables to draw a horizontal rule onto each baselines.
+
+\newif\if@checklines \@checklinesfalse
+\def\checklines{\@checklinestrue}
+\def\@checklines{\if@checklines \rlap{\smash{\vtop{\normalsize
+	\hbox{} \vskip\headsep \hrule width\textwidth\vskip-.4pt \vskip\topskip
+	\hrule\vskip-.4pt
+	\ifDS@techrep\@tempcnta50\else				% 1.05(2)
+	\ifDS@english\@tempcnta53\else\@tempcnta45\fi\fi	% 1.05(2)
+	\relax\@@checklines}}}\fi
+	\ifDS@english\@tempcnta-7\else\@tempcnta\z@\fi\relax
+% 1.05(2)>>
+	% register marks are removed				% 2.12(2d)
+% 1.05(2)<<
+	}
+\def\@@checklines{\ifnum\@tempcnta>\z@
+	\vskip\normalbaselineskip \hrule\vskip-.4pt \advance\@tempcnta\m@ne
+	\let\next\@@checklines\else\let\next\relax\fi\next}
+
+\pagestyle{headings}
+\pagenumbering{arabic}
+
+\ifDS@english\else
+\def\today{\the\year\ipsj@j@year \the\month\ipsj@j@month \the\day\ipsj@j@day}
+								% 2.12(1c)
+\fi
+
+
+%%%%%% Output Routine %%%%%%
+
+% To balance the final page,
+% following code is borrowed from nicetwocolumn style
+
+% you can refrain from balancing by falsifying following switch!
+%% Initial value of \if@lastpagebalancing is false.  It may be turned true by
+%% biography processing macros. (H.N.)
+
+\newif\if@lastpagebalancing \@lastpagebalancingfalse
+\newif\if@finalpageoutput \@finalpageoutputfalse
+% incorporate balanced output to \enddocument
+\let\latex@enddocument\enddocument
+\def\enddocument{\@finalpageoutputtrue
+	\if@lastpagebalancing
+		\global\let\@outputdblcol\opt@balanceoutputdblcol\fi
+	\ifDS@preface
+		\global\let\@outputdblcol\opt@balanceoutputdblcol\fi
+	\ifDS@abstract						% 2.07(7)>>
+		\hbox{}\newpage
+		\ifDS@english	\rightline{(Presented \ra@presented)}
+		\else		\expandafter\ra@putpresented\ra@presented \fi
+		\fi						% 2.07(7)<<
+%								% 2.12(4d)>>
+	\if@filesw \write\@auxout{\string\gdef\string\ipsj@lastpage
+		{\number\c@page}}\fi				% 2.12(4d)<<
+	\latex@enddocument}
+
+\newbox\@leftcolumnfootnote \newbox\@rightcolumnfootnote
+\newif\if@leftfootnoteexist \@leftfootnoteexistfalse 
+\newif\if@rightfootnoteexist \@rightfootnoteexistfalse
+\newif\ifopt@floatexist \opt@floatexistfalse
+
+% 2.00(12) \color@{begin/end}group ignored
+\def\enlargethispage{\ipsj@warning{\string\enlargepage is ignored}}
+								% 2.00(3,12)
+\def\@makecol{\vbadness10000 \lineskiplimit\normallineskiplimit	% 1.05(1)
+	\setbox\@outputbox\box\@cclv
+	\if@firstcolumn
+		\ifvoid\footins \global\@leftfootnoteexistfalse
+		\else
+			\global\@leftfootnoteexisttrue
+			\@tempdima\dp\footins
+			\global\setbox\@leftcolumnfootnote\vbox{
+				\unvbox\footins\vskip-\@tempdima}
+		\fi
+		\ifx\@botlist\@empty\else\global\opt@floatexisttrue\fi
+	\else
+		\ifvoid\footins \global\@rightfootnoteexistfalse
+		\else
+			\global\@rightfootnoteexisttrue
+			\@tempdima\dp\footins
+			\global\setbox\@rightcolumnfootnote\vbox{
+				\unvbox\footins	\vskip-\@tempdima}
+		\ifx\@toplist\@empty\else\global\opt@floatexisttrue\fi
+		\fi
+	\fi
+	\xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats
+	\global\maxdepth\@maxdepth}
+
+% 2.01(1) >>
+\let\latex@vtryfc\@vtryfc
+\def\@vtryfc{\if@firstcolumn \global\@leftfootnoteexistfalse
+	\else \global\@rightfootnoteexistfalse \fi \latex@vtryfc}
+% 2.01(1) <<
+
+% 1.01(1,2) >>
+\let\latex@addtobot\@addtobot
+\def\@addtobot{\latex@addtobot\global\maxdepth\@maxdepth}
+\let\latex@combinefloats\@combinefloats
+\def\@combinefloats{\ifx\@botlist\@empty\else \dimen@\dp\@outputbox
+	\setbox\@outputbox\vbox{\unvbox\@outputbox \vskip-\dimen@}\fi
+	\latex@combinefloats}
+% 1.01(1,2) <<
+
+\newskip\opt@baselineskip
+\def\@outputdblcol{
+	\if@firstcolumn \global\@firstcolumnfalse
+		\global\setbox\@leftcolumn\box\@outputbox
+		\global\opt@baselineskip\baselineskip
+	\else \global\@firstcolumntrue \global\opt@floatexistfalse
+	\global\bib@adjustheight-\maxdimen
+	\setbox\@leftcolumn\vbox to\@colht{\boxmaxdepth\@maxdepth   % 1.01(3)
+		\unvbox\@leftcolumn
+		\if@leftfootnoteexist\vfil
+			\footnoterule\box\@leftcolumnfootnote\fi}
+	\setbox\@outputbox\vbox to\@colht{\boxmaxdepth\@maxdepth    % 1.01(3)
+		\unvbox\@outputbox
+		\if@rightfootnoteexist\vfil
+			\footnoterule\box\@rightcolumnfootnote\fi}
+	\global\maxdepth\@maxdepth
+	\if@finalpageoutput
+	\if@leftfootnoteexist\else\if@rightfootnoteexist\else
+		\setbox\@leftcolumn\vbox{\unvbox\@leftcolumn}%
+		\setbox\@outputbox\vbox{\unvbox\@outputbox}
+		\ifdim\ht\@leftcolumn<\ht\@outputbox
+			\setbox\@leftcolumn\vbox to\ht\@outputbox{
+				\unvbox\@leftcolumn}%
+		\else
+			\setbox\@outputbox\vbox to\ht\@leftcolumn{
+				\unvbox\@outputbox}%
+		\fi
+	\fi\fi\fi
+	\setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth
+		{\box\@leftcolumn \hss}\hfil \vrule width\columnseprule\hfil
+		\hbox to\columnwidth{\box\@outputbox \hss}}}
+	\@combinedblfloats
+	\@outputpage \begingroup \@dblfloatplacement \@startdblcolumn
+	\@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}%
+	\endgroup
+	\fi}
+
+\let\opt@outputdblcol\@outputdblcol
+\chardef\opt@boxa\z@
+\chardef\opt@boxb\@ne
+\chardef\opt@boxc\tw@
+\def\opt@magicpenalty{1234}
+\def\opt@balanceoutputdblcol{\let\next\opt@ibalanceoutputdblcol
+	\if@firstcolumn \let\next\opt@outputdblcol
+	\else	\ifopt@floatexist \opt@warning \let\next\opt@outputdblcol
+		\else\ifx\@deferlist\@empty\else
+			\opt@warning \let\next\opt@outputdblcol\fi\fi\fi
+	\next}
+\def\opt@ibalanceoutputdblcol{%
+	\setbox\@leftcolumn\vbox{\unvbox\@leftcolumn
+		\ifnum\lastpenalty=\opt@magicpenalty\relax\else
+		\@tempcnta10\relax\@whilenum\@tempcnta>0\do{%
+			\unskip\unskip\unkern\unpenalty
+			\advance\@tempcnta\m@ne}\fi}
+	\advance\opt@baselineskip-\dp\@leftcolumn
+	\ifdim\dp\@leftcolumn=\z@ \ifdim\opt@baselineskip=\baselineskip
+		\@tempdima\ht\@leftcolumn \advance\@tempdima-\topskip
+		\divide\@tempdima\baselineskip
+		\@tempcnta\@tempdima \@tempdima\@tempcnta\baselineskip
+		\advance\@tempdima\topskip
+		\advance\@tempdima-\ht\@leftcolumn
+		\advance\opt@baselineskip\@tempdima \fi\fi
+	\advance\opt@baselineskip-\topskip
+	\setbox\@outputbox\vbox{\unvbox\@outputbox}
+	\ifdim\ht\@outputbox=\topskip \ifdim\dp\@outputbox=\z@
+	\setbox\opt@boxa\vbox{\unvcopy\@outputbox\unskip
+		\global\setbox\opt@boxb\lastbox
+		\global\dimen@\lastskip}
+	\ifvoid\opt@boxb\else\ifdim\ht\opt@boxb=\z@
+		\ifdim\dp\opt@boxb=\z@\ifdim\dimen@=\topskip
+		\@firstcolumntrue\fi\fi\fi\fi\fi\fi
+	\setbox\opt@boxa\copy\@outputbox
+	\setbox\@outputbox\vbox{\unvcopy\@leftcolumn
+		\if@firstcolumn\else
+		\vskip\opt@baselineskip
+		\penalty\interlinepenalty\unvbox\@outputbox\fi}
+	\@tempdima\ht\@outputbox \advance\@tempdima\topskip
+	\divide\@tempdima\tw@ \advance\@tempdima100sp
+	\splittopskip\topskip \splitmaxdepth\@maxdepth
+	\ifdim\bib@adjustheight<\@M pt
+		\opt@split\@outputbox\opt@boxb\@tempdima
+		\ifdim\ht\opt@boxb<\bib@adjustheight
+			\opt@split\@leftcolumn\opt@boxc\bib@adjustheight
+			\opt@split\opt@boxc\opt@boxb\@tempdima
+			\if@firstcolumn
+				\opt@adjust\opt@boxc{\unvbox\@leftcolumn}
+			\else\opt@adjust\opt@boxc{\ifvoid\@leftcolumn\else
+				\unvbox\@leftcolumn\vskip\opt@baselineskip\fi
+				\unvbox\opt@boxa}\fi\fi
+	\else
+		\advance\bib@adjustheight-\@M pt
+		\opt@split\opt@boxa\opt@boxc\bib@adjustheight
+		\setbox\@outputbox\vbox{\unvbox\@leftcolumn
+			\vskip\opt@baselineskip\unvbox\opt@boxc}
+		\opt@split\@outputbox\opt@boxb\@tempdima
+		\opt@adjust\@outputbox{\unvbox\opt@boxa}
+	\fi
+	\if@leftfootnoteexist
+		\setbox\opt@boxb\vbox to\@colht{\box\opt@boxb\vfill
+			\footnoterule\box\@leftcolumnfootnote}\fi
+	\if@rightfootnoteexist
+		\setbox\@outputbox\vbox to\@colht{\box\@outputbox\vfill
+			\footnoterule\box\@rightcolumnfootnote}\fi
+	\ifdim\ht\@outputbox>\ht\opt@boxb
+		\setbox\opt@boxb\vbox to\ht\@outputbox{\unvbox\opt@boxb}
+	\else
+		\setbox\@outputbox\vbox to\ht\opt@boxb{\unvbox\@outputbox}
+	\fi
+	\setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth
+		{\box\opt@boxb \hss}\hfil \vrule width\columnseprule\hfil
+		\hbox to\columnwidth{\box\@outputbox \hss}}}
+	\global\@firstcolumntrue \@combinedblfloats
+	\@outputpage \begingroup \@dblfloatplacement \@startdblcolumn
+	\@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}\endgroup}
+
+\if@LaTeX@eN							% 2.00(3)>>
+\def\opt@warning{\ClassWarning{ipsjpapers}{%
+	Single column floats still remain on biography\MessageBreak
+	processing.\MessageBreak
+	Do \string\verbbiography\space for manual balcing}}
+\else
+\def\opt@warning{\@warning{Single column floats still remain on biography
+	processing.^^J\space\space\space\space\space
+	\space\space\space\space\space\space\space\space\space\space
+	Do \string\verbbiography\space for manual balancing}}
+\fi								% 2.00(3)<<
+\def\opt@split#1#2#3{\setbox#2\vsplit#1to#3\setbox#2\vbox{\unvbox#2}}
+\def\opt@adjust#1#2{\@tempdima\ht#1 \advance\@tempdima-\topskip
+	\@tempdimb\@tempdima \divide\@tempdima\baselineskip
+	\@tempcnta\@tempdima \@tempdima\@tempcnta\baselineskip
+	\advance\@tempdima-\@tempdimb
+	\ifdim\@tempdima<\z@ \advance\@tempdima\baselineskip \fi
+	\advance\@tempdima\baselineskip \advance\@tempdima-\dp#1 
+	\advance\@tempdima-\topskip
+	\setbox\@outputbox\vbox{\ifvoid#1\else\unvbox#1\vskip\@tempdima\fi#2}}
+
+\let\latex@outputpage\@outputpage
+% \opt@finalgap:	vertical space above the \hrule at the end of paper.
+% \opt@finallinewidth:	width of the \hrule at the end of paper.
+\@tempdima2\baselineskip		% This might be changed
+\edef\opt@finalgap{\the\@tempdima}
+\def\opt@finallinewidth{220\@Q}		% This might be changed
+\ifDS@techrep \let\opt@finallinewidth\z@ \fi			% 1.05(2)
+
+\def\@outputpage{\if@finalpageoutput
+	\setbox\@outputbox\vbox{\unvbox\@outputbox}
+	\@tempdima\dp\@outputbox
+	\@tempdimb\ht\@outputbox \advance\@tempdimb\opt@finalgap\relax
+	\ifdim\@tempdimb>\textheight\else
+	\setbox\@outputbox\vbox{\unvbox\@outputbox\vskip-\@tempdima
+		\nointerlineskip\vbox to\z@{\vskip\opt@finalgap
+			\hbox to\textwidth{\hss
+			\vrule height0.4pt width\opt@finallinewidth\hss}
+		\vss}}\fi\fi
+	\ifASCII\if@LaTeX@e\ifipsj@nonjp\else
+		\@@topmargin\topmargin \fi\fi\fi	    % 2.00(13),2.12(1b)
+	\latex@outputpage}
+
+%%%%%% Biography %%%%%%
+
+% If you want to control the allocation of biographies manually, do
+% \verbbiography and insert \adjust{<vertical materials>} just before
+% \member (or its relatives).  For example;
+% 	\verbbiography
+%	\begin{biography}
+%	\member{...} ...
+%	\adjust{\protect\newpage}
+%	\member{...} ...
+%	\adjust{\protect\vspace{1.3cm}}
+%	\member{...} ...
+%	\end{biography}
+% will make page break just after the biography of the 1st author, and will
+% insert a vertical space of 1.3cm just after that of the 2nd.  It is
+% strongly recommended to \protect any control sequence in the argument of
+% \adjust.
+
+% \received and \accepted define the dates of receipt/acceptance.
+% They are put at the end of manuscript (just before biographies) by
+% \ra@putrcvacc.
+
+% 2.12(1c)>>
+% \def\ra@nengo is moved to the tail				% 2.12(1c)
+\ifDS@english
+\def\received#1#2#3{\def\ra@received{\ra@date{#1}{#2}{#3}}\ignorespaces}
+\def\accepted#1#2#3{\def\ra@accepted{\ra@date{#1}{#2}{#3}}\ignorespaces}
+								% 2.07(5)
+% \rereceived is moved below					% 2.12(5)
+\def\presented#1#2#3{\def\ra@presented{\ra@date{#1}{#2}{#3}}\ignorespaces}
+								% 2.07(7)
+\ifDS@printer							% 2.12(4e)>>
+\def\ReleasedToOnline#1#2#3{\ifDS@online
+	\def\ra@released{\ra@date{#1}{#2}{#3}}\fi}
+\fi								% 2.12(4e)<<
+\def\ra@received{??? ??, ????}
+\def\ra@accepted{??? ??, ????}
+\def\ra@presented{??? ??, ????}					% 2.07(7)
+\def\ipsj@TOD@editor{(Editor in Charge:\quad{\it\ipsj@TOD@ename\/})}
+								% 2.07(6)
+								% 2.12(6)
+
+\ifDS@TBIO							% 2.11(4)>>
+\def\ipsj@TOD@editor{(Communicated by\quad{\it\ipsj@TOD@ename\/})}% 2.12(6)
+\fi								% 2.11(4)<<
+\else
+\def\received#1#2#3{\def\ra@received{#1&#2&#3&}\ignorespaces}
+\def\accepted#1#2#3{\def\ra@accepted{#1&#2&#3&}\ignorespaces}
+								% 2.07(5)
+% \rereceived is moved below					% 2.12(5)
+\def\presented#1#2#3{\def\ra@presented{#1&#2&#3&}\ignorespaces}	% 2.07(7)
+\def\ra@received{?&?&?&}
+\def\ra@accepted{?&?&?&}
+\def\ra@presented{?&?&?&}					% 2.07(7)
+\def\ipsj@TOD@editor{\ipsj@j@lp\ipsj@j@edinch
+	\quad\ipsj@TOD@ename\ipsj@j@rp}				% 2.07(6)
+								% 2.08(2)
+								% 2.12(6)
+\fi
+% aliasing of \received etc. is moved to the tail.
+
+% 2.12(1c)<<
+
+\let\ra@elt\relax						% 2.12(5)>>
+\def\rereceived#1#2#3{\ifx\ra@rereceived\undefined
+		\def\ra@rereceived{\ra@elt{}{#1}{#2}{#3}}\def\ra@rerecnum{1}%
+	\else
+		\@tempcnta\ra@rerecnum \advance\@tempcnta\@ne
+		\edef\ra@rerecnum{\number\@tempcnta}%
+		\edef\ra@rereceived{\ra@rereceived
+			\ra@elt{(\ra@rerecnum)}{#1}{#2}{#3}}%
+	\fi \ignorespaces}					% 2.12(5)<<
+
+\def\edInCharge#1{\def\ipsj@TOD@ename{#1}\ignorespaces}		% 2.07(6)
+
+\def\ra@putrcvacc{\rightline{\vtop{\normalsize\tabskip\z@
+	\ifDS@english
+	    \llap{(Received \ra@received)}
+	    \def\ra@elt##1##2##3##4{%				% 2.12(5)>>
+		\llap{(Revised##1 \ra@date{##2}{##3}{##4})}}
+	    \ifx\ra@rereceived\undefined \else \ra@rereceived \fi
+								% 2.12(5)<<    
+	    \llap{(Accepted \ra@accepted)}
+	    \ifx\ra@released\undefined\else			% 2.12(4e)
+		\llap{(Released \ra@released)}\fi		% 2.12(4e)
+	    \hbox{}
+	\else							% 2.12(1c)>>
+	    \def\ra@elt##1##2##3##4{##2&##3&##4&\ipsj@j@rerec##1)\cr}%
+								% 2.12(5)
+	    \halign{(\ra@nengo\hskip\jasciikanjiskip
+		\hfil##\hfil\hskip\jasciikanjiskip \ipsj@j@year
+			\hskip\jasciikanjiskip&
+		\hfil##\hfil\hskip\jasciikanjiskip \ipsj@j@month
+			\hskip\jasciikanjiskip&
+		\hfil##\hfil\hskip\jasciikanjiskip \ipsj@j@day
+			&##\hfil\cr				% 2.07(5)>>
+		\ra@received \ipsj@j@received)\cr
+		\ifx\ra@rereceived\undefined \else \ra@rereceived \fi
+								% 2.12(5)
+		\ra@accepted \ipsj@j@accepted)\cr\multispan3\cr}\fi}%
+								% 2.07(5)<<
+								% 2.12(1c)<<
+	\hskip\@mojihaba}
+	\nobreak\vskip-2\baselineskip\prevdepth\z@\hbox{}
+	\ifDS@printer \ifDS@english				% 2.12(4d)>>
+		\ifipsj@trans
+			\ifDS@online \noindent \ipsj@refer@trans \par \fi
+		\else
+			\ifDS@online\else \noindent \ipsj@refer@online \par \fi
+	\fi \fi \fi						% 2.12(4d)<<
+	\ifipsj@recommendation\else				% 2.04(2)
+		\ifx\ipsj@TOD@ename\undefined\else		% 2.07(6)>>
+			\nobreak\vskip\baselineskip
+			\hbox{\ipsj@TOD@editor}\fi		% 2.07(6)<<
+		\vskip\baselineskip\penalty\opt@magicpenalty\fi}% 2.04(2)
+\def\ra@date#1#2#3{\ifcase#2\or
+	January\or February\or March\or April\or May\or June\or
+	July\or August\or September\or October\or November\or December\fi
+	\space#3, #1}
+\def\ra@jdate#1#2#3{#1&#2&#3&}
+\def\ra@putpresented#1&#2&#3&{\rightline{%			% 2.12(1c)>>
+	(\ra@nengo\hskip\jasciikanjiskip			% 2.07(7)>>
+	#1\hskip\jasciikanjiskip \ipsj@j@year \hskip\jasciikanjiskip
+	#2\hskip\jasciikanjiskip \ipsj@j@month \hskip\jasciikanjiskip
+	#3\hskip\jasciikanjiskip \ipsj@j@day\ipsj@j@presented)}}
+								% 2.07(7)<<
+								% 2.12(1c)<<
+
+% 2.12(4d)>>
+\def\ipsj@space{\hskip\z@ plus\fontdimen\thr@@\font \penalty5000\relax}
+\def\ipsj@refer@trans{%
+	(Paper version of this article can be found in the IPSJ Transactions on
+	\csname ipsj@sig@\ipsj@sig@code @e\endcsname,
+	Vol.\ipsj@space\number\c@volume,
+	No.\ipsj@space SIG\ipsj@sig@numa\ipsj@space
+	(\ipsj@sig@code\ipsj@space\ipsj@sig@numb),
+	pp.\ipsj@space\number\c@volpageoffset--\penalty5000\relax
+	\ipsj@thelastpage\c@volpageoffset\ipsj@last@page.)}
+\def\ipsj@refer@online{%
+	(Online version of this article can be found in the
+	IPSJ Digital Courier,
+	Vol.\ipsj@space\ipsj@olh@vol,
+	pp.\ipsj@space\ipsj@olh@page--\penalty5000\relax
+	\ipsj@thelastpage\ipsj@olh@page\ipsj@olh@lastpage.)}
+\def\ipsj@thelastpage#1#2{\begingroup
+	\@tempcnta#1\relax
+	\ifDS@online \@tempcntb\ipsj@olh@page
+	\else \@tempcntb\c@volpageoffset\fi
+	\ifx#2\undefined
+		\ifx\ipsj@lastpage\undefined \def\@tempa{???}%
+		\else \advance\@tempcntb-\ipsj@lastpage
+			\advance\@tempcnta-\@tempcntb
+			\def\@tempa{\number\@tempcnta}%
+		\fi
+	\else \def\@tempa{#2}%
+	\fi
+	\@tempa \endgroup}
+% 2.12(4d)<<
+
+\newbox\bio@picbox
+% The following define the height and width of a picture for biography, and
+% the indentation of the first 6 lines.  They might be changed.
+\def\bio@picheight{100\@Q}
+\def\bio@picwidth{80\@Q}
+
+\newif\ifbio@showpicbox
+\bio@showpicboxtrue
+% Do \bio@showpicboxfalse if you don't want to put a frame box at the
+% position for picture.
+\ifDS@english
+\def\bio@lineheight{9\@Q}
+\def\bio@piclines{7}
+\def\bio@indent{91\@Q}
+\def\bio@hangafter{7}
+\else
+\def\bio@lineheight{8\@Q}
+\def\bio@piclines{6}
+\def\bio@indent{96\@Q}
+\def\bio@hangafter{5}
+\fi
+
+% \verbbiography forces verbatim output of biography (i.e. not ballanced).
+\newif\ifbio@verb \bio@verbfalse
+\def\verbbiography{\global\bio@verbtrue}
+% The environment biography saves texts for biographies into the list of
+% \inserts (for floats).
+\def\biography{\ifipsj@recommendation\else\par\ra@putrcvacc\fi	% 2.04(2)
+	\def\member{\bio@member{}{\ipsj@j@member}}%		%2.12(3a)(1c)>>
+	\def\nomember{\bio@member{}{}}%
+	\def\stmember{\bio@member{}{\ipsj@j@stmember}}%
+	\def\xmember{\bio@member{}}%
+	\ifDS@printer
+		\def\Kmember{\bio@Kmember{\ipsj@j@member}}%
+		\def\Knomember{\bio@Kmember{}}%
+		\def\Kstmember{\bio@Kmember{\ipsj@j@stmember}}
+		\let\Kxmember\bio@Kmember
+	\fi							%2.12(3a)(1c)<<
+	\ifDS@english \let\author\nomember			% 2.12(3d)>>
+		\ifDS@printer \let\Kauthor\Knomember \fi
+	\fi							% 2.12(3d)<<
+	\let\adjust\bio@adjust
+	\ifbio@showpicbox
+	\setbox\bio@picbox\hbox{\hbox to\z@{\vrule\hskip-0.4pt%
+		\vtop to\bio@picheight{\vskip\z@\hrule width\bio@picwidth
+			\vfil\hrule}\hskip-0.4pt\vrule\hss}}
+	\else
+	\setbox\bio@picbox\hbox{}
+	\fi
+	\@tempdima\bio@piclines\baselineskip \advance\@tempdima\bio@lineheight
+	\dp\bio@picbox\@tempdima
+	\let\bio@egroup\relax\let\+\ignorespaces\let\@elt\relax
+	\def\bio@list{}\global\bio@th\z@}
+
+\def\bio@Kmember#1#2#3{\bio@member{#3}{#1}{#2}}			% 2.12(3a)
+\def\bio@member#1#2#3{\bio@egroup\let\bio@egroup\bio@@egroup	% 2.12(3b)>>
+	\@next\@currbox\@freelist\relax
+		{\@latexerr{Too many unprocessed floats and biographies}\@ehb}%
+	\def\@tempa{#3}\def\@tempb{#1}%
+	\global\setbox\@currbox\hbox\bgroup
+	    \@tempswatrue
+	    \ifx\@tempb\@empty
+		\ifDS@printer \@tempswafalse
+		\else \raise\bio@lineheight\copy\bio@picbox
+		\fi
+	    \else
+		\setbox\@tempboxa\hbox to\z@{\vtop{\vskip\z@
+		    \hbox{\includegraphics
+			[width=\bio@picwidth,height=\bio@picheight]{#1.eps}}}%
+		    \hss}
+		\dp\@tempboxa\dp\bio@picbox
+		\raise\bio@lineheight\box\@tempboxa
+	    \fi							% 2.12(3b)<<
+	    \vtop\bgroup
+		\let\par\\
+		\if@tempswa \hangindent\bio@indent\hangafter-\bio@hangafter \fi
+		\ifDS@english {\bf #3\ }%
+		\else {\bf\bio@putauthor#3\+ \@nil}%
+			\def\@tempb{#2}\ifx\@tempb\@empty\else	% 2.12(3c)
+			\ipsj@j@lp#2\ipsj@j@rp\fi{\@@par}\fi	% 2.12(3c)(1c)
+	\ignorespaces}
+
+% Author name format:
+%	S + G < 5 -> fill space between S/G (like SS__G)
+%	otherwise -> 1 KC space between S/G (like SS_GG)
+\def\bio@putauthor#1 #2\@nil{%
+	\ifipsj@nonjp#1 #2\else
+	\setbox\@tempboxa\hbox{\jintercharskip\z@#1#2}%
+	\setbox\mkt@boxa\hbox{\jintercharskip1cm#1#2}%
+	\ifdim\wd\@tempboxa=\wd\mkt@boxa #1 #2\else
+	\def\@tempa{#2}\ifx\@tempa\empty
+		{\def\+{}\ipsj@warning{Author name #1 doesn't have a space}}%
+								% 2.00(3)
+		#1\else
+	\@tempdima\@mojihaba
+	\mkt@getnamewidth\mkt@sname{#1}\mkt@getnamewidth\mkt@gname{#2}%
+	\advance\mkt@sname\mkt@gname
+	\ifnum\mkt@sname<5\leavevmode\hbox to5\@mojihaba{#1\hfil#2}\else
+		#1#2\fi\fi\fi\fi}
+\def\bio@@egroup{\@@par\hbox{}\egroup\egroup\@tempdima\dp\@currbox
+	\ifdim\@tempdima>\textheight
+		\ipsj@warning{Biography of \@tempa\space is too long}% 2.00(3)
+		\bio@verbtrue \fi
+	\advance\@tempdima\baselineskip\global\advance\bio@th\@tempdima
+	\global\dimen\@currbox\@tempdima \global\count\@currbox\z@
+	{\let\protect\bio@protect\xdef\bio@list{\bio@list\@elt\@currbox}}}
+\def\bio@adjust#1{\bio@egroup\let\bio@egroup\relax
+	\ifbio@verb {\let\protect\bio@protect\xdef\bio@list{\bio@list#1}\fi}}
+\def\bio@protect{\noexpand\protect\noexpand}
+
+\def\endbiography{\bio@egroup \@tempswatrue
+	\ifx\@botlist\@empty\ifx\@deferlist\@empty \@tempswafalse \fi\fi
+	\ifbio@verb\else\if@tempswa \bio@verbtrue \opt@warning\fi\fi
+	\ifbio@verb{\let\@elt\bio@putelt \let\protect\relax \bio@list}%
+	\else\bio@putbio\fi}
+
+\newdimen\bio@colht \newdimen\bio@splitheight
+\newdimen\bio@maxgap \newdimen\bio@lastgap
+\newdimen\bio@th \newdimen\bio@lhA \newdimen\bio@hA \newdimen\bio@hB
+\newdimen\bio@lh \newdimen\bio@rh
+\newdimen\bio@tempdim
+\newif\ifbio@awful
+\newinsert\bio@pbox \count\bio@pbox\@ne
+
+\def\bio@putbio{\let\@elt\relax \let\bio@vskip\relax \allowbreak
+	\bio@colht\@colht \advance\bio@colht-\topskip
+	\advance\bio@colht\baselineskip
+	\@tempdima\bio@colht \advance\@tempdima-\@colroom
+	\advance\@tempdima\pagetotal
+	\if@firstcolumn
+	    \ifdim\@tempdima>\bio@th
+		\global\@lastpagebalancingtrue
+		{\let\@elt\bio@putelt\bio@list}\vskip-\baselineskip
+	    \else
+		\ifdim\pagetotal=\z@\else
+			\dimen\bio@pbox\@tempdima \advance\bio@th\@tempdima
+			\edef\bio@list{\@elt\bio@pbox\bio@list}\fi
+		\bio@splitheight\bio@colht \bio@splitpage
+		\bio@splitheight.5\bio@th
+		\let\bio@awfulput\bio@specialawfulput
+		\bio@trybalance\fi
+	\else \advance\@tempdima\bio@th
+	    \ifdim\@tempdima<\bio@colht
+		\global\@lastpagebalancingtrue
+		\ifdim\pagetotal=\z@ \global\opt@baselineskip2\baselineskip\fi
+		{\let\@elt\bio@putelt\bio@list}\vskip-\baselineskip
+	    \else
+		\let\bio@awfulput\bio@normalawfulput
+		\bio@splitheight\z@ \advance\@tempdima-\bio@th
+		\advance\bio@colht-\@tempdima \bio@splitpage
+		{\let\@elt\bio@putelt\bio@list}\bio@nextpage
+		\bio@trybalance\fi
+	\fi}
+
+\def\bio@trybalance{\bio@split 
+	\let\bio@right\bio@rightA \let\bio@left\bio@leftA
+		\def\bio@rightx{}\def\bio@leftx{}%
+		\let\bio@hX\bio@hA \bio@balance
+		\let\bio@rightxA\bio@rightx \let\bio@leftxA\bio@leftx
+	\ifbio@awful\@tempcnta\tw@\else\@tempcnta\z@\fi
+	\let\bio@right\bio@rightB \let\bio@left\bio@leftB
+		\def\bio@rightx{}\def\bio@leftx{}%
+		\let\bio@hX\bio@hB \bio@balance
+		\let\bio@rightxB\bio@rightx \let\bio@leftxB\bio@leftx
+	\ifbio@awful\advance\@tempcnta\@ne\fi
+	\ifcase\@tempcnta
+		\ifdim\bio@hA<\bio@hB \bio@balanceput\bio@leftxA\bio@rightxA
+		\else \bio@balanceput\bio@leftxB\bio@rightxB\fi
+	\or \bio@balanceput\bio@leftxA\bio@rightxA
+	\or \bio@balanceput\bio@leftxB\bio@rightxB
+	\else \bio@awfulput\fi
+	\ifx\bio@deferred\empty\vskip-\baselineskip\let\next\relax
+	\else\bio@nextpage\let\next\bio@trybalance\fi\next}
+
+\def\bio@split{\def\bio@leftA{}\def\bio@leftB{}%
+	\def\bio@rightA{}\def\bio@rightB{}%
+	\bio@lhA\z@\@tempdimb\z@ \bio@isplit}
+\def\bio@isplit{\ifx\bio@list\empty\let\next\relax\else
+	\bio@car\@tempdima\@currbox\bio@list
+	\bio@lhA\@tempdimb\advance\@tempdimb\@tempdima
+	\edef\bio@leftB{\bio@leftB\@elt\@currbox}%
+	\ifdim\@tempdimb>\bio@splitheight
+		\edef\bio@rightA{\@elt\@currbox\bio@list}%
+		\let\bio@rightB\bio@list \let\next\relax
+	\else\edef\bio@leftA{\bio@leftA\@elt\@currbox}\let\next\bio@isplit
+	\fi\fi\next}
+
+\def\bio@balanceput#1#2{{\let\@elt\bio@putelt\let\bio@vskip\bio@xvskip
+	#1\bio@newpage#2}}
+\def\bio@normalawfulput{{\let\bio@vskip\@gobble \@tempcnta\z@ 
+	\@tempdima\z@ \bio@addheight\@tempdima\bio@leftxB
+	\ifdim\@tempdima<\bio@colht
+		\@tempdima\z@ \bio@addheight\@tempdima\bio@rightxB
+		\ifdim\@tempdima<\bio@colht \@tempcnta\@ne
+			\let\@elt\bio@putelt
+			\bio@leftxB\bio@newpage\bio@rightxB\fi\fi
+	\ifnum\@tempcnta=\z@
+		\@tempdima\z@ \bio@addheight\@tempdima\bio@leftxA
+		\ifdim\@tempdima<\bio@colht
+			\@tempdima\z@\bio@addheight\@tempdima\bio@rightxA
+			\ifdim\@tempdima<\bio@colht \@tempcnta\@ne
+				\let\@elt\bio@putelt
+				\bio@leftxA\bio@newpage\bio@rightxA\fi\fi\fi
+% The following may be redundant.
+	\ifnum\@tempcnta=\z@
+		\let\@elt\bio@putelt\bio@listsave\fi}}
+\def\bio@specialawfulput{{\advance\bio@th-\dimen\bio@pbox
+	\ifdim\bio@th<\bio@colht\bio@newpage
+	\let\bio@newpage\relax\fi\bio@normalawfulput}}
+
+\def\bio@putelt#1{\ifnum\count#1>\z@\else\box#1
+	\nobreak\vskip-2\baselineskip\prevdepth\z@\hbox{}
+	\vskip\baselineskip\fi}
+\def\bio@xvskip#1{\vskip#1\prevdepth\z@}
+\def\bio@newpage{\vskip-\baselineskip\newpage}
+
+\def\bio@nextpage{\bio@newpage \let\bio@list\bio@deferred
+	\bio@th\z@ \bio@addheight\bio@th\bio@list
+	\bio@colht\@colht \advance\bio@colht-\topskip
+	\advance\bio@colht\baselineskip
+	\bio@splitheight\bio@colht \bio@splitpage
+	\bio@splitheight.5\bio@th
+	\let\bio@awfulput\bio@normalawfulput}
+\def\bio@splitpage{\let\bio@listsave\bio@list \bio@split
+	\@tempdima\bio@th \advance\@tempdima-\bio@lhA
+	\ifdim\@tempdima>\bio@colht
+		\let\bio@leftAsave\bio@leftA \bio@th\bio@lhA
+		\let\bio@list\bio@rightA \bio@splitheight\bio@colht
+		\bio@split \edef\bio@list{\bio@leftAsave\bio@leftA}%
+		\advance\bio@th\bio@lhA
+		\let\bio@deferred\bio@rightA
+	\else\def\bio@deferred{}\let\bio@list\bio@listsave\fi}
+
+% \bio@tolerablegap:	maximum tolerable gap between adjacent bio's.
+% \bio@tolerablestretch:maximum stretch of a column.
+
+\@tempdima10\baselineskip		% This might be changed
+\edef\bio@tolerablegap{\the\@tempdima}
+\@tempdima15\baselineskip
+\edef\bio@tolerablelastgap{\the\@tempdima}
+\def\bio@tolerablestretch{2}		% This might be changed
+
+\def\bio@balance{\let\@elt\relax \edef\bio@bstack{%
+		\@elt{{\bio@left}{\bio@right}{}{}{0pt}}}
+	\bio@xbalance}
+\def\bio@xbalance{%
+	\expandafter\bio@popstack\bio@bstack\@nil
+	\let\bio@nextA\bio@xbalance \@tempdima\z@
+	\ifx\bio@left\empty \ifx\bio@right\empty
+		\let\bio@nextA\bio@balanceend
+	\else
+		\bio@addheight\@tempdima\bio@right
+		\edef\bio@leftx{\bio@leftx\bio@vskip{\the\@tempdima}}%
+		\advance\bio@hX\@tempdima
+		\edef\bio@rightx{\bio@rightx\bio@right}\def\bio@right{}%
+		\bio@pushstack \fi\else
+	\ifx\bio@right\empty
+		\bio@addheight\@tempdima\bio@left
+		\edef\bio@rightx{\bio@rightx\bio@vskip{\the\@tempdima}}%
+		\advance\bio@hX\@tempdima
+		\edef\bio@leftx{\bio@leftx\bio@left}\def\bio@left{}%
+		\bio@pushstack \else
+	\bio@car\@tempdima\bio@leftbox\bio@left
+	\bio@car\@tempdimb\bio@rightbox\bio@right
+	\edef\bio@leftx{\bio@leftx\@elt\bio@leftbox}%
+	\edef\bio@rightx{\bio@rightx\@elt\bio@rightbox}%
+	\ifdim\@tempdima>\@tempdimb
+		\advance\bio@hX\@tempdima
+		\let\bio@da\@tempdima\let\bio@db\@tempdimb
+		\bio@ibalance\bio@left\bio@right\bio@leftx\bio@rightx
+	\else	\advance\bio@hX\@tempdimb
+		\let\bio@da\@tempdimb\let\bio@db\@tempdima
+		\bio@ibalance\bio@right\bio@left\bio@rightx\bio@leftx\fi
+	\fi\fi\bio@nextA}
+\def\bio@ibalance#1#2#3#4{\let\bio@nextB\relax
+	\ifx#2\empty 
+		\advance\bio@da-\bio@db
+		\edef#4{#4\bio@vskip{\the\bio@da}}\bio@pushstack\else
+	\bio@car\bio@tempdim\@currbox#2 \advance\bio@db\bio@tempdim
+	\ifdim\bio@da<\bio@db
+		\advance\bio@db-\bio@da
+		\let\@tempa#3\edef#3{#3\bio@vskip{\the\bio@db}}%
+		\let\@tempb#4\edef#4{#4\@elt\@currbox}%
+		\advance\bio@hX\bio@db \bio@pushstack
+		\advance\bio@hX-\bio@db
+		\edef#2{\@elt\@currbox#2}%
+		\advance\bio@tempdim-\bio@db
+		\let#3\@tempa \edef#4{\@tempb\bio@vskip{\the\bio@tempdim}}%
+		\bio@pushstack
+	\else \edef#4{#4\@elt\@currbox}\def\bio@nextB{\bio@ibalance#1#2#3#4}%
+	\fi\fi\bio@nextB}
+\def\bio@balanceend{\bio@awfulfalse \def\bio@bstack{}%
+	\bio@maxgap\z@ \bio@lastgap\z@
+	\bio@checkgap\bio@leftx \bio@checkgap\bio@rightx
+	\ifdim\bio@maxgap>\bio@tolerablegap\relax\bio@awfultrue\fi
+	\ifdim\bio@lastgap>\bio@tolerablelastgap\relax\bio@awfultrue\fi
+	\ifdim\bio@hX>\bio@tolerablestretch\bio@splitheight\bio@awfultrue\fi
+	\ifdim\bio@hX>\bio@colht\bio@awfultrue\fi}
+\def\bio@checkgap#1{{\@tempdima\z@ \@tempdimb\z@ \bio@tempdim\z@
+	\let\@elt\bio@cgelt \let\bio@vskip\bio@cgvskip #1\relax
+	\ifdim\@tempdima>\bio@maxgap \global\bio@maxgap\@tempdima \fi
+	\ifdim\bio@tempdim>\bio@lastgap \global\bio@lastgap\bio@tempdim \fi}}
+\def\bio@cgvskip#1{\advance\bio@tempdim#1\relax
+	\ifdim\bio@tempdim>\@tempdimb \@tempdimb\bio@tempdim\fi}
+\def\bio@cgelt#1{\@tempdima\@tempdimb \bio@tempdim\z@}
+\def\bio@popstack\@elt#1#2\@nil{\edef\bio@bstack{#2}\bio@ipopstack#1}
+\def\bio@ipopstack#1#2#3#4#5{\def\bio@left{#1}\def\bio@right{#2}%
+	\def\bio@leftx{#3}\def\bio@rightx{#4}\bio@hX#5\relax}
+\def\bio@pushstack{\def\bio@bstackx{}%
+	\expandafter\bio@ipushstack\bio@bstack\@elt\@nil}
+\def\bio@ipushstack\@elt#1{\def\@tempc{#1}%
+	\ifx\@tempc\@nnil \edef\bio@bstack{\bio@bstackx\bio@stackelt}%
+		\let\bio@nextC\relax \else
+	\bio@iipushstack#1\fi\bio@nextC}
+\def\bio@iipushstack#1#2#3#4#5{\ifdim#5>\bio@hX
+	\edef\bio@bstackx{\bio@bstackx\bio@stackelt
+		\@elt{{#1}{#2}{#3}{#4}{#5}}}%
+		\let\bio@nextC\bio@pushstackend\else
+	\edef\bio@bstackx{\bio@bstackx
+		\@elt{{#1}{#2}{#3}{#4}{#5}}}%
+		\let\bio@nextC\bio@ipushstack\fi}
+\def\bio@pushstackend#1\@elt\@nil{\edef\bio@bstack{\bio@bstackx#1}}
+\def\bio@stackelt{\@elt{{\bio@left}{\bio@right}{\bio@leftx}{\bio@rightx}%
+	{\the\bio@hX}}}
+\def\bio@addheight#1#2{\def\@elt##1{\advance#1\dimen##1}#2\let\@elt\relax}
+\def\bio@car#1#2#3{\expandafter\bio@icar#3\@nil#1#2#3}
+\def\bio@icar\@elt#1#2\@nil#3#4#5{#3=\dimen#1\relax\def#4{#1}\def#5{#2}}
+
+
+%%%%%% Miscellaneous %%%%%%
+
+\flushbottom
+
+\ifDS@english
+\hbadness9999 \tolerance9999
+\else
+\hbadness5000 \tolerance5000
+\pretolerance\m@ne
+\fi
+
+\input{ipsjcommon.sty}
+
+\twocolumn
+
+\endinput
--- a/Paper/ipsjprosym.cls	Thu Apr 12 18:02:04 2018 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-% ipsjprosym.cls  (C) 2014 Prosym Kanjikai
-% Copyright (C) 2014 by Kiminori Matsuzaki
-
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{ipsjprosym}
-[2014/09/07 v1.00 IPSJ class]
-
-%%%%%% Document Styles %%%%%%
-\newif\ifDSP@withpage \DSP@withpagefalse
-\newif\ifDSP@english \DSP@englishfalse
-
-\DeclareOption{withpage}{\DSP@withpagetrue}
-\DeclareOption{english}{\DSP@englishtrue}
-\ProcessOptions
-
-%%
-%% Option
-%%
-\LoadClass[submit,techreq,noauthor%
-\ifDSP@english ,english\fi%
-]{ipsj}
-
-%% $BDs=PMQ$K$O%X%C%@%U%C%?$r$D$1$J$$!%(B
-\ifDSP@withpage
-\let\ps@IPSJTITLEheadings\ps@plain
-\pagestyle{plain}
-\else
-\let\ps@IPSJTITLEheadings\ps@empty
-\pagestyle{empty}
-\fi
-
-%% $B2F$N%W%m%0%i%`!&%7%s%]%8%&%`(B $B<A5?!&1~Ez(B $B$N$?$a(B
-\newenvironment{QandA}%
-{\subsection*{{\normalsize $B<A5?!&1~Ez(B}}\begin{description}\def\makelabel##1{##1}}
-{\end{description}}
-
-%% $BHGLL$N$_(B A4 -> B5 $B%5%$%:$X=L>.$9$k(B
-\addtolength{\textwidth}{-24mm} % 210mm-182mm=28mm$B$@$,(B
-\addtolength{\oddsidemargin}{12mm}
-\addtolength{\evensidemargin}{12mm}
-
-\addtolength{\textheight}{-36mm} % 297mm-257mm=40mm$B$@$,(B
-\addtolength{\topmargin}{18mm}
-
-\endinput
-
--- a/Paper/ipsjsort.bst	Thu Apr 12 18:02:04 2018 +0900
+++ b/Paper/ipsjsort.bst	Thu Apr 12 20:15:23 2018 +0900
@@ -1,4 +1,3 @@
-% ipsjsort.bst 28-Oct-10 by Hiroshi Nakashima (ver 3.00)
 % ipsjsort.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12)
 % ipsjsort.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00)
 % ipsjsort.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00)
@@ -12,7 +11,6 @@
     author
     booktitle
     chapter
-    doi							% 3.00(1)
     edition
     editor
     howpublished
@@ -25,12 +23,10 @@
     organization
     pages
     publisher
-    refdate						% 3.00(1)
     school
     series
     title
     type
-    url							% 3.00(1)
     volume
     year
     yomi
@@ -55,14 +51,11 @@
 FUNCTION {is.kanji}
 { is.kanji.str$ }					% 1.00(2), 2.00(1)
 
-FUNCTION {is.kanji.title}				% 3.00(1)
-{ title is.kanji.str$ }
-
 FUNCTION {output.nonnull}
 { 's :=
   output.state mid.sentence =
     { duplicate$ is.kanji				% 2.00(2)
-	{ "$B!$(B" * write$ }
+	{ "," * write$ }
 	{ ", " * write$ }
       if$
     }
@@ -274,7 +267,7 @@
     { s nameptr "{ff}{ll}" format.name$ duplicate$ is.kanji
 	{ duplicate$ text.length$ #6 >
 	    { 't := }
-	    { pop$ s nameptr "{ff}$B!!(B{ll}" format.name$ 't := }
+	    { pop$ s nameptr "{ff} {ll}" format.name$ 't := }
 	  if$
 	}
         { pop$ s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't := }
@@ -282,18 +275,18 @@
       nameptr #1 >
 	{ namesleft #1 >
 	    { s is.kanji
-		{ "$B!$(B" }
+		{ "," }
 		{ ", " }
 	      if$
 	      * t * }
 	    { t "others" =
 		{ s is.kanji
-			{"$B$[$+(B" * }
+			{"ほか" * }
 			{" et al." * }
 		      if$
                 }
 		{ s is.kanji
-			{"$B!$(B" * t * }	% put "," here for Kanji (H.N.)
+			{"," * t * }	% put "," here for Kanji (H.N.)
 			{" and " * t * }
 	     	      if$
 		}
@@ -318,7 +311,7 @@
 
 FUNCTION {add.colon}					% 2.00(5)
 { duplicate$ is.kanji
-    { "\$B!'(B" * }						% 2.12(1)
+    { "\:" * }						% 2.12(1)
     { ": " * }
   if$
 }
@@ -329,10 +322,10 @@
     { editor format.names
       editor num.names$ #1 >
 	{ editor is.kanji
-		{"$B!$JT(B" * } {", eds." *} if$
+		{",編" * } {", eds." *} if$
 	}
 	{ editor is.kanji
-		{"$B!$JT(B" *}  {", ed." *} if$
+		{",編" *}  {", ed." *} if$
 	}
       if$
     }
@@ -345,10 +338,10 @@
     { editor format.names
       editor num.names$ #1 >
 	{ editor is.kanji
-		{"$B!JJT!K(B" * } {"(eds.)" *} if$		% 2.00(7)
+		{"(編)" * } {"(eds.)" *} if$		% 2.00(7)
 	}
 	{ editor is.kanji
-		{"$B!JJT!K(B" *}  {"(ed.)" *} if$		% 2.00(7)
+		{"(編)" *}  {"(ed.)" *} if$		% 2.00(7)
 	}
       if$
     }
@@ -394,14 +387,6 @@
   if$
 }
 
-FUNCTION {format.ref.date}				% 3.00(1)>>
-{ before.year 'output.state :=
-  is.kanji.title
-    { "\refdatej{" refdate "}" * *}
-    { "\refdatee{" refdate "}" * *}
-  if$
-}							% 3.00(1)<<
-
 FUNCTION {tie.or.space.connect}
 { duplicate$ text.length$ #3 <
     { "~" }
@@ -478,24 +463,6 @@
   multiresult
 }
 
-FUNCTION {format.online}				% 3.00(1)>>
-{ is.kanji.title
-    { "$B!J%*%s%i%$%s!K(B" * }
-    { duplicate$ empty$
-        { "(online)" * }
-        { " (online)" * }
-      if$
-    }
-  if$
-}							% 3.00(1)<<
-
-FUNCTION {format.url}					% 3.00(1)>>
-{ is.kanji.title
-    { "\urlj{" url "}" * * }
-    { "\urle{" url "}" * * }
-  if$
-}							% 3.00(1)<<
-
 FUNCTION {format.pages}					% 1.00(7)
 { pages empty$
     { "" }
@@ -507,26 +474,6 @@
   if$
 }
 
-FUNCTION {format.doi.url}				% 3.00(1)>>
-{ doi empty$
-    { url empty$
-	'skip$
-	{ format.online output.nonnull
-	  format.url
-	}
-	if$
-    }
-    { format.online output.nonnull
-      "\doi{" doi "}" * *
-    }
-  if$							% 3.00(1)<<
-}
-
-FUNCTION {format.pages.output}				% 3.00(1)>>
-{ format.pages
-  format.doi.url output					% 3.00(1)<<
-}
-
 FUNCTION {format.vol.num.pages}				% 1.00(8)
 { volume empty$
   { ""}
@@ -549,7 +496,6 @@
       if$
     }
   if$
-  format.doi.url					% 3.00(1)
 }
 
 FUNCTION {format.chapter.pages}
@@ -569,7 +515,6 @@
       if$
     }
   if$
-  format.doi.url					% 3.00(1)
 }
 
 FUNCTION {format.in.ed.booktitle}
@@ -579,7 +524,7 @@
       editor empty$
 	'skip$
 	{ booktitle is.kanji
-	    { "$B!J(B" * format.editors.inparen * "$B!K(B" *}	% 2.00(6,7)
+	    { "(" * format.editors.inparen * ")" *}	% 2.00(6,7)
 	    { " (" * format.editors.inparen * ")" *}	% 1.00(9), 2.00(6)
 	  if$
 	}
@@ -612,7 +557,7 @@
     { title empty$
         { "Technical Report" }
         { title is.kanji
-            { "$B5;=QJs9p(B" }
+            { "技術報告" }
             { "Technical Report" }
           if$
         }
@@ -648,16 +593,16 @@
   editor num.names$ duplicate$
   #2 >
     { editor is.kanji
-	  {pop$ "$B$[$+(B" *} {pop$ " et al." * } if$
+	  {pop$ "ほか" *} {pop$ " et al." * } if$
     }
     { #2 <
 	'skip$
 	{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
 	    { editor is.kanji
-		{"$B$[$+(B" *} {" et al." * } if$
+		{"ほか" *} {" et al." * } if$
 	    }
 	    { editor is.kanji
-		{"$B!&(B" * editor #2 "{ff}" format.name$ * }
+		{"・" * editor #2 "{ff}" format.name$ * }
 		{" and " * editor #2 "{vv }{ll}" format.name$ * }
 	      if$
 	    }
@@ -689,7 +634,7 @@
   " \cite{" * crossref * "}" *
   volume empty$
     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ }
-    { duplicate$ is.kanji { "$B!$(B" } { ", "} if$ *
+    { duplicate$ is.kanji { "," } { ", "} if$ *
       "Vol." * volume tie.or.space.connect
     }
   if$
@@ -738,7 +683,7 @@
       format.date output
     }
     { format.article.crossref output.nonnull
-      format.pages.output				% 3.00(1)
+      format.pages output
     }
   if$
   new.block
@@ -888,11 +833,11 @@
       address output
       organization output
       publisher output
-      format.pages.output				% 3.00(1)
+      format.pages output
       format.date output				% 1.00(13)
     }
     { format.incoll.inproc.crossref output.nonnull
-      format.pages.output				% 3.00(1)
+      format.pages output
     }
   if$
   new.block
@@ -944,7 +889,7 @@
   author empty$
     { "Master's thesis" }
     { author is.kanji
-        { "$B=$;NO@J8(B" }  
+        { "修士論文" }  
         { "Master's thesis" }
       if$
     }
@@ -990,7 +935,7 @@
   author empty$
     { "PhD Thesis" }
     { author is.kanji
-        { "$BGn;NO@J8(B" }
+        { "博士論文" }
         { "PhD Thesis" }
       if$
     }
@@ -1072,24 +1017,6 @@
   fin.entry
 }
 
-FUNCTION {webpage}					% 3.00(1)>>
-{
-%%%%
-  author       "author"       required.argument
-  title        "title"        required.argument
-  url          "url"          required.argument
-  refdate      "refdate"      required.argument
-%%%%
-  output.bibitem
-  format.authors add.colon
-  title output
-  organization format.doi.url output
-  format.ref.date output
-  new.block
-  note output
-  fin.entry
-}							% 3.00(1)<<
-
 FUNCTION {default.type} { misc }
 
 MACRO {jan} {"January"}
--- a/Paper/sigos.tex	Thu Apr 12 18:02:04 2018 +0900
+++ b/Paper/sigos.tex	Thu Apr 12 20:15:23 2018 +0900
@@ -101,6 +101,60 @@
 % これをアセンブラにしていろいろなアプリケーションを作る
 % きょだいなCDGの上で動かすと既存のアプリケーションを動かすことができる
 
+\section{OS の拡張性と信頼性の両立}
+
+さまざまなコンピュータの信頼性の基本はメモリなどの資源管理を行う OS である。OS の信頼性を保証する事自体が難しいが、時代とともに進歩する。
+ハードウェア、サービスに対応して OS 自体が拡張される必要がある。OS は非決定的な実行を持ち、その信頼性を保証するには、従来のテストとデバッグでは不十分
+であり、テストしきれない部分が残ってしまう。これに対処するためには、証明を用いる方法とプログラムの可能な実行をすべて数え上げるモデル検査を用いる方法が
+ある。モデル検査は無限の状態ではなくても巨大な状態を調べることになり、状態を有限に制限したり状態を抽象化したりする方法が用いられている
+図\ref{fig:verification}。
+\begin{figure}[ht]
+ \begin{center}
+  \includegraphics[width=70mm]{./pic/verification.pdf}
+ \end{center}
+ \caption{証明とモデル検査によるOSの検証}
+ \label{fig:verification}
+\end{figure}
+
+証明やモデル検査を用いて OS を検証する方法はさまざまなものが検討されている。検証は一度ですむものではなく、アプリケーションやサービス、デバイスが新しく
+なることに検証をやり直す必要がある。つまり信頼性と拡張性を両立させることが重要である。
+
+コンピュータの計算はプログラミング言語で記述されるが、その言語の実行は操作的意味論の定義などで規定される。プログラミング言語で記述される部分を
+ノーマルレベルの計算と呼ぶ。コードが実行される時には、処理系の詳細や使用する資源、あるいは、コードの仕様や型などの言語以外の部分が服属する。
+これをメタレベルの計算という。この二つのレベルを同じ言語で記述できるようにして、ノーマルレベルの計算の信頼性をメタレベルから保証できるようにしたい。
+ノーマルレベルでの正当性を保証しつつ、新しく付け加えられたデバイスやプログラムを含む正当性を検証したい。
+
+本論文では、ノーマルレベルとメタレベルを共通して表現できる言語として Continuation based C(以下CbC)\cite{cbc}を用いる。CbC は関数呼出時の暗黙の環境(Environment)
+を使わずに、コードの単位を行き来できる引数付き goto 文(parametarized goto)を持つ C と互換性のある言語である。これを用いて、Code Gear と Data Gear、さら>に
+そのメタ構造を導入する。これらを用いて、検証された Gears OS を構築したい。
+図\ref{fig:MetaGear}。
+\begin{figure}[ht]
+ \begin{center}
+  \includegraphics[width=70mm]{./pic/MetaGear.pdf}
+ \end{center}
+ \caption{Gearsのメタ計算}
+ \label{fig:MetaGear}
+\end{figure}
+
+本論文では、Gears OS の要素である Code Gear、Data Gear、そして、Meta Code Gear 、Meta Data Gear の構成を示す。これらは、CbC に変換されて実行される。
+Gears OS は、Task Scheduler を CPU や GPU 毎に持ち、一つの Task に対応する Context という Meta Data Gear を使用しながら計算を実行する。
+
+Meta Gear を入れかえることにより、ノーマルレベルの Gear をモデル検査することができるようにしたい。ノーマルレベルでの Code Gear と Data Gear は
+継続を基本とした関数型プログラミング的な記述に対応する。この記述を定理証明支援系である Agda を用いて直接に証明できるようにしたい。
+
+従来の研究でメタ計算を用いる場合は、関数型言語では Monad を用いる\cite{Moggi:1989:CLM:77350.77353}。これは Hakell では実行時の環境を記述する構文として使
+われている。
+OS の研究では、メタ計算の記述に型つきアセンブラ(Typed Assembler)を用いることがある\cite{Yang:2010:SLI:1806596.1806610}。Python や Haskell による記述をノ
+ーマルレベルとして
+採用した OS の検証の研究もある\cite{Klein:2009:SFV:1629575.1629596,Chen:2015:UCH:2815400.2815402}。
+SMIT などのモデル検査を OS の検証に用いた例もある\cite{Sigurbjarnarson:2016:PVF:3026877.3026879}。
+
+本研究で用いる Meta Gear は制限された Monad に相当し、型つきアセンブラよりは大きな表現単位を提供する。
+Haskell などの関数型プログラミング言語では実行環境が複雑であり、実行時の資源使用を明確にすることができない。CbC はスタック上に隠された
+環境を持たないので、メタレベルで使用する資源を明確にできるという利点がある。ただし、Gear のプログラミングスタイルは、従来の関数呼出
+を中心としたものとはかなり異なる。本研究では、Gears の記述をモジュールかするためにインターフェースを導入した。これにより、
+見通しの良いプログラミングが可能になった。
+
 \section{メタ計算の重要性}
 プログラムを記述する際、ノーマルレベルの処理の他に、メモリ管理、スレッド管理、CPU や GPU の資源管理等、記述しなければならない処理が存在する。
 これらの計算をメタ計算と呼ぶ。
@@ -124,7 +178,7 @@
 
 Continuation based C (CbC)\cite{cbc} はこの Code Gear 単位を用いたプログラミング言語として開発している。
 
-CbCは軽量継続による遷移を行うので、継続前の Code Gear に戻ることはなく、状態遷移ベースのプログラミングに適している。
+CbC は軽量継続による遷移を行うので、継続前の Code Gear に戻ることはなく、状態遷移ベースのプログラミングに適している。
 
 また、当研究室で開発している Gears OS\cite{gears} は Code Gear、 Data Gear の単位を用いて開発されており、CbC で記述されている。
 CbC での記述はメタ計算を含まないノーマルレベルでの記述と、 Code Gear、Data Gear の記述を含むメタレベルの記述の2種類がある。
@@ -142,7 +196,7 @@
 操作に対応する Code Gear に goto する。
 Context とは使用される Code Gear と Data Gear を全て格納している Meta Data Gear である。
 これは従来のスレッド構造体に対応する。
-つまり Gears OS では従来はコンパイラが定義する ABI(Application Binary Interface) 
+つまり Gears OS では従来はコンパイラが定義する ABI(Application Binary Interface)
 を Meta Data Gear として CbC で表現し、メタ計算として操作することができる。
 
 ノーマルレベルでは Context を直接見ることはできず、引数は Code Gear の引数を明示する必要がある。
@@ -157,19 +211,15 @@
 メタ計算の例としては並列処理があり、Context を切り替えることによって複数のスレッドを実現している。
 Context を複数の CPU に割り当てることにより並列実行を可能にしている。
 
-
-本研究では CbC を用いての Gears OS の実装と Gears OS におけるメタ計算(Context と stub)の自動生成の実装について述べる。
-
 \section{Continuation based C (CbC)}
 CbC は Code Gear という処理の単位を用いて記述するプログラミング言語である。
 Code Gear は CbC における最も基本的な処理単位である。
 Code Gear は入力と出力を持ち、CbC では引数が入出力となっている。
 CbC では Code Gear は \_\_code という型を持つ関数の構文で定義される。
 ただし、これは \_\_code 型の戻り値を返すという意味ではなく、Code Gear であることを示すフラグである。
-Code Gear は戻り値を持たないので、関数とは異なり return 文は存在しない。
+Code Gear は戻り値を持たないので、Cの関数とは異なり return 文は存在しない。
 
-Code Gear から次の Code Gear への遷移は goto による継続で処理を行い、次の Code Gear へ引数として出力を与える。
-図は Code Gear 間の処理の流れを表している。
+Code Gear から次の Code Gear への遷移は goto による継続で処理を行い、次の Code Gear へ引数として入出力を与える。
 図\ref{fig:cs}は Code Gear 間の処理の流れを表している。
 
 \begin{figure}[ht]
@@ -180,27 +230,40 @@
  \label{fig:cs}
 \end{figure}
 
-goto の後に Code Gear 名と引数を並べて、次の Code Gear への遷移を記述する。
-この goto の行き先を継続と呼ぶ。
-
-Scheme の継続と異なり CbC には呼び出し元の環境がないので、この継続は単なる行き先である。
+CbC の goto による継続は Scheme の継続と異なり呼び出し元の環境がないので、この継続は単なる行き先である。
 したがってこれを軽量継続と呼ぶ。
 軽量継続により、並列化、ループ制御、関数コールとスタックの操作を意識した最適化がソースコードレベルで行えるようにする。
 
 \section{Gears OS}
-Gears OS は Code Gear、 Data Gear の単位を用いて開発されており、CbC で記述されている。
-Gears OS では並列実行するための Task を、実行する Code Gear 、実行に必要な Input Data Gear 、Output Data Gear の組で表現する。
-Gears OS は Input/Output Data Gear の依存関係が解決された Task を並列実行する。
+Gears OS は Code Gear とデータの単位である Data Gear を用いて開発されており、CbC で記述されている。
+Gears OS では、並列実行するための Task を、実行する Code Gear と、実行に必要な Input Data Gear 、Output Data Gear の組で表現する。
+Gears OS は Input/Output Data Gear の依存関係が解決された CodeGear を並列実行する。
 Data Gear はデータの単位であり、int や文字列などの Primitive Type を持っている。
 Code Gear は任意の数の Input Data Gear を参照して処理を行い、Output Data Gear を出力し処理を終える。
 また、接続された Data Gear 以外には参照を行わない。
-処理やデータの構造が Code Gear、Data Gear に閉じているため、これにより実行時間、メモリ使用量などを予測可能なものにすることが可能になる。
+処理やデータの構造が Code Gear、Data Gear に閉じているため、これにより実行時間、メモリ使用量などを予測可能なものにすることができる。
 
 Gears OS では メタ計算 を Meta Code Gear、Meta Data Gear で表現する。
-Meta Code Gear は通常のCode Gear の直後に遷移され、メタ計算を実行する。
-Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。
+Meta Code Gear は通常の Code Gear の直後に遷移され、メタ計算を実行する。
+これを図示したものが図\ref{fig:metaCS}である。
+%Meta Code Gear で OS の機能であるメモリ管理やスレッド管理を行う。
 
-CbC は Code Gear を処理の単位として用いたプログラミング言語であるため、Gears OS の Code Gear を記述するのに適している。
+\begin{figure}[ht]
+ \begin{center}
+  \includegraphics[width=70mm]{./pic/metaCS.pdf}
+ \end{center}
+ \caption{Gears でのメタ計算}
+ \label{fig:metaCS}
+\end{figure}
+
+Gears OS は Context と呼ばれる使用されるすべての Code Gear、Data Gear 持っている Meta Data Gear を持つ。
+Gears OS は必要な Code Gear、Data Gear を参照したい場合、この Context を通す必要がある。
+
+しかし Context を通常の計算から直接扱うのはセキュリティ上好ましくない。
+そこで Context から必要なデータを取り出して Code Gear に接続するMeta Code Gear である stub Code Gear を定義し、
+これを介して間接的に必要な Data Gear にアクセスする。
+stub Code Gear は Code Gear 毎に生成され、次の Code Gear へと継続する前に挿入される。
+goto による継続を行うと、実際には次の Code Gear の stub Code Gear を呼び出す。
 
 \section{Gears OS の構成}
 Gears OS は以下の要素で構成される。
@@ -222,67 +285,45 @@
  \label{fig:gearsos}
 \end{figure}
 
-Gears OS には Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear を持つ。
-Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。
+%Gears OS には Context と呼ばれる接続可能な Code Gear、Data Gear のリスト、Temporal Data Gear のためのメモリ空間等を持っている Meta Data Gear を持つ。
+%Gears OS は必要な Code Gear、Data Gear に参照したい場合、この Context を通す必要がある。
+Code\ref{context} は Context の定義で Code\ref{initcontext} は Context の生成である。
 
-\lstinputlisting[label=context, caption=Context]{./src/context1.c}
+\lstinputlisting[caption=Contextの定義, label=context]{./src/context1.c}
+\lstinputlisting[label=initcontext, caption=Contextの生成]{./src/initcontext.c}
 
 Data Gear は union と struct によって表現される。
 Context には Data Gear の Data Type の情報が格納されている。
 この情報から確保する Data Gear のサイズなどを決定する。
+%Temporal Data Gear のためのメモリ空間は Context 毎に異なり、互いに干渉することはできない。
 
-Temporal Data Gear のためのメモリ空間は Context 毎に異なり、互いに干渉することはできない。
-Context は Task でもあり、TaskManager によって Context が生成され Task Queue へ挿入する。
-Gears OS における Task Queue は Synchronized Queue で実現される。 
+Context は Task でもあり、Taskは通常のOSのスレッドに対応する。
+Task は実行する Code Gear と Data Gear をすべて持っている。
+TaskManager によって Context が生成され TaskQueue へ挿入する。
+Gears OS における Task Queue は Synchronized Queue で実現される。
 Worker は TaskQueue から Task である Context を取得し、 Input/Output Data Gear の依存関係が解決されたものから並列実行される。
 
-\section{CbC のコードの例}
+\section{Interface}
+Interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。
+呼び出される Code Gear の引数となる Data Gear はここで全て定義される。
 
-Code\ref{excbc}は CbC で記述された stack のコードの一部である。
-Code Gear は \_\_code Code Gear で始まり、次の Code Gear へ goto で遷移する。
+Code\ref{interface}は stack の Interface である。
+Code Gear、Data Gear に参照するために Context を通す必要があるが、
+Interface を記述することでデータ構造の api と Data Gear を結びつけることが出来る。
 
-%,,,の説明
-%codegearの説明もっとする?
+\lstinputlisting[label=interface, caption=StackのInterface]{./src/Stack.cbc}
 
-\lstinputlisting[label=excbc, caption=stack.cbc]{./src/ex_stack.cbc}
+Code\ref{implement}は stack の Implement の例である。
+createImpl は関数呼び出しで呼び出され、Implement の初期化と Code Gear のスロットに対応する Code Gear の番号を入れる。
+%return で interface を返し、その先で Code Gear や Data Gear へ継続できるようになる。
 
-\section{CbC による Gears OS 記述の問題}
+\lstinputlisting[label=implement, caption=SingleLinkedStackのImplement]{./src/stackimpl.cbc}
 
-%メタの話
+\section{stub Code Gear の生成}
+
 Gears OS を CbC で実装する上でメタ計算の記述が煩雑であることがわかった。
 これらのメタ計算を自動生成することにより Gears OS を記述する上においてより良い構文をユーザーに提供することにした。
 
-\section{interface の記述}
-interface は呼び出しの引数になる Data Gear の集合であり、そこで呼び出される Code Gear のエントリである。
-呼び出される Code Gear の引数となる Data Gear はここで全て定義される。
-
-Code Gear、Data Gear に参照するために Context を通す必要があるが、
-interface を記述することでデータ構造の api と Data Gear を結びつけることが出来、呼び出しが容易になった。
-%create は関数呼び出しで呼び出され、interface と impliment の初期化と Code Gear のポインタの設定を行う。
-%return で interface を返し、その先で Code Gear や Data Gear へ継続できるようになる。
-
-\lstinputlisting[label=interface, caption=Interface]{./src/Stack.cbc}
-
-\section{Gearef、GearImpl}
-
-Context には Allocation 等で生成した Data Gear へのポインタが格納されている。
-Code Gear が Context にアクセスする際、ポインタを使用してデータを取り出すため、Code\ref{gearef1} のようにコードが煩雑になってしまう。
-そこで Code Gear がデータを参照するための Gearef というマクロを定義した。
-Gearef に Context と型を渡すことでデータの参照が行える。
-また interface の実装を参照する際も、ポインタでの記述が複雑になってしまうため 同様に GearImpl を定義した。
-GearImpl は Context と interface 名、interface の変数名を指定して参照する。
-Gearef と GearImpl を用いたコードが Code\ref{gearef2}である。
-
-\lstinputlisting[label=gearef1, caption=disableGearef]{./src/ex_code1}
-\lstinputlisting[label=gearef2, caption=enableGearef]{./src/ex_code2}
-
-\section{stub Code Gear}
-Code Gear が必要とする Data Gear を取り出す際に Context を通す必要があるが、
-Context を直接扱うのはセキュリティ上好ましくない。
-そこで Context から必要なデータを取り出して Code Gear に接続する stub Code Gear を定義し、これを介して間接的に必要な Data Gear にアクセスする。
-stub Code Gear は Code Gear 毎に生成され、次の Code Gear へと継続する間に挟まれる。
-
-\section{stub Code Gear の生成}
 stub Code Gear は Code Gear 間の継続に挟まれる Code Gear が必要な Data Gear を Context から取り出す処理を行うものである。
 Code Gear 毎に記述する必要があり、そのCode Gear の引数を見て取り出す Data Gear を選択する。
 stub Code Gear を 自動生成する generate stub を Perl スクリプトで作成することによって Code Gear の記述量を約半分にすることができる。
@@ -293,7 +334,7 @@
 
 cbc ファイルから、生成した stub Code Gear を加えて stub を加えたコードに変換を行う。(Code\ref{stack_c})
 
-\lstinputlisting[label=stack_c, caption= stub]{./src/ex_stub}
+\lstinputlisting[label=stack_c, caption=stub Code Gear を加えたコード]{./src/ex_stub}
 
 \section{Context の生成}
 generate\_context は Context.h、Interface.cbc、generate\_stub で生成されたImpl.cbc を見て Context を生成する Perl スクリプトである。
@@ -323,16 +364,82 @@
 Context には Data Gear の Data Type の情報が格納されている。
 この情報から確保される Data Gear のサイズなどを決定する。
 
-\lstinputlisting[label=init_context, caption=initContext]{./src/context2.c}
+\lstinputlisting[label=init_context, caption=Perlスクリプトで生成されたinitContext]{./src/gencontext.c}
+
+\section{比較}
+
+従来のプログラミングスタイルとの比較。
+Gears のプログラミングは関数呼出を中心とするプログラミングとはかなり異なる。
+Gears は関数呼出を禁止しているわけではなく、使用する資源の制御に問題がないなら普通に関数呼出して良い。
+Linux kernel などでは関数呼出の大半はインライン展開されることを期待してプログラミングされており、
+関数呼出で予測できないスタックの爆発やCPU資源の浪費が起きないようにプログラミングされている。
+Gears では Gears 間のプログラミングは戻り先や使用する資源を明示する必要がある。
+
+goto 文での引数は通常の関数呼出と異なり、スタック(環境)に積むことができない。引数に必要な情報を含むData Gearを
+持ち歩くスタイルとなる。一つのインタフェース内部では、これらは共通している。実際、これらはメタレベルでは、
+Context というMeta Data Gear にすべて格納されている。メタレベルは、Data Gear の詳細な型は使用されない。
+ノーマルレベルに移行する際に stub Code Gear を通して詳細な型が接続される。
+
+インタフェースを再利用する際には、呼び出すインタフェースが持つ引数は保存される必要がある。これらは、実際には
+Context 内にあるので自動的に保存されている。ノーマルレベルの記述では、... の部分にその意味が込めれている。
+これは、可変長引数の...と同じ意味だと考えても良い。ただ、LLVM/GCC レベルでそれを実装するのは比較的難しい。
+なので、今回はScriptによる変換を採用している。
+
+ノーマルレベルの記述と関数型プログラミングの記述の比較。Gear は必ず継続を渡す必要がある。これは一段の
+関数呼出を許しているのと同等である。70年代の Fortan の関数呼出は決まった場所に戻り先を格納するので
+再起呼出ができなかったのと同じである。例えば Code Gears 以下のような型を持つ。ここで t は継続の型である。
+Stack は Stack を受けとる Stack \verb|->| t という Code Gear を継続として引数で受けとる。popStack はこの引数を
+呼び出す。
+
+\verb|popStack : {a t : Set} -> Stack |
+
+\verb|           -> (Stack -> t) -> t|
+
+つまり、Code Gear は制限された関数の形式を持っている。Data Gear は、関数型言語の直積や排他的論理和(Sum)を含むデータ型に
+対応する。しかし、一つの Context で実行される Data Gear は、一つの巨大なSumに含まれるようになっている。これを
+メタレベルでは、中の型の詳細に立ち入ることなく実行する。
+
+Context はノーマルレベル のData Gear の他に様々なメタ情報を持つ。例えば、メモリ管理情報や実行される CPU 、あるいは、Task の
+状態、待ち合わせている Data Gear などである。これらの情報は C やアセンブラのレベルで実装されるのと同時に、通常の Gear の
+プログラミングにも対応する。例えば、CPU をかそうてきに Gears で記述すればソフトウェア的な並列実行を実現し、実際の
+GPU を用いれば GPU による並列実行となる。この実行をモデル検査的な状態数え上げに対応させればモデル検査を実行できる。
+
+Haskell などを実行可能仕様記述として用いる OS の検証\cite{Klein:2009:SFV:1629575.1629596,Chen:2015:UCH:2815400.2815402}と、Code Gear を用いる手法は類似>しているが、Code Gear の場合は、
+記述を制限し、Code と仕様の対応、さらにCodeと資源の対応が明確になる利点がある。
+
+型つきアセンブラ\cite{Yang:2010:SLI:1806596.1806610}は、より低レベルの関数型の記述であると言える。アセンブラの記述自体は小さく扱いやすいが、
+OS レベルあるいはアプリケーションレベルからの距離が大きい。型の整合性を保証するだけでは OS の検証としては
+不十分なので、証明やモデル検査を用いることになるが、記述量が多いのが、その際に欠点となる。
+Code Gear は、より大きな単位であり、プログラミングレベルの抽象化が可能になっているので、これらの記述の
+大きさの欠点をカバーできる可能性がある。
+
+証明手法は、従来では Hoare Logic \cite{Chen:2015:UCH:2815400.2815402}のような Post Condition / Pre Condition を用いる方法が使われている。
+現在のGearsは、Agda への変換は考えているが、その上の具体的な証明方法はまだ用意されていない。
 
 \section{今後の課題}
-本研究では LLVM/Clang のデバッグ、interface の記述、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う Perl スクリプトの生成を行なった。
-これにより Gears OS のコードの煩雑さは改善され、ユーザーは Context への接続を意識する必要がなくなった。
+本論文では Code Gear、 Data Gear によって構成される Gears OS のプロトタイプの設計、実装、CbC ファイルから Gears OS の記述に必要な Context と stub の生成を行う Perl スクリプトの生成を行なった。
+Code Gear 、Data Gear を処理とデータの単位として用いて Gears OS を設計した。
+Code Gear、Data Gear にはメタ計算を記述するための Meta Code Gear、Meta Data Gear が存在する。
+メタ計算を Meta Code Gear、によって行うことでメタ計算を階層化して行うことができる。
+Code Gear は関数より細かく分割されてるためメタ計算を柔軟に記述できる。
+
+Code Gear と Data Gear は Interface と呼ばれるまとまりとして記述される。
+Interface は使用される Data Gear の定義と、それに対する操作を行う Code Gear の集合である。
+Interface は複数の実装をもち、Meta Data Gear として定義される。
+従来の関数呼び出しでは引数をスタック上に構成し、関数の実装アドレスを Call するが、
+Gears OS では引数は Context 上に用意された Interface の Data Gear に格納され、操作に対応する Code Gear に goto する。
+
+Context は使用する Code Gear、Data Gear をすべて格納している Meta Data Gear である。
+通常の計算から Context を直接扱うことはセキュリティ上好ましくない。
+このため Context から必要なデータを取り出して Code Gear に接続する Meta Code Gear である stub Code Gear を定義した。
+stub Code Gear は Code Gear 毎に記述され、Code Gear 間の遷移に挿入される。
+
+これらのメタ計算の記述は煩雑であるため Perl スクリプトによる自動生成を行なった。
+これにより Gears OS のコードの煩雑さは改善され、ユーザーレベルではメタを意識する必要がなくなった。
 
 今後の課題は Code Gear からメタ計算を行う meta Code Gear を生成できるようにし、ユーザーがメタレベルの処理を意識せずにコードを記述できるようにする。
 また、今回 Perl スクリプトによって Context や stub の生成を行なったが、LLVM/clang 上で実装しコンパイラで直接 CbC を実行できるようにすることを目的とする。
 
-
 \nocite{*}
 \bibliographystyle{ipsjunsrt}
 \bibliography{sigos}