changeset 0:85ee6174f90a default tip

add paper
author ryokka
date Wed, 12 Feb 2020 17:55:00 +0900
parents
children
files Makefile escape_agda.rb fig/WorkerRun.xbb fig/bitonicNetwork.pdf fig/bitonicNetwork.xbb fig/bitonicSort.pdf fig/bitonicSort.svg fig/bitonicSort.xbb fig/cbc-hoare.graffle fig/cbc-hoare.pdf fig/cbc-hoare.xbb fig/cbc-subtype.graffle fig/cbc-subtype.pdf fig/cbc-subtype.xbb fig/cgdg.pdf fig/cgdg.xbb fig/codegear-datagear.graffle fig/codegear-datagear.pdf fig/codegear-datagear.xbb fig/codesegment.pdf fig/codesegment.xbb fig/codesegment2.pdf fig/codesegment2.xbb fig/csds.graffle fig/csds.pdf fig/csds.xbb fig/cudaArchitecture.graffle fig/cudaArchitecture.pdf fig/cudaArchitecture.xbb fig/cudaDataArchitecture.graffle fig/cudaDataArchitecture.pdf fig/cudaDataArchitecture.xbb fig/dependency.graffle fig/dependency.pdf fig/dependency.xbb fig/factorial.graffle fig/factorial.pdf fig/factorial.xbb fig/gears-meta.graffle fig/gears-meta.pdf fig/gears-meta.xbb fig/goto.graffle fig/goto.pdf fig/goto.xbb fig/gotoInterface.graffle fig/gotoInterface.pdf fig/gotoInterface.xbb fig/hoare-cg-dg.pdf fig/hoare-cg-dg.xbb fig/hoare-logic.graffle fig/hoare-logic.pdf fig/hoare-logic.xbb fig/hoare_cg_dg.graffle fig/hoare_cg_dg.pdf fig/hoare_cg_dg.xbb fig/iterateTaskExec.graffle fig/iterateTaskExec.pdf fig/iterateTaskExec.xbb fig/meta-cg-dg.pdf fig/meta-cg-dg.xbb fig/meta-hierarchy.graffle fig/meta-hierarchy.pdf fig/meta-hierarchy.xbb fig/meta.graffle fig/meta.pdf fig/meta.xbb fig/meta_cg_dg.graffle fig/meta_cg_dg.pdf fig/meta_cg_dg.xbb fig/metameta.graffle fig/metameta.pdf fig/metameta.xbb fig/non-destructive-rbtree.pdf fig/non-destructive-rbtree.xbb fig/put.graffle fig/put.pdf fig/put.xbb fig/putSynchronizedQueue1.graffle fig/putSynchronizedQueue1.pdf fig/putSynchronizedQueue1.xbb fig/putSynchronizedQueue2.graffle fig/putSynchronizedQueue2.pdf fig/putSynchronizedQueue2.xbb fig/rbtree.graffle fig/rbtree.pdf fig/rbtree.xbb fig/ryukyu.pdf fig/ryukyu.xbb fig/semaphoreSequence.graffle fig/semaphoreSequence.pdf fig/semaphoreSequence.xbb fig/sendTask.graffle fig/sendTask.pdf fig/sendTask.xbb fig/subtype-arg.graffle fig/subtype-arg.pdf fig/subtype-arg.xbb fig/subtype-return.graffle fig/subtype-return.pdf fig/subtype-return.xbb fig/takeSynchronizedQueue1.graffle fig/takeSynchronizedQueue1.pdf fig/takeSynchronizedQueue1.xbb fig/takeSynchronizedQueue2.graffle fig/takeSynchronizedQueue2.pdf fig/takeSynchronizedQueue2.xbb fig/twice.pdf fig/twice.svg fig/twice.xbb fig/u-ryukyu-Mark.eps fig/vsgo.pdf fig/vsgo.svg fig/vsgo.xbb fig/vsopenmp.pdf fig/vsopenmp.svg fig/vsopenmp.xbb fig/workerRun.graffle fig/workerRun.pdf ieicej.cls readme.1st readme.tex sieicej.bst src/AgdaBasics.agda src/AgdaBasics.agda.replaced src/AgdaBool.agda src/AgdaBool.agda.replaced src/AgdaDebug.agda src/AgdaDebug.agda.replaced src/AgdaElem.agda src/AgdaElem.agda.replaced src/AgdaElemApply.agda src/AgdaElemApply.agda.replaced src/AgdaFunction.agda src/AgdaFunction.agda.replaced src/AgdaId.agda src/AgdaId.agda.replaced src/AgdaImplicitId.agda src/AgdaImplicitId.agda.replaced src/AgdaImport.agda src/AgdaImport.agda.replaced src/AgdaInstance.agda src/AgdaInstance.agda.replaced src/AgdaInterface.agda src/AgdaInterface.agda.replaced src/AgdaLambda.agda src/AgdaLambda.agda.replaced src/AgdaModusPonens.agda src/AgdaModusPonens.agda.replaced src/AgdaNPushNPop.agda src/AgdaNPushNPop.agda.replaced src/AgdaNPushNPopProof.agda src/AgdaNPushNPopProof.agda.replaced src/AgdaNat.agda src/AgdaNat.agda.replaced src/AgdaNot.agda src/AgdaNot.agda.replaced src/AgdaParameterizedModule.agda src/AgdaParameterizedModule.agda.replaced src/AgdaPattern.agda src/AgdaPattern.agda.replaced src/AgdaPlus.agda src/AgdaPlus.agda.replaced src/AgdaProduct.agda src/AgdaProduct.agda.replaced src/AgdaProp.agda src/AgdaProp.agda.replaced src/AgdaPushPop.agda src/AgdaPushPop.agda.replaced src/AgdaPushPopProof.agda src/AgdaPushPopProof.agda.replaced src/AgdaRecord.agda src/AgdaRecord.agda.replaced src/AgdaRecordProj.agda src/AgdaRecordProj.agda.replaced src/AgdaSingleLinkedStack.agda src/AgdaSingleLinkedStack.agda.replaced src/AgdaStack.agda src/AgdaStack.agda.replaced src/AgdaStackDS.agda src/AgdaStackDS.agda.replaced src/AgdaStackImpl.agda src/AgdaStackImpl.agda.replaced src/AgdaStackSomeState.agda src/AgdaStackSomeState.agda.replaced src/AgdaStackTest.agda src/AgdaStackTest.agda.replaced src/AgdaTree.agda src/AgdaTree.agda.replaced src/AgdaTreeDebug.agda src/AgdaTreeDebug.agda.replaced src/AgdaTreeDebugReturnNode4.agda src/AgdaTreeDebugReturnNode4.agda.replaced src/AgdaTreeImpl.agda src/AgdaTreeImpl.agda.replaced src/AgdaTreeProof.agda src/AgdaTreeProof.agda.replaced src/AgdaTreeTest.agda src/AgdaTreeTest.agda.replaced src/AgdaTypeClass.agda src/AgdaTypeClass.agda.replaced src/AgdaWhere.agda src/AgdaWhere.agda.replaced src/CodeSegment.agda src/CodeSegment.agda.replaced src/CodeSegments.agda src/CodeSegments.agda.replaced src/DataSegment.agda src/DataSegment.agda.replaced src/Equiv.agda src/Equiv.agda.replaced src/Exec.agda src/Exec.agda.replaced src/Goto.agda src/Goto.agda.replaced src/Maybe.agda src/Maybe.agda.replaced src/MetaCodeSegment.agda src/MetaCodeSegment.agda.replaced src/MetaDataSegment.agda src/MetaDataSegment.agda.replaced src/MetaMetaCodeSegment.agda src/MetaMetaCodeSegment.agda.replaced src/MetaMetaDataSegment.agda src/MetaMetaDataSegment.agda.replaced src/Nat.agdai src/NatAdd.agda src/NatAdd.agda.replaced src/NatAddSym.agda src/NatAddSym.agda.replaced src/PushPopType.agda src/PushPopType.agda.replaced src/Reasoning.agda src/Reasoning.agda.replaced src/RedBlackTree.agda src/RedBlackTree.agda.replaced src/SingleLinkedStack.cbc src/Stack.cbc src/ThreePlusOne.agda src/ThreePlusOne.agda.replaced src/agda-func.agda src/agda-func.agda.replaced src/agda-func.agdai src/agda-hoare-interpret.agda src/agda-hoare-interpret.agda.replaced src/agda-hoare-prog.agda src/agda-hoare-prog.agda.replaced src/agda-hoare-rule.agda src/agda-hoare-rule.agda.replaced src/agda-hoare-satisfies.agda src/agda-hoare-satisfies.agda.replaced src/agda-hoare-soundness.agda src/agda-hoare-soundness.agda.replaced src/agda-hoare-term.agda src/agda-hoare-term.agda.replaced src/agda-hoare-while.agda src/agda-hoare-while.agda.replaced src/agda-hoare-whileprog.agda src/agda-hoare-whileprog.agda.replaced src/agda-hoare-write.agda src/agda-hoare-write.agda.replaced src/agda-mcg.agda src/agda-mcg.agda.replaced src/agda-mdg.agda src/agda-mdg.agda.replaced src/agda-pattern.agda src/agda-pattern.agda.replaced src/agda-plus.agda src/agda-plus.agda.replaced src/agda-rewrite.agda src/agda-rewrite.agda.replaced src/agda-term.agda src/agda-term.agda.replaced src/agda-term.agdai src/agda-term1.agda src/agda-term1.agda.replaced src/agda-term2.agda src/agda-term2.agda.replaced src/agda-term3.agda src/agda-term3.agda.replaced src/atomicImpl.cbc src/atomicInterface.h src/atton-master-meta-sample.agda src/atton-master-meta-sample.agda.replaced src/atton-master-sample.agda src/atton-master-sample.agda.replaced src/axiom-taut.agda src/axiom-taut.agda.replaced src/cbc-agda.agda src/cbc-agda.agda.replaced src/cbc-agda.agdai src/cbc-condition.agda src/cbc-condition.agda.replaced src/cbc-hoare-SoundnessC.agda src/cbc-hoare-SoundnessC.agda.replaced src/cbc-hoare-loop.agda src/cbc-hoare-loop.agda.replaced src/cbc-hoare-loophelper.agda src/cbc-hoare-loophelper.agda.replaced src/cbc-hoare-prim.agda src/cbc-hoare-prim.agda.replaced src/cbc-hoare-soundness.agda src/cbc-hoare-soundness.agda.replaced src/cbc-hoare-while.agda src/cbc-hoare-while.agda.replaced src/cbc-hoare.agda src/cbc-hoare.agda.replaced src/cg1.cbc src/codeGearExample.cbc src/cong.agda src/cong.agda.replaced src/context.c src/context.h src/context1.c src/context2.c src/contextContinuation.cbc src/createCPUWorker.cbc src/createTaskManager.cbc src/cuLaunchKernel.cbc src/cudaTwice.cu src/env.agda src/env.agda.replaced src/env.agdai src/escape_agda.rb src/ex_cbc src/ex_code1 src/ex_code2 src/ex_stack.cbc src/ex_stub src/excbc.cbc src/executorInterface.h src/factrial.cbc src/function.agda src/function.agda.replaced src/gears-while.agda src/gears-while.agda.replaced src/gears.agda src/gears.agda.replaced src/gencontext.c src/go src/go.go src/goto.cbc src/initContext.c src/interface.cbc src/iterateCall.cbc src/iteratePargoto.cbc src/iteratorInterface.h src/metaCodeGearExample.cbc src/metaCreateTask.cbc src/nat.agda src/nat.agda.replaced src/openMP.c src/parGotoCreateTask.cbc src/putSynchronizedQueue.cbc src/queueInterface.h src/record.agda src/record.agda.replaced src/redBlackTreeTest.agda src/redBlackTreeTest.agda.replaced src/semaphoreInterface.h src/sendTask.cbc src/singleLinkedQueue.cbc src/singleLinkedQueueTest.cbc src/singleLinkedQueueTest_script.cbc src/singleLinkedStackInterface.cbc src/sound-conv.agda src/sound-conv.agda.replaced src/sound-impl.agda src/sound-impl.agda.replaced src/sound-loop.agda src/sound-loop.agda.replaced src/sound-looppsem.agda src/sound-looppsem.agda.replaced src/sound-pcom.agda src/sound-pcom.agda.replaced src/sound-psemcom.agda src/sound-psemcom.agda.replaced src/stack-product.agda src/stack-product.agda.replaced src/stack-subtype-sample.agda src/stack-subtype-sample.agda.replaced src/stack-subtype.agda src/stack-subtype.agda.replaced src/stack.agda src/stack.agda.replaced src/stack.agdai src/stackImpl.agda src/stackImpl.agda.replaced src/stackTest.agda src/stackTest.agda.replaced src/stackTest.agdai src/stackimpl.cbc src/stub.cbc src/stubCodeGear.cbc src/subtype.agda src/subtype.agda.replaced src/sync_dequeue.c src/sync_enqueue.c src/synchronizedQueue.h src/taskManagerInterface.cbc src/term1.agda src/term1.agda.replaced src/term2.agda src/term2.agda.replaced src/term3.agda src/term3.agda.replaced src/termination.agda src/termination.agda.replaced src/termination.agdai src/tree.agda src/tree.agda.replaced src/twice.c src/while-test.agda src/while-test.agda.replaced src/workerRun.cbc src/zero.agda src/zero.agda.replaced tecrep.bib tecrep.pdf tecrep.tex
diffstat 419 files changed, 18643 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,44 @@
+# Settings
+TARGET=tecrep
+BIBTEX=pbibtex
+BB=extractbb
+
+vpath pdf fig
+FIGURES=$(wildcard pic/*.pdf)
+FIGURES_FOR_TEX=$(subst .pdf,.xbb,$(FIGURES))
+
+vpath agda src
+SOURCES=$(wildcard src/*agda)
+SOURCES_FOR_TEX=$(subst .agda,.agda.replaced,$(SOURCES))
+
+# dependencies
+$(TARGET).pdf : $(TARGET).dvi
+	dvipdfmx $<
+
+$(TARGET).dvi : $(wildcard *.tex) $(FIGURES_FOR_TEX) $(SOURCES_FOR_TEX)
+	platex  $(TARGET).tex
+	$(BIBTEX) $(TARGET)
+	platex  $(TARGET).tex
+	platex  $(TARGET).tex
+
+%.xbb: %.pdf
+	$(BB) $<
+
+%.agda.replaced: %.agda
+	ruby escape_agda.rb $<
+
+
+# commands
+.PHONY : clean all open remake
+
+clean:
+	rm -f *.dvi *.aux *.log *.pdf *.ps *.gz *.bbl *.blg *.toc *~ *.core *.cpt *.lof *.lot *.lol *.bbl *.blg *.idx src/*.replaced
+
+all: $(TARGET).pdf
+
+open: $(TARGET).pdf
+	open $(TARGET).pdf
+
+remake:
+	make clean
+	make all
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/escape_agda.rb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,40 @@
+#!/usr/bin/env ruby
+# coding: utf-8
+
+Suffix     = '.agda.replaced'
+EscapeChar = '@'
+FileName   = ARGV.first
+
+ReplaceTable = {
+  '→' => 'rightarrow',
+  '->' => 'rightarrow',
+  '⊔'  => 'sqcup',
+  '∷' => 'text{::}',
+  '∙'  => 'circ',
+  '≡' => 'equiv',
+  '×' => 'times',
+  '⟨'  => 'langle',
+  '⟩'  => 'rangle',
+  'ℕ' => 'mathbb{N}',
+  '₁' => '_{1}',
+  '₂' => '_{2}',
+  '∎'  => 'blacksquare',
+  'λ' => 'lambda',
+  '∧' => 'wedge',
+  '/\\' => 'wedge',
+  '⇒' => 'Rightarrow',
+  '¬' => 'neg',
+  '≤' => 'leq',
+  '⊥' => 'bot',
+  '∀' => 'forall',
+  '#' => '\#',
+  '⊤' => '\top'
+}
+
+code = File.read(FileName)
+ReplaceTable.each do |k, v|
+  escaped_str = EscapeChar + "$\\#{v}$" + EscapeChar
+  code = code.gsub(k, escaped_str)
+end
+
+File.write(FileName.sub(/.agda$/, Suffix), code)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/WorkerRun.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/workerRun.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 824 309
+%%HiResBoundingBox: 0.000000 0.000000 824.000000 309.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/bitonicNetwork.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/bitonicNetwork.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/bitonicNetwork.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 591 422
+%%HiResBoundingBox: 0.000000 0.000000 591.000000 422.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/bitonicSort.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/bitonicSort.svg	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,204 @@
+<?xml version="1.0" encoding="utf-8"  standalone="no"?>
+<svg 
+ width="600" height="480"
+ viewBox="0 0 600 480"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+>
+
+<title>Gnuplot</title>
+<desc>Produced by GNUPLOT 5.2 patchlevel 2 </desc>
+
+<g id="gnuplot_canvas">
+
+<rect x="0" y="0" width="600" height="480" fill="none"/>
+<defs>
+
+	<circle id='gpDot' r='0.5' stroke-width='0.5'/>
+	<path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
+	<path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
+	<path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
+	<rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
+	<rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
+	<circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/>
+	<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
+	<path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
+	<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
+	<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
+	<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
+	<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
+	<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
+	<path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
+	<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
+	<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
+	  <feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
+	  <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
+	</filter>
+	<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
+	  <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
+	  <feComposite in='SourceGraphic' in2='grey' operator='atop'/>
+	</filter>
+</defs>
+<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M63.6,444.0 L72.6,444.0 M557.8,444.0 L548.8,444.0  '/>	<g transform="translate(55.3,447.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 0</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M63.6,400.7 L72.6,400.7 M557.8,400.7 L548.8,400.7  '/>	<g transform="translate(55.3,404.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 5</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M63.6,357.4 L72.6,357.4 M557.8,357.4 L548.8,357.4  '/>	<g transform="translate(55.3,361.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 10</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M63.6,314.0 L72.6,314.0 M557.8,314.0 L548.8,314.0  '/>	<g transform="translate(55.3,317.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 15</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M63.6,270.7 L72.6,270.7 M557.8,270.7 L548.8,270.7  '/>	<g transform="translate(55.3,274.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 20</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M63.6,227.4 L72.6,227.4 M557.8,227.4 L548.8,227.4  '/>	<g transform="translate(55.3,231.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 25</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M63.6,184.1 L72.6,184.1 M557.8,184.1 L548.8,184.1  '/>	<g transform="translate(55.3,188.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 30</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M63.6,140.7 L72.6,140.7 M557.8,140.7 L548.8,140.7  '/>	<g transform="translate(55.3,144.6)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 35</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M63.6,97.4 L72.6,97.4 M557.8,97.4 L548.8,97.4  '/>	<g transform="translate(55.3,101.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 40</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M63.6,54.1 L72.6,54.1 M557.8,54.1 L548.8,54.1  '/>	<g transform="translate(55.3,58.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 45</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M94.5,444.0 L94.5,435.0 M94.5,54.1 L94.5,63.1  '/>	<g transform="translate(94.5,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >1 cpu</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M156.3,444.0 L156.3,435.0 M156.3,54.1 L156.3,63.1  '/>	<g transform="translate(156.3,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >2 cpus</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M218.0,444.0 L218.0,435.0 M218.0,54.1 L218.0,63.1  '/>	<g transform="translate(218.0,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >4 cpus</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M279.8,444.0 L279.8,435.0 M279.8,54.1 L279.8,63.1  '/>	<g transform="translate(279.8,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >8 cpus</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M341.6,444.0 L341.6,435.0 M341.6,54.1 L341.6,63.1  '/>	<g transform="translate(341.6,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >16 cpus</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M403.4,444.0 L403.4,435.0 M403.4,54.1 L403.4,63.1  '/>	<g transform="translate(403.4,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >32 cpus</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M465.1,444.0 L465.1,435.0 M465.1,54.1 L465.1,63.1  '/>	<g transform="translate(465.1,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >gpu</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M526.9,444.0 L526.9,435.0 M526.9,54.1 L526.9,63.1  '/>	<g transform="translate(526.9,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >gpu(kernel only)</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M63.6,54.1 L63.6,444.0 L557.8,444.0 L557.8,54.1 L63.6,54.1 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(16.3,249.1) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >time(s)</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(310.7,31.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >bitonicSort benchmark</tspan></text>
+	</g>
+</g>
+	<g id="gnuplot_plot_1" ><title>gnuplot_plot_1</title>
+<g fill="none" color="white" stroke="black" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '79.0,444.0 110.0,444.0 110.0,85.1 79.0,85.1 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M79.0,444.0 L79.0,85.2 L109.9,85.2 L109.9,444.0 L79.0,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '140.8,444.0 171.8,444.0 171.8,241.7 140.8,241.7 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M140.8,444.0 L140.8,241.8 L171.7,241.8 L171.7,444.0 L140.8,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '202.6,444.0 233.6,444.0 233.6,340.3 202.6,340.3 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M202.6,444.0 L202.6,340.4 L233.5,340.4 L233.5,444.0 L202.6,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '264.4,444.0 295.4,444.0 295.4,389.1 264.4,389.1 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M264.4,444.0 L264.4,389.2 L295.3,389.2 L295.3,444.0 L264.4,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '326.1,444.0 357.1,444.0 357.1,415.0 326.1,415.0 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M326.1,444.0 L326.1,415.1 L357.0,415.1 L357.0,444.0 L326.1,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '387.9,444.0 418.9,444.0 418.9,427.7 387.9,427.7 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M387.9,444.0 L387.9,427.8 L418.8,427.8 L418.8,444.0 L387.9,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '449.7,444.0 480.7,444.0 480.7,396.9 449.7,396.9 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M449.7,444.0 L449.7,397.0 L480.6,397.0 L480.6,444.0 L449.7,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '511.5,444.0 542.5,444.0 542.5,442.5 511.5,442.5 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M511.5,444.0 L511.5,442.6 L542.4,442.6 L542.4,444.0 L511.5,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+	</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M63.6,54.1 L63.6,444.0 L557.8,444.0 L557.8,54.1 L63.6,54.1 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+</g>
+</svg>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/bitonicSort.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/bitonicSort.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 600 480
+%%HiResBoundingBox: 0.000000 0.000000 600.000000 480.000000
+%%PDFVersion: 1.5
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/cbc-hoare.graffle has changed
Binary file fig/cbc-hoare.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/cbc-hoare.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/cbc-hoare.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 580 175
+%%HiResBoundingBox: 0.000000 0.000000 580.000000 175.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/cbc-subtype.graffle has changed
Binary file fig/cbc-subtype.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/cbc-subtype.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/cbc-subtype.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 1084 281
+%%HiResBoundingBox: 0.000000 0.000000 1084.000000 281.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/cgdg.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/cgdg.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/cgdg.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 535 427
+%%HiResBoundingBox: 0.000000 0.000000 535.000000 427.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/codegear-datagear.graffle has changed
Binary file fig/codegear-datagear.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/codegear-datagear.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/codegear-datagear.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 535 427
+%%HiResBoundingBox: 0.000000 0.000000 535.000000 427.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/codesegment.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/codesegment.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/codesegment.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 305 85
+%%HiResBoundingBox: 0.000000 0.000000 305.000000 85.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/codesegment2.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/codesegment2.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/codesegment2.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 393 201
+%%HiResBoundingBox: 0.000000 0.000000 393.000000 201.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/csds.graffle has changed
Binary file fig/csds.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/csds.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/csds.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 580 76
+%%HiResBoundingBox: 0.000000 0.000000 580.000000 76.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/cudaArchitecture.graffle has changed
Binary file fig/cudaArchitecture.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/cudaArchitecture.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/cudaArchitecture.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 446 488
+%%HiResBoundingBox: 0.000000 0.000000 446.000000 488.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/cudaDataArchitecture.graffle has changed
Binary file fig/cudaDataArchitecture.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/cudaDataArchitecture.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/cudaDataArchitecture.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 448 598
+%%HiResBoundingBox: 0.000000 0.000000 448.000000 598.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/dependency.graffle has changed
Binary file fig/dependency.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/dependency.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/dependency.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 573 273
+%%HiResBoundingBox: 0.000000 0.000000 573.000000 273.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/factorial.graffle	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,580 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ActiveLayerIndex</key>
+	<integer>0</integer>
+	<key>ApplicationVersion</key>
+	<array>
+		<string>com.omnigroup.OmniGraffle6</string>
+		<string>169.23.0.276662</string>
+	</array>
+	<key>AutoAdjust</key>
+	<true/>
+	<key>BackgroundGraphic</key>
+	<dict>
+		<key>Bounds</key>
+		<string>{{0, 0}, {559, 783}}</string>
+		<key>Class</key>
+		<string>SolidGraphic</string>
+		<key>ID</key>
+		<integer>2</integer>
+		<key>Style</key>
+		<dict>
+			<key>stroke</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+		</dict>
+	</dict>
+	<key>BaseZoom</key>
+	<integer>0</integer>
+	<key>CanvasOrigin</key>
+	<string>{0, 0}</string>
+	<key>ColumnAlign</key>
+	<integer>1</integer>
+	<key>ColumnSpacing</key>
+	<real>36</real>
+	<key>CreationDate</key>
+	<string>2011-11-12 11:03:25 +0000</string>
+	<key>Creator</key>
+	<string>Nobuyasu Oshiro</string>
+	<key>DisplayScale</key>
+	<string>1 in = 1.00000 in</string>
+	<key>GraphDocumentVersion</key>
+	<integer>12</integer>
+	<key>GraphicsList</key>
+	<array>
+		<dict>
+			<key>Bounds</key>
+			<string>{{337.67999245226383, 177.89999766647816}, {103, 24}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>ID</key>
+			<integer>44</integer>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
+{\colortbl;\red255\green255\blue255;}
+\deftab720
+\pard\pardeftab720\qc\partightenfactor0
+
+\f0\fs22 \cf0 goto print_factorial}</string>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>42</integer>
+			</dict>
+			<key>ID</key>
+			<integer>43</integer>
+			<key>Points</key>
+			<array>
+				<string>{325.49999356269836, 144}</string>
+				<string>{325.49999356269836, 235.79999533295631}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>Legacy</key>
+					<false/>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>33</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{287.99999356269836, 208.79999533295631}, {75, 54}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>42</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
+
+\f0\fs24 \cf0 print_\
+factorial}</string>
+				<key>VerticalPad</key>
+				<real>0.0</real>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{284.99999356269836, 45.359998986124992}, {81, 24}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>ID</key>
+			<integer>37</integer>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
+{\colortbl;\red255\green255\blue255;}
+\deftab720
+\pard\pardeftab720\qc\partightenfactor0
+
+\f0\fs22 \cf0 goto factorial0}</string>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{208.49999356269836, 106.55999761819839}, {81, 24}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>ID</key>
+			<integer>36</integer>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
+{\colortbl;\red255\green255\blue255;}
+\deftab720
+\pard\pardeftab720\qc\partightenfactor0
+
+\f0\fs22 \cf0 goto factorial0}</string>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>33</integer>
+			</dict>
+			<key>ID</key>
+			<integer>35</integer>
+			<key>Points</key>
+			<array>
+				<string>{325.49999356269836, 144}</string>
+				<string>{294.49999356269836, 93.08203125}</string>
+				<string>{351.578125, 84.4765625}</string>
+				<string>{325.49999356269836, 144}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>Legacy</key>
+					<false/>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>33</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>33</integer>
+			</dict>
+			<key>ID</key>
+			<integer>34</integer>
+			<key>Points</key>
+			<array>
+				<string>{183, 144}</string>
+				<string>{325.49999356269836, 144}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>Legacy</key>
+					<false/>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>3</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{287.99999356269836, 117}, {75, 54}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>33</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
+
+\f0\fs24 \cf0 factorial 0}</string>
+				<key>VerticalPad</key>
+				<real>0.0</real>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{147, 117}, {72, 54}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>3</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
+
+\f0\fs24 \cf0 factorial}</string>
+				<key>VerticalPad</key>
+				<real>0.0</real>
+			</dict>
+		</dict>
+	</array>
+	<key>GridInfo</key>
+	<dict/>
+	<key>GuidesLocked</key>
+	<string>NO</string>
+	<key>GuidesVisible</key>
+	<string>YES</string>
+	<key>HPages</key>
+	<integer>1</integer>
+	<key>ImageCounter</key>
+	<integer>1</integer>
+	<key>KeepToScale</key>
+	<false/>
+	<key>Layers</key>
+	<array>
+		<dict>
+			<key>Lock</key>
+			<string>NO</string>
+			<key>Name</key>
+			<string>Layer 1</string>
+			<key>Print</key>
+			<string>YES</string>
+			<key>Slices</key>
+			<string>NO</string>
+			<key>View</key>
+			<string>YES</string>
+		</dict>
+	</array>
+	<key>LayoutInfo</key>
+	<dict>
+		<key>Animate</key>
+		<string>NO</string>
+		<key>circoMinDist</key>
+		<real>18</real>
+		<key>circoSeparation</key>
+		<real>0.0</real>
+		<key>layoutEngine</key>
+		<string>dot</string>
+		<key>neatoLineLength</key>
+		<real>0.20000000298023224</real>
+		<key>neatoSeparation</key>
+		<real>0.0</real>
+		<key>twopiSeparation</key>
+		<real>0.0</real>
+	</dict>
+	<key>LinksVisible</key>
+	<string>NO</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheets</key>
+	<array/>
+	<key>ModificationDate</key>
+	<string>2017-02-09 07:19:20 +0000</string>
+	<key>Modifier</key>
+	<string>atton</string>
+	<key>NotesVisible</key>
+	<string>NO</string>
+	<key>Orientation</key>
+	<integer>2</integer>
+	<key>OriginVisible</key>
+	<string>NO</string>
+	<key>PageBreaks</key>
+	<string>YES</string>
+	<key>PrintInfo</key>
+	<dict>
+		<key>NSBottomMargin</key>
+		<array>
+			<string>float</string>
+			<string>41</string>
+		</array>
+		<key>NSHorizonalPagination</key>
+		<array>
+			<string>coded</string>
+			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
+		</array>
+		<key>NSLeftMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSPaperSize</key>
+		<array>
+			<string>size</string>
+			<string>{595, 842}</string>
+		</array>
+		<key>NSPrintReverseOrientation</key>
+		<array>
+			<string>coded</string>
+			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
+		</array>
+		<key>NSRightMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSTopMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+	</dict>
+	<key>PrintOnePage</key>
+	<false/>
+	<key>ReadOnly</key>
+	<string>NO</string>
+	<key>RowAlign</key>
+	<integer>1</integer>
+	<key>RowSpacing</key>
+	<real>36</real>
+	<key>SheetTitle</key>
+	<string>Canvas 1</string>
+	<key>SmartAlignmentGuidesActive</key>
+	<string>YES</string>
+	<key>SmartDistanceGuidesActive</key>
+	<string>YES</string>
+	<key>UniqueID</key>
+	<integer>1</integer>
+	<key>UseEntirePage</key>
+	<false/>
+	<key>VPages</key>
+	<integer>1</integer>
+	<key>WindowInfo</key>
+	<dict>
+		<key>CurrentSheet</key>
+		<integer>0</integer>
+		<key>Expanded_Canvases</key>
+		<array/>
+		<key>Frame</key>
+		<string>{{87, 100}, {989, 938}}</string>
+		<key>ShowInfo</key>
+		<true/>
+		<key>ShowRuler</key>
+		<true/>
+		<key>Sidebar</key>
+		<true/>
+		<key>SidebarWidth</key>
+		<integer>200</integer>
+		<key>TopSlabHeight</key>
+		<real>250</real>
+		<key>VisibleRegion</key>
+		<string>{{0, 0}, {475, 780}}</string>
+		<key>Zoom</key>
+		<real>1</real>
+		<key>ZoomValues</key>
+		<array>
+			<array>
+				<string>Canvas 1</string>
+				<real>1</real>
+				<real>1</real>
+			</array>
+		</array>
+	</dict>
+</dict>
+</plist>
Binary file fig/factorial.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/factorial.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/factorial.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 296 220
+%%HiResBoundingBox: 0.000000 0.000000 296.000000 220.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/gears-meta.graffle	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,974 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ActiveLayerIndex</key>
+	<integer>0</integer>
+	<key>ApplicationVersion</key>
+	<array>
+		<string>com.omnigroup.OmniGraffle6</string>
+		<string>169.5.0.253125</string>
+	</array>
+	<key>AutoAdjust</key>
+	<true/>
+	<key>BackgroundGraphic</key>
+	<dict>
+		<key>Bounds</key>
+		<string>{{0, 0}, {1118.4000244140625, 782.79998779296875}}</string>
+		<key>Class</key>
+		<string>SolidGraphic</string>
+		<key>ID</key>
+		<integer>2</integer>
+		<key>Style</key>
+		<dict>
+			<key>stroke</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+		</dict>
+	</dict>
+	<key>BaseZoom</key>
+	<integer>0</integer>
+	<key>CanvasOrigin</key>
+	<string>{0, 0}</string>
+	<key>ColumnAlign</key>
+	<integer>1</integer>
+	<key>ColumnSpacing</key>
+	<real>36</real>
+	<key>CreationDate</key>
+	<string>2014-02-10 06:36:22 +0000</string>
+	<key>Creator</key>
+	<string>utah</string>
+	<key>DisplayScale</key>
+	<string>1 in = 1 in</string>
+	<key>GraphDocumentVersion</key>
+	<integer>12</integer>
+	<key>GraphicsList</key>
+	<array>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>ID</key>
+			<integer>34</integer>
+			<key>Points</key>
+			<array>
+				<string>{414, 72}</string>
+				<string>{468, 72}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>Legacy</key>
+					<false/>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>Pattern</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>29</integer>
+				<key>Info</key>
+				<integer>2</integer>
+			</dict>
+			<key>ID</key>
+			<integer>33</integer>
+			<key>Points</key>
+			<array>
+				<string>{189, 72}</string>
+				<string>{243, 72}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>Legacy</key>
+					<false/>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>Pattern</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>ID</key>
+			<integer>32</integer>
+			<key>Points</key>
+			<array>
+				<string>{585, 99}</string>
+				<string>{585, 135}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>Legacy</key>
+					<false/>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>ID</key>
+			<integer>31</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<true/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>-1</real>
+			<key>Points</key>
+			<array>
+				<string>{414, 162}</string>
+				<string>{468, 162}</string>
+				<string>{468, 72}</string>
+				<string>{531, 72}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>Legacy</key>
+					<false/>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>ID</key>
+			<integer>30</integer>
+			<key>Points</key>
+			<array>
+				<string>{360, 99}</string>
+				<string>{360, 135}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>Legacy</key>
+					<false/>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>ID</key>
+			<integer>29</integer>
+			<key>OrthogonalBarAutomatic</key>
+			<true/>
+			<key>OrthogonalBarPoint</key>
+			<string>{0, 0}</string>
+			<key>OrthogonalBarPosition</key>
+			<real>-1</real>
+			<key>Points</key>
+			<array>
+				<string>{189, 162}</string>
+				<string>{243, 162}</string>
+				<string>{243, 72}</string>
+				<string>{306, 72}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>Legacy</key>
+					<false/>
+					<key>LineType</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>ID</key>
+			<integer>27</integer>
+			<key>Points</key>
+			<array>
+				<string>{135, 99}</string>
+				<string>{135, 135}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>Legacy</key>
+					<false/>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{60.5, 198}, {83, 30}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>26</integer>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
+{\colortbl;\red255\green255\blue255;}
+\deftab720
+\pard\pardeftab720\qc\partightenfactor0
+
+\f0\fs32 \cf0 meta level}</string>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{51.0625, 3}, {96, 30}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>ID</key>
+			<integer>25</integer>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
+{\colortbl;\red255\green255\blue255;}
+\deftab720
+\pard\pardeftab720\qc\partightenfactor0
+
+\f0\fs32 \cf0 normal level}</string>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{531, 135}, {108, 54}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>9</real>
+			</dict>
+			<key>HFlip</key>
+			<string>YES</string>
+			<key>ID</key>
+			<integer>24</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 0.5}</string>
+				<string>{1, -0.5}</string>
+				<string>{-1, 0.5}</string>
+				<string>{-1, -0.5}</string>
+				<string>{0.5, 1}</string>
+				<string>{-0.5, 1}</string>
+				<string>{0.5, -1}</string>
+				<string>{-0.5, -1}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<real>0.99999099999999996</real>
+						<key>g</key>
+						<real>0.99997400000000003</real>
+						<key>r</key>
+						<real>1</real>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
+
+\f0\fs28 \cf0 meta3}</string>
+				<key>VerticalPad</key>
+				<real>0.0</real>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{306, 135}, {108, 54}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>9</real>
+			</dict>
+			<key>HFlip</key>
+			<string>YES</string>
+			<key>ID</key>
+			<integer>23</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 0.5}</string>
+				<string>{1, -0.5}</string>
+				<string>{-1, 0.5}</string>
+				<string>{-1, -0.5}</string>
+				<string>{0.5, 1}</string>
+				<string>{-0.5, 1}</string>
+				<string>{0.5, -1}</string>
+				<string>{-0.5, -1}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<real>0.99999099999999996</real>
+						<key>g</key>
+						<real>0.99997400000000003</real>
+						<key>r</key>
+						<real>1</real>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
+
+\f0\fs28 \cf0 meta2}</string>
+				<key>VerticalPad</key>
+				<real>0.0</real>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{81, 135}, {108, 54}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>9</real>
+			</dict>
+			<key>HFlip</key>
+			<string>YES</string>
+			<key>ID</key>
+			<integer>22</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 0.5}</string>
+				<string>{1, -0.5}</string>
+				<string>{-1, 0.5}</string>
+				<string>{-1, -0.5}</string>
+				<string>{0.5, 1}</string>
+				<string>{-0.5, 1}</string>
+				<string>{0.5, -1}</string>
+				<string>{-0.5, -1}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<real>0.99999099999999996</real>
+						<key>g</key>
+						<real>0.99997400000000003</real>
+						<key>r</key>
+						<real>1</real>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
+
+\f0\fs28 \cf0 meta1}</string>
+				<key>VerticalPad</key>
+				<real>0.0</real>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>ID</key>
+			<integer>21</integer>
+			<key>Points</key>
+			<array>
+				<string>{684, 117}</string>
+				<string>{54, 117}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>0</string>
+					<key>Legacy</key>
+					<false/>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>Pattern</key>
+					<integer>2</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{531, 45}, {108, 54}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>9</real>
+			</dict>
+			<key>HFlip</key>
+			<string>YES</string>
+			<key>ID</key>
+			<integer>19</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 0.5}</string>
+				<string>{1, -0.5}</string>
+				<string>{-1, 0.5}</string>
+				<string>{-1, -0.5}</string>
+				<string>{0.5, 1}</string>
+				<string>{-0.5, 1}</string>
+				<string>{0.5, -1}</string>
+				<string>{-0.5, -1}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<real>0.99999099999999996</real>
+						<key>g</key>
+						<real>0.99997400000000003</real>
+						<key>r</key>
+						<real>1</real>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
+
+\f0\fs28 \cf0 code3}</string>
+				<key>VerticalPad</key>
+				<real>0.0</real>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{306, 45}, {108, 54}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>9</real>
+			</dict>
+			<key>HFlip</key>
+			<string>YES</string>
+			<key>ID</key>
+			<integer>5</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 0.5}</string>
+				<string>{1, -0.5}</string>
+				<string>{-1, 0.5}</string>
+				<string>{-1, -0.5}</string>
+				<string>{0.5, 1}</string>
+				<string>{-0.5, 1}</string>
+				<string>{0.5, -1}</string>
+				<string>{-0.5, -1}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<real>0.99999099999999996</real>
+						<key>g</key>
+						<real>0.99997400000000003</real>
+						<key>r</key>
+						<real>1</real>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
+
+\f0\fs28 \cf0 code2}</string>
+				<key>VerticalPad</key>
+				<real>0.0</real>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{81, 45}, {108, 54}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>9</real>
+			</dict>
+			<key>HFlip</key>
+			<string>YES</string>
+			<key>ID</key>
+			<integer>4</integer>
+			<key>Magnets</key>
+			<array>
+				<string>{1, 0.5}</string>
+				<string>{1, -0.5}</string>
+				<string>{-1, 0.5}</string>
+				<string>{-1, -0.5}</string>
+				<string>{0.5, 1}</string>
+				<string>{-0.5, 1}</string>
+				<string>{0.5, -1}</string>
+				<string>{-0.5, -1}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Color</key>
+					<dict>
+						<key>b</key>
+						<real>0.99999099999999996</real>
+						<key>g</key>
+						<real>0.99997400000000003</real>
+						<key>r</key>
+						<real>1</real>
+					</dict>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
+
+\f0\fs28 \cf0 code1}</string>
+				<key>VerticalPad</key>
+				<real>0.0</real>
+			</dict>
+		</dict>
+	</array>
+	<key>GridInfo</key>
+	<dict>
+		<key>SnapsToGrid</key>
+		<string>YES</string>
+	</dict>
+	<key>GuidesLocked</key>
+	<string>NO</string>
+	<key>GuidesVisible</key>
+	<string>YES</string>
+	<key>HPages</key>
+	<integer>2</integer>
+	<key>ImageCounter</key>
+	<integer>1</integer>
+	<key>KeepToScale</key>
+	<false/>
+	<key>Layers</key>
+	<array>
+		<dict>
+			<key>Lock</key>
+			<string>NO</string>
+			<key>Name</key>
+			<string>Layer 1</string>
+			<key>Print</key>
+			<string>YES</string>
+			<key>View</key>
+			<string>YES</string>
+		</dict>
+	</array>
+	<key>LayoutInfo</key>
+	<dict>
+		<key>Animate</key>
+		<string>NO</string>
+		<key>circoMinDist</key>
+		<real>18</real>
+		<key>circoSeparation</key>
+		<real>0.0</real>
+		<key>layoutEngine</key>
+		<string>dot</string>
+		<key>neatoLineLength</key>
+		<real>0.20000000298023224</real>
+		<key>neatoSeparation</key>
+		<real>0.0</real>
+		<key>twopiSeparation</key>
+		<real>0.0</real>
+	</dict>
+	<key>LinksVisible</key>
+	<string>NO</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheets</key>
+	<array/>
+	<key>ModificationDate</key>
+	<string>2016-02-09 02:10:43 +0000</string>
+	<key>Modifier</key>
+	<string>utah</string>
+	<key>NotesVisible</key>
+	<string>NO</string>
+	<key>Orientation</key>
+	<integer>2</integer>
+	<key>OriginVisible</key>
+	<string>NO</string>
+	<key>PageBreaks</key>
+	<string>YES</string>
+	<key>PrintInfo</key>
+	<dict>
+		<key>NSBottomMargin</key>
+		<array>
+			<string>float</string>
+			<string>41</string>
+		</array>
+		<key>NSHorizonalPagination</key>
+		<array>
+			<string>coded</string>
+			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
+		</array>
+		<key>NSLeftMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSPaperSize</key>
+		<array>
+			<string>size</string>
+			<string>{595.20001220703125, 841.79998779296875}</string>
+		</array>
+		<key>NSPrintReverseOrientation</key>
+		<array>
+			<string>coded</string>
+			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
+		</array>
+		<key>NSRightMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSTopMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+	</dict>
+	<key>PrintOnePage</key>
+	<false/>
+	<key>ReadOnly</key>
+	<string>NO</string>
+	<key>RowAlign</key>
+	<integer>1</integer>
+	<key>RowSpacing</key>
+	<real>36</real>
+	<key>SheetTitle</key>
+	<string>Canvas 1</string>
+	<key>SmartAlignmentGuidesActive</key>
+	<string>YES</string>
+	<key>SmartDistanceGuidesActive</key>
+	<string>YES</string>
+	<key>UniqueID</key>
+	<integer>1</integer>
+	<key>UseEntirePage</key>
+	<false/>
+	<key>VPages</key>
+	<integer>1</integer>
+	<key>WindowInfo</key>
+	<dict>
+		<key>CurrentSheet</key>
+		<integer>0</integer>
+		<key>Expanded_Canvases</key>
+		<array/>
+		<key>Frame</key>
+		<string>{{252, -73}, {1263, 938}}</string>
+		<key>ShowInfo</key>
+		<true/>
+		<key>ShowRuler</key>
+		<true/>
+		<key>Sidebar</key>
+		<true/>
+		<key>SidebarWidth</key>
+		<integer>200</integer>
+		<key>TopSlabHeight</key>
+		<real>250</real>
+		<key>VisibleRegion</key>
+		<string>{{0, 0}, {749, 780}}</string>
+		<key>Zoom</key>
+		<real>1</real>
+		<key>ZoomValues</key>
+		<array>
+			<array>
+				<string>Canvas 1</string>
+				<real>1</real>
+				<real>1</real>
+			</array>
+		</array>
+	</dict>
+</dict>
+</plist>
Binary file fig/gears-meta.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/gears-meta.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/gears-meta.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 653 243
+%%HiResBoundingBox: 0.000000 0.000000 653.000000 243.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/goto.graffle	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,445 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ActiveLayerIndex</key>
+	<integer>0</integer>
+	<key>ApplicationVersion</key>
+	<array>
+		<string>com.omnigroup.OmniGraffle6</string>
+		<string>169.5.0.253125</string>
+	</array>
+	<key>AutoAdjust</key>
+	<true/>
+	<key>BackgroundGraphic</key>
+	<dict>
+		<key>Bounds</key>
+		<string>{{0, 0}, {559.20001220703125, 782.79998779296875}}</string>
+		<key>Class</key>
+		<string>SolidGraphic</string>
+		<key>ID</key>
+		<integer>2</integer>
+		<key>Style</key>
+		<dict>
+			<key>stroke</key>
+			<dict>
+				<key>Draws</key>
+				<string>NO</string>
+			</dict>
+		</dict>
+	</dict>
+	<key>BaseZoom</key>
+	<integer>0</integer>
+	<key>CanvasOrigin</key>
+	<string>{0, 0}</string>
+	<key>ColumnAlign</key>
+	<integer>1</integer>
+	<key>ColumnSpacing</key>
+	<real>36</real>
+	<key>CreationDate</key>
+	<string>2011-11-12 11:03:25 +0000</string>
+	<key>Creator</key>
+	<string>Nobuyasu Oshiro</string>
+	<key>DisplayScale</key>
+	<string>1 in = 1.00000 in</string>
+	<key>GraphDocumentVersion</key>
+	<integer>12</integer>
+	<key>GraphicsList</key>
+	<array>
+		<dict>
+			<key>Bounds</key>
+			<string>{{366.49999356269836, 106.55999761819839}, {65, 24}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>ID</key>
+			<integer>37</integer>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
+{\colortbl;\red255\green255\blue255;}
+\deftab720
+\pard\pardeftab720\qc\partightenfactor0
+
+\f0\fs22 \cf0 goto cs2(c)}</string>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{209.99999356269836, 106.55999761819839}, {78, 24}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>FitText</key>
+			<string>YES</string>
+			<key>Flow</key>
+			<string>Resize</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Size</key>
+				<real>11</real>
+			</dict>
+			<key>ID</key>
+			<integer>36</integer>
+			<key>Style</key>
+			<dict>
+				<key>fill</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fnil\fcharset0 HelveticaNeue;}
+{\colortbl;\red255\green255\blue255;}
+\deftab720
+\pard\pardeftab720\qc\partightenfactor0
+
+\f0\fs22 \cf0 goto cs1(a+b)}</string>
+			</dict>
+			<key>Wrap</key>
+			<string>NO</string>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>ID</key>
+			<integer>35</integer>
+			<key>Points</key>
+			<array>
+				<string>{323.99999356269836, 144}</string>
+				<string>{426.68373636901379, 143.8290591686964}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>Legacy</key>
+					<false/>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>33</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Class</key>
+			<string>LineGraphic</string>
+			<key>FontInfo</key>
+			<dict>
+				<key>Font</key>
+				<string>Helvetica</string>
+				<key>Size</key>
+				<real>12</real>
+			</dict>
+			<key>Head</key>
+			<dict>
+				<key>ID</key>
+				<integer>33</integer>
+			</dict>
+			<key>ID</key>
+			<integer>34</integer>
+			<key>Points</key>
+			<array>
+				<string>{183, 144}</string>
+				<string>{323.99999356269836, 144}</string>
+			</array>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+				<key>stroke</key>
+				<dict>
+					<key>HeadArrow</key>
+					<string>FilledArrow</string>
+					<key>Legacy</key>
+					<false/>
+					<key>LineType</key>
+					<integer>1</integer>
+					<key>TailArrow</key>
+					<string>0</string>
+				</dict>
+			</dict>
+			<key>Tail</key>
+			<dict>
+				<key>ID</key>
+				<integer>3</integer>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{287.99999356269836, 117}, {72, 54}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>33</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
+
+\f0\fs24 \cf0 cs1}</string>
+				<key>VerticalPad</key>
+				<real>0.0</real>
+			</dict>
+		</dict>
+		<dict>
+			<key>Bounds</key>
+			<string>{{147, 117}, {72, 54}}</string>
+			<key>Class</key>
+			<string>ShapedGraphic</string>
+			<key>ID</key>
+			<integer>3</integer>
+			<key>Shape</key>
+			<string>Circle</string>
+			<key>Style</key>
+			<dict>
+				<key>shadow</key>
+				<dict>
+					<key>Draws</key>
+					<string>NO</string>
+				</dict>
+			</dict>
+			<key>Text</key>
+			<dict>
+				<key>Text</key>
+				<string>{\rtf1\ansi\ansicpg1252\cocoartf1404\cocoasubrtf340
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\partightenfactor0
+
+\f0\fs24 \cf0 cs0}</string>
+				<key>VerticalPad</key>
+				<real>0.0</real>
+			</dict>
+		</dict>
+	</array>
+	<key>GridInfo</key>
+	<dict/>
+	<key>GuidesLocked</key>
+	<string>NO</string>
+	<key>GuidesVisible</key>
+	<string>YES</string>
+	<key>HPages</key>
+	<integer>1</integer>
+	<key>ImageCounter</key>
+	<integer>1</integer>
+	<key>KeepToScale</key>
+	<false/>
+	<key>Layers</key>
+	<array>
+		<dict>
+			<key>Lock</key>
+			<string>NO</string>
+			<key>Name</key>
+			<string>Layer 1</string>
+			<key>Print</key>
+			<string>YES</string>
+			<key>View</key>
+			<string>YES</string>
+		</dict>
+	</array>
+	<key>LayoutInfo</key>
+	<dict>
+		<key>Animate</key>
+		<string>NO</string>
+		<key>circoMinDist</key>
+		<real>18</real>
+		<key>circoSeparation</key>
+		<real>0.0</real>
+		<key>layoutEngine</key>
+		<string>dot</string>
+		<key>neatoLineLength</key>
+		<real>0.20000000298023224</real>
+		<key>neatoSeparation</key>
+		<real>0.0</real>
+		<key>twopiSeparation</key>
+		<real>0.0</real>
+	</dict>
+	<key>LinksVisible</key>
+	<string>NO</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheets</key>
+	<array/>
+	<key>ModificationDate</key>
+	<string>2016-02-14 19:41:55 +0000</string>
+	<key>Modifier</key>
+	<string>utah</string>
+	<key>NotesVisible</key>
+	<string>NO</string>
+	<key>Orientation</key>
+	<integer>2</integer>
+	<key>OriginVisible</key>
+	<string>NO</string>
+	<key>PageBreaks</key>
+	<string>YES</string>
+	<key>PrintInfo</key>
+	<dict>
+		<key>NSBottomMargin</key>
+		<array>
+			<string>float</string>
+			<string>41</string>
+		</array>
+		<key>NSHorizonalPagination</key>
+		<array>
+			<string>coded</string>
+			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
+		</array>
+		<key>NSLeftMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSPaperSize</key>
+		<array>
+			<string>size</string>
+			<string>{595.20001220703125, 841.79998779296875}</string>
+		</array>
+		<key>NSPrintReverseOrientation</key>
+		<array>
+			<string>coded</string>
+			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
+		</array>
+		<key>NSRightMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSTopMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+	</dict>
+	<key>PrintOnePage</key>
+	<false/>
+	<key>ReadOnly</key>
+	<string>NO</string>
+	<key>RowAlign</key>
+	<integer>1</integer>
+	<key>RowSpacing</key>
+	<real>36</real>
+	<key>SheetTitle</key>
+	<string>Canvas 1</string>
+	<key>SmartAlignmentGuidesActive</key>
+	<string>YES</string>
+	<key>SmartDistanceGuidesActive</key>
+	<string>YES</string>
+	<key>UniqueID</key>
+	<integer>1</integer>
+	<key>UseEntirePage</key>
+	<false/>
+	<key>VPages</key>
+	<integer>1</integer>
+	<key>WindowInfo</key>
+	<dict>
+		<key>CurrentSheet</key>
+		<integer>0</integer>
+		<key>Expanded_Canvases</key>
+		<array/>
+		<key>Frame</key>
+		<string>{{507, -237}, {989, 938}}</string>
+		<key>ShowInfo</key>
+		<true/>
+		<key>ShowRuler</key>
+		<true/>
+		<key>Sidebar</key>
+		<true/>
+		<key>SidebarWidth</key>
+		<integer>200</integer>
+		<key>TopSlabHeight</key>
+		<real>250</real>
+		<key>VisibleRegion</key>
+		<string>{{0, 0}, {475, 780}}</string>
+		<key>Zoom</key>
+		<real>1</real>
+		<key>ZoomValues</key>
+		<array>
+			<array>
+				<string>Canvas 1</string>
+				<real>1</real>
+				<real>1</real>
+			</array>
+		</array>
+	</dict>
+</dict>
+</plist>
Binary file fig/goto.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/goto.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/goto.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 305 85
+%%HiResBoundingBox: 0.000000 0.000000 305.000000 85.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/gotoInterface.graffle has changed
Binary file fig/gotoInterface.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/gotoInterface.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/gotoInterface.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 793 724
+%%HiResBoundingBox: 0.000000 0.000000 793.000000 724.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/hoare-cg-dg.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/hoare-cg-dg.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/hoare-cg-dg.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 1306 1770 2133
+%%HiResBoundingBox: 0.288874 1306.406000 1770.000000 2133.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Sun Feb  9 19:55:31 2020
+
Binary file fig/hoare-logic.graffle has changed
Binary file fig/hoare-logic.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/hoare-logic.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/hoare-logic.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 580 76
+%%HiResBoundingBox: 0.000000 0.000000 580.000000 76.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/hoare_cg_dg.graffle has changed
Binary file fig/hoare_cg_dg.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/hoare_cg_dg.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/hoare_cg_dg.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 1 1467 1770 2106
+%%HiResBoundingBox: 0.586107 1466.935000 1770.000000 2106.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Sun Feb  9 20:11:31 2020
+
Binary file fig/iterateTaskExec.graffle has changed
Binary file fig/iterateTaskExec.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/iterateTaskExec.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/iterateTaskExec.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 749 310
+%%HiResBoundingBox: 0.000000 0.000000 749.000000 310.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/meta-cg-dg.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/meta-cg-dg.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: meta-cg-dg.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 608 202
+%%HiResBoundingBox: 0.000000 0.000000 608.000000 202.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 19:14:51 2020
+
Binary file fig/meta-hierarchy.graffle has changed
Binary file fig/meta-hierarchy.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/meta-hierarchy.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/meta-hierarchy.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 832 283
+%%HiResBoundingBox: 0.000000 0.000000 832.000000 283.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/meta.graffle has changed
Binary file fig/meta.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/meta.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/meta.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 958 148
+%%HiResBoundingBox: 0.000000 0.000000 958.000000 148.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/meta_cg_dg.graffle has changed
Binary file fig/meta_cg_dg.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/meta_cg_dg.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/meta_cg_dg.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 608 202
+%%HiResBoundingBox: 0.000000 0.000000 608.000000 202.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/metameta.graffle has changed
Binary file fig/metameta.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/metameta.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/metameta.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 472 184
+%%HiResBoundingBox: 0.000000 0.000000 472.000000 184.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/non-destructive-rbtree.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/non-destructive-rbtree.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/non-destructive-rbtree.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 559 248
+%%HiResBoundingBox: 0.000000 0.000000 559.000000 248.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/put.graffle has changed
Binary file fig/put.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/put.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/put.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 868 130
+%%HiResBoundingBox: 0.000000 0.000000 868.000000 130.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/putSynchronizedQueue1.graffle has changed
Binary file fig/putSynchronizedQueue1.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/putSynchronizedQueue1.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/putSynchronizedQueue1.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 746 301
+%%HiResBoundingBox: 0.000000 0.000000 746.000000 301.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/putSynchronizedQueue2.graffle has changed
Binary file fig/putSynchronizedQueue2.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/putSynchronizedQueue2.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/putSynchronizedQueue2.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 825 391
+%%HiResBoundingBox: 0.000000 0.000000 825.000000 391.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/rbtree.graffle has changed
Binary file fig/rbtree.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/rbtree.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/rbtree.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 562 274
+%%HiResBoundingBox: 0.000000 0.000000 562.000000 274.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/ryukyu.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/ryukyu.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/ryukyu.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 595 842
+%%HiResBoundingBox: 0.000000 0.000000 595.000000 842.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/semaphoreSequence.graffle has changed
Binary file fig/semaphoreSequence.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/semaphoreSequence.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/semaphoreSequence.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 1120 869
+%%HiResBoundingBox: 0.000000 0.000000 1120.000000 869.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/sendTask.graffle has changed
Binary file fig/sendTask.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/sendTask.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/sendTask.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 722 374
+%%HiResBoundingBox: 0.000000 0.000000 722.000000 374.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/subtype-arg.graffle has changed
Binary file fig/subtype-arg.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/subtype-arg.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/subtype-arg.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 1084 281
+%%HiResBoundingBox: 0.000000 0.000000 1084.000000 281.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/subtype-return.graffle has changed
Binary file fig/subtype-return.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/subtype-return.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/subtype-return.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 1084 281
+%%HiResBoundingBox: 0.000000 0.000000 1084.000000 281.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/takeSynchronizedQueue1.graffle has changed
Binary file fig/takeSynchronizedQueue1.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/takeSynchronizedQueue1.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/takeSynchronizedQueue1.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 571 202
+%%HiResBoundingBox: 0.000000 0.000000 571.000000 202.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/takeSynchronizedQueue2.graffle has changed
Binary file fig/takeSynchronizedQueue2.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/takeSynchronizedQueue2.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/takeSynchronizedQueue2.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 561 202
+%%HiResBoundingBox: 0.000000 0.000000 561.000000 202.000000
+%%PDFVersion: 1.3
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/twice.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/twice.svg	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="utf-8"  standalone="no"?>
+<svg 
+ width="600" height="480"
+ viewBox="0 0 600 480"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+>
+
+<title>Gnuplot</title>
+<desc>Produced by GNUPLOT 5.2 patchlevel 2 </desc>
+
+<g id="gnuplot_canvas">
+
+<rect x="0" y="0" width="600" height="480" fill="none"/>
+<defs>
+
+	<circle id='gpDot' r='0.5' stroke-width='0.5'/>
+	<path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
+	<path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
+	<path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
+	<rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
+	<rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
+	<circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/>
+	<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
+	<path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
+	<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
+	<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
+	<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
+	<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
+	<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
+	<path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
+	<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
+	<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
+	  <feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
+	  <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
+	</filter>
+	<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
+	  <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
+	  <feComposite in='SourceGraphic' in2='grey' operator='atop'/>
+	</filter>
+</defs>
+<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,444.0 L89.2,444.0 M556.7,444.0 L547.7,444.0  '/>	<g transform="translate(71.9,447.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 0</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,379.0 L89.2,379.0 M556.7,379.0 L547.7,379.0  '/>	<g transform="translate(71.9,382.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 200</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,314.0 L89.2,314.0 M556.7,314.0 L547.7,314.0  '/>	<g transform="translate(71.9,317.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 400</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,249.0 L89.2,249.0 M556.7,249.0 L547.7,249.0  '/>	<g transform="translate(71.9,252.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 600</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,184.1 L89.2,184.1 M556.7,184.1 L547.7,184.1  '/>	<g transform="translate(71.9,188.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 800</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,119.1 L89.2,119.1 M556.7,119.1 L547.7,119.1  '/>	<g transform="translate(71.9,123.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 1000</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,54.1 L89.2,54.1 M556.7,54.1 L547.7,54.1  '/>	<g transform="translate(71.9,58.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 1200</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M110.0,444.0 L110.0,435.0 M110.0,54.1 L110.0,63.1  '/>	<g transform="translate(110.0,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >1 cpu</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M169.5,444.0 L169.5,435.0 M169.5,54.1 L169.5,63.1  '/>	<g transform="translate(169.5,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >2 cpus</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M229.1,444.0 L229.1,435.0 M229.1,54.1 L229.1,63.1  '/>	<g transform="translate(229.1,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >4 cpus</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M288.7,444.0 L288.7,435.0 M288.7,54.1 L288.7,63.1  '/>	<g transform="translate(288.7,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >8 cpus</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M348.2,444.0 L348.2,435.0 M348.2,54.1 L348.2,63.1  '/>	<g transform="translate(348.2,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >16 cpus</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M407.8,444.0 L407.8,435.0 M407.8,54.1 L407.8,63.1  '/>	<g transform="translate(407.8,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >32 cpus</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M467.4,444.0 L467.4,435.0 M467.4,54.1 L467.4,63.1  '/>	<g transform="translate(467.4,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >gpu</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M526.9,444.0 L526.9,435.0 M526.9,54.1 L526.9,63.1  '/>	<g transform="translate(526.9,465.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >gpu(kernel only)</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,54.1 L80.2,444.0 L556.7,444.0 L556.7,54.1 L80.2,54.1 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(16.3,249.1) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >time(ms)</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(318.4,31.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >twice benchmark</tspan></text>
+	</g>
+</g>
+	<g id="gnuplot_plot_1" ><title>gnuplot_plot_1</title>
+<g fill="none" color="white" stroke="black" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '95.1,444.0 125.0,444.0 125.0,60.1 95.1,60.1 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M95.1,444.0 L95.1,60.2 L124.9,60.2 L124.9,444.0 L95.1,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '154.7,444.0 184.5,444.0 184.5,239.9 154.7,239.9 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M154.7,444.0 L154.7,240.0 L184.4,240.0 L184.4,444.0 L154.7,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '214.2,444.0 244.1,444.0 244.1,338.6 214.2,338.6 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M214.2,444.0 L214.2,338.7 L244.0,338.7 L244.0,444.0 L214.2,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '273.8,444.0 303.7,444.0 303.7,391.9 273.8,391.9 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M273.8,444.0 L273.8,392.0 L303.6,392.0 L303.6,444.0 L273.8,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '333.3,444.0 363.2,444.0 363.2,416.1 333.3,416.1 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M333.3,444.0 L333.3,416.2 L363.1,416.2 L363.1,444.0 L333.3,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '392.9,444.0 422.8,444.0 422.8,429.8 392.9,429.8 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M392.9,444.0 L392.9,429.9 L422.7,429.9 L422.7,444.0 L392.9,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '452.5,444.0 482.3,444.0 482.3,402.6 452.5,402.6 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M452.5,444.0 L452.5,402.7 L482.2,402.7 L482.2,444.0 L452.5,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g stroke='none' shape-rendering='crispEdges'>
+		<polygon fill = 'rgb(224, 255, 255)' points = '512.0,444.0 541.9,444.0 541.9,441.9 512.0,441.9 '/>
+	</g>
+	<path stroke='rgb(  0,   0,   0)'  d='M512.0,444.0 L512.0,442.0 L541.8,442.0 L541.8,444.0 L512.0,444.0 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+	</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,54.1 L80.2,444.0 L556.7,444.0 L556.7,54.1 L80.2,54.1 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+</g>
+</svg>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/twice.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/twice.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 600 480
+%%HiResBoundingBox: 0.000000 0.000000 600.000000 480.000000
+%%PDFVersion: 1.5
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/u-ryukyu-Mark.eps	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,1 @@
+%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Adobe Illustrator(TM) 6.0
%%For: (\216\251\227\247\225\252\216U\203V\203X\203e\203\200\214\244\213\206\216\272) ()
%%Title: (u-ryukyu_Mark2.eps)
%%CreationDate: (2/19/01) (2:50 PM)
%%BoundingBox: 1 4 195 200
%%HiResBoundingBox: 1.3735 4.3999 194.5 199.3999
%%DocumentProcessColors: Black
%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
%%+ procset Adobe_ColorImage_AI6 1.1 0
%%+ procset Adobe_Illustrator_AI5 1.0 0
%AI5_FileFormat 3
%AI3_ColorUsage: Black&White
%AI3_IncludePlacedImages
%%CMYKCustomColor: 1 0 0.55 0 (Aqua)
%%+ 1 0.5 0 0 (Blue)
%%+ 0.5 0.4 0.3 0 (Blue Gray)
%%+ 0.8 0.05 0 0 (Blue Sky)
%%+ 0.5 0.85 1 0 (Brown)
%%+ 1 0.9 0.1 0 (Dark Blue)
%%+ 1 0.55 1 0 (Forest Green)
%%+ 0.05 0.2 0.95 0 (Gold)
%%+ 0.75 0.05 1 0 (Grass Green)
%%+ 0 0.45 1 0 (Orange)
%%+ 0.15 1 1 0 (Red)
%%+ 0.45 0.9 0 0 (Violet)
%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) 
%%+ Options: 1 16 0 1 0 1 1 1 0 1 1 1 1 8.504 0 0 0 0 0 0 0 0 -1 -1
%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 () 
%AI3_TemplateBox: 100 102 100 102
%AI3_TileBox: 0 0 538 781
%AI3_DocumentPreview: Header
%AI5_ArtSize: 612 792
%AI5_RulerUnits: 1
%AI5_ArtFlags: 1 0 0 1 0 0 1 0 0
%AI5_TargetResolution: 800
%AI5_NumLayers: 1
%AI5_OpenToView: -284 390 1 794 557 18 0 1 3 40 0 0
%AI5_OpenViewLayers: 7
%%PageOrigin:0 0
%%AI3_PaperRect:-28 811 567 -31
%%AI3_Margin:28 -30 -29 31
%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
%%EndComments
%%BeginProlog
%%BeginResource: procset Adobe_level2_AI5 1.2 0
%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
%%Version: 1.2 0
%%CreationDate: (04/10/93) ()
%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
userdict /Adobe_level2_AI5 25 dict dup begin
	put
	/packedarray where not
	{
		userdict begin
		/packedarray
		{
			array astore readonly
		} bind def
		/setpacking /pop load def
		/currentpacking false def
	 end
		0
	} if
	pop
	userdict /defaultpacking currentpacking put true setpacking
	/initialize
	{
		Adobe_level2_AI5 begin
	} bind def
	/terminate
	{
		currentdict Adobe_level2_AI5 eq
		{
		 end
		} if
	} bind def
	mark
	/setcustomcolor where not
	{
		/findcmykcustomcolor
		{
			0
			6 packedarray
		} bind def
		/findrgbcustomcolor
		{
			1
			5 packedarray
		} bind def
		/setcustomcolor
		{
			exch 
			aload pop 
			0 eq
			{
				pop
				4
				{
					4 index mul
					4 1 roll
				} repeat
				5 -1 roll pop
				setcmykcolor
			}
			{
				pop
				3
				{
					1 exch sub
					3 index mul 
					1 exch sub
					3 1 roll
				} repeat
				4 -1 roll pop
				setrgbcolor
			} ifelse
		}
		def
	} if
	
	/gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
	userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
	userdict /level2?
	systemdict /languagelevel known dup
	{
		pop systemdict /languagelevel get 2 ge
	} if
	put
/level2ScreenFreq
{
 begin
		60
		HalftoneType 1 eq
		{
			pop Frequency
		} if
		HalftoneType 2 eq
		{
			pop GrayFrequency
		} if
		HalftoneType 5 eq
		{
			pop Default level2ScreenFreq
		} if
 end
} bind def
userdict /currentScreenFreq  
	level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
level2? not
	{
		/setcmykcolor where not
		{
			/setcmykcolor
			{
				exch .11 mul add exch .59 mul add exch .3 mul add
				1 exch sub setgray
			} def
		} if
		/currentcmykcolor where not
		{
			/currentcmykcolor
			{
				0 0 0 1 currentgray sub
			} def
		} if
		/setoverprint where not
		{
			/setoverprint /pop load def
		} if
		/selectfont where not
		{
			/selectfont
			{
				exch findfont exch
				dup type /arraytype eq
				{
					makefont
				}
				{
					scalefont
				} ifelse
				setfont
			} bind def
		} if
		/cshow where not
		{
			/cshow
			{
				[
				0 0 5 -1 roll aload pop
				] cvx bind forall
			} bind def
		} if
	} if
	cleartomark
	/anyColor?
	{
		add add add 0 ne
	} bind def
	/testColor
	{
		gsave
		setcmykcolor currentcmykcolor
		grestore
	} bind def
	/testCMYKColorThrough
	{
		testColor anyColor?
	} bind def
	userdict /composite?
	level2?
	{
		gsave 1 1 1 1 setcmykcolor currentcmykcolor grestore
		add add add 4 eq
	}
	{
		1 0 0 0 testCMYKColorThrough
		0 1 0 0 testCMYKColorThrough
		0 0 1 0 testCMYKColorThrough
		0 0 0 1 testCMYKColorThrough
		and and and
	} ifelse
	put
	composite? not
	{
		userdict begin
		gsave
		/cyan? 1 0 0 0 testCMYKColorThrough def
		/magenta? 0 1 0 0 testCMYKColorThrough def
		/yellow? 0 0 1 0 testCMYKColorThrough def
		/black? 0 0 0 1 testCMYKColorThrough def
		grestore
		/isCMYKSep? cyan? magenta? yellow? black? or or or def
		/customColor? isCMYKSep? not def
	 end
	} if
 end defaultpacking setpacking
%%EndResource
%%BeginProcSet: Adobe_ColorImage_AI6 1.1 0
userdict /Adobe_ColorImage_AI6 known not
{
	userdict /Adobe_ColorImage_AI6 24 dict put 
} if
userdict /Adobe_ColorImage_AI6 get begin
/initialize
{ 
	Adobe_ColorImage_AI6 begin
	Adobe_ColorImage_AI6
	{
		dup type /arraytype eq
		{
			dup xcheck
			{
				bind
			} if
		} if
		pop pop
	} forall
} def
/terminate { end } def
currentdict /Adobe_ColorImage_AI6_Vars known not
{
	/Adobe_ColorImage_AI6_Vars 15 dict def
} if
Adobe_ColorImage_AI6_Vars begin
	/channelcount 0 def
	/sourcecount 0 def
	/sourcearray 4 array def
	/plateindex -1 def
	/XIMask 0 def
	/XIBinary 0 def
	/XIChannelCount 0 def
	/XIBitsPerPixel 0 def
	/XIImageHeight 0 def
	/XIImageWidth 0 def
	/XIImageMatrix null def
	/XIBuffer null def
	/XIDataProc null def
	/XIVersion 6 def
end
/WalkRGBString null def
/WalkCMYKString null def
/StuffRGBIntoGrayString null def
/RGBToGrayImageProc null def
/StuffCMYKIntoGrayString null def
/CMYKToGrayImageProc null def
/ColorImageCompositeEmulator null def
/SeparateCMYKImageProc null def
/FourEqual null def
/TestPlateIndex null def
currentdict /_colorimage known not
{
	/colorimage where
	{
		/colorimage get /_colorimage exch def
	}
	{
		/_colorimage null def
	} ifelse
} if
/_currenttransfer systemdict /currenttransfer get def
/colorimage null def
/XI null def
/WalkRGBString
{
	0 3 index
	dup length 1 sub 0 3 3 -1 roll
	{
		3 getinterval { } forall
		5 index exec
		3 index
	} for
	
	 5 { pop } repeat
} def
/WalkCMYKString
{
	0 3 index
	dup length 1 sub 0 4 3 -1 roll
	{
		4 getinterval { } forall
		
		6 index exec
		
		3 index
		
	} for
	
	5 { pop } repeat
	
} def
/StuffRGBIntoGrayString
{
	.11 mul exch
	
	.59 mul add exch
	
	.3 mul add
	
	cvi 3 copy put
	
	pop 1 add
} def
/RGBToGrayImageProc
{	
	Adobe_ColorImage_AI6_Vars begin 
		sourcearray 0 get exec
		dup length 3 idiv string
		dup 3 1 roll 
		
		/StuffRGBIntoGrayString load exch
		WalkRGBString
 end
} def
/StuffCMYKIntoGrayString
{
	exch .11 mul add
	
	exch .59 mul add
	
	exch .3 mul add
	
	dup 255 gt { pop 255 } if
	
	255 exch sub cvi 3 copy put
	
	pop 1 add
} def
/CMYKToGrayImageProc
{	
	Adobe_ColorImage_AI6_Vars begin
		sourcearray 0 get exec
		dup length 4 idiv string
		dup 3 1 roll 
		
		/StuffCMYKIntoGrayString load exch
		WalkCMYKString
 end
} def
/ColorImageCompositeEmulator
{
	pop true eq
	{
		Adobe_ColorImage_AI6_Vars /sourcecount get 5 add { pop } repeat
	}
	{
		Adobe_ColorImage_AI6_Vars /channelcount get 1 ne
		{
			Adobe_ColorImage_AI6_Vars begin
				sourcearray 0 3 -1 roll put
			
				channelcount 3 eq 
				{ 
					/RGBToGrayImageProc 
				}
				{ 
					/CMYKToGrayImageProc
				} ifelse
				load
		 end
		} if
		image
	} ifelse
} def
/SeparateCMYKImageProc
{	
	Adobe_ColorImage_AI6_Vars begin
		sourcecount 0 ne
		{
			sourcearray plateindex get exec
		}
		{			
			sourcearray 0 get exec
			
			dup length 4 idiv string
			
			0 2 index
			
			plateindex 4 2 index length 1 sub
			{
				get 255 exch sub
				
				3 copy put pop 1 add
				
				2 index
			} for
			pop pop exch pop
		} ifelse
 end
} def
	
/FourEqual
{
	4 index ne
	{
		pop pop pop false
	}
	{
		4 index ne
		{
			pop pop false
		}
		{
			4 index ne
			{
				pop false
			}
			{
				4 index eq
			} ifelse
		} ifelse
	} ifelse
} def
/TestPlateIndex
{
	Adobe_ColorImage_AI6_Vars begin
		/plateindex -1 def
		/setcmykcolor where
		{
			pop
			gsave
			1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
			0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
			0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
			0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
			grestore
			1 0 0 0 FourEqual 
			{ 
				/plateindex 0 def
			}
			{
				0 1 0 0 FourEqual
				{ 
					/plateindex 1 def
				}
				{
					0 0 1 0 FourEqual
					{
						/plateindex 2 def
					}
					{
						0 0 0 1 FourEqual
						{ 
							/plateindex 3 def
						}
						{
							0 0 0 0 FourEqual
							{
								/plateindex 5 def
							} if
						} ifelse
					} ifelse
				} ifelse
			} ifelse
			pop pop pop pop
		} if
		plateindex
 end
} def
/colorimage
{
	Adobe_ColorImage_AI6_Vars begin
		/channelcount 1 index def
		/sourcecount 2 index 1 eq { channelcount 1 sub } { 0 } ifelse def
		4 sourcecount add index dup 
		8 eq exch 1 eq or not
 end
	
	{
		/_colorimage load null ne
		{
			_colorimage
		}
		{
			Adobe_ColorImage_AI6_Vars /sourcecount get
			7 add { pop } repeat
		} ifelse
	}
	{
		dup 3 eq
		TestPlateIndex
		dup -1 eq exch 5 eq or or
		{
			/_colorimage load null eq
			{
				ColorImageCompositeEmulator
			}
			{
				dup 1 eq
				{
					pop pop image
				}
				{
					Adobe_ColorImage_AI6_Vars /plateindex get 5 eq
					{
						gsave
						
						0 _currenttransfer exec
						1 _currenttransfer exec
						eq
						{ 0 _currenttransfer exec 0.5 lt }
						{ 0 _currenttransfer exec 1 _currenttransfer exec gt } ifelse
						
						{ { pop 0 } } { { pop 1 } } ifelse
						systemdict /settransfer get exec
					} if
					
					_colorimage
					
					Adobe_ColorImage_AI6_Vars /plateindex get 5 eq
					{
						grestore
					} if
				} ifelse
			} ifelse
		}
		{
			dup 1 eq
			{
				pop pop
				image
			}
			{
				pop pop
				Adobe_ColorImage_AI6_Vars begin
					sourcecount -1 0
					{			
						exch sourcearray 3 1 roll put
					} for
					/SeparateCMYKImageProc load
			 end
				systemdict /image get exec
			} ifelse
		} ifelse
	} ifelse
} def
/XG
{
	pop pop
} def
/XF
{
	13 {pop} repeat
} def
/Xh
{
	Adobe_ColorImage_AI6_Vars begin
		gsave
		/XIMask exch 0 ne def
		/XIImageHeight exch def
		/XIImageWidth exch def
		/XIImageMatrix exch def
		0 0 moveto
		XIImageMatrix concat
		XIImageWidth XIImageHeight scale
		
		XIMask
		{
			/_lp /null ddef
			_fc
			/_lp /imagemask ddef
		}
		if
		/XIVersion 7 def
 end
} def
/XH
{
	Adobe_ColorImage_AI6_Vars begin
		/XIVersion 6 def
		grestore
 end
} def
/XI
{
	Adobe_ColorImage_AI6_Vars begin
		gsave
		/XIMask exch 0 ne def
		/XIBinary exch 0 ne def
		pop
		pop
		/XIChannelCount exch def
		/XIBitsPerPixel exch def
		/XIImageHeight exch def
		/XIImageWidth exch def
		pop pop pop pop
		/XIImageMatrix exch def
		XIBitsPerPixel 1 eq
		{
			XIImageWidth 8 div ceiling cvi
		}
		{
			XIImageWidth XIChannelCount mul
		} ifelse
		/XIBuffer exch string def
		XIBinary
		{
			/XIDataProc { currentfile XIBuffer readstring pop } def
			XIVersion 6 le
			{
				currentfile 128 string readline pop pop
			}
			if
		}
		{
			/XIDataProc { currentfile XIBuffer readhexstring pop } def
		} ifelse
		
		XIVersion 6 le
		{
			0 0 moveto
			XIImageMatrix concat
			XIImageWidth XIImageHeight scale
			XIMask
			{
				/_lp /null ddef
				_fc
				/_lp /imagemask ddef
			} if
		} if
		
		XIMask
		{
			XIImageWidth XIImageHeight
			false
			[ XIImageWidth 0 0 XIImageHeight neg 0 0 ]
			/XIDataProc load
			imagemask
		}
		{
			XIImageWidth XIImageHeight
			XIBitsPerPixel
			[ XIImageWidth 0 0 XIImageHeight neg 0 0 ]
			/XIDataProc load
			
			XIChannelCount 1 eq
			{
				gsave
				0 setgray
				image
				grestore
			}
			{
				false
				XIChannelCount
				colorimage
			} ifelse
		} ifelse
		grestore
 end
} def
end
%%EndProcSet
%%BeginResource: procset Adobe_Illustrator_AI5 1.1 0
%%Title: (Adobe Illustrator (R) Version 5.0 Full Prolog)
%%Version: 1.1 0
%%CreationDate: (3/7/1994) ()
%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
currentpacking true setpacking
userdict /Adobe_Illustrator_AI5_vars 81 dict dup begin
put
/_eo false def
/_lp /none def
/_pf
{
} def
/_ps
{
} def
/_psf
{
} def
/_pss
{
} def
/_pjsf
{
} def
/_pjss
{
} def
/_pola 0 def
/_doClip 0 def
/cf currentflat def
/_tm matrix def
/_renderStart
[
/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
] def
/_renderEnd
[
null null null null /i1 /i1 /i1 /i1
] def
/_render -1 def
/_rise 0 def
/_ax 0 def
/_ay 0 def
/_cx 0 def
/_cy 0 def
/_leading
[
0 0
] def
/_ctm matrix def
/_mtx matrix def
/_sp 16#020 def
/_hyphen (-) def
/_fScl 0 def
/_cnt 0 def
/_hs 1 def
/_nativeEncoding 0 def
/_useNativeEncoding 0 def
/_tempEncode 0 def
/_pntr 0 def
/_tDict 2 dict def
/_wv 0 def
/Tx
{
} def
/Tj
{
} def
/CRender
{
} def
/_AI3_savepage
{
} def
/_gf null def
/_cf 4 array def
/_if null def
/_of false def
/_fc
{
} def
/_gs null def
/_cs 4 array def
/_is null def
/_os false def
/_sc
{
} def
/_pd 1 dict def
/_ed 15 dict def
/_pm matrix def
/_fm null def
/_fd null def
/_fdd null def
/_sm null def
/_sd null def
/_sdd null def
/_i null def
/discardSave null def
/buffer 256 string def
/beginString null def
/endString null def
/endStringLength null def
/layerCnt 1 def
/layerCount 1 def
/perCent (%) 0 get def
/perCentSeen? false def
/newBuff null def
/newBuffButFirst null def
/newBuffLast null def
/clipForward? false def
end
userdict /Adobe_Illustrator_AI5 known not {
	userdict /Adobe_Illustrator_AI5 91 dict put
} if
userdict /Adobe_Illustrator_AI5 get begin
/initialize
{
	Adobe_Illustrator_AI5 dup begin
	Adobe_Illustrator_AI5_vars begin
	discardDict
	{
		bind pop pop
	} forall
	dup /nc get begin
	{
		dup xcheck 1 index type /operatortype ne and
		{
			bind
		} if
		pop pop
	} forall
 end
	newpath
} def
/terminate
{
 end
 end
} def
/_
null def
/ddef
{
	Adobe_Illustrator_AI5_vars 3 1 roll put
} def
/xput
{
	dup load dup length exch maxlength eq
	{
		dup dup load dup
		length 2 mul dict copy def
	} if
	load begin
	def
 end
} def
/npop
{
	{
		pop
	} repeat
} def
/sw
{
	dup length exch stringwidth
	exch 5 -1 roll 3 index mul add
	4 1 roll 3 1 roll mul add
} def
/swj
{
	dup 4 1 roll
	dup length exch stringwidth
	exch 5 -1 roll 3 index mul add
	4 1 roll 3 1 roll mul add
	6 2 roll /_cnt 0 ddef
	{
		1 index eq
		{
			/_cnt _cnt 1 add ddef
		} if
	} forall
	pop
	exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
} def
/ss
{
	4 1 roll
	{
		2 npop
		(0) exch 2 copy 0 exch put pop
		gsave
		false charpath currentpoint
		4 index setmatrix
		stroke
		grestore
		moveto
		2 copy rmoveto
	} exch cshow
	3 npop
} def
/jss
{
	4 1 roll
	{
		2 npop
		(0) exch 2 copy 0 exch put
		gsave
		_sp eq
		{
			exch 6 index 6 index 6 index 5 -1 roll widthshow
			currentpoint
		}
		{
			false charpath currentpoint
			4 index setmatrix stroke
		} ifelse
		grestore
		moveto
		2 copy rmoveto
	} exch cshow
	6 npop
} def
/sp
{
	{
		2 npop (0) exch
		2 copy 0 exch put pop
		false charpath
		2 copy rmoveto
	} exch cshow
	2 npop
} def
/jsp
{
	{
		2 npop
		(0) exch 2 copy 0 exch put
		_sp eq
		{
			exch 5 index 5 index 5 index 5 -1 roll widthshow
		}
		{
			false charpath
		} ifelse
		2 copy rmoveto
	} exch cshow
	5 npop
} def
/pl
{
	transform
	0.25 sub round 0.25 add exch
	0.25 sub round 0.25 add exch
	itransform
} def
/setstrokeadjust where
{
	pop true setstrokeadjust
	/c
	{
		curveto
	} def
	/C
	/c load def
	/v
	{
		currentpoint 6 2 roll curveto
	} def
	/V
	/v load def
	/y
	{
		2 copy curveto
	} def
	/Y
	/y load def
	/l
	{
		lineto
	} def
	/L
	/l load def
	/m
	{
		moveto
	} def
}
{
	/c
	{
		pl curveto
	} def
	/C
	/c load def
	/v
	{
		currentpoint 6 2 roll pl curveto
	} def
	/V
	/v load def
	/y
	{
		pl 2 copy curveto
	} def
	/Y
	/y load def
	/l
	{
		pl lineto
	} def
	/L
	/l load def
	/m
	{
		pl moveto
	} def
} ifelse
/d
{
	setdash
} def
/cf
{
} def
/i
{
	dup 0 eq
	{
		pop cf
	} if
	setflat
} def
/j
{
	setlinejoin
} def
/J
{
	setlinecap
} def
/M
{
	setmiterlimit
} def
/w
{
	setlinewidth
} def
/XR
{
	0 ne
	/_eo exch ddef
} def
/H
{
} def
/h
{
	closepath
} def
/N
{
	_pola 0 eq
	{
		_doClip 1 eq
		{
			_eo {eoclip} {clip} ifelse /_doClip 0 ddef
		} if
		newpath
	}
	{
		/CRender
		{
			N
		} ddef
	} ifelse
} def
/n
{
	N
} def
/F
{
	_pola 0 eq
	{
		_doClip 1 eq
		{
			gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
			/_doClip 0 ddef
		}
		{
			_pf
		} ifelse
	}
	{
		/CRender
		{
			F
		} ddef
	} ifelse
} def
/f
{
	closepath
	F
} def
/S
{
	_pola 0 eq
	{
		_doClip 1 eq
		{
			gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
			/_doClip 0 ddef
		}
		{
			_ps
		} ifelse
	}
	{
		/CRender
		{
			S
		} ddef
	} ifelse
} def
/s
{
	closepath
	S
} def
/B
{
	_pola 0 eq
	{
		_doClip 1 eq
		gsave F grestore
		{
			gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
			/_doClip 0 ddef
		}
		{
			S
		} ifelse
	}
	{
		/CRender
		{
			B
		} ddef
	} ifelse
} def
/b
{
	closepath
	B
} def
/W
{
	/_doClip 1 ddef
} def
/*
{
	count 0 ne
	{
		dup type /stringtype eq
		{
			pop
		} if
	} if
	newpath
} def
/u
{
} def
/U
{
} def
/q
{
	_pola 0 eq
	{
		gsave
	} if
} def
/Q
{
	_pola 0 eq
	{
		grestore
	} if
} def
/*u
{
	_pola 1 add /_pola exch ddef
} def
/*U
{
	_pola 1 sub /_pola exch ddef
	_pola 0 eq
	{
		CRender
	} if
} def
/D
{
	pop
} def
/*w
{
} def
/*W
{
} def
/`
{
	/_i save ddef
	clipForward?
	{
		nulldevice
	} if
	6 1 roll 4 npop
	concat pop
	userdict begin
	/showpage
	{
	} def
	0 setgray
	0 setlinecap
	1 setlinewidth
	0 setlinejoin
	10 setmiterlimit
	[] 0 setdash
	/setstrokeadjust where {pop false setstrokeadjust} if
	newpath
	0 setgray
	false setoverprint
} def
/~
{
 end
	_i restore
} def
/O
{
	0 ne
	/_of exch ddef
	/_lp /none ddef
} def
/R
{
	0 ne
	/_os exch ddef
	/_lp /none ddef
} def
/g
{
	/_gf exch ddef
	/_fc
	{
		_lp /fill ne
		{
			_of setoverprint
			_gf setgray
			/_lp /fill ddef
		} if
	} ddef
	/_pf
	{
		_fc
		_eo {eofill} {fill} ifelse
	} ddef
	/_psf
	{
		_fc
		ashow
	} ddef
	/_pjsf
	{
		_fc
		awidthshow
	} ddef
	/_lp /none ddef
} def
/G
{
	/_gs exch ddef
	/_sc
	{
		_lp /stroke ne
		{
			_os setoverprint
			_gs setgray
			/_lp /stroke ddef
		} if
	} ddef
	/_ps
	{
		_sc
		stroke
	} ddef
	/_pss
	{
		_sc
		ss
	} ddef
	/_pjss
	{
		_sc
		jss
	} ddef
	/_lp /none ddef
} def
/k
{
	_cf astore pop
	/_fc
	{
		_lp /fill ne
		{
			_of setoverprint
			_cf aload pop setcmykcolor
			/_lp /fill ddef
		} if
	} ddef
	/_pf
	{
		_fc
		_eo {eofill} {fill} ifelse
	} ddef
	/_psf
	{
		_fc
		ashow
	} ddef
	/_pjsf
	{
		_fc
		awidthshow
	} ddef
	/_lp /none ddef
} def
/K
{
	_cs astore pop
	/_sc
	{
		_lp /stroke ne
		{
			_os setoverprint
			_cs aload pop setcmykcolor
			/_lp /stroke ddef
		} if
	} ddef
	/_ps
	{
		_sc
		stroke
	} ddef
	/_pss
	{
		_sc
		ss
	} ddef
	/_pjss
	{
		_sc
		jss
	} ddef
	/_lp /none ddef
} def
/x
{
	/_gf exch ddef
	findcmykcustomcolor
	/_if exch ddef
	/_fc
	{
		_lp /fill ne
		{
			_of setoverprint
			_if _gf 1 exch sub setcustomcolor
			/_lp /fill ddef
		} if
	} ddef
	/_pf
	{
		_fc
		_eo {eofill} {fill} ifelse
	} ddef
	/_psf
	{
		_fc
		ashow
	} ddef
	/_pjsf
	{
		_fc
		awidthshow
	} ddef
	/_lp /none ddef
} def
/X
{
	/_gs exch ddef
	findcmykcustomcolor
	/_is exch ddef
	/_sc
	{
		_lp /stroke ne
		{
			_os setoverprint
			_is _gs 1 exch sub setcustomcolor
			/_lp /stroke ddef
		} if
	} ddef
	/_ps
	{
		_sc
		stroke
	} ddef
	/_pss
	{
		_sc
		ss
	} ddef
	/_pjss
	{
		_sc
		jss
	} ddef
	/_lp /none ddef
} def
/A
{
	pop
} def
/annotatepage
{
userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse
} def
/XT {
	pop pop
} def
/discard
{
	save /discardSave exch store
	discardDict begin
	/endString exch store
	gt38?
	{
		2 add
	} if
	load
	stopped
	pop
 end
	discardSave restore
} bind def
userdict /discardDict 7 dict dup begin
put
/pre38Initialize
{
	/endStringLength endString length store
	/newBuff buffer 0 endStringLength getinterval store
	/newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store
	/newBuffLast newBuff endStringLength 1 sub 1 getinterval store
} def
/shiftBuffer
{
	newBuff 0 newBuffButFirst putinterval
	newBuffLast 0
	currentfile read not
	{
	stop
	} if
	put
} def
0
{
	pre38Initialize
	mark
	currentfile newBuff readstring exch pop
	{
		{
			newBuff endString eq
			{
				cleartomark stop
			} if
			shiftBuffer
		} loop
	}
	{
	stop
	} ifelse
} def
1
{
	pre38Initialize
	/beginString exch store
	mark
	currentfile newBuff readstring exch pop
	{
		{
			newBuff beginString eq
			{
				/layerCount dup load 1 add store
			}
			{
				newBuff endString eq
				{
					/layerCount dup load 1 sub store
					layerCount 0 eq
					{
						cleartomark stop
					} if
				} if
			} ifelse
			shiftBuffer
		} loop
	} if
} def
2
{
	mark
	{
		currentfile buffer readline not
		{
		stop
		} if
		endString eq
		{
			cleartomark stop
		} if
	} loop
} def
3
{
	/beginString exch store
	/layerCnt 1 store
	mark
	{
		currentfile buffer readline not
		{
		stop
		} if
		dup beginString eq
		{
			pop /layerCnt dup load 1 add store
		}
		{
			endString eq
			{
				layerCnt 1 eq
				{
					cleartomark stop
				}
				{
					/layerCnt dup load 1 sub store
				} ifelse
			} if
		} ifelse
	} loop
} def
end
userdict /clipRenderOff 15 dict dup begin
put
{
	/n /N /s /S /f /F /b /B
}
{
	{
		_doClip 1 eq
		{
			/_doClip 0 ddef _eo {eoclip} {clip} ifelse
		} if
		newpath
	} def
} forall
/Tr /pop load def
/Bb {} def
/BB /pop load def
/Bg {12 npop} def
/Bm {6 npop} def
/Bc /Bm load def
/Bh {4 npop} def
end
/Lb
{
	4 npop
	6 1 roll
	pop
	4 1 roll
	pop pop pop
	0 eq
	{
		0 eq
		{
			(%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard
		}
		{
			
			/clipForward? true def
			
			/Tx /pop load def
			/Tj /pop load def
			
			currentdict end clipRenderOff begin begin
		} ifelse
	}
	{
		0 eq
		{
			save /discardSave exch store
		} if
	} ifelse
} bind def
/LB
{
	discardSave dup null ne
	{
		restore
	}
	{
		pop
		clipForward?
		{
			currentdict
		 end
		 end
		 begin
					
			/clipForward? false ddef
		} if
	} ifelse
} bind def
/Pb
{
	pop pop
	0 (%AI5_EndPalette) discard
} bind def
/Np
{
	0 (%AI5_End_NonPrinting--) discard
} bind def
/Ln /pop load def
/Ap
/pop load def
/Ar
{
	72 exch div
	0 dtransform dup mul exch dup mul add sqrt
	dup 1 lt
	{
		pop 1
	} if
	setflat
} def
/Mb
{
	q
} def
/Md
{
} def
/MB
{
	Q
} def
/nc 3 dict def
nc begin
/setgray
{
	pop
} bind def
/setcmykcolor
{
	4 npop
} bind def
/setcustomcolor
{
	2 npop
} bind def
currentdict readonly pop
end
end
setpacking
%%EndResource
%%EndProlog
%%BeginSetup
Adobe_level2_AI5 /initialize get exec
Adobe_ColorImage_AI6 /initialize get exec
Adobe_Illustrator_AI5 /initialize get exec
%AI5_Begin_NonPrinting
Np
%AI3_BeginPattern: (Arrow1.2.out/in)
(Arrow1.2.out/in) 1 1 39.4039 39.4039 [
%AI3_Tile
(0 O 0 R  0.75 0.75 0.375 0 k
 0.75 0.75 0.375 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
1 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
33.9039 15.6187 m
39.4247 20.202 L
39.4247 20.202 L
33.8869 24.6252 L
S
39.2997 20.202 m
24.5706 20.202 l
20.4039 20.4792 20.4039 16.8125 v
20.4039 13.1458 20.4039 12.5625 y
S
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Arrow1.2.side)
(Arrow1.2.side) 1 1 39.404 39.4039 [
%AI3_Tile
(0 O 0 R  0.75 0.75 0.375 0 k
 0.75 0.75 0.375 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
1 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
20.202 20.202 m
39.404 20.202 l
S
33.904 15.6187 m
39.4248 20.202 L
39.4248 20.202 L
33.887 24.6252 L
S
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Bricks)
(Bricks) 1.6 1.6 73.6 73.6 [
%AI3_Tile
(0 O 0 R  0.3 0.85 0.85 0 k
 0.3 0.85 0.85 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
1.6 1.6 m
1.6 73.6 L
73.6 73.6 L
73.6 1.6 L
1.6 1.6 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  1 g
 1 G
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
1.6 70.01 m
73.6 70.01 l
S
1.6 62.809 m
73.6 62.809 L
S
1.6 55.609 m
73.6 55.609 L
S
1.6 48.408 m
73.6 48.408 L
S
1.6 41.208 m
73.6 41.208 L
S
1.6 34.007 m
73.6 34.007 L
S
1.6 26.807 m
73.6 26.807 L
S
1.6 19.606 m
73.6 19.606 L
S
1.6 12.406 m
73.6 12.406 L
S
1.6 5.206 m
73.6 5.206 L
S
70.01 70.01 m
70.01 62.822 l
S
55.61 70.01 m
55.61 62.822 L
S
41.21 70.01 m
41.21 62.822 L
S
26.81 70.01 m
26.81 62.822 L
S
12.41 70.01 m
12.41 62.822 L
S
70.01 55.572 m
70.01 48.385 l
S
55.61 55.572 m
55.61 48.385 L
S
41.21 55.572 m
41.21 48.385 L
S
26.81 55.572 m
26.81 48.385 L
S
12.41 55.572 m
12.41 48.385 L
S
70.01 41.197 m
70.01 34.01 l
S
55.61 41.197 m
55.61 34.01 L
S
41.21 41.197 m
41.21 34.01 L
S
26.81 41.197 m
26.81 34.01 L
S
12.41 41.197 m
12.41 34.01 L
S
70.01 26.822 m
70.01 19.635 l
S
55.61 26.822 m
55.61 19.635 L
S
41.21 26.822 m
41.21 19.635 L
S
26.81 26.822 m
26.81 19.635 L
S
12.41 26.822 m
12.41 19.635 L
S
70.01 12.385 m
70.01 5.197 l
S
55.61 12.385 m
55.61 5.197 L
S
41.21 12.385 m
41.21 5.197 L
S
26.81 12.385 m
26.81 5.197 L
S
12.41 12.385 m
12.41 5.197 L
S
62.797 5.197 m
62.797 1.6 L
S
48.397 5.197 m
48.397 1.6 L
S
33.997 5.197 m
33.997 1.6 L
S
19.597 5.197 m
19.597 1.6 L
S
5.197 5.197 m
5.197 1.6 l
S
62.797 19.635 m
62.797 12.447 L
S
48.397 19.635 m
48.397 12.447 L
S
33.997 19.635 m
33.997 12.447 L
S
19.597 19.635 m
19.597 12.447 L
S
5.197 19.635 m
5.197 12.447 l
S
62.797 34.01 m
62.797 26.822 L
S
48.397 34.01 m
48.397 26.822 L
S
19.597 34.01 m
19.597 26.822 L
S
5.197 34.01 m
5.197 26.822 l
S
62.797 48.385 m
62.797 41.197 L
S
48.397 48.385 m
48.397 41.197 L
S
33.997 48.385 m
33.997 41.197 L
S
19.597 48.385 m
19.597 41.197 L
S
5.197 48.385 m
5.197 41.197 l
S
62.797 62.822 m
62.797 55.635 L
S
48.397 62.822 m
48.397 55.635 L
S
33.997 62.822 m
33.997 55.635 L
S
19.597 62.822 m
19.597 55.635 L
S
5.197 62.822 m
5.197 55.635 l
S
62.797 73.5589 m
62.797 70.072 L
S
48.397 73.5589 m
48.397 70.072 L
S
33.997 73.5589 m
33.997 70.072 L
S
19.597 73.5589 m
19.597 70.072 L
S
5.197 73.5589 m
5.197 70.072 l
S
33.997 34.01 m
33.997 26.822 L
S
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Checks)
(Checks) 1 1 31.3995 31.3995 [
%AI3_Tile
(0 O 0 R  0 0.9 1 0 k
 0 0.9 1 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
1 XR
19.9995 4.8 m
27.5995 4.8 L
27.5995 12.3995 L
19.9995 12.3995 L
19.9995 4.8 L
f
31.3995 27.5995 m
31.3995 31.3995 L
27.5995 31.3995 L
27.5995 27.5995 L
31.3995 27.5995 L
f
19.9995 27.5995 m
19.9995 19.9995 L
27.5995 19.9995 L
27.5995 27.5995 L
19.9995 27.5995 L
f
0 XR
12.3995 12.3995 m
19.9995 12.3995 L
19.9995 19.9995 L
12.3995 19.9995 L
12.3995 12.3995 L
f
1 XR
12.3995 27.5995 m
4.8 27.5995 L
4.8 19.9995 L
12.3995 19.9995 L
12.3995 27.5995 L
f
4.8 12.3995 m
4.8 4.8 L
12.3995 4.8 L
12.3995 12.3995 L
4.8 12.3995 L
f
19.9995 27.5995 m
19.9995 31.3995 L
12.3995 31.3995 L
12.3995 27.5995 L
19.9995 27.5995 L
f
12.3995 4.8 m
12.3995 1 L
19.9995 1 L
19.9995 4.8 L
12.3995 4.8 L
f
4.8 19.9995 m
1 19.9995 L
1 12.3995 L
4.8 12.3995 L
4.8 19.9995 L
f
27.5995 19.9995 m
27.5995 12.3995 L
31.3995 12.3995 L
31.3995 19.9995 L
27.5995 19.9995 L
f
4.8 31.3995 m
1 31.3995 L
1 27.5995 L
4.8 27.5995 L
4.8 31.3995 L
f
27.5995 1 m
31.3995 1 L
31.3995 4.8 L
27.5995 4.8 L
27.5995 1 L
f
1 4.8 m
1 1 L
4.8 1 L
4.8 4.8 L
1 4.8 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0.05 0.2 0 k
 0 0.05 0.2 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
1 XR
4.8 4.8 m
4.8 1 L
12.3995 1 L
12.3995 4.8 L
4.8 4.8 L
f
4.8 12.3995 m
1 12.3995 L
1 4.8 L
4.8 4.8 L
4.8 12.3995 L
f
19.9995 4.8 m
19.9995 1 L
27.5995 1 L
27.5995 4.8 L
19.9995 4.8 L
f
12.3995 12.3995 m
12.3995 4.8 L
19.9995 4.8 L
19.9995 12.3995 L
12.3995 12.3995 L
f
27.5995 4.8 m
31.3995 4.8 L
31.3995 12.3995 L
27.5995 12.3995 L
27.5995 4.8 L
f
12.3995 19.9995 m
4.8 19.9995 L
4.8 12.3995 L
12.3995 12.3995 L
12.3995 19.9995 L
f
4.8 27.5995 m
1 27.5995 L
1 19.9995 L
4.8 19.9995 L
4.8 27.5995 L
f
19.9995 12.3995 m
27.5995 12.3995 L
27.5995 19.9995 L
19.9995 19.9995 L
19.9995 12.3995 L
f
19.9995 19.9995 m
19.9995 27.5995 L
12.3995 27.5995 L
12.3995 19.9995 L
19.9995 19.9995 L
f
27.5995 19.9995 m
31.3995 19.9995 L
31.3995 27.5995 L
27.5995 27.5995 L
27.5995 19.9995 L
f
12.3995 27.5995 m
12.3995 31.3995 L
4.8 31.3995 L
4.8 27.5995 L
12.3995 27.5995 L
f
27.5995 27.5995 m
27.5995 31.3995 L
19.9995 31.3995 L
19.9995 27.5995 L
27.5995 27.5995 L
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Confetti)
(Confetti) 4.85 3.617 76.85 75.617 [
%AI3_Tile
(0 O 0 R  1 g
 1 G
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
4.85 3.617 m
4.85 75.617 L
76.85 75.617 L
76.85 3.617 L
4.85 3.617 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 g
 0 G
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
10.6 64.867 m
7.85 62.867 l
S
9.1 8.617 m
6.85 6.867 l
S
78.1 68.617 m
74.85 67.867 l
S
76.85 56.867 m
74.35 55.117 l
S
79.6 51.617 m
76.6 51.617 l
S
76.35 44.117 m
73.6 45.867 l
S
78.6 35.867 m
76.6 34.367 l
S
76.1 23.867 m
73.35 26.117 l
S
78.1 12.867 m
73.85 13.617 l
S
68.35 14.617 m
66.1 12.867 l
S
76.6 30.617 m
73.6 30.617 l
S
62.85 58.117 m
60.956 60.941 l
S
32.85 59.617 m
31.196 62.181 l
S
47.891 64.061 m
49.744 66.742 l
S
72.814 2.769 m
73.928 5.729 l
S
67.976 2.633 m
67.35 5.909 l
S
61.85 27.617 m
59.956 30.441 l
S
53.504 56.053 m
51.85 58.617 l
S
52.762 1.779 m
52.876 4.776 l
S
45.391 5.311 m
47.244 7.992 l
S
37.062 3.375 m
35.639 5.43 l
S
55.165 34.828 m
57.518 37.491 l
S
20.795 3.242 m
22.12 5.193 l
S
14.097 4.747 m
15.008 8.965 l
S
9.736 1.91 m
8.073 4.225 l
S
31.891 5.573 m
32.005 8.571 l
S
12.1 70.367 m
15.6 68.867 l
S
9.35 54.867 m
9.6 58.117 l
S
12.85 31.867 m
14.35 28.117 l
S
10.1 37.367 m
12.35 41.117 l
S
34.1 71.117 m
31.85 68.617 l
S
38.35 71.117 m
41.6 68.367 l
S
55.1 71.117 m
58.35 69.117 l
S
57.35 65.117 m
55.35 61.867 l
S
64.35 66.367 m
69.35 68.617 l
S
71.85 62.867 m
69.35 61.117 l
S
23.6 70.867 m
23.6 67.867 l
S
20.6 65.867 m
17.35 65.367 l
S
24.85 61.367 m
25.35 58.117 l
S
25.85 65.867 m
29.35 66.617 l
S
14.1 54.117 m
16.85 56.117 l
S
12.35 11.617 m
12.6 15.617 l
S
12.1 19.867 m
14.35 22.367 l
S
26.1 9.867 m
23.6 13.367 l
S
34.6 47.117 m
32.1 45.367 l
S
62.6 41.867 m
59.85 43.367 l
S
31.6 35.617 m
27.85 36.367 l
S
36.35 26.117 m
34.35 24.617 l
S
33.85 14.117 m
31.1 16.367 l
S
37.1 9.867 m
35.1 11.117 l
S
34.35 20.867 m
31.35 20.867 l
S
44.6 56.617 m
42.1 54.867 l
S
47.35 51.367 m
44.35 51.367 l
S
44.1 43.867 m
41.35 45.617 l
S
43.35 33.117 m
42.6 30.617 l
S
43.85 23.617 m
41.1 25.867 l
S
44.35 15.617 m
42.35 16.867 l
S
67.823 31.1 m
64.823 31.1 l
S
27.1 32.617 m
29.6 30.867 l
S
31.85 55.117 m
34.85 55.117 l
S
19.6 40.867 m
22.1 39.117 l
S
16.85 35.617 m
19.85 35.617 l
S
20.1 28.117 m
22.85 29.867 l
S
52.1 42.617 m
54.484 44.178 l
S
52.437 50.146 m
54.821 48.325 l
S
59.572 54.133 m
59.35 51.117 l
S
50.185 10.055 m
53.234 9.928 l
S
51.187 15.896 m
53.571 14.075 l
S
58.322 19.883 m
59.445 16.823 l
S
53.1 32.117 m
50.6 30.367 l
S
52.85 24.617 m
49.6 25.617 l
S
61.85 9.117 m
59.1 10.867 l
S
69.35 34.617 m
66.6 36.367 l
S
67.1 23.617 m
65.1 22.117 l
S
24.435 46.055 m
27.484 45.928 l
S
25.437 51.896 m
27.821 50.075 l
S
62.6 47.117 m
65.321 46.575 l
S
19.85 19.867 m
20.35 16.617 l
S
21.85 21.867 m
25.35 22.617 l
S
37.6 62.867 m
41.6 62.117 l
S
38.323 42.1 m
38.823 38.6 l
S
69.35 52.617 m
66.85 53.867 l
S
14.85 62.117 m
18.1 59.367 l
S
9.6 46.117 m
7.1 44.367 l
S
20.6 51.617 m
18.6 50.117 l
S
46.141 70.811 m
47.994 73.492 l
S
69.391 40.561 m
71.244 43.242 l
S
38.641 49.311 m
39.35 52.117 l
S
25.141 16.811 m
25.85 19.617 l
S
36.6 32.867 m
34.6 31.367 l
S
6.1 68.617 m
2.85 67.867 l
S
4.85 56.867 m
2.35 55.117 l
S
7.6 51.617 m
4.6 51.617 l
S
6.6 35.867 m
4.6 34.367 l
S
6.1 12.867 m
1.85 13.617 l
S
4.6 30.617 m
1.6 30.617 l
S
72.814 74.769 m
73.928 77.729 l
S
67.976 74.633 m
67.35 77.909 l
S
52.762 73.779 m
52.876 76.776 l
S
37.062 75.375 m
35.639 77.43 l
S
20.795 75.242 m
22.12 77.193 l
S
9.736 73.91 m
8.073 76.225 l
S
10.1 23.617 m
6.35 24.367 l
S
73.217 18.276 m
71.323 21.1 l
S
28.823 39.6 m
29.505 42.389 l
S
49.6 38.617 m
47.6 37.117 l
S
60.323 73.6 m
62.323 76.6 l
S
60.323 1.6 m
62.323 4.6 l
S
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (DblLine1.2.inner)
(DblLine1.2.inner) 1 1 39.2705 39.2706 [
%AI3_Tile
(0 O 0 R  1 0.14 0.09 0 k
 1 0.14 0.09 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
39.2702 22.175 m
39.2702 13.6108 L
26.66 13.6108 L
26.66 1.0003 L
18.0958 1.0003 L
18.0948 22.175 L
18.0958 22.175 L
18.0958 22.1752 L
39.2702 22.175 L
f
39.2708 24.6929 m
15.5779 24.6929 L
15.5779 1.0003 L
14.9037 1.0003 L
14.9032 25.3675 L
39.2708 25.3675 L
39.2708 24.6929 L
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (DblLine1.2.outer)
(DblLine1.2.outer) 1 1.0003 39.2706 39.271 [
%AI3_Tile
(0 O 0 R  1 0.14 0.09 0 k
 1 0.14 0.09 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
39.2708 26.6602 m
13.6111 26.6602 L
13.6111 1.0005 L
22.1751 1 L
22.1751 18.096 L
39.2708 18.096 L
39.2708 26.6602 L
f
39.2708 15.578 m
24.6928 15.578 L
24.6928 1 L
25.367 1 L
25.367 14.9038 L
39.2708 14.9038 L
39.2708 15.578 L
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (DblLine1.2.side)
(DblLine1.2.side) 1 1 39.2706 39.2706 [
%AI3_Tile
(0 O 0 R  1 0.14 0.09 0 k
 1 0.14 0.09 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
39.2704 18.0958 m
39.2704 26.6598 L
1.0001 26.6598 L
1.0001 18.0958 L
39.2704 18.0958 L
f
39.2704 14.9037 m
39.2704 15.5776 L
1.0001 15.5776 L
1.0001 14.9037 L
39.2704 14.9037 L
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Diamonds)
(Diamonds) 1 1 37.1865 41.9411 [
%AI3_Tile
(0 O 0 R  0.2 0 1 0 k
 0.2 0 1 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
1.0002 1.0004 m
1.0002 41.9411 L
37.1865 41.9411 L
37.1865 1.0004 L
1.0002 1.0004 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 g
 0 G
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
1 XR
19.0936 41.9408 m
19.0929 41.9408 L
19.0933 41.9402 L
19.0936 41.9408 L
f
7.0311 41.9408 m
7.0304 41.9408 L
7.0308 41.9402 L
7.0311 41.9408 L
f
31.1556 41.9408 m
31.1548 41.9408 L
31.1552 41.9402 L
31.1556 41.9408 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0.75 0.9 0 0 k
 0.75 0.9 0 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
1 XR
37.1865 1 m
37.1865 11.2349 L
31.1552 1 L
37.1865 1 L
f
19.0933 1 m
31.1552 1 L
25.124 11.2349 L
19.0933 1 L
f
7.0308 1 m
19.0933 1 L
13.062 11.2349 L
7.0308 1 L
f
1 1 m
7.0308 1 L
1 11.2349 L
1 1 L
f
37.1859 11.2349 m
37.1865 11.236 L
37.1865 31.7059 L
31.1552 21.4704 L
37.1859 11.2349 L
f
19.0933 21.4704 m
25.124 11.2349 L
31.1552 21.4704 L
25.124 31.7059 L
19.0933 21.4704 L
f
7.0308 21.4704 m
13.062 11.2349 L
19.0933 21.4704 L
13.062 31.7059 L
7.0308 21.4704 L
f
1 31.7059 m
1 11.2349 L
7.0308 21.4704 L
1 31.7059 L
f
37.1859 31.7059 m
37.1865 31.707 L
37.1865 41.9408 L
31.1556 41.9408 L
31.1552 41.9402 L
37.1859 31.7059 L
f
25.124 31.7059 m
31.1552 41.9402 L
31.1548 41.9408 L
19.0936 41.9408 L
19.0933 41.9402 L
25.124 31.7059 L
f
13.062 31.7059 m
19.0933 41.9402 L
19.0929 41.9408 L
7.0311 41.9408 L
7.0308 41.9402 L
13.062 31.7059 L
f
7.0304 41.9408 m
1 41.9408 L
1 31.7059 L
7.0308 41.9402 L
7.0304 41.9408 L
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Hexagon)
(Hexagon) 4 1.6 70.151 77.983 [
%AI3_Tile
(0 O 0 R  0 1 0.35 0 k
 0 1 0.35 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
70.151 77.983 m
70.151 1.6 L
4 1.6 L
4 77.983 L
70.151 77.983 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0.9921 1 0 0 k
 0.9921 1 0 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
20.538 30.244 m
S
26.05 20.696 m
15.025 20.696 L
9.513 30.244 L
15.025 39.792 L
26.05 39.792 L
31.564 30.244 L
26.05 20.696 L
s
20.537 11.148 m
S
26.05 1.6 m
15.024 1.6 L
9.512 11.148 L
15.024 20.696 L
26.05 20.696 L
31.563 11.148 L
26.05 1.6 L
s
53.614 30.244 m
S
59.126 20.696 m
48.101 20.696 L
42.589 30.244 L
48.101 39.792 L
59.126 39.792 L
64.639 30.244 L
59.126 20.696 L
s
53.614 11.148 m
S
59.126 1.6 m
48.101 1.6 L
42.588 11.148 L
48.101 20.696 L
59.126 20.696 L
64.638 11.148 L
59.126 1.6 L
s
20.538 68.436 m
S
26.051 58.888 m
15.025 58.888 L
9.513 68.436 L
15.025 77.984 L
26.051 77.984 L
31.564 68.436 L
26.051 58.888 L
s
20.538 49.34 m
S
26.051 39.792 m
15.025 39.792 L
9.513 49.34 L
15.025 58.888 L
26.05 58.888 L
31.564 49.34 L
26.051 39.792 L
s
53.614 68.436 m
S
59.127 58.888 m
48.102 58.888 L
42.589 68.436 L
48.101 77.985 L
59.127 77.985 L
64.639 68.436 L
59.127 58.888 L
s
53.614 49.34 m
S
59.127 39.792 m
48.101 39.792 L
42.589 49.34 L
48.101 58.888 L
59.127 58.888 L
64.639 49.341 L
59.127 39.792 L
s
4 20.696 m
S
3.876 30.244 m
9.512 30.244 L
15.024 20.696 L
9.512 11.147 L
3.876 11.147 L
S
37.075 20.696 m
S
42.588 11.148 m
31.563 11.148 L
26.05 20.696 L
31.563 30.244 L
42.589 30.244 L
48.101 20.696 L
42.588 11.148 L
s
37.076 58.888 m
S
42.589 49.34 m
31.564 49.34 L
26.05 58.888 L
31.564 68.436 L
42.589 68.436 L
48.101 58.888 L
42.589 49.34 L
s
70.151 20.696 m
S
70.2094 11.147 m
64.639 11.147 L
59.127 20.696 L
64.639 30.244 L
70.2094 30.244 L
S
70.152 58.888 m
S
70.0427 49.34 m
64.639 49.34 L
59.127 58.888 L
64.639 68.436 L
70.0427 68.436 L
S
4 58.888 m
S
3.876 68.436 m
9.513 68.436 L
15.025 58.888 L
9.513 49.34 L
3.876 49.34 L
S
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Laurel.inner)
(Laurel.inner) 1 1 28.5392 28.5392 [
%AI3_Tile
(0 O 0 R  0 0.55 1 0.12 k
 0 0.55 1 0.12 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
19.2768 15.3585 m
28.9144 15.3585 L
28.9144 14.2335 L
19.2768 14.2335 L
19.2768 15.3585 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0.55 1 0.3 k
 0 0.55 1 0.3 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
14.7461 18.9624 m
13.0264 17.8486 11.3273 14.4193 11.3273 10.0362 c
11.3273 5.6547 12.9768 2.1518 14.744 1.1112 C
14.7443 1.1112 L
16.4707 2.1518 18.1679 5.6547 18.1679 10.0362 c
18.1679 14.4143 16.432 17.8633 14.7461 18.9624 C
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Laurel.outer)
(Laurel.outer) 1 1.3751 28.5393 28.9143 [
%AI3_Tile
(0 O 0 R  0 0.55 1 0.12 k
 0 0.55 1 0.12 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
14.2395 10.6375 m
14.2395 1 L
15.3645 1 L
15.3645 10.6375 L
14.2395 10.6375 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0.55 1 0.3 k
 0 0.55 1 0.3 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
10.5769 15.124 m
11.6906 16.8438 15.1198 18.5429 19.503 18.5429 c
23.8844 18.5429 27.3874 16.8935 28.428 15.1262 C
28.428 15.1259 L
27.3874 13.3995 23.8844 11.7023 19.503 11.7023 c
15.1249 11.7023 11.676 13.4382 10.5769 15.124 C
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Laurel.side)
(Laurel.side) 1.3972 1 28.9364 28.5392 [
%AI3_Tile
(0 O 0 R  0 0.55 1 0.12 k
 0 0.55 1 0.12 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
29.1571 15.2998 m
1 15.2998 L
1 14.1748 L
29.1571 14.1748 L
29.1571 15.2998 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0.55 1 0.3 k
 0 0.55 1 0.3 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
2.0183 27.4787 m
1.5899 25.4751 2.8132 21.8488 5.9125 18.7494 c
9.0107 15.6513 12.654 14.3407 14.6395 14.8545 C
14.6398 14.8547 L
15.1246 16.8113 13.8478 20.4883 10.7496 23.5865 c
7.6538 26.6824 3.9876 27.8936 2.0183 27.4787 C
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0.39 0.7 0.12 k
 0 0.39 0.7 0.12 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
2.0183 2.0091 m
1.5899 4.0126 2.8132 7.6389 5.9125 10.7382 c
9.0107 13.8365 12.654 15.147 14.6395 14.6332 C
14.6398 14.633 L
15.1246 12.6765 13.8478 8.9993 10.7496 5.9011 c
7.6538 2.8054 3.9876 1.5941 2.0183 2.0091 C
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0.55 1 0.3 k
 0 0.55 1 0.3 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
15.821 2.0091 m
15.3925 4.0126 16.6159 7.6389 19.7152 10.7382 c
22.8134 13.8365 26.4567 15.147 28.4422 14.6332 C
28.4424 14.633 L
28.9273 12.6765 27.6505 8.9993 24.5523 5.9011 c
21.4565 2.8054 17.7903 1.5941 15.821 2.0091 C
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0.39 0.7 0.12 k
 0 0.39 0.7 0.12 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
15.821 27.4787 m
15.3925 25.4751 16.6159 21.8488 19.7152 18.7494 c
22.8134 15.6513 26.4567 14.3407 28.4422 14.8545 C
28.4424 14.8547 L
28.9273 16.8113 27.6505 20.4883 24.5523 23.5865 c
21.4565 26.6824 17.7903 27.8936 15.821 27.4787 C
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Leaves-fall)
(Leaves-fall) 1 1 52.733 89.816 [
%AI3_Tile
(0 O 0 R  0.05 0.2 1 0 k
 0.05 0.2 1 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
52.733 89.816 m
52.733 1 L
1 1 L
1 89.816 L
52.733 89.816 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0.83 0 1 0 k
 0.83 0 1 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
1 D
0 XR
25.317 2.083 m
25.994 2.283 26.284 2.435 V
24.815 5.147 29.266 9.428 30.186 10.168 C
30.787 9.943 30.907 7.41 30.23 6.073 C
31.073 6.196 33.262 4.818 34.02 3.529 C
34.085 4.217 35.655 7.158 36.481 7.535 C
35.561 7.933 34.896 9.406 34.134 10.854 C
35.156 11.021 36.555 10.1 38.026 9.195 C
38.541 9.996 39.915 10.968 41.174 11.484 C
40.086 12.171 39.591 12.912 39.094 14.372 C
38.052 13.806 35.865 13.657 35.336 13.944 C
35.85 15.057 38.096 15.6 38.827 15.547 C
38.573 16.409 38.425 18.562 38.598 21.155 C
36.939 19.839 35.393 18.522 33.734 18.58 C
34.003 17.158 33.367 15.353 32.99 14.86 C
32.417 15.604 32.006 16.431 32.361 18.408 C
30.908 18.893 29.671 19.439 28.297 20.697 C
28.297 18.866 27.725 17.664 26.857 16.388 C
28.117 15.9 29.389 14.697 29.385 13.658 C
28.537 13.81 26.845 14.554 26.352 15.547 C
25.634 14.8 23.95 13.491 22.346 13.487 C
23.534 12.632 24.454 11.598 24.549 9.686 C
25.802 10.657 28.255 11.272 29.635 10.674 C
24.794 6.438 25.262 3.405 25.317 2.083 C
f
12.412 33.743 m
11.887 33.272 11.691 33.01 V
14.182 31.192 11.928 25.366 11.415 24.303 C
10.776 24.247 9.369 26.988 9.405 28.486 C
8.273 27.73 6.608 27.851 5.006 28.137 C
5.578 27.049 5.177 25.104 4.376 24.303 C
5.378 24.339 6.729 23.624 8.038 22.643 C
7.203 21.823 5.376 21.984 3.46 22.643 C
3.46 21.27 2.638 19.533 1.801 18.351 C
3.117 18.408 4.262 17.722 5.12 16.691 C
5.785 18.26 7.819 19.373 8.725 19.324 C
8.742 17.959 7.169 15.869 6.147 15.47 C
6.747 14.801 7.766 13.27 8.725 10.854 C
9.524 12.78 10.694 14.022 11.927 14.955 C
10.785 16.517 10.959 17.388 11.358 18.866 C
12.101 18.325 13.132 17.893 13.303 15.89 C
15.02 16.176 16.156 16.104 17.653 15.203 C
17.198 16.865 17.195 18.466 17.515 20.166 C
15.665 20.026 14.105 20.239 13.075 21.728 C
13.905 21.955 16.165 22.014 17.039 21.082 C
17.366 22.064 18.261 23.47 19.707 24.164 C
18.267 24.424 17.282 25.523 16.373 27.209 C
15.66 25.793 13.433 24.128 11.93 24.073 C
13.933 28.137 13.933 31.055 12.412 33.743 C
f
31.125 30.5 m
31.445 31.128 31.648 31.385 V
34.045 29.444 38.851 32.752 39.746 33.521 C
39.636 34.153 37.511 35.29 35.794 34.26 C
36.234 35.549 35.332 37.51 34.134 38.552 C
35.873 38.451 38.019 39.813 38.541 40.555 C
38.763 39.577 39.946 38.307 41.231 37.293 C
41.582 38.266 40.887 40.384 39.971 41.986 C
41.206 42.487 42.318 43.417 42.776 44.676 C
43.233 43.359 44.236 42.685 45.58 41.929 C
44.421 40.502 43.64 38.328 43.92 37.465 C
45.243 37.8 46.814 40.518 46.937 41.607 C
47.812 40.841 49.366 40.154 51.947 39.848 C
50.246 38.77 49.884 36.778 49.3 35.347 C
48.152 35.794 45.983 35.853 45.008 35.29 C
45.721 34.711 47.061 34.16 49.071 34.146 C
49.071 32.601 49.534 31.469 50.788 30.254 C
49.065 30.267 46.965 29.781 45.469 29.389 C
45.221 30.718 44.378 32.314 43.233 32.715 C
43.227 31.854 43.493 29.605 44.378 28.938 C
43.513 28.37 42.26 26.993 41.803 25.276 C
41.181 26.601 40.32 27.906 38.457 28.35 C
39.642 29.403 40.477 31.42 40.143 32.887 C
35.091 28.905 32.414 30.203 31.125 30.5 C
f
25.317 46.491 m
25.994 46.691 26.284 46.843 V
24.815 49.556 29.266 53.837 30.186 54.576 C
30.787 54.351 30.907 51.818 30.23 50.482 C
31.073 50.605 33.262 49.227 34.02 47.938 C
34.085 48.625 35.655 51.566 36.481 51.944 C
35.561 52.341 34.896 53.814 34.134 55.263 C
35.156 55.43 36.555 54.508 38.026 53.603 C
38.541 54.404 39.915 55.377 41.174 55.892 C
40.086 56.579 39.591 57.321 39.094 58.78 C
38.052 58.215 35.865 58.065 35.336 58.353 C
35.85 59.465 38.096 60.008 38.827 59.955 C
38.573 60.817 38.425 62.97 38.598 65.563 C
36.939 64.247 35.393 62.931 33.734 62.988 C
34.003 61.567 33.367 59.761 32.99 59.268 C
32.417 60.012 32.006 60.839 32.361 62.817 C
30.908 63.302 29.671 63.847 28.297 65.106 C
28.297 63.274 27.725 62.073 26.857 60.796 C
28.117 60.308 29.389 59.106 29.385 58.067 C
28.537 58.219 26.845 58.963 26.352 59.955 C
25.634 59.209 23.95 57.899 22.346 57.895 C
23.534 57.041 24.454 56.006 24.549 54.094 C
25.802 55.065 28.255 55.68 29.635 55.083 C
24.794 50.846 25.262 47.814 25.317 46.491 C
f
12.412 78.151 m
11.887 77.68 11.691 77.418 V
14.182 75.601 11.928 69.774 11.415 68.711 C
10.776 68.655 9.369 71.396 9.405 72.894 C
8.273 72.138 6.608 72.259 5.006 72.545 C
5.578 71.458 5.177 69.512 4.376 68.711 C
5.378 68.747 6.729 68.032 8.038 67.052 C
7.203 66.231 5.376 66.393 3.46 67.052 C
3.46 65.678 2.638 63.941 1.801 62.759 C
3.117 62.817 4.262 62.13 5.12 61.1 C
5.785 62.669 7.819 63.781 8.725 63.732 C
8.742 62.367 7.169 60.277 6.147 59.878 C
6.747 59.209 7.766 57.678 8.725 55.263 C
9.524 57.189 10.694 58.431 11.927 59.364 C
10.785 60.925 10.959 61.796 11.358 63.274 C
12.101 62.734 13.132 62.301 13.303 60.298 C
15.02 60.584 16.156 60.512 17.653 59.612 C
17.198 61.273 17.195 62.874 17.515 64.574 C
15.665 64.434 14.105 64.648 13.075 66.136 C
13.905 66.363 16.165 66.422 17.039 65.49 C
17.366 66.472 18.261 67.878 19.707 68.572 C
18.267 68.832 17.282 69.931 16.373 71.617 C
15.66 70.202 13.433 68.536 11.93 68.482 C
13.933 72.545 13.933 75.464 12.412 78.151 C
f
31.125 74.908 m
31.445 75.537 31.648 75.794 V
34.045 73.853 38.851 77.161 39.746 77.929 C
39.636 78.562 37.511 79.698 35.794 78.668 C
36.234 79.957 35.332 81.918 34.134 82.96 C
35.873 82.86 38.019 84.221 38.541 84.963 C
38.763 83.986 39.946 82.716 41.231 81.701 C
41.582 82.675 40.887 84.792 39.971 86.394 C
41.206 86.895 42.318 87.825 42.776 89.084 C
43.233 87.768 44.236 87.093 45.58 86.337 C
44.421 84.91 43.64 82.736 43.92 81.873 C
45.243 82.208 46.814 84.926 46.937 86.016 C
47.812 85.249 49.366 84.563 51.947 84.257 C
50.246 83.179 49.884 81.187 49.3 79.756 C
48.152 80.203 45.983 80.262 45.008 79.698 C
45.721 79.119 47.061 78.569 49.071 78.554 C
49.071 77.009 49.534 75.877 50.788 74.663 C
49.065 74.675 46.965 74.189 45.469 73.798 C
45.221 75.126 44.378 76.723 43.233 77.123 C
43.227 76.262 43.493 74.013 44.378 73.347 C
43.513 72.779 42.26 71.401 41.803 69.684 C
41.181 71.009 40.32 72.314 38.457 72.759 C
39.642 73.812 40.477 75.829 40.143 77.295 C
35.091 73.313 32.414 74.611 31.125 74.908 C
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Polka dots)
(Polka dots) 1 1 29.8 29.8 [
%AI3_Tile
(0 O 0 R  0.45 0.9 0 0 k
 0.45 0.9 0 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
1 1 m
1 29.8 L
29.8 29.8 L
29.8 1 L
1 1 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0.09 0.18 0 0 k
 0.09 0.18 0 0 K
) @
(
%AI6_BeginPatternLayer
*u
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
11.08 8.2 m
11.08 9.791 9.79 11.08 8.2 11.08 c
6.609 11.08 5.32 9.791 5.32 8.2 c
5.32 6.61 6.609 5.32 8.2 5.32 c
9.79 5.32 11.08 6.61 11.08 8.2 c
f
11.08 22.6 m
11.08 24.191 9.79 25.48 8.2 25.48 c
6.609 25.48 5.32 24.191 5.32 22.6 c
5.32 21.01 6.609 19.72 8.2 19.72 c
9.79 19.72 11.08 21.01 11.08 22.6 c
f
18.28 15.4 m
18.28 16.991 16.99 18.28 15.4 18.28 c
13.809 18.28 12.52 16.991 12.52 15.4 c
12.52 13.81 13.809 12.52 15.4 12.52 c
16.99 12.52 18.28 13.81 18.28 15.4 c
f
25.48 8.2 m
25.48 9.791 24.19 11.08 22.6 11.08 c
21.009 11.08 19.72 9.791 19.72 8.2 c
19.72 6.61 21.009 5.32 22.6 5.32 c
24.19 5.32 25.48 6.61 25.48 8.2 c
f
25.48 22.6 m
25.48 24.191 24.19 25.48 22.6 25.48 c
21.009 25.48 19.72 24.191 19.72 22.6 c
19.72 21.01 21.009 19.72 22.6 19.72 c
24.19 19.72 25.48 21.01 25.48 22.6 c
f
*U
26.92 1 m
29.8 1 L
29.8 3.88 L
28.209 3.88 26.92 2.591 26.92 1 C
f
15.4 3.88 m
13.809 3.88 12.52 2.591 12.52 1 C
18.28 1 L
18.28 2.591 16.99 3.88 15.4 3.88 c
f
1 3.88 m
1 1 L
3.88 1 L
3.88 2.591 2.59 3.88 1 3.88 C
f
1 XR
26.92 15.4 m
26.92 13.81 28.209 12.52 29.8 12.52 C
29.8 18.28 L
28.209 18.28 26.92 16.991 26.92 15.4 c
f
0 XR
15.4 18.28 m
13.809 18.28 12.52 16.991 12.52 15.4 c
12.52 13.81 13.809 12.52 15.4 12.52 c
16.99 12.52 18.28 13.81 18.28 15.4 c
18.28 16.991 16.99 18.28 15.4 18.28 c
f
1 XR
3.88 15.4 m
3.88 16.991 2.59 18.28 1 18.28 C
1 12.52 L
2.59 12.52 3.88 13.81 3.88 15.4 c
f
0 XR
29.8 26.92 m
29.8 29.8 L
26.92 29.8 L
26.92 28.21 28.209 26.92 29.8 26.92 C
f
15.4 26.92 m
16.99 26.92 18.28 28.21 18.28 29.8 C
12.52 29.8 L
12.52 28.21 13.809 26.92 15.4 26.92 c
f
3.88 29.8 m
1 29.8 L
1 26.92 L
2.59 26.92 3.88 28.21 3.88 29.8 C
f
1 XR
8.2 11.08 m
6.609 11.08 5.32 9.791 5.32 8.2 c
5.32 6.61 6.609 5.32 8.2 5.32 c
9.79 5.32 11.08 6.61 11.08 8.2 c
11.08 9.791 9.79 11.08 8.2 11.08 c
f
22.6 11.08 m
21.009 11.08 19.72 9.791 19.72 8.2 c
19.72 6.61 21.009 5.32 22.6 5.32 c
24.19 5.32 25.48 6.61 25.48 8.2 c
25.48 9.791 24.19 11.08 22.6 11.08 c
f
8.2 25.48 m
6.609 25.48 5.32 24.191 5.32 22.6 c
5.32 21.01 6.609 19.72 8.2 19.72 c
9.79 19.72 11.08 21.01 11.08 22.6 c
11.08 24.191 9.79 25.48 8.2 25.48 c
f
22.6 25.48 m
21.009 25.48 19.72 24.191 19.72 22.6 c
19.72 21.01 21.009 19.72 22.6 19.72 c
24.19 19.72 25.48 21.01 25.48 22.6 c
25.48 24.191 24.19 25.48 22.6 25.48 c
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Random circles)
(Random circles) 4.365 3.849 51.13 57.85 [
%AI3_Tile
(0 O 0 R  0 0.1125 0.45 0 k
 0 0.1125 0.45 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
4.365 3.849 m
4.365 57.85 L
51.13 57.85 L
51.13 3.849 L
4.365 3.849 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0.4 0.7 1 0 k
 0.4 0.7 1 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
45.429 36.274 m
45.843 36.991 45.598 37.908 44.88 38.323 c
44.163 38.737 43.245 38.491 42.831 37.774 c
42.417 37.056 42.663 36.139 43.38 35.725 c
44.098 35.31 45.015 35.556 45.429 36.274 c
s
44.179 27.926 m
43.765 28.643 42.848 28.889 42.13 28.475 c
41.413 28.06 41.167 27.143 41.581 26.425 c
41.995 25.708 42.913 25.462 43.63 25.876 c
44.348 26.291 44.593 27.208 44.179 27.926 c
s
35.929 41.024 m
35.515 41.741 34.598 41.987 33.88 41.573 c
33.163 41.158 32.917 40.241 33.331 39.524 c
33.745 38.806 34.663 38.56 35.38 38.975 c
36.098 39.389 36.343 40.306 35.929 41.024 c
s
28.38 34.225 m
28.794 34.942 28.549 35.859 27.831 36.274 c
27.114 36.688 26.196 36.442 25.782 35.725 c
25.368 35.007 25.614 34.09 26.331 33.675 c
27.049 33.261 27.966 33.507 28.38 34.225 c
s
31.179 28.024 m
30.765 28.741 29.848 28.987 29.13 28.573 c
28.413 28.158 28.167 27.241 28.581 26.524 c
28.995 25.806 29.913 25.56 30.63 25.975 c
31.348 26.389 31.593 27.306 31.179 28.024 c
s
36.792 23.349 m
35.963 23.349 35.292 22.678 35.292 21.849 c
35.292 21.021 35.963 20.349 36.792 20.349 c
37.62 20.349 38.292 21.021 38.292 21.849 c
38.292 22.678 37.62 23.349 36.792 23.349 c
s
10.888 34.175 m
10.474 34.893 10.72 35.81 11.437 36.225 c
12.155 36.639 13.072 36.393 13.486 35.675 c
13.901 34.958 13.655 34.041 12.937 33.626 c
12.22 33.212 11.303 33.458 10.888 34.175 c
s
11.517 26.601 m
11.931 27.318 12.848 27.564 13.566 27.15 c
14.283 26.735 14.529 25.818 14.115 25.1 c
13.701 24.383 12.783 24.137 12.066 24.551 c
11.348 24.966 11.103 25.883 11.517 26.601 c
s
16.782 41.426 m
17.196 42.143 18.114 42.389 18.831 41.975 c
19.549 41.56 19.794 40.643 19.38 39.926 c
18.966 39.208 18.049 38.962 17.331 39.377 c
16.614 39.791 16.368 40.708 16.782 41.426 c
s
22.365 24.35 m
23.194 24.35 23.865 23.678 23.865 22.85 c
23.865 22.021 23.194 21.35 22.365 21.35 c
21.537 21.35 20.865 22.021 20.865 22.85 c
20.865 23.678 21.537 24.35 22.365 24.35 c
s
45.385 7.849 m
44.971 7.132 44.053 6.886 43.336 7.3 c
42.619 7.714 42.373 8.632 42.787 9.349 c
43.201 10.067 44.119 10.312 44.836 9.898 c
45.553 9.484 45.799 8.567 45.385 7.849 c
s
29.679 7.774 m
29.265 7.056 28.348 6.81 27.63 7.225 c
26.913 7.639 26.667 8.556 27.081 9.274 c
27.495 9.991 28.413 10.237 29.13 9.823 c
29.848 9.408 30.093 8.491 29.679 7.774 c
s
35.542 11.349 m
34.713 11.349 34.042 12.021 34.042 12.849 c
34.042 13.678 34.713 14.349 35.542 14.349 c
36.37 14.349 37.042 13.678 37.042 12.849 c
37.042 12.021 36.37 11.349 35.542 11.349 c
s
10.13 7.475 m
10.544 6.757 11.462 6.511 12.179 6.926 c
12.897 7.34 13.142 8.257 12.728 8.975 c
12.314 9.692 11.397 9.938 10.679 9.524 c
9.962 9.109 9.716 8.192 10.13 7.475 c
s
20.203 13.349 m
21.031 13.349 21.703 14.021 21.703 14.849 c
21.703 15.678 21.031 16.349 20.203 16.349 c
19.375 16.349 18.703 15.678 18.703 14.849 c
18.703 14.021 19.375 13.349 20.203 13.349 c
s
44.635 54.1 m
45.049 53.382 44.803 52.465 44.086 52.051 c
43.369 51.636 42.451 51.882 42.037 52.6 c
41.623 53.317 41.869 54.234 42.586 54.649 c
43.303 55.063 44.221 54.817 44.635 54.1 c
s
36.841 48.1 m
36.427 47.382 35.509 47.136 34.792 47.551 c
34.074 47.965 33.828 48.882 34.243 49.6 c
34.657 50.317 35.574 50.563 36.292 50.149 c
37.009 49.734 37.255 48.817 36.841 48.1 c
s
29.728 54.725 m
30.143 54.007 29.897 53.09 29.179 52.675 c
28.462 52.261 27.544 52.507 27.13 53.225 c
26.716 53.942 26.962 54.859 27.679 55.274 c
28.397 55.688 29.314 55.442 29.728 54.725 c
s
10.86 54.1 m
10.446 53.382 10.691 52.465 11.409 52.051 c
12.126 51.636 13.044 51.882 13.458 52.6 c
13.872 53.317 13.626 54.234 12.909 54.649 c
12.191 55.063 11.274 54.817 10.86 54.1 c
s
19.154 49.1 m
19.568 48.382 20.486 48.136 21.203 48.551 c
21.92 48.965 22.166 49.882 21.752 50.6 c
21.338 51.317 20.42 51.563 19.703 51.149 c
18.986 50.734 18.74 49.817 19.154 49.1 c
s
51.88 38.85 m
51.052 38.85 50.38 39.521 50.38 40.35 c
50.38 41.178 51.052 41.85 51.88 41.85 c
52.709 41.85 53.38 41.178 53.38 40.35 c
53.38 39.521 52.709 38.85 51.88 38.85 c
s
51.865 11.349 m
52.693 11.349 53.365 12.021 53.365 12.849 c
53.365 13.678 52.693 14.349 51.865 14.349 c
51.036 14.349 50.365 13.678 50.365 12.849 c
50.365 12.021 51.036 11.349 51.865 11.349 c
s
30.179 18.524 m
29.765 19.241 28.848 19.487 28.13 19.073 c
27.413 18.658 27.167 17.741 27.581 17.024 c
27.995 16.306 28.913 16.06 29.63 16.475 c
30.348 16.889 30.593 17.806 30.179 18.524 c
s
21.679 31.524 m
21.265 32.241 20.348 32.487 19.63 32.073 c
18.913 31.658 18.667 30.741 19.081 30.024 c
19.495 29.306 20.413 29.06 21.13 29.475 c
21.848 29.889 22.093 30.806 21.679 31.524 c
s
37.914 33.399 m
37.5 34.116 36.583 34.362 35.865 33.948 c
35.148 33.533 34.902 32.616 35.316 31.899 c
35.73 31.181 36.648 30.935 37.365 31.35 c
38.083 31.764 38.328 32.681 37.914 33.399 c
s
28.929 45.024 m
28.515 45.741 27.598 45.987 26.88 45.573 c
26.163 45.158 25.917 44.241 26.331 43.524 c
26.745 42.806 27.663 42.56 28.38 42.975 c
29.098 43.389 29.343 44.306 28.929 45.024 c
s
12.429 45.524 m
12.015 46.241 11.098 46.487 10.38 46.073 c
9.663 45.658 9.417 44.741 9.831 44.024 c
10.245 43.306 11.163 43.06 11.88 43.475 c
12.598 43.889 12.843 44.806 12.429 45.524 c
s
44.49 45.6 m
44.075 46.317 43.158 46.563 42.441 46.149 c
41.723 45.734 41.477 44.817 41.891 44.1 c
42.306 43.382 43.223 43.136 43.941 43.55 c
44.658 43.965 44.904 44.882 44.49 45.6 c
s
12.679 18.524 m
12.265 19.241 11.348 19.487 10.63 19.073 c
9.913 18.658 9.667 17.741 10.081 17.024 c
10.495 16.306 11.413 16.06 12.13 16.475 c
12.848 16.889 13.093 17.806 12.679 18.524 c
s
21.179 5.774 m
20.765 6.491 19.848 6.737 19.13 6.323 c
18.413 5.908 18.167 4.991 18.581 4.274 c
18.995 3.557 19.913 3.311 20.63 3.725 c
21.348 4.139 21.593 5.056 21.179 5.774 c
s
38.929 5.274 m
38.515 5.991 37.598 6.237 36.88 5.823 c
36.163 5.408 35.917 4.491 36.331 3.774 c
36.745 3.057 37.663 2.811 38.38 3.225 c
39.098 3.639 39.343 4.556 38.929 5.274 c
s
43.865 18.1 m
44.694 18.1 45.365 17.429 45.365 16.6 c
45.365 15.772 44.694 15.1 43.865 15.1 c
43.037 15.1 42.365 15.772 42.365 16.6 c
42.365 17.429 43.037 18.1 43.865 18.1 c
s
51.13 4.6 m
50.302 4.6 49.63 3.928 49.63 3.1 c
49.63 2.272 50.302 1.6 51.13 1.6 c
51.959 1.6 52.63 2.272 52.63 3.1 c
52.63 3.928 51.959 4.6 51.13 4.6 c
s
52.163 31.649 m
51.748 32.366 50.831 32.612 50.114 32.198 c
49.396 31.783 49.15 30.866 49.565 30.149 c
49.979 29.431 50.896 29.185 51.614 29.6 c
52.331 30.014 52.577 30.931 52.163 31.649 c
s
51.85 51.35 m
51.021 51.35 50.35 50.678 50.35 49.85 c
50.35 49.021 51.021 48.35 51.85 48.35 c
52.678 48.35 53.35 49.021 53.35 49.85 c
53.35 50.678 52.678 51.35 51.85 51.35 c
s
49.85 23.1 m
50.679 23.1 51.35 22.428 51.35 21.6 c
51.35 20.771 50.679 20.1 49.85 20.1 c
49.022 20.1 48.35 20.771 48.35 21.6 c
48.35 22.428 49.022 23.1 49.85 23.1 c
s
5.13 38.85 m
4.302 38.85 3.63 39.521 3.63 40.35 c
3.63 41.178 4.302 41.85 5.13 41.85 c
5.959 41.85 6.63 41.178 6.63 40.35 c
6.63 39.521 5.959 38.85 5.13 38.85 c
s
5.115 11.349 m
5.943 11.349 6.615 12.021 6.615 12.849 c
6.615 13.678 5.943 14.349 5.115 14.349 c
4.286 14.349 3.615 13.678 3.615 12.849 c
3.615 12.021 4.286 11.349 5.115 11.349 c
s
4.38 4.6 m
3.552 4.6 2.88 3.928 2.88 3.1 c
2.88 2.272 3.552 1.6 4.38 1.6 c
5.209 1.6 5.88 2.272 5.88 3.1 c
5.88 3.928 5.209 4.6 4.38 4.6 c
s
5.413 31.649 m
4.998 32.366 4.081 32.612 3.364 32.198 c
2.646 31.783 2.4 30.866 2.815 30.149 c
3.229 29.431 4.146 29.185 4.864 29.6 c
5.581 30.014 5.827 30.931 5.413 31.649 c
s
5.1 51.35 m
4.271 51.35 3.6 50.678 3.6 49.85 c
3.6 49.021 4.271 48.35 5.1 48.35 c
5.928 48.35 6.6 49.021 6.6 49.85 c
6.6 50.678 5.928 51.35 5.1 51.35 c
s
3.1 23.1 m
3.929 23.1 4.6 22.428 4.6 21.6 c
4.6 20.771 3.929 20.1 3.1 20.1 c
2.272 20.1 1.6 20.771 1.6 21.6 c
1.6 22.428 2.272 23.1 3.1 23.1 c
s
21.194 59.775 m
20.78 60.492 19.863 60.738 19.145 60.324 c
18.428 59.909 18.182 58.992 18.596 58.275 c
19.01 57.558 19.928 57.312 20.645 57.726 c
21.363 58.14 21.608 59.057 21.194 59.775 c
s
38.944 59.275 m
38.53 59.992 37.613 60.238 36.895 59.824 c
36.178 59.409 35.932 58.492 36.346 57.775 c
36.76 57.058 37.678 56.812 38.395 57.226 c
39.113 57.64 39.358 58.557 38.944 59.275 c
s
51.145 58.601 m
50.317 58.601 49.645 57.929 49.645 57.101 c
49.645 56.273 50.317 55.601 51.145 55.601 c
51.974 55.601 52.645 56.273 52.645 57.101 c
52.645 57.929 51.974 58.601 51.145 58.601 c
s
4.395 58.601 m
3.567 58.601 2.895 57.929 2.895 57.101 c
2.895 56.273 3.567 55.601 4.395 55.601 c
5.224 55.601 5.895 56.273 5.895 57.101 c
5.895 57.929 5.224 58.601 4.395 58.601 c
s
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Rope.side)
(Rope.side) 1 4.6 60.9998 33.3999 [
%AI3_Tile
(0 O 0 R  0 0 0 1 k
 0 0 0 1 K
) @
(
%AI6_BeginPatternLayer
800 Ar
1 J 1 j 0.6 w 4 M []0 d
%AI3_Note:
0 D
0 XR
24.9999 7 m
15.6521 4.663 8.125 8.6981 1 14.1407 C
S
36.9999 7 m
22.3477 3.337 12.168 15.3276 1 23.859 C
S
48.9999 7 m
29.3464 2.0866 17.7386 25.3332 1 30.6213 C
S
1 30.9999 m
24.9999 36.9999 36.9999 1 60.9998 7 C
S
13 30.9999 m
32.6534 35.9133 44.2611 12.6667 60.9998 7.3786 C
S
24.9999 30.9999 m
39.652 34.6629 49.8317 22.6722 60.9998 14.1407 C
S
36.9999 30.9999 m
46.3476 33.3369 53.8749 29.3018 60.9998 23.859 C
S
48.9999 30.9999 m
53.3464 32.0865 57.2978 31.7908 60.9998 30.6213 C
S
13 7 m
8.6535 5.9134 4.7019 6.2091 1 7.3786 C
S
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Scales)
(Scales) 1.6 9.3475 48.088 55.8355 [
%AI3_Tile
(0 O 0 R  1 g
 1 G
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
1.6 9.3475 m
1.6 55.8355 L
48.088 55.8355 L
48.088 9.3475 L
1.6 9.3475 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 g
 0 G
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
17.0956 9.3475 m
12.8162 9.3475 9.3475 5.8787 9.3475 1.6 C
9.3475 5.8787 5.8787 9.3475 1.6 9.3475 C
1.6 13.6262 5.0687 17.095 9.3475 17.095 c
13.6268 17.095 17.0956 13.6262 17.0956 9.3475 C
s
32.5918 9.3475 m
28.3125 9.3475 24.8437 5.8787 24.8437 1.6 C
24.8437 5.8787 21.3743 9.3475 17.0956 9.3475 C
17.0956 13.6262 20.5644 17.095 24.8437 17.095 c
29.1224 17.095 32.5918 13.6262 32.5918 9.3475 C
s
48.088 9.3475 m
43.8087 9.3475 40.3399 5.8787 40.3399 1.6 C
40.3399 5.8787 36.8705 9.3475 32.5918 9.3475 C
32.5918 13.6262 36.0606 17.095 40.3399 17.095 c
44.6186 17.095 48.088 13.6262 48.088 9.3475 C
s
17.0956 40.3393 m
12.8162 40.3393 9.3475 36.8699 9.3475 32.5912 C
9.3475 36.8699 5.8787 40.3393 1.6 40.3393 C
1.6 44.6181 5.0687 48.0874 9.3475 48.0874 c
13.6268 48.0874 17.0956 44.6181 17.0956 40.3393 C
s
17.0956 24.8431 m
12.8162 24.8431 9.3475 21.3743 9.3475 17.095 C
9.3475 21.3743 5.8787 24.8431 1.6 24.8431 C
1.6 29.1218 5.0687 32.5912 9.3475 32.5912 c
13.6268 32.5912 17.0956 29.1218 17.0956 24.8431 C
s
32.5918 24.8431 m
28.3125 24.8431 24.8437 21.3743 24.8437 17.095 C
24.8437 21.3743 21.3743 24.8431 17.0956 24.8431 C
17.0956 29.1218 20.5644 32.5912 24.8437 32.5912 c
29.1224 32.5912 32.5918 29.1218 32.5918 24.8431 C
s
48.088 24.8431 m
43.8087 24.8431 40.3399 21.3743 40.3399 17.095 C
40.3399 21.3743 36.8705 24.8431 32.5918 24.8431 C
32.5918 29.1218 36.0606 32.5912 40.3399 32.5912 c
44.6186 32.5912 48.088 29.1218 48.088 24.8431 C
s
32.5918 40.3393 m
28.3125 40.3393 24.8437 36.8699 24.8437 32.5912 C
24.8437 36.8699 21.3743 40.3393 17.0956 40.3393 C
17.0956 44.6181 20.5644 48.0874 24.8437 48.0874 c
29.1224 48.0874 32.5918 44.6181 32.5918 40.3393 C
s
48.088 40.3393 m
43.8087 40.3393 40.3399 36.8699 40.3399 32.5912 C
40.3399 36.8699 36.8705 40.3393 32.5918 40.3393 C
32.5918 44.6181 36.0606 48.0874 40.3399 48.0874 c
44.6186 48.0874 48.088 44.6181 48.088 40.3393 C
s
17.0956 55.8355 m
12.8162 55.8355 9.3475 52.3662 9.3475 48.0874 C
9.3475 52.3662 5.8787 55.8355 1.6 55.8355 C
1.6 60.1143 5.0687 63.5836 9.3475 63.5836 c
13.6268 63.5836 17.0956 60.1143 17.0956 55.8355 C
s
32.5918 55.8355 m
28.3125 55.8355 24.8437 52.3662 24.8437 48.0874 C
24.8437 52.3662 21.3743 55.8355 17.0956 55.8355 C
17.0956 60.1143 20.5644 63.5836 24.8437 63.5836 c
29.1224 63.5836 32.5918 60.1143 32.5918 55.8355 C
s
48.088 55.8355 m
43.8087 55.8355 40.3399 52.3662 40.3399 48.0874 C
40.3399 52.3662 36.8705 55.8355 32.5918 55.8355 C
32.5918 60.1143 36.0606 63.5836 40.3399 63.5836 c
44.6186 63.5836 48.088 60.1143 48.088 55.8355 C
s
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (SolidStar.side)
(SolidStar.side) 1 1 33.0117 33.0117 [
%AI3_Tile
(0 O 0 R  0.05 0.2 0.95 0 k
 0.05 0.2 0.95 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
1 D
0 XR
7.9689 26.0458 m
14.5331 22.9874 l
17.0095 29.7904 L
19.4859 22.9874 l
26.0473 26.0458 l
22.9889 19.4815 l
29.792 17.0052 l
22.9889 14.5288 l
26.0473 7.9674 l
19.4859 11.0257 l
17.0095 4.2226 l
14.5305 11.0257 l
7.9689 7.9674 l
11.0273 14.5288 l
4.2242 17.0052 l
11.0273 19.4843 L
7.9689 26.0458 l
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Stars)
(Stars) 1 1 63.384 84.766 [
%AI3_Tile
(0 O 0 R  1 0.9 0.1 0 k
 1 0.9 0.1 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.3 w 4 M []0 d
%AI3_Note:
0 D
0 XR
1 1 m
1 84.766 L
63.384 84.766 L
63.384 1 L
1 1 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0.25 1 0 k
 0 0.25 1 0 K
) @
(
%AI6_BeginPatternLayer
*u
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
37.668 67.113 m
43.924 62.567 L
41.535 55.213 L
47.791 59.757 L
54.046 55.212 L
51.657 62.566 L
57.914 67.112 L
50.18 67.112 L
47.791 74.467 L
45.402 67.113 L
37.668 67.113 L
f
16.596 59.757 m
22.851 55.212 L
20.462 62.566 L
26.719 67.112 L
18.985 67.112 L
16.596 74.467 L
14.207 67.113 L
6.473 67.113 L
12.729 62.567 L
10.34 55.213 L
16.596 59.757 L
f
20.462 20.683 m
26.719 25.229 L
18.985 25.229 L
16.596 32.584 L
14.207 25.23 L
6.473 25.23 L
12.729 20.684 L
10.34 13.33 L
16.596 17.874 L
22.851 13.329 L
20.462 20.683 L
f
38.447 34.271 m
36.058 41.625 L
42.315 46.171 L
34.581 46.171 L
32.192 53.526 L
29.803 46.172 L
22.069 46.172 L
28.325 41.626 L
25.936 34.272 L
32.192 38.816 L
38.447 34.271 L
f
51.657 20.683 m
57.914 25.229 L
50.18 25.229 L
47.791 32.584 L
45.402 25.23 L
37.668 25.23 L
43.924 20.684 L
41.535 13.33 L
47.791 17.874 L
54.046 13.329 L
51.657 20.683 L
f
*U
1 XR
34.581 4.288 m
32.192 11.643 L
29.803 4.289 L
22.069 4.289 L
26.5962 1 L
37.7885 1 L
42.315 4.288 L
34.581 4.288 L
f
53.261 4.289 m
57.7882 1 L
63.384 1 L
63.384 11.643 L
60.995 4.289 L
53.261 4.289 L
f
4.866 41.625 m
11.123 46.171 L
3.389 46.171 L
1 53.526 L
1 38.816 L
7.255 34.271 L
4.866 41.625 L
f
36.058 41.625 m
42.315 46.171 L
34.581 46.171 L
32.192 53.526 L
29.803 46.172 L
22.069 46.172 L
28.325 41.626 L
25.936 34.272 L
32.192 38.816 L
38.447 34.271 L
36.058 41.625 L
f
53.261 46.172 m
59.517 41.626 L
57.128 34.272 L
63.384 38.816 L
63.384 53.526 L
60.995 46.172 L
53.261 46.172 L
f
4.866 83.508 m
6.5974 84.766 L
1 84.766 L
1 80.699 L
7.255 76.154 L
4.866 83.508 L
f
25.936 76.155 m
32.192 80.699 L
38.447 76.154 L
36.058 83.508 L
37.7895 84.766 L
26.5951 84.766 L
28.325 83.509 L
25.936 76.155 L
f
22.851 55.212 m
20.462 62.566 L
26.719 67.112 L
18.985 67.112 L
16.596 74.467 L
14.207 67.113 L
6.473 67.113 L
12.729 62.567 L
10.34 55.213 L
16.596 59.757 L
22.851 55.212 L
f
41.535 55.213 m
47.791 59.757 L
54.046 55.212 L
51.657 62.566 L
57.914 67.112 L
50.18 67.112 L
47.791 74.467 L
45.402 67.113 L
37.668 67.113 L
43.924 62.567 L
41.535 55.213 L
f
50.18 25.229 m
47.791 32.584 L
45.402 25.23 L
37.668 25.23 L
43.924 20.684 L
41.535 13.33 L
47.791 17.874 L
54.046 13.329 L
51.657 20.683 L
57.914 25.229 L
50.18 25.229 L
f
18.985 25.229 m
16.596 32.584 L
14.207 25.23 L
6.473 25.23 L
12.729 20.684 L
10.34 13.33 L
16.596 17.874 L
22.851 13.329 L
20.462 20.683 L
26.719 25.229 L
18.985 25.229 L
f
3.388 4.289 m
1 11.643 L
1 1 L
6.5948 1 L
11.122 4.289 L
3.388 4.289 L
f
57.128 76.154 m
63.384 80.699 L
63.384 84.766 L
57.7855 84.766 L
59.517 83.508 L
57.128 76.154 L
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Stripes)
(Stripes) 8.45 4.6001 80.45 76.6001 [
%AI3_Tile
(0 O 0 R  1 0.07 1 0 k
 1 0.07 1 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 3.6 w 4 M []0 d
%AI3_Note:
0 D
0 XR
8.2 8.2 m
80.7 8.2 L
S
8.2 22.6001 m
80.7 22.6001 L
S
8.2 37.0002 m
80.7 37.0002 L
S
8.2 51.4 m
80.7 51.4 L
S
8.2 65.8001 m
80.7 65.8001 L
S
8.2 15.4 m
80.7 15.4 L
S
8.2 29.8001 m
80.7 29.8001 L
S
8.2 44.2 m
80.7 44.2 L
S
8.2 58.6001 m
80.7 58.6001 L
S
8.2 73.0002 m
80.7 73.0002 L
S
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (TriBevel.outer)
(TriBevel.outer) 1 1.0004 31.6124 31.6127 [
%AI3_Tile
(0 O 0 R  0 0 0 0.3 k
 0 0 0 0.3 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
31.6118 5.4917 m
27.1221 5.4917 L
27.1205 1.0011 L
27.8031 1.0011 L
27.8031 4.8091 L
31.6118 4.8091 L
31.6118 5.4917 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0 0 0.2 k
 0 0 0 0.2 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
31.6149 9.5062 m
23.1111 9.5062 L
23.1111 1.0015 L
27.1205 1.0015 L
27.1205 5.493 L
31.6144 5.493 L
31.6149 9.5062 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0 0 0.4 k
 0 0 0 0.4 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
31.6124 10.485 m
22.1297 10.485 L
22.1292 1.0015 L
23.1084 1.0015 L
23.1084 9.5049 L
31.6124 9.5049 L
31.6124 10.485 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0 0 0.3 k
 0 0 0 0.3 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
31.6129 17.2066 m
15.4064 17.2085 L
15.4064 1 L
22.1301 1 L
22.1301 10.4868 L
31.6129 10.4868 L
31.6129 17.2066 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0 0 0.5 k
 0 0 0 0.5 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
31.6149 18.3658 m
14.2517 18.3658 L
14.2515 1.0009 L
15.4043 1.0009 L
15.4043 17.2093 L
31.6149 17.2093 L
31.6149 18.3658 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0 0 0.4 k
 0 0 0 0.4 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
31.6124 30.4755 m
2.1395 30.4755 L
2.1395 1.0015 L
14.249 1 L
14.249 18.366 L
31.6149 18.366 L
31.6124 30.4755 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0 0 0.6 k
 0 0 0 0.6 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
15.4066 16.847 m
14.2778 18.3257 l
15.4066 17.2057 l
15.4066 16.847 l
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0 0 0.5 k
 0 0 0 0.5 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
23.1095 9.1906 m
22.1759 10.4392 l
23.1082 9.505 l
23.1095 9.1906 l
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0 0 0.4 k
 0 0 0 0.4 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
27.8039 4.6026 m
27.1619 5.4533 l
27.8029 4.8093 l
27.8039 4.6026 l
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (TriBevel.side)
(TriBevel.side) 1.0006 1 29.0006 31.6124 [
%AI3_Tile
(0 O 0 R  0 0 0 0.3 k
 0 0 0 0.3 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
29 4.8087 m
29 4.8087 L
29.0026 5.4927 L
1.0026 5.4927 L
1 4.8087 L
1 4.8087 L
29 4.8087 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0 0 0.2 k
 0 0 0 0.2 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
29.0026 5.4927 m
29.0005 9.5045 L
1.0005 9.5045 L
1.0026 5.4927 L
29.0026 5.4927 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0 0 0.4 k
 0 0 0 0.4 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
29.0005 9.5045 m
29.0011 10.4865 L
1.0011 10.4865 L
1.0005 9.5045 L
29.0005 9.5045 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0 0 0.3 k
 0 0 0 0.3 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
29.0011 10.4865 m
29.003 17.209 L
1.003 17.209 L
1.0011 10.4865 L
29.0011 10.4865 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0 0 0.5 k
 0 0 0 0.5 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
29.003 17.209 m
29.0031 18.3656 L
1.0031 18.3656 L
1.003 17.209 L
29.003 17.209 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0 0 0 0.4 k
 0 0 0 0.4 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
0 D
0 XR
29.0031 18.3656 m
29.0006 30.4752 L
1.0006 30.4752 L
1.0031 18.3656 L
29.0031 18.3656 L
f
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Waves-scroll)
(Waves-scroll) 17.926 10.516 68.663 69.012 [
%AI3_Tile
(0 O 0 R  1 0 0.3 0 k
 1 0 0.3 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 1 w 4 M []0 d
%AI3_Note:
1 D
0 XR
17.926 69.012 m
17.926 10.516 L
68.663 10.516 L
68.663 69.012 L
17.926 69.012 L
f
%AI6_EndPatternLayer
) &
(0 O 0 R  0.55 0 0 0 k
 0.55 0 0 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 0.75 w 4 M []0 d
%AI3_Note:
0 D
0 XR
65.335 70.465 m
65.881 68.746 67.444 68.168 68.663 69.012 C
67.538 69.668 68.011 71.255 69.686 70.933 c
72.124 70.464 71.894 67.213 70.53 65.589 c
68.561 63.245 64.565 60.995 53.241 71.117 C
S
39.964 70.465 m
40.511 68.746 42.074 68.168 43.293 69.012 C
42.168 69.668 42.64 71.255 44.316 70.933 c
46.753 70.464 46.524 67.213 45.16 65.589 c
43.191 63.245 39.195 60.995 27.87 71.117 c
S
14.594 70.465 m
15.141 68.746 16.704 68.168 17.923 69.012 C
16.798 69.668 17.27 71.255 18.945 70.933 c
21.382 70.464 21.153 67.213 19.789 65.589 c
17.821 63.245 13.825 60.995 2.5 71.117 c
S
10.959 51.619 m
22.282 41.497 26.278 43.747 28.247 46.09 c
29.611 47.715 29.841 50.965 27.403 51.434 c
25.728 51.757 25.255 50.169 26.38 49.513 C
25.161 48.669 23.599 49.248 23.052 50.966 c
22.723 51.997 23.38 53.966 24.872 54.903 c
27.267 56.406 31.371 56.05 36.328 51.619 c
47.653 41.497 51.649 43.746 53.618 46.09 c
54.982 47.715 55.212 50.965 52.774 51.434 c
51.099 51.757 50.626 50.169 51.751 49.513 C
50.532 48.669 48.97 49.248 48.423 50.966 c
48.094 51.997 48.751 53.966 50.243 54.903 c
52.638 56.406 56.742 56.05 61.699 51.619 C
73.024 41.497 77.02 43.747 78.988 46.09 c
S
70.156 32.12 m
65.199 36.551 61.095 36.907 58.7 35.404 c
57.208 34.468 56.552 32.499 56.88 31.468 c
57.427 29.749 58.99 29.171 60.208 30.015 C
59.083 30.671 59.556 32.258 61.231 31.936 c
63.669 31.467 63.439 28.216 62.075 26.592 c
60.106 24.248 56.11 21.998 44.786 32.12 C
39.829 36.551 35.725 36.907 33.33 35.404 c
31.838 34.468 31.182 32.499 31.51 31.468 c
32.056 29.749 33.619 29.171 34.838 30.015 C
33.713 30.671 34.186 32.258 35.861 31.936 c
38.299 31.467 38.069 28.216 36.705 26.592 c
34.737 24.248 30.74 21.998 19.415 32.12 c
14.458 36.551 10.354 36.907 7.96 35.404 c
S
19.792 7.094 m
21.157 8.719 21.386 11.968 18.949 12.437 c
17.274 12.76 16.801 11.172 17.926 10.516 C
16.708 9.673 15.145 10.252 14.598 11.969 c
14.27 13 14.926 14.969 16.418 15.906 c
18.812 17.409 22.916 17.053 27.874 12.622 c
39.199 2.5 43.195 4.75 45.163 7.094 c
46.528 8.719 46.757 11.968 44.32 12.437 c
42.644 12.76 42.172 11.172 43.297 10.516 C
42.078 9.673 40.515 10.252 39.968 11.969 c
39.64 13 40.297 14.969 41.788 15.906 c
44.183 17.409 48.287 17.053 53.245 12.622 C
64.569 2.5 68.565 4.75 70.534 7.094 c
71.898 8.719 72.127 11.968 69.69 12.437 c
68.014 12.76 67.542 11.172 68.667 10.516 C
67.448 9.673 65.885 10.252 65.338 11.969 c
65.011 13 65.667 14.969 67.159 15.906 c
69.553 17.409 73.657 17.053 78.615 12.622 c
S
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI3_BeginPattern: (Yellow Stripe)
(Yellow Stripe) 8.4499 4.6 80.4499 76.6 [
%AI3_Tile
(0 O 0 R  0 0.4 1 0 k
 0 0.4 1 0 K
) @
(
%AI6_BeginPatternLayer
800 Ar
0 J 0 j 3.6 w 4 M []0 d
%AI3_Note:
0 D
0 XR
8.1999 8.1999 m
80.6999 8.1999 L
S
8.1999 22.6 m
80.6999 22.6 L
S
8.1999 37.0001 m
80.6999 37.0001 L
S
8.1999 51.3999 m
80.6999 51.3999 L
S
8.1999 65.8 m
80.6999 65.8 L
S
8.1999 15.3999 m
80.6999 15.3999 L
S
8.1999 29.8 m
80.6999 29.8 L
S
8.1999 44.1999 m
80.6999 44.1999 L
S
8.1999 58.6 m
80.6999 58.6 L
S
8.1999 73.0001 m
80.6999 73.0001 L
S
%AI6_EndPatternLayer
) &
] E
%AI3_EndPattern
%AI5_End_NonPrinting--
%AI5_Begin_NonPrinting
Np
13 Bn
%AI5_BeginGradient: (Black & White)
(Black & White) 0 2 Bd
[
0
0
0
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
1 %_Br
[
0 0 50 100 %_Bs
1 0 50 0 %_Bs
BD
%AI5_EndGradient
%AI5_BeginGradient: (Black, White)
(Black, White) 0 2 Bd
[
0
0
0
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
1 %_Br
[
0 0 50 100 %_Bs
1 0 50 0 %_Bs
BD
%AI5_EndGradient
%AI5_BeginGradient: (Chrome)
(Chrome) 0 6 Bd
[
0
<
464646454545444444444343434342424241414141404040403F3F3F3E3E3E3E3D3D3D3C3C3C3C3B
3B3B3B3A3A3A39393939383838383737373636363635353535343434333333333232323131313130
3030302F2F2F2E2E2E2E2D2D2D2D2C2C2C2B2B2B2B2A2A2A2A292929282828282727272726262625
2525252424242323232322222222212121202020201F1F1F1F1E1E1E1D1D1D1D1C1C1C1C1B1B1B1A
1A1A1A1919191818181817171717161616151515151414141413131312121212111111101010100F
0F0F0F0E0E0E0D0D0D0D0C0C0C0C0B0B0B0A0A0A0A09090909080808070707070606060505050504
04040403030302020202010101010000
>
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
<
1F1E1E1E1E1E1E1E1E1E1D1D1D1D1D1D1D1D1C1C1C1C1C1C1C1C1B1B1B1B1B1B1B1B1B1A1A1A1A1A
1A1A1A19191919191919191818181818181818181717171717171717161616161616161615151515
15151515151414141414141414131313131313131312121212121212121211111111111111111010
1010101010100F0F0F0F0F0F0F0F0F0E0E0E0E0E0E0E0E0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C
0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A090909090909090909080808080808080807070707070707
07060606060606060606050505050505050504040404040404040303030303030303030202020202
02020201010101010101010000000000
>
1 %_Br
0
0.275
1
<
6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544
434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F
>
1 %_Br
0
<
00000101010102020202030303040404040505050506060607070707080808090909090A0A0A0A0B
0B0B0C0C0C0C0D0D0D0D0E0E0E0F0F0F0F1010101011111112121212131313141414141515151516
161617171717181818181919191A1A1A1A1B1B1B1B1C1C1C1D1D1D1D1E1E1E1F1F1F1F2020202021
212122222222232323232424242525252526262626272727282828282929292A2A2A2A2B2B2B2B2C
2C2C2D2D2D2D2E2E2E2E2F2F2F303030303131313132323233333333343434353535353636363637
373738383838393939393A3A3A3B3B3B3B3C3C3C3C3D3D3D3E3E3E3E3F3F3F404040404141414142
42424343434344444444454545464646
>
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
<
00000101020203030304040505050606070708080809090A0A0A0B0B0C0C0D0D0D0E0E0F0F101010
1111121212131314141515151616171718181819191A1A1A1B1B1C1C1D1D1D1E1E1F1F1F20202121
222222232324242525252626272727282829292A2A2A2B2B2C2C2D2D2D2E2E2F2F2F303031313232
32333334343435353636373737383839393A3A3A3B3B3C3C3C3D3D3E3E3F3F3F4040414142424243
434444444545464647474748484949494A4A4B4B4C4C4C4D4D4E4E4F4F4F50505151515252535354
54545555565657575758585959595A5A5B5B5C5C5C5D5D5E5E5F5F5F606061616162626363646464
6565666666676768686969696A6A6B6B
>
1 %_Br
0
0
0
0
1 %_Br
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
<
4D4C4C4C4B4B4B4A4A4A4A4949494848484747474746464645454544444444434343424242414141
414040403F3F3F3E3E3E3E3D3D3D3C3C3C3B3B3B3B3A3A3A39393938383838373737363636353535
35343434333333323232323131313030302F2F2F2F2E2E2E2D2D2D2C2C2C2C2B2B2B2A2A2A292929
292828282727272626262625252524242423232323222222212121202020201F1F1F1E1E1E1D1D1D
1D1C1C1C1B1B1B1A1A1A1A1919191818181717171716161615151514141414131313121212111111
111010100F0F0F0E0E0E0E0D0D0D0C0C0C0B0B0B0B0A0A0A09090908080808070707060606050505
05040404030303020202020101010000
>
0
0
1 %_Br
[
1 0 50 92 %_Bs
0 0.275 1 0.12 1 50 59 %_Bs
0 0.275 1 0.42 1 50 50 %_Bs
1 0 50 49 %_Bs
1 0 50 41 %_Bs
1 0.3 0 0 1 50 0 %_Bs
BD
%AI5_EndGradient
%AI5_BeginGradient: (Green, Blue)
(Green, Blue) 0 2 Bd
[
<
99999A9A9B9B9B9C9C9D9D9D9E9E9F9F9FA0A0A1A1A1A2A2A3A3A3A4A4A5A5A5A6A6A7A7A7A8A8A9
A9A9AAAAABABABACACADADADAEAEAFAFAFB0B0B1B1B1B2B2B3B3B3B4B4B5B5B5B6B6B7B7B7B8B8B9
B9B9BABABBBBBBBCBCBDBDBDBEBEBFBFBFC0C0C1C1C1C2C2C3C3C3C4C4C5C5C5C6C6C7C7C7C8C8C9
C9C9CACACBCBCBCCCCCDCDCDCECECFCFCFD0D0D1D1D1D2D2D3D3D3D4D4D5D5D5D6D6D7D7D7D8D8D9
D9D9DADADBDBDBDCDCDDDDDDDEDEDFDFDFE0E0E1E1E1E2E2E3E3E3E4E4E5E5E5E6E6E7E7E7E8E8E9
E9E9EAEAEBEBEBECECEDEDEDEEEEEFEFEFF0F0F1F1F1F2F2F3F3F3F4F4F5F5F5F6F6F7F7F7F8F8F9
F9F9FAFAFBFBFBFCFCFDFDFDFEFEFFFF
>
<
000102020304050506070808090A0B0B0C0D0E0E0F101111121314141516171718191A1A1B1C1D1D
1E1F20202122232324252626272829292A2B2C2C2D2E2F2F303132323334353536373838393A3B3B
3C3D3E3E3F404141424344444546474748494A4A4B4C4D4D4E4F5050515253535455565657585959
5A5B5C5C5D5E5F5F606162626364656566676868696A6B6B6C6D6E6E6F7071717273747475767777
78797A7A7B7C7D7D7E7F80808182828384858586878888898A8B8B8C8D8E8E8F9091919293949495
96979798999A9A9B9C9D9D9E9FA0A0A1A2A3A3A4A5A6A6A7A8A9A9AAABACACADAEAFAFB0B1B2B2B3
B4B5B5B6B7B8B8B9BABBBBBCBDBEBEBF
>
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
0
1 %_Br
[
1 0.75 0 0 1 50 100 %_Bs
0.6 0 1 0 1 50 0 %_Bs
BD
%AI5_EndGradient
%AI5_BeginGradient: (Orange, Green, Violet)
(Orange, Green, Violet) 0 3 Bd
[
<
F0EFEFEFEEEEEEEDEDEDECECECEBEBEBEAEAEAE9E9E9E8E8E8E7E7E7E6E6E6E5E5E5E4E4E4E3E3E3
E3E2E2E2E1E1E1E0E0E0DFDFDFDEDEDEDDDDDDDCDCDCDBDBDBDADADAD9D9D9D8D8D8D7D7D7D6D6D6
D5D5D5D4D4D4D3D3D3D2D2D2D1D1D1D0D0D0CFCFCFCECECECDCDCDCCCCCCCBCBCBCACACAC9C9C9C8
C8C8C7C7C7C6C6C6C5C5C5C4C4C4C3C3C3C2C2C2C2C1C1C1C0C0C0BFBFBFBEBEBEBDBDBDBCBCBCBB
BBBBBABABAB9B9B9B8B8B8B7B7B7B6B6B6B5B5B5B4B4B4B3B3B3B2B2B2B1B1B1B0B0B0AFAFAFAEAE
AEADADADACACACABABABAAAAAAA9A9A9A8A8A8A7A7A7A6A6A6A5A5A5A4A4A4A3A3A3A2A2A2A1A1A1
A0A0A0A09F9F9F9E9E9E9D9D9D9C9C9C
>
<
5455555657575859595A5A5B5C5C5D5E5E5F5F6061616263636465656666676868696A6A6B6B6C6D
6D6E6F6F707171727273747475767677777879797A7B7B7C7C7D7E7E7F8080818282838384858586
87878888898A8A8B8C8C8D8D8E8F8F909191929393949495969697989899999A9B9B9C9D9D9E9E9F
A0A0A1A2A2A3A4A4A5A5A6A7A7A8A9A9AAAAABACACADAEAEAFAFB0B1B1B2B3B3B4B5B5B6B6B7B8B8
B9BABABBBBBCBDBDBEBFBFC0C1C1C2C2C3C4C4C5C6C6C7C7C8C9C9CACBCBCCCCCDCECECFD0D0D1D2
D2D3D3D4D5D5D6D7D7D8D8D9DADADBDCDCDDDDDEDFDFE0E1E1E2E3E3E4E4E5E6E6E7E8E8E9E9EAEB
EBECEDEDEEEFEFF0F0F1F2F2F3F4F4F5
>
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
<
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000101010101010101010101010101010101010101010101010101010101
01010101010101010101010101010101010101010101010101010101010101010101010101010101
01010101010101010101010101010101010101010101010101010101010101020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020303030303
>
1 %_Br
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0
>
<
A1A0A0A09F9F9F9E9E9E9D9D9D9D9C9C9C9B9B9B9A9A9A9999999898989797979696969595959594
94949393939292929191919090908F8F8F8E8E8E8E8D8D8D8C8C8C8B8B8B8A8A8A89898988888887
878787868686858585848484838383828282818181808080807F7F7F7E7E7E7D7D7D7C7C7C7B7B7B
7A7A7A79797978787878777777767676757575747474737373727272717171717070706F6F6F6E6E
6E6D6D6D6C6C6C6B6B6B6A6A6A6A6969696868686767676666666565656464646363636262626261
61616060605F5F5F5E5E5E5D5D5D5C5C5C5B5B5B5B5A5A5A59595958585857575756565655555554
54
>
<
F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6
F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFA
FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFCFC
FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD
FDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFF
FF
>
0
1 %_Br
[
0.61 0.96 0 0.01 1 50 100 %_Bs
0.94 0.33 1 0 1 50 50 %_Bs
0 0.63 0.96 0 1 50 0 %_Bs
BD
%AI5_EndGradient
%AI5_BeginGradient: (Pink, Yellow, Green )
(Pink, Yellow, Green ) 0 3 Bd
[
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4E4F50
5152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273
>
<
05050505050505050505050505050404040404040404040404040404040404040404040403030303
03030303030303030303030303030303030303020202020202020202020202020202020202020202
0201010101010101010101010101010101010101010101000000000000000000000000
>
<
CCCCCCCCCCCBCBCBCBCBCBCBCBCBCACACACACACACACACAC9C9C9C9C9C9C9C9C9C8C8C8C8C8C8C8C8
C8C7C7C7C7C7C7C7C7C7C6C6C6C6C6C6C6C6C6C5C5C5C5C5C5C5C5C5C4C4C4C4C4C4C4C4C3C3C3C3
C3C3C3C3C3C2C2C2C2C2C2C2C2C2C1C1C1C1C1C1C1C1C1C0C0C0C0C0C0C0C0C0BFBFBF
>
0
1 %_Br
<
0D0D0D0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0B
0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A
0A0A0A09090909090909090909090909090909090909090808080808080808080808080808080808
08080807070707070707070707070707070707070706060606060606060606060606060606060605
05050505050505050505050505050505050404040404040404040404040404040404030303030303
03030303030303030303030202020202020202020202020202020201010101010101010101010101
010101000000000000000000
>
<
B2B2B2B2B1B1B1B0B0B0AFAFAEAEAEADADACACABABAAAAA9A9A8A8A7A7A6A6A5A5A4A4A3A3A2A2A1
A0A09F9F9E9E9D9D9C9B9B9A9A999898979796959594949392929190908F8F8E8D8D8C8B8B8A8989
88888786868584848382828180807F7E7D7D7C7B7B7A7979787777767575747372727170706F6E6D
6D6C6B6B6A69686867666565646363626160605F5E5D5D5C5B5A5A59585757565554545352515150
4F4E4D4D4C4B4A4A4948474646454443434241403F3F3E3D3C3B3B3A393837373635343333323130
2F2F2E2D2C2B2B2A2928272726252423222221201F1E1D1D1C1B1A1918181716151413131211100F
0E0E0D0C0B0A090908070605
>
<
0000010101020202030304040505060607070808090A0A0B0B0C0C0D0E0E0F0F1011111213131415
151616171818191A1B1B1C1D1D1E1F1F202122222324242526272728292A2A2B2C2C2D2E2F303031
323333343536363738393A3A3B3C3D3E3E3F4041424243444546464748494A4B4B4C4D4E4F505051
5253545556565758595A5B5B5C5D5E5F6061626263646566676869696A6B6C6D6E6F707171727374
75767778797A7B7B7C7D7E7F80818283848586868788898A8B8C8D8E8F9091929394949596979899
9A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAAAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0
C1C2C3C4C5C6C7C8C9CACBCC
>
0
1 %_Br
[
0.45 0 0.75 0 1 50 100 %_Bs
0 0.02 0.8 0 1 50 64 %_Bs
0.05 0.7 0 0 1 57 0 %_Bs
BD
%AI5_EndGradient
%AI5_BeginGradient: (Purple, Red, Yellow)
(Purple, Red, Yellow) 0 3 Bd
[
0
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A
>
<
CCCCCCCDCDCDCDCDCECECECECECFCFCFCFD0D0D0D0D0D1D1D1D1D1D2D2D2D2D2D3D3D3D3D3D4D4D4
D4D5D5D5D5D5D6D6D6D6D6D7D7D7D7D7D8D8D8D8D8D9D9D9D9DADADADADADBDBDBDBDBDCDCDCDCDC
DDDDDDDDDDDEDEDEDEDFDFDFDFDFE0E0E0E0E0E1E1E1E1E1E2E2E2E2E2E3E3E3E3E4E4E4E4E4E5E5
E5E5E5E6E6E6E6E6E7E7E7E7E7E8E8E8E8E9E9E9E9E9EAEAEAEAEAEBEBEBEBEBECECECECECEDEDED
EDEEEEEEEEEEEFEFEFEFEFF0F0F0F0F0F1F1F1F1F1F2F2F2F2F3F3F3F3F3F4F4F4F4F4F5F5F5F5F5
F6F6F6F6F6F7F7F7F7F8F8F8F8F8F9F9F9F9F9FAFAFAFAFAFBFBFBFBFBFCFCFCFCFDFDFDFDFDFEFE
FEFEFEFFFFFF
>
0
1 %_Br
<
E5E4E3E2E1E0DFDEDDDCDBDAD9D8D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBE
BDBCBBBAB9B8B7B6B5B4B3B2B1B0AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A99989796
9594939291908F8E8D8C8B8A898887868584838281807F7E7D7C7B7A797877767574737271706F6E
6D6C6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A49484746
4544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F1E
1D1C1B1A191817161514131211100F0E0D0C0B0A09080706050403020100
>
<
E5E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9EAEAEAEA
EAEAEAEAEAEBEBEBEBEBEBEBEBEBECECECECECECECECECEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEE
EEEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F3F3F3
F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7
F7F7F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFCFC
FCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFF
>
<
00010203040405060708090A0B0C0C0D0E0F10111213141415161718191A1B1C1D1D1E1F20212223
242525262728292A2B2C2D2D2E2F30313233343535363738393A3B3C3D3D3E3F4041424344454546
4748494A4B4C4D4E4E4F50515253545556565758595A5B5C5D5E5E5F60616263646566666768696A
6B6C6D6E6E6F70717273747576767778797A7B7C7D7E7F7F80818283848586878788898A8B8C8D8E
8F8F90919293949596979798999A9B9C9D9E9F9FA0A1A2A3A4A5A6A7A7A8A9AAABACADAEAFAFB0B1
B2B3B4B5B6B7B8B8B9BABBBCBDBEBFC0C0C1C2C3C4C5C6C7C8C8C9CACBCC
>
0
1 %_Br
[
0 0.04 1 0 1 50 100 %_Bs
0 1 0.8 0 1 50 50 %_Bs
0.9 0.9 0 0 1 50 0 %_Bs
BD
%AI5_EndGradient
%AI5_BeginGradient: (Rainbow)
(Rainbow) 0 6 Bd
[
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
1
0
0
1 %_Br
1
<
0708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E
2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F50515253545556
5758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E
7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6
A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCE
CFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6
F7F8F9FAFBFCFDFEFF
>
0
0
1 %_Br
1
<
00000000000000000000000000000000000001010101010101010101010101010101010101010101
01010101010101010101010101010202020202020202020202020202020202020202020202020202
02020202020202020202030303030303030303030303030303030303030303030303030303030303
03030303030304040404040404040404040404040404040404040404040404040404040404040404
04040505050505050505050505050505050505050505050505050505050505050505050505050606
06060606060606060606060606060606060606060606060606060606060606060606070707070707
07070707070707070707070707070707
>
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
0
1 %_Br
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
0
1
0
1 %_Br
0
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
1
0
1 %_Br
[
0 1 0 0 1 50 100 %_Bs
1 1 0 0 1 50 80 %_Bs
1 0.0279 0 0 1 50 60 %_Bs
1 0 1 0 1 50 40 %_Bs
0 0 1 0 1 50 20 %_Bs
0 1 1 0 1 50 0 %_Bs
BD
%AI5_EndGradient
%AI5_BeginGradient: (Steel Bar)
(Steel Bar) 0 3 Bd
[
0
0
0
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
1 %_Br
0
0
0
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
1 %_Br
[
0 0 50 100 %_Bs
1 0 50 70 %_Bs
0 0 50 0 %_Bs
BD
%AI5_EndGradient
%AI5_BeginGradient: (White & Red Radial)
(White & Red Radial) 1 18 Bd
[
0
1
1
0
1 %_Br
0
1
1
0
1 %_Br
0
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
0
1 %_Br
0
0
0
0
1 %_Br
0
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
0
1 %_Br
0
1
1
0
1 %_Br
0
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
0
1 %_Br
0
0
0
0
1 %_Br
0
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
0
1 %_Br
0
1
1
0
1 %_Br
0
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
0
1 %_Br
0
0
0
0
1 %_Br
0
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
0
1 %_Br
0
1
1
0
1 %_Br
0
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
<
FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
0F0E0D0C0B0A09080706050403020100
>
0
1 %_Br
0
0
0
0
1 %_Br
0
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
0
1 %_Br
[
0 1 1 0 1 50 0 %_Bs
0 1 1 0 1 50 0 %_Bs
0 1 1 0 1 50 12.5 %_Bs
0 0 0 0 1 50 12.5 %_Bs
0 0 0 0 1 50 25 %_Bs
0 1 1 0 1 50 25 %_Bs
0 1 1 0 1 50 37.5 %_Bs
0 0 0 0 1 50 37.5 %_Bs
0 0 0 0 1 50 50 %_Bs
0 1 1 0 1 50 50 %_Bs
0 1 1 0 1 50 62.5 %_Bs
0 0 0 0 1 50 62.5 %_Bs
0 0 0 0 1 50 75 %_Bs
0 1 1 0 1 50 75 %_Bs
0 1 1 0 1 50 87.5 %_Bs
0 0 0 0 1 50 87.5 %_Bs
0 0 0 0 1 50 100 %_Bs
0 1 1 0 1 50 100 %_Bs
BD
%AI5_EndGradient
%AI5_BeginGradient: (Yellow & Orange Radial)
(Yellow & Orange Radial) 1 2 Bd
[
0
<
0001010203040506060708090A0B0C0C0D0E0F10111213131415161718191A1B1C1D1D1E1F202122
232425262728292A2B2B2C2D2E2F303132333435363738393A3B3C3D3E3E3F404142434445464748
494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60606162636465666768696A6B6C6D6E6F
707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C
>
<
FFFFFFFFFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F9F9
F9F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4F4F4F3F3F3F3F3F3F2F2F2F2
F2F2F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEEEEEDEDEDEDEDEDECECECECECEBEBEBEBEB
EBEAEAEAEAEAE9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E7E7E6E6E6E6E6E5
>
0
1 %_Br
[
0 0 1 0 1 52 19 %_Bs
0 0.55 0.9 0 1 50 100 %_Bs
BD
%AI5_EndGradient
%AI5_BeginGradient: (Yellow & Purple Radial)
(Yellow & Purple Radial) 1 2 Bd
[
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
<
1415161718191A1B1C1D1E1F1F202122232425262728292A2A2B2C2D2E2F30313233343536363738
393A3B3C3D3E3F40414142434445464748494A4B4C4D4D4E4F50515253545556575858595A5B5C5D
5E5F60616263646465666768696A6B6C6D6E6F6F707172737475767778797A7B7B7C7D7E7F808182
83848586868788898A8B8C8D8E8F90919292939495969798999A9B9C9D9D9E9FA0A1A2A3A4A5A6A7
A8A9A9AAABACADAEAFB0B1B2B3B4B4B5B6B7B8B9BABBBCBDBEBFC0C0C1C2C3C4C5C6C7C8C9CACBCB
CCCDCECFD0D1D2D3D4D5D6D7D7D8D9DADBDCDDDEDFE0E1E2E2E3E4E5E6E7E8E9EAEBECEDEEEEEFF0
F1F2F3F4F5F6F7F8F9F9FAFBFCFDFEFF
>
<
ABAAAAA9A8A7A7A6A5A5A4A3A3A2A1A1A09F9F9E9D9D9C9B9B9A9999989797969595949393929191
908F8F8E8D8D8C8B8B8A8989888787868585848383828181807F7F7E7D7D7C7B7B7A797978777776
7575747373727171706F6F6E6D6D6C6B6B6A6969686767666565646362626160605F5E5E5D5C5C5B
5A5A5958585756565554545352525150504F4E4E4D4C4C4B4A4A4948484746464544444342424140
403F3E3E3D3C3C3B3A3A3938383736363534343332323130302F2E2E2D2C2C2B2A2A292828272626
25242423222121201F1F1E1D1D1C1B1B1A1919181717161515141313121111100F0F0E0D0D0C0B0B
0A090908070706050504030302010100
>
0
1 %_Br
[
0 0.08 0.67 0 1 50 14 %_Bs
1 1 0 0 1 50 100 %_Bs
BD
%AI5_EndGradient
%AI5_BeginGradient: (Yellow, Violet, Orange, Blue)
(Yellow, Violet, Orange, Blue) 0 4 Bd
[
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
>
<
A1A1A1A1A2A2A2A2A3A3A3A3A4A4A4A4A4A5A5A5A5A6A6A6A6A7A7A7A7A8A8A8A8A9A9A9A9AAAAAA
AAAAABABABABACACACACADADADADAEAEAEAEAFAFAFAFB0B0B0B0B0B1B1B1B1B2B2B2B2B3B3B3B3B4
B4B4B4B5B5B5B5B6B6B6B6B6B7B7B7B7B8B8B8B8B9B9B9B9BABABABABBBBBBBBBCBCBCBCBCBDBDBD
BDBEBEBEBEBFBFBFBFC0C0C0C0C1C1C1C1C2C2C2C2C2C3C3C3C3C4C4C4C4C5C5C5C5C6C6C6C6C7C7
C7C7C8C8C8C8C8C9C9C9C9CACACACACBCBCBCBCCCCCCCCCDCDCDCDCECECECECECFCFCFCFD0D0D0D0
D1D1D1D1D2D2D2D2D3D3D3D3D4D4D4D4D4D5D5D5D5D6D6D6D6D7D7D7D7D8D8D8D8D9D9D9D9DADADA
DADADBDBDBDBDCDCDCDCDDDDDDDDDEDE
>
<
F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E4E3E2E1E0DFDEDDDCDBDAD9D8D7D6D5D4D3D2D1D0CF
CECDCCCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B4B3B2B1B0AFAEADACABAAA9
A8A7A6A5A4A3A2A1A09F9E9D9C9C9B9A999897969594939291908F8E8D8C8B8A8988878685848483
8281807F7E7D7C7B7A797877767574737271706F6E6D6C6C6B6A696867666564636261605F5E5D5C
5B5A59585756555454535251504F4E4D4C4B4A494847464544434241403F3E3D3C3C3B3A39383736
3534333231302F2E2D2C2B2A29282726252424232221201F1E1D1C1B1A191817161514131211100F
0E0D0C0C0B0A09080706050403020100
>
0
1 %_Br
<
9C9B9A9A9998989796969595949393929191908F8F8E8E8D8C8C8B8A8A8989888787868585848383
82828180807F7E7E7D7C7C7B7B7A797978777776757574747372727170706F6E6E6D6D6C6B6B6A69
6968676766666564646362626161605F5F5E5D5D5C5B5B5A5A595858575656555454535352515150
4F4F4E4D4D4C4C4B4A4A4948484746464545444343424141403F3F3E3E3D3C3C3B3A3A3939383737
36353534333332323130302F2E2E2D2C2C2B2B2A292928272726252524242322222120201F1E1E1D
1D1C1B1B1A191918171716161514141312121111100F0F0E0D0D0C0B0B0A0A090808070606050404
030302010100
>
<
F5F4F4F4F3F3F3F2F2F2F1F1F1F0F0F0EFEFEFEEEEEEEDEDEDECECECEBEBEAEAEAE9E9E9E8E8E8E7
E7E7E6E6E6E5E5E5E4E4E4E3E3E3E2E2E2E1E1E1E0E0E0DFDFDEDEDEDDDDDDDCDCDCDBDBDBDADADA
D9D9D9D8D8D8D7D7D7D6D6D6D5D5D5D4D4D3D3D3D2D2D2D1D1D1D0D0D0CFCFCFCECECECDCDCDCCCC
CCCBCBCBCACACAC9C9C8C8C8C7C7C7C6C6C6C5C5C5C4C4C4C3C3C3C2C2C2C1C1C1C0C0C0BFBFBFBE
BEBEBDBDBCBCBCBBBBBBBABABAB9B9B9B8B8B8B7B7B7B6B6B6B5B5B5B4B4B4B3B3B3B2B2B1B1B1B0
B0B0AFAFAFAEAEAEADADADACACACABABABAAAAAAA9A9A9A8A8A8A7A7A6A6A6A5A5A5A4A4A4A3A3A3
A2A2A2A1A1A1
>
<
000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
F0F1F2F3F4F5
>
<
03030303030202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020201010101010101010101010101010101010101
01010101010101010101010101010101010101010101010101010101010101010101010101010101
01010101010101010101010101010101010101010101010101010101010101010101010101000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000
>
1 %_Br
<
0D0D0E0F0F10101111121313141415161617171819191A1A1B1C1C1D1D1E1E1F2020212122232324
2425262627272828292A2A2B2B2C2D2D2E2E2F30303131323333343435353637373838393A3A3B3B
3C3D3D3E3E3F3F404141424243444445454647474848494A4A4B4B4C4C4D4E4E4F4F505151525253
54545555565757585859595A5B5B5C5C5D5E5E5F5F60616162626363646565666667686869696A6B
6B6C6C6D6E6E6F6F70707172727373747575767677787879797A7B7B7C7C7D7D7E7F7F8080818282
8383848585868687878889898A8A8B8C8C8D8D8E8F8F90909192929393949495969697979899999A
9A9B9C
>
<
08090A0B0C0D0E0F0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E
2F303132333435363738393A3B3C3D3E3F40404142434445464748494A4B4C4D4E4F505152535455
565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717172737475767778797A7B7C
7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A2A3
A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACB
CCCDCECFD0D1D2D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2
F3F4F5
>
<
F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8D7D6D5D4D3D2D1D0CFCECDCCCB
CAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0AFAEADACABAAA9A8A7A6A5A4A3
A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A898887868584838281807F7E7D7C7B
7A797877767574737271706F6E6D6C6B6A696867666564636261605F5E5D5C5B5A59585756555453
5251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B
2A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A09080706050403
020100
>
<
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000101010101010101010101010101010101010101010101010101010101010101
01010101010101010101010101010101010101010101010101010101010101010101010101010101
01010101010101010101010101010101010101010101010202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020202
02020202020202020202020202020202020202020202020202020202020202020202020202020303
030303
>
1 %_Br
[
1 0.87 0 0 1 50 95 %_Bs
0 0.63 0.96 0 1 50 65 %_Bs
0.61 0.96 0 0.01 1 50 35 %_Bs
0.05 0.03 0.95 0 1 50 5 %_Bs
BD
%AI5_EndGradient
%AI5_End_NonPrinting--
%AI5_BeginPalette
0 0 Pb
0 0 0 0 k
Pc
0 0 0 1 k
Pc
0 0.45 0.6 0 k
Pc
0 0.5 0.05 0 k
Pc
0 0.9 1 0 k
Pc
1 0.2 1 0 k
Pc
1 0.4 0.15 0 k
Pc
0.2 0 1 0 k
Pc
0.25 1 0.25 0 k
Pc
0.4 0.4 0.4 0 k
Pc
0.4 0.7 1 0 k
Pc
0.75 0.9 0 0 k
Pc
1 0 0.55 0 (Aqua) 0 x
Pc
1 0.5 0 0 (Blue) 0 x
Pc
0.5 0.4 0.3 0 (Blue Gray) 0 x
Pc
0.8 0.05 0 0 (Blue Sky) 0 x
Pc
0.5 0.85 1 0 (Brown) 0 x
Pc
1 0.9 0.1 0 (Dark Blue) 0 x
Pc
1 0.55 1 0 (Forest Green) 0 x
Pc
0.05 0.2 0.95 0 (Gold) 0 x
Pc
0.75 0.05 1 0 (Grass Green) 0 x
Pc
0 0.45 1 0 (Orange) 0 x
Pc
0.15 1 1 0 (Red) 0 x
Pc
0.45 0.9 0 0 (Violet) 0 x
Pc
Bb
2 (Black, White) -4220 4422 0 0 1 0 0 1 0 0 Bg
0 BB
Pc
Bb
2 (Chrome) -4220 4422 0 0 1 0 0 1 0 0 Bg
0 BB
Pc
Bb
2 (Green, Blue) -4220 4422 0 0 1 0 0 1 0 0 Bg
0 BB
Pc
Bb
2 (Orange, Green, Violet) -4220 4422 0 0 1 0 0 1 0 0 Bg
0 BB
Pc
Bb
2 (Pink, Yellow, Green ) -4220 4422 0 0 1 0 0 1 0 0 Bg
0 BB
Pc
Bb
2 (Purple, Red, Yellow) -4220 4422 0 0 1 0 0 1 0 0 Bg
0 BB
Pc
Bb
2 (Rainbow) -4220 4422 0 0 1 0 0 1 0 0 Bg
0 BB
Pc
Bb
2 (Steel Bar) -4220 4422 0 0 1 0 0 1 0 0 Bg
0 BB
Pc
Bb
0 0 0 0 Bh
2 (White & Red Radial) -4220 4422 0 0 1 0 0 1 0 0 Bg
0 BB
Pc
Bb
0 0 0 0 Bh
2 (Yellow & Orange Radial) -4220 4422 0 0 1 0 0 1 0 0 Bg
0 BB
Pc
Bb
0 0 0 0 Bh
2 (Yellow & Purple Radial) -4220 4422 0 0 1 0 0 1 0 0 Bg
0 BB
Pc
Bb
2 (Yellow, Violet, Orange, Blue) -4220 4422 0 0 1 0 0 1 0 0 Bg
0 BB
Pc
(Arrow1.2.out/in) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Arrow1.2.side) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Bricks) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Checks) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Confetti) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(DblLine1.2.inner) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(DblLine1.2.outer) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(DblLine1.2.side) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Diamonds) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Hexagon) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Laurel.inner) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Laurel.outer) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Laurel.side) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Leaves-fall) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Polka dots) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Random circles) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Rope.side) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Scales) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(SolidStar.side) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Stars) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Stripes) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(TriBevel.outer) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(TriBevel.side) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
(Waves-scroll) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
1 1 1 1 k
Pc
1 g
Pc
0 g
Pc
0.75 g
Pc
0.5 g
Pc
0.25 g
Pc
0 g
Pc
Bb
2 (Black & White) -4220 4422 0 0 1 0 0 1 0 0 Bg
0 BB
Pc
0.25 0 0 0 k
Pc
0.5 0 0 0 k
Pc
0.75 0 0 0 k
Pc
1 0 0 0 k
Pc
0.25 0.25 0 0 k
Pc
0.5 0.5 0 0 k
Pc
0.75 0.75 0 0 k
Pc
1 1 0 0 k
Pc
0 g
Pc
0 0.25 0 0 k
Pc
0 0.5 0 0 k
Pc
0 0.75 0 0 k
Pc
0 1 0 0 k
Pc
0 0.25 0.25 0 k
Pc
0 0.5 0.5 0 k
Pc
0 0.75 0.75 0 k
Pc
0 1 1 0 k
Pc
0 g
Pc
0 0 0.25 0 k
Pc
0 0 0.5 0 k
Pc
0 0 0.75 0 k
Pc
0 0 1 0 k
Pc
0.25 0 0.25 0 k
Pc
0.5 0 0.5 0 k
Pc
0.75 0 0.75 0 k
Pc
1 0 1 0 k
Pc
(Yellow Stripe) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
Pc
0.25 0.125 0 0 k
Pc
0.5 0.25 0 0 k
Pc
0.75 0.375 0 0 k
Pc
1 0.5 0 0 k
Pc
0.125 0.25 0 0 k
Pc
0.25 0.5 0 0 k
Pc
0.375 0.75 0 0 k
Pc
0.5 1 0 0 k
Pc
0 0.25 0.125 0 k
Pc
0 0.5 0.25 0 k
Pc
0 0.75 0.375 0 k
Pc
0 1 0.5 0 k
Pc
0 0.125 0.25 0 k
Pc
0 0.25 0.5 0 k
Pc
0 0.375 0.75 0 k
Pc
0 0.5 1 0 k
Pc
0.125 0 0.25 0 k
Pc
0.25 0 0.5 0 k
Pc
0.375 0 0.75 0 k
Pc
0.5 0 1 0 k
Pc
0.25 0 0.125 0 k
Pc
0.5 0 0.25 0 k
Pc
0.75 0 0.375 0 k
Pc
1 0 0.5 0 k
Pc
0.25 0.125 0.125 0 k
Pc
0.5 0.25 0.25 0 k
Pc
0.75 0.375 0.375 0 k
Pc
1 0.5 0.5 0 k
Pc
0.25 0.25 0.125 0 k
Pc
0.5 0.5 0.25 0 k
Pc
0.75 0.75 0.375 0 k
Pc
1 1 0.5 0 k
Pc
0.125 0.25 0.125 0 k
Pc
0.25 0.5 0.25 0 k
Pc
0.375 0.75 0.375 0 k
Pc
0.5 1 0.5 0 k
Pc
0.125 0.25 0.25 0 k
Pc
0.25 0.5 0.5 0 k
Pc
0.375 0.75 0.75 0 k
Pc
0.5 1 1 0 k
Pc
0.125 0.125 0.25 0 k
Pc
0.25 0.25 0.5 0 k
Pc
0.375 0.375 0.75 0 k
Pc
0.5 0.5 1 0 k
Pc
0.25 0.125 0.25 0 k
Pc
0.5 0.25 0.5 0 k
Pc
0.75 0.375 0.75 0 k
Pc
1 0.5 1 0 k
Pc
PB
%AI5_EndPalette
%%EndSetup
%AI5_BeginLayer
1 1 1 1 0 0 0 79 128 255 Lb
(\203\214\203C\203\204\201| 1) Ln
0 A
0 O
0 g
800 Ar
2 J 0 j 1 w 2 M []0 d
%AI3_Note:
0 D
0 XR
101.7998 199.2002 m
106.2998 199.1001 111.2998 198.5 115.7998 197.8999 C
115.7998 197.7998 L
122.2998 196.2998 129.7998 194.7998 135.7998 191.6001 C
131.5 191.2002 127.8999 190.8999 124.1001 191.8999 C
122 189.7002 119.2002 194.1001 117.7002 190.7998 C
117 191.2002 115.5 192.3999 115.2002 191.2998 C
114.7998 191.1001 114.5 190.1001 113.8999 190.2998 C
112.3999 191.2002 112.1001 193.7998 110.3999 194 C
109.8999 193.1001 110.2002 192.3999 110.3999 191.7998 C
108.5 190.1001 107.7998 193.1001 106.2998 193.8999 C
105.3999 193.2998 105.5 193.1001 105.3999 192.1001 C
104.2002 192.1001 102.7002 193 102 193.7002 C
101.3999 192.2002 100.3999 192.5 99.2002 193 C
96.7998 195.1001 L
95.2002 195.2002 96.2998 193.5 95.6001 193 C
94.2998 193.1001 92.8999 194.1001 92.2002 195.3999 C
91.7998 195.2998 90.8999 195.7002 91 194.7998 C
91.2998 193.6001 91.2002 193.7998 90.7998 193 C
89 192.3999 87.7998 196 86.6001 193.2002 C
85.2002 192.6001 84.3999 194 82.8999 194 C
83.1001 193.1001 82 193.1001 81.3999 193 C
80.8999 193.1001 80.2002 193.2998 79.6001 193.6001 C
79 193.7998 78.6001 194.7002 77.7998 194.5 C
77.7002 193.7002 77.2002 193.2002 77.5 192.3999 C
76.3999 192.1001 75.2998 192.2002 74.2002 193.2002 C
72.8999 193.2002 73.6001 191.2002 72.3999 191.3999 C
71.7998 191 71.2002 191.5 70.3999 191.8999 C
69.7002 192.2002 69.2998 191.3999 69.2002 190.8999 C
68.5 190.3999 67.1001 189.5 65.8999 190.2998 C
65.6001 190.6001 L
64.2998 187.7998 60.6001 190 58.6001 187.7002 C
58.2998 186.2002 56.8999 187.8999 55.7998 187.6001 C
52.8999 186.1001 51.6001 182 48 183.1001 C
47.7998 182.7998 L
47.6001 182.8999 L
42.1001 178.6001 36.1001 175.5 30.7998 171.2002 C
30.7998 171.6001 L
32.2002 172.7002 33.1001 174.2002 34.3999 175 C
35.2002 175.7998 36.7998 176.7002 37.7002 177.7998 C
37.7002 177.7002 L
38.3999 178.1001 39.3999 179.6001 40.2998 180 C
40.3999 179.8999 L
42 181.3999 44.8999 182.5 46.6001 184.1001 C
47.7002 184.3999 48.6001 185.2998 49.6001 185.6001 C
49.5 186.1001 50.1001 186.2998 50.3999 186.2002 C
50.2998 186.3999 L
52.3999 187.7998 55.2998 188.7998 56.8999 190 C
57.2002 189.7002 57.7002 189.8999 58 190.2002 C
58.5 190.5 59.5 191.1001 60.3999 191 C
61.3999 192.6001 63.5 192.3999 64.8999 193.1001 C
64.8999 193.2998 L
65.6001 193.2998 L
65.6001 193.6001 L
67.8999 194.1001 69.8999 194.8999 72.2002 195.3999 C
72.6001 195.7002 L
77.1001 196.3999 81.1001 197.7998 85.3999 198.3999 C
85.8999 198.3999 86.2998 198 86.6001 198.6001 C
86.6001 198.5 L
90.6001 198.7998 94 199.2998 98.2002 199.3999 C
99.2002 199 100.7002 199.2998 101.7998 199.2002 C
f
151.8999 193.7002 m
151.6001 192.6001 152.5 193.2998 152.5 192.5 C
152.2998 190.7002 152.3999 189.3999 153.6001 187.8999 C
153.7998 187.7002 L
154 187.5 155.3999 187.6001 155.8999 187.6001 C
161.2002 188.8999 167 187.8999 171.7002 188.5 C
171.7002 188.3999 L
173.6001 188 176.5 189.2002 178.1001 187.6001 C
178.2998 187.7998 L
179 186.8999 179.5 185.7998 179 184.7998 C
179.2998 183 179.2002 181.8999 179.2002 180.2002 C
179.2998 179.6001 178.7002 178.5 179.2998 178 C
179.6001 177.5 178.6001 177.1001 179.2998 176.6001 C
178.7002 175.6001 178.7998 174.5 179.2002 173.2998 C
179 173.2998 L
178.7002 171 179 169 178.8999 166.2998 C
178.5 166 177.7998 165 176.8999 165 C
176 165.2998 174.5 165.2002 174.3999 166.2998 C
174.5 167.1001 174.1001 168.2002 173.8999 168.7002 C
173.7998 170.5 174 172.6001 173.7998 174.6001 C
173.8999 174.6001 L
173.8999 181.2002 L
170.7002 183.7998 166.5 182.2998 163 182.5 C
161.2998 180.5 160.6001 176.3999 161.2998 173.6001 C
161.6001 173.5 L
160.5 173.1001 161.7998 172.7002 161.6001 172 C
162 169.7998 161.7002 168.7998 161.6001 166.3999 C
160.8999 165.7002 160.2002 165.1001 159.2002 164.6001 C
158.2002 164.7998 156.7002 165.3999 156.1001 166.7002 C
156.2998 167.3999 155.8999 168.1001 155.5 168.5 C
155.6001 170.1001 155.3999 172.1001 156 173.6001 C
155.5 174.2002 156.6001 174.8999 155.7998 175.2002 C
156.1001 175.7002 L
156.1001 180.3999 L
155.2998 181.2998 155.3999 182.3999 154 182.8999 C
152.5 183.5 151.1001 182.7002 149.5 182.6001 C
147.6001 182.7002 145.8999 183.3999 144.3999 182.2002 C
141.6001 179.5 142.8999 174.6001 143.2998 171.6001 C
143.2002 169.5 143.7998 167 142.2002 165.3999 C
141.3999 164.7002 140.2998 164.5 139.3999 164.6001 C
138 165.2002 139.6001 166.6001 138.2002 167.3999 C
138.2002 167.7998 139 168.2002 138.2002 168.5 C
138.3999 170.7998 138.5 173.3999 138 175.3999 C
138.2002 175.3999 L
138.2998 176.2998 138.2002 176.2002 138.1001 177.1001 C
138 177.1001 L
138.6001 178 137.2998 178.6001 137.7998 179.7998 C
137.3999 179.8999 L
137.5 179.8999 L
137.2002 180.6001 137.2002 181.5 136.7002 182.2002 C
133.5 181.7002 127 184.1001 125.5 179.2002 C
125.7002 177.8999 125.2002 175.6001 125.5 173.7998 C
125.3999 171.2002 125.2998 167.8999 125.2002 166.2002 C
125.2998 166.2998 L
125 166.6001 125.6001 164.7998 124.3999 165 C
123.5 164.5 121.8999 164.5 121 165 C
120.3999 166.1001 120.7998 168 120 169 C
120.2998 172.6001 119.3999 175.6001 120.3999 178.8999 C
120 178.7998 L
120.2002 179.7002 119.7998 180.2002 120.5 181.2002 C
120.5 183.3999 120.5 183.6001 120.5 186 C
121 186.6001 121.3999 186.2002 121.7998 187.1001 C
121.7998 187 L
122.5 188.5 123.8999 187 125.2002 187.1001 C
131.2002 187.8999 136.7002 187.2998 142.1001 187.8999 C
143.5 188.2002 144.8999 187.6001 146.2998 188.2998 C
146.3999 189.2002 146.6001 190.1001 146.8999 190.6001 C
146.7002 190.6001 147.2002 192.2002 147 192.6001 C
147.3999 193.3999 147.8999 194.2002 148.8999 194.7998 C
150.1001 195.2002 151.2998 194.1001 151.8999 193.7002 C
f
87.7002 185.2998 m
88.2998 184.7002 88.2998 184 88.1001 183.3999 C
87.6001 181.1001 L
87.7998 180.7998 87.6001 180 87.7002 179.6001 C
87.6001 179.7998 L
87 178.3999 87.2002 177.1001 87 175.7998 C
86.7002 174.8999 87.2998 174 86.6001 173.2002 C
86.8999 171.7998 86.6001 170.5 86.8999 169.3999 C
87.2998 168.8999 87 167.5 87.5 166.8999 C
87.7998 166.5 88.7998 166.5 88.8999 167.3999 C
88.8999 168.6001 L
89.1001 168.5 89.2002 168.7002 89.2998 168.7998 C
89 169.1001 L
89.6001 169.1001 88.8999 170 89.2002 170.3999 C
88.7998 170.7998 L
89.7998 170.7998 88.8999 171.6001 89.2998 172.1001 C
89 172.2998 L
89.7002 172.7002 89.2002 173.5 89.8999 173.8999 C
89.6001 174.5 L
89.7998 174.3999 89.7998 174.5 89.8999 174.6001 C
89.3999 176 90.6001 177.8999 90.7002 179.2998 C
91.1001 180.8999 92.2998 183.1001 92.5 184.2998 C
93.1001 185 L
93.5 184.7002 L
93.2998 182 92.8999 178.7998 92.8999 176.2002 C
92.3999 174.5 92.7002 173.3999 93.1001 172 C
93.3999 172 L
93 171.6001 L
93.8999 171.1001 93.5 172 94.1001 172.2998 C
93.3999 173.1001 95.1001 173.3999 94.3999 174.2002 C
94.3999 174.1001 94.5 174.1001 94.6001 174 C
94.5 174.7002 95.7002 175.7002 95.2998 177 C
96.3999 177.1001 94.8999 178.5 96.2002 178.6001 C
96.3999 179.8999 L
96.6001 179.6001 L
96.7002 181.1001 97.2998 181.7998 98 183.1001 C
97.6001 183.7002 98.5 184 98.5 184.3999 C
99 184.3999 L
99.1001 182.5 98.8999 180.8999 98.8999 179.2998 C
98.2998 177.5 98.7998 174.8999 98.2002 173.2002 C
98.5 172.6001 98.7998 172.2998 99.6001 172.2998 C
99.8999 173.5 100.5 174.2998 100.3999 175.2998 C
101.2998 175.8999 101.2002 177.6001 101.5 178.2998 C
101.7002 178.5 102 178.2998 102.1001 178.6001 C
101.7998 179.3999 102.7002 180.7002 103.2002 181.3999 C
102.8999 182.3999 103.7998 182.5 103.7998 183.2002 C
103.7998 181.7002 104.7998 180.6001 103.7998 179.3999 C
104.1001 177.2998 103.2998 175.7002 104.2998 173.7998 C
104.6001 174 105 174.1001 104.8999 174.6001 C
104.8999 174.3999 105.2002 174.3999 105.2002 174.6001 C
105.3999 175 105.2998 175.6001 105.3999 176 C
105.5 175.8999 L
105.8999 176.2002 105.7002 177.2998 106 178 C
106.2002 177.8999 106.3999 178.1001 106.2998 178.2998 C
106.3999 178.6001 107.1001 179.2002 107 179.5 C
107.2002 179.3999 L
107.2002 180.1001 108.2998 180.1001 108.2002 181.1001 C
108.6001 181.7002 L
108.7998 181.3999 109 180.7002 109.3999 180.1001 C
108.7002 180 109.3999 179.2998 108.7998 179.2998 C
109 177.2998 107.6001 175.1001 108.7002 173.7998 C
108.3999 173.5 108.8999 173.2002 109.1001 173 C
109.7998 173.7002 110.6001 175 111.1001 176 C
111 176.7002 111.7998 177.2002 111.7002 177.7998 C
112.2998 177.7998 L
112.6001 179.5 L
112.6001 179.2998 L
112.8999 179.3999 113 180.1001 113.3999 180.6001 C
113.3999 180.5 L
113.7998 180.8999 114.5 180.2002 114.2002 179.7998 C
113.6001 178.3999 113.5 176.7998 113 175.2998 C
113.1001 174.3999 113.1001 173.6001 112.6001 172.8999 C
113.3999 172.2002 L
113.7002 172.5 114.2002 172.8999 113.8999 173.2998 C
115 173.3999 114.5 174.1001 115.2998 174.7998 C
115.3999 175.2002 116.2002 175.6001 116.2002 176.3999 C
116.5 172.2998 115.8999 168.2998 116.2998 164 C
116 163.7998 L
113.2998 165.8999 109 165.7002 105.5 165.7002 C
98 163.1001 91.5 155.5 82.8999 159.1001 C
80.2002 161.8999 77.6001 167.5 72.5 165.7002 C
65.2998 163.8999 58.5 157.2002 50.8999 154.7002 C
46.8999 153.7998 43.2998 151.8999 39.5 151.7998 C
35.6001 152.5 30.3999 152.8999 28 149.6001 C
27.6001 148 26.5 145.8999 26.7998 144.1001 C
25.8999 141.5 24.3999 139.5 22 139.1001 C
17.2002 137.2002 13.6001 133.3999 9.2002 130.7002 C
9 131 9.2998 131.7002 8.7998 131.8999 C
9.5 132.7998 L
9.7998 133 9.5 134.2002 10.3999 134.3999 C
10.1001 134.7998 L
10.8999 135 12.2998 134.7002 12.6001 135.7998 C
12.5 138.1001 L
12.6001 138.1001 L
12.6001 138.3999 L
13 138.3999 L
12.5 139 13.1001 138.2002 13.2002 139.1001 C
13.5 139.7998 12.5 140.7002 13.7002 141 C
14.2998 140.6001 14.7002 140.7998 15.5 141 C
16.1001 141.3999 15.7998 142.8999 15.7002 143.2998 C
14.7002 144 16 144.2998 16.2998 145.1001 C
17 144.7998 16.8999 143.7002 17.7998 144.2002 C
17.7998 144.1001 17.7002 143.8999 17.8999 143.8999 C
18.1001 144.2002 18.7998 144.5 18.7002 145.2002 C
18.5 146.3999 18.2002 147.8999 19.1001 148.7002 C
19.6001 147.8999 20.5 147.7002 20.6001 146.8999 C
21 146.8999 L
21.2002 149 L
21.3999 148.8999 L
21.3999 150.1001 21 149.3999 21.7998 150.5 C
21.3999 151.1001 L
21.7002 150.8999 21.7002 151.2998 21.7998 151.3999 C
21.6001 151.7998 21.6001 152.2002 21.7002 152.6001 C
21.7998 151.2998 22.7998 151.6001 23.2002 150.5 C
23.6001 150.3999 24.5 150.3999 24.5 151.2002 C
25.2002 151.8999 24.1001 152.7002 24.5 153.6001 C
24.1001 154 L
24.2002 154 L
24.3999 155.8999 L
25 155.6001 25.7998 153.1001 27 153.7002 C
27.2998 154.2998 27.1001 155.2002 27.3999 155.7998 C
26.8999 156.7002 27.2998 157.5 27.1001 158.7998 C
27.3999 158.2998 L
27.6001 158.5 L
28 158 L
27.7998 157.8999 L
29 156.5 L
28.8999 156.3999 L
29.3999 155.8999 L
30.2998 157 29.7002 159.3999 29.8999 160.8999 C
31.2998 159 L
31.3999 159.1001 L
31.2002 158.5 32.3999 158.2002 32.6001 157.7002 C
33.3999 158.2998 L
32.8999 158.7998 33.2998 161.1001 32.5 161.6001 C
32.8999 162.5 32.1001 162.6001 32 163.3999 C
32.2002 163.2998 L
32.3999 163.5 32.2002 163.8999 32.2998 164.2002 C
32 164.2002 L
32 164.8999 L
32.3999 164.2998 L
32.6001 164.7998 L
32.6001 163.2998 33.8999 163.7002 34.1001 162.3999 C
34.2002 162.5 L
34.5 161.1001 35.3999 160.3999 35.8999 159.1001 C
35.8999 158.5 36.2998 157.8999 36.7998 157.7998 C
37.8999 158.3999 37.2998 159.7998 37.2998 160.8999 C
37.2998 161.5 L
37.2002 161.3999 L
36.6001 161.7998 37.5 163.6001 36.3999 164 C
36.3999 167.2998 L
36.6001 166.7998 36.5 166.6001 36.7002 166.1001 C
36.8999 166.1001 36.7998 166.2998 36.7998 166.3999 C
38.7998 163.8999 39.2002 160.8999 42 159.1001 C
42.5 160.2002 41.7998 162.3999 41.3999 163.7998 C
41.2002 163.7002 41.2998 163.3999 41.2998 163.2002 C
41.7002 164.7002 40.5 165.5 40.6001 167 C
40.1001 167.2002 40.5 167.5 40.6001 167.7998 C
40 168.2002 40 169.2998 40.1001 169.8999 C
41.3999 170.3999 41 168.2002 41.8999 168.1001 C
42 167.2998 42.3999 166.7998 43 166.3999 C
43.2998 166.2002 42.3999 165.2002 43.3999 165.3999 C
43.1001 165 43.7998 164.7998 43.7998 164.5 C
44 164.5 L
44.2002 163.7002 45.5 161.7998 46.2002 161.5 C
46.2002 160.8999 46.7998 160.6001 47.2998 160.2998 C
47.8999 160.7998 47.5 161.7998 47.7998 162.1001 C
47.2002 162.3999 47.7998 162.7998 47.3999 163.2002 C
47.5 163.2002 L
47.2002 164.1001 46.6001 164.2998 47 165.3999 C
46 165.2002 47 166.2998 46.2002 166.7002 C
46.2998 167.3999 45.3999 168.8999 45 169.7002 C
44.7002 170.7998 45.2998 172.1001 44.8999 173 C
45.2002 173.1001 45.3999 173.3999 45.6001 173.6001 C
45.7998 173 L
46.1001 173.2998 L
45.7998 172.2998 47.1001 172 46.7998 171 C
47.5 170.1001 47.7002 169.3999 48.5 168.1001 C
48.1001 167.5 49.3999 167.2998 49.2998 167 C
49.3999 167.2002 49.3999 165.3999 49.8999 166.1001 C
50.7002 165.1001 50.7998 163.2002 52.1001 162.7002 C
52.6001 162.7002 52.6001 163.7002 52.6001 164 C
51.6001 165.5 52.3999 167.7002 51.5 169.3999 C
51.3999 170.6001 50.7002 172.2998 51.1001 173.2002 C
50.8999 173.3999 L
51.2998 173.8999 50.6001 175.1001 51 175.8999 C
52.6001 175.8999 52.6001 173.7002 53.7998 172.6001 C
53.7998 171.7002 53.8999 170.1001 55 169.2998 C
54.6001 169 55 168.7002 55.1001 168.3999 C
55.3999 168.2998 55.2998 167.3999 55.7998 167.2998 C
55.8999 166.8999 56 166.1001 56.8999 166.1001 C
57.1001 166.2998 57.7002 166.2998 57.5 166.7998 C
57.6001 166.7998 57.7002 166.7002 Y
58.1001 167 57.7998 167.2998 57.6001 167.5 C
57.7002 167.5 L
57.6001 167.8999 L
57.7002 167.8999 57.7998 167.7998 Y
57.7998 168.5 L
57.5 168.5 L
57.6001 168.1001 57.8999 169.2002 57.5 169.2998 C
57.5 169.7002 57.3999 170 57.2002 170.2998 C
57.3999 170.2002 L
57.1001 170.7002 57.5 171.1001 56.8999 171.6001 C
57 171.6001 L
57.5 173.3999 55.6001 175.2002 56.6001 177.1001 C
56.6001 177.8999 56.2002 178 56.5 178.7998 C
58.2002 179.5 57.7002 177.1001 58.2998 176.2998 C
58.3999 176.3999 L
58.7002 175.8999 58.7998 175 59.2002 174.7998 C
59.6001 174.2002 58.2002 173.5 59.3999 173 C
59.5 173.2002 L
59.5 172.6001 60.7002 171.7998 60.5 171 C
60.8999 170.8999 60.7002 170.2002 61 169.8999 C
61.7998 169.1001 L
62.2998 169.2002 62.2002 169.7002 62.2998 170 C
61.8999 170.5 62.3999 170.8999 62.2002 171.5 C
62.2998 171.5 L
62.3999 172.1001 62.1001 173.1001 62.3999 173.8999 C
62 174.2002 L
62.8999 176.2002 61.7998 178.3999 62.2998 180.6001 C
62.7998 180.1001 62.8999 181.1001 63.3999 181 C
63.7002 179.3999 64.2002 178.2998 64.2998 176.6001 C
64.3999 176.7998 L
64.2002 175.6001 65.2002 174.2998 65.2998 172.8999 C
65.6001 172.8999 L
65.5 172.2998 65.7002 171.8999 65.8999 171.3999 C
66.2998 171.1001 67 171.6001 66.7002 172.1001 C
67 171.7998 L
67.2998 172.8999 67.2998 175.1001 67 176.2998 C
67.3999 177.3999 67.2002 178.7998 67.1001 180.1001 C
67.2002 180.1001 67.3999 180.1001 67.3999 180.2002 C
67.1001 180.5 67.8999 180.2998 67.7002 180.7998 C
67.7002 181.3999 L
67.8999 181.3999 68 181.7002 68.2002 181.7998 C
68.2002 182 67.6001 182.3999 68.2002 182.3999 C
69.1001 182 68.7002 180.5 69.5 179.5 C
69.3999 177 70.1001 175.6001 70.2002 173.2002 C
70.2998 173.1001 70.3999 173.2002 70.3999 173.2998 C
70.2998 173.2998 70.6001 172.7998 70.8999 172.6001 C
71.7002 172.6001 71.1001 172.6001 71.6001 172.3999 C
72.1001 173 72.1001 173.5 72.1001 174.2002 C
72.3999 174 L
72.6001 174.2002 L
72.2002 175 72.7998 176.3999 72.6001 177 C
73.1001 178.2998 72.7998 179.1001 73.6001 180.2002 C
73.2002 180.2002 L
73.6001 181 73.2002 182.5 74.2002 183 C
74.2002 183.7998 L
74.5 184.2002 74.8999 183.6001 75.2002 184 C
75.1001 182.2002 75.8999 180.2998 75.7002 178.3999 C
75.7002 178.6001 75.7998 178.7998 75.6001 178.8999 C
75 177.2002 76.1001 175.7002 76.1001 174 C
76.3999 173.7998 76.7002 173.6001 76.7998 173.2002 C
77.5 173.3999 77.2998 173.8999 77.5 174.6001 C
77.7002 174.6001 77.8999 174.5 78 174.7002 C
77.5 174.7998 77.8999 175.6001 78.1001 175.8999 C
77.8999 176 77.8999 176.2998 78.1001 176.3999 C
78.3999 177.3999 78.6001 178.2998 78.5 179.3999 C
78.6001 179.2998 L
79.2998 180.7002 79 181.7002 79.7998 182.7998 C
80 183.6001 80.7002 184.2998 80.7998 184.8999 C
81.1001 181 80.6001 176.7002 81 172.8999 C
81.1001 173 81.1001 173.1001 81.2002 173 C
81.1001 172.6001 81.2002 172.5 81.2002 172 C
81.1001 172.1001 81 172.1001 V
80.5 171.7002 81.3999 171.7002 81.2002 171.3999 C
81.1001 170.8999 81.3999 170.3999 81.5 169.8999 C
81.7998 169.7998 L
81.3999 169.6001 L
82.2002 168.7002 L
82 168.5 L
82.1001 168.3999 82.1001 168.2002 82.2998 168.2002 C
83.1001 168.6001 82.2998 169 82.8999 169.2998 C
83.2002 170.7998 83.3999 171.3999 83.5 172.6001 C
83.7998 173.6001 84.1001 174.3999 84.1001 175.3999 C
83.7002 176.1001 84.8999 176.5 84.5 177.3999 C
84.7998 178.7998 85.7998 180 85.7002 181.3999 C
85.7998 181.2998 L
86.1001 181.7002 86.2002 182.3999 86.2998 182.7998 C
86.5 183.3999 87.2998 184.1001 87.1001 185.2998 C
87.3999 184.8999 L
87.7002 185.2998 L
f
106.2002 162.7002 m
106.2998 159.5 105.3999 156.8999 106.7998 154.2998 C
108.5 153.1001 107.7002 155.6001 108.3999 156 C
108 156 L
108.3999 156.5 L
108.7002 157.2002 107.5 158.2002 108.2002 159 C
107.8999 160.7998 108.1001 161.7998 109.6001 162.7998 C
109.8999 159.7002 110.3999 158 110.5 154.7002 C
110.7998 154.7002 L
110.7002 154.1001 110.7002 153.2002 111.2002 152.8999 C
111.7998 152.7002 111.1001 151.8999 111.7998 151.8999 C
112.2002 152.2998 L
112 152.2998 112.1001 152.5 112.1001 152.6001 C
112.2002 152.5 L
112.2998 152.7998 113.1001 153.1001 112.3999 153.5 C
112.7998 153.5 L
112.7002 155.2002 113.5 157 113.2998 158.7998 C
113.7998 160.6001 L
113.3999 160.6001 L
114 161.2002 L
114.3999 160.3999 115.2998 160.7002 115.3999 160 C
115.7998 159.5 116.2998 158.7002 116.2998 158 C
116 156.7002 117 155.2002 116.2002 154 C
115.8999 150.7002 116.7998 148.8999 116 146 C
111.1001 148.7998 106 147.3999 101.2998 145.1001 C
96.2002 143.1001 92.1001 139.5 86.8999 140.3999 C
84.3999 140.2002 82.6001 141.8999 80.6001 143.2002 C
79.6001 144.3999 78.2998 146.7002 76.2002 146 C
72.1001 145.3999 70.6001 141.3999 67.6001 139.3999 C
67.3999 139 L
65.7998 136.8999 62.7998 135.2998 60.7002 134.2002 C
60.6001 134.2998 L
58.7002 133.2002 55.6001 132.1001 53.2998 131 C
52.6001 130.2998 50.2998 129.6001 49.6001 128.2998 C
47.8999 126.7002 46.7002 123.7998 47.3999 121.6001 C
46.5 119.6001 48.7002 118.8999 47.2998 117.2002 C
45.7002 113.7002 40.8999 112 38.2998 109.7002 C
36.1001 108.7998 34.7998 107.2998 33.7002 105.7002 C
33.8999 106.7002 32.7998 107.7002 33.7002 108.3999 C
33.7002 109 L
33.7998 109 34 109 34.1001 108.7998 C
33.7998 110.7998 36.3999 109.3999 35.7998 111.5 C
35.8999 111.5 L
35.8999 112.8999 L
36.8999 113.2002 38 113.1001 37.6001 114.3999 C
36.7002 114.6001 37.2998 115.8999 36.3999 116 C
36.2002 116.5 36.7002 116.6001 36.7998 116.8999 C
37.6001 117.2998 39.1001 115.7002 39.1001 117.2002 C
40 117.5 38.8999 118 39.1001 118.8999 C
38.7998 120.1001 L
39 119.8999 L
39.1001 120.5 L
40.1001 120.2998 40.7002 118.2998 41.6001 119.3999 C
41.3999 120 L
41.8999 120.1001 41.5 120.3999 41.7998 120.6001 C
40.8999 121 41.5 123.2998 40.8999 124.1001 C
40.7002 124.1001 L
40.7002 123.8999 41.3999 124.2998 41.2002 124.7002 C
41.8999 124.6001 42.6001 122.6001 43.6001 122.7998 C
42.7998 122.7998 44 124.3999 43.1001 124.7998 C
43 125 43.2002 125 43.2998 125.2002 C
43.2002 125.3999 43 125.2002 42.7998 125.2998 C
43.2002 126.7002 42.1001 127.2998 42.7998 128.6001 C
43.1001 128.6001 43.2998 128.7002 43.3999 128.8999 C
43.7002 128.6001 L
43.8999 129.1001 43.8999 128.7002 44.2998 128.6001 C
44.6001 128 44.2998 127.1001 45.2002 126.7998 C
45.1001 126.2998 45.7002 126.2002 46 126.1001 C
46.6001 126.1001 46.2998 126.7998 46.7002 127.1001 C
46.6001 127.5 45.7998 127.7002 46.3999 128 C
46.1001 129 46 130.6001 45.6001 131.3999 C
46.1001 131.6001 L
45.7002 131.8999 45.7002 132.7002 46.1001 133 C
46.7998 133.2998 47.6001 132.1001 48.2002 133.1001 C
48.1001 133.7002 48.3999 134.3999 48.5 134.8999 C
48.5 135.1001 48.3999 134.6001 48.6001 134.6001 C
48.6001 135.2002 49 136 48.3999 136.2998 C
48.5 136.2002 48.6001 136.2002 V
48.7002 136.2998 48.7002 136.3999 48.7002 136.6001 C
49.7002 136.2002 50.2002 135.1001 50.7998 134 C
51.2002 134.2002 L
51.2002 134 51.2998 134 51.3999 133.8999 C
51.8999 134.2002 51.7998 135.1001 52.1001 135.6001 C
51.6001 136.5 52.3999 136.8999 51.5 137.3999 C
52 138.7002 51.5 139.3999 51.5 140.6001 C
52.2002 140.7002 52.7998 140 52.7998 139.2998 C
53.2002 139.3999 L
53.1001 139.1001 53.3999 138.8999 53.2998 138.6001 C
53.6001 138 54.1001 138.7998 54.5 138.3999 C
55.2998 140.2998 54.5 140.7002 54.1001 142.3999 C
54.6001 142.5 54.1001 143.3999 54.7998 143.2998 C
54.7002 143.2002 L
55.5 142.2002 56.2998 141 56.7998 140 C
57.1001 140.2998 57.6001 139.2998 58 140 C
58 141.7002 57.8999 141.2998 58.1001 142.7002 C
58.2002 142.7002 L
57.7998 143.1001 58.5 143.8999 57.7998 144.3999 C
57.8999 144 58.7002 145.3999 58.1001 145.6001 C
58.1001 146 58.7998 145.7998 59 145.7002 C
59.1001 144.7002 60.1001 144.5 60 143.5 C
60.6001 143.2998 60.1001 141.2002 61.3999 142.2998 C
61.8999 143.6001 61.2998 144.7998 61.7002 146.3999 C
61.6001 146.3999 L
61.8999 147.3999 61.7002 148.2998 61.7998 149.7998 C
63.5 148.6001 63.2002 147.2998 64.3999 145.7998 C
65.2002 145.8999 64.8999 146.7002 65.2998 147.1001 C
65.2998 147.5 64.6001 148.2998 65 148.7002 C
64.6001 149 65 149.2998 65.2002 149.6001 C
65.2002 151.2998 L
65.2998 151.2998 65.3999 151.5 65.5 151.6001 C
65.6001 151.7002 65.3999 151.7998 65.2998 151.8999 C
65.5 152.2002 L
65.8999 151.3999 67.2998 150.7998 67 149.6001 C
67.6001 148.8999 67.7002 147.5 68.5 146.6001 C
68.7002 146.6001 68.8999 146.2002 69.1001 146.5 C
69.1001 146.7998 L
69.5 146.5 68.8999 145.8999 69.6001 146.2002 C
69.7002 146.6001 L
69.7998 146.5 L
69.7002 147.5 70.8999 147.8999 70.3999 148.8999 C
70 149.6001 L
70.1001 149.7998 70.6001 149.7002 70.3999 150.1001 C
70 149.6001 70.2998 150.6001 70.1001 150.7002 C
70.2002 150.6001 L
70.2998 150.7002 70.2998 150.7002 70.2998 150.7998 C
69.3999 151.2002 69.8999 152.8999 70.1001 153.7998 C
70.2002 154.1001 70.3999 154.2998 70.2998 154.7002 C
71.3999 154.7002 70.7998 153 71.7998 153 C
72.1001 152 72 150 73.2998 149.5 C
74.1001 150.1001 73.2998 151.2998 74 151.8999 C
73.7002 151.8999 L
74.5 152.5 74 153.7002 74.2002 154.7002 C
74.2998 154.6001 74.3999 154.7998 74.5 154.8999 C
74.5 155.2002 74.2002 155.1001 74.2002 155.3999 C
74.2002 155.7998 74.5 156 74.7998 156.3999 C
76 154.3999 75.2002 152.8999 76.7998 151.2002 C
77.7002 151.6001 77.5 151.8999 78 152.5 C
77.7998 154 77.6001 155.2998 78.2002 157 C
78.3999 156.7998 L
78.6001 157.2002 78.2998 157.6001 78.5 158 C
78.6001 157.2998 79.1001 157.1001 79.2002 156.5 C
79.6001 154.7998 79.6001 152.5 79.8999 150.7002 C
80 150.7998 L
80.7002 150.3999 79.7002 149.3999 80.8999 149.2998 C
81.3999 149.7002 81.2998 150.8999 81.2002 151.2002 C
81.3999 151.2002 81.6001 151.1001 81.7002 151.2998 C
81.3999 151.8999 L
82.2002 151.7002 81.7002 152.7002 81.7998 153.1001 C
82 153.1001 L
81.5 154.2998 82.5 154.8999 82.3999 156.2002 C
82.7002 155.7002 83.8999 154.8999 83.6001 153.6001 C
84.1001 153.1001 L
84.1001 149.5 L
84.5 149.5 L
84.7002 148.7002 84.2002 147.8999 85.1001 147.6001 C
85.2002 147.8999 85.7998 147.8999 85.6001 148.3999 C
85.8999 148.3999 L
86.2998 150.7998 85.6001 153.1001 86.5 155.2998 C
86.3999 155.3999 L
86.6001 155.6001 L
87.2998 154.7002 87.1001 153.7002 87.7998 153.1001 C
87.7998 151.2002 88.5 151.1001 88.3999 149.2998 C
89.2002 149.2998 88.8999 146.6001 90.1001 148.2998 C
90.1001 148.7002 L
90.3999 148.7002 L
90.7998 149.5 90 150.8999 90.7002 151.6001 C
90.5 151.7998 L
90.2998 151.7002 90.3999 151.6001 90.3999 151.3999 C
90 151.8999 90.7002 152.2002 90.7998 152.6001 C
90.5 153.8999 91.2998 155 91.6001 155.8999 C
92.2002 154.6001 92.2998 153.3999 92.3999 152 C
92.5 150.6001 93.1001 149.7002 93.5 148.2998 C
93.6001 148.3999 L
94.1001 147.6001 L
95.1001 148.2002 94.5 148.7002 94.7998 149.5 C
94.6001 150.2998 94.8999 151 94.7002 151.7998 C
94.7998 152.3999 95.3999 151.5 95.2998 152.2998 C
94.7002 152.5 95.3999 152.7998 95.2998 153.1001 C
95.6001 154.3999 96 155.7998 96.3999 157.2002 C
97 155.2002 97.3999 153.2002 97.8999 151.3999 C
98.1001 151.2002 98.5 151.2998 98.7998 151.2998 C
98.7998 152.2002 100.1001 153 99.5 154 C
99.5 155 L
99.6001 154.8999 L
99.6001 156 100.2998 157.2998 100.1001 158.6001 C
100.8999 159.1001 100.2998 159.7002 101 160.2998 C
101 160.3999 101.1001 160.5 101.2002 160.6001 C
102 159.7002 101.3999 158.2998 102.1001 157.3999 C
101.6001 157.1001 101.7998 156.3999 101.7998 155.7998 C
101.7998 155.6001 102 155.6001 102.1001 155.6001 C
102.1001 155.2002 102.2002 154.7998 102.5 154.3999 C
103 154.7998 103.3999 154.6001 103.7002 155.2998 C
103.3999 155.5 L
103.7002 155.5 L
103.7002 157.6001 L
103.7002 157.3999 103.8999 157.3999 104 157.3999 C
103.5 159 104.3999 160.1001 104.5 161.7998 C
104.7002 161.7002 104.8999 161.7998 104.8999 162 C
104.8999 162.3999 L
104.8999 162.2998 105 162.2002 105.1001 162.2002 C
104.6001 163 105.8999 162.7998 106.2002 162.7002 C
f
172 159.6001 m
172.2998 159.7998 L
172.2998 159.7002 L
172.7998 159.7002 173.3999 159.7998 173.7998 159.3999 C
174.1001 159.3999 175.1001 159.7002 175.7002 159.6001 C
176.2998 159.7998 178.2998 160.2998 178 159 C
178.3999 158.7002 178.5 158.2998 178.3999 157.7998 C
178.7998 157.7998 L
179.5 154 179.5 150.3999 179.2998 146.2998 C
178.7998 145.2998 178.7002 143.5 179.2998 142.7002 C
179.5 142.7002 179 142.6001 178.8999 142.3999 C
178.8999 142.1001 179.5 141.6001 178.8999 141.5 C
179.5 140.2002 179.7002 138.6001 178.7998 137.3999 C
177.7002 136.2998 L
173.2002 136.8999 169.6001 135.7998 165.2002 136.2998 C
164.6001 136.6001 163.7998 138.6001 163.7002 139.7002 C
164.8999 141.2998 167.5 141.2998 170.2002 141.2002 C
171.3999 141 172.2998 141.1001 173.5 141.6001 C
173.8999 141.2998 174.2998 141.7998 174.6001 142.1001 C
174.6001 142.2002 L
174.7998 142.2002 L
174.7002 143.2998 175.7002 144.7998 174.1001 145.3999 C
171 146.2002 167.3999 144.7998 164.3999 146.3999 C
164.6001 146.5 164.5 146.7002 164.5 146.8999 C
163.7998 147.2002 164.3999 148.7002 164.2998 149.3999 C
164.7998 149.1001 164.7998 150 165.3999 149.8999 C
165.2002 150 L
167.8999 151.7998 171.2998 149.6001 174.3999 150.5 C
175.5 151 174.5 151.8999 175.6001 152.3999 C
175.2002 152.3999 L
175.5 152.7002 175.5 153.5 175 153.7002 C
172.3999 155.7998 167.7002 153.7002 165.2002 155.5 C
164.7002 156.2998 164.2998 157.3999 164.2002 158.5 C
164.5 158.2998 164.7002 159.2002 165 158.7998 C
166.3999 160.2998 169.2998 159.7002 171.1001 160 C
172 159.6001 L
f
135.7002 157.1001 m
135.1001 153.6001 129.7998 154.8999 127.1001 154 C
126.2998 153.7998 124.2998 154 124.7002 152.5 C
123.8999 151.7002 125.1001 151.2998 125 150.3999 C
128.1001 149.2002 131.5 151.2002 133.8999 149.5 C
134.1001 149.2002 136.1001 148.2998 135.2002 147.1001 C
134.6001 147 134.6001 145.8999 133.6001 145.6001 C
130.7002 144.3999 127 146.6001 124.7998 143.5 C
124.2002 142.5 125.3999 141.7002 126 141.3999 C
127 141.2002 127.8999 140.6001 129 141 C
129 140.8999 L
130.6001 140.6001 133.2998 141 134.7998 140 C
134.5 139.3999 135.2998 139.7002 135.3999 139.2998 C
137 137 133.6001 136.7998 132.3999 136 C
129.6001 135.3999 126.2002 135.8999 123 136.1001 C
121.7998 135.8999 120.8999 137.1001 120.6001 138.2002 C
120.6001 139.3999 120.7002 140.5 120.1001 141.7002 C
120 141.6001 L
120.1001 143.7998 119.7998 144.8999 119.7998 147.6001 C
120.2002 147.5 L
120.2002 149.5 L
119.8999 148.8999 L
119.8999 150.3999 120.1001 152.2998 119.8999 153.7998 C
120.5 154.1001 120 154.8999 119.8999 155.3999 C
120.7002 155.2002 119.6001 156.1001 120.5 155.7998 C
119.8999 156.3999 120.7998 157.2998 121.1001 158.3999 C
121.2998 158.2002 L
121.3999 158.5 121.6001 158.7002 121.6001 159.1001 C
121.7002 159 L
122 159.6001 L
126.6001 157.5 132.1001 161 135.7002 157.1001 C
f
49.8999 150.5 m
49.7998 150.6001 L
49.6001 148.6001 46.7998 147.1001 45.6001 145.6001 C
44 146.1001 41.7998 146.1001 40.2998 145.1001 C
40 144.1001 41.6001 144.7002 41.8999 144.2002 C
42.7998 143.8999 43.6001 143.5 44 142.7002 C
43.3999 142.2998 42.2002 142.2998 41.8999 141.7002 C
41.6001 142 L
39 140.8999 L
39.5 139.6001 42 140 41.3999 138.7002 C
40.2998 137.7998 38.8999 137.2998 38 136.2002 C
38.7002 135.7002 39.5 134.8999 39.3999 133.8999 C
39.3999 134 L
38.1001 133.2002 36.7002 132.7998 35.2002 131.7998 C
35.2998 130.8999 36.3999 131 36.6001 130.2002 C
36.2998 128.6001 32.5 128.1001 34.7998 126 C
34.2002 125.7998 34.6001 124.8999 33.7998 124.8999 C
34 124.7998 L
33.2002 123.7998 31.6001 123.6001 32.3999 121.7002 C
32.8999 121.3999 L
32.6001 121.1001 32.5 121.6001 32.2998 121.2002 C
30.6001 120.3999 30.6001 117.7002 30.5 115.8999 C
30 115.2998 30 114.6001 29.5 114 C
29.7998 112.5 28.3999 111.3999 28.8999 110.2002 C
27.8999 111.2998 28.3999 113.5 28.2002 115.3999 C
28 115.3999 28 115.6001 27.7998 115.7002 C
28.2002 115.7002 L
27.8999 116.3999 28 116.5 27.7998 117.2002 C
28 117.1001 L
28.2002 117.6001 28.3999 119.2002 28.2998 120.6001 C
28.6001 120.6001 L
28.6001 121.1001 L
28.2998 121.1001 L
28.6001 121.8999 L
28.7002 121.7998 L
28.8999 123.1001 28.7998 124.1001 28.7998 124.8999 C
29 124.8999 L
29.3999 125.2998 28.6001 125.5 29.2998 125.6001 C
29.7002 126.5 28.7998 127.7002 29.8999 128.2002 C
29.5 128.5 L
29.6001 128.3999 L
30.2002 129.1001 29.7998 130 30.5 130.7002 C
30.1001 131.2002 L
30.6001 131.2002 30.2998 131.8999 30.3999 132.2002 C
30.6001 132.2002 30.7002 132.3999 31 132.6001 C
30.6001 133.5 31.5 134.5 31.6001 135.5 C
31.8999 136.5 31.8999 136.3999 32 137.6001 C
33 137.3999 32.2002 138.7998 32.6001 139.1001 C
31.7998 140 33.7998 140.1001 33.1001 141 C
33.3999 141.2002 33.2998 142.3999 34.2002 142.6001 C
34.2002 143.2998 L
34.2998 143.2002 L
34.7998 143.5 34.3999 144.7998 35.3999 145.1001 C
34.8999 145.3999 35.3999 145.7998 35.3999 146.2002 C
35.5 146.1001 35.5 146 35.6001 146 C
35.5 147.3999 36.7998 148.5 38 149.5 C
38.7002 148.8999 39 150.1001 39.6001 149.3999 C
39.8999 149.5 40.8999 149.1001 41.3999 149.2998 C
44.2998 149.5 47.6001 150.1001 50 151.3999 C
50 151.1001 49.6001 150.7998 49.8999 150.5 C
f
*u
159.5 158.2998 m
159.8999 155.5 151.6001 151.8999 158.2002 150.6001 C
158.7998 150.5 158.8999 149.7998 159.3999 149.5 C
160.1001 149.2002 159.8999 147.3999 159.7998 146.6001 C
159.1001 145.2002 155.6001 144.7998 156.1001 142.2998 C
157 141.7002 158.6001 141.1001 159 139.7002 C
159.6001 139.6001 L
159.6001 138.2002 159.2998 137.2002 158 136.2998 C
155.5 137.1001 152.8999 138.3999 150.6001 139.7998 C
146.2998 140.7998 145.1001 134.8999 140.8999 136.7002 C
140.6001 137.2002 140.3999 137.7002 139.8999 137.8999 C
139.5 140 142.2998 141.2002 143.7998 142.3999 C
143.6001 144 141.7002 144.7002 140.7998 145.8999 C
140.2998 146.5 140 147.6001 140.2002 148.3999 C
140.2998 148.2998 L
140.5 148.3999 140.6001 148.7998 140.3999 148.8999 C
139.8999 149 140.5 149.2998 140.5 149.5 C
140.7998 149.7002 141.1001 149.3999 141 150 C
141.7998 149.7002 141.7998 150.8999 142.2998 151 C
142.6001 151.5 144 152.2998 143.7998 153 C
142.2002 154.6001 139.5 155.5 140.2002 158 C
143 159.7998 145.6001 157 147.7002 156.2002 C
148.1001 155.8999 148.8999 155.5 149.7998 155.5 C
151 156.1001 152.2998 156.3999 153.5 157.3999 C
153.3999 157.6001 L
154.3999 157.6001 154.7998 158.8999 156.3999 158.8999 C
156.8999 159.2998 157.7998 159.1001 158.3999 158.8999 C
158.7998 158.2998 158.7998 158.5 159.5 158.2998 C
f
1 D
149 149.3999 m
147.6001 149.2002 147.7002 148.7002 146.7998 148 C
146.8999 147.1001 147.8999 146.7002 148.6001 146.5 C
149.8999 145.7002 151.2998 146.6001 152.7998 146.6001 C
152.6001 147 153 147.7002 152.8999 147.6001 C
152.7998 148.1001 152.7002 148.7002 152.2002 148.7998 C
151.2998 148.8999 150 149.7002 149 149.3999 C
f
*U
0 D
184.3999 145 m
184.8999 144.6001 185.2002 143.6001 185.7998 142.8999 C
186.7998 139.8999 189.1001 137.3999 189.2002 134.5 C
189.7002 133.7998 190.2998 132.6001 190.3999 131.5 C
190.7002 131.5 L
190.6001 129.8999 191.5 129.1001 191.5 127.2998 C
192.1001 125.7002 192.2998 123.2998 193 121.7998 C
193 119.5 194.1001 117.3999 193.7002 115.1001 C
194.2002 113.7998 194.1001 112.7998 194.2998 111.5 C
194.5 111.5 L
194.2002 105.2002 195.3999 100.2002 194.2002 93.7998 C
193.8999 90.6001 193.7002 88 193.3999 85 C
192.6001 84 193.2002 82.7998 192.7002 81.7998 C
192.3999 78.3999 191 74.5 190.2002 71 C
189.6001 70.7002 189.7998 69.7998 189.6001 69.5 C
188.8999 67.1001 187.6001 64.8999 187 62.2998 C
186 62.2002 186.7998 60.8999 186 60.7998 C
186.1001 60.5 185.8999 60.1001 185.6001 60.1001 C
184.2998 56.3999 182.2998 53.5 180.1001 50.2998 C
180.2002 49.7998 L
179.7002 49.7998 179.6001 49.2002 179.5 48.7998 C
178.1001 46.8999 176.5 44.8999 175.2002 43 C
175.2998 42.7998 L
173.2002 40.5 171.6001 38.5 169.3999 36 C
162.1001 28.2002 154.2998 21.5 144.6001 16.1001 C
129.8999 8.2998 113.3999 3.8999 97.1001 4.3999 C
96.7998 3.7998 96.5 4.7998 96.2002 4.3999 C
87.8999 3.7002 79.8999 6.7998 71.6001 8.7998 C
71.3999 8.5 L
69.6001 9.6001 67.2998 10 65.5 10.3999 C
55.7002 13.7002 45.5 19.1001 37.2998 26 C
37.2998 26.6001 36.3999 26.6001 36.3999 27.1001 C
33 29 31.2998 32.2998 28.7002 34.7998 C
28.8999 35.7002 28 34.8999 28.2998 35.6001 C
32.7998 32.2002 38.5 27.3999 43.7002 24.7998 C
47.2002 22.7002 51.1001 21 54.5 18.5 C
56.5 17.5 58.3999 15.2998 60.3999 13.8999 C
60.7998 13.3999 61.7002 14.2002 61.2998 14.6001 C
62.7998 15.7002 63.5 14.7998 64.7002 14 C
65.3999 13.2998 66.3999 11.2998 67.7998 11.7998 C
68.3999 13.3999 L
71.5 13.8999 72.3999 10.6001 74.5 9.6001 C
75 10.3999 74.2998 11.5 74.8999 12.1001 C
76.7998 11.7002 77.6001 10.7998 78.6001 9.1001 C
79.2998 9.6001 79.8999 10.1001 79.7998 10.8999 C
81.1001 10.7002 83.2002 9.7998 84 8.8999 C
84.5 9.5 84.6001 10 84.7002 10.7998 C
86.7002 10.6001 88.1001 8.3999 89.6001 8.3999 C
90.1001 10.7998 L
90.5 10.5 91.6001 9.8999 92.2002 10 C
93.6001 8.7998 94 7.2002 96.2002 7 C
97 8.7998 94.2002 9.6001 96.1001 11.2002 C
97.5 10.6001 98.5 9.6001 99.6001 8.6001 C
100.5 8.7998 100.1001 9.8999 100.1001 10.2998 C
99.7998 10.6001 99.2998 10.8999 99.6001 11.3999 C
101.2002 12 102.7002 10.1001 104.2998 8.8999 C
104.8999 8.7002 105.7002 8.5 106 9.2002 C
106 10.6001 104.7002 10.3999 104.2002 10.8999 C
104.2002 12.2002 105.2998 11.7998 106.1001 12.2002 C
106.5 11.7998 107.2002 11.6001 107.6001 11.5 C
108.7002 10.6001 L
109 10.8999 109.2002 10.2002 109.6001 10.2002 C
110.1001 9.7002 111.7002 8.2002 113 8.7998 C
112.3999 10.2002 111.3999 10.7002 110.5 11.8999 C
110.6001 12 L
110.2002 12.6001 L
111.5 12.6001 112.3999 13 113.7998 12 C
114.6001 11.7998 115.7002 11.6001 116.7998 11 C
117.2002 11.7998 116.6001 12.3999 116.2998 13.1001 C
115.7998 13.1001 L
115.8999 13.3999 115.6001 13.8999 115.2002 14 C
116.2002 14.2998 117.6001 14.6001 118.2998 13.8999 C
119.7998 13.7998 119.6001 13.8999 120.6001 13.2002 C
121.1001 13.2002 122 12.7002 122.6001 13.2002 C
121.8999 13.8999 121 14.7998 121 15.3999 C
121.2998 16.6001 123.1001 15.6001 124 15.7002 C
125.6001 15.1001 126.8999 13.3999 128.3999 14 C
127.7998 15.5 126.6001 16.2998 125.5 17.2998 C
127.5 18.1001 129.6001 16.8999 131 16 C
132.6001 16.2002 L
132.7002 18.1001 127.8999 19.1001 130.8999 20.6001 C
131.5 20.1001 132.7002 20.2002 133.3999 19.2998 C
134.6001 18.7998 136.1001 18 137.5 17.2002 C
137.7002 17.3999 138.1001 17.2002 138.2002 17.5 C
137.7998 19.3999 135.8999 20.2002 134.5 21.2002 C
134.6001 21.3999 L
134.6001 21.8999 133.8999 21.5 134.2002 22.2002 C
134.2002 22.1001 L
137.2002 22.1001 139.6001 19.7998 142.8999 20 C
142.6001 20.3999 L
142.7002 20.3999 142.8999 20.3999 142.8999 20.5 C
141.7002 22 139.5 22.7998 138.3999 24.7998 C
139.7998 25 L
139.7998 25.2002 L
141.7002 24.7998 143.7998 23 145.7002 23 C
146.1001 24.6001 143.7002 25.2998 142.8999 26.2002 C
142.6001 26.5 142.2002 26.7002 142.6001 27.2002 C
143.2998 27.5 L
145 26.7998 147.7002 26.3999 149.2998 25.8999 C
149.5 25.8999 150.2002 26.2998 149.7998 26.6001 C
148.2002 27.7002 146.2002 28.2002 145.7998 30 C
147.8999 29.7002 150.6001 28.7002 152.6001 28.6001 C
152.7998 28.7002 L
151.7002 30.7002 149.2998 30.5 148 31.8999 C
148.7998 32.6001 148.8999 32.2998 150 32.8999 C
150.5 32.7002 151.3999 32.2002 152.2002 32 C
154 32.3999 156.2002 30.8999 158.2998 31.8999 C
158.2998 32.1001 158.1001 32.2002 158 32.2998 C
157.7002 32.2002 L
157.8999 32.3999 L
156.2998 34.2002 152.2998 34.2002 151.7002 36.1001 C
152.7998 36 154.7998 35.8999 156 35.7998 C
157.6001 35.6001 159.2998 35 161 35.6001 C
161.2998 36.2998 160.6001 36 160.2998 36.3999 C
160 36.3999 L
160 36.7002 L
158.2002 37.3999 156.5 38.3999 155.2002 39.3999 C
158.6001 39.1001 162.1001 38.7998 165 38.7998 C
165.2002 39.6001 164.1001 39.8999 163.3999 40.1001 C
161.7002 40.7998 159.7002 41.2002 158.2998 42.3999 C
159.1001 42.7002 161 42.1001 161.5 42.7998 C
162.2002 42.3999 162.8999 42.3999 163.6001 42.7998 C
165.3999 42.5 167.2998 42.7002 169.1001 42.5 C
169.2998 42.7002 169.2002 43 169.2002 43.2998 C
168.7002 43.5 167.7998 44.5 166.6001 44.5 C
165.2002 45.1001 163.3999 45.2002 162 46.1001 C
161.7002 46.6001 162.2998 46.7002 161.7998 47.2002 C
163.8999 48 166.1001 46.5 168.2002 47 C
168.8999 46.6001 169.6001 47 170.3999 47.3999 C
168.8999 49.2998 166.5 48.3999 164.7998 50.2002 C
165.8999 50.6001 168.1001 51.1001 169.8999 50.5 C
170.2002 50.7002 170.3999 50.7998 170.6001 50.5 C
172.2998 50.2002 174.2998 50.3999 175.7998 50.2998 C
176.3999 50.6001 L
175.8999 51.3999 174.7002 52.1001 173.8999 51.7998 C
171.8999 53.1001 170 53.1001 167.6001 53.8999 C
167.2002 54.3999 167.7998 54.7002 168.1001 55.1001 C
171 55.5 174.1001 55.3999 177.2002 55.3999 C
177.8999 55.8999 177 56.5 176.7998 56.6001 C
175.2998 57.3999 172 56.8999 171 58.3999 C
170.3999 58.2998 170.5 59 170 59.2002 C
172.2998 60.2998 175 59.2998 177.3999 60.1001 C
177.2002 60.2002 L
177.7998 60.2002 178.2002 60.7002 178.7002 61 C
177 62.8999 174 61.3999 172.2002 63.3999 C
172.3999 63.8999 173.7998 63.6001 174.3999 63.7998 C
176.6001 64.2998 179.2998 64.1001 181.6001 65.2002 C
181.6001 66.1001 180.2002 66.2002 179.6001 66.3999 C
177.8999 66.7002 175.2998 66.2002 173.8999 66.7002 C
173.8999 67.1001 L
175.2998 67.2998 176.7998 68 177.7998 68 C
178 68.3999 178.8999 68.2998 179.3999 68.7998 C
180.8999 69 182.7002 69.1001 184.2002 69.6001 C
184.3999 70 L
182.7002 70.7998 181.3999 70.7998 179.3999 71.2998 C
178.2998 71.7998 177 71.2002 175.8999 71.3999 C
176.7998 73.7998 179.5 72.8999 181.2998 73.7998 C
182.3999 73.7998 183.1001 74.1001 183.6001 75 C
181.7998 77.1001 178.8999 74.5 177.2002 75.7998 C
176.7998 78.3999 181 77.2002 181.7998 78.6001 C
183.5 78.7998 185.2998 79.2998 186.7002 79.7998 C
187 80.2998 L
184.7002 81.1001 181.2002 81 178.7002 81 C
178.6001 81.6001 179.1001 82.2998 179.6001 82.7002 C
180.2002 82.7002 180.3999 83.1001 180.7998 83.2998 C
182.6001 84.2002 183.2002 83.7998 184.8999 85.1001 C
183.5 87.2002 181.2998 85.5 179.3999 85.3999 C
179.1001 86.3999 179.5 87.3999 180 88.2002 C
180.7002 88.2002 180.7002 88.7002 181.1001 89 C
183.7002 90.5 185.7998 91 188.5 92.2002 C
188.8999 92.7998 L
185.8999 94.7998 183.3999 91.3999 179.8999 92.3999 C
180.6001 92.7998 179.7998 93.5 180.2002 94.2002 C
181.6001 94.7998 183.2002 95.2998 184.2002 96.2002 C
184.8999 96.2998 185.7998 97.2002 186.6001 97.2998 C
188 97.5 189 98.6001 190.2998 99.1001 C
187.2002 100.7002 184.2998 97.7002 181 98 C
180.2998 99.5 180.7002 100.3999 182.2002 101 C
183.7002 101.7998 185.2002 102.6001 186.5 103.7002 C
186.5 103.6001 L
186.8999 103.2998 186.8999 103.8999 187.2002 104 C
187.2002 103.8999 L
188.1001 104.1001 188.2002 105.2998 189.6001 105.3999 C
189.7002 106 L
188.8999 106.2002 L
186 105.3999 183.3999 104.2998 180.5 103.8999 C
180.7998 104.6001 181.3999 105.3999 181.7998 105.5 C
182.3999 106.3999 183.6001 107.3999 185 107.5 C
185 108.1001 186 107.8999 186.3999 108.7998 C
185.7998 109.5 184.3999 108.8999 183.7002 109.7998 C
183.5 110.2998 184.6001 110.3999 184.2002 111.2002 C
184.7998 111.3999 184.8999 112.5 185.6001 112.6001 C
185.2002 112.8999 187.2002 114 185.3999 114.1001 C
184.1001 113.5 L
183.7998 114.7998 183.6001 116.1001 184.2002 117.3999 C
184.2998 117.2002 L
184.7998 117.8999 185.7002 117.7998 186.3999 118.7998 C
185.7998 119.3999 L
185.2998 119.2998 184.6001 119.1001 184.1001 119.2002 C
184.2998 121.5 184 123.3999 184.2998 125.8999 C
184 126.6001 184.5 127.6001 183.7998 128.2002 C
184.6001 128.7002 183.7002 129.2002 183.7998 129.7998 C
183.7002 129.7002 L
183.7998 130.7002 183.6001 132.1001 183.5 133.2998 C
183.2002 133.2998 L
183.5 133.8999 183.2002 134.6001 183.5 135 C
183.1001 135.2998 183.5 135.3999 183.2002 135.7002 C
183.5 136 L
183 136 L
183.2998 136.8999 182.8999 139.2002 183.2002 140.5 C
183.5 140.7998 L
182.8999 141.6001 183.6001 142.2998 183.1001 143.3999 C
183.7002 143.3999 183.5 144.7002 183.7002 145.1001 C
183 145.3999 183.7998 146.2002 183.6001 146.8999 C
183.7002 145.8999 184.2998 145.8999 184.3999 145 C
f
131.8999 132.7998 m
132.8999 132.5 134.2002 132.7002 135.3999 132.7998 C
135.3999 132.7002 L
138.8999 132.2002 141.7998 132.7002 145.1001 132.5 C
145.6001 132.6001 L
145.6001 132.5 L
146.2998 132.5 147.8999 132.7002 149 132.3999 C
150 133.2998 151 132 151.8999 132.6001 C
154.7002 132.7998 157 132.2002 160 132.6001 C
160 132.5 L
165.2998 132.2002 172.7002 132.5 178 132.2002 C
178.2998 131.6001 179.2002 131.2002 179.5 130.6001 C
179.2998 126 179.8999 120.5 179 116.2998 C
179.2002 115.2998 179.2998 114.2998 179.3999 113.5 C
178.7002 112 180.5 109.7998 177.7998 109.2002 C
176.7998 109 176 109.3999 175.2002 109.8999 C
175.1001 110.7998 174.8999 112.1001 175 113.2002 C
175 114 174.3999 116.6001 175.1001 118 C
175.3999 119.7998 174.2002 120.8999 175 122.6001 C
173.8999 122.7998 174.6001 124 174.6001 124.6001 C
174.6001 125.8999 173.7998 127.1001 173.2998 128.5 C
171.1001 129.3999 169.6001 128.2002 167.5 128.6001 C
165.2998 129 162.2998 129.1001 160 128.5 C
150.3999 128.3999 142.1001 127.7998 132.2002 128 C
132 127.7998 L
130.3999 127.8999 127.5 128.1001 126.2002 127.2002 C
125.8999 126.2002 125.7998 125.7002 125.5 124.8999 C
125.7002 123.8999 125.2998 122.7998 125.7998 121.8999 C
125.5 121.6001 L
126 121.3999 L
125.7002 120.2002 126.1001 118.6001 125.6001 117.5 C
126 116.7998 L
125.7998 116.7998 125.7998 116.6001 125.6001 116.5 C
125.7002 114.7002 125.5 113.1001 125.3999 111.3999 C
124.5 110.7002 125.7998 108.1001 123.7998 108.6001 C
122.6001 108.3999 121.2998 108.8999 120.6001 109.7998 C
120.7002 110.7002 120.3999 111.7998 120.6001 112.7998 C
119.8999 113.1001 121 113.2998 120.6001 113.7998 C
120.3999 115.5 120.5 117.6001 120.5 119.5 C
120.7002 119.5 L
120.2002 119.7998 120.7002 120.2998 121 120.7002 C
120.6001 120.7998 121 121.3999 120.7002 121.7002 C
120.2998 121.3999 121.5 122.1001 120.7002 122.2998 C
120.7998 122.2002 120.8999 122.2998 121 122.3999 C
120.7002 122.6001 L
120.8999 122.6001 121 122.7998 121.1001 122.8999 C
120.6001 122.7998 121 123.7998 120.7002 124.1001 C
120.7998 124.1001 L
121 125.5 120.7998 125.7998 120.7998 127.7002 C
120.6001 128.2998 120.7002 128.2998 120.7998 129.1001 C
121 129.1001 L
120.7002 130.2002 L
121 130.2002 L
120.1001 130.5 121.6001 131.2002 121.1001 131.6001 C
121.8999 132.1001 122.3999 132.1001 V
122.6001 131.8999 L
123.2002 132.3999 124 131.7998 124.2998 132.6001 C
130.2002 132.7998 L
130.2002 132.7002 L
131.8999 133 L
131.8999 132.7998 L
f
*u
135.3999 123 m
135.7002 122.7998 L
135.2002 122.3999 L
135.6001 121.8999 L
135.5 122 L
135.2998 121.8999 135.3999 121.7002 135.3999 121.6001 C
135.3999 121.3999 135.6001 121.3999 135.7002 121.3999 C
135 119.3999 135.5 117.6001 135.2002 115.2998 C
135.2002 114.3999 135.7998 114 136.1001 113.3999 C
136.2002 113.5 L
137.3999 111.7002 140.8999 112.8999 142.8999 112.7002 C
144 112.6001 144.7002 113.3999 145.8999 112.7998 C
146.5 113.3999 148.2002 113 147.5 114.2002 C
145.2998 117.2002 141.2002 113.2002 139.7998 117.2002 C
139.5 118.2002 139.3999 119.1001 139.3999 120.2002 C
139.3999 120.1001 L
139.7998 119.7998 139.6001 120.5 139.7998 120.6001 C
139.3999 120.6001 L
140.3999 120.8999 139.6001 121.8999 140.2002 122.5 C
140.1001 122.3999 140.2002 122.2998 140.2998 122.2998 C
140.3999 122.2998 L
139.8999 122.7998 140.8999 123.1001 140.3999 123.6001 C
140.8999 123.3999 L
140.7998 123.8999 141 124.7998 141.6001 124.8999 C
147.6001 124.8999 152.7998 124.5 158.8999 124.7002 C
159.6001 123.6001 160.3999 122.7002 160.1001 121.1001 C
160.2002 120.7998 160.3999 120.2998 160.3999 120.1001 C
160.3999 120.2002 L
159.7002 118.6001 160.7998 115.8999 157.7002 115.6001 C
155.8999 115.2002 154 115.5 152.8999 114.1001 C
152.8999 112.7998 154.5 113.3999 154.8999 112.6001 C
157.6001 112.3999 161 112.3999 164.2002 112.6001 C
165.2998 113.6001 164.5 115.2998 165.2002 116.2002 C
164.7998 116.7998 165.3999 117.1001 165 118.1001 C
164.7998 118 164.7998 118.2002 164.6001 118.2998 C
164.7002 119.2002 165 121.1001 165.2002 121.8999 C
164.8999 122.2998 L
165.8999 122.7002 164.2998 124 165.7998 124.2002 C
165.7002 124.7998 166.7002 125.5 167.2002 125.7998 C
167.6001 125.7998 L
167.7998 125.3999 168.3999 125.2998 168.7998 124.8999 C
169.7002 123.7998 L
169.8999 121.3999 169.6001 118.1001 169.8999 115.2998 C
169.7002 115.1001 L
169.7002 109.1001 L
164 107.7998 158.8999 108.6001 153.2002 107.8999 C
151.8999 106.2002 152.5 103.5 150.5 102.3999 C
149.3999 102.2998 148.2998 102.7998 147.6001 103.3999 C
146.8999 104.3999 148.1001 105.3999 146.8999 106.2002 C
147 106.7002 147.1001 107.1001 146.8999 107.6001 C
145.3999 108.3999 L
141 108.6001 136.3999 107.8999 131.5 108.3999 C
130.7998 110.1001 131 111.2002 130.3999 112.7998 C
129.8999 113.2002 131 113.8999 130.2002 114.2002 C
130.2998 116.3999 129.7998 119 130.7002 120.7998 C
129.6001 120.7002 131.3999 121.5 130.3999 121.8999 C
130.1001 122.3999 131 122.2002 130.6001 122.6001 C
130 124 130.8999 125 132.1001 125.7998 C
132.7002 125.7002 133.6001 126.2002 134 125.5 C
134.5 124.7998 135.3999 124.2998 135.3999 123 C
f
1 D
148.6001 121.1001 m
147 120.8999 145.2998 122.2002 144.1001 120.2002 C
143.6001 119.5 144.5 119.7002 144.7002 119.2002 C
147.7998 118.3999 152.1001 119 155.2998 119.2002 C
155.5 119.7998 L
155.2998 119.7998 L
155.2002 120.5 154.3999 120.6001 154.1001 121 C
152.2002 121.2002 150.6001 121.6001 148.6001 121.1001 C
f
*U
0 D
162.6001 105.7998 m
162.7998 105.1001 164 105.3999 164.2998 105.1001 C
165.7998 104 168.1001 102.1001 169.2998 100.6001 C
169.3999 99.8999 169.7002 98.7998 169.1001 98.7998 C
165.7002 100.3999 162.5 102.3999 159.7002 105 C
159.7002 105.1001 158.7998 105.1001 159.1001 105.5 C
160 105.7002 160.7002 105.6001 161.7998 105.6001 C
161.8999 106 L
162.2002 105.7998 162.2002 105.5 162.6001 105.7998 C
f
144.3999 104.5 m
144.5 102.7002 145.6001 100.2998 147.2002 99.3999 C
147.7002 99 148.2998 99.2002 148.6001 98.5 C
150.2998 99.5 151.8999 98.7998 153.1001 97.7998 C
153.7002 96.3999 156.1001 95.1001 157.2998 94.6001 C
157.5 94.2998 157.3999 94 157.3999 93.7002 C
157.6001 93.6001 158.5 92.7002 158.5 91.7998 C
158.8999 91.8999 159.2002 91.2998 159.2002 91 C
159.3999 91.1001 L
162.2002 87.6001 165.1001 84.7998 165.7998 80.2002 C
165.3999 79.7002 165.6001 78.7002 165.3999 77.8999 C
163.8999 78.2002 164 80 162.7998 80.8999 C
160.5 84 157.6001 87 154.3999 89.7998 C
153.6001 90.7998 152 92.2002 150.7998 93.1001 C
150.6001 92.7998 150.1001 92.5 150.5 92.2002 C
150.3999 92 150.6001 91.8999 150.7002 91.7998 C
151 92 L
151.5 90.7998 152.2998 89.6001 153.1001 88.6001 C
155.3999 85 L
155.5 85.1001 L
156.8999 83.6001 157.8999 81.1001 159 79.8999 C
159.1001 78.1001 161 77.8999 160.8999 76.1001 C
161.2002 76.1001 L
161.5 75.2002 161.6001 74.1001 162.2002 73.3999 C
162.2998 72.3999 163 72.1001 163 71 C
163 70 162.2998 69.7998 161.8999 69.1001 C
159.3999 72.6001 L
159.5 72.7002 L
154.2002 80.7002 148.7998 87.7002 141.5 94 C
141 94 L
140.8999 94.2998 140.2002 94.8999 139.7002 95.2002 C
139.2998 96 138.1001 95.5 138.1001 96.6001 C
137.8999 96.6001 L
137.7998 100.3999 L
138.3999 101 L
138 101.2998 L
138.3999 101.2998 L
138.3999 102.3999 138.2002 103.1001 139 103.8999 C
138.7002 104.7002 140.2998 104.7002 141.1001 105 C
144.3999 104.5 L
f
158.2998 101.2998 m
158.5 100.1001 159.7002 100.2002 160.3999 99.2002 C
163.2998 96.5 165.5 94.1001 168.1001 90.3999 C
167.7002 89.5 169 88 167.5 87.2002 C
166.6001 88.3999 164.7998 89.5 164.2002 90.7002 C
163.2002 91 162.7002 92.3999 161.6001 93 C
160.6001 93.6001 159.7002 95.2002 158.7998 95.8999 C
157.3999 97.5 155.2002 98.7998 154.2998 100.7002 C
155.2002 101.7998 L
155.1001 102 155.7002 102.6001 155.6001 103.2002 C
156.2998 102.7002 157.5 101.7998 158.2998 101.2998 C
f
136.7998 93.7002 m
136.8999 93.8999 137.5 93.2998 138 93.5 C
138.5 92.7998 139.6001 93.2002 140.2002 92.3999 C
142.1001 91.2998 142.6001 90 144.7002 88.3999 C
144.7998 88.6001 L
145.2998 87.7998 L
145.3999 88 L
145.8999 87.3999 146.7998 86.3999 147.2002 85.7002 C
148.1001 85.8999 147.3999 83.8999 148.7998 84 C
148.6001 83.6001 149.1001 83 149.2998 83.2998 C
150 81.5 151.2998 81 151.7998 79.1001 C
152 79.1001 L
151.6001 78.6001 152.3999 78.7998 152.2002 78.2002 C
152.6001 78.2998 152.5 77.6001 152.8999 77.2002 C
153 77.2998 L
153.2998 75.7998 154.7002 74.2002 154.8999 72.6001 C
155.2002 72.6001 L
155.5 70 157.2002 67.7002 157.3999 65.6001 C
157.8999 65.2998 158.2002 64.7002 158 64.1001 C
158.3999 64.2002 L
159.5 62.3999 157.8999 60.8999 157.2998 59.7998 C
157.2002 59.7998 157.1001 60.1001 157 60 C
156.7002 59.7998 L
156.3999 60.6001 156.1001 61.5 155.6001 62.2002 C
155.1001 63.5 154.8999 66.1001 153.5 67.1001 C
152.1001 69.7998 151 72.2002 149 74.5 C
149.2002 74.5 149.2002 74.6001 149.2998 74.6001 C
147.6001 76.7002 146.5 79 145 80.2998 C
144.3999 79.6001 L
145 77.7998 146.2002 76 147 74.2998 C
146.7998 73 147.8999 72.7002 148.2002 71.2002 C
148.5 70.8999 148.1001 69.7998 148.7002 70 C
149.2002 68.1001 150 65.8999 150.7002 63.6001 C
151 63.6001 L
150.7002 62.1001 151.8999 61.5 151.7998 60.1001 C
152.8999 57.7998 152.3999 57 153.7002 54.7002 C
153.5 54.7002 152.2998 53.2998 151.7998 52.7002 C
150.8999 52.8999 151.7002 54.1001 150.7998 54.2002 C
151 54.2002 L
151 54.3999 150.7002 54.7998 150.6001 55 C
150.3999 55.6001 150.1001 57.1001 149.3999 57.7002 C
149.5 57.7002 L
149.2002 58.6001 148.5 59.7998 148.1001 60.6001 C
148.2998 61 147.7002 61.5 147.7998 61.8999 C
147.5 61.8999 L
147.7998 63 147 63.2002 146.7998 64.2998 C
146.5 64.2998 L
146.2998 65.2002 146 65.5 145.7998 66.6001 C
145.6001 67.1001 L
145.3999 67 145.3999 66.7998 145.3999 66.7002 C
145.2002 68.2998 143.8999 68.6001 143.5 70.2002 C
143 70.2002 L
142.7998 69.6001 142.8999 68.8999 142.8999 68.2998 C
143.2998 68.3999 L
143.7998 66.7998 143.6001 65 144.5 64 C
144.5 62.7998 144.8999 62.2002 145.1001 61 C
145.5 60.7998 145.2998 59.2002 146 58.8999 C
145.7998 58.3999 146.5 58.1001 146 57.5 C
147 54.8999 147.3999 50.8999 148.3999 48.2002 C
146.5 46.2998 L
145.3999 48.7998 144.5 51.3999 143.7998 53.6001 C
143.3999 54.7998 142.6001 55.7998 142.2998 57.3999 C
142.1001 57.3999 L
142.2002 57.6001 142.2998 58.1001 142.2002 58.2998 C
140.8999 58.6001 142.2002 60 141.1001 60.2002 C
141.2002 60.8999 140.5 61.7998 140.2998 62 C
140.5 62.2998 L
139.7998 62.5 140.3999 62.7998 139.7998 63.2002 C
139.6001 63.7002 139.2998 64.2002 138.7998 64.6001 C
138.7002 64.3999 L
138.7002 64.2998 138.7998 64.8999 138.6001 65 C
137.2998 65 138.3999 64.2002 138.1001 63.5 C
138.3999 63.2002 L
138.5 63.2998 138.5 63.5 138.5 63.6001 C
138.2998 62.7998 138.7002 62.6001 138.6001 61.7998 C
139.2998 61.5 139.2002 60.6001 139.1001 59.8999 C
139.7998 59.8999 139.6001 58 140 57.6001 C
140.2998 56.3999 140 55.2998 140.7998 54.3999 C
140.7002 52.2998 141.3999 51.1001 141.2002 49.2002 C
141.8999 47.2002 141.7998 44.7002 142.2002 42.6001 C
142.2002 42.2998 142.2998 41.6001 141.7002 41.3999 C
141.1001 41.2998 L
141.2002 41.5 141 41.6001 140.8999 41.7998 C
141 41.7998 L
140.7002 43.5 140.2002 44.7002 139.3999 46.2998 C
139.1001 46.7998 139.7998 47.7002 138.7998 47.8999 C
139.3999 49.1001 138.1001 50 138.1001 51.2002 C
137.7998 52.6001 L
137.6001 52.3999 L
137 54.5 135.8999 57.3999 135 59.2002 C
135.3999 59.8999 134.2002 60.1001 134.2998 60.7998 C
134.2002 60.7002 L
133.8999 61.2002 134.2002 61.7002 133.3999 61.7998 C
132.5 60.2998 134.2002 58.6001 133.7998 56.7998 C
134.2002 55.2002 134.7998 52.6001 135.1001 50.7998 C
135.5 50.5 135.1001 49.2002 135.7002 48.7998 C
135.6001 48.7998 L
136.1001 48 135.6001 46.5 136.2998 46 C
136.2002 46 L
136.7002 44.2002 136.2002 42 136.7002 40.7002 C
136.8999 40.7002 L
136.6001 39.7998 136.6001 40.1001 136.3999 39 C
136.3999 38.1001 136.1001 37.2998 135.3999 36.7002 C
134.2998 37.2002 134.8999 39.7002 134.2998 39.7002 C
134.3999 39.7002 L
134.1001 41.2998 133.6001 42.2998 133.3999 44.2998 C
133.1001 44.5 L
133.5 44.8999 132.7998 45.8999 133 46.3999 C
132.5 46.8999 132.8999 47 132.5 47.2998 C
132.7002 47.5 L
131.5 49.6001 131.2002 52.7002 129.7002 54.7002 C
128.5 52.7002 130.2998 48.8999 130.2998 46.6001 C
130.5 42.2998 131.5 38.7998 131 34.6001 C
130.8999 34.3999 130.7002 34.2998 130.7002 34.1001 C
130.7998 34 L
129.5 32.8999 L
129 33.7002 129.1001 34.7998 128.7998 35.3999 C
129.2002 36.1001 127.8999 37.2998 128.5 37.8999 C
128 38.6001 128 40.7002 128 41.3999 C
127.6001 41.6001 L
128.2998 42.1001 127.2002 42.2002 127.6001 42.7002 C
127.6001 43.3999 127.6001 44.2002 127.1001 44.5 C
127 45.1001 127.2998 45.8999 126.7998 46.2998 C
127.3999 46.7998 126.2002 47.2002 126.5 47.8999 C
126.7002 49.3999 125.7002 50.1001 125.5 51.5 C
125.3999 51.3999 125.3999 51.2002 125.3999 51.1001 C
125 51.7002 L
124.2002 51.7002 124.7002 51.1001 124.6001 50.5 C
124.6001 50.3999 124.7998 50.3999 124.8999 50.3999 C
124.6001 45.3999 126 39.2998 125.5 34.7998 C
124.8999 33.8999 125.2998 32.6001 124.7002 31.7002 C
124.6001 30.7998 124.1001 30.3999 123.7998 29.6001 C
123 31.1001 123.5 32.5 123 33.7998 C
123.1001 33.7998 L
122.3999 35.2002 123.5 36.7002 122.2998 38.2998 C
123.1001 39.2002 121.7002 40.2998 122.2002 41.6001 C
121.7002 42.1001 L
121.7998 42.1001 L
121.7998 42.2998 121.8999 42.7998 121.3999 42.7998 C
121.7002 42.7998 L
121.8999 43.2002 121.7002 43.7002 121.2998 43.7998 C
121.6001 43.7998 L
121.6001 44.2998 L
121.1001 44.2998 L
121.5 45.7998 120.3999 46.7998 120.1001 48.2002 C
119.7998 48 L
119.7998 48.1001 119.7998 48.2998 119.6001 48.3999 C
118.2998 45.7002 119.3999 42.2998 119.2998 39.7998 C
119.3999 39.7998 119.3999 39.7998 Y
119.2002 39.6001 L
119.7998 39.3999 119.2998 38.2002 119.6001 37.8999 C
119.5 37.8999 L
118.7002 35.6001 119.2998 32.7998 118.7998 30.2002 C
119 30.2002 L
118.3999 29.5 118.5 27.5 117 27.5 C
116.7998 27.2002 L
117 28.6001 115.8999 29.7002 116.2998 31.7002 C
116 31.8999 L
116.2002 33 116.2002 33.8999 116 35 C
116.2998 35.2998 L
115.7998 35.6001 L
116.2002 35.7998 L
116.3999 36.6001 116.2998 38.2002 116.2002 39.3999 C
116.2998 39.2002 L
116.1001 41.5 115.7998 43.2998 115.1001 45.3999 C
115.2998 46.1001 115.2002 46.7002 115.1001 47.5 C
113.8999 47.8999 115.2998 49.2998 114.3999 49.8999 C
115.1001 50.2998 113.7998 50.7002 114.6001 51.1001 C
114.5 51.3999 114.2998 50.8999 114.3999 51.3999 C
114.5 51.5 L
114.1001 51.5 L
114.1001 52.6001 L
114.2002 52.6001 L
114.1001 53.1001 114 53.3999 114.6001 53.8999 C
114.2002 54.1001 L
115.1001 54.6001 113.8999 54.8999 114.5 55.3999 C
115.1001 55.8999 115.6001 57 116.2998 57.5 C
116.3999 57.7002 117.1001 58.6001 117.3999 58 C
117.6001 58.2998 117.6001 58.3999 117.2002 58.7002 C
118.6001 60.2998 119.7998 61.2002 120.7002 62.8999 C
120.7998 62.7998 L
121.1001 63.1001 122.2998 64.3999 122.3999 65.2002 C
122.5 65 L
122.3999 65.8999 123.7002 65.7002 123.2002 66.6001 C
124 66.7002 124.2002 67.8999 124.3999 68.7998 C
125.7002 68.7998 124.8999 70 126 70.2998 C
125.5 71.3999 127.1001 71.2002 126.5 72.1001 C
126.7002 72.5 128 72.7002 127.7002 73.7998 C
128.7998 74 128 75.2002 128.7998 75.6001 C
129 76 129.3999 76.2998 129.2002 76.8999 C
129.3999 76.8999 129.3999 76.8999 129.5 76.7998 C
129.8999 76.8999 129.1001 77.3999 129.7002 77.2998 C
130.2002 77.7002 129.2998 78.2002 130.1001 78.5 C
130.1001 78.3999 130 78.2002 130.2002 78.1001 C
130.3999 78.3999 130.2998 78.8999 130.2998 79.2998 C
130.6001 79.1001 L
131 80.3999 L
131.2998 80.2002 L
131.6001 80.6001 131.2002 81.7002 131.6001 81.7002 C
131.8999 81.5 L
132 82.6001 L
132.2002 82.6001 132.2002 82.2998 132.3999 82.6001 C
132.6001 83.6001 L
132.7002 83.6001 132.7002 83.5 132.7998 83.5 C
132.7998 84.1001 L
133 84.1001 L
133.1001 85.1001 L
133.6001 85.1001 L
132.8999 86.2998 134.7998 86.2998 134.2002 87.6001 C
134.7002 88 135 88.7002 135.1001 89.2002 C
135.2002 90 L
136 90.5 135.7998 90.7998 136.1001 91.6001 C
136.6001 92 136.7002 93 136.7998 93.7998 C
136.7998 93.7002 L
f
0 J 0 w 4 M
177 105 m
173 105 L
172.5 55 135.373 20.021 91.479 20.021 c
47.5845 20.021 7.5 55.5 12 114.5 C
1.626 108.4907 L
1.4585 106.2656 1.3735 104.0176 1.3735 101.75 c
1.3735 52.8184 41.0415 13.1499 89.9731 13.1499 c
138.9048 13.1499 178 52 177 105 C
f
0.2 w
116.5 186.75 m
92.75 194.25 67 187.5 v
34.3887 178.9517 20.75 155.75 y
38.5 178.25 67.75 185.5 v
96.1782 192.5464 116.25 183.75 y
116.5 186.75 l
f
0 w
77.25 162 m
75 164.5 l
42.25 149.5 32.5 113.75 v
43 144.75 77.25 162 v
f
111 51.8335 m
109.937 52.9429 109.1665 52 108.1665 51.6665 c
107.1665 51.3335 102.1665 48.1665 98.1665 46.8335 c
94.1665 45.5 93.8335 45.1665 91.1665 45 c
88.5 44.8335 85.8335 44.1665 84 43.6665 c
82.1665 43.1665 80.3335 43.5 78.3335 44 c
76.3335 44.5 70.5 46.3335 67.3335 45.6665 c
64.1665 45 63.6665 43.1665 61.5 42.5 c
59.3335 41.8335 56.3335 41.6665 52.8335 43.3335 c
49.3335 45 47.0103 46.1846 45 47.3335 c
43.8335 48 42.9429 48.8501 42 50.5 c
41.3335 51.6665 38.4165 53.8335 35.5 55.8335 c
31.7988 58.3711 24.3335 63.6665 22.8335 65.5 c
27 57 28.5 55.3335 v
30 53.6665 30 52.3335 32.6665 52.3335 c
35.3335 52.3335 36.6665 51.8335 37.5 51 c
38 50.5 37.1665 50 35.8335 50.1665 c
34.9902 50.272 33.2739 50.1968 34.1665 48.6665 c
34.9165 48.75 35.5835 48.6665 v
36.25 48.5835 37.5 48.75 38.25 48.6665 c
39 48.5835 40.3335 48.1665 40.8335 47.4165 c
40.3335 46.75 39.3335 46.5 v
38.3335 46.25 37.1665 45.8335 37.75 45.3335 c
38.3335 44.8335 39.5835 44.3335 40.9165 44.5835 c
42.25 44.8335 44 45.25 44.6665 44.8335 c
45.3335 44.4165 44.8335 43.5835 43 43 c
41.1665 42.4165 40.9165 41.75 41.8335 41.4165 c
42.75 41.0835 44.5835 41.3335 45.5835 41.9165 c
46.5835 42.5 47 42.3335 47.4165 42.1665 c
47.8335 42 47.9165 41.4165 46.75 40.9165 c
45.5835 40.4165 44.5835 39.5 45.25 39.1665 c
45.9165 38.8335 48.3335 39.4165 49.1665 39.6665 c
50 39.9165 51.4165 40.25 52 39.8335 c
52.5835 39.4165 52.75 39 51.25 38.0835 c
49.75 37.1665 48.75 36.1665 49.3335 35.6665 c
49.9165 35.1665 51.3335 35.8335 52.0835 36.3335 c
52.8335 36.8335 55.4165 38.9165 56.25 38.3335 c
57.0835 37.75 55.9165 35.5 55.0835 34.5835 c
54.25 33.6665 53.8335 32.5 54.9165 32.0835 c
56 31.6665 56.6665 33 57.3335 33.75 c
58 34.5 63.4165 41.3335 64.4165 41 c
65.4165 40.6665 63.3335 36.5835 62.5 35.3335 c
61.6665 34.0835 59.25 29.9165 60.25 29.3335 c
61.25 28.75 64.0835 31.75 64.9165 33.25 c
65.75 34.75 67.9165 38.5835 68.75 38.25 c
69.5835 37.9165 69.5 36.0835 68.25 33.75 c
67 31.4165 64.9165 27.9165 66 27.25 c
67.0835 26.5835 69.3335 29.75 70.5835 32 c
71.8335 34.25 73.8335 38.25 74.9165 37.9165 c
76 37.5835 75.1665 35.25 74.0835 32.4165 c
73 29.5835 71.4165 25.8335 72.5835 25.5 c
73.75 25.1665 76.0835 27.6665 76.9165 29.9165 c
77.75 32.1665 80 37 81.25 36.6665 c
82.5 36.3335 81.8335 34.3335 81.4165 32.8335 c
81 31.3335 80.1665 28.0835 79.4165 26.6665 c
78.6665 25.25 78.8335 24.1665 79.4165 24.1665 c
80 24.1665 83.3335 28.5835 84.5 31.6665 c
85.6665 34.75 86.6665 37.8335 87.4165 38.1665 c
88.1665 38.5 88.1665 38.5 88.0835 37.8335 c
88 37.1665 88.0835 35.6665 87.9165 33.5835 c
87.75 31.5 87.25 28.4165 86.6665 27.1665 c
86.0835 25.9165 85.9165 23 86.75 23.0835 c
87.5835 23.1665 87.4165 24.5 88.25 25.25 c
89.0835 26 90.1665 28 90.5835 30.3335 c
91.75 31.9165 91.9165 33.3335 v
92.0835 34.75 92.5835 35.1665 92.8335 36.1665 c
93.0835 37.1665 93.3335 38.75 93.8335 38.5835 c
94.3335 38.4165 94.25 37.5835 94.3335 36.6665 c
94.4165 35.75 94.75 35 94.5 34.0835 c
94.25 33.1665 94.5 32.5835 94.3335 31.9165 c
94.1665 31.25 93.5835 29.8335 93.4165 28.5 c
93.25 27.1665 93.4165 25.9165 93.25 25.1665 c
93.0835 24.4165 93 23.0835 93.8335 23.6665 c
94.6665 24.25 95.5645 25.6519 95.75 28.25 c
95.8335 29.4165 96.9165 30.5 y
97.3335 30.75 97.4165 31.75 v
97.5 32.75 98.4165 37.3335 99.0835 37.25 c
99.75 37.1665 99.5835 36.6665 99.5835 35.6665 c
99.5835 34.6665 99.9165 32 99.5 30.25 c
99.0835 28.5 98.1665 24.25 98.6665 24.0835 c
99.1665 23.9165 100.8335 24.8335 101.1665 27.5835 c
101.5 30.3335 102.3335 31.75 102.4165 33.75 c
102.5 35.75 103.6665 38.5 104.3335 38.25 c
105 38 105 37.0835 105 36.25 c
105 35.4165 106 31.8335 105.5835 30.6665 c
105.1665 29.5 104.9165 27.0835 105 26.4165 c
105.0835 25.75 105.3335 24.75 105.8335 25.1665 c
106.3335 25.5835 106.9092 27.4375 107.25 30.25 c
107.5835 33 107.6665 34.9165 107.9165 35.8335 c
108.1665 36.75 107.9165 38.0835 108.25 38.5835 c
108.5835 39.0835 108.5835 39.4165 109.0835 38.5835 c
109.5835 37.75 110.25 36.5835 110.25 35.3335 c
110.25 34.0835 110.4165 30.1665 110 28.5 c
109.5835 26.8335 109.9165 26.0835 110.75 26.1665 c
111.7207 26.2637 112.5 28.1665 112.8335 31.3335 c
113.2173 34.9834 113.3335 41.6665 113 44.5835 c
112.6665 47.5 112.9165 49.8335 111 51.8335 c
f
LB
%AI5_EndLayer--
%%PageTrailer
gsave annotatepage grestore showpage
%%Trailer
Adobe_Illustrator_AI5 /terminate get exec
Adobe_ColorImage_AI6 /terminate get exec
Adobe_level2_AI5 /terminate get exec
%%EOF
\ No newline at end of file
Binary file fig/vsgo.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/vsgo.svg	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="utf-8"  standalone="no"?>
+<svg 
+ width="600" height="480"
+ viewBox="0 0 600 480"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+>
+
+<title>Gnuplot</title>
+<desc>Produced by GNUPLOT 5.2 patchlevel 2 </desc>
+
+<g id="gnuplot_canvas">
+
+<rect x="0" y="0" width="600" height="480" fill="none"/>
+<defs>
+
+	<circle id='gpDot' r='0.5' stroke-width='0.5'/>
+	<path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
+	<path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
+	<path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
+	<rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
+	<rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
+	<circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/>
+	<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
+	<path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
+	<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
+	<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
+	<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
+	<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
+	<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
+	<path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
+	<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
+	<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
+	  <feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
+	  <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
+	</filter>
+	<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
+	  <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
+	  <feComposite in='SourceGraphic' in2='grey' operator='atop'/>
+	</filter>
+</defs>
+<g fill="none" color="white" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,422.4 L89.2,422.4 M575.0,422.4 L566.0,422.4  '/>	<g transform="translate(71.9,426.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 0</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,361.0 L89.2,361.0 M575.0,361.0 L566.0,361.0  '/>	<g transform="translate(71.9,364.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 200</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,299.6 L89.2,299.6 M575.0,299.6 L566.0,299.6  '/>	<g transform="translate(71.9,303.5)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 400</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,238.2 L89.2,238.2 M575.0,238.2 L566.0,238.2  '/>	<g transform="translate(71.9,242.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 600</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,176.9 L89.2,176.9 M575.0,176.9 L566.0,176.9  '/>	<g transform="translate(71.9,180.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 800</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,115.5 L89.2,115.5 M575.0,115.5 L566.0,115.5  '/>	<g transform="translate(71.9,119.4)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 1000</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,54.1 L89.2,54.1 M575.0,54.1 L566.0,54.1  '/>	<g transform="translate(71.9,58.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 1200</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,422.4 L80.2,413.4 M80.2,54.1 L80.2,63.1  '/>	<g transform="translate(80.2,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" > 1</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M179.2,422.4 L179.2,413.4 M179.2,54.1 L179.2,63.1  '/>	<g transform="translate(179.2,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" > 2</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M278.1,422.4 L278.1,413.4 M278.1,54.1 L278.1,63.1  '/>	<g transform="translate(278.1,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" > 4</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M377.1,422.4 L377.1,413.4 M377.1,54.1 L377.1,63.1  '/>	<g transform="translate(377.1,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" > 8</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M476.0,422.4 L476.0,413.4 M476.0,54.1 L476.0,63.1  '/>	<g transform="translate(476.0,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" > 16</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M575.0,422.4 L575.0,413.4 M575.0,54.1 L575.0,63.1  '/>	<g transform="translate(575.0,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" > 32</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,54.1 L80.2,422.4 L575.0,422.4 L575.0,54.1 L80.2,54.1 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(16.3,238.3) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >time(ms)</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(327.6,471.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >CPUs</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(327.6,31.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >twice</tspan></text>
+	</g>
+</g>
+	<g id="gnuplot_plot_1" ><title>"gears_poweredge"</title>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(507.9,76.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text>"gears_poweredge"</text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='rgb(148,   0, 211)'  d='M516.2,72.1 L558.4,72.1 M80.2,59.9 L179.2,229.7 L278.1,322.9 L377.1,373.3 L476.0,396.2 L575.0,406.5
+		 '/>	<use xlink:href='#gpPt1' transform='translate(80.2,59.9) scale(4.50)' color='rgb(148,   0, 211)'/>
+	<use xlink:href='#gpPt1' transform='translate(179.2,229.7) scale(4.50)' color='rgb(148,   0, 211)'/>
+	<use xlink:href='#gpPt1' transform='translate(278.1,322.9) scale(4.50)' color='rgb(148,   0, 211)'/>
+	<use xlink:href='#gpPt1' transform='translate(377.1,373.3) scale(4.50)' color='rgb(148,   0, 211)'/>
+	<use xlink:href='#gpPt1' transform='translate(476.0,396.2) scale(4.50)' color='rgb(148,   0, 211)'/>
+	<use xlink:href='#gpPt1' transform='translate(575.0,406.5) scale(4.50)' color='rgb(148,   0, 211)'/>
+	<use xlink:href='#gpPt1' transform='translate(537.3,72.1) scale(4.50)' color='rgb(148,   0, 211)'/>
+</g>
+	</g>
+	<g id="gnuplot_plot_2" ><title>"go_poweredge"</title>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(507.9,94.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text>"go_poweredge"</text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='rgb(  0, 158, 115)'  d='M516.2,90.1 L558.4,90.1 M80.2,363.9 L179.2,384.5 L278.1,407.0 L377.1,406.4 L476.0,405.9 L575.0,408.9
+		 '/>	<use xlink:href='#gpPt2' transform='translate(80.2,363.9) scale(4.50)' color='rgb(  0, 158, 115)'/>
+	<use xlink:href='#gpPt2' transform='translate(179.2,384.5) scale(4.50)' color='rgb(  0, 158, 115)'/>
+	<use xlink:href='#gpPt2' transform='translate(278.1,407.0) scale(4.50)' color='rgb(  0, 158, 115)'/>
+	<use xlink:href='#gpPt2' transform='translate(377.1,406.4) scale(4.50)' color='rgb(  0, 158, 115)'/>
+	<use xlink:href='#gpPt2' transform='translate(476.0,405.9) scale(4.50)' color='rgb(  0, 158, 115)'/>
+	<use xlink:href='#gpPt2' transform='translate(575.0,408.9) scale(4.50)' color='rgb(  0, 158, 115)'/>
+	<use xlink:href='#gpPt2' transform='translate(537.3,90.1) scale(4.50)' color='rgb(  0, 158, 115)'/>
+</g>
+	</g>
+<g fill="none" color="white" stroke="rgb(  0, 158, 115)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,54.1 L80.2,422.4 L575.0,422.4 L575.0,54.1 L80.2,54.1 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+</g>
+</svg>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/vsgo.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/vsgo.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 600 480
+%%HiResBoundingBox: 0.000000 0.000000 600.000000 480.000000
+%%PDFVersion: 1.5
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/vsopenmp.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/vsopenmp.svg	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="utf-8"  standalone="no"?>
+<svg 
+ width="600" height="480"
+ viewBox="0 0 600 480"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+>
+
+<title>Gnuplot</title>
+<desc>Produced by GNUPLOT 5.2 patchlevel 2 </desc>
+
+<g id="gnuplot_canvas">
+
+<rect x="0" y="0" width="600" height="480" fill="none"/>
+<defs>
+
+	<circle id='gpDot' r='0.5' stroke-width='0.5'/>
+	<path id='gpPt0' stroke-width='0.222' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
+	<path id='gpPt1' stroke-width='0.222' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
+	<path id='gpPt2' stroke-width='0.222' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
+	<rect id='gpPt3' stroke-width='0.222' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
+	<rect id='gpPt4' stroke-width='0.222' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
+	<circle id='gpPt5' stroke-width='0.222' stroke='currentColor' cx='0' cy='0' r='1'/>
+	<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
+	<path id='gpPt7' stroke-width='0.222' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
+	<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
+	<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
+	<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
+	<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
+	<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
+	<path id='gpPt13' stroke-width='0.222' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
+	<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
+	<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
+	  <feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
+	  <feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
+	</filter>
+	<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
+	  <feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
+	  <feComposite in='SourceGraphic' in2='grey' operator='atop'/>
+	</filter>
+</defs>
+<g fill="none" color="white" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,422.4 L89.2,422.4 M575.0,422.4 L566.0,422.4  '/>	<g transform="translate(71.9,426.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 0</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,361.0 L89.2,361.0 M575.0,361.0 L566.0,361.0  '/>	<g transform="translate(71.9,364.9)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 200</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,299.6 L89.2,299.6 M575.0,299.6 L566.0,299.6  '/>	<g transform="translate(71.9,303.5)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 400</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,238.2 L89.2,238.2 M575.0,238.2 L566.0,238.2  '/>	<g transform="translate(71.9,242.1)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 600</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,176.9 L89.2,176.9 M575.0,176.9 L566.0,176.9  '/>	<g transform="translate(71.9,180.8)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 800</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,115.5 L89.2,115.5 M575.0,115.5 L566.0,115.5  '/>	<g transform="translate(71.9,119.4)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 1000</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,54.1 L89.2,54.1 M575.0,54.1 L566.0,54.1  '/>	<g transform="translate(71.9,58.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text><tspan font-family="Arial" > 1200</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,422.4 L80.2,413.4 M80.2,54.1 L80.2,63.1  '/>	<g transform="translate(80.2,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" > 1</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M179.2,422.4 L179.2,413.4 M179.2,54.1 L179.2,63.1  '/>	<g transform="translate(179.2,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" > 2</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M278.1,422.4 L278.1,413.4 M278.1,54.1 L278.1,63.1  '/>	<g transform="translate(278.1,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" > 4</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M377.1,422.4 L377.1,413.4 M377.1,54.1 L377.1,63.1  '/>	<g transform="translate(377.1,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" > 8</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M476.0,422.4 L476.0,413.4 M476.0,54.1 L476.0,63.1  '/>	<g transform="translate(476.0,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" > 16</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M575.0,422.4 L575.0,413.4 M575.0,54.1 L575.0,63.1  '/>	<g transform="translate(575.0,444.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" > 32</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,54.1 L80.2,422.4 L575.0,422.4 L575.0,54.1 L80.2,54.1 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(16.3,238.3) rotate(270)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >time(ms)</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(327.6,471.3)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >CPUs</tspan></text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(327.6,31.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="middle">
+		<text><tspan font-family="Arial" >twice</tspan></text>
+	</g>
+</g>
+	<g id="gnuplot_plot_1" ><title>"gears_poweredge"</title>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(507.9,76.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text>"gears_poweredge"</text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='rgb(148,   0, 211)'  d='M516.2,72.1 L558.4,72.1 M80.2,59.9 L179.2,229.7 L278.1,322.9 L377.1,373.3 L476.0,396.2 L575.0,406.5
+		 '/>	<use xlink:href='#gpPt1' transform='translate(80.2,59.9) scale(4.50)' color='rgb(148,   0, 211)'/>
+	<use xlink:href='#gpPt1' transform='translate(179.2,229.7) scale(4.50)' color='rgb(148,   0, 211)'/>
+	<use xlink:href='#gpPt1' transform='translate(278.1,322.9) scale(4.50)' color='rgb(148,   0, 211)'/>
+	<use xlink:href='#gpPt1' transform='translate(377.1,373.3) scale(4.50)' color='rgb(148,   0, 211)'/>
+	<use xlink:href='#gpPt1' transform='translate(476.0,396.2) scale(4.50)' color='rgb(148,   0, 211)'/>
+	<use xlink:href='#gpPt1' transform='translate(575.0,406.5) scale(4.50)' color='rgb(148,   0, 211)'/>
+	<use xlink:href='#gpPt1' transform='translate(537.3,72.1) scale(4.50)' color='rgb(148,   0, 211)'/>
+</g>
+	</g>
+	<g id="gnuplot_plot_2" ><title>"openmp_poweredge"</title>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<g transform="translate(507.9,94.0)" stroke="none" fill="black" font-family="Arial" font-size="12.00"  text-anchor="end">
+		<text>"openmp_poweredge"</text>
+	</g>
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='rgb(  0, 158, 115)'  d='M516.2,90.1 L558.4,90.1 M80.2,323.4 L179.2,363.1 L278.1,390.7 L377.1,406.2 L476.0,412.5 L575.0,413.3
+		 '/>	<use xlink:href='#gpPt2' transform='translate(80.2,323.4) scale(4.50)' color='rgb(  0, 158, 115)'/>
+	<use xlink:href='#gpPt2' transform='translate(179.2,363.1) scale(4.50)' color='rgb(  0, 158, 115)'/>
+	<use xlink:href='#gpPt2' transform='translate(278.1,390.7) scale(4.50)' color='rgb(  0, 158, 115)'/>
+	<use xlink:href='#gpPt2' transform='translate(377.1,406.2) scale(4.50)' color='rgb(  0, 158, 115)'/>
+	<use xlink:href='#gpPt2' transform='translate(476.0,412.5) scale(4.50)' color='rgb(  0, 158, 115)'/>
+	<use xlink:href='#gpPt2' transform='translate(575.0,413.3) scale(4.50)' color='rgb(  0, 158, 115)'/>
+	<use xlink:href='#gpPt2' transform='translate(537.3,90.1) scale(4.50)' color='rgb(  0, 158, 115)'/>
+</g>
+	</g>
+<g fill="none" color="white" stroke="rgb(  0, 158, 115)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="black" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+	<path stroke='black'  d='M80.2,54.1 L80.2,422.4 L575.0,422.4 L575.0,54.1 L80.2,54.1 Z  '/></g>
+<g fill="none" color="black" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
+</g>
+</g>
+</svg>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fig/vsopenmp.xbb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+%%Title: fig/vsopenmp.pdf
+%%Creator: extractbb 20190225
+%%BoundingBox: 0 0 600 480
+%%HiResBoundingBox: 0.000000 0.000000 600.000000 480.000000
+%%PDFVersion: 1.5
+%%Pages: 1
+%%CreationDate: Wed Feb  5 17:52:45 2020
+
Binary file fig/workerRun.graffle has changed
Binary file fig/workerRun.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ieicej.cls	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3895 @@
+%%%
+%% ieicej.cls (pLaTeX2e)
+%%  for the Transactions of the Institute of Electronics, Information 
+%%   and Communication Engineers by ULS and Company, 1999-2019.
+%% E-mail: ieice-div@uls.co.jp, teppei@uls.co.jp
+\NeedsTeXFormat{pLaTeX2e}
+\ProvidesClass{ieicej}
+%%[1999/04/28 v1.0 for Transactions of IEICE]
+%%[1999/07/12 v1.0 new release for Transactions of IEICE]
+%%[2000/11/02 v1.1 for Transactions of IEICE]
+%%[2002/02/12 v1.2 for Transactions of IEICE]
+%%[2003/10/31 v1.3 for Transactions of IEICE]
+%%[2006/05/08 v1.4 for Transactions of IEICE]
+%%[2008/05/13 v1.5 for Transactions of IEICE]
+%%[2009/11/03 v1.6 for Transactions of IEICE]
+%%[2010/04/05 v1.6a for Transactions of IEICE]
+%%[2013/01/31 v2.0-prerelese1 for Transactions of IEICE]
+%%[2013/05/15 v2.0-prerelese2 for Transactions of IEICE]
+%%[2013/06/11 v2.0 for Transactions of IEICE]
+%%[2015/11/14 v3.0 for Transactions of IEICE]
+%%[2018/05/08 v3.1 for Transactions of IEICE]
+  [2019/03/19 v3.2 for Transactions of IEICE]
+
+\newif\if@enable@uptex \@enable@uptexfalse
+\ifx\ucs\@undefined\else
+ \ifnum\ucs"3000="3000
+  \@enable@uptextrue
+ \fi
+\fi
+
+\newdimen\@JQ
+\if@enable@uptex
+ \@JQ=0.769362pt
+\else
+ \@JQ=0.7392507pt
+\fi
+\newdimen\@Q
+ \@Q=0.71144pt
+\newdimen\@EM
+ \@EM=.03125em
+
+\def\kenc@JYn{\if@enable@uptex JY2\else JY1\fi}
+\def\kenc@JTn{\if@enable@uptex JT2\else JT1\fi}
+
+\newif\if@paper \@papertrue
+\newif\if@electronicsletter \@electronicsletterfalse
+\newif\if@letter \@letterfalse
+\newif\if@tecrep \@tecrepfalse
+
+\DeclareOption{paper}{%
+ \gdef\hd@type{論文}\gdef\tl@type{論\hskip1zw 文}\gdef\@type{P}}
+\DeclareOption{invited}{\@papertrue
+ \gdef\hd@type{招待論文}\gdef\tl@type{招待論文}\gdef\@type{P}}
+\DeclareOption{comment}{\@papertrue
+ \gdef\hd@type{解説論文}\gdef\tl@type{解説論文}\gdef\@type{P}}
+\DeclareOption{survey}{\@papertrue
+ \gdef\hd@type{サーベイ論文}\gdef\tl@type{サーベイ論文}\gdef\@type{P}}
+\DeclareOption{letter}{\@lettertrue\@paperfalse
+ \gdef\hd@type{レター}\gdef\tl@type{\@typeofletter}\gdef\@type{L}}
+\DeclareOption{electronicsletter}{\@electronicslettertrue\@paperfalse
+ \gdef\hd@type{レター}\gdef\tl@type{レター}\gdef\@type{LP}}
+%\DeclareOption{technicalreport}{\@tecreptrue}
+
+\def\tl@type{論\hskip1zw 文}
+\def\hd@type{論文}
+\def\@type{P}% paper
+
+%\def\ieicejline@warning{\ClassWarning{ieicej}}
+\def\ieicej@warning{\ClassWarningNoLine{ieicej}}
+
+%\newif\if@usejistfm \@usejistfmfalse
+%\DeclareOption{usejistfm}{\@usejistfmtrue}
+
+\newif\if@Proof \@Prooffalse
+\DeclareOption{Proof}{\@Prooftrue}
+\newif\if@cameraready \@camerareadyfalse
+\DeclareOption{cameraready}{\@camerareadytrue}
+
+%% for 2.1.4 and non pLaTeX2e compatibility
+%\@ifundefined{hour}{}{%
+% \hour\time \divide\hour by 60\relax
+% \@tempcnta\hour \multiply\@tempcnta 60\relax
+% \minute\time \advance\minute-\@tempcnta
+%}
+
+\newcounter{@paper}
+\newcommand{\@ptsize}{}
+\newif\if@restonecol
+\hour\time \divide\hour by 60\relax
+\@tempcnta\hour \multiply\@tempcnta 60\relax
+\minute\time \advance\minute-\@tempcnta
+\newif\if@enablejfam \@enablejfamtrue
+\newif\if@mathrmmc \@mathrmmcfalse
+\DeclareOption{technicalreport}{\setcounter{@paper}{1}%
+  \@tecreptrue
+  \setlength\paperheight {297mm}%
+  \setlength\paperwidth  {210mm}}
+\DeclareOption{b5paper}{\setcounter{@paper}{4}%
+  \setlength\paperheight {257mm}
+  \setlength\paperwidth  {182mm}}
+\DeclareOption{10pt}{\renewcommand{\@ptsize}{0}}
+\DeclareOption{11pt}{\renewcommand{\@ptsize}{1}}
+\DeclareOption{12pt}{\renewcommand{\@ptsize}{2}}
+\DeclareOption{tombow}{%
+  \tombowtrue \tombowdatetrue
+  \setlength{\@tombowwidth}{.1mm}%
+  \@bannertoken{%
+     \jobname\space:\space\number\year/\number\month/\number\day
+      (\number\hour:\number\minute)}
+  \maketombowbox}
+\DeclareOption{tombo}{%
+  \tombowtrue \tombowdatefalse
+  \setlength{\@tombowwidth}{.1mm}%
+  \maketombowbox}
+\DeclareOption{mentuke}{%
+  \tombowtrue \tombowdatefalse
+  \setlength{\@tombowwidth}{\z@}%
+  \maketombowbox}
+\DeclareOption{tate}{\AtBeginDocument{\tate\message{《縦組モード》}}}
+\DeclareOption{oneside}{\@twosidefalse}
+\DeclareOption{twoside}{\@twosidetrue}
+\DeclareOption{onecolumn}{\@twocolumnfalse}
+\DeclareOption{twocolumn}{\@twocolumntrue}
+%%\DeclareOption{leqno}{\input{leqno.clo}}
+\DeclareOption{fleqn}{%\input{fleqn.clo}
+ %\ieicej@warning{fleqn is loaded by this class file}
+}
+\DeclareOption{openbib}{%
+  \AtEndOfPackage{%
+   \renewcommand\@openbib@code{%
+      \advance\leftmargin\bibindent
+      \itemindent -\bibindent
+      \listparindent \itemindent
+      \parsep \z@
+      }%
+   \renewcommand\newblock{\par}}}
+
+\DeclareOption{disablejfam}{\@enablejfamfalse}
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+\ExecuteOptions{b5paper,fleqn,twoside,twocolumn,final}
+\ProcessOptions\relax
+
+%% pdf and ps papersize
+\if@tecrep
+\else
+ \iftombow % +26mm (10+3)x2
+  \AtBeginDvi{\special{papersize=208mm,283mm}}%
+  \hoffset-12.5mm\voffset-12.5mm % 13? 
+ \else
+  \AtBeginDvi{\special{papersize=182mm,257mm}}%
+ \fi
+\fi
+
+\if@enable@uptex
+\if@tecrep
+ \DeclareFontShape{JY2}{mc}{m}{n}{%
+     <5> <6> <7> <8> <9> <10> %sgen*min
+     <10.95><12><14.4><17.28><20.74><24.88> upjisr-h
+     <-> upjisr-h
+     }{}
+ \DeclareFontShape{JY2}{gt}{m}{n}{%
+     <5> <6> <7> <8> <9> <10> %sgen*goth
+     <10.95><12><14.4><17.28><20.74><24.88> upjisg-h
+     <-> upjisg-h
+     }{}
+\else
+\DeclareFontShape{JY2}{mc}{m}{n}{%
+  <5>     s*[0.995848]upjisr-h %  7Q
+  <6>     s*\if@letter [0.94843]\else [1.06698]\fi upjisr-h %  8Q/9Q
+  <7>     s*[1.016171]upjisr-h % 10Q
+  <8>     s*[0.978065]upjisr-h % 11Q
+  <9>     s*[0.948427]upjisr-h % 12Q
+  <10>    s*[0.924714]upjisr-h % 13Q
+  <10.95> s*[0.974411]upjisr-h % 15Q
+  <12>    s*[1.06698]upjisr-h  % 18Q
+  <14.4>  s*[0.987944]upjisr-h % 20Q
+  <17.28> s*[0.987944]upjisr-h % 24Q
+  <20.74> s*[0.960316]upjisr-h % 28Q
+  <24.88> s*[0.914881]upjisr-h % 32Q
+  <-> s*[0.924714]upjisr-h
+}{}
+\DeclareFontShape{JY2}{gt}{m}{n}{%
+  <5>     s*[0.995848]upjisg-h %  7Q
+  <6>     s*\if@letter [0.94843]\else [1.06698]\fi upjisg-h %  8Q/9Q
+  <7>     s*[1.016171]upjisg-h % 10Q
+  <8>     s*[0.978065]upjisg-h % 11Q
+  <9>     s*[0.948427]upjisg-h % 12Q
+  <10>    s*[0.924714]upjisg-h % 13Q
+  <10.95> s*[0.974411]upjisg-h % 15Q
+  <12>    s*[1.06698]upjisg-h  % 18Q
+  <14.4>  s*[0.987944]upjisg-h % 20Q
+  <17.28> s*[0.987944]upjisg-h % 24Q
+  <20.74> s*[0.960316]upjisg-h % 28Q
+  <24.88> s*[0.914881]upjisg-h % 32Q
+  <-> s*[0.924714]upjisg-h
+}{}
+%%
+\DeclareFontShape{JT2}{mc}{m}{n}{%
+  <5>     s*[0.995848]upjisr-v %  7Q
+  <6>     s*\if@letter [0.94843]\else [1.06698]\fi upjisr-v %  8Q/9Q
+  <7>     s*[1.016171]upjisr-v % 10Q
+  <8>     s*[0.978065]upjisr-v % 11Q
+  <9>     s*[0.948427]upjisr-v % 12Q
+  <10>    s*[0.924714]upjisr-v % 13Q
+  <10.95> s*[0.974411]upjisr-v % 15Q
+  <12>    s*[1.06698]upjisr-v  % 18Q
+  <14.4>  s*[0.987944]upjisr-v % 20Q
+  <17.28> s*[0.987944]upjisr-v % 24Q
+  <20.74> s*[0.960316]upjisr-v % 28Q
+  <24.88> s*[0.914881]upjisr-v % 32Q
+  <-> s*[0.924714]upjisr-v
+}{}
+\DeclareFontShape{JT2}{gt}{m}{n}{%
+  <5>     s*[0.995848]upjisg-v %  7Q
+  <6>     s*\if@letter [0.94843]\else [1.06698]\fi upjisg-v %  8Q/9Q
+  <7>     s*[1.016171]upjisg-v % 10Q
+  <8>     s*[0.978065]upjisg-v % 11Q
+  <9>     s*[0.948427]upjisg-v % 12Q
+  <10>    s*[0.924714]upjisg-v % 13Q
+  <10.95> s*[0.974411]upjisg-v % 15Q
+  <12>    s*[1.06698]upjisg-v  % 18Q
+  <14.4>  s*[0.987944]upjisg-v % 20Q
+  <17.28> s*[0.987944]upjisg-v % 24Q
+  <20.74> s*[0.960316]upjisg-v % 28Q
+  <24.88> s*[0.914881]upjisg-v % 32Q
+  <-> s*[0.924714]upjisg-v
+}{}
+\fi
+\else
+\if@tecrep
+ \DeclareFontShape{JY1}{mc}{m}{n}{%
+     <5> <6> <7> <8> <9> <10> %sgen*min
+     <10.95><12><14.4><17.28><20.74><24.88> jis
+     <-> jis
+     }{}
+ \DeclareFontShape{JY1}{gt}{m}{n}{%
+     <5> <6> <7> <8> <9> <10> %sgen*goth
+     <10.95><12><14.4><17.28><20.74><24.88> jisg
+     <-> jisg
+     }{}
+\else
+\DeclareFontShape{JY1}{mc}{m}{n}{%
+  <5>     sfixed * [5.1748] jis %  7Q
+  <6>     sfixed * \if@letter [5.9141]\else [6.6533]\fi jis %  8Q or 9Q
+  <7>     sfixed * [7.3926] jis % 10Q
+  <8>     sfixed * [8.1318] jis % 11Q
+  <9>     sfixed * [8.8711] jis % 12Q
+  <10>    sfixed * [9.6104] jis % 13Q
+  <10.95> sfixed * [11.089] jis % 15Q
+  <12>    sfixed * [13.307] jis % 18Q
+  <14.4>  sfixed * [14.785] jis % 20Q
+  <17.28> sfixed * [17.742] jis % 24Q
+  <20.74> sfixed * [20.699] jis % 28Q
+  <24.88> sfixed * [23.656] jis % 32Q
+  <->                       jis % 
+}{}
+\DeclareFontShape{JY1}{gt}{m}{n}{%
+  <5>     sfixed * [5.1748] jisg
+  <6>     sfixed * \if@letter [5.9141]\else [6.6533]\fi jisg
+  <7>     sfixed * [7.3926] jisg
+  <8>     sfixed * [8.1318] jisg
+  <9>     sfixed * [8.8711] jisg
+  <10>    sfixed * [9.6104] jisg
+  <10.95> sfixed * [11.089] jisg
+  <12>    sfixed * [13.307] jisg
+  <14.4>  sfixed * [14.785] jisg
+  <17.28> sfixed * [17.742] jisg
+  <20.74> sfixed * [20.699] jisg
+  <24.88> sfixed * [23.656] jisg
+  <->                       jisg
+}{}
+%%
+\DeclareFontShape{JT1}{mc}{m}{n}{%
+  <5>     sfixed * [5.1748] jis-v %  7Q
+  <6>     sfixed * \if@letter [5.9141]\else [6.6533]\fi jis-v %  8Q or 9Q
+  <7>     sfixed * [7.3926] jis-v % 10Q
+  <8>     sfixed * [8.1318] jis-v % 11Q
+  <9>     sfixed * [8.8711] jis-v % 12Q
+  <10>    sfixed * [9.6104] jis-v % 13Q
+  <10.95> sfixed * [11.089] jis-v % 15Q
+  <12>    sfixed * [13.307] jis-v % 18Q
+  <14.4>  sfixed * [14.785] jis-v % 20Q
+  <17.28> sfixed * [17.742] jis-v % 24Q
+  <20.74> sfixed * [20.699] jis-v % 28Q
+  <24.88> sfixed * [23.656] jis-v % 32Q
+  <->                       jis-v % 
+}{}
+\DeclareFontShape{JT1}{gt}{m}{n}{%
+  <5>     sfixed * [5.1748] jisg-v
+  <6>     sfixed * \if@letter [5.9141]\else [6.6533]\fi jisg-v
+  <7>     sfixed * [7.3926] jisg-v
+  <8>     sfixed * [8.1318] jisg-v
+  <9>     sfixed * [8.8711] jisg-v
+  <10>    sfixed * [9.6104] jisg-v
+  <10.95> sfixed * [11.089] jisg-v
+  <12>    sfixed * [13.307] jisg-v
+  <14.4>  sfixed * [14.785] jisg-v
+  <17.28> sfixed * [17.742] jisg-v
+  <20.74> sfixed * [20.699] jisg-v
+  <24.88> sfixed * [23.656] jisg-v
+  <->                       jisg-v
+}{}
+\fi
+\fi
+\DeclareFontShape{\kenc@JYn}{mc}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\kenc@JYn}{gt}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\kenc@JYn}{mc}{m}{it}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\kenc@JYn}{mc}{m}{sc}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\kenc@JYn}{mc}{m}{sl}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\kenc@JYn}{mc}{bx}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\kenc@JYn}{gt}{m}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\kenc@JYn}{gt}{bx}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\kenc@JTn}{mc}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\kenc@JTn}{gt}{bx}{n}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\kenc@JTn}{mc}{m}{it}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\kenc@JTn}{mc}{m}{sc}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\kenc@JTn}{mc}{m}{sl}{<->ssub*mc/m/n}{}
+\DeclareFontShape{\kenc@JTn}{mc}{bx}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\kenc@JTn}{gt}{m}{it}{<->ssub*gt/m/n}{}
+\DeclareFontShape{\kenc@JTn}{gt}{bx}{it}{<->ssub*gt/m/n}{}
+
+%% from /usr/local/teTeX/share/texmf/tex/latex/base/ot1cmr.fd
+\DeclareFontShape{OT1}{cmr}{m}{n}%
+     {%
+      <-6>cmr5%
+      <6-7>cmr6%
+      <7-8>cmr7%
+      <8-9>cmr8%
+      <9-10>cmr9%
+      <10-12>cmr10%
+      <12-17>cmr12%
+      <17->cmr17%
+      }{}
+\DeclareFontShape{OT1}{cmr}{m}{sl}%
+     {%
+      <-9>cmsl8%
+      <9-10>cmsl9%
+      <10-12>cmsl10%
+      <12->cmsl12%
+      }{}
+\DeclareFontShape{OT1}{cmr}{m}{it}%
+     {%
+      <-8>cmti7%
+      <8-9>cmti8%
+      <9-10>cmti9%
+      <10-12>cmti10%
+      <12->cmti12%
+      }{}
+\DeclareFontShape{OT1}{cmr}{m}{sc}%
+     {%
+      <->cmcsc10%
+      }{}
+\DeclareFontShape{OT1}{cmr}{m}{ui}
+     {%
+      <->cmu10%
+      }{}
+\DeclareFontShape{OT1}{cmr}{b}{n}
+     {%
+      <->cmb10%
+      }{}
+\DeclareFontShape{OT1}{cmr}{bx}{n}
+     {%
+      <-6>cmbx5%
+      <6-7>cmbx6%
+      <7-8>cmbx7%
+      <8-9>cmbx8%
+      <9-10>cmbx9%
+      <10-12>cmbx10%
+      <12->cmbx12%
+      }{}
+\DeclareFontShape{OT1}{cmr}{bx}{sl}
+     {%
+      <->cmbxsl10%
+      }{}
+\DeclareFontShape{OT1}{cmr}{bx}{it}
+     {%
+      <->cmbxti10%
+      }{}
+\DeclareFontShape{OT1}{cmr}{bx}{ui}
+     {%
+      <->sub*cmr/m/ui
+      }{}
+
+%%%%%%
+%% /usr/local/teTeX/share/texmf-dist/tex/latex/base/ot1cmtt.fd
+% \DeclareFontFamily{OT1}{cmtt}{\hyphenchar \font\m@ne}
+\DeclareFontShape{OT1}{cmtt}{m}{n}%
+     {%
+      <5><6><7><8>cmtt8<9>cmtt9%
+      <10><10.95>cmtt10%
+      <12><14.4><17.28><20.74><24.88>cmtt12%
+      <->cmtt10%
+      }{}
+%%%%%% make sure subst shapes are available
+\DeclareFontShape{OT1}{cmtt}{m}{it}
+     {%
+      <5><6><7><8><9>%
+      <10><10.95><12><14.4><17.28><20.74><24.88>cmitt10%
+      <->cmitt10%
+      }{}
+\DeclareFontShape{OT1}{cmtt}{m}{sl}
+     {%
+      <5><6><7><8><9>%
+      <10><10.95><12><14.4><17.28><20.74><24.88>cmsltt10%
+      <->cmsltt10%
+      }{}
+\DeclareFontShape{OT1}{cmtt}{m}{sc}
+     {%
+      <5><6><7><8><9>%
+      <10><10.95><12><14.4><17.28><20.74><24.88>cmtcsc10%
+      <->cmtcsc10%
+      }{}
+
+%% from /usr/local/share/texmf/tex/latex/base/omlcmm.fd
+% \DeclareFontFamily{OML}{cmm}{\skewchar\font127 }
+\DeclareFontShape{OML}{cmm}{m}{it}
+    { <5> <6> <7> <8> <9> gen * cmmi
+      <10><10.95>cmmi10
+%     <12><14.4><17.28><20.74><24.88>cmmi12
+      <12->cmmi12
+      <->cmmi10
+      }{}
+\DeclareFontShape{OML}{cmm}{b}{it}{%
+      <5> <6> <7> <8> <9> gen * cmmib
+%     <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> cmmib10
+      <10-> cmmib10
+      <->cmmib10
+      }{}
+\DeclareFontShape{OML}{cmm}{bx}{it}
+   {<-> ssub * cmm/b/it}{}
+
+%% from /usr/local/share/texmf/tex/latex/base/omscmsy.fd
+% \DeclareFontFamily{OMS}{cmsy}{\skewchar\font48 }
+\DeclareFontShape{OMS}{cmsy}{m}{n}{%
+      <5> <6> <7> <8> <9> <10> gen * cmsy
+%     <10.95> <12> <14.4> <17.28> <20.74> <24.88> cmsy10
+      <10.95-> cmsy10
+      <-> cmsy10
+      }{}
+\DeclareFontShape{OMS}{cmsy}{b}{n}{%
+      <5> <6> <7> <8> <9> gen * cmbsy
+%     <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>cmbsy10
+      <10-> cmbsy10
+      <-> cmbsy10
+      }{}
+
+%% from /usr/local/share/texmf/tex/latex/base/ulasy.fd
+\DeclareFontFamily{U}{lasy}{}
+\DeclareFontShape{U}{lasy}{m}{n}{ <5> <6> <7> <8> <9> gen * lasy
+      <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>lasy10
+      <-> lasy10}{}
+\DeclareFontShape{U}{lasy}{b}{n}{ <-10> ssub * lasy/m/n
+     <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>lasyb10
+      <-> lasyb10}{}
+
+%% from /usr/local/share/texmf/tex/latex/amsfonts/umsa.fd
+\DeclareFontFamily{U}{msa}{}
+\DeclareFontShape{U}{msa}{m}{n}{
+  <5> <6> <7> <8> <9> gen * msam
+  <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> msam10
+  <-> msam10
+  }{}
+
+%% from /usr/local/share/texmf/tex/latex/amsfonts/umsb.fd
+\DeclareFontFamily{U}{msb}{}
+\DeclareFontShape{U}{msb}{m}{n}{
+  <5> <6> <7> <8> <9> gen * msbm
+  <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88> msbm10
+  <-> msbm10
+  }{}
+
+\xspcode`+=3
+\xspcode`\%=3
+\xspcode`^^80=3
+\xspcode`^^81=3
+\xspcode`^^82=3
+\xspcode`^^83=3
+\xspcode`^^84=3
+\xspcode`^^85=3
+\xspcode`^^86=3
+\xspcode`^^87=3
+\xspcode`^^88=3
+\xspcode`^^89=3
+\xspcode`^^8a=3
+\xspcode`^^8b=3
+\xspcode`^^8c=3
+\xspcode`^^8d=3
+\xspcode`^^8e=3
+\xspcode`^^8f=3
+\xspcode`^^90=3
+\xspcode`^^91=3
+\xspcode`^^92=3
+\xspcode`^^93=3
+\xspcode`^^94=3
+\xspcode`^^95=3
+\xspcode`^^96=3
+\xspcode`^^97=3
+\xspcode`^^98=3
+\xspcode`^^99=3
+\xspcode`^^9a=3
+\xspcode`^^9b=3
+\xspcode`^^9c=3
+\xspcode`^^9d=3
+\xspcode`^^9e=3
+\xspcode`^^9f=3
+\xspcode`^^a0=3
+\xspcode`^^a1=3
+\xspcode`^^a2=3
+\xspcode`^^a3=3
+\xspcode`^^a4=3
+\xspcode`^^a5=3
+\xspcode`^^a6=3
+\xspcode`^^a7=3
+\xspcode`^^a8=3
+\xspcode`^^a9=3
+\xspcode`^^aa=3
+\xspcode`^^ab=3
+\xspcode`^^ac=3
+\xspcode`^^ad=3
+\xspcode`^^ae=3
+\xspcode`^^af=3
+\xspcode`^^b0=3
+\xspcode`^^b1=3
+\xspcode`^^b2=3
+\xspcode`^^b3=3
+\xspcode`^^b4=3
+\xspcode`^^b5=3
+\xspcode`^^b6=3
+\xspcode`^^b7=3
+\xspcode`^^b8=3
+\xspcode`^^b9=3
+\xspcode`^^ba=3
+\xspcode`^^bb=3
+\xspcode`^^bc=3
+\xspcode`^^bd=3
+\xspcode`^^be=3
+\xspcode`^^bf=3
+\xspcode`^^c0=3
+\xspcode`^^c1=3
+\xspcode`^^c2=3
+\xspcode`^^c3=3
+\xspcode`^^c4=3
+\xspcode`^^c5=3
+\xspcode`^^c6=3
+\xspcode`^^c7=3
+\xspcode`^^c8=3
+\xspcode`^^c9=3
+\xspcode`^^ca=3
+\xspcode`^^cb=3
+\xspcode`^^cc=3
+\xspcode`^^cd=3
+\xspcode`^^ce=3
+\xspcode`^^cf=3
+\xspcode`^^d0=3
+\xspcode`^^d1=3
+\xspcode`^^d2=3
+\xspcode`^^d3=3
+\xspcode`^^d4=3
+\xspcode`^^d5=3
+\xspcode`^^d6=3
+\xspcode`^^d7=3
+\xspcode`^^d8=3
+\xspcode`^^d9=3
+\xspcode`^^da=3
+\xspcode`^^db=3
+\xspcode`^^dc=3
+\xspcode`^^dd=3
+\xspcode`^^de=3
+\xspcode`^^df=3
+\xspcode`^^e0=3
+\xspcode`^^e1=3
+\xspcode`^^e2=3
+\xspcode`^^e3=3
+\xspcode`^^e4=3
+\xspcode`^^e5=3
+\xspcode`^^e6=3
+\xspcode`^^e7=3
+\xspcode`^^e8=3
+\xspcode`^^e9=3
+\xspcode`^^ea=3
+\xspcode`^^eb=3
+\xspcode`^^ec=3
+\xspcode`^^ed=3
+\xspcode`^^ee=3
+\xspcode`^^ef=3
+\xspcode`^^f0=3
+\xspcode`^^f1=3
+\xspcode`^^f2=3
+\xspcode`^^f3=3
+\xspcode`^^f4=3
+\xspcode`^^f5=3
+\xspcode`^^f6=3
+\xspcode`^^f7=3
+\xspcode`^^f8=3
+\xspcode`^^f9=3
+\xspcode`^^fa=3
+\xspcode`^^fb=3
+\xspcode`^^fc=3
+\xspcode`^^fd=3
+\xspcode`^^fe=3
+\xspcode`^^ff=3
+
+%\def\@setfontsize#1#2#3{\@nomath#1%
+% \ifx\protect\@typeset@protect
+%   \let\@currsize#1%
+% \fi
+% \fontsize{#2}{#3}\selectfont
+% \kanjiskip=0zw \@plus .1zw \@minus .025zw
+% \xkanjiskip=0.25em \@plus 0.15em \@minus 0.06em
+%}
+
+\if@tecrep
+ %% \Cjascale (texlive 2018以降)
+ \if@enable@uptex
+  \def\Cjascale{0.924714}% JY2
+ \else
+  \def\Cjascale{0.96104}% JY1
+ \fi
+ \renewcommand{\normalsize}{%
+  \@setfontsize\normalsize\@ixpt{20.5\@Q}%
+  \kanjiskip\z@ \@plus .1zw \@minus .05zw
+  \abovedisplayskip 9\p@ \@plus 3\p@ \@minus 4\p@
+  \abovedisplayshortskip \z@ \@plus 2.5\p@
+  \belowdisplayshortskip 5\p@ \@plus 2\p@ \@minus 2\p@
+   \belowdisplayskip \abovedisplayskip
+   \let\@listi\@listI}
+ \normalsize
+ \setbox0\hbox{\char\euc"A1A1}% "
+ \setlength\Cht{\ht0}
+ \setlength\Cdp{\dp0}
+ \setlength\Cwd{\wd0}
+ \setlength\Cvs{\baselineskip}
+ \setlength\Chs{\wd0}
+
+ \newcommand{\small}{%
+  \@setfontsize\small\@viiipt{18\@Q}%
+  \kanjiskip\z@ \@plus .1zw \@minus .05zw
+  \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
+  \abovedisplayshortskip \z@ \@plus\p@
+  \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+  \def\@listi{\leftmargin\leftmargini
+              \topsep 3\p@ \@plus \p@ \@minus \p@
+              \parsep 1\p@ \@plus \p@ \@minus \p@
+              \itemsep \parsep}%
+  \belowdisplayskip \abovedisplayskip}
+
+ \newcommand{\footnotesize}{%
+  \@setfontsize\footnotesize\@viipt{16\@Q}%
+  \kanjiskip\z@ \@plus .1zw \@minus .05zw
+  \abovedisplayskip 5\p@ \@plus 1.5\p@ \@minus 3\p@
+  \abovedisplayshortskip \z@ \@plus\p@
+  \belowdisplayshortskip 2.5\p@ \@plus \p@ \@minus 1.5\p@
+  \def\@listi{\leftmargin\leftmargini
+              \topsep 2\p@ \@plus\p@ \@minus\p@
+              \parsep 1\p@ \@plus\p@ \@minus\p@
+              \itemsep \parsep}%
+  \belowdisplayskip \abovedisplayskip}
+
+ \newcommand{\scriptsize}{\@setfontsize\scriptsize\@vipt\@viiipt}
+ \newcommand{\tiny}{\@setfontsize\tiny\@vpt\@vipt}
+ \newcommand{\large}{\@setfontsize\large\@xpt{22\@Q}}
+ \newcommand{\Large}{\@setfontsize\Large\@xipt{27\@Q}}
+ \newcommand{\LARGE}{\@setfontsize\LARGE\@xiipt{33\@Q}}
+ \newcommand{\huge}{\@setfontsize\huge\@xivpt{25}}
+ \newcommand{\Huge}{\@setfontsize\Huge\@xviipt{30}}
+
+ \headheight \z@
+ \headsep    \z@
+ \topskip    1\Cht
+ \footskip   9.5mm
+ \maxdepth .5\topskip
+ \if@enable@uptex
+  \textwidth 57\Cwd %(a4で左右15mmくらいの余白をとる)
+ \else
+  \textwidth 58\Cwd %(a4で左右15mmくらいの余白をとる)
+ \fi
+ %\@settopoint\textwidth
+ \textheight 49\Cvs
+ \advance \textheight \topskip
+ \advance \textheight .15mm
+ %\@settopoint\textheight
+\else
+ %% \Cjascale (texlive 2018以降)
+ \if@enable@uptex
+  \def\Cjascale{0.948427}% JY2 0.924714
+ \else
+  \def\Cjascale{0.985678}% JY1 0.96104
+ \fi
+ \renewcommand{\normalsize}{%
+  \@setfontsize\normalsize\@ixpt{19\@Q}%
+  \kanjiskip\z@ \@plus .1zw \@minus .05zw
+  \abovedisplayskip 9\p@ \@plus 3\p@ \@minus 4\p@
+  \abovedisplayshortskip \z@ \@plus 2.5\p@
+  \belowdisplayshortskip 5\p@ \@plus 2\p@ \@minus 2\p@
+   \belowdisplayskip \abovedisplayskip
+   \let\@listi\@listI}
+ \normalsize
+ \setbox0\hbox{\char\euc"A1A1}% "
+ \setlength\Cht{\ht0}
+ \setlength\Cdp{\dp0}
+ \setlength\Cwd{\wd0}
+ \setlength\Cvs{\baselineskip}
+ \setlength\Chs{\wd0}
+
+ \if@letter
+  \newcommand{\Small}{\@setfontsize\Small\@viiipt{18\@Q}%
+   \kanjiskip\z@ \@plus .1zw \@minus .05zw
+  }
+ \else
+  \newcommand{\Small}{\@setfontsize\Small\@viiipt{16\@Q}%
+   \kanjiskip\z@ \@plus .1zw \@minus .05zw
+  }
+ \fi
+
+ \newcommand{\small}{%
+  \@setfontsize\small\@viipt{13\@Q}%
+  \kanjiskip\z@ \@plus .1zw \@minus .05zw
+  \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
+  \abovedisplayshortskip \z@ \@plus\p@
+  \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+  \def\@listi{\leftmargin\leftmargini
+              \topsep 3\p@ \@plus \p@ \@minus \p@
+              \parsep 1\p@ \@plus \p@ \@minus \p@
+              \itemsep \parsep}%
+  \belowdisplayskip \abovedisplayskip}
+ \newcommand{\footnotesize}{%
+  \@setfontsize\footnotesize\@vipt{13\@Q}%
+  \kanjiskip\z@ \@plus .1zw \@minus .05zw
+  \abovedisplayskip 5\p@ \@plus 1.5\p@ \@minus 3\p@
+  \abovedisplayshortskip \z@ \@plus\p@
+  \belowdisplayshortskip 2.5\p@ \@plus \p@ \@minus 1.5\p@
+  \def\@listi{\leftmargin\leftmargini
+              \topsep 2\p@ \@plus\p@ \@minus\p@
+              \parsep 1\p@ \@plus\p@ \@minus\p@
+              \itemsep \parsep}%
+  \belowdisplayskip \abovedisplayskip}
+
+ %%\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt}
+ \let\scriptsize\footnotesize
+ \newcommand{\tiny}{\@setfontsize\tiny\@vpt\@vipt}
+ \newcommand{\large}{\@setfontsize\large\@xpt{19\@Q}}
+ \newcommand{\Large}{\@setfontsize\Large\@xipt{27\@Q}}
+ \newcommand{\LARGE}{\@setfontsize\LARGE\@xiipt{33\@Q}}
+ \newcommand{\huge}{\@setfontsize\huge\@xivpt{25}}
+ \newcommand{\Huge}{\@setfontsize\Huge\@xviipt{30}}
+
+ \headheight 12\@Q %% 11H
+ \headsep    6.25mm
+ \topskip    1\Cht
+ \footskip   7.5mm
+ \maxdepth .5\topskip
+ \textwidth 151.5mm %% 24w x 2 + 30H
+ %\@settopoint\textwidth
+ \textheight 43\Cvs
+ \advance \textheight \topskip
+ \advance \textheight .15mm
+ %\@settopoint\textheight
+\fi
+
+\if@twocolumn
+  \setlength\marginparsep{5mm}
+\else
+  \setlength\marginparsep{5mm}
+\fi
+\setlength\marginparpush{5pt}
+
+%\iftombow
+\topmargin\paperheight
+\advance \topmargin -\textheight
+\advance \topmargin -\headheight
+\advance \topmargin -\headsep
+\advance \topmargin -\footskip
+\divide \topmargin \tw@
+\advance \topmargin -1.25mm
+\advance \topmargin -1in
+%\@settopoint\topmargin
+\oddsidemargin\paperwidth
+\advance \oddsidemargin -\textwidth
+\divide \oddsidemargin \tw@
+\advance \oddsidemargin -1in
+%\@settopoint\oddsidemargin
+\evensidemargin\oddsidemargin
+%\@settopoint\evensidemargin
+%\fi
+
+\marginparwidth 20mm
+%\@settopoint\marginparwidth
+
+\if@tecrep
+ \setlength\footnotesep{2.8mm}
+\else
+ \setlength\footnotesep{2.275mm}
+\fi
+\setlength{\skip\footins}{1\Cvs plus .9\Cvs \@minus .3\Cvs}
+\setlength\intextsep   {1\Cvs \@plus .75\Cvs \@minus .25\Cvs}
+\setlength\floatsep    {1\Cvs \@plus .75\Cvs \@minus .25\Cvs}
+\setlength\dblfloatsep {1\Cvs \@plus .75\Cvs \@minus .25\Cvs}
+\setlength\textfloatsep{1.5\Cvs \@plus .75\Cvs \@minus .25\Cvs}
+\setlength\dbltextfloatsep{1.5\Cvs \@plus .75\Cvs \@minus .25\Cvs}
+
+\setlength\@fptop{0\p@ \@plus 1fil}
+\setlength\@fpsep{8\p@ \@plus 2fil}
+\setlength\@fpbot{0\p@ \@plus 1fil}
+\setlength\@dblfptop{0\p@ \@plus 1fil}
+\setlength\@dblfpsep{8\p@ \@plus 2fil}
+\setlength\@dblfpbot{0\p@ \@plus 1fil}
+\setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@}
+
+\def\@listi{\leftmargin\leftmargini
+  \parsep  4\p@ \@plus2\p@ \@minus\p@
+  \topsep  8\p@ \@plus2\p@ \@minus4\p@
+  \itemsep 4\p@ \@plus2\p@ \@minus\p@}
+\let\@listI\@listi
+\@listi
+\def\@listii{\leftmargin\leftmarginii
+   \labelwidth\leftmarginii \advance\labelwidth-\labelsep
+   \topsep\z@ \@plus\p@ \@minus\p@
+   \parsep\z@ \@plus\p@ \@minus\p@
+   \itemsep\parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+   \labelwidth\leftmarginiii \advance\labelwidth-\labelsep
+   \topsep\z@ \@plus\p@ \@minus\p@
+   \parsep\z@
+   \partopsep\z@ \@plus\z@ \@minus\p@
+   \itemsep\topsep}
+\def\@listiv {\leftmargin\leftmarginiv
+              \labelwidth\leftmarginiv
+              \advance\labelwidth-\labelsep}
+\def\@listv  {\leftmargin\leftmarginv
+              \labelwidth\leftmarginv
+              \advance\labelwidth-\labelsep}
+\def\@listvi {\leftmargin\leftmarginvi
+              \labelwidth\leftmarginvi
+              \advance\labelwidth-\labelsep}
+
+\if@tecrep
+ \columnsep 2zw
+\else
+ \columnsep 30\@Q
+\fi
+\columnseprule 0\p@
+\lineskip 2\p@ 
+\normallineskip 2\p@
+\renewcommand{\baselinestretch}{}
+\parskip\z@    %% 0\p@ \@plus \p@
+\parindent 1zw %% 1\Cwd
+
+\@lowpenalty   51
+\@medpenalty  151
+\@highpenalty 301
+\setcounter{topnumber}{6}
+\setcounter{bottomnumber}{5}
+\setcounter{totalnumber}{11}
+\setcounter{dbltopnumber}{5}
+\renewcommand{\topfraction}{.95}
+\renewcommand{\bottomfraction}{.95}
+\renewcommand{\textfraction}{.05}
+\renewcommand{\floatpagefraction}{.05}
+\renewcommand{\dbltopfraction}{.95}
+\renewcommand{\dblfloatpagefraction}{.05}
+
+\if@Proof
+ \def\@Rtop{\rlap{\smash{\rule[-\headsep]{0.05mm}{10mm}%
+  \rule[-\headsep]{10mm}{0.05mm}}}}
+ \def\@Ltop{\llap{\smash{\rule[-\headsep]{10mm}{0.05mm}%
+  \rule[-\headsep]{0.05mm}{10mm}}}}
+ \def\@Rbot{\rlap{\smash{\raisebox{1\footskip}
+  {\rule[-10mm]{0.05mm}{10mm}\rule{10mm}{0.05mm}}}}}
+ \def\@Lbot{\llap{\smash{\raisebox{1\footskip}
+  {\rule{10mm}{0.05mm}\rule[-10mm]{0.05mm}{10mm}}}}}
+\else
+ \let\@Rtop\relax\let\@Ltop\relax\let\@Rbot\relax\let\@Lbot\relax
+\fi
+
+%\newif\if@ieice@field@C \@ieice@field@Cfalse
+
+\def\field#1{%
+ \if@tecrep\else
+  \def\@tempa{#1}%
+  \def\f@A{A}\def\f@B{B}\def\f@C{C}\def\f@D{D}%
+  \def\f@DI{DI}\def\f@DII{DII}%
+  \ifx \@tempa\f@A \gdef\@field{A}\else
+   \ifx \@tempa\f@B \gdef\@field{B}\else
+    \ifx \@tempa\f@C \gdef\@field{C}\else % \global\@ieice@field@Ctrue
+     \ifx \@tempa\f@D \gdef\@field{D}\else
+      \ifx \@tempa\f@DI \gdef\@field{D--{\rmfamily\bfseries I}}\else
+       \ifx \@tempa\f@DII \gdef\@field{D--{\rmfamily\bfseries II}}\else
+        \gdef\@field{X}%
+  \fi\fi\fi\fi\fi\fi
+ \fi
+}
+
+\def\vol#1{% Vol.J86 = Year 2003
+ \def\@tempa{#1}%
+ \ifx\@tempa\empty
+  \gdef\@vol{Jxx--\@field}\gdef\ft@year{xxxx}\gdef\hd@year{xxxx}%
+ \else
+  \def\@tempa{x}%
+  \if\@tempa #1\relax
+   \gdef\@vol{Jxx--\@field}%
+   \gdef\ft@year{xxxx}%
+   \gdef\hd@year{xxxx}%
+  \else
+   \gdef\@vol{J#1--\@field}%
+   \@tempcnta=#1\relax
+   \advance \@tempcnta 1917\relax
+   \xdef\ft@year{\the\@tempcnta}%
+   \xdef\hd@year{\the\@tempcnta}%
+  \fi
+ \fi
+}
+
+\def\no#1{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\empty \gdef\@no{xx}\else \gdef\@no{#1}\fi
+}
+
+\def\@field{}
+\def\@vol{}
+\def\hd@year{}
+\def\ft@year{}
+\def\@no{}
+
+\def\typeofletter#1{\gdef\@typeofletter{#1}}
+\def\@typeofletter{}
+\def\Sissue#1{\gdef\@Sissue{#1}}
+\def\@Sissue{}
+
+\if@letter\typeofletter{研究速報}\fi
+\field{X}
+\no{xx}
+\vol{x}
+
+\let\head@font\relax
+\DeclareFixedFont{\KFfoot}{\kenc@JYn}{gt}{m}{n}{10\@JQ}
+\def\foot@font{\Small\sffamily\KFfoot}
+\def\nombre@font{\Small\sffamily}
+%% P (paper)
+\def\t@typefont@P{%
+ \Huge\baselineskip\z@ %% 24\@JQ
+}
+%% LP (electronicsletter)
+\def\t@typefont@LP{%
+ \LARGE\baselineskip\z@ %% 18\@JQ
+}
+%% L (letter)
+\let\t@typefont@L\huge
+\def\head@type#1{%% 20\@JQ 平2
+ \if@cameraready
+  %\@ifundefined{PSTricksLoaded}{\scalebox{1}[0.8]{\t@typefont@L #1}}
+  % {\def\tmp@scalebox##1{\pst@makebox{\@scalebox{##1}}}%
+  %  \ifx\tmp@scalebox\scalebox
+  %   \scalebox{1 0.8}{\t@typefont@L #1}%
+  %  \else
+  \scalebox{1}[0.8]{\t@typefont@L #1}%
+  %  \fi
+  % }%
+ \else
+  {\t@typefont@L #1}%
+ \fi
+}
+
+\if@cameraready
+ \def\hd@typeofletter{%
+  \def\@tempx{ショートノート}%
+  \ifx\@typeofletter\@tempx
+   シ\kern-.25zw ョ\kern-.25zw ー\kern-.25zw ト\kern-.35zw 
+   ノ\kern-.25zw ー\kern-.25zw ト%
+  \else
+   {\kanjiskip=-.075zw \@typeofletter}\hskip1mm
+  \fi
+ }
+\else
+ \def\hd@typeofletter{\@typeofletter}
+\fi
+
+\def\ps@ieicej{\let\@mkboth\@gobbletwo
+ \if@letter
+  \def\hrulefill{\leaders\hrule height-1.35mm depth1.85mm\hfil}%
+  \def\@oddhead{\@Ltop
+   \smash{\hbox to \textwidth{%
+    \raisebox{-3mm}{\head@type{\hd@typeofletter}}\hrulefill
+      \llap{\normalsize\bfseries\mathversion{bold}\@Sissue}}}%
+   \@Rtop}%
+  \def\@evenhead{\@Ltop
+   \rlap{\smash{\hbox to \textwidth{%
+    \raisebox{-3mm}{\head@type{\hd@typeofletter}}\hrulefill
+   }}}\hfil
+   \ifx\@Sissue\empty
+    {\Small\head@font 電子情報通信学会論文誌\ \hd@year 
+     /\@no\ Vol.\ \@vol\ No.\,\@no}%
+   \else
+    {\normalsize\bfseries\mathversion{bold}\@Sissue}%
+   \fi
+   \@Rtop}%
+ \else
+  \def\hrulefill{\leaders\hrule height-1.5mm depth1.75mm\hfil}%
+  \if@electronicsletter
+   \def\@oddhead{\@Ltop
+    \smash{\hbox to \textwidth{%
+     \raisebox{-3mm}{\csname t@typefont@\@type\endcsname\tl@type}\hrulefill
+      \llap{\normalsize\bfseries\mathversion{bold}\@Sissue}}}%
+   \@Rtop}%
+  \else
+   \def\@oddhead{\@Ltop
+    \smash{\hbox to \textwidth{%
+     \rule[-1.75mm]{14mm}{0.25mm}%
+     \raisebox{-3mm}{\csname t@typefont@\@type\endcsname\tl@type}\hrulefill
+      \llap{\normalsize\bfseries\mathversion{bold}\@Sissue}}}%
+   \@Rtop}%
+  \fi
+  \let\@evenhead\@oddhead
+ \fi
+ \def\@oddfoot{\@Lbot\hfil
+  {\foot@font 電子情報通信学会論文誌\hskip1zw
+    \@field\hskip1zw Vol.\ \@vol\hskip1zw No.\,\@no\hskip1zw
+   pp.\,\thepage --\pageref{ieicej@lastpage}\hskip1zw
+   %%\ft@year 年\@no 月
+   {\normalfont\copyright}(社)電子情報通信学会\ft@year
+  }\hfil
+    \llap{{\nombre@font\thepage\hskip3mm}}%
+  \@Rbot}%
+ \def\@evenfoot{\@Lbot
+  \rlap{\hskip3mm{\nombre@font\thepage}}\hfil
+   {\foot@font 電子情報通信学会論文誌\hskip1zw
+    \@field\hskip1zw Vol.\ \@vol\hskip1zw
+    No.\,\@no\hskip1zw pp.\,\thepage --\pageref{ieicej@lastpage}\hskip1zw 
+    %%\ft@year 年\@no 月
+    {\normalfont\copyright}(社)電子情報通信学会\ft@year
+   }\hfil
+  \@Rbot}%
+}
+
+\def\ps@IEICEJ{\let\@mkboth\@gobbletwo
+ \def\@oddfoot{\@Lbot\hfil
+  {\nombre@font \thepage}\hskip3mm
+  \@Rbot}%
+ \def\@evenfoot{\@Lbot
+  \hskip3mm{\nombre@font \thepage}\hfil
+  \@Rbot}
+ \def\@oddhead{\@Ltop
+  \rlap{\hbox to \textwidth{\smash{\rule[-1.75mm]{\textwidth}{0.25mm}}}}%
+  \odd@header\hfil
+  \@Rtop}%
+ \def\@evenhead{\@Ltop
+  \rlap{\hbox to \textwidth{\smash{\rule[-1.75mm]{\textwidth}{0.25mm}}}}\hfil
+   {\Small\head@font 電子情報通信学会論文誌\ 
+    \hd@year /\@no\ Vol.\ {\let\bfseries\relax \@vol}\ No.\,\@no}%
+  \@Rtop}%
+}
+
+\def\odd@header{%
+ \if@letter
+  {\Small\head@font レ\hskip1zw タ\hskip1zw ー}%
+ \else
+  \if@electronicsletter
+   {\Small\head@font レ\hskip1zw タ\hskip1zw ー}%
+  \else
+   \setbox\@tempboxb\hbox{\Small\head@font\def\\{\unskip\ignorespaces}%
+   \hd@type /\kern\z@\hd@title}%
+    \ifdim \wd\@tempboxb > \textwidth
+     \ieicej@warning{header is too long. make it shorter. 
+      ^^J\@spaces For example, \string\title[header title]{title}}%
+    \fi
+   \box\@tempboxb
+  \fi
+ \fi
+}
+
+\def\ps@empty{%
+ \def\@oddhead{\@Ltop\hfil\@Rtop}%
+ \let\@evenhead\@oddhead
+ \def\@oddfoot{\@Lbot\hfil\@Rbot}%
+ \let\@evenfoot\@oddfoot
+ \let\@mkboth\@gobbletwo
+}
+
+\if@tecrep
+ \def\ps@plain{\let\@mkboth\@gobbletwo
+   \let\ps@jpl@in\ps@plain
+   \def\@oddhead{\@Ltop\hfil\@Rtop}%
+   \def\@oddfoot{\@Lbot\reset@font\hfil ---\ \thepage\ ---\@Rbot}% \hfil
+   \let\@evenhead\@oddhead
+   \let\@evenfoot\@oddfoot}
+\fi
+
+\def\jtitle{\@ifnextchar[% ]
+ {\d@jtitle}{\s@jtitle}}
+\def\d@jtitle[#1]#2{\gdef\hd@title{#1}\gdef\@jtitle{#2}}
+\def\s@jtitle#1{\gdef\hd@title{#1}\gdef\@jtitle{#1}}
+\def\@jtitle{}
+\def\hd@title{}
+
+\def\etitle#1{\gdef\@etitle{#1}}
+\def\@etitle{}
+
+\def\@fnsymbol#1{\ifcase#1 \or % \ensuremath{
+ \dagger\or
+ {\dagger}{\dagger}\or
+ {\dagger}{\dagger}{\dagger}\or
+ {\dagger}{\dagger}{\dagger}{\dagger}\or
+ {\dagger}{\dagger}{\dagger}{\dagger}{\dagger}\or
+ {\dagger}{\dagger}{\dagger}{\dagger}{\dagger}{\dagger}\or
+ {\dagger}{\dagger}{\dagger}{\dagger}{\dagger}{\dagger}{\dagger}\or
+ {\dagger}{\dagger}{\dagger}{\dagger}{\dagger}{\dagger}{\dagger}{\dagger}\or
+ {\dagger}{\dagger}{\dagger}{\dagger}{\dagger}{\dagger}%
+  {\dagger}{\dagger}{\dagger}\or
+ *\or {*}{*}\or {*}{*}{*}\or {*}{*}{*}{*}\or 
+  {*}{*}{*}{*}{*}\or {*}{*}{*}{*}{*}{*}\or %% ((((((((((((((((((((
+ a)\or b)\or c)\or d)\or e)\or f)\or g)\or h)\or i)\or j)\or
+ k)\or l)\or m)\or n)\or o)\or p)\or q)\or r)\or s)\or t)\else
+  \@ctrerr\fi}% }
+%% mathTimePlus redefines \@fnsymbol. 
+\let\ieicej@fnsymbol\@fnsymbol
+
+\newtoks\@authorlist
+\newcount\@authorcnt
+\newcount\@alcnt
+\newcount\p@alcnt
+ \p@alcnt=9\relax
+\newcount\@totalnumber
+\newdimen\authornamesep
+ \authornamesep\z@
+%% \authornamesep1zw
+
+\def\authorlist#1{%
+ \if@paper
+  \@authorlist={#1}\the\@authorlist
+ \else
+  \let\authorentry\Lauthorentry
+  \@authorlist={#1}\@chkmbrship
+ \fi
+}
+
+\def\Lauthorentry{\@ifnextchar[%% ]
+ {\TRL@ae}{\NL@ae}}
+
+\def\NL@ae#1#2#3#4{\@ifnextchar[% ]
+ {\L@aeP{#1}{#2}{#3}{#4}}%
+ {\L@ae{#1}{#2}{#3}{#4}}}
+
+\def\TRL@ae[#1]#2#3#4#5{\@ifnextchar[% ]
+ {\TRL@aeP[#1]{#2}{#3}{#4}{#5}}%
+ {\TRL@aeNP[#1]{#2}{#3}{#4}{#5}}}
+
+\def\L@ae#1#2#3#4{%
+ \@tempcnta\z@
+ \advance \@authorcnt \@ne
+ \get@al{#4}%
+ \def\al@none{0}%
+ \expandafter\protected@xdef
+  \csname @jauthormembership\number\@authorcnt\endcsname{%
+   \csname #3J@member\endcsname}%
+ \fmt@Jan{#1}%
+ \expandafter\protected@xdef\csname @Jauthorname\number\@authorcnt\endcsname{%
+  \@authorname\kern\z@\plural@affi
+   \csname @jauthormembership\number\@authorcnt\endcsname}%
+ \fmt@Ean{#2}%
+ \expandafter\protected@xdef\csname @Eauthorname\number\@authorcnt\endcsname{%
+  \@authorname\nobreak\plural@affi}%
+ \expandafter\protected@xdef
+  \csname @authormembership\number\@authorcnt\endcsname{%
+   \csname #3@member\endcsname}%
+ \expandafter\protected@xdef
+  \csname @authormembership\number\@authorcnt*\endcsname{%
+   \csname #3@members\endcsname}%
+ \global\@totalnumber=\@authorcnt
+ \def\plural@affi{}%
+}
+
+\def\L@aeP#1#2#3#4[#5]{%
+ \@tempcnta\z@
+ \advance \@authorcnt \@ne
+ \get@al{#4}%
+ \def\al@none{0}%
+ \@tempcnta\z@
+ \get@p@al{#5}%
+ \expandafter\protected@xdef
+  \csname @jauthormembership\number\@authorcnt\endcsname{%
+   \csname #3J@member\endcsname}%
+ \fmt@Jan{#1}%
+ \expandafter\protected@xdef\csname @Jauthorname\number\@authorcnt\endcsname{%
+  \@authorname\kern\z@\plural@affi\plural@p@affi
+   \csname @jauthormembership\number\@authorcnt\endcsname
+ }%
+ \fmt@Ean{#2}%
+ \expandafter\protected@xdef\csname @Eauthorname\number\@authorcnt\endcsname{%
+  \@authorname\nobreak\plural@affi\nobreak\plural@p@affi
+ }%
+ \expandafter\protected@xdef
+  \csname @authormembership\number\@authorcnt\endcsname{%
+   \csname #3@member\endcsname}%
+ \expandafter\protected@xdef
+  \csname @authormembership\number\@authorcnt*\endcsname{%
+   \csname #3@members\endcsname}%
+ \global\@totalnumber=\@authorcnt
+ \def\plural@affi{}%
+ \def\plural@p@affi{}%
+}
+
+\def\TRL@aeNP[#1]#2#3#4#5{%
+ \@tempcnta\z@
+ \advance \@authorcnt \@ne
+ \GetEma{#1}%
+ \get@al{#5}%
+ \def\al@none{0}%
+ \expandafter\protected@xdef
+  \csname @jauthormembership\number\@authorcnt\endcsname{%
+   \csname #4J@member\endcsname}%
+ \fmt@Jan{#2}%
+ \expandafter\protected@xdef\csname @Jauthorname\number\@authorcnt\endcsname{%
+  \@authorname\kern\z@\plural@affi\email@affi
+   \csname @jauthormembership\number\@authorcnt\endcsname}%
+ \fmt@Ean{#3}%
+ \expandafter\protected@xdef\csname @Eauthorname\number\@authorcnt\endcsname{%
+  \@authorname\nobreak\plural@affi\email@affi}%
+ \expandafter\protected@xdef
+  \csname @authormembership\number\@authorcnt\endcsname{%
+   \csname #4@member\endcsname}%
+ \expandafter\protected@xdef
+  \csname @authormembership\number\@authorcnt*\endcsname{%
+   \csname #4@members\endcsname}%
+ \global\@totalnumber=\@authorcnt
+ \def\plural@affi{}%
+}
+
+\def\TRL@aeP[#1]#2#3#4#5[#6]{%
+ \@tempcnta\z@
+ \advance \@authorcnt \@ne
+ \GetEma{#1}%
+ \get@al{#5}%
+ \def\al@none{0}%
+ \@tempcnta\z@
+ \get@p@al{#6}%
+ \expandafter\protected@xdef
+  \csname @jauthormembership\number\@authorcnt\endcsname{%
+   \csname #4J@member\endcsname}%
+ \fmt@Jan{#2}%
+ \expandafter\protected@xdef\csname @Jauthorname\number\@authorcnt\endcsname{%
+  \@authorname\kern\z@\plural@affi\plural@p@affi\email@affi
+   \csname @jauthormembership\number\@authorcnt\endcsname
+ }%
+ \fmt@Ean{#3}%
+ \expandafter\protected@xdef\csname @Eauthorname\number\@authorcnt\endcsname{%
+  \@authorname\nobreak\plural@affi\nobreak\plural@p@affi\nobreak\email@affi
+ }%
+ \expandafter\protected@xdef
+  \csname @authormembership\number\@authorcnt\endcsname{%
+   \csname #4@member\endcsname}%
+ \expandafter\protected@xdef
+  \csname @authormembership\number\@authorcnt*\endcsname{%
+   \csname #4@members\endcsname}%
+ \global\@totalnumber=\@authorcnt
+ \def\plural@affi{}%
+ \def\plural@p@affi{}%
+}
+
+\def\rJ@member{\hskip-.25zw (正員)}
+\def\mJ@member{\hskip-.25zw (正員)}
+\def\aJ@member{\hskip-.25zw (准員)}
+%%\def\nJ@member{(非会員)}
+\def\nJ@member{}
+\def\sJ@member{\hskip-.25zw (学生員)}
+\def\hJ@member{\hskip-.25zw (名誉員)}
+\def\fJ@member{\hskip-.25zw (正員:フェロー)}
+\def\eJ@member{\hskip-.25zw (正員:シニア会員)}
+
+\def\authorentry{\@ifnextchar[% ]
+ {\TR@ae}{\N@ae}}
+
+\def\N@ae#1#2#3{\@ifnextchar[% ]
+ {\@aeP{#1}{#2}{#3}}%
+ {\@ae{#1}{#2}{#3}}}
+
+\def\TR@ae[#1]#2#3#4{\@ifnextchar[% ]
+ {\TR@aeP[#1]{#2}{#3}{#4}}%
+ {\TR@aeNP[#1]{#2}{#3}{#4}}}
+
+\def\fmt@Jan#1{%
+ \expandafter\def\csname EICMN@name\number\@authorcnt\endcsname{#1}%
+ \setbox\@tempboxb\hbox{\spaceskip=100mm #1}%
+ \ifdim \wd\@tempboxb < 100mm
+  \ieicej@warning{Author's name "#1" doesn't have a space}%
+  \def\@tempname{#1}%
+  \def\@tempb##1\@nil{##1}%
+  \protected@edef\@authorname{\expandafter\@tempb\@tempname \@nil}%
+ \else
+  \setbox\@tempboxb\hbox{#1}%
+  \ifdim \wd\@tempboxb > 5zw
+   \def\@tempb##1 ##2\@nil{##1\hskip\authornamesep ##2}%
+  \else
+   \def\@tempb##1 ##2\@nil{\leavevmode\hbox to 5zw{##1\hfil ##2}}%
+  \fi
+   \def\@tempname{#1}%
+   \protected@edef\@authorname{\expandafter\@tempb\@tempname \@nil}%
+ \fi
+}
+
+\def\fmt@Ean#1{%
+ \@temptokena{#1}%
+ \setbox\@tempboxa\hbox{\spaceskip=100mm #1}%
+ \ifdim \wd\@tempboxa < 100mm
+  \ieicej@warning{a space should be added between 1st and 2nd name: "#1"}%
+ \else
+  \def\name@form##1 ##2\@nil{\gdef\@tempan{##1 \uppercase{##2}}}%
+  \expandafter\name@form\the\@temptokena\@nil
+  \expandafter\@temptokena\expandafter{\@tempan}%
+ \fi
+ \def\@authorname{\the\@temptokena}%
+}
+
+\newif\if@affinone \@affinonefalse
+\def\get@al#1{%
+ \def\@noaffi{none}\def\@tempaffi{#1}%
+ \ifx\@noaffi\@tempaffi
+  \global\@affinonetrue
+ \else
+  \@for\get@label:=#1\do{%
+   \@ifundefined{al@\get@label}%
+    {%
+     \global\advance \@alcnt \@ne
+     \expandafter\xdef\csname al@\get@label\endcsname{\the\@alcnt}%
+     \global\advance \@tempcnta \@ne
+     \protected@xdef\plural@affi{\plural@affi
+      \ifnum\@tempcnta=\@ne
+       $^{\ieicej@fnsymbol{\csname al@\get@label\endcsname}}$%
+      \else
+       $^{,\ieicej@fnsymbol{\csname al@\get@label\endcsname}}$%
+      \fi
+     }%
+    }%
+    {%
+     \global\advance \@tempcnta \@ne
+     \protected@xdef\plural@affi{\plural@affi
+      \ifnum\@tempcnta=\@ne
+       $^{\ieicej@fnsymbol{\csname al@\get@label\endcsname}}$%
+      \else
+       $^{,\ieicej@fnsymbol{\csname al@\get@label\endcsname}}$%
+      \fi
+     }%
+    }%
+  }%
+ \fi
+}
+\def\plural@affi{}
+
+\def\get@p@al#1{%
+ \@for\get@label:=#1\do{%
+  \@ifundefined{p@al@\get@label}%
+   {%
+    \global\advance \p@alcnt \@ne
+    \expandafter\xdef\csname p@al@\get@label\endcsname{\the\p@alcnt}%
+    \global\advance \@tempcnta \@ne
+    \protected@xdef\plural@p@affi{\plural@p@affi
+     \ifnum\@tempcnta=\@ne
+      $^{\ieicej@fnsymbol{\csname p@al@\get@label\endcsname}}$%
+     \else
+      $^{,\ieicej@fnsymbol{\csname p@al@\get@label\endcsname}}$%
+     \fi
+    }%
+   }%
+   {%
+    \global\advance \@tempcnta \@ne
+    \protected@xdef\plural@p@affi{\plural@p@affi
+     \ifnum\@tempcnta=\@ne
+      $^{\ieicej@fnsymbol{\csname p@al@\get@label\endcsname}}$%
+     \else
+      $^{,\ieicej@fnsymbol{\csname p@al@\get@label\endcsname}}$%
+     \fi
+    }%
+   }%
+ }%
+}
+\def\plural@p@affi{}
+
+\def\@ae#1#2#3{%
+ \@tempcnta\z@
+ \advance \@authorcnt \@ne
+ \get@al{#3}%
+ \def\al@none{0}%
+ \fmt@Jan{#1}%
+ \expandafter\protected@xdef\csname @Jauthorname\number\@authorcnt\endcsname{%
+  \@authorname\kern\z@\rlap{\plural@affi}}%
+ \fmt@Ean{#2}%
+ \expandafter\protected@xdef\csname @Eauthorname\number\@authorcnt\endcsname{%
+  \@authorname\nobreak\plural@affi}% 
+ \global\@totalnumber=\@authorcnt
+ \def\plural@affi{}%
+}
+
+\def\@aeP#1#2#3[#4]{%
+ \@tempcnta\z@
+ \advance \@authorcnt \@ne
+ \get@al{#3}%
+ \def\al@none{0}%
+ \@tempcnta\z@
+ \get@p@al{#4}%
+ \fmt@Jan{#1}%
+ \expandafter\protected@xdef\csname @Jauthorname\number\@authorcnt\endcsname{%
+  \@authorname\kern\z@\rlap{\plural@affi\plural@p@affi}%
+ }%
+ \fmt@Ean{#2}%
+ \expandafter\protected@xdef\csname @Eauthorname\number\@authorcnt\endcsname{%
+  \@authorname\nobreak\plural@affi\nobreak\plural@p@affi
+ }%
+ \global\@totalnumber=\@authorcnt
+ \def\plural@affi{}%
+ \def\plural@p@affi{}%
+}
+
+\if@tecrep\else
+ \if@letter
+  %\font\EA@font=cmr5
+  \def\EA@font{\normalfont\fontsize{5}{\z@}\selectfont}
+ \else
+  \if@electronicsletter
+   %\font\EA@font=cmr6
+   \def\EA@font{\normalfont\fontsize{6}{\z@}\selectfont}
+  \else
+   %\font\EA@font=cmr7
+   \def\EA@font{\normalfont\fontsize{7}{\z@}\selectfont}
+  \fi
+ \fi
+\fi
+
+\def\email@affi{%
+ \if@tecrep\else
+  \ifx\@tempEma\empty\else
+   $^{\mbox{\EA@font\ieicej@fnsymbol{\the\c@enumiv}}}$%
+  \fi
+ \fi
+}
+
+\def\TR@aeNP[#1]#2#3#4{%
+ \@tempcnta\z@
+ \advance \@authorcnt \@ne
+ \GetEma{#1}
+ \get@al{#4}%
+ \def\al@none{0}%
+ \fmt@Jan{#2}%
+ \expandafter\protected@xdef\csname @Jauthorname\number\@authorcnt\endcsname{%
+  \@authorname\kern\z@\rlap{\plural@affi\email@affi}%
+ }%
+ \fmt@Ean{#3}%
+ \expandafter\protected@xdef\csname @Eauthorname\number\@authorcnt\endcsname{%
+  \@authorname\nobreak\plural@affi\nobreak\email@affi
+ }% 
+ \global\@totalnumber=\@authorcnt
+ \def\plural@affi{}%
+}
+
+\def\TR@aeP[#1]#2#3#4[#5]{%
+ \@tempcnta\z@
+ \advance \@authorcnt \@ne
+ \GetEma{#1}%
+ \get@al{#4}%
+ \def\al@none{0}%
+ \@tempcnta\z@
+ \get@p@al{#5}%
+ \fmt@Jan{#2}%
+ \expandafter\protected@xdef\csname @Jauthorname\number\@authorcnt\endcsname{%
+  \@authorname\kern\z@\rlap{\plural@affi\plural@p@affi\email@affi}%
+ }%
+ \fmt@Ean{#3}%
+ \expandafter\protected@xdef\csname @Eauthorname\number\@authorcnt\endcsname{%
+  \@authorname\nobreak\plural@affi\nobreak\plural@p@affi\nobreak\email@affi
+ }%
+ \global\@totalnumber=\@authorcnt
+ \def\plural@affi{}%
+ \def\plural@p@affi{}%
+}
+
+\if@tecrep
+ \bgroup
+  \catcode`@=12\relax
+  \gdef\GetEma#1{%
+   \def\tempema{#1}%
+   \ifx\tempema\empty
+    \def\tempAnDn{n n.n.n}%
+   \else
+    \def\tempa##1@##2\nil{##1 ##2}% 
+    \edef\tempAnDn{\expandafter\tempa\tempema\nil}%
+   \fi
+   \ProcessEma
+  }%
+ \egroup
+
+ \newcount\tn@dn
+
+ \def\ProcessEma{%
+  \def\tempa##1 ##2\@nil{%
+   \@ifundefined{##2}
+    {\expandafter\gdef\csname ##2\endcsname{##1}%
+     \advance\tn@dn\@ne
+     \expandafter\def\csname adrs\number\tn@dn\endcsname{##2}%
+    }%
+    {\expandafter\protected@xdef
+     \csname ##2\endcsname{\csname ##2\endcsname,##1}%
+    }%
+  }% 
+  \def\get@AnDn{\expandafter\tempa\tempAnDn\@nil}\get@AnDn
+ }
+
+ \def\fmt@Ema{%
+  \@tempcntb\z@
+  \loop
+   \ifnum\@tempcntb<\tn@dn
+    \advance\@tempcntb\@ne
+    \def\ad@none{n.n.n}%
+    \expandafter\ifx\csname adrs\number\@tempcntb\endcsname \ad@none
+    \else
+     \protected@edef\tmp@An{%
+      \expandafter\csname \csname adrs\number\@tempcntb\endcsname \endcsname}%
+     \@tempcnta\z@
+     \@for\get@An:=\tmp@An\do{%
+      \global\advance \@tempcnta \@ne
+     }%
+     \protected@xdef\Mail@ddress{%
+      \ifx\Mail@ddress\empty\else\Mail@ddress,\ \fi
+       \ifnum\@totalnumber=\@ne
+        \if@affinone\else
+         $\ieicej@fnsymbol{\the\@tempcntb}$%
+        \fi
+       \else
+        $\ieicej@fnsymbol{\the\@tempcntb}$%
+       \fi
+       \ifnum\@tempcnta=\@ne
+	\expandafter\csname \csname adrs\number\@tempcntb\endcsname \endcsname
+	 @\csname adrs\number\@tempcntb\endcsname
+       \else
+	\{%% \protect
+	 \expandafter\csname \csname adrs\number\@tempcntb\endcsname \endcsname
+	  \}%
+	 @\csname adrs\number\@tempcntb\endcsname
+       \fi
+     }%
+     \gdef\header@ma{E-mail:}%
+    \fi
+  \repeat
+ }
+ \def\Mail@ddress{}
+ \def\header@ma{}
+
+ \def\MailAddress#1{\gdef\@MailAddress{#1}}
+ \def\@MailAddress{}
+\else
+ \setcounter{enumiv}{15}%
+ \def\GetEma#1{%
+  \def\@tempEma{#1}%
+  \ifx\@tempEma\empty\else
+   \global\advance \c@enumiv \@ne
+   \let\@fnsymbol\ieicej@fnsymbol
+   \protected@xdef\@Emadrs{\@Emadrs
+    %\protect\footnotetext[\the\c@enumiv]{E-mail: \protect\texttt{#1}}%
+    \protect\footnotetext[\the\c@enumiv]{E-mail: #1}%
+   }%
+  \fi
+ }%
+ \def\@Emadrs{}
+\fi
+
+\newcount\@spcnt
+\newcount\alignorder
+\if@letter
+ \alignorder=2\relax
+\else
+ \if@paper
+  \alignorder=4\relax
+ \else
+  \alignorder=3\relax
+%%\alignorder=4\relax
+ \fi
+\fi
+
+\if@tecrep
+ \alignorder=5\relax
+\fi
+
+\def\fmt@Jauthorlist{%
+ \@tempcnta=\alignorder
+ \@tempcntb=\alignorder\advance \@tempcntb \@ne
+  \ifnum \@totalnumber < \@tempcntb
+   \expandafter\def\csname sp\number\alignorder\endcsname{\relax}%
+  \else
+   \advance \@tempcntb \alignorder
+   \ifnum \@totalnumber < \@tempcntb
+    \expandafter\def\csname sp\number\alignorder\endcsname{\cr}%
+     \advance \@tempcnta \alignorder
+    \expandafter\def\csname sp\number\@tempcnta\endcsname{\relax}%
+   \else
+    \advance \@tempcntb \alignorder
+    \ifnum \@totalnumber < \@tempcntb
+     \expandafter\def\csname sp\number\alignorder\endcsname{\cr}%
+      \advance \@tempcnta \alignorder
+     \expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+      \advance \@tempcnta \alignorder
+     \expandafter\def\csname sp\number\@tempcnta\endcsname{\relax}%
+    \else
+     \advance \@tempcntb \alignorder
+     \ifnum \@totalnumber < \@tempcntb
+      \expandafter\def\csname sp\number\alignorder\endcsname{\cr}%
+	\advance \@tempcnta \alignorder
+      \expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	\advance \@tempcnta \alignorder
+      \expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	\advance \@tempcnta \alignorder
+      \expandafter\def\csname sp\number\@tempcnta\endcsname{\relax}%
+     \else
+      \advance \@tempcntb \alignorder
+      \ifnum \@totalnumber < \@tempcntb
+	\expandafter\def\csname sp\number\alignorder\endcsname{\cr}%
+	 \advance \@tempcnta \alignorder
+	\expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	 \advance \@tempcnta \alignorder
+	\expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	 \advance \@tempcnta \alignorder
+	\expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	 \advance \@tempcnta \alignorder
+	\expandafter\def\csname sp\number\@tempcnta\endcsname{\relax}%
+      \else
+	\advance \@tempcntb \alignorder
+	\ifnum \@totalnumber < \@tempcntb
+	 \expandafter\def\csname sp\number\alignorder\endcsname{\cr}%
+	  \advance \@tempcnta \alignorder
+	 \expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	  \advance \@tempcnta \alignorder
+	 \expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	  \advance \@tempcnta \alignorder
+	 \expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	  \advance \@tempcnta \alignorder
+	 \expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	  \advance \@tempcnta \alignorder
+	 \expandafter\def\csname sp\number\@tempcnta\endcsname{\relax}%
+	\else
+	 \advance \@tempcntb \alignorder
+	 \expandafter\def\csname sp\number\alignorder\endcsname{\cr}%
+	  \advance \@tempcnta \alignorder
+	 \expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	  \advance \@tempcnta \alignorder
+	 \expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	  \advance \@tempcnta \alignorder
+	 \expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	  \advance \@tempcnta \alignorder
+	 \expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	  \advance \@tempcnta \alignorder
+	 \expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	  \advance \@tempcnta \alignorder
+	 \expandafter\def\csname sp\number\@tempcnta\endcsname{\cr}%
+	\fi
+      \fi
+     \fi
+    \fi
+   \fi
+  \fi
+}
+
+\if@tecrep
+ \def\@outputJauthorlist{%
+  \fmt@Jauthorlist
+  \@authorcnt\z@
+   \loop\ifnum \@authorcnt < \@totalnumber
+    \advance \@authorcnt \@ne
+    \advance \@spcnt \@ne
+    \@ifundefined{sp\number\@spcnt}%
+     {\expandafter\def\csname sp\number\@spcnt\endcsname{\hskip\Pauthorsep}}{}%
+    \let\cr\@par
+    \protected@xdef\@tempx{\@tempx
+     \mbox{\csname @Jauthorname\number\@authorcnt\endcsname}%
+      \csname sp\number\@spcnt\endcsname}%
+   \repeat
+  \@tempx
+ }
+\else
+ \def\@outputJauthorlist{%
+  \fmt@Jauthorlist
+  \@authorcnt\z@
+   \loop\ifnum \@authorcnt < \@totalnumber
+    \advance \@authorcnt \@ne
+    \advance \@spcnt \@ne
+    \@ifundefined{sp\number\@spcnt}%
+     {\expandafter\def\csname sp\number\@spcnt\endcsname{&}}{}%
+    \protected@xdef\@tempx{\@tempx
+     \csname @Jauthorname\number\@authorcnt\endcsname
+     \csname sp\number\@spcnt\endcsname}%
+   \repeat
+  \@tempx
+ }
+\fi
+
+\def\@tempx{}
+
+\def\breakauthorline#1{%
+ \@for\@breakauthor:=#1\do{%
+  \expandafter\gdef\csname @breakauthorline\@breakauthor\endcsname{\\}
+ }%
+  \@authorcnt\z@
+  \loop\ifnum \@authorcnt < \@totalnumber
+   \advance \@authorcnt \@ne
+    \@ifundefined{@breakauthorline\number\@authorcnt}%
+    {\expandafter\gdef\csname @breakauthorline\number\@authorcnt\endcsname
+     {\relax}}{\relax}%
+  \repeat
+}
+
+\newcount\totalnumberm@ne
+
+\def\L@outputEauthorlist{%
+ \def\r@member{{\itshape Member}}%
+ \def\r@members{{\itshape Members}}%
+ \def\m@member{{\itshape Member}}%
+ \def\m@members{{\itshape Members}}%
+ \def\n@member{{\itshape  Nonmember}}%
+ \def\n@members{{\itshape Nonmembers}}%
+ \def\a@member{{\itshape  Affiliate Member}}%
+ \def\a@members{{\itshape Affiliate Members}}%
+ \def\h@member{{\itshape  Fellow, Honorary Member}}%
+ \def\h@members{{\itshape Fellows, Honorary Members}}%
+ \def\s@member{{\itshape  Student Member}}%
+ \def\s@members{{\itshape Student Members}}%
+ \def\f@member{{\itshape Fellow}}%
+ \def\f@members{{\itshape Fellows}}%
+ \def\e@member{{\itshape Senior Member}}%
+ \def\e@members{{\itshape Senior Members}}%
+ \def\no@authormembership{\relax}%
+ \@authorcnt\z@
+ \totalnumberm@ne\@totalnumber \advance \totalnumberm@ne -\@ne
+  \loop\ifnum \@authorcnt < \@totalnumber
+   \advance \@authorcnt \@ne
+    \ifnum \@authorcnt < \totalnumberm@ne
+     \mbox{\csname @Eauthorname\number\@authorcnt\endcsname
+      \expandafter\ifx \csname @authormembership\number\@authorcnt\endcsname
+       \no@authormembership
+      \else
+       \nobreak, 
+      \fi
+     \nobreak\csname @authormembership\number\@authorcnt\endcsname}\nobreak, 
+      \csname @breakauthorline\number\@authorcnt\endcsname
+    \else
+     \ifnum \@authorcnt = \@totalnumber
+      \mbox{\csname @Eauthorname\number\@authorcnt\endcsname
+       \expandafter\ifx \csname @authormembership\number\@authorcnt\endcsname
+        \no@authormembership
+       \else
+        \nobreak, 
+       \fi
+      \nobreak\csname @authormembership\number\@authorcnt\endcsname}%
+        \csname @breakauthorline\number\@authorcnt\endcsname
+     \else
+      \mbox{\csname @Eauthorname\number\@authorcnt\endcsname
+       \expandafter\ifx \csname @authormembership\number\@authorcnt\endcsname
+        \no@authormembership
+       \else
+        \nobreak, 
+       \fi
+      \nobreak\csname @authormembership\number\@authorcnt\endcsname
+       \ifnum \@totalnumber=\tw@\ \else , \fi}%
+        \csname @breakauthorline\number\@authorcnt\endcsname\allowbreak
+         and\ 
+     \fi
+    \fi
+  \repeat
+}
+
+\def\@outputEauthorlist{%
+ \@authorcnt\z@
+ \totalnumberm@ne\@totalnumber \advance \totalnumberm@ne -\@ne
+  \loop\ifnum \@authorcnt < \@totalnumber
+   \advance \@authorcnt \@ne 
+    \ifnum \@authorcnt < \totalnumberm@ne
+     \csname @Eauthorname\number\@authorcnt\endcsname\nobreak , 
+      \csname @breakauthorline\number\@authorcnt\endcsname
+    \else
+     \ifnum \@authorcnt = \@totalnumber
+      \csname @Eauthorname\number\@authorcnt\endcsname
+     \else
+      \csname @Eauthorname\number\@authorcnt\endcsname\nobreak
+       \ifnum \@totalnumber=\tw@\ \else , \fi
+        \csname @breakauthorline\number\@authorcnt\endcsname
+      and\ \nobreak 
+     \fi
+    \fi
+  \repeat
+}
+
+\newif\if@plural
+\newcount\@authorcntp@ne
+
+%% letter and letter paper
+\def\@chkmbrship{%
+ \the\@authorlist
+ \@authorcnt \z@
+ \@pluralfalse
+ \loop\ifnum \@authorcnt < \@totalnumber
+  \advance \@authorcnt \@ne
+  \@authorcntp@ne=\@authorcnt \advance \@authorcntp@ne \@ne
+   \if@plural
+    \edef\@nextmembership{%
+     \csname @authormembership\number\@authorcntp@ne*\endcsname}%
+   \else
+    \edef\@nextmembership{%
+     \csname @authormembership\number\@authorcntp@ne\endcsname}%
+   \fi
+  \expandafter\ifx\csname @authormembership\number\@authorcnt\endcsname
+   \@nextmembership
+    \expandafter\gdef\csname @authormembership\number\@authorcnt\endcsname
+     {\relax}%
+    \edef\tempauthormembership
+     {\csname @authormembership\number\@authorcntp@ne*\endcsname}%
+    \expandafter\let
+     \csname @authormembership\number\@authorcntp@ne\endcsname
+      \tempauthormembership \@pluraltrue
+  \else \@pluralfalse
+  \fi
+ \repeat
+}
+
+\def\MembershipNumber#1{%
+ \def\tmpchk@MN{#1}%
+ \ifx\tmpchk@MN\@empty\else
+  \expandafter\def\csname EICMN@\number\@authorcnt\endcsname{#1}%
+ \fi
+}
+\def\@Membership@Number{%
+ \@authorcnt\z@
+ \loop
+  \ifnum \@authorcnt < \@totalnumber
+   \advance \@authorcnt \@ne
+   \chk@MN{EICMN@\number\@authorcnt}%
+   \noindent
+   \csname EICMN@name\number\@authorcnt\endcsname\hskip2zw
+   \texttt{\csname EICMN@\number\@authorcnt\endcsname}\par
+ \repeat
+}
+
+\def\chk@MN#1{%
+ \@ifundefined{#1}{}{%
+  \expandafter\@tempcnta \csname #1\endcsname\relax
+  \ifnum \@tempcnta > 9999999\relax
+   \ieicej@warning{Membership Number "\the\@tempcnta" might be wrong}%
+  \else
+   \ifnum \@tempcnta < 1000000\relax
+    \ieicej@warning{Membership Number "\the\@tempcnta" might be wrong}%
+   \fi
+  \fi
+ }%
+}
+
+\def\Jorganization#1{#1}
+\def\Jdepartment#1{#1}
+\def\Jaddress#1{#1}
+
+\def\Edepartment#1{#1}
+\def\Eorganization#1{#1}
+\let\Eaddress\Jaddress
+
+\newcount\chk@alcnt
+\newcount\chk@p@alcnt
+
+\if@tecrep %%%
+ \def\affiliate[#1]#2#3{%
+  \advance \chk@alcnt \@ne
+  \@ifundefined{al@#1}%
+   {\expandafter\def\csname al@#1\endcsname{1}%
+    \ieicej@warning{Check the "#1" label, it does not correspond to
+      ^^J\space\space any labels in \string\authorentry\space command}%
+   }{}%
+  \protected@xdef\J@affiliate{\J@affiliate
+   $\protect\ieicej@fnsymbol{\csname al@#1\endcsname}$\ #2\\}%
+  \protected@xdef\E@affiliate{\E@affiliate
+   $\protect\ieicej@fnsymbol{\csname al@#1\endcsname}$\ #3\\}%
+ }
+ \def\J@affiliate{}
+ \def\E@affiliate{}
+
+ %% 引数を3つに変更
+ \def\paffiliate[#1]#2#3{%
+  \advance \chk@p@alcnt \@ne
+  \@ifundefined{p@al@#1}%
+   {\expandafter\def\csname p@al@#1\endcsname{1}%
+    \ieicej@warning{Check the "#1" label, it does not correspond to
+     ^^J\space\space any labels in \string\authorentry\space command}
+   }{}%
+  \protected@xdef\Jp@affiliate{\Jp@affiliate
+   $\protect\ieicej@fnsymbol{\csname p@al@#1\endcsname}$\ #2}%
+  \protected@xdef\Ep@affiliate{\Ep@affiliate
+   $\protect\ieicej@fnsymbol{\csname p@al@#1\endcsname}$\ #3}%
+ }
+ \def\Jp@affiliate{}
+ \def\Ep@affiliate{}
+\else %%%
+ \def\affiliate[#1]#2#3{%
+  \advance \chk@alcnt \@ne
+  \@ifundefined{al@#1}%
+   {\expandafter\def\csname al@#1\endcsname{1}%
+    \ieicej@warning{Check the "#1" label, it does not correspond to
+      ^^J\space\space any labels in \string\authorentry\space command}%
+   }{}%
+  %% \let\@fnsymbol\ieicej@fnsymbol %% \show
+  \protected@xdef\@affiliate{\@affiliate
+   \protect\footnotetext[\csname al@#1\endcsname]{%%\protect\raggedright
+    #2\hfil\break #3}}%
+ }
+ \def\@affiliate{}
+
+ \def\paffiliate[#1]#2{%
+  \advance \chk@p@alcnt \@ne
+  \@ifundefined{p@al@#1}%
+   {\expandafter\def\csname p@al@#1\endcsname{1}%
+    \ieicej@warning{Check the "#1" label, it does not correspond to
+     ^^J\space\space any labels in \string\authorentry\space command}
+   }{}%
+  %% \let\@fnsymbol\ieicej@fnsymbol %% \show
+  \protected@xdef\p@affiliate{\p@affiliate
+   \protect\footnotetext[\csname p@al@#1\endcsname]{#2}}%
+ }
+ \def\p@affiliate{}
+\fi %%%
+
+\newbox\eabstractbox
+\newbox\ekeywordbox
+\def\eabstract{\global\setbox\eabstractbox=\hbox\bgroup
+ \if@tecrep
+  \large
+ \else
+  \normalsize
+ \fi
+  {\bfseries Abstract\hskip1zw}\ignorespaces}
+\def\endeabstract{\egroup}
+
+\def\ekeyword{\global\setbox\ekeywordbox=\hbox\bgroup
+ \if@tecrep
+  \large
+ \else
+  \normalsize
+ \fi
+  {\bfseries Key words\hskip1zw}\ignorespaces}
+\def\endekeyword{\egroup}
+
+\newdimen\Pauthorsep
+ \Pauthorsep 7.5mm % 15Qx2zw
+
+\def\titlepagebaselinestretch#1{\gdef\@titlepagebaselinestretch{#1}}
+\titlepagebaselinestretch{1}
+
+\def\jsubtitle#1{\gdef\@jsubtitle{#1}}
+\def\@jsubtitle{}
+\def\esubtitle#1{\gdef\@esubtitle{#1}}
+\def\@esubtitle{}
+
+\if@tecrep %%% technicalreport
+ \def\maketitle{\par
+  \begingroup 
+  \ifnum \chk@alcnt < \@alcnt
+    \ieicej@warning{information of \string\affiliate\space is not assigned}%
+   \fi
+   \advance \p@alcnt -9\relax
+   \ifnum \chk@p@alcnt < \p@alcnt
+    \ieicej@warning{information of \string\paffiliate\space is not assigned}%
+   \fi
+   \def\@fnsymbol##1{\ifcase##1 \or
+    \dag\or
+    \dag\dag\or
+    \dag\dag\dag\or
+    \dag\dag\dag\dag\or
+    \dag\dag\dag\dag\dag\or
+    \dag\dag\dag\dag\dag\dag\or
+    \dag\dag\dag\dag\dag\dag\dag\or
+    \dag\dag\dag\dag\dag\dag\dag\dag\or
+    \dag\dag\dag\dag\dag\dag\dag\dag\dag\or
+    *\or {*}{*}\or {*}{*}{*}\or {*}{*}{*}{*}\or {*}{*}{*}{*}{*}\or
+     {*}{*}{*}{*}{*}{*}\else\@ctrerr\fi\relax}%
+   \def\thefootnote{\fnsymbol{footnote}}%
+   \if@twocolumn
+    \twocolumn[\@maketitle]%
+   \else
+    \ieicej@warning{I don't recommend onecolumn option,
+      ^^J\space\space because of no compatibility with technicalreport option}%
+    \@maketitle
+   \fi
+  \endgroup
+   \let\maketitle\relax
+   \let\@maketitle\relax
+   \gdef\@affiliate{}\gdef\p@affiliate{}
+   \gdef\@jtitle{}\gdef\@etitle{}
+   \gdef\@jsubtitle{}\gdef\@esubtitle{}
+   \let\affiliate\relax\let\paffiliate\relax
+   \@authorlist={}%
+   \let\jkeyword\relax\let\jabstract\relax
+   \let\ekeyword\relax\let\eabstract\relax
+   \let\@outputJauthorlist\relax\let\@outputEauthorlist\relax
+   \let\@aeP\relax
+   \let\@ae\relax
+   \let\TR@ae\relax
+   \let\N@ae\relax
+   \let\TR@aeP\relax
+   \let\TR@aeNP\relax
+   \let\breakauthorline\relax
+   \@authorcnt \z@
+   \loop\ifnum \the\@authorcnt < \the\@totalnumber
+    \advance \@authorcnt \@ne
+     \expandafter\let\csname @Jauthorname\number\@authorcnt\endcsname\relax
+     \expandafter\let\csname @Eauthorname\number\@authorcnt\endcsname\relax
+   \repeat
+ }
+
+ \def\@maketitle{%
+  \setbox\@tempboxa\vbox{%
+    \def\baselinestretch{\@titlepagebaselinestretch}%
+    \hskip8mm
+    \vtop{\footnotesize\baselineskip3mm
+     \hbox{社団法人\hskip1zw 電子情報通信学会}%
+     \hbox{THE INSTITUTE OF ELECTRONICS,}%
+     \hbox{INFORMATION AND COMMUNICATION ENGINEERS}%
+    }\hfill
+    \vtop{\footnotesize\baselineskip3mm
+     \hbox{信学技報}%
+     \hbox{TECHNICAL REPORT OF IEICE.}%
+     \hbox{}%
+    }\hskip8mm\hbox{}\par
+    \vskip\baselineskip
+    \bgroup
+     \centering
+     {\fontsize{16}{23}\selectfont
+      \@jtitle\par
+     }%
+     \vskip.25\baselineskip
+     \ifx\@jsubtitle\empty
+     \else
+      {\huge
+       \@jsubtitle\par
+      }%
+      \vskip.25\baselineskip
+     \fi
+     {\LARGE
+       \@outputJauthorlist\par
+     }%
+     \vskip.5\baselineskip
+     {\fontsize{10.5}{15}\selectfont
+      \J@affiliate\par
+      \Jp@affiliate\par
+      \ifx\@MailAddress\empty
+       \fmt@Ema
+       \ifx\header@ma\empty
+        \vskip.5\baselineskip
+       \else
+	E-mail: \Mail@ddress\par
+	\vskip.5\baselineskip
+       \fi
+      \else
+       E-mail: \@MailAddress
+       \vskip.5\baselineskip
+      \fi
+     }%
+    \egroup
+    \bgroup\large
+     \leavevmode
+     \unhbox\jabstractbox\par
+     \nointerlineskip
+     \vskip\baselineskip
+     \vskip-1zh
+     \vskip0pt
+     \leavevmode
+     \unhbox\jkeywordbox\par
+    \egroup
+ %%
+    \vskip1.5\baselineskip
+    \bgroup
+     \centering
+     {\fontsize{16}{23}\selectfont
+      \@etitle\par
+     }%
+     \vskip.25\baselineskip
+     \ifx\@esubtitle\empty
+     \else
+      {\huge
+       \@esubtitle\par
+      }%
+      \vskip.25\baselineskip
+     \fi
+     {\LARGE
+      \hyphenpenalty=10000\relax
+      \@outputEauthorlist\par
+     }%
+     \vskip.5\baselineskip
+     {\fontsize{10.5}{15}\selectfont
+      \E@affiliate\par
+      \Ep@affiliate\par
+      \ifx\@MailAddress\empty
+       \ifx\header@ma\empty
+        \vskip.5\baselineskip
+       \else
+	E-mail: \Mail@ddress\par
+	\vskip.5\baselineskip
+       \fi
+      \else
+       E-mail: \@MailAddress
+       \vskip.5\baselineskip
+      \fi
+     }%
+    \egroup
+    \bgroup\large
+     \leavevmode \unhbox\eabstractbox\par
+     \nointerlineskip
+     \vskip\baselineskip
+     \vskip-1zh
+     \vskip0pt
+     \leavevmode \unhbox\ekeywordbox
+    \egroup
+    \vskip\baselineskip
+  }%
+  \@tempdima\ht\@tempboxa
+  \advance \@tempdima \dp\@tempboxa
+  \ifdim \@tempdima>\textheight
+   \ieicej@warning{The title page is too high. 
+      ^^J\space\space You can adjust the height of a title page
+      ^^J\space\space by changing \string\titlepagebaselinestretch\space 
+		      in preamble.
+      ^^J\space\space For example, \string\titlepagebaselinestretch{0.9}}%
+   {\parindent\z@
+    \vtop to \z@{%
+     \vbox to \textheight{%
+      \unvbox\@tempboxa
+     }\vss
+    }%
+   }\par
+   \clearpage
+  \else
+   \divide \@tempdima \Cvs
+   \@tempcnta=\@tempdima
+   \advance \@tempcnta \@ne
+   \vbox to \@tempcnta\Cvs{%
+    \box\@tempboxa\vss
+   }%
+  \fi
+ }
+
+ \newbox\jabstractbox
+ \newbox\jkeywordbox
+
+ \def\jabstract{\global\setbox\jabstractbox\hbox\bgroup
+   \large
+   {\bfseries あらまし\hskip1zw}\ignorespaces}
+   \def\endjabstract{\egroup}
+
+ \def\jkeyword{\global\setbox\jkeywordbox\hbox\bgroup
+   \large
+   {\bfseries キーワード\hskip1zw}\ignorespaces}
+ \def\endjkeyword{\egroup}
+
+ \let\abstract\jabstract
+ \let\endabstract\endjabstract
+ \let\keyword\jkeyword
+ \let\endkeyword\endjkeyword
+
+\else %%%
+
+ \if@letter
+  \def\abstract{\parindent\z@
+   \hspace*{1zw}{\bfseries あらまし\hskip1zw}\ignorespaces}
+  \def\endabstract{\par\ignorespaces}
+
+  \def\keyword{\parindent\z@
+   \hspace*{1zw}{\bfseries キーワード\hskip1zw}\ignorespaces}
+  \def\endkeyword{\par}
+ \else
+  \newbox\abstractbox
+  \newbox\keywordbox
+  \def\abstract{\global\setbox\abstractbox=\hbox\bgroup
+   \begin{minipage}[t]{137.5mm}%11Q 50zw
+    \Small\hskip1zw{\bfseries あらまし\hskip1zw}\ignorespaces}
+  \def\endabstract{\end{minipage}\egroup}
+
+  \def\keyword{\global\setbox\keywordbox=\hbox\bgroup
+   \begin{minipage}[t]{137.5mm}%11Q 50zw
+    \Small\hskip1zw{\bfseries キーワード\hskip1zw}\ignorespaces}
+  \def\endkeyword{\end{minipage}\egroup}
+ \fi
+
+ \let\jabstract\abstract
+ \let\endjabstract\endabstract
+ \let\jkeyword\keyword
+ \let\endjkeyword\endkeyword
+
+ \newdimen\Lauthorsep
+ %% \Lauthorsep 4.125mm % 11Qx1.5zw
+  \Lauthorsep 5.5mm % 11Qx2zw
+ \newdimen\LPauthorsep
+ %% \LPauthorsep 3mm % 12Qx1zw
+  \LPauthorsep 6mm % 12Qx2zw
+ %%\newdimen\Pauthorsep
+ %% \Pauthorsep 7.5mm % 15Qx2zw
+
+ \def\makeLtitle{\par
+  \global\@topnum\z@
+  \begingroup
+   \ifnum \chk@alcnt < \@alcnt
+    \ieicej@warning{information of \string\affiliate\space is not assigned}%
+   \fi
+   \advance \p@alcnt -9\relax
+   \ifnum \chk@p@alcnt < \p@alcnt
+    \ieicej@warning{information of \string\paffiliate\space is not assigned}%
+   \fi
+   \long\def\@makefntext##1{%
+    \ifnum \p@alcnt > \@alcnt
+     \ifnum \p@alcnt > \thr@@
+      \@tempdima=\p@alcnt zw
+      \divide \@tempdima \tw@
+      \advance \@tempdima .75zw
+     \else
+      \@tempdima=2zw
+     \fi
+    \else
+     \ifnum \@alcnt > \thr@@
+      \@tempdima=\@alcnt zw
+      \divide \@tempdima \tw@
+      \advance \@tempdima .75zw
+     \else
+      \@tempdima=2zw
+     \fi
+    \fi
+    \@tempdimb=\columnwidth
+    \global\advance \@tempdimb -\@tempdima %% 02
+    \everypar={\hangindent=\@tempdima \hangafter=1\relax}%
+    \parindent\@tempdima
+    \noindent
+    \if@tempswa
+     \hbox to \@tempdima{\hss
+      \@thefnmark\ }\parbox[t]{\@tempdimb}{##1\strut}%
+    \else
+     \hbox to \@tempdima{\hss
+      $^{\@thefnmark}$\,}\parbox[t]{\@tempdimb}{##1\strut}%
+    \fi
+   }%
+   \def\thefootnote{\fnsymbol{footnote}}%
+   \def\@fnsymbol##1{\ifcase##1 \or
+    \dag\or
+    \dag\dag\or
+    \dag\dag\dag\or
+    \dag\dag\dag\dag\or
+    \dag\dag\dag\dag\dag\or
+    \dag\dag\dag\dag\dag\dag\or
+    \dag\dag\dag\dag\dag\dag\dag\or
+    \dag\dag\dag\dag\dag\dag\dag\dag\or
+    \dag\dag\dag\dag\dag\dag\dag\dag\dag\or
+    *\or {*}{*}\or {*}{*}{*}\or {*}{*}{*}{*}\or
+     {*}{*}{*}{*}{*}\or {*}{*}{*}{*}{*}{*}\or %% ((((((((((((((((((((
+    a)\or b)\or c)\or d)\or e)\or f)\or g)\or h)\or i)\or j)\or
+    k)\or l)\or m)\or n)\or o)\or p)\or q)\or r)\or s)\or t)\else
+     \@ctrerr\fi\relax}%
+   \skip\@mpfootins=2.75mm \@plus .25mm \@minus \z@
+    \noindent
+     \begin{minipage}{\columnwidth}%
+      \@makeLtitle
+      \@tempswafalse
+      \@affiliate
+      \p@affiliate
+      \@tempswatrue
+      \@Emadrs
+     \end{minipage}\par
+     \vskip23\@Q \@plus 18\@Q \@minus 1\@Q
+    \thispagestyle{ieicej}%
+  \endgroup
+   \let\makeLtitle\relax
+   \let\@makeLtitle\relax
+   \gdef\@affiliate{}\gdef\p@affiliate{}%
+   \gdef\@jtitle{}\gdef\@etitle{}%
+   \let\affiliate\relax\let\paffiliate\relax
+   \@authorlist={}%
+   \let\@outputJauthorlist\relax\let\L@outputEauthorlist\relax
+   \let\L@aeP\relax
+   \let\L@ae\relax
+   \let\breakauthorline\relax
+   \@authorcnt\z@
+   \loop\ifnum \the\@authorcnt < \the\@totalnumber
+    \advance \@authorcnt \@ne
+     \expandafter\let\csname @Jauthorname\number\@authorcnt\endcsname\relax
+     \expandafter\let\csname @Eauthorname\number\@authorcnt\endcsname\relax
+   \repeat
+ }
+
+ \def\@makeLtitle{\newpage
+  \bgroup
+   \null\parindent\z@
+   \tabcolsep\z@
+   \linethickness{0.1mm}%
+    \vskip3.75mm
+    {\bfseries\mathversion{bold}\baselineskip18\@Q
+     \@jtitle\par
+    }
+    {\Small
+     \tabcolsep\Lauthorsep
+     \begin{tabular}{@{}ll@{}}
+      \@outputJauthorlist
+     \end{tabular}\par
+    }
+    \nointerlineskip
+    \vskip4\@Q
+    {\footnotesize
+     \@etitle\par
+    }
+    \vskip3\@Q
+    {\footnotesize
+     \parbox[t]{\columnwidth}{\raggedright\baselineskip3.25mm
+      \hyphenpenalty=10000\relax
+      \L@outputEauthorlist}\par
+    }
+  \egroup
+ }
+
+ \def\maketitle{\par
+  \begingroup
+   \ifnum \chk@alcnt < \@alcnt
+    \ieicej@warning{information of \string\affiliate\space is not assigned}%
+   \fi
+   \advance \p@alcnt -9\relax
+   \ifnum \chk@p@alcnt < \p@alcnt
+    \ieicej@warning{information of \string\paffiliate\space is not assigned}%
+   \fi
+   \twocolumn[\csname @make\@type title\endcsname]
+   \thispagestyle{ieicej}%
+    \def\thefootnote{\fnsymbol{footnote}}%
+    \long\def\@makefntext##1{%
+      \ifnum \p@alcnt > \@alcnt
+       \ifnum \p@alcnt > \thr@@
+	\@tempdima=\p@alcnt zw
+	\divide \@tempdima \tw@
+	\advance \@tempdima .75zw
+       \else
+	\@tempdima=2zw
+       \fi
+      \else
+       \ifnum \@alcnt > \thr@@
+	\@tempdima=\@alcnt zw
+	\divide \@tempdima \tw@
+	\advance \@tempdima .5zw
+       \else
+	\@tempdima=2zw
+       \fi
+      \fi
+       \everypar={\hangindent=\@tempdima \hangafter=1\relax}%
+       \parindent\@tempdima
+       \noindent
+       \if@tempswa
+	\hbox to \@tempdima{\hss \@thefnmark\ }##1%
+       \else
+	\hbox to \@tempdima{\hss $^{\@thefnmark}$\,}##1%
+       \fi
+    }%
+   \@tempswafalse
+   \@affiliate
+   \p@affiliate
+   \@tempswatrue
+   \@Emadrs
+  \endgroup
+   \let\maketitle\relax
+   \expandafter\let\csname @make\@type title\endcsname\relax
+   \gdef\@affiliate{}\gdef\p@affiliate{}
+   \gdef\@jtitle{}\gdef\@etitle{}
+   \let\affiliate\relax\let\paffiliate\relax
+   \@authorlist={}
+   \let\keyword\relax\let\abstract\relax
+   \let\@outputJauthorlist\relax\let\@outputEauthorlist\relax
+   \let\L@outputEauthorlist\relax
+   \let\@aeP\relax
+   \let\@ae\relax
+   \let\L@aeP\relax
+   \let\L@ae\relax
+   \let\breakauthorline\relax
+   \@authorcnt \z@
+   \loop\ifnum \the\@authorcnt < \the\@totalnumber
+    \advance \@authorcnt \@ne
+     \expandafter\let\csname @Jauthorname\number\@authorcnt\endcsname\relax
+     \expandafter\let\csname @Eauthorname\number\@authorcnt\endcsname\relax
+   \repeat
+ }
+
+ \def\ADJ#1{\gdef\@ADJ{#1}}
+ \def\@ADJ{}
+ \ADJ{0mm}
+
+ %% paper
+ \def\@makePtitle{%
+  \setbox\@tempboxa\hbox{%
+   \begin{minipage}{137.5mm}% 151.5 - 14
+    \vskip4.5mm
+    \parindent\z@
+    \tabcolsep\z@
+    \linethickness{0.1mm}%
+    \baselineskip33\@Q
+     {\LARGE
+      \@jtitle
+     }\par
+      \vskip11\@Q
+     {\Large
+      \tabcolsep\Pauthorsep
+      \begin{tabular}{@{}llll@{}}
+       \@outputJauthorlist
+      \end{tabular}\par
+     }%
+     \nointerlineskip
+     \vskip1mm
+     \Large\baselineskip24\@Q
+     \vskip14\@Q
+      \@etitle\par
+     \vskip8\@Q
+     {\large\baselineskip21\@Q
+      \parbox[t]{137.5mm}{\raggedright\baselineskip5.25mm
+       \hyphenpenalty=10000\relax
+       \@outputEauthorlist}\par
+     }%
+     \vskip35\@Q
+     \hfill\box\abstractbox\par
+     \vskip4\@Q
+     \hfill\box\keywordbox
+   \end{minipage}%
+  }%
+   \@tempdima\ht\@tempboxa
+   \advance \@tempdima \dp\@tempboxa
+   \divide \@tempdima \Cvs
+   \@tempcnta=\@tempdima
+   \advance \@tempcnta \thr@@
+   {\newpage\null
+    \boxmaxdepth\z@
+    \lineskiplimit\z@
+    \lineskip\z@
+    \parindent\z@
+    \vbox to \@tempcnta\Cvs{%
+     \hskip14mm\box\@tempboxa
+    \vss}%
+   }\par
+  \vspace{\@ADJ}%
+  \setcounter{footnote}{0}%
+ }
+
+ %% electronicsletter
+ \def\@makeLPtitle{%
+  \setbox\@tempboxa\hbox{%
+   \begin{minipage}{137.5mm}% 151.5 - 14
+    \vskip5mm
+    \parindent\z@
+    \tabcolsep\z@
+    \linethickness{0.1mm}%
+     {\jtitlefont@LP
+      \@jtitle\par
+     }%
+     \vskip11\@Q
+     {\jauthorfont@LP
+      \tabcolsep\LPauthorsep
+      \begin{tabular}{@{}llll@{}}
+       \@outputJauthorlist
+      \end{tabular}
+     }%
+     \vskip12\@Q
+     {\etitlefont@LP
+      \@etitle\par
+     }%
+     \vskip2\@Q
+     {\eauthorfont@LP
+      \parbox[t]{137.5mm}{\raggedright\baselineskip14\@Q
+       \hyphenpenalty=10000\relax
+       \L@outputEauthorlist}\par
+     }%
+     \nointerlineskip
+     \vskip23\@Q
+     \hfill\box\abstractbox\par
+     \vskip3\@Q
+     \hfill\box\keywordbox\par
+   \end{minipage}%
+  }%
+   \@tempdima\ht\@tempboxa
+   \advance \@tempdima \dp\@tempboxa
+   \divide \@tempdima \Cvs
+   \@tempcnta=\@tempdima
+   \advance \@tempcnta \tw@
+   {\newpage\null
+    \boxmaxdepth\z@
+    \lineskiplimit\z@
+    \lineskip\z@
+    \parindent\z@
+    \vbox to \@tempcnta\Cvs{%
+     \hskip14mm\box\@tempboxa
+    \vss}%
+   }\par
+  \vspace{\@ADJ}%
+  \setcounter{footnote}{0}%
+ }
+
+ %% LP  (electronicsletter)
+ \def\jtitlefont@LP{%
+  \fontsize{16\@JQ}{24\@Q}\bfseries\selectfont
+  \mathversion{bold}%
+ }
+ \def\etitlefont@LP{%
+  \normalsize\rmfamily\baselineskip14\@Q
+ }
+ \let\eauthorfont@LP\etitlefont@LP
+ \def\jauthorfont@LP{%
+  \normalsize\baselineskip20\@Q
+ }
+
+ \if@letter
+  \let\maketitle\makeLtitle
+  \let\@aeP\relax
+  \let\@ae\relax
+  \let\@makePtitle\relax
+  \let\@makeLPtitle\relax
+  \let\@outputEauthorlist\relax
+ \fi
+
+ \if@paper
+  \let\L@aeP\relax
+  \let\L@ae\relax
+  \let\makeLtitle\relax
+  \let\@makeLtitle\relax
+  \let\@makeLPtitle\relax
+  \let\L@outputEauthorlist\relax
+ \fi
+
+ \if@electronicsletter
+  \let\@aeP\relax
+  \let\@ae\relax
+  \let\makeLtitle\relax
+  \let\@makeLtitle\relax
+  \let\@makePtitle\relax
+  \let\@outputEauthorlist\relax
+ \fi
+
+\fi %%%
+
+\setcounter{secnumdepth}{5}
+\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+\newcounter{subparagraph}[paragraph]
+\renewcommand{\thesection}{\@arabic\c@section.}
+\renewcommand{\thesubsection}{\thesection\,\@arabic\c@subsection}
+\renewcommand{\thesubsubsection}{%
+   \thesubsection.\,\@arabic\c@subsubsection}
+\renewcommand{\theparagraph}{% (
+ \@alph\c@paragraph\,)}
+\renewcommand{\thesubparagraph}{% (
+ \@roman\c@subparagraph\,)}
+
+\def\@afterheading{%
+ \global\@nobreaktrue
+ \everypar{%
+  \if@nobreak
+   \global\@nobreakfalse
+   \clubpenalty \z@
+    \if@afterindent
+    \else
+     {\setbox\z@=\lastbox}%
+    \fi
+  \else
+   \clubpenalty\@clubpenalty
+   \everypar{}%
+  \fi}%
+}
+
+%% \@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@
+   \vskip-\prevdepth \prevdepth\z@
+   \vskip\Cvs
+   \advance\@tempskipa-\Cvs
+   \vspace*{\@tempskipa}%
+  \fi
+ \@ifstar{\@ssect{#3}{#4}{#5}{#6}}{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
+
+%% \@sect{NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}[ARG1]{ARG2}
+\def\@sect#1#2#3#4#5#6[#7]#8{%%
+ \ifnum #2>\c@secnumdepth
+  \let\@svsec\@empty
+ \else
+  \refstepcounter{#1}%
+  \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+ \fi
+  \@tempskipa #5\relax
+  \ifdim \@tempskipa<\z@
+   \def\@svsechd{%
+     #6{\hskip #3\relax
+     \@svsec #8}}%
+  \else
+   \begingroup
+    #6{%
+      \@hangfrom{\hskip #3\relax{\csname #2@font\endcsname \@svsec}}%
+       \interlinepenalty\@M \@secjidori{#8}\@@par
+      }%
+   \endgroup
+  \fi
+ \@xsect{#5}}
+
+%% \@ssect{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}{ARG} ==
+\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 \@secjidori{#5}\@@par
+     }%
+  \endgroup
+ \fi
+ \@xsect{#3}}
+
+\def\@xsect#1{%
+  \@tempskipa #1\relax
+  \ifdim \@tempskipa<\z@
+    \@nobreakfalse
+    \global\@noskipsectrue
+    \everypar{%
+      \if@noskipsec
+        \global\@noskipsecfalse
+       {\setbox\z@\lastbox}%
+        \clubpenalty\@M
+        \begingroup \@svsechd \endgroup
+        \unskip
+        \@tempskipa #1\relax
+        \hskip -\@tempskipa
+        \pagebreak[2]%
+      \else
+        \clubpenalty \@clubpenalty
+        \everypar{}%
+      \fi}%
+  \else
+    \par \nobreak
+    \vskip \@tempskipa
+    \@afterheading
+  \fi
+  \ignorespaces}
+
+\def\@secjidori#1{%
+ \def\@tempfn{}%
+ \def\@tempfncnt{}%
+ \bgroup
+  \def\footnote{\@ifnextchar[% ]
+   {\@ignorefn}{\@ignorefn[]}}%
+  \long\def\@ignorefn[##1]##2{\gdef\@tempfncnt{##1}\gdef\@tempfn{##2}}%
+  \global\setbox\@tempboxb\hbox{\inhibitglue #1}%
+ \egroup
+  \ifdim \wd\@tempboxb>4.5zw
+   \leavevmode\inhibitglue #1%
+  \else
+   \def\@makefnmark{\smash{\kern0pt\hbox to \z@{%
+    $^{\mbox{\tiny \kern-.5zw (注\@thefnmark{})\kern-.5zw}}$\hss}}}%
+   \kanjiskip\z@ \@plus 1fill \@minus 1fill\xkanjiskip=\kanjiskip
+   \hbox to 5zw{\inhibitglue #1\hfil}%
+   \ifx\@tempfn\empty\else
+    \ifx\@tempfncnt\empty\footnotetext{\@tempfn}\else
+     \footnotetext[\@tempfncnt]{\@tempfn}
+    \fi\fi
+  \fi
+}
+
+\@namedef{3@font}{\bfseries}
+\def\@seccntformat#1{\csname the#1\endcsname\hskip1zw}
+
+\if@tecrep
+ \def\sec@font{\bfseries\mathversion{bold}\baselineskip20.5\@Q}
+\else
+ \DeclareFixedFont{\KFsec}{\kenc@JYn}{gt}{m}{n}{14\@JQ}
+ \def\sec@font{\bfseries\KFsec\mathversion{bold}\baselineskip19\@Q}
+\fi
+
+\if@letter
+ \newcommand{\section}{\@startsection{section}{1}{1zw}%
+   {\z@}% \@plus.1mm \@minus.1mm
+   {\z@}% \@plus.1mm \@minus.1mm
+   {\reset@font\normalsize\bfseries\mathversion{bold}}}
+\else
+ \newcommand{\section}{\@startsection{section}{1}{1zw}%
+   {.5\Cvs}% \@plus.1mm \@minus.1mm
+   {.5\Cvs}% \@plus.1mm \@minus.1mm
+   {\reset@font\Large\sec@font}}
+\fi
+ \newcommand{\subsection}{\@startsection{subsection}{2}{1zw}%
+   {\z@}% \@plus.1mm \@minus.1mm
+   {\z@}% \@plus.1mm \@minus.1mm
+   {\reset@font\normalsize\bfseries\mathversion{bold}}}
+ \newcommand{\subsubsection}{\@startsection{subsubsection}{3}{1zw}%
+   {\z@}% \@plus.1mm \@minus.1mm
+   {\z@}% \@plus.1mm \@minus.1mmu
+   {\reset@font\normalsize}}
+\newcommand{\paragraph}{\@startsection{paragraph}{4}{1zw}%
+   {\z@}% \@plus.1mm \@minus.1mm
+   {\z@}% \@plus.1mm \@minus.1mm
+   {\reset@font\normalsize}}
+\newcommand{\subparagraph}{\@startsection{subparagraph}{5}{1zw}%
+   {\z@}% \@plus.1mm \@minus.1mm
+   {\z@}% \@plus.1mm \@minus.1mm
+   {\reset@font\normalsize}}
+
+\newcommand{\appendix}{\par
+ \renewcommand{\section}{\@startsection{section}{1}{\z@}
+  {.5\Cvs}% \@plus.1mm \@minus.1mm
+  {.5\Cvs}% \@plus.1mm \@minus.1mm
+  {\if@letter\centering\bfseries\else\centering\Large\sec@font\fi}}%
+ \section*{付録}
+  \renewcommand{\section}{\@startsection{section}{1}{1zw}
+   {\z@}% \@plus.1mm \@minus.1mm
+   {\z@}% \@plus.1mm \@minus.1mm
+   {\normalsize\bfseries\mathversion{bold}}}%
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \setcounter{equation}{0}%
+ \setcounter{figure}{0}%
+ \setcounter{table}{0}%
+ \def\theequation{\protect\mbox{A$\cdot$\@arabic\c@equation}}%
+ \def\thefigure{A$\cdot$\,\@arabic\c@figure}%
+ \def\thetable{A$\cdot$\,\@arabic\c@table}%
+}
+
+\if@twocolumn
+  \setlength\leftmargini {2zw}%
+\else
+  \setlength\leftmargini {2zw}%
+\fi
+\setlength\leftmarginii  {2zw}%
+\setlength\leftmarginiii {2zw}%
+\setlength\leftmarginiv  {2zw}%
+\if@twocolumn
+  \setlength\leftmarginv {1zw}%
+  \setlength\leftmarginvi{1zw}%
+\else
+  \setlength\leftmarginv {1zw}%
+  \setlength\leftmarginvi{1zw}%
+\fi
+\setlength  \labelsep  {1zw}%
+\setlength  \labelwidth{\leftmargini}
+\addtolength\labelwidth{-\labelsep}
+\@beginparpenalty \z@ % -\@lowpenalty
+\@endparpenalty   \z@ % -\@lowpenalty
+\@itempenalty     \z@ % -\@lowpenalty
+
+%% from latex.ltx
+\def\@item[#1]{%
+  \if@noparitem
+    \@donoparitem
+  \else
+    \if@inlabel
+      \indent \par
+    \fi
+    \ifhmode
+      \unskip\unskip \par
+    \fi
+    \if@newlist
+      \if@nobreak
+        \@nbitem
+      \else
+        \addpenalty\@beginparpenalty
+        \addvspace\@topsep
+        \addvspace{-\parskip}%
+      \fi
+    \else
+      \addpenalty\@itempenalty
+      \addvspace\itemsep
+    \fi
+    \global\@inlabeltrue
+  \fi
+  \everypar{%
+    \@minipagefalse
+    \global\@newlistfalse
+    \if@inlabel
+      \global\@inlabelfalse
+      {\setbox\z@\lastbox
+       \ifvoid\z@
+         \kern-\itemindent
+       \fi}%
+      \box\@labels
+      \penalty\z@
+    \fi
+    \if@nobreak
+      \@nobreakfalse
+      \clubpenalty\z@ % \@M --> \z@
+    \else
+      \clubpenalty \@clubpenalty
+      \everypar{}%
+    \fi}%
+  \if@noitemarg
+    \@noitemargfalse
+    \if@nmbrlist
+      \refstepcounter\@listctr
+    \fi
+  \fi
+  \sbox\@tempboxa{\makelabel{#1}}%
+  \global\setbox\@labels\hbox{%
+    \unhbox\@labels
+    \hskip \itemindent
+    \hskip -\labelwidth
+    \hskip -\labelsep
+    \ifdim \wd\@tempboxa >\labelwidth
+      \box\@tempboxa
+    \else
+      \hbox to\labelwidth {\unhbox\@tempboxa}%
+    \fi
+    \hskip \labelsep}%
+}
+
+\renewcommand{\theenumi}{\@arabic\c@enumi}
+\renewcommand{\theenumii}{\@alph\c@enumii}
+\renewcommand{\theenumiii}{\@roman\c@enumiii}
+\renewcommand{\theenumiv}{\@Alph\c@enumiv}
+\newcommand{\labelenumi}{\kern-.5zw (\,\theenumi\,)\kern-.5zw}
+\newcommand{\labelenumii}{\kern-.5zw (\,\theenumii\,)\kern-.5zw}
+\newcommand{\labelenumiii}{\theenumiii.}
+\newcommand{\labelenumiv}{\theenumiv.}
+\renewcommand{\p@enumii}{\theenumi}
+\renewcommand{\p@enumiii}{\theenumi(\theenumii)}
+\renewcommand{\p@enumiv}{\p@enumiii\theenumiii}
+
+\renewenvironment{enumerate}
+  {%
+   \ifnum \@enumdepth >3\relax\@toodeep\else
+    \advance\@enumdepth\@ne
+    \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+    \list{\csname label\@enumctr\endcsname}{%
+     \leftmargin\z@
+     \labelwidth2zw
+     \labelsep1zw
+     \itemindent4zw
+     \listparindent1zw
+     \topsep\z@\parsep\z@\partopsep\z@\itemsep\z@
+     %\clubpenalty\z@
+     \usecounter{\@enumctr}%
+     \def\makelabel##1{\hss\llap{##1}}}%
+    \fi}{\endlist}
+
+\newcommand{\labelitemi}{\leavevmode
+ \raise.125zh\hbox to 1zw{\hss \textbullet\hss}}
+\newcommand{\labelitemii}{{\normalfont\bfseries\textendash}}
+\newcommand{\labelitemiii}{\textasteriskcentered}
+\newcommand{\labelitemiv}{\textperiodcentered}
+
+\renewenvironment{itemize}
+  {%
+   \ifnum \@itemdepth >3\relax\@toodeep\else
+    \advance\@itemdepth\@ne
+    \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+    %%\expandafter
+    \list{\csname \@itemitem\endcsname}{%
+     \topsep\z@\parsep\z@\partopsep\z@\itemsep\z@
+     \leftmargin\z@
+     \labelwidth1zw
+     \labelsep1zw
+     \itemindent3zw
+     \listparindent1zw
+     %\clubpenalty\z@
+     \def\makelabel##1{\hss\llap{##1}}}%
+    \fi}{\endlist}
+
+\def\descriptionlabel#1{\hspace\labelsep #1}
+\newenvironment{description}{%
+ \list{}{%
+  \leftmargin\z@
+  \labelsep1zw
+  \labelwidth\z@
+  \itemindent-\leftmargin
+  \listparindent1zw
+  \topsep\z@\parsep\z@\partopsep\z@\itemsep\z@
+  \let\makelabel\descriptionlabel}}{\endlist}
+
+\newskip\@hlskip
+\@hlskip.5\Cvs \@plus 1mm \@minus .5mm
+
+\newenvironment{verse}
+  {\let\\\@centercr
+   \list{}{\itemsep\z@
+           \topsep\@hlskip\parsep\z@\partopsep\z@
+           \itemindent -1zw
+           \listparindent\itemindent
+           \rightmargin\leftmargin \advance\leftmargin 1zw}%
+           \item\relax}{\endlist}
+
+\newenvironment{quotation}
+  {\list{}{\listparindent 1zw
+           \itemindent\listparindent
+           \rightmargin\leftmargin
+           \topsep\@hlskip\parsep\z@\partopsep\z@
+           }%
+           \item\relax}{\endlist}
+
+\newenvironment{quote}
+  {\list{}{%
+           \topsep\@hlskip\parsep\z@\partopsep\z@
+           \rightmargin\leftmargin}%
+           \item\relax}{\endlist}
+
+\gdef\tabbing{\lineskip \z@skip\let\>\@rtab\let\<\@ltab\let\=\@settab
+     \let\+\@tabplus\let\-\@tabminus\let\`\@tabrj\let\'\@tablab
+     \let\\=\@tabcr
+     \@hightab\@firsttab
+     \global\@nxttabmar\@firsttab
+     \dimen\@firsttab\@totalleftmargin
+     \global\@tabpush\z@ \global\@rjfieldfalse
+     \topsep\@hlskip \parsep\z@\partopsep\z@
+     \trivlist \item\relax
+     \if@minipage\else\vskip\parskip\fi
+     \setbox\@tabfbox\hbox{%
+       \rlap{\hskip\@totalleftmargin\indent\the\everypar}}%
+     \def\@itemfudge{\box\@tabfbox}%
+     \@startline\ignorespaces}
+
+\newdimen\verbatimleftmargin
+  \verbatimleftmargin\z@
+\newdimen\verbatimbaselineskip
+  \verbatimbaselineskip\Cvs
+\def\verbatimsize{\normalsize}
+
+\def\@verbatim{%
+ \topsep\z@\partopsep\z@\parsep\z@\itemsep\z@
+ \trivlist \item\relax
+  \if@minipage\else
+   \vskip\baselineskip
+   \vskip-\verbatimbaselineskip
+  \fi
+  \leftskip\@totalleftmargin
+  \if@minipage\else
+   \advance \leftskip by \verbatimleftmargin
+  \fi
+  \rightskip\z@skip
+  \parindent\z@\parfillskip\@flushglue\parskip\z@skip
+  \@@par
+  \@tempswafalse
+  \def\par{%
+    \if@tempswa
+      \leavevmode \null \@@par\penalty\interlinepenalty
+    \else
+      \@tempswatrue
+      \ifhmode\@@par\penalty\interlinepenalty\fi
+    \fi}%
+  \let\do\@makeother \dospecials
+  \obeylines 
+   \verbatimsize \baselineskip\verbatimbaselineskip
+   \ttfamily \@noligs
+  \everypar \expandafter{\the\everypar \unpenalty}%
+}
+
+%% from latex.ltx
+%%  v1.3
+\def\@item[#1]{% 
+  \if@noparitem
+    \@donoparitem
+  \else
+    \if@inlabel
+      \indent \par
+    \fi
+    \ifhmode
+      \unskip\unskip \par
+    \fi
+    \if@newlist
+      \if@nobreak
+        \@nbitem
+      \else
+        \addpenalty\@beginparpenalty
+        \addvspace\@topsep
+        \addvspace{-\parskip}%
+      \fi
+    \else
+      \addpenalty\@itempenalty
+      \addvspace\itemsep
+    \fi
+    \global\@inlabeltrue
+  \fi
+  \everypar{%
+    \@minipagefalse
+    \global\@newlistfalse
+    \if@inlabel
+      \global\@inlabelfalse
+      {\setbox\z@\lastbox
+       \ifvoid\z@
+         \kern-\itemindent
+       \fi}%
+      \box\@labels
+      \penalty\z@
+    \fi
+    \if@nobreak
+      \@nobreakfalse
+      \clubpenalty\z@ %\@M --> \z@ 
+    \else
+      \clubpenalty \@clubpenalty
+      \everypar{}%
+    \fi}%
+  \if@noitemarg
+    \@noitemargfalse
+    \if@nmbrlist
+      \refstepcounter\@listctr
+    \fi
+  \fi
+  \sbox\@tempboxa{\makelabel{#1}}%
+  \global\setbox\@labels\hbox{%
+    \unhbox\@labels
+    \hskip \itemindent
+    \hskip -\labelwidth
+    \hskip -\labelsep
+    \ifdim \wd\@tempboxa >\labelwidth
+      \box\@tempboxa
+    \else
+      \hbox to\labelwidth {\unhbox\@tempboxa}%
+    \fi
+    \hskip \labelsep}%
+  \ignorespaces\inhibitglue
+}
+
+\newcounter{figure}
+\renewcommand{\thefigure}{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{\figurename~\thefigure}
+\def\fnum@efigure{Fig.\,\thefigure}
+\newenvironment{figure}
+               {\@floatenv
+                \if@tecrep\capwidth\hsize\ecapwidth\hsize\else
+                 \capwidth65mm\ecapwidth65mm\fi
+                \abovecaptionskip1mm\belowcaptionskip\z@\@float{figure}}
+               {\end@float}
+\newenvironment{figure*}
+               {\@floatenv\capwidth.66\textwidth\ecapwidth.66\textwidth
+                \abovecaptionskip1mm\belowcaptionskip\z@\@dblfloat{figure}}
+               {\end@dblfloat}
+\newcounter{table}
+\renewcommand{\thetable}{\@arabic\c@table}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{\tablename~\thetable}
+\def\fnum@etable{Table~\thetable}
+\newenvironment{table}
+               {\@floatenv
+                \if@tecrep\capwidth\hsize\ecapwidth\hsize\else
+                 \capwidth65mm\ecapwidth65mm\fi
+                \abovecaptionskip\z@\belowcaptionskip3pt\@float{table}}
+               {\end@float}
+\newenvironment{table*}
+               {\@floatenv\capwidth.66\textwidth\ecapwidth.66\textwidth
+                \abovecaptionskip\z@\belowcaptionskip3pt\@dblfloat{table}}
+               {\end@dblfloat}
+\def\@floatboxreset {%
+        \reset@font
+        \small\tabcolsep.5zw
+        \@setminipage
+}
+\def\@floatenv{\let\center\Center}
+
+\def\Center{\topsep\z@\parsep\z@\partopsep\z@\itemsep\z@
+ \trivlist \centering\item\relax}
+\def\endCenter{\endtrivlist}
+
+\long\def\@caption#1[#2]#3{\par
+ \begingroup
+  \@parboxrestore
+  \if@minipage
+   \@setminipage
+  \fi
+   \small
+   \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \endgroup}
+
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+
+\newbox\@tempboxb
+\newdimen\capwidth
+\newdimen\ecapwidth
+
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+ \setbox\@tempboxa\hbox{#1\hskip1zw\shortstack[l]{#2}}%
+ \@tempdima\ht\@tempboxa \advance \@tempdima \dp\@tempboxa
+ \setbox\@tempboxb\hbox{#1\hskip1zw}%
+ \ifdim \@tempdima > \baselineskip
+  \ifdim \wd\@tempboxa > \capwidth
+   \hfil\parbox[t]{\capwidth}{\hangindent\wd\@tempboxb 
+    #1\hskip1zw #2}\vskip2\@Q
+  \else
+   \hfil\parbox[t]{\wd\@tempboxa}{\hangindent\wd\@tempboxb 
+    #1\hskip1zw #2}\vskip2\@Q
+  \fi
+ \else
+  \ifdim \wd\@tempboxa > \capwidth
+   \hfil\parbox[t]{\capwidth}{\hangindent\wd\@tempboxb 
+    #1\hskip1zw #2}\vskip2\@Q
+  \else
+   \setbox\@tempboxb\hbox{#2}%
+   \ifdim \wd\@tempboxb < 4.5zw
+    \hbox to\hsize{\hfil #1\hskip1zw\kintou{5zw}{#2}\hfil}%
+   \else
+    \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
+   \fi
+  \fi
+ \fi
+ \vspace{\belowcaptionskip}\par
+}
+
+\long\def\ecaption#1{%
+ \vspace{-\belowcaptionskip}%
+ \small
+ \setbox\@tempboxa\hbox{\csname fnum@e\@captype\endcsname\hskip1zw
+  \shortstack[l]{#1}}%
+ \@tempdima\ht\@tempboxa \advance \@tempdima \dp\@tempboxa
+ \setbox\@tempboxb\hbox{\csname fnum@e\@captype\endcsname\hskip1zw}%
+ \ifdim \@tempdima > \baselineskip
+  \ifdim \wd\@tempboxa > \ecapwidth
+   \hfil\parbox[t]{\ecapwidth}{\hangindent\wd\@tempboxb 
+    \csname fnum@e\@captype\endcsname\hskip1zw #1}\par
+  \else
+   \hfil\parbox[t]{\wd\@tempboxa}{\hangindent\wd\@tempboxb 
+    \csname fnum@e\@captype\endcsname\hskip1zw #1}\par
+  \fi
+ \else
+  \ifdim \wd\@tempboxa > \ecapwidth
+   \hfil\parbox[t]{\ecapwidth}{\hangindent\wd\@tempboxb
+    \csname fnum@e\@captype\endcsname\hskip1zw #1}\par
+  \else
+   \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
+  \fi
+ \fi
+ \vspace{\belowcaptionskip}\par
+}
+
+\setlength\arraycolsep{5\p@}
+\setlength\tabcolsep{.5zw}
+\setlength\arrayrulewidth{.1mm}
+\setlength\doublerulesep{\z@}
+\setlength\tabbingsep{\labelsep}
+
+\skip\@mpfootins = \skip\footins
+\setlength\fboxsep{.5zw}
+\setlength\fboxrule{.1mm}
+\renewcommand{\theequation}{\@arabic\c@equation}
+
+\if@enablejfam
+ \if@compatibility\else
+   \DeclareSymbolFont{mincho}{\kenc@JYn}{mc}{m}{n}
+   \DeclareSymbolFontAlphabet{\mathmc}{mincho}
+   \SetSymbolFont{mincho}{bold}{\kenc@JYn}{gt}{m}{n}
+   \jfam\symmincho
+   \DeclareMathAlphabet{\mathgt}{\kenc@JYn}{gt}{m}{n}
+ \fi
+ \if@mathrmmc
+   \AtBeginDocument{%
+    \reDeclareMathAlphabet{\mathrm}{\mathrm}{\mathmc}
+    \reDeclareMathAlphabet{\mathbf}{\mathbf}{\mathgt}
+   }%
+ \fi
+\else
+ \DeclareRobustCommand{\mathmc}{%
+   \@latex@error{Command \noexpand\mathmc invalid with\space
+      `disablejfam' class option.}\@eha
+ }
+ \DeclareRobustCommand{\mathgt}{%
+   \@latex@error{Command \noexpand\mathgt invalid with\space
+      `disablejfam' class option.}\@eha
+ }
+\fi
+
+\DeclareOldFontCommand{\mc}{\normalfont\mcfamily}{\mathmc}
+\DeclareOldFontCommand{\gt}{\normalfont\gtfamily}{\mathgt}
+\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}
+
+\newdimen\bibindent
+\setlength\bibindent{1.5em}
+\newcommand{\newblock}{\hskip .11em\@plus.33em\@minus.07em}
+
+\newenvironment{thebibliography}[1]
+ {%
+ \def\subsection{\@startsection{subsection}{2}{\z@}% }{
+  {\z@}%     \@plus 1mm \@minus .1mm
+  {.15\Cvs}% \@plus 1mm \@minus .1mm
+  {\centering\bfseries}}%
+ \subsection*{\refname}%
+ \small\baselineskip15\@Q
+   \list{\@biblabel{\@arabic\c@enumiv}}%
+        {\settowidth\labelwidth{\@biblabel{\hspace*{2zw}}}%
+         \topsep\z@\parsep\z@\partopsep\z@\itemsep\z@
+         \leftmargin3zw
+         \labelsep1zw
+         \@openbib@code
+         \usecounter{enumiv}%
+         \let\p@enumi\@empty
+         \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+   \sloppy
+   \clubpenalty\z@
+   \widowpenalty\z@
+   \@clubpenalty\clubpenalty
+   \sfcode`\.\@m}
+  {\def\@noitemerr
+    {\@latex@warning{Empty `thebibliography' environment}}%
+   \endlist}
+\def\@biblabel#1{[#1]}
+\let\@openbib@code\@empty
+
+\def\@uketsuke{%
+ \vskip6\@Q
+ \raggedleft\rightskip1zw
+  (\@received\@revised\@finalreceived )\kern-.5zw\par
+}
+
+\def\received#1#2#3{%
+ \gdef\@received{#1年#2月#3日受付}%
+ \gdef\@receivedyear{#1}}
+\received{xxxx}{xx}{xx}
+
+\def\revised#1#2#3{%
+ \gdef\@revisedyear{#1}%
+ \ifx\@receivedyear\@revisedyear
+  \gdef\@revised{,#2月#3日再受付}%
+ \else
+  \gdef\@revised{,#1年#2月#3日再受付}%
+ \fi
+}
+\def\@revised{}
+
+\def\finalreceived#1#2#3{%
+ \gdef\@finalreceivedyear{#1}%
+ \ifx\@revisedyear\@finalreceivedyear
+  \gdef\@finalreceived{,\inhibitglue\break #2月#3日最終受付}%
+ \else
+  \gdef\@finalreceived{,\inhibitglue\break #1年#2月#3日最終受付}%
+ \fi
+}
+\def\@finalreceived{}
+
+%% paper, electronicsletter
+\newenvironment{biography}{\par
+ \raggedbottom
+ {\small \@uketsuke}\par
+ \nointerlineskip
+ \vskip17mm
+ \parindent\z@
+ \leftskip8\@Q
+ \small\baselineskip15\@Q
+ \global\let\@uketsuke\relax
+}{\par}
+
+\newcounter{profile}
+\def\profile{%
+ \@ifstar\np@profile{\@ifnextchar[%% ]
+ {\pic@profile}{\stepcounter{profile}%
+  \pic@profile[a\theprofile.\ieicej@in@ext]}}}% 
+
+\long\def\pic@profile[#1]#2#3#4{%
+ %\stepcounter{profile}%
+ \if #2r \def\p@mbrship{(正員)\kern-.5zw}\else
+  \if #2m \def\p@mbrship{(正員)\kern-.5zw}\else
+   \if #2s \def\p@mbrship{(学生員)\kern-.5zw}\else
+    \if #2n \def\p@mbrship{}\else
+     \if #2a \def\p@mbrship{(准員)\kern-.5zw}\else
+      \if #2h \def\p@mbrship{(名誉員)\kern-.5zw}\else
+       \if #2f \def\p@mbrship{(正員:フェロー)\kern-.5zw}\else
+        \if #2e \def\p@mbrship{(正員:シニア会員)\kern-.5zw}\else
+  \def\p@mbrship{}%
+  \ieicej@warning{Check the 1st. argument of \string\profile{#2}{#3}{}}%
+ \fi\fi\fi\fi\fi\fi\fi\fi
+ \def\@checkname{#3}%
+ \setbox\@tempboxa\hbox{\spaceskip=100mm #3}%
+ \ifdim \wd\@tempboxa < 100mm
+  \ieicej@warning{Profile's name "#3" doesn't have a space}%
+  \let\@authorname\@checkname
+ \else
+  \setbox\@tempboxa\hbox{#3}%
+   \ifdim \wd\@tempboxa > 5zw
+    \def\@tempb##1 ##2\@nil{##1\hskip\authornamesep ##2}%
+   \else
+    \def\@tempb##1 ##2\@nil{\leavevmode\hbox to 5zw{##1\hfil ##2}}%
+   \fi
+  \protected@edef\@authorname{\expandafter\@tempb\@checkname\@nil}%
+ \fi
+ \setbox\@tempboxa\hbox{%
+  \begin{minipage}[t]{19zw}%
+   \small\baselineskip15\@Q
+   {\normalsize{\bfseries \@authorname}\hskip1zw
+    \p@mbrship\nobreak\rule[-3mm]{0mm}{4mm}}\hfil\break
+     \hspace*{1zw}#4\unskip\inhibitglue
+  \end{minipage}%
+ }%
+ \@tempdima \ht\@tempboxa
+ \advance \@tempdima \dp\@tempboxa
+  \leavevmode
+  \hangindent9zw\hangafter-7\relax
+   \IfFileExists{#1}% a\theprofile.\ieicej@in@ext
+    {\smash{\lower23.9mm\hbox to \z@{\hss
+      \resizebox{20mm}{26.4mm}{%
+       \includegraphics{#1}}\hskip2.5mm
+     }}}%
+    {\smash{\lower23.9mm\hbox to \z@{\hss
+      \unitlength1mm
+      \begin{picture}(20,26.4)
+       \put(0,0){\framebox(20,26.4){\null}}%
+      \end{picture}\hskip2.5mm
+     }}}%
+  \ifdim \@tempdima < 26.4mm
+   \vtop to 26.4mm{%
+    \hbox to 19zw{\hss
+    \begin{minipage}[t]{19zw}%
+     \small\baselineskip15\@Q
+     {\normalsize{\bfseries \@authorname}\hskip1zw
+      \p@mbrship\nobreak\rule[-3mm]{0mm}{4mm}}\hfil\break
+       \hspace*{1zw}#4\unskip\inhibitglue
+    \end{minipage}\hss}\vss
+   }\par
+  \else
+   {\normalsize{\bfseries \@authorname}\hskip1zw
+    \p@mbrship\nobreak\rule[-3mm]{0mm}{4mm}}\hfil\break
+     \hspace*{1zw}#4\par
+  \fi
+  \nointerlineskip
+  \vskip7mm
+}
+
+\long\def\np@profile#1#2#3{%
+ \stepcounter{profile}%
+ \if #1r \def\p@mbrship{(正員)\kern-.5zw}\else
+  \if #1m \def\p@mbrship{(正員)\kern-.5zw}\else
+   \if #1s \def\p@mbrship{(学生員)\kern-.5zw}\else
+    \if #1n \def\p@mbrship{}\else
+     \if #1a \def\p@mbrship{(准員)\kern-.5zw}\else
+      \if #1h \def\p@mbrship{(名誉員)\kern-.5zw}\else
+       \if #1f \def\p@mbrship{(正員:フェロー)\kern-.5zw}\else
+        \if #2e \def\p@mbrship{(正員:シニア会員)\kern-.5zw}\else
+  \def\p@mbrship{}%
+  \ieicej@warning{Check the 1st. argument of \string\profile{#1}{#2}{}}%
+ \fi\fi\fi\fi\fi\fi\fi\fi
+ \def\@checkname{#2}%
+ \setbox\@tempboxa\hbox{\spaceskip=100mm #2}%
+ \ifdim \wd\@tempboxa < 100mm
+  \ieicej@warning{Profile's name "#2" doesn't have a space}%
+  \let\@authorname\@checkname
+ \else
+  \setbox\@tempboxa\hbox{#2}%
+   \ifdim \wd\@tempboxa > 5zw
+    \def\@tempb##1 ##2\@nil{##1\hskip\authornamesep ##2}%
+   \else
+    \def\@tempb##1 ##2\@nil{\leavevmode\hbox to 5zw{##1\hfil ##2}}%
+   \fi
+  \protected@edef\@authorname{\expandafter\@tempb\@checkname\@nil}%
+ \fi
+ {\normalsize{\bfseries \@authorname}\hskip1zw
+  \p@mbrship\nobreak\rule[-3mm]{0mm}{4mm}}\hfil\break
+   \hspace*{1zw}#3\par
+  \nointerlineskip
+  \vskip7mm
+}
+
+\if@tecrep
+ \renewenvironment{biography}{\relax}{\relax}
+ \long\def\pic@profile[#1]#2#3#4{}
+ \long\def\np@profile#1#2#3{}
+\fi
+
+\renewcommand{\footnoterule}{%
+  \kern-3\p@
+  \hrule height .1mm width \columnwidth
+  \kern 2.715\p@}
+
+\def\@makefnmark{\smash{\kern\z@$^{\mbox{\tiny \kern-.5zw
+  (注\kern.1zw\@thefnmark{})\kern-.5zw}}$\kern\z@}}
+
+\newcommand\@makefntext[1]{\parindent1zw
+ \noindent\hbox{\kern-.5zw
+  (注\kern.1zw\@thefnmark{})\kern-.5zw\hbox to 1zw{\hss :\hss}}#1}
+
+\def\thefootnote{\@arabic\c@footnote}
+\def\thempfootnote{\@fnsymbol\c@mpfootnote}
+
+%% from [proc|slide].cls
+%% \def\thefootnote{\fnsymbol{footnote}}
+%% from [article|report|book].cls
+%% \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+%% from latex.ltx
+%% \def\@fnsymbol#1{\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or
+%%    \mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger
+%%    \or \ddagger\ddagger \else\@ctrerr\fi}}
+
+%% from fleqn.clo
+%%\ProvidesFile{fleqn.clo}
+%%       [1998/08/17 v1.1c Standard LaTeX option
+%%                                   (flush left equations)]
+\newdimen\mathindent
+\AtEndOfClass{\mathindent1zw}% \leftmargini
+\renewcommand\[{\relax
+                \ifmmode\@badmath
+                \else
+                 \parsep  4\p@ \@plus2\p@ \@minus\p@
+                 \topsep  8\p@ \@plus2\p@ \@minus4\p@
+                 \itemsep 4\p@ \@plus2\p@ \@minus\p@
+                  \begin{trivlist}%
+                    \@beginparpenalty\predisplaypenalty
+                    \@endparpenalty\postdisplaypenalty
+                    \item[]\leavevmode
+                    \hb@xt@\linewidth\bgroup $\m@th\displaystyle %$
+                      \hskip\mathindent\bgroup
+                \fi}
+\renewcommand\]{\relax
+                \ifmmode
+                      \egroup $\hfil% $
+                    \egroup
+                  \end{trivlist}%
+                \else \@badmath
+                \fi}
+\renewenvironment{equation}%
+    {\@beginparpenalty\predisplaypenalty
+     \@endparpenalty\postdisplaypenalty
+     \refstepcounter{equation}%
+     \parsep  4\p@ \@plus2\p@ \@minus\p@
+     \topsep  8\p@ \@plus2\p@ \@minus4\p@
+     \itemsep 4\p@ \@plus2\p@ \@minus\p@
+     \trivlist \item[]\leavevmode
+       \hb@xt@\linewidth\bgroup $\m@th% $
+         \displaystyle
+         \hskip\mathindent}%
+        {$\hfil % $
+         \displaywidth\linewidth\hbox{\@eqnnum}%
+       \egroup
+     \endtrivlist}
+%% from jsclasses.cls
+\def\eqnarray{%
+    \stepcounter{equation}%
+    \parsep  4\p@ \@plus2\p@ \@minus\p@
+    \topsep  8\p@ \@plus2\p@ \@minus4\p@
+    \itemsep 4\p@ \@plus2\p@ \@minus\p@
+    \def\@currentlabel{\p@equation\theequation}%
+    \global\@eqnswtrue\m@th
+    \global\@eqcnt\z@
+    \tabskip\mathindent
+    \let\\=\@eqncr
+    \setlength\abovedisplayskip{\topsep}%
+    \ifvmode
+      \addtolength\abovedisplayskip{\partopsep}%
+    \fi
+    \addtolength\abovedisplayskip{\parskip}%
+    \setlength\belowdisplayskip{\abovedisplayskip}%
+    \setlength\belowdisplayshortskip{\abovedisplayskip}%
+    \setlength\abovedisplayshortskip{\abovedisplayskip}%
+    $$\everycr{}\halign to\linewidth% $$
+    \bgroup
+      \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
+      &\global\@eqcnt\@ne \hfil$\displaystyle{{}##{}}$\hfil
+      &\global\@eqcnt\tw@
+        $\displaystyle{##}$\hfil \tabskip\@centering
+      &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
+    \tabskip\z@skip\cr
+    }
+
+\def\@eqnnum{{\normalfont \normalcolor (\theequation)\hspace*{3mm}}}
+
+\def\@begintheorem#1#2{%
+ \settowidth{\labelwidth}{\kern-.5zw [#1\ #2]\kern-.5zw}
+ \begin{description}
+  \item[\@thmlbracket #1\ #2\@thmrbracket]}
+
+\def\@opargbegintheorem#1#2#3{%
+ \begin{description}
+  \item[\@thmlbracket #1\ #2\@thmrbracket (#3)\kern-.5zw]}%%
+\def\@endtheorem{\end{description}}
+
+\def\thmbracket#1#2{%
+ \gdef\@thmlbracket{\leavevmode\inhibitglue #1}%
+ \gdef\@thmrbracket{#2\inhibitglue}}
+\thmbracket{[}{]}
+\def\@thmcountersep{}
+
+\def\ack{\par{\bfseries 謝辞}\hskip1zw}
+
+\newif\if西暦 \西暦false
+\def\西暦{\西暦true}
+\def\和暦{\西暦false}
+\def\today{{%
+  \iftdir
+    \if西暦
+      \kansuji\number\year 年
+      \kansuji\number\month 月
+      \kansuji\number\day 日
+    \else \@tempcnta\year
+      \advance\@tempcnta-1988 平成
+      \ifnum \@tempcnta =1 元\else\kansuji\number\@tempcnta\fi 年
+      \kansuji\number\month 月\kansuji\number\day 日
+    \fi
+  \else
+    \if西暦
+      \number\year\, 年\hspace{.5em}\nobreak
+      \number\month\, 月\hspace{.5em}\nobreak
+      \number\day\, 日
+    \else \@tempcnta\year
+      \advance\@tempcnta-1988 平成
+      \ifnum \@tempcnta =1 元\else\number\@tempcnta\fi
+        \, 年\hspace{.5em}\nobreak
+      \number\month\, 月\hspace{.5em}\nobreak\number\day\, 日
+    \fi
+  \fi}}
+%%\newcommand{\prepartname}{第}
+%%\newcommand{\postpartname}{部}
+%%\newcommand{\contentsname}{目 次}
+%%\newcommand{\listfigurename}{図 目 次}
+%%\newcommand{\listtablename}{表 目 次}
+\newcommand{\refname}{文献}
+%%\newcommand{\indexname}{索 引}
+\newcommand{\figurename}{図}
+\newcommand{\tablename}{表}
+%%\newcommand{\appendixname}{付 録}
+%%\newcommand{\abstractname}{概 要}
+
+%% from citesort.sty (by Donald Arseneau 1989), a little customized
+\newcount\@minsofar
+\newcount\@min
+\newcount\@cite@temp
+\def\@citex[#1]#2{%
+\if@filesw \immediate \write \@auxout {\string \citation {#2}}\fi
+\@tempcntb\m@ne \let\@h@ld\relax \def\@citea{}%
+\@min\m@ne%
+\@cite{%
+  \@for \@citeb:=#2\do {\@ifundefined {b@\@citeb}%
+    {\@h@ld\@citea\@tempcntb\m@ne{\bfseries ?}%
+    \@warning {Citation `\@citeb ' on page \thepage \space undefined}}%
+{\@minsofar\z@ \@for \@scan@cites:=#2\do {%
+  \@ifundefined{b@\@scan@cites}%
+    {\@cite@temp\m@ne}
+    {\@cite@temp\number\csname b@\@scan@cites \endcsname \relax}%
+\ifnum\@cite@temp > \@min% select the next one to list
+    \ifnum\@minsofar = \z@
+      \@minsofar\number\@cite@temp
+      \edef\@scan@copy{\@scan@cites}\else
+    \ifnum\@cite@temp < \@minsofar
+      \@minsofar\number\@cite@temp
+      \edef\@scan@copy{\@scan@cites}\fi\fi\fi}\@tempcnta\@min
+  \ifnum\@minsofar > \z@ % some more
+    \advance\@tempcnta\@ne
+    \@min\@minsofar
+    \ifnum\@tempcnta=\@minsofar %   Number follows previous--hold on to it
+      \ifx\@h@ld\relax
+        \edef \@h@ld{\@citea\csname b@\@scan@copy\endcsname}%
+      \else \edef\@h@ld{\ifmmode{]〜[}\else]〜[\fi
+       \csname b@\@scan@copy\endcsname}%
+      \fi
+    \else \@h@ld\@citea\csname b@\@scan@copy\endcsname
+          \let\@h@ld\relax
+  \fi % no more
+\fi}%
+\def\@citea{],\penalty\@highpenalty\,[}}\@h@ld}{#1}}
+%% end of citesort.sty
+
+\def\@cite#1#2{\leavevmode\unskip
+  \ifnum\lastpenalty=\z@\penalty\@highpenalty\fi% highpenalty before
+  \,[{\multiply\@highpenalty 3 #1%             % triple-highpenalties within
+      \if@tempswa,\penalty\@highpenalty\ #2\fi % and before note.
+    }]\spacefactor\@m}
+
+\def\onelineskip{\par\vspace{1\baselineskip}\par}
+\def\halflineskip{\par\vspace{.5\baselineskip}\par}
+
+\DeclareRobustCommand\ddash{\hbox to 2zw{---\hss ---}}% \let\doubledash\ddash
+\def\FRAC#1#2{\leavevmode\kern-.1em
+  \raise.5ex\hbox{\the\scriptfont0 #1}\kern-.1em
+  /\kern-.15em\lower.25ex\hbox{\the\scriptfont0 #2}}
+\DeclareRobustCommand\RN[1]{\uppercase\expandafter{\romannumeral#1}}
+
+\DeclareRobustCommand\MARU[1]{\raisebox{0.1zh}{{%
+ \leavevmode\ooalign{\hfil\lower.168ex\hbox{#1}\hfil\crcr\mathhexbox20D}}}}
+
+\DeclareRobustCommand\kintou[2]{\leavevmode\hbox to #1{%
+ \kanjiskip=\z@ plus 1fill minus 1fill\xkanjiskip=\kanjiskip #2}}
+
+\DeclareRobustCommand\ruby[2]{\leavevmode
+ \setbox0=\hbox{#1}\setbox1=\hbox{\tiny #2}%
+ \ifdim\wd0>\wd1 \dimen0=\wd0 \else \dimen0=\wd1 \fi
+ \hbox{\kanjiskip=\fill
+ \vbox{\hbox to \dimen0{\tiny \hfil#2\hfil}%
+  \nointerlineskip \hbox to \dimen0{\hfil#1\hfil}}}}
+
+\def\QED{{\unskip\nobreak\hfil\penalty50
+ \hskip1zw\hbox{}\nobreak\hfil \hbox{$\Box$\hskip1zw}
+ \parfillskip\z@ \finalhyphendemerits\z@\par}}
+
+\def\Hline{\noalign{\hrule height 0.4mm}}
+
+\postbreakpenalty`(=10000
+\prebreakpenalty`)=10000
+\postbreakpenalty`[=10000
+\prebreakpenalty`]=10000
+\postbreakpenalty`〈=10000
+\prebreakpenalty`〉=10000
+\postbreakpenalty`【=10000
+\prebreakpenalty`】=10000
+\postbreakpenalty`〔=10000
+\prebreakpenalty`〕=10000
+\postbreakpenalty`『=10000
+\prebreakpenalty`』=10000
+\prebreakpenalty`"=10000 %"
+\prebreakpenalty`℃=10000
+\prebreakpenalty` =10000
+\prebreakpenalty`・=10000
+\prebreakpenalty`〜=10000
+\prebreakpenalty`ー=10000
+\prebreakpenalty`?=10000
+\prebreakpenalty`!=10000
+\if@enable@uptex
+ \postbreakpenalty16=10000
+\else
+ \postbreakpenalty"5C=10000 %"
+\fi
+\postbreakpenalty`【=10000
+\prebreakpenalty`】=10000
+\postbreakpenalty`〔=10000
+\prebreakpenalty`〕=10000
+\postbreakpenalty`『=10000
+\prebreakpenalty`』=10000
+\inhibitxspcode`〒=2
+\inhibitxspcode`!=1
+
+\def\sloppy{\tolerance9999\hbadness9999\hfuzz.5\p@ \vfuzz.5\p@}
+
+\hbadness4000
+\vbadness10001
+\tolerance4000\pretolerance\m@ne
+\clubpenalty\z@
+\widowpenalty\z@
+
+\AtBeginDocument{%
+ %\if@ieice@field@C
+ % \let\ecaption\@gobble
+ %\fi
+ %%
+ \displaywidowpenalty\z@
+ \interdisplaylinepenalty\z@
+ \predisplaypenalty\z@
+ \postdisplaypenalty\z@
+ %% cmex7,8,9 を使わない
+ \@ifundefined{cmex@opt}{%
+  \DeclareFontFamily{OMX}{cmex}{}{}%
+  \DeclareFontShape{OMX}{cmex}{m}{n}{%
+   <->    cmex10
+  }{}%
+ }{%
+  \ifnum\cmex@opt=7\relax
+   \DeclareFontFamily{OMX}{cmex}{}{}%
+   \DeclareFontShape{OMX}{cmex}{m}{n}{%
+    <->    cmex10
+   }{}%
+  \fi
+ }%
+ %% amsmath
+ \@ifpackageloaded{amsmath}%
+  {\@mathmargin1zw \@plus\z@ \@minus\z@
+   \multlinegap1zw
+   \def\maketag@@@#1{\hbox{\m@th\normalfont #1}\hskip3mm}%
+   \def\eqref#1{\textup{\tagform@{\ref{#1}}\unskip}}%
+  }{}%
+ %% amsthm.sty
+ \@ifpackageloaded{amsthm}{%
+  %% \thm@preskip=\topsep \thm@postskip=\thm@preskip と定義済み
+  %% [] の中のパーレンを全角に/後ろのピリを削除/head の後ろを一字空きに
+  \def\@thm#1#2#3{%
+    \ifhmode\unskip\unskip\par\fi
+    \normalfont
+    \trivlist
+    \let\thmheadnl\relax
+    \let\thm@swap\@gobble
+    \thm@notefont{\fontseries\mddefault\upshape}%
+    %\thm@notefont{\bfseries}%
+    %\thm@headpunct{.}% add period after heading
+    \thm@headpunct{}% add period after heading
+    %\thm@headsep 5\p@ plus\p@ minus\p@\relax
+    \thm@headsep 1zw \@plus .15zw \@minus .25zw\relax
+    \thm@space@setup
+    #1% style overrides
+    \@topsep\z@ % \thm@preskip               % used by thm head
+    \@topsepadd\z@ % \thm@postskip           % used by \@endparenv
+    \def\@tempa{#2}\ifx\@empty\@tempa
+     \def\@tempa{\@oparg{\@begintheorem{#3}{}}[]}%
+    \else
+     \refstepcounter{#2}%
+     \def\@tempa{\@oparg{\@begintheorem{#3}{\csname the#2\endcsname}}[]}%
+    \fi
+    \@tempa
+  }%
+  %\def\@endtheorem{\endtrivlist \@doendpe}% \@endpefalse void
+  \def\th@plain{% style=plain
+   \thm@headfont{}% \bfseries
+   %\itshape % body font
+  }%
+  \def\th@remark{% style=remark
+   \thm@headfont{}% \bfseries
+   \normalfont % body font
+   %\thm@preskip\topsep \divide\thm@preskip\tw@
+   %\thm@postskip\thm@preskip
+  }%
+  %% 半角パーレンを全角に
+  \def\thmhead@plain#1#2#3{%
+   \@thmlbracket %%!!
+   \thmname{#1}
+   \thmnumber{\@ifnotempty{#1}{}\@upn{#2}}%
+   \@thmrbracket %%!!
+   \thmnote{{\the\thm@notefont (#3)\inhibitglue}}}%
+  \let\thmhead\thmhead@plain
+  %% \swapnumbers が展開されたとき有効に
+  \def\swappedhead#1#2#3{%
+    \@thmlbracket %%!!
+    \thmnumber{#2}%
+    \thmname{\@ifnotempty{#2}{}#1}%
+    \@thmrbracket %%!!
+    \thmnote{ {\the\thm@notefont (#3)\inhibitglue}}}%
+  %% proof
+  \def\proofname{\textbf{証明}}%
+  \renewenvironment{proof}[1][\proofname]{\par
+    \topsep\z@
+    \pushQED{$\Box$}%
+    \normalfont
+    %\topsep6\p@\@plus6\p@\relax
+    \labelsep1zw
+    \trivlist
+    \item[\hskip\labelsep
+          %\itshape
+      \textbf{#1\inhibitglue}\@addpunct{}]\ignorespaces
+  }{%
+    \popQED
+    \endtrivlist\@endpefalse
+  }%
+ }{}%
+ %% theorem.sty
+ \@ifpackageloaded{theorem}{%
+  \theoremstyle{plain}%
+  \theorembodyfont{\normalfont}%
+  \theoremheaderfont{\normalfont}% \bfseries
+  %\def\theorem@headerfont{\bfseries}%
+  \global\setlength\theorempreskipamount{\z@}%
+  \global\setlength\theorempostskipamount{\z@}%
+  \gdef\th@plain{\normalfont %\itshape
+   \def\@begintheorem##1##2{%
+    \labelsep1zw %\@plus .15zw \@minus .25zw
+    \item[\hskip\labelsep\theorem@headerfont
+     \@thmlbracket ##1\ ##2\@thmrbracket]}%
+   \def\@opargbegintheorem##1##2##3{%
+    \labelsep1zw %\@plus .15zw \@minus .25zw
+    \item[\hskip\labelsep{\theorem@headerfont
+     \@thmlbracket ##1\ ##2\@thmrbracket}(##3)\inhibitglue]}%
+  }%
+  %% \theoremstyle{break}
+  \gdef\th@break{\normalfont %\slshape
+   \def\@begintheorem##1##2{%
+    \labelsep1zw %\@plus .15zw \@minus .25zw
+    \item[\rlap{\vbox{\hbox{\hskip \labelsep
+     \theorem@headerfont \@thmlbracket ##1\ ##2\@thmrbracket}%
+     \hbox{\strut}}}]}%
+   \def\@opargbegintheorem##1##2##3{%
+    \labelsep1zw %\@plus .15zw \@minus .25zw
+    \item[\rlap{\vbox{\hbox{\hskip \labelsep
+     {\theorem@headerfont
+     \@thmlbracket ##1\ ##2\@thmrbracket}(##3)\inhibitglue}%
+     \hbox{\strut}}}]}}%
+ }{}%
+ %% cite.sty
+ \@ifpackageloaded{cite}{%
+  \renewcommand\citeform[1]{[#1]}%
+  \renewcommand\citeleft{}%
+  \renewcommand\citeright{}%
+  \def\citedash{〜}%
+  \mathchardef\citeprepenalty=\z@
+  \mathchardef\citemidpenalty=\z@
+  \mathchardef\citepunctpenalty=\z@
+ }{}%
+ %% float.sty
+ \@ifpackageloaded{float}{%
+   \renewcommand\float@endH{\@endfloatbox
+     \vskip\intextsep
+     \if@flstyle\setbox\@currbox\float@makebox\columnwidth\fi
+     \box\@currbox
+     \vskip-.5zh %% added
+     \vskip\intextsep\relax}%
+ }{}%
+ %% eps/pdf
+ \@ifundefined{ver@dvips.def}{\def\ieicej@in@ext{pdf}}{\def\ieicej@in@ext{eps}}%
+ %% nidanfloat
+ \@ifpackageloaded{nidanfloat}{%
+  \renewcommand\dblbotfraction{0.9}% 0.5
+  \setcounter{dblbotnumber}{4}% 2
+ }{}%
+ %% natbib.sty
+ \@ifpackageloaded{natbib}{% version 8.31b
+  \renewcommand\NAT@open{\inhibitglue (}%
+  \renewcommand\NAT@close{)\inhibitglue}%
+  \def\citeP{\begingroup
+     \renewcommand\NAT@open{(}%
+     \renewcommand\NAT@close{)}%
+     \renewcommand\NAT@cmt{}%
+     \NAT@swatrue\let\NAT@ctype\z@\NAT@partrue
+     \@ifstar{\NAT@fulltrue\NAT@citetp}{\NAT@fullfalse\NAT@citetp}}%
+  %%
+  \@ifundefined{setcitestyle}{}{\setcitestyle{yysep={,~}}}% for v7.1 etc.
+  \def\bibsection{\par
+   \raggedbottom
+   \centering\noindent{\bfseries\@secjidori{\refname}}}% 
+  \def\bibfont{\small\baselineskip15\@Q}%
+  \if@tecrep
+   \bibhang22H
+  \else
+   \bibhang20H
+  \fi
+  \bibsep\z@
+ }{}%
+ %% binary operator --> commented v3.1
+ %\@ifpackageloaded{amssymb}{%
+ % \let\leq\leqq
+ % \let\geq\geqq
+ % \let\le\leqq
+ % \let\ge\geqq
+ % \let\subseteq\subseteqq
+ % \let\supseteq\supseteqq
+ %}{%
+ %\def\leq{\mathrel{\mathpalette\gl@align<}}\let\le\leq
+ %\def\geq{\mathrel{\mathpalette\gl@align>}}\let\ge\geq
+ %\def\gl@align#1#2{\lower.6ex\vbox{\baselineskip\z@skip\lineskip\z@
+ % \ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}%
+ %\def\subseteq{\rlap{\raisebox{.25ex}{$\subset$}}\raisebox{-1.1ex}{$=$}}%
+ %\def\supseteq{\rlap{\raisebox{.25ex}{$\supset$}}\raisebox{-1.1ex}{$=$}}%
+ %}%
+ %\def\neq{\mathrel{\mathpalette\c@ncelass=}}%
+ %\def\c@ncelass#1#2{\ooalign{$\hfil#1\mkern-.4mu|\hfil$\crcr$#1#2$}}%
+ %\let\ne\neq
+}
+
+\if@tecrep
+ \pagestyle{plain}
+\else
+ \AtEndDocument{%
+  \if@letter
+   \nopagebreak
+   {\small\@uketsuke}\par
+  \fi
+  %%
+  \clearpage
+  \addtocounter{page}{-1}%
+  \immediate\write\@auxout
+   {\string\newlabel{ieicej@lastpage}{{}{\thepage}}}%
+  \addtocounter{page}{1}%
+  %%
+  \if@cameraready
+  \else
+   \onecolumn
+   \thispagestyle{empty}
+   \ifvoid\eabstractbox\else
+    \leavevmode
+    \unhbox\eabstractbox\par
+    \halflineskip
+   \fi
+   \ifvoid\ekeywordbox\else
+    \leavevmode
+    \unhbox\ekeywordbox
+   \fi
+   %\vskip2\baselineskip
+   %\@Membership@Number
+  \fi
+ }
+ \pagestyle{IEICEJ}
+\fi
+
+\pagenumbering{arabic}
+\raggedbottom
+\if@twocolumn
+  \twocolumn
+  \sloppy
+  \if@tecrep
+   \raggedbottom
+  \else
+   \flushbottom
+  \fi
+\else
+  \onecolumn
+\fi
+\if@twoside
+  \@mparswitchtrue
+\else
+  \@mparswitchfalse
+\fi
+
+\endinput
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/readme.1st	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,74 @@
+/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
+    電子情報通信学会論文誌 pLaTeX2e クラスファイル(ieicej.cls)
+/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
+
+1. ieicej.cls の現在のバージョンは,
+      [2019/03/19 v3.2]
+   です.
+
+2. 以下のファイルがあります.
+     ieicej.cls    クラスファイル
+     readme.1st    このファイル
+     readme.tex    クラスファイルの解説
+     readme.pdf    クラスファイルの解説(pdf ファイル)
+     template.tex  テンプレート
+     sieicej.bst   文献用スタイル (下記 6. 参照)
+     sieicej.pdf   文献用スタイル (sieicej.bst) の解説
+     chklist.pdf   投稿者チェックリスト(pdf ファイル)
+     tecrep.tex    技術研究報告の解説
+     tecrep.pdf    技術研究報告の解説(pdf ファイル)
+
+   コンパイルに必要なクラスファイルは,ieicej.cls だけです.
+   readme.tex がこのクラスファイルを使用した場合の
+   出力サンプルとなります.論文作成の雛形として template.tex が
+   利用できます.
+
+3. ieicej.clsはplatex(SJISまたはEUC)およびuplatex(UTF)に対応しています.
+   NTT版には対応していません.
+   texlive は Windows,MAC OSX,LINUX,FreeBSDなどの環境に
+   簡単にインストールすることができます.
+  「TeX Wiki」(http://oku.edu.mie-u.ac.jp/~okumura/texwiki/)
+   などを参考にしてください.
+
+4. 作成にあたっては,
+   TeX Live 2018
+     e-upTeX, Version 3.14159265-p3.8.1-u1.23-180226-2.6 (utf8.uptex)
+       (TeX Live 2018) (preloaded format=uplatex)
+     pLaTeX2e <2018-12-01u02> (based on LaTeX2e <2018-12-01>)
+   TeX Live 2015
+     e-upTeX, Version 3.14159265-p3.6-u1.20-141210-2.6 (utf8.uptex)
+       (TeX Live 2015) (preloaded format=uplatex)
+     pLaTeX2e <2011/05/07u00>+0 (based on LaTeX2e <2015/01/01> patch level 2)
+   TeX Live 2013
+     e-pTeX, Version 3.1415926-p3.3-110825-2.5 (euc)
+       (TeX Live 2013/dev)
+     pLaTeX2e <2006/11/10> (based on LaTeX2e <2011/06/27> patch level 0)
+   で動作確認を行いました.
+
+5. A4用紙に dvips を使用して出力する場合,
+   投稿原稿:
+     dvips -Pprintername -t a4 -O 14mm,20mm readme.dvi
+   技術研究報告:
+     dvips -Pprintername -t a4 -O 0mm,0mm tecrep.dvi
+   くらいの設定になります.
+   printername にはお使いのプリンタ名を指定します.
+
+6. 文献用スタイル (sieicej.bst) は,
+   三美印刷株式会社が,tieice.bst の作者である松井正一氏の承諾を得て,
+   tieice.bst を改訂したものです.
+   sieicej.pdf がこの文献用スタイルの解説であり,tieice.bst からの
+   変更点などもまとめてあります.
+   現在のバージョンは 2009/12/24 v1.1 です.
+   お問い合わせは三美印刷株式会社 (TEL: 03-5850-4515) にお願いします.
+
+7. 本クラスファイルに関わる質問はメールでお願いいたします.
+   TeX や LaTeX の一般的な質問はご容赦願います.
+   web または書籍などを参照してください.
+
+                                                    2019年 3月28日
+
+                                          佐藤基昭  株式会社ウルス
+                              〒113-0022 東京都文京区千駄木3-21-15
+                      Email: ieice-div@uls.co.jp, teppei@uls.co.jp
+                                        URL: http://www.uls.co.jp/
+                             TEL: 03-5842-1290 / FAX: 03-5842-1295
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/readme.tex	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2362 @@
+%% v3.2 [2019/03/19]
+\documentclass[paper]{ieicej}%「論文」形式になります
+%\documentclass[letter]{ieicej}%「レター」形式になります
+%\documentclass[electronicsletter]{ieicej}%「レター(C分冊)」形式
+%% 「技術研究報告」形式は tecrep.tex をコンパイルしてください
+%\usepackage[dvipdfmx]{graphicx}
+%\usepackage[dvips]{graphicx}
+\usepackage{graphicx}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage{textcomp}
+\usepackage{latexsym}
+\usepackage[fleqn]{amsmath}
+\usepackage{amsthm}
+
+\def\IEICEJcls{\texttt{ieicej.cls}}
+\def\IEICEJver{3.2}
+\newcommand{\AmSLaTeX}{%
+ $\mathcal A$\lower.4ex\hbox{$\!\mathcal M\!$}$\mathcal S$-\LaTeX}
+\newcommand{\PS}{{\scshape Post\-Script}}
+\def\BibTeX{{\rmfamily B\kern-.05em{\scshape i\kern-.025em b}\kern-.08em
+ T\kern-.1667em\lower.7ex\hbox{E}\kern-.125em X}}
+%
+\newtheorem{theorem}{定理}% [section]
+
+\field{A}
+%\typeofletter{研究速報}
+%\typeofletter{紙上討論}
+%\typeofletter{問題提起}
+%\typeofletter{ショートノート}
+%\typeofletter{訂正}
+\jtitle[電子情報通信学会論文誌 p\LaTeXe\ クラスファイルの使い方]%
+       {電子情報通信学会論文誌 p\LaTeXe\ クラスファイル\\
+        (ieicej.cls version \IEICEJver)の使い方}
+\etitle{How to Use p\LaTeXe\ Class File (ieicej.cls version \IEICEJver) 
+        for the Transactions of the Institute of Electronics, Information 
+        and Communication Engineers}
+\makeatletter
+\if@paper
+\makeatother
+ \authorlist{%
+  \authorentry[denshi@m.ieice.org]{電子 花子}{Hanako DENSHI}{Tokyo}
+   \MembershipNumber{1111111}
+  \authorentry{情報 太郎}{Taro JOHO}{Osaka}\MembershipNumber{2222222}
+  \authorentry{通信 次郎}{Jiro TSUSHIN}{Osaka}\MembershipNumber{}
+ }
+\else
+ \authorlist{%
+  \authorentry[denshi@m.ieice.org]{電子 花子}{Hanako DENSHI}{m}{Tokyo}
+   \MembershipNumber{1111111}
+  \authorentry{情報 太郎}{Jiro JOHO}{m}{Osaka}\MembershipNumber{2222222}
+  \authorentry{通信 次郎}{Ichiro TSHUSIN}{n}{Osaka}\MembershipNumber{}
+ }
+\fi
+\affiliate[Tokyo]{第一大学工学部,東京都}
+ {Faculty of Engineering, First University, 
+  1--2--3 Yamada, Minato-ku, Tokyo, 
+  105--0123 Japan}
+\affiliate[Osaka]{大阪株式会社開発部,吹田市}
+ {R\&D Division, Osaka Corporation, 
+  4--5--6 Kawada, Suita-shi, 
+  565--0456 Japan}
+%\affiliate[Tokyo]{%
+% \Jorganization{第一大学}
+% \Jdepartment{工学部},
+% \Jaddress{東京都}
+%}
+%{\Edepartment{Faculty of Engineering},
+% \Eorganization{First University},
+% \Eaddress{1--2--3 Yamada, Minato-ku, Tokyo, 105--0123 Japan}
+%}
+%\affiliate[Osaka]{%
+% \Jorganization{大阪株式会社},
+% \Jdepartment{開発部},
+% \Jaddress{吹田市}
+%}
+%{\Edepartment{R\&D Division},
+% \Eorganization{Osaka Corporation},
+% \Eaddress{4--5--6 Kawada, Suita-shi, 565--0456 Japan}
+%}
+
+\begin{document}
+\makeatletter
+\if@letter
+\makeatother
+\maketitle
+\fi
+\begin{abstract}
+電子情報通信学会論文誌の p\LaTeXe\ クラスファイル,
+\IEICEJcls{}(\texttt{version \IEICEJver})の使い方を説明します.
+本クラスファイルに基づく記述の仕方,クラスファイル使用上の注意点,
+ならびにタイピングの際の注意事項です.
+本クラスファイルは,アスキー版 p\LaTeXe\ に基づいて作成しています.
+\end{abstract}
+\begin{keyword}
+アスキー版p\LaTeXe{},タイピングの注意事項
+\end{keyword}
+\begin{eabstract}
+IEICE (The Institute of Electronics, Information and Communication Engineers) 
+provides a p\LaTeXe\ class file, named \IEICEJcls\ (ver.\,\IEICEJver), 
+for the IEICE Transactions. This document describes how to use 
+the class file, and also makes some remarks about typesetting 
+a manuscript by using the p\LaTeXe. 
+The design is based on ASCII Japanese p\LaTeXe. 
+\end{eabstract}
+\begin{ekeyword}
+p\LaTeXe\ class file, typesetting, math formulas
+\end{ekeyword}
+\makeatletter
+\if@letter
+\makeatother
+\else
+ \maketitle
+\fi
+
+\section{まえがき}
+
+電子情報通信学会論文誌の投稿原稿(論文,レターなど),
+依頼原稿(招待論文,解説論文など)ならびに技術研究報告を,
+\IEICEJcls\ を利用して執筆する際に必要なことを解説します.
+{\bfseries \ref{sec:cls}} で本クラスファイル固有の使い方を,
+{\bfseries \ref{sec:typesetting}} で美しい組版を行うためのヒント
+ならびに長い数式を処理する際のヒントを,
+{\bfseries \ref{sec:source}} で編集用電子ファイル提出方法に関わることを,
+{\bfseries 付録}でA4用紙への出力とPDFの作成方法について説明します.
+
+論文執筆上の注意事項は,各ソサイエティの
+「和文論文誌投稿のしおり」
+(http://www.ieice.org\slash{}jpn\slash{}ronbun.html)を
+参照してください.
+ここでは,本クラスファイルの使用にかかわる点のみを説明します.
+
+本誌は本文の活字の大きさを,写植の単位の12級(3 $\times$ 3\,mmの
+大きさの文字,9\,pt 相当)に設定しています.
+したがって,\verb/\normalsize/,\verb/\small/ などのサイズおよび行間を
+表~\ref{table:1} に示すように変更しています.
+
+\begin{table}[tb]% Table 1
+\caption{サイズと行間の変更}
+\ecaption{Settings of size and baselineskip.}
+\label{table:1}
+\begin{center}
+\begin{tabular}{ll}
+\Hline
+\noalign{\vskip.5mm}
+\verb/\normalsize/   & 9\,pt,\verb/\baselineskip=4.75mm/ \\
+\verb/\Small/        & 8\,pt,\verb/\baselineskip=4.5mm/  \\
+\verb/\small/        & 7\,pt,\verb/\baselineskip=3.25mm/ \\
+\verb/\footnotesize/ & 6\,pt,\verb/\baselineskip=3.25mm/ \\
+\verb/\scriptsize/   & \verb/\footnotesize/ と同じ \\
+\verb/\tiny/         & 5\,pt,\verb/\baselineskip=2.25mm/ \\
+\verb/\large/        & 10\,pt,\verb/\baselineskip=4.75mm/ \\
+\verb/\Large/        & 11\,pt,\verb/\baselineskip=6.75mm/ \\
+\verb/\LARGE/        & 12\,pt,\verb/\baselineskip=8.25mm/ \\
+\verb/\huge/         & 14\,pt,\verb/\baselineskip=25pt/   \\
+\verb/\Huge/         & 17\,pt,\verb/\baselineskip=30pt/   \\
+\noalign{\vskip.5mm}
+\Hline
+\end{tabular}%
+\end{center}
+\end{table}
+
+本クラスファイルを利用した組版は,刷り上がりの目安と考えてください.
+著者から提出された編集用電子ファイルに基づき,
+あらためて印刷会社が組版を行います.
+\TeX\ のバージョンの違いなどによって,
+著者の提出した原稿と印刷会社で組版した原稿の
+レイアウトなどが変わる可能性があります.
+
+レイアウトに関係するパラメータの変更などは行わないでください.
+また,文字や段落の位置調節を行うための \verb/\vspace/,
+\verb/\smallskip/,\verb/\medskip/,
+\verb/\hspace/ などのコマンドの使用は必要最少限にとどめ,
+\texttt{list} 環境のパラメータを変更することも避けてください.
+
+\section{クラスファイルの説明}
+\label{sec:cls}
+
+\IEICEJcls\ クラスファイルは,オプションを指定することにより
+原稿の体裁(正確には,「和文論文誌投稿のしおり」で規定されている
+「投稿種別」ではなく,原稿の見た目の体裁)にすることができます.
+その体裁に従って,それに応じたオプションをドキュメントクラスに
+指定してください.体裁とオプションの対応は,表~\ref{table:2}の通りです.
+オプションに何も指定しない場合は,paper が指定されたものとみなします.
+
+エレクトロニクスソサイエティの「レター」は「レター(C分冊)」と略記します.
+
+\begin{table}[tb]% Table 2
+\caption{体裁とオプション}
+\ecaption{Options of documentclass.}
+\label{table:2}
+\begin{center}
+\begin{tabular}{llc}
+\Hline
+\noalign{\vskip.5mm}
+体裁
+ & オプション
+  & 参照ページ\\ 
+\hline
+\noalign{\vskip.5mm}
+\bfseries 論文
+ & \texttt{paper}
+  & p.\pageref{sec:paper}\\
+\hskip1zw 招待論文
+ & \texttt{invited}
+  & p.\pageref{sec:paper}\\
+\hskip1zw サーベイ論文
+ & \texttt{survey}
+  & p.\pageref{sec:paper}\\
+\hskip1zw 解説論文
+ & \texttt{comment}
+  & p.\pageref{sec:paper}\\
+\noalign{\vskip.5mm}
+\bfseries レター
+ & 
+  & \\
+\hskip1zw 研究速報
+ & \texttt{letter}
+  & p.\pageref{sec:letter}\\
+\hskip1zw 紙上討論
+ & \texttt{letter}
+ & p.\pageref{sec:letter}\\
+\hskip1zw 問題提起
+ & \texttt{letter}
+  & p.\pageref{sec:letter}\\
+\hskip1zw 訂正
+ & \texttt{letter}
+  & p.\pageref{sec:letter}\\
+\hskip1zw ショートノート
+ & \texttt{letter}
+  & p.\pageref{sec:letter}\\
+\noalign{\vskip.5mm}
+\bfseries レター(C分冊)
+ & \texttt{electronicsletter}
+  & p.\pageref{sec:electronicsletter} \\
+\hline
+\noalign{\vskip.5mm}
+\bfseries 技術研究報告
+ & \texttt{technicalreport}
+  & p.\pageref{sec:technicalreport} \\
+\Hline
+\end{tabular}%
+\end{center}
+\end{table}
+
+\subsection{テンプレートと記述方法}
+
+まず,「論文」の体裁から説明します.
+「招待論文」,「サーベイ論文」,「解説論文」が同じ体裁です.
+
+「レター」,「レター(C分冊)」
+および「技術研究報告」は,「論文」の体裁と異なる部分のみ説明します
+({\bfseries \ref{sec:letter}},{\bfseries \ref{sec:electronicsletter}},
+{\bfseries \ref{sec:technicalreport}} 参照).
+
+原稿執筆に際しては,本クラスファイルとともに配布される
+テンプレート(\texttt{template.tex})を利用できます.
+
+\subsubsection{「論文」の体裁}
+\label{sec:paper}
+
+\begin{verbatim}
+\documentclass[paper]{ieicej}
+%\documentclass[invited]{ieicej}
+%\documentclass[survey]{ieicej}
+%\documentclass[comment]{ieicej}
+%\documentclass[letter]{ieicej}
+%\usepackage[dvips]{graphicx}
+%\usepackage[dvipdfmx]{graphicx}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage{textcomp}
+\usepackage{latexsym}
+\field{A}
+\jtitle[柱用題名]{論文題名}
+\etitle{Title in English}
+\authorlist{%
+ \authorentry{電子 花子}{Hanako DENSHI}
+  {Tokyo}\MembershipNumber{1111111}
+ \authorentry{情報 太郎}{Taro JOHO}
+  {Osaka}\MembershipNumber{}
+}
+\affiliate[Tokyo]{第一大学工学部,東京都}
+ {Faculty of Engineering, First University, 
+  1--2--3 Yamada, Minato-ku, Tokyo, 
+  105--0123 Japan}
+\affiliate[Osaka]{大阪株式会社開発部,吹田市}
+ {R\&D Division, Osaka Corporation, 
+  4--5--6 Kawada, Suita-shi, 
+  565--0456 Japan}
+\begin{document}
+\begin{abstract}
+和文あらまし
+\end{abstract}
+\begin{keyword}
+和文キーワード
+\end{keyword}
+\begin{eabstract}
+英文アブストラクト
+\end{eabstract}
+\begin{ekeyword}
+英文キーワード
+\end{ekeyword}
+\maketitle
+\section{まえがき}
+ ---- (略) ----
+\ack % 謝辞
+ ---- (略) ----
+\begin{thebibliography}{9}
+\bibitem{}
+\end{thebibliography}
+\appendix
+\section{}
+\begin{biography}
+\profile{m}{電子 花子}{%
+1996東北一大学情報工学科卒.
+1999東京第一大学工学部工学部助手.
+某システムの研究に従事.}
+\profile*{m}{情報 太郎}{%
+1995大阪一大学工学科卒.
+1997同大大学院工学研究科修士課程了.
+1998大阪(株)入社.
+某コンピュータ応用の研究に従事.
+ABC学会会員.}
+\end{biography}
+\end{document}
+\end{verbatim}
+
+%\affiliate[Tokyo]{%
+% \Jorganization{第一大学}
+% \Jdepartment{工学部},
+% \Jaddress{東京都}
+%}
+%{\Edepartment{Faculty of Engineering},
+% \Eorganization{First University},
+% \Eaddress{1--2--3 Yamada, Minato-ku, 
+%  Tokyo, 105--0123 Japan}
+%}
+%\affiliate[Osaka]{%
+% \Jorganization{大阪株式会社},
+% \Jdepartment{開発部},
+% \Jaddress{吹田市}
+%}
+%{\Edepartment{R\&D Division},
+% \Eorganization{Osaka Corporation},
+% \Eaddress{4--5--6 Kawada, Suita-shi, 
+%  565--0456 Japan}
+%}
+
+\onelineskip
+
+%\verb/\documentclass/ のオプション \texttt{usejistfm} については,
+%付録 \ref{sec:jistfm} 章(\pageref{sec:jistfm}頁)を参照してください.
+
+記述方法を順に説明します.
+\begin{itemize}
+\item
+\verb/\field/ は,各ソサイエティごとの分冊の指定です.
+分冊と \verb/\field/ に指定するアルファベットの
+対照は以下のとおりです.
+
+\halflineskip
+
+\begin{center}
+\begin{small}
+\begin{tabular}{p{6zw}l}
+分冊      & 指定するアルファベット\\
+\hline
+\noalign{\vskip.5mm}
+A分冊 & \texttt{A}\\
+B分冊 & \texttt{B}\\
+C分冊 & \texttt{C}\\
+D分冊 & \texttt{D}\\
+\noalign{\vskip.5mm}
+\hline
+\end{tabular}%
+\end{small}
+\end{center}
+
+\halflineskip
+
+%\item
+%\verb/\vol/ は,本誌の巻数を指定します.
+%\verb/\vol{96}/ のように指定してください.
+%\item
+%\verb/\no/ は本誌の発行月を指定します.
+%アラビア数字で \verb/\no{1}/ のように指定してください.
+
+\item
+\verb/\jtitle/ には和文題名を指定します.
+任意の場所で改行したいときは,\verb/\\/ で改行できます.
+
+\verb/\jtitle/ の引き数は,柱(3ページ目の一番上に出力される
+``論文/電子情報……'' という部分)にも出力されます.
+題名が長すぎて柱の文字がはみ出す場合(ワーニングが出力されます)などは,
+\begin{verbatim}
+\jtitle[柱用に短くした題名]{題名}
+\end{verbatim}
+という形で,柱用に短い題名を指定してください.
+
+\item
+\verb/\etitle/ は,欧文題名を指定します.
+引き数は柱に出力されないため,
+\verb/\etitle[柱用題名]{題名}/ という使い方はしません.
+
+\item
+著者名を出力するには,以下のように記述してください.
+著者名,所属などの出力体裁を自動的に整えます.
+
+著者のリストを \verb/\authorentry/ に記述し,
+リスト全体を \verb/\authorlist/ の引き数にします.
+\begin{verbatim}
+\authorlist{%
+ \authorentry{和文著者名}{英文著者名}
+  {所属ラベル}\MembershipNumber{会員番号}
+ \authorentry{和文著者名}{英文著者名}
+  {所属ラベル}[現在の所属ラベル]
+  \MembershipNumber{}
+}
+\end{verbatim}
+という形です.
+例えば,以下のように記述します.
+\begin{verbatim*}
+\authorlist{%
+\authorentry{電子 花子}{Hanako DENSHI}
+{Tokyo}\MembershipNumber{1111111}
+\authorentry{情報 太郎}{Taro JOHO}
+{Osaka}\MembershipNumber{}
+\authorentry{通信 次郎}{Jiro TSUSHIN}
+{Nagoya}[ATT]\MembershipNumber{}
+}
+\end{verbatim*}
+
+\begin{itemize}
+\item
+第1引き数は和文著者名を指定します.
+{\bfseries 姓と名の間には必ず半角のスペースを挿入}してください
+(スペースを挿入し忘れた場合には,ワーニングが出力されます).
+
+\item
+第2引き数は英文著者名を指定します.
+ファミリーネームは大文字で記述します.
+
+\item
+第3引き数は著者の所属ラベルを指定します.
+このラベルは,後述する \verb/\affiliate/ の第1引き数に対応します.
+ラベルは大学名,企業名,地名などを表す簡潔なものにしてください.
+{\bfseries 所属がない場合}は,\texttt{none} と指定します.
+複数の所属がある場合には,カンマ ``,'' で
+ラベルを区切って記述します.
+ラベルの前後やカンマの後ろに余分なスペースを入れないでください.
+\verb/{Tokyo}/ と \verb*/{Tokyo }/ は所属が違うものと判断します.
+
+\item
+\verb/\MembershipNumber/ は会員番号を記述します.
+会員でない場合は引数を空にしてください.
+%%これは投稿原稿の最終ページに著者名とともに出力されます.
+
+\item
+現在の所属を記述する場合は,ブラケットにラベルを指定します.
+{\bfseries ラベルの前後に余分なスペースは入れないでください}.
+このラベルは,後述する \verb/\paffiliate/ の第1引き数に対応します.
+
+\item
+必要に応じて,メールアドレスも指定することができます.
+これは脚注部分に出力されます.
+\begin{verbatim}
+\authorlist{%
+ \authorentry[メールアドレス]{和文著者名}
+  {英文著者名}{所属ラベル}
+}
+\end{verbatim}
+\end{itemize}
+
+\item
+和文著者名および英文著者名を任意の場所で改行する必要が生じた場合は,
+それぞれ \verb/\alignorder/,\verb/\breakauthorline/ コマンドで
+制御することができます.
+\begin{verbatim}
+\alignorder=3
+\end{verbatim}
+と記述すれば,和文著者名のリストを 1 行に 3 名ずつ並べます.
+
+また,
+\begin{verbatim}
+\breakauthorline{3}
+\end{verbatim}
+と記述すれば,英文著者名の 3 人目の後ろで改行します.
+カンマで区切って複数の数字を指定することもできます.
+
+\item
+所属は \verb/\affiliate/ に指定します.
+%\label{sec:affi}
+\begin{verbatim}
+\affiliate[所属ラベル]{和文所属}{英文所属}
+\end{verbatim}
+%\begin{verbatim}
+%\affiliate[所属ラベル]{%
+% \Jorganization{和文所属}
+% \Jdepartment{和文部署},
+% \Jaddress{和文住所}
+%}
+%{\Edepartment{英文部署},
+% \Eorganization{英文所属},
+% \Eaddress{英文住所}
+%}
+%\end{verbatim}
+
+第1引き数のブラケットに \verb/\authorentry/ で指定したラベルを記述します.
+第2引き数に和文の所属を,第3引き数に英文所属を指定します.
+%第2引き数に和文の所属/部署/住所を 
+%\verb/\Jorganization/,\verb/\Jdepartment/,\verb/\Jaddress/ に,
+%第3引き数に英文の部署/所属/住所を
+%\verb/\Edepartment/,\verb/\Eorganization/,\verb/\Eaddress/ に指定します.
+%部署や所属の直後のカンマは適宜挿入してください.
+この場合も,ラベルの前後に余分なスペースを挿入しないでください.
+\verb/\authorentry/ で記述したラベルの出現順に記述してください.
+
+\item
+現在の所属は \verb/\paffiliate/ に指定します.
+\begin{verbatim}
+\paffiliate[現在の所属ラベル]{和文所属}
+\end{verbatim}
+
+第1引き数に \verb/\authorentry/ のブラケットに指定した
+現在の所属ラベルを記述します.
+第2引き数に和文の所属を指定します.
+%この場合,\verb/\Jorganization/,\verb/\Jaddress/ などに
+%所属/住所を分けて記述する必要はありません.
+英文所属を記述する必要はありません.
+この場合も,ラベルの前後に余分なスペースを挿入しないでください.
+
+\item
+\verb/\affiliate/ および \verb/\paffiliate/ のラベルが,
+\verb/\authorentry/ で指定したラベルと対応しないときは,
+ワーニングメッセージが端末に出力されます.
+
+\item
+著者の所属を表すマークが著者名の右肩に出力され,
+それに対応した所属先が脚注部分に出力されます.
+
+% \item
+% \verb/\received/,\verb/\revised/,\verb/\finalreceived/ には,
+% 採録原稿の受付,再受付,最終受付を出力するコマンドです.
+% それぞれ3つの引き数をとり,前から順に年,月,日の数字を記述します.
+% \begin{verbatim}
+% \received{2018}{10}{17}
+% \revised{2019}{3}{19}
+% \fianalreceived{2019}{10}{20}
+% \end{verbatim}
+
+\item
+あらましは,\texttt{abstract} 環境に500字以内で,
+和文キーワードは,\texttt{keyword} 環境に4〜5語で,
+それぞれ記述します.
+
+\item
+英文アブストラクトは,\texttt{eabstract} 環境に 100 ワード以内,
+英文キーワード(和文キーワードの英訳)は,
+\texttt{ekeyword} 環境にそれぞれ記述します.
+英文アブストラクトおよび英文キーワードは,
+最終ページに一段組で出力されます.
+
+\item
+\verb/\maketitle/ は,以上述べたコマンドの後に記述してください.
+このあとに本文が続くことになります.
+
+\item
+「謝辞」を記述する際は,\verb/\ack/ というコマンドを使ってください.
+ゴシック体の ``{\bfseries 謝辞}'' という文字が出力されます.
+謝辞文との間に空行をはさまないでください.
+
+\item
+「付録」を記述する場合は,必ず \verb/\appendix/ コマンドを
+記述してください.
+
+\verb/\appendix/ は,\LaTeXe\ 標準のスタイルでは,
+見出しのカウンターをリセットして,
+セクション番号をアルファベットにしますが,
+本クラスファイルでは,``付録'' という文字を出力し,
+セクション番号はアラビア数字のままです.
+数式番号は ``(A$\cdot$1)'' のようになり,
+図表のキャプションは ``図~A$\cdot$1'',
+``Fig.\,A$\cdot$1''(C, D分冊の英文キャプションは任意)となります.
+
+\item
+著者紹介は,顔写真の掲載の有無に応じて,それぞれ
+\begin{verbatim}
+\begin{biography}
+% 顔写真あり
+\profile{会員種別}{名前}{著者紹介文}
+% 顔写真なし
+\profile*{会員種別}{名前}{著者紹介文}
+\end{biography}
+\end{verbatim}
+のように記述します%
+\footnote{「レター」では不要です.}.
+
+\begin{itemize}
+\item
+第1引き数に正員,非会員などの会員種別を,
+第2引き数に名前を(姓と名の間に半角スペースをはさみます),
+第3引き数に著者紹介文を,それぞれ記述します.
+
+\item
+第1引き数に指定できる文字は,\texttt{m},\texttt{s},
+\texttt{a},\texttt{h},\texttt{n},\texttt{f},\texttt{e} のうちの
+いずれか1つです(次の表を参照).
+%%これらのうちのどれかを指定すると,下の表の右欄に示した
+%%会員種別が名前の右側に出力されます.
+
+\halflineskip
+
+\begin{center}
+\begin{small}
+\begin{tabular}{lll}
+\hline
+\noalign{\vskip.5mm}
+\texttt{m} & 正員             & (正員)\\
+\texttt{s} & 学生員           & (学生員)\\
+\texttt{a} & 准員             & (准員) \\
+\texttt{h} & 名誉員           & (名誉員)\\
+\texttt{n} & 非会員           & 出力されず \\
+\texttt{f} & 正員:フェロー   & (正員:フェロー)\\
+\texttt{e} & 正員:シニア会員 & (正員:シニア会員)\\
+\noalign{\vskip.5mm}
+\hline
+\end{tabular}%
+\end{small}
+\end{center}
+
+\halflineskip
+
+\item
+著者の顔写真を取り込む場合は,$横 : 縦 = 20 : 26.4$ の
+PDFファイル(またはEPS)を用意し(解像度は 300〜350\,dpi),
+著者の順番に,ファイル名を a1.pdf, a2.pdf, ...
+(EPS の場合は a1.eps, a2.eps, ...)とし,
+カレントディレクトリに置きます.
+これらのファイルがカレントディレクトリにあれば,コンパイル時に
+自動的に読み込みます.
+
+PDF(またはEPS)ファイルの取り込みは,クラスファイル中で以下のコマンド
+\begin{verbatim}
+\resizebox{20mm}{26.4mm}
+ {\includegraphics{a1.pdf}}
+\end{verbatim}
+で行っています.
+
+上記のファイル名を使わない場合は,以下のようにします.
+\begin{verbatim}
+\profile[file.pdf]{会員種別}{名前}{著者紹介文}
+または
+\profile[file.eps]{会員種別}{名前}{著者紹介文}
+\end{verbatim}
+
+カレントディレクトリにa1.pdf(a1.eps)などのファイルが用意されていない場合は,
+四角のフレームになります.
+\end{itemize}
+\end{itemize}
+
+\subsubsection{「レター」}
+\label{sec:letter}
+
+\begin{verbatim}
+\documentclass[letter]{ieicej}
+\field{A}
+%\typeofletter{研究速報}
+%\typeofletter{紙上討論}
+%\typeofletter{問題提起}
+%\typeofletter{ショートノート}
+%\typeofletter{訂正}
+\jtitle{論文題名}
+\etitle{Title in English}
+\authorlist{%
+ \authorentry{電子 花子}{Hanako DENSHI}
+  {m}{Tokyo}\MembershipNumber{1111111}
+ \authorentry{情報 太郎}{Taro JOHO}
+  {m}{Osaka}\MembershipNumber{}
+}
+\affiliate[Tokyo]{第一大学工学部,東京都}
+ {Faculty of Engineering, First University, 
+  1--2--3 Yamada, Minato-ku, Tokyo, 
+  105--0123 Japan}
+\affiliate[Osaka]{大阪株式会社開発部,吹田市}
+ {R\&D Division, Osaka Corporation, 
+  4--5--6 Kawada, Suita-shi, 
+  565--0456 Japan}
+\begin{document}
+\maketitle
+\begin{abstract}
+和文あらまし
+\end{abstract}
+\begin{keyword}
+和文キーワード
+\end{keyword}
+\begin{eabstract}
+英文アブストラクト
+\end{eabstract}
+\begin{ekeyword}
+英文キーワード
+\end{ekeyword}
+\section{まえがき}
+ ----(略)----
+\end{verbatim}
+
+%\affiliate[Tokyo]{%
+% \Jorganization{第一大学}
+% \Jdepartment{工学部},
+% \Jaddress{東京都}
+%}
+%{\Edepartment{Faculty of Engineering},
+% \Eorganization{First University},
+% \Eaddress{1--2--3 Yamada, Minato-ku,
+%  Tokyo, 105--0123 Japan}
+%}
+%\affiliate[Osaka]{%
+% \Jorganization{大阪株式会社},
+% \Jdepartment{開発部},
+% \Jaddress{吹田市}
+%}
+%{\Edepartment{R\&D Division},
+% \Eorganization{Osaka Corporation},
+% \Eaddress{4--5--6 Kawada, Suita-shi, 
+%  565--0456 Japan}
+%}
+
+\onelineskip
+
+\begin{itemize}
+\item
+「レター」の分類は,\verb/\typeofletter/ に指定します.
+「研究速報」,「紙上討論」,「問題提起」,「訂正」,
+「ショートノート」(C分冊のみ)です.
+このコマンドを使用しない場合は,「研究速報」となります.
+
+\item
+著者名を出力するには,以下のように記述してください.
+会員種別を指定する引き数が増えます.
+\begin{verbatim}
+\authorlist{%
+ \authorentry{和文著者名}{英文著者名}
+  {会員種別}{所属ラベル}
+  \MembershipNumber{会員番号}
+ \authorentry{和文著者名}{英文著者名}
+  {会員種別}{所属ラベル}[現在の所属ラベル]
+  \MembershipNumber{}
+}
+\end{verbatim}
+例えば,次のように記述します.
+\begin{verbatim*}
+\authorlist{%
+\authorentry{電子 花子}{Hanako DENSHI}
+{m}{Tokyo}\MembershipNumber{1111111}
+\authorentry{通信 次郎}{Jiro TSUSHIN}
+{n}{Nagoya}[ATT]\MembershipNumber{}
+}
+\end{verbatim*}
+
+\begin{itemize}
+\item
+第1引き数は和文著者名を指定します.
+{\bfseries 姓と名の間には必ず半角のスペースを挿入}してください
+(スペースを挿入し忘れた場合には,ワーニングが出力されます).
+
+\item
+第2引き数は英文著者名を指定します.
+ファミリーネームは大文字で記述します.
+
+\item
+第3引き数は著者の会員種別を指定します.
+引き数に指定できる文字は以下に示す小文字の
+アルファベットです(左欄).
+
+\halflineskip
+
+\begin{center}
+\begin{small}
+\tabcolsep.3zw
+\begin{tabular}{@{}llll@{}}
+\hline
+\noalign{\vskip.5mm}
+\texttt{m}
+ & 正員
+  & (正員)
+   & {\itshape Member} \\
+\texttt{s}
+ & 学生員
+  & (学生員)
+   & {\itshape Student Member} \\
+\texttt{a}
+ & 准員
+  & (准員)
+   & {\itshape Affiliate Member} \\
+\texttt{h}
+ & 名誉員
+  & (名誉員)
+   & {\itshape Fellow, Honorary} \\
+ & 
+  & 
+   & \hskip1zw{\itshape Member}\\
+\texttt{n}
+ & 非会員
+  & 出力されず
+   & {\itshape Nonmember} \\
+\texttt{f}
+ & 正員:フェロー
+  & (正員:フェロー)
+   & {\itshape Fellow}\\
+\texttt{e}
+ & 正員:シニア会員
+  & (正員:シニア会員)
+   & {\itshape Senior Member}\\
+\noalign{\vskip.5mm}
+\hline
+\end{tabular}%
+\end{small}
+\end{center}
+
+\halflineskip
+
+\item
+第4引き数は著者の所属ラベルを指定します
+(\verb/\affiliate/ コマンドの第1引き数に対応します).
+ラベルは大学名,企業名,地名などを表す簡潔なものにしてください.
+{\bfseries 所属がない場合}は,\texttt{none} と指定します.
+複数の所属がある場合には,カンマ ``,'' で
+ラベルを区切って記述します.
+ラベルの前後やカンマの後ろに余分なスペースを入れないでください.
+
+\item
+現在の所属を記述する場合は,ブラケットにラベルを指定します
+(\verb/\paffiliate/ の第1引き数に対応します).
+{\bfseries ラベルの前後に余分なスペースは入れないでください}.
+
+\item
+必要に応じて,メールアドレスも指定できます.
+\begin{verbatim}
+\authorlist{%
+ \authorentry[メールアドレス]{和文著者名}
+  {英文著者名}{会員種別}{所属ラベル}
+}
+\end{verbatim}
+\end{itemize}
+
+\item
+\verb/\maketitle/ は,\texttt{abstract} 環境と \texttt{keyword} 環境の
+前に記述します.
+
+\item
+あらましは,\texttt{abstract} 環境に120字以内で,
+和文キーワードは,\texttt{keyword} 環境に4〜5語で,
+それぞれ記述します.
+
+\item
+英文アブストラクトは,\texttt{eabstract} 環境に 50 ワード以内で,
+英文キーワード(和文キーワードの英訳)は,
+\texttt{ekeyword} 環境にそれぞれ記述します.
+英文アブストラクトおよび英文キーワードは,
+最終ページに一段組で出力されます.
+\end{itemize}
+
+\subsubsection{「レター(C分冊)」}
+\label{sec:electronicsletter}
+
+\begin{verbatim}
+\documentclass[electronicsletter]{ieicej}
+\field{A}
+\jtitle[柱用題名]{論文題名}
+\etitle{Title in English}
+\authorlist{%
+ \authorentry{電子 花子}{Hanako DENSHI}
+  {m}{Tokyo}\MembershipNumber{1111111}
+ \authorentry{情報 太郎}{Taro JOHO}
+  {m}{Osaka}\MembershipNumber{}
+}
+\affiliate[Tokyo]{第一大学工学部,東京都}
+ {Faculty of Engineering, First University, 
+  1--2--3 Yamada, Minato-ku, Tokyo, 
+  105--0123 Japan}
+\affiliate[Osaka]{大阪株式会社開発部,吹田市}
+ {R\&D Division, Osaka Corporation, 
+  4--5--6 Kawada, Suita-shi, 
+  565--0456 Japan}
+\begin{document}
+\begin{abstract}
+和文あらまし
+\end{abstract}
+\begin{keyword}
+和文キーワード
+\end{keyword}
+\begin{eabstract}
+英文アブストラクト
+\end{eabstract}
+\begin{ekeyword}
+英文キーワード
+\end{ekeyword}
+\maketitle
+ ----(略)----
+\end{verbatim}
+
+%\affiliate[Tokyo]{%
+% \Jorganization{第一大学}
+% \Jdepartment{工学部},
+% \Jaddress{東京都}
+%}
+%{\Edepartment{Faculty of Engineering},
+% \Eorganization{First University},
+% \Eaddress{1--2--3 Yamada, Minato-ku, 
+%  Tokyo, 105--0123 Japan}
+%}
+%\affiliate[Osaka]{%
+% \Jorganization{大阪株式会社},
+% \Jdepartment{開発部},
+% \Jaddress{吹田市}
+%}
+%{\Edepartment{R\&D Division},
+% \Eorganization{Osaka Corporation},
+% \Eaddress{4--5--6 Kawada, Suita-shi, 
+%  565--0456 Japan}
+%}
+
+\onelineskip
+
+「レター(C分冊)」は,\verb/\authorentry/ の記述が「レター」と同じほかは
+「論文」と基本的に同じです.
+
+\subsubsection{「技術研究報告」}
+\label{sec:technicalreport}
+
+\begin{verbatim}
+\documentclass[technicalreport]{ieicej}
+\jtitle{和文題名}
+\jsubtitle{和文副題名}
+\etitle{英文題名}
+\esubtitle{英文副題名}
+\authorlist{%
+ \authorentry[densi@firstuniv.ac.jp]
+  {電子 花子}{Hanako DENSHI}{Tokyo}
+ \authorentry[joho@ohsakacorp.co.jp]
+  {情報 太郎}{Jiro JOHO}{Osaka}
+}
+\affiliate[Tokyo]{第一大学工学部\\
+  〒105--0123 東京都港区山田1--2--3}
+ {Faculty of Engineering,
+  First University\\
+  1--2--3 Yamada, Minato-ku, Tokyo,
+  105--0123 Japan}
+\affiliate[Osaka]{大阪株式会社開発部\\
+  〒565--0456 大阪府吹田市河田4--5--6}
+ {R\&D Division, Osaka Corporation\\
+  4--5--6 Kawada, Suita-shi,
+  565--0456 Japan}
+\begin{document}
+\begin{jabstract}
+和文あらまし
+\end{jabstract}
+\begin{jkeyword}
+和文キーワード
+\end{jkeyword}
+\begin{eabstract}
+英文アブストラクト
+\end{eabstract}
+\begin{ekeyword}
+英文キーワード
+\end{ekeyword}
+ ----(略)----
+\maketitle
+\end{verbatim}
+
+\begin{itemize}
+\item
+\verb/\jtitle/ には和文題名を指定します.
+任意の場所で改行したいときは,\verb/\\/ で改行できます.
+
+\item
+\verb/\etitle/ は,欧文題名を指定してください.
+
+\item
+和文副題名および英文副題名を指定することができます.
+それぞれ,\verb/\jsubtitle/ と \verb/\esubtitle/ に
+記述します.
+
+\item
+著者名の記述は,{\bfseries \ref{sec:paper}} の説明を参照してください.
+
+執筆者が複数の場合で,メールアドレスをお持ちでない方がある場合は,
+必ず \texttt{[]} を記述した上で,中を空にしてください.
+メールアドレスは1人につき1つだけ記述します.
+1人につき複数のアドレスには対応していません.
+
+{\bfseries 発表者が一人で所属がない場合}は,
+\texttt{none} と指定します.
+
+{\bfseries 発表者が複数で所属のない方がいる場合}は,
+\texttt{none} 以外の適当なラベルを付けたうえで,
+\verb/\affiliate/ は記述しません.
+
+メールアドレスの{\bfseries 出力が望み通りの結果にならない場合}は,
+\verb/\MailAddress/ に直接記述してください.
+\begin{verbatim}
+ \MailAddress{$\dagger$name@xx.yy.zz.jp}
+\end{verbatim}
+
+\item
+所属は \verb/\affiliate/ に指定します.
+\begin{verbatim}
+ \affiliate[ラベル]
+  {和文勤務先\\ 和文連絡先住所}
+  {英文勤務先\\ 英文連絡先住所}
+\end{verbatim}
+
+第1引き数に \verb/\authorentry/ で指定したラベルを記述します.
+ラベルの前後に余分なスペースを挿入しないでください.
+第2引き数に和文所属を,
+第3引き数に英文所属を指定しますが,
+それぞれ,勤務先と連絡先住所を \verb/\\/ で区切ってください.
+\verb/\authorentry/ に記述したラベルの出現順に記述します.
+
+\item
+和文の「あらまし」「キーワード」は,\texttt{jabstract} 環境,
+\texttt{jkeyword} 環境にそれぞれ記述します.また,
+英文の「abstract」「key words」は,\texttt{eabstract} 環境,
+\texttt{ekeyword} 環境にそれぞれ記述します.
+
+\item
+論文末尾の著者紹介は必要ありません.
+\end{itemize}
+
+\noindent
+{\bfseries 技術研究報告の体裁から論文誌の体裁に変更する場合}
+
+「論文」「レター」などの論文誌の体裁に変更する場合,
+以下の点に注意してください.
+
+\begin{itemize}
+\item
+\verb/\jsubtitle/ と \verb/\esubtitle/ は記述しても無効になります.
+
+\item
+\verb/\affiliate/ の和文連絡先住所を簡略化する必要があります.
+論文誌を参照してください.
+また,勤務先と連絡先住所を \verb/\\/ で区切る必要はありません.
+\verb/\\/ があるとエラーになります.
+%\verb/\affiliate/ の和文連絡先住所を,部署/所属/住所ごとに記述したり,
+%簡略化する必要があります.
+%\ref{sec:paper}の説明(\pageref{sec:affi}頁参照)を参照してください.
+%また,勤務先と連絡先住所を \verb/\\/ で区切る必要はありません.
+%\verb/\\/ があるとエラーになります.
+
+\item
+\texttt{jabstract} 環境は \texttt{abstract} 環境と見なしますが,
+\texttt{eabstract} 環境は,最終ページに一段組で出力されます.
+
+\item
+\texttt{jkeyword} 環境は \texttt{keyword} 環境と見なしますが,
+\texttt{ekeyword} 環境は,最終ページに一段組で出力されます.
+\end{itemize}
+
+\subsection{見出しの字どり}
+
+\verb/\section/,\verb/\subsection/ などについては,
+本誌のスタイルにより,その見出しが4字以下の際,5字どりになるように
+設定しています({\bfseries \ref{sec:etc}},``付録'' などの見出しを参照).
+
+\subsection{ディスプレー数式}
+
+数式の頭は左端から1字下げのところに,また,数式番号は
+右端から1字入ったところに出力される設定になっています.
+この設定を前提に数式の折り返しを調整してください.
+\verb/\documentclass/ のオプションとして 
+\texttt{fleqn} を指定する必要はありません.
+
+本誌の場合,二段組みで一段の左右幅がせまいため,
+数式と数式番号が重なったり,数式がはみ出したりすることが
+頻繁に生じると思われます.
+\texttt{Overfull} \verb/\hbox/ のメッセージには特に気をつけてください.
+
+数式記述の際のヒントについては,{\bfseries \ref{equation:1}} および
+{\bfseries \ref{equation:2}} が参考になるかもしれません.
+
+\subsection{図表とキャプション}
+
+図表を置く位置,キャプションの記述,図の取り込み,
+表の記述などについて説明します.
+
+\subsubsection{図表を置く位置}
+
+\texttt{float} 環境は,それが初めて引用される段落の
+直後または直前あたりに挿入することが基本ですが,
+二段組みの場合は,それが初めて引用されるページより
+前に置くことが必要になることがあります.
+図表の出力位置は,図表の参照と同じページか,
+無理な場合は次のページに置くことが基本ですから,
+二段組みの図表の場合は,\texttt{float} 環境を記述する位置の
+試行錯誤が必要となることがあります.
+
+図表の出力位置を指定するオプションとして,\texttt{[h]} の使用は避け,
+\texttt{[tb]},\texttt{[tbp]} などを指定して,
+ページの天か地に置くことを基本にしてください.
+
+\subsubsection{キャプションとラベル}
+
+%図表のキャプションは,和文と欧文で指定する必要があるため,
+%\verb/\ecaption/ というマクロを用意しました.
+%使い方は \verb/\caption/ と同じです.
+%図~\ref{fig:1} のように記述してください.
+
+図表のキャプションは,
+A, B分冊の場合は和文と欧文のキャプションが必要です
+(図~\ref{fig:1},表~\ref{table:3}参照).
+C, D分冊の場合は欧文キャプションは任意です
+(図\ref{fig:2},表~\ref{table:4}参照).
+
+欧文キャプションを指定するために,
+\verb/\ecaption/ というマクロを用意しました.
+使い方は \verb/\caption/ と同じです.
+
+\begin{figure}[t]%fig.1
+\setbox0\vbox{%
+\hbox{\verb/\begin{figure}[tb]/}
+\hbox{\verb/%\capwidth=60mm/}
+\hbox{\verb/%\ecapwidth=60mm/}
+\hbox{\verb/\vspace{45mm}/}
+\hbox{\verb/\caption{図キャプションの例(A, B, D分冊)}/}
+\hbox{\verb/\label{fig:1}/}
+\hbox{\verb/\ecaption{An example of caption (A, B, D)./}
+\hbox{\verb/\end{figure}/}
+}
+\begin{center}
+\fbox{\box0}
+\end{center}
+\caption{図キャプションの例(A, B, C, D分冊)}
+\label{fig:1}
+\ecaption{An example of caption (A, B, C, D).}
+\end{figure}
+
+\begin{figure}[t]%fig.2
+\setbox0\vbox{%
+\hbox{\verb/\begin{figure}[tb]/}
+\hbox{\verb/%\capwidth=60mm/}
+\hbox{\verb/%\ecapwidth=60mm/}
+\hbox{\verb/\vspace{45mm}/}
+\hbox{\verb/\caption{図キャプションの例(C, D分冊)}/}
+\hbox{\verb/\label{fig:2}/}
+\hbox{\verb/\end{figure}/}
+}
+\begin{center}
+\fbox{\box0}
+\end{center}
+\caption{図キャプションの例(C, D分冊)}
+\label{fig:2}
+\end{figure}
+
+\begin{itemize}
+\item
+キャプションの幅は,一段の場合には 65\,mm に,
+二段ぬきの場合はテキストの幅の3分2に設定しています.
+
+\item
+キャプションを任意の場所で改行したい場合は,
+\verb/\\/ を使って改行することができます.
+標準の \LaTeXe\ でこういう使い方をすると,
+エラーになるので注意してください.
+
+\item
+また,\verb/\capwidth/ および \verb/\ecapwidth/ に長さを指定すれば,
+その幅で折り返すことができます.
+\begin{verbatim}
+\capwidth=60mm
+\end{verbatim}
+これは \verb/\caption/ コマンドの前に指定します.
+
+\item
+\verb/\label/ を記述する場合は,
+必ず \verb/\caption/ の直後に置きます.
+上におくと \verb/\ref/ で正しい番号を参照できません.
+\end{itemize}
+
+\subsubsection{図の取り込み}
+
+図は基本的にPDF形式のファイルを取り込むようにして下さい.
+最近はPDF形式を利用することが推奨されています.
+
+\texttt{graphicx} パッケージのオプションとして
+\texttt{dvipdfmx} を指定します.
+\begin{verbatim}
+\usepackage[dvipdfmx]{graphicx}
+\end{verbatim}
+
+\begin{itemize}
+\item
+適当なアプリケーションで図を作成し保存形式をpdfにします.
+
+PDFファイルはファイルの内部にBoundingBoxの情報を持っていませんので
+\begin{verbatim}
+\includegraphics
+ [bb=0 0 横ポイント数 縦ポイント数,width=幅]
+  {file.pdf}
+\end{verbatim}
+(段幅の関係で折り返します)
+などと明示的にBoundingBoxの値を記述するか,
+ターミナルで \texttt{extractbb} を実行し
+\begin{verbatim}
+$ extractbb file.pdf
+\end{verbatim}
+生成された \texttt{file.xbb} というファイルから,
+コンパイル時にBoundingBoxの情報を得る方法がありましたが,
+TeX Live 2015以降,MacTeX-2015以降,W32TeXでは,コンパイル時に自動的に
+\texttt{extractbb} を実行してBoundingBoxの情報を取得できるようになりました.
+しかし,\texttt{xbb} ファイルを生成しておいたほうがコンパイルの速度は
+速くなります.この場合は,図を修正したときにその都度 \texttt{extractbb} を
+実行する必要があります.
+
+\item
+なお,PDFではなく\PS 形式(EPS)の図を読み込みたいときには,
+\begin{verbatim}
+\usepackage[dvips]{graphicx}
+\end{verbatim}
+と指定して下さい.
+\end{itemize}
+
+詳しくはTeX Wiki\cite{texwiki}を参照されることを勧めます.
+また文献では\cite{FMi1,latex,FMi2,Nakano,otobe,Okumura3,Eguchi}などが
+あります.
+
+\subsubsection{表の記述}
+
+表は \verb/\small/(7pt,10級)で組まれるように設定しています.
+
+例えば,以下のように記述します.
+\begin{verbatim}
+\begin{table}[tb]
+\caption{和文キャプション}
+\label{table:1}
+\ecaption{英文キャプション(A, B, D分冊のみ)}
+\begin{center}
+ \begin{tabular}{|c|c|c|}
+ \Hline %% ←
+  A & B & C \\
+ \hline
+  x & y & z\\
+ \Hline %% ←
+ \end{tabular}
+\end{center}
+\end{table}
+\end{verbatim}
+
+\verb/\caption/ は tabular 環境の上に記述します.
+本誌では,表の罫の一番上と一番下を太くします.
+このため \verb/\Hline/ というマクロを使用してください.
+これは
+\begin{verbatim}
+\def\Hline{\noalign{\hrule height 0.4mm}}
+\end{verbatim}
+と定義してあります(表~\ref{table:1},\ref{table:2} 参照).
+\verb/\hline/ の太さは 0.1\,mm です.
+
+表の作成に関しては,
+文献\cite{FMi1,latex,otobe,Okumura3}などを
+参照してください.
+
+\subsection{文献リストと文献番号の参照}
+
+\BibTeX\ を利用しない場合は,
+文献リストの記述\ddash 
+著者名とイニシャル,表題・書名,雑誌名・発行所および雑誌名の略語,巻,号,
+ページ,発行年などの体裁\ddash 
+は「投稿のしおり」に厳密に従ってください.
+
+\BibTeX\ を使って,
+文献用データベースファイルから文献リストを作成する場合は,
+文献用スタイルとして \texttt{sieicej.bst} を使用します
+(利用方法は \texttt{sieicej.pdf} を参照).
+\BibTeX\ の使い方は,文献 \cite{latex,FMi1,Okumura3} などを
+参考にしてください.
+
+文献引用のコマンド(\verb/\cite/)は,
+古いバージョンの \texttt{citesort.sty} に手を加えたものを
+使用しています.
+
+\texttt{cite} パッケージを利用することもできます.
+この場合は,\texttt{noadjust} オプションを指定することを勧めます.
+\begin{verbatim}
+\usepackage[noadjust]{cite}
+\end{verbatim}
+
+例えば,
+\verb/\cite{/\allowbreak
+\texttt{latex,}\allowbreak
+\texttt{FGo1,}\allowbreak
+\texttt{PEn,}\allowbreak
+\texttt{Fujita5}\allowbreak
+\texttt{tex}\allowbreak
+\verb/}/ と記述すれば,
+``\cite{latex}, \cite{FGo1}, \cite{PEn}, 
+\cite{Fujita5}, \cite{tex}'' となるところを,
+``\cite{latex,FGo1,PEn,Fujita5,tex}'' のように,
+番号順に並べ変え,かつ番号が続く場合は ``〜'' でつなぎます.
+
+\subsection{定理,定義などの環境}
+
+定理,定義,命題などの定理型環境を
+記述するには \verb/\newtheorem/(文献\cite{latex,FMi1}参照)が
+利用できますが,下の出力例のように,本誌のスタイルにあわせて,
+\LaTeXe\ の標準と異なり,環境の上下の空きやインデントを変更し,
+見出しはゴシックとならず,本文の欧文もイタリックになりません.
+パッケージを利用される場合は,\texttt{amsthm} を勧めます.
+
+例えば,
+\begin{verbatim}
+\newtheorem{theorem}{定理}
+%\thmbracket{(}{)}
+\begin{theorem}
+これは ``定理'' の例です.
+このような出力になります.
+text in Roman typeface.
+\end{theorem}
+\end{verbatim}
+とすれば,
+%\thmbracket{(}{)}
+%\thmbracket{}{}
+\begin{theorem}% []
+これは ``定理'' の例です.このような出力になります.
+text in Roman typeface.
+\end{theorem}
+\noindent
+と出力されます.
+
+また,\underline{(}ステップ1\underline{)}のように,
+前後の括弧を変えたいときは,
+\verb/\thmbracket{(}{)}/ のように \verb/\thmbracket/ の2つの引き数に
+前後の括弧をそれぞれ記述します.
+
+\subsection{脚注と脚注マーク}
+\label{sec:footnote}
+
+脚注マークは ``$^{\mbox{\tiny (注1)}}$'' という形で出力されます.
+
+\subsection{\texttt{verbatim} 環境}
+
+\texttt{verbatim} 環境のレフトマージン,行間,サイズを
+変更することができます\cite{Okumura3}.デフォルトは
+\begin{verbatim}
+\verbatimleftmargin=0pt
+% レフトマージンは 0pt 
+\def\verbatimsize{\normalsize}
+% 本文と同じサイズ
+\verbatimbaselineskip=\baselineskip
+% 本文と同じ行間
+\end{verbatim}
+ですが,それぞれパラメータやサイズ指定を変更することができます.
+\begin{verbatim}
+\verbatimleftmargin=2zw
+% --> レフトマージンを2字下げに
+\def\verbatimsize{\small}
+% --> 文字の大きさを \small に
+\verbatimbaselineskip=3mm
+% --> 行間を 3mm に
+\end{verbatim}
+
+\subsection{\texttt{otf} パッケージ}
+
+\texttt{otf.sty} を利用される場合は,以下のような
+オプションをつけることを勧めます.
+\begin{verbatim}
+SJIS/EUC の場合
+\usepackage[scale=0.985678]{otf}
+UTF の場合
+\usepackage[uplatex,scale=0.948427]{otf}
+\end{verbatim}
+
+\subsection{その他}
+\label{sec:etc}
+
+\subsubsection{\IEICEJcls\ で定義しているマクロ}
+
+\begin{enumerate}
+\item
+「証明終」を意味する記号 ``$\Box$'' を出力するマクロとして
+\verb/\QED/ を定義してあります\cite{tex}.
+\verb/\hfill$\Box$/ では,この記号の直前の文字が行末に来る場合,
+記号が行頭に来てしまいますので,\verb/\QED/ を使ってください.
+``$\Box$'' を出力するには,パッケージの指定として
+\begin{verbatim}
+\usepackage{latexsym}
+\end{verbatim}
+が必要です.
+
+\item
+\verb/\onelineskip/,\verb/\halflineskip/ という行間スペースを
+定義しています.
+その名のとおり,1行空け,半行空けに使ってください.
+和文の組版の場合は,こうした単位の空け方が好まれます.
+
+\item
+2倍ダッシュの ``\ddash '' は,
+\verb/\ddash/ というマクロを使ってください
+({\bfseries \ref{sec:hyouki}} 参照).
+---を2つ重ねると,その間に若干のスペースが入ることがあり
+見苦しいからです.
+
+\item
+このクラスファイルではこのほかにあらかじめ,
+\verb/\RN/,\verb/\FRAC/,\verb/\MARU/,\verb/\kintou/,
+\verb/\ruby/ というマクロ\cite{tex,Okumura3}を
+定義しています(表~\ref{table:3}).
+\end{enumerate}
+
+\begin{table}[t]% Table 3
+\caption{その他のマクロ(A, B, C, D分冊)}
+\ecaption{Miscellaneous macros (A, B, C, D).}
+\label{table:3}
+\begin{center}
+\begin{tabular}{c|c}
+\Hline
+\verb/\RN{2}/ & \RN{2} \\
+\verb/\RN{117}/ & \RN{117} \\
+\verb/\FRAC{$\pi$}{2}/ & \FRAC{$\pi$}{2}\\
+\verb/\FRAC{1}{4}/ & \FRAC{1}{4} \\
+\verb/\MARU{1}/ & \MARU{1}\\
+\verb/\MARU{a}/ & \MARU{a}\\
+\verb/\kintou{4zw}{記号例}/ & \kintou{4zw}{記号例}\\
+\verb/\ruby{砒}{ひ}\ruby{素}{そ}/ & \ruby{砒}{ひ}\ruby{素}{そ}\\
+\Hline
+\end{tabular}%
+\end{center}
+\end{table}
+
+\begin{table}[t]% Table 4
+\caption{その他のマクロ(C, D分冊)}
+\label{table:4}
+\begin{center}
+\begin{tabular}{c|c}
+\Hline
+\verb/\RN{2}/ & \RN{2} \\
+\verb/\RN{117}/ & \RN{117} \\
+\verb/\FRAC{$\pi$}{2}/ & \FRAC{$\pi$}{2}\\
+\verb/\FRAC{1}{4}/ & \FRAC{1}{4} \\
+\verb/\MARU{1}/ & \MARU{1}\\
+\verb/\MARU{a}/ & \MARU{a}\\
+\verb/\kintou{4zw}{記号例}/ & \kintou{4zw}{記号例}\\
+\verb/\ruby{砒}{ひ}\ruby{素}{そ}/ & \ruby{砒}{ひ}\ruby{素}{そ}\\
+\Hline
+\end{tabular}%
+\end{center}
+\end{table}
+
+\subsubsection{\AmSLaTeX\ について}
+
+数式のより高度な記述のために,\AmSLaTeX\ の
+パッケージ(文献\cite{FMi1,otobe}参照)を使う場合には,
+パッケージとして
+\begin{verbatim}
+\usepackage[fleqn]{amsmath}
+\end{verbatim}
+が必要です.この場合,オプションとして
+\texttt{[fleqn]} を必ず指定してください.
+
+\texttt{amsmath} パッケージは,多くのファイルを読み込みますが,
+ボールドイタリックだけを使いたい場合は,
+\begin{verbatim}
+\usepackage{amsbsy}
+\end{verbatim}
+で済みます.
+
+また,記号類だけを使いたい場合は,
+\begin{verbatim}
+\usepackage{amssymb}
+\end{verbatim}
+で済みます.
+
+なお,\LaTeXe\ では \verb/\mbox{\boldmath $x$}/ に代えて,
+\verb/\boldsymbol{x}/ を使うことを勧めます.
+これならば,数式の上付き・下付きで使うと文字が小さくなります.
+
+%\makeatletter
+%\if@paper
+%\makeatother
+%\newpage
+%\fi
+
+\section{タイピングの注意事項}
+\label{sec:typesetting}
+
+\subsection{美しい組版のために}
+\label{sec:hyouki}
+
+\begin{enumerate}
+\item
+和文の句読点は,``\makebox[1zw][c]{,}'' ``\makebox[1zw][c]{.}''%
+(全角記号)を使用してください.
+和文中では,欧文用のピリオドとカンマ,``,'' ``.'' ``('' ``)''(半角)は
+使わないでください.
+
+\item
+括弧類は,和文中で欧文を括弧でくくる場合は
+全角の括弧を使用してください.
+欧文中ではすべて半角ものを使用してください.
+
+\noindent
+例:スタイル(Style)ファイル / some (Style) files
+
+上の例にように括弧のベースラインが異なります.
+
+\item
+ハイフン(\texttt{-}),二分ダッシュ(\texttt{--}),
+全角ダッシュ(\texttt{---}),二倍ダッシュ(\verb/\ddash/)の
+区別をしてください.
+
+ハイフンはwell-knownなど一般的な欧単語の連結に,
+二分ダッシュはpp.298--301のように範囲を示すときに,
+全角ダッシュは欧文用連結のem-dash(---)として,
+二倍ダッシュは和文用連結として使用してください.
+
+\item
+アラインメント以外の場所で,空行を広くとるため,\verb/\\/ による
+強制改行を乱用するのはよくありません.
+
+空行の直前に \verb/\\/ を入れたり,
+\verb/\\/ を2つ重ねれば,確かに縦方向のスペースが広がりますが,
+\texttt{Underfull} \verb/\hbox/ のメッセージがたくさん出力されて,
+重要なメッセージを見落としがちになります\cite{jiyuu}.
+
+\item
+\verb*/( word )/ のように ``( )'' 内や ``( )'' 内の単語の前後に
+スペースを入れないでください.
+
+\item
+プログラムリストなど,インデントが重要なものは,
+力わざ(\verb/\hspace*{??mm}/ の使用や \verb/\\/ などによる強制改行)で
+整形するのではなく,\texttt{list} 環境や \texttt{tabbing} 環境などを
+使って赤字が入っても修正がしやすいように記述してください.
+\end{enumerate}
+
+\subsection{数式の記述}
+\label{equation:1}
+
+\begin{enumerate}
+\item
+数式モードの中でのハイフン,二分ダッシュ,
+マイナスの区別をしてください.
+
+例えば,\par
+\noindent
+\verb/$A^{\mathrm{b}\mbox{\scriptsize -}/\hfil\break
+ \verb/\mathrm{c}}$/\par
+\noindent
+\hspace{2zw}$A^{\mathrm{b}\mbox{\scriptsize -}\mathrm{c}}$
+ $\Rightarrow$ ハイフン\par
+\noindent
+\verb/$A^{\mathrm{b}\mbox{\scriptsize --}/\hfil\break
+ \verb/\mathrm{c}}$/\par
+\noindent
+\hspace{2zw}$A^{\mathrm{b}\mbox{\scriptsize --}\mathrm{c}}$
+ $\Rightarrow$ 二分ダッシュ\par
+\noindent
+\verb/$A^{b-c}$/\par
+\noindent
+\hspace{2zw}$A^{b-c}$ $\Rightarrow$ マイナス\par
+となります.それぞれの違いを確認してください.
+
+\item
+数式の中で,\verb/<,>/ を括弧のように使用することがよくみられますが,
+数式中ではこの記号は不等号記号として扱われ,その前後にスペースが入ります.
+このような形の記号を括弧として使いたいときは,
+\verb/\langle/($\langle$),\verb/\rangle/($\rangle$)を
+使うようにしてください.
+
+\item
+複数行の数式でアラインメントをするときに
+数式が $+$ または $-$ で始まる場合,$+$ や $-$ は単項演算子と
+みなされます(つまり,「$+x$」と「$x+y$」の $+$ の前後のスペースは
+変わります).したがって,複数行の数式で $+$ や $-$ が先頭にくる場合は,
+それらが2項演算子であることを示す必要があります\cite{latex}.
+\begin{verbatim}
+\begin{eqnarray}
+y &=& a + b + c + ... + e\\
+  & & \mbox{} + f + ... 
+\end{eqnarray}
+\end{verbatim}
+
+\item
+段落中の数式の中では改行が抑制されます.その場合には \verb/\allowbreak/ を
+使用して改行を促すことを勧めます\cite{Abrahams}.
+\end{enumerate}
+
+\subsection{長い数式の処理}
+\label{equation:2}
+
+数式と数式番号が重なったり数式がはみ出したりする場合の
+対処策を,いくつか挙げます.
+
+\halflineskip
+
+\noindent
+{\bfseries 例1}\hskip1zw \verb/\!/ で縮める.
+\begin{equation}
+ y=a+b+c+d+e+f+g+h+i+j+k
+% \hskip-10mm %% --> oppress `Overful \hbox ...' message 
+\end{equation}
+のように数式と数式番号が重なるか,かなり接近する場合は,
+まず,2項演算記号や関係記号の前後を,
+\verb/\!/ ではさんで縮める方法があります.
+\begin{verbatim}
+\begin{equation}
+ y\!=\!a\!+\!b\!+\!c\!+\! ... \!+\!k
+\end{equation}
+\end{verbatim}
+\begin{equation}
+ y\!=\!a\!+\!b\!+\!c\!+\!d\!+\!e\!+\!f\!+\!g\!+\!h
+     \!+\!i\!+\!j\!+\!k
+\end{equation}
+
+\halflineskip
+
+\noindent
+{\bfseries 例2}\hskip1zw \texttt{eqnarray} 環境を使う.
+
+上のようにして縮めても,なお重なったりはみ出してしまう場合は,
+\texttt{eqnarray} 環境を使って
+\begin{verbatim}
+\begin{eqnarray}
+ y &=& a+b+c+d+e+f+g+h\nonumber\\
+   & & \mbox{}+i+j+k
+\end{eqnarray}
+\end{verbatim}
+と記述すれば,
+\begin{eqnarray}
+ y &=& a+b+c+d+e+f+g+h\nonumber\\
+   & & \mbox{}+i+j+k
+\end{eqnarray}
+となります.
+
+\halflineskip
+
+\noindent
+{\bfseries 例3}\hskip1zw \verb/\mathindent/ を変更する.
+
+数式を途中で切りたくない場合は
+\begin{verbatim}
+\mathindent=0zw % <-- <1>
+\begin{equation}
+ y=a+b+c+d+e+f+g+h+i+j+k+l+m
+\end{equation}
+\mathindent=1zw % <-- <2> デフォルト
+\end{verbatim}
+と記述すれば(\texttt{<1>}),
+\mathindent=0zw
+\begin{equation}
+ y=a+b+c+d+e+f+g+h+i+j+k
+\end{equation}
+\mathindent=1zw
+となって,数式の頭が左端にきます.
+この場合,その数式のあとで \verb/\mathindent/ を
+元に戻すことを忘れないでください(\texttt{<2>}).
+
+\halflineskip
+
+\noindent
+{\bfseries 例4}\hskip1zw \verb/\lefteqn/ を使う.
+\begin{equation}
+ \int\!\!\!\int_S \left(\frac{\partial V}{\partial x}
+ - \frac{\partial U}{\partial y}\right)dxdy
+  = \oint_C \left(U \frac{dx}{ds}
+    + V \frac{dy}{ds}\right)ds
+ \hskip-10mm %% --> oppress `Overful \hbox ...' message 
+\end{equation}
+
+上のように,$=$ までが長くて,数式がはみ出したり,
+数式と数式番号がくっつく場合には,\verb/\lefteqn/ を使って
+\begin{verbatim}
+\begin{eqnarray}
+ \lefteqn{
+  \int\!\!\!\int_S 
+  \left(\frac{\partial V}{\partial x}
+  -\frac{\partial U}{\partial y}\right)
+  dxdy
+ }\quad\nonumber\\
+ &=& \oint_C \left(U \frac{dx}{ds}
+      + V \frac{dy}{ds}\right)ds
+\end{eqnarray}
+\end{verbatim}
+と記述すれば,
+\begin{eqnarray}
+ \lefteqn{
+  \int\!\!\!\int_S 
+  \left(\frac{\partial V}{\partial x}
+  -\frac{\partial U}{\partial y}\right)
+  dxdy
+ }\quad\nonumber\\
+ &=& \oint_C \left(U \frac{dx}{ds}
+      + V \frac{dy}{ds}\right)ds
+\end{eqnarray}
+のような形にできます.
+
+\halflineskip
+
+\noindent
+{\bfseries 例5}\hskip1zw \verb/\arraycolsep/ を変える.
+\begin{equation}
+A = \left(
+  \begin{array}{cccc}
+   a_{11} & a_{12} & \ldots & a_{1n} \\
+   a_{21} & a_{22} & \ldots & a_{2n} \\
+   \vdots & \vdots & \ddots & \vdots \\
+   a_{m1} & a_{m2} & \ldots & a_{mn} \\
+  \end{array}
+    \right)
+ \label{eq:ex1}
+\end{equation}
+
+上の行列は \texttt{array} 環境を使って記述しましたが,
+\texttt{array} 環境を使っていて数式がはみ出す場合は,
+数式全体のフォントサイズを変える前に,
+\begin{verbatim}
+\begin{equation}
+\arraycolsep=3pt %                 <-- <1>
+A = \left(
+  \begin{array}
+   {@{\hskip2pt}cccc@{\hskip2pt}}% <-- <2> 
+   a_{11} & a_{12} & \ldots & a_{1n} \\
+   a_{21} & a_{22} & \ldots & a_{2n} \\
+   \vdots & \vdots & \ddots & \vdots \\
+   a_{m1} & a_{m2} & \ldots & a_{mn} \\
+  \end{array}
+    \right) 
+\end{equation}
+\end{verbatim}
+\texttt{<1>} のように,\verb/\arraycolsep/ の値(デフォルトは5\,pt)を
+小さくしてみるか,
+\texttt{<2>} のように \texttt{@} 表現を使うことができます.
+\begin{equation}
+\arraycolsep=3pt
+A = \left(
+  \begin{array}{@{\hskip2pt}cccc@{\hskip2pt}}
+   a_{11} & a_{12} & \ldots & a_{1n} \\
+   a_{21} & a_{22} & \ldots & a_{2n} \\
+   \vdots & \vdots & \ddots & \vdots \\
+   a_{m1} & a_{m2} & \ldots & a_{mn} \\
+  \end{array}
+    \right)
+ \label{eq:ex2}
+\end{equation}
+式 (\ref{eq:ex1}) と式 (\ref{eq:ex2}) を比べてください.
+
+\makeatletter\ifx\@mathmargin\undefined\makeatother
+
+\halflineskip
+
+\noindent
+{\bfseries 例6}\hskip1zw \verb/\quad/ の定義を変える.
+
+行列を記述する場合に使用する \verb/\matrix/,
+\verb/\pmatrix/ はコラムの間に \verb/\quad/ が挿入されているので,
+間隔を縮めるには,ディスプレー数式環境の中で,
+\verb/\def\quad/ の定義を変えてみてください.例えば
+\begin{equation}
+ A = \pmatrix{
+      a_{11} & a_{12} & \ldots & a_{1n} \cr
+      a_{21} & a_{22} & \ldots & a_{2n} \cr
+      \vdots & \vdots & \ddots & \vdots \cr
+      a_{m1} & a_{m2} & \ldots & a_{mn} \cr
+     }
+\end{equation}
+のような \verb/\pmatrix/ で記述した行列式で,
+\verb/\quad/ の定義を変更すると
+\begin{verbatim}
+\begin{equation}
+ \def\quad{\hskip.5em\relax}
+ %% デフォルトは \hskip1em
+ A = \pmatrix{
+      a_{11} & a_{12} & \ldots & a_{1n} \cr
+      a_{21} & a_{22} & \ldots & a_{2n} \cr
+      \vdots & \vdots & \ddots & \vdots \cr
+      a_{m1} & a_{m2} & \ldots & a_{mn} \cr
+     }
+\end{equation}
+\end{verbatim}
+
+\begin{equation}
+ \def\quad{\hskip.5em\relax}
+ %% デフォルトは \hskip1em
+ A = \pmatrix{
+      a_{11} & a_{12} & \ldots & a_{1n} \cr
+      a_{21} & a_{22} & \ldots & a_{2n} \cr
+      \vdots & \vdots & \ddots & \vdots \cr
+      a_{m1} & a_{m2} & \ldots & a_{mn} \cr
+     }
+\end{equation}
+となります.
+
+\texttt{amsmath} パッケージを利用する場合,
+\verb/\matrix/,\verb/\pmatrix/ はそれぞれ,
+\verb/\begin/,\verb/\end/ 型の \texttt{matrix},
+\texttt{pmatrix} 環境に変わるので注意してください.
+この場合は,{\bfseries 例5} が参考になります.
+
+\else
+
+\noindent
+{\bfseries 例6}\hskip1zw 
+\texttt{amsmath} パッケージの \texttt{matrix} 環境を使う.
+
+\texttt{pmatrix},\texttt{bmatrix} などの環境は
+\texttt{array} 環境と同じように,\verb/\arraycolsep/ の値を変更します.
+\begin{verbatim}
+\begin{equation}
+ %% デフォルトは 5pt
+ \arraycolsep3pt
+ A = \begin{pmatrix}
+      a_{11} & a_{12} & \ldots & a_{1n} \\
+      a_{21} & a_{22} & \ldots & a_{2n} \\
+      \vdots & \vdots & \ddots & \vdots \\
+      a_{m1} & a_{m2} & \ldots & a_{mn} 
+     \end{pmatrix}
+\end{equation}
+\end{verbatim}
+
+\begin{equation}
+ \arraycolsep3pt
+ A = \begin{pmatrix}
+      a_{11} & a_{12} & \ldots & a_{1n} \\
+      a_{21} & a_{22} & \ldots & a_{2n} \\
+      \vdots & \vdots & \ddots & \vdots \\
+      a_{m1} & a_{m2} & \ldots & a_{mn} 
+     \end{pmatrix}
+\end{equation}
+\fi
+
+以上挙げたような処理でもなお数式がはみ出す場合は,
+あまり{\bfseries 勧められません}が,以下のような方法があります.
+\begin{itemize}
+\item 
+\texttt{small},\texttt{footnotesize} で数式全体を囲む.
+\item 
+分数が横に長い場合は,分子・分母を \texttt{array} 環境で2階建てにする.
+\item 
+\verb/\scalebox/ を使って,数式の一部もしくは全体をスケーリングする.
+\item 
+二段抜きの \texttt{table*} もしくは \texttt{figure*} 環境に入れる.
+この場合,数式番号に注意する必要があります.
+\end{itemize}
+
+\section{編集用電子ファイル提出方法}
+\label{sec:source}
+
+\begin{itemize}
+\item
+編集用電子ファイルの提出に関しては,各ソサイエティの
+「投稿のしおり」を参照してください.
+\item
+ソース・ファイルはできるだけ1本のファイルにまとめてください.
+\item
+著者独自のマクロを記述したファイルや文献,
+図の EPS ファイルなどを忘れていないかご確認願います.
+\end{itemize}
+
+\begin{thebibliography}{99}
+%\bibitem{ohno}
+%大野義夫編,\TeX\ 入門,
+%共立出版,東京,1989. 
+
+%\bibitem{Seroul}
+%R. Seroul and S. Levy, A Beginner's Book of \TeX, 
+%Springer-Verlag, New York, 1989. 
+
+%\bibitem{nodera1}
+%野寺隆志,楽々\LaTeX{},
+%共立出版,東京,1990. 
+
+%\bibitem{itou}
+%伊藤和人,\LaTeX\ トータルガイド,
+%秀和システムトレーディング,1991. 
+
+%\bibitem{nodera2}
+%野寺隆志,今度こそ\AmSLaTeX{},
+%共立出版,東京,1991. 
+
+\bibitem{tex}
+D.E. クヌース,改訂新版 \TeX\ ブック,
+アスキー出版局,東京,1992. 
+
+\bibitem{jiyuu}
+磯崎秀樹,\LaTeX\ 自由自在,
+サイエンス社,東京,1992. 
+
+%\bibitem{impress}
+%鷺谷好輝,日本語 \LaTeX\ 定番スタイル集,
+%インプレス,東京,1992--1994. 
+
+\bibitem{Bech}
+S. von Bechtolsheim, \TeX\ in Practice, 
+Springer-Verlag, New York, 1993. 
+
+%\bibitem{Gr}
+%G. Gr\"{a}tzer, 
+%Math into \TeX\,--\,A Simple Introduction to \AmSLaTeX, 
+%Birkh\"{a}user, 1993.
+
+\bibitem{hujita}
+藤田眞作,
+化学者・生化学者のための\LaTeX---パソコンによる論文作成の手引,
+東京化学同人,東京,1993. 
+
+%\bibitem{styleuse}
+%古川徹生,岩熊哲夫,
+%\LaTeX\ のマクロやスタイルファイルの利用(styleuse.tex),1994. 
+
+\bibitem{Ase}
+阿瀬はる美,てくてく\TeX{},
+アスキー出版局,東京,1994. 
+
+\bibitem{Walsh}
+N. Walsh, Making \TeX\ Work, 
+O'Reilly \& Associates, Sebastopol, 1994. 
+
+\bibitem{Salomon}
+D. Salomon, The Advanced \TeX\ book, 
+Springer-Verlag, New York, 1995.
+
+\bibitem{hujita2}
+藤田眞作,\LaTeX\ マクロの八衢,
+アジソン・ウェスレイ・パブリッシャーズ・ジャパン,東京,1995. 
+
+\bibitem{Nakano}
+中野賢,日本語 \LaTeXe\ ブック,
+アスキー出版局,東京,1996. 
+
+\bibitem{Fujita4}
+藤田眞作,\LaTeXe\ 階梯,
+アジソン・ウェスレイ・パブリッシャーズ・ジャパン,東京,1996. 
+
+\bibitem{otobe}
+乙部巌己,江口庄英,
+p\LaTeXe\ for Windows\ Another Manual,
+ソフトバンク パブリッシング,東京,1996--1997. 
+
+\bibitem{Abrahams}
+% P.W. Abrahams, \TeX\ for the Impatient,
+% (Addison-Wesley, 1992). 
+ポール W. エイブラハム,明快 \TeX{},
+アジソン・ウェスレイ・パブリッシャーズ・ジャパン,東京,1997. 
+
+\bibitem{Eguchi}
+江口庄英,Ghostscript Another Manual,
+ソフトバンク パブリッシング,東京,1997. 
+
+\bibitem{FMi1}
+% M. Goossens, F. Mittelbach, and A. Samarin, The \LaTeX\ Companion, 
+% Addison-Wesley, Reading, 1994. 
+マイケル・グーセンス,フランク・ミッテルバッハ,アレキサンダー・サマリン,
+\LaTeX\ コンパニオン,アスキー出版局,東京,1998. 
+
+\bibitem{Eijkhout}
+% V. Eijkhout, \TeX\ by Topic, Addison-Wesley, Wokingham, 1991. 
+ビクター・エイコー,\TeX\ by Topic---\TeX\ をよく深く知るための39章,
+アスキー出版局,東京,1999. 
+
+\bibitem{latex}
+%レスリー ランポート,文書処理システム\LaTeX{},
+%アスキー出版局,東京,1990. 
+レスリー・ランポート,文書処理システム \LaTeXe{},
+ピアソンエデュケーション,東京,1999. 
+
+\bibitem{Okumura3}
+奥村晴彦,[改訂版]\LaTeXe\ 美文書作成入門,
+技術評論社,東京,2000. 
+
+\bibitem{FMi2}
+% M. Goossens, S. Rahts, and  F. Mittelbach,  
+% The \LaTeX\ Graphics Companion (Addison-Wesley, 1997).
+マイケル・グーセンス,セバスチャン・ラッツ,フランク・ミッテルバッハ,
+\LaTeX\ グラフィックスコンパニオン,アスキー出版局,東京,2000. 
+
+\bibitem{FGo1}
+% M. Goossens, and S. Rahts, 
+% The \LaTeX\ Web Companion, Addison-Wesley,  1999.
+マイケル・グーセンス,セバスチャン・ラッツ,
+\LaTeX\ Web コンパニオン---\TeX\ とHTML/XML の統合,
+アスキー出版局,東京,2001. 
+
+\bibitem{PEn}
+ページ・エンタープライゼス\<(株)\<,
+\LaTeXe\ マクロ \& クラスプログラミング基礎解説,
+技術評論社,東京,2002. 
+
+\bibitem{Fujita5}
+藤田眞作,\LaTeXe\ コマンドブック,
+ソフトバンク パブリッシング,東京,2003. 
+
+\bibitem{Yoshinaga}
+吉永徹美,
+\LaTeXe\ マクロ \& クラスプログラミング実践解説,
+技術評論社,東京,2003. 
+
+\bibitem{texwiki}
+https://oku.edu.mie-u.ac.jp/\~{}okumura/texwiki/
+\end{thebibliography}
+
+\appendix
+%\label{sec:app}
+\section{PDFの作成方法とA4用紙への出力}
+
+\begin{itemize}
+\item 
+PDF に書き出すには三通りの方法があります.
+\begin{enumerate}
+\item
+ptex2pdf を使う.使い方は ptex2pdf のドキュメントを参照してください.
+\item
+dvipdfmx を使って PDF に変換する.%(以下では段幅の関係で折り返します)
+%\begin{verbatim}
+%dvipdfmx -p 182mm,257mm -x 1in -y 1in
+% -o file.pdf file.dvi
+%\end{verbatim}
+%用紙サイズとして \texttt{jisb5} というオプションが使えるかもしれません.
+%オプションの \texttt{-x 1in -y 1in} は省略できます.
+\begin{verbatim}
+dvipdfmx -o file.pdf file.dvi
+\end{verbatim}
+
+\item
+まず,dvips を使用して,ps に書き出します.
+%\begin{verbatim}
+%dvips -Pprinter -t b5 -O 0in,0in
+%  -o file.ps file.dvi
+%\end{verbatim}
+%\texttt{printer} には,使用するプリンタ名を記述します.
+%オプションの \texttt{-O 0in,0in} は省略できます.
+\begin{verbatim}
+dvips -Pprt -o file.ps file.dvi
+\end{verbatim}
+\texttt{prt} には,使用するプリンタ名を記述します.
+
+次に Acrobat Distiller で PDF に変換します.
+\end{enumerate}
+
+\item
+\texttt{dvips} を使用してA4用紙に出力する場合の
+パラメータはおおよそ以下のような設定になります.
+\begin{verbatim}
+dvips -Pprt -t a4 -O 14mm,20mm file.dvi
+\end{verbatim}
+\texttt{prt} には使用するプリンタ名を記述します.
+オプションの \texttt{-t a4} は省略できます.
+
+\item
+Windows 上の dviout を利用して,
+用紙の左右天地中央に版面を自動配置する場合は以下のようにします.
+\begin{enumerate}
+\item 
+dviout を起動します.
+\item 
+メニューバーにある Option の中の Setup Parameters... を選択します.
+\item 
+「DVIOUTのプロパティ」というダイアログが開くので,
+Paper というタブを選択します.
+\item 
+Options という枠の中に Horizontal centering と Vertical centering という
+チェックボックスがあるので,
+それぞれチェックした後に Save ボタンを押します.
+\item
+この設定を行った後に dvi ファイルを開くと,
+版面が用紙の中心に配置されます.
+\end{enumerate}
+\end{itemize}
+
+%\section{\texttt{jis.tfm} の利用}
+%\label{sec:jistfm}
+%
+%株式会社リーブルテック(旧東京書籍印刷)の小林肇さんが作成された
+%\texttt{jis.tfm} の利用を奨めます.
+%ドキュメントクラスのオプションに \texttt{usejistfm} を指定します.
+%\begin{verbatim}
+%\documentclass[paper,usejistfm]{ieicej}
+%\end{verbatim}
+%テンプレート(\texttt{template.tex})ではデフォルトの設定になっています.
+%
+%\texttt{jis.tfm} のインストールなどに関しては
+%「日本語\TeX\ 情報」
+%(http://oku.edu.mie-u.ac.jp\slash\~{}okumura\slash texfaq\slash{})
+%などを参照してください.
+
+\section{削除したコマンド}
+
+本誌の体裁に必要のないコマンドは削除しています.
+削除したコマンドは,\verb/\part/,\allowbreak
+\verb/\theindex/,\allowbreak
+\verb/\tableofcontents/,\allowbreak
+\verb/\titlepage/,\allowbreak
+ページスタイルを変更するオプション(\texttt{headings},
+\texttt{myheadings})などです.
+
+%\section{変更履歴}
+%
+%\subsection{v1.1(v1.0 からの変更点)}
+%
+%\begin{itemize}
+%\item 
+%「技術研究報告」の体裁に対応.
+%\item 
+%複数の所属がある場合に,ラベルの記述順に所属マークが出るように変更.
+%\item 
+%C分冊の場合に,メールアドレスを脚注部分に出力できるようにした.
+%\end{itemize}
+%
+%\subsection{v1.2(v1.1 からの変更点)}
+%
+%\begin{itemize}
+%\item 
+%「技術研究報告」の先頭ページの出力様式を変更.
+%\end{itemize}
+%
+%\subsection{v1.3(v1.2 からの変更点)}
+%
+%\begin{itemize}
+%\item
+%B--I,B--II および C--I,C--II 分冊がそれぞれ,
+%B,C に統合されたことに伴う修正.
+%\item 
+%C分冊で「レター論文」が「レター」と変更されたことに伴う修正.
+%\item 
+%すべての分冊でメールアドレスを脚注部分に出力できるように修正.
+%\item
+%英文アブストラクトと英文キーワードを記述できるように定義を追加.
+%\item
+%複数の「現在の所属ラベル」を指定できるように修正.
+%\item
+%会員種別の「Associate Member」(准員)を「Affiliate Member」に,
+%「Honorary Member」(名誉員)を「Fellow, Honorary Member」に変更.
+%および,「正員:フェロー(Fellow)」を追加.
+%\item
+%\verb/\typeofletter/ を指定しない場合,
+%「研究速報」の体裁になるように変更.
+%\item
+%著者紹介で顔写真の EPS を取り込めるようにした.
+%顔写真のない場合にも対応.
+%%\item
+%% \verb/\finalreceived/(最終受付)を追加.
+%\item
+%\texttt{jis.tfm} が使用できるようにした.
+%\end{itemize}
+%
+%\subsection{v1.4(v1.3 からの変更点)}
+%
+%このバージョンは配布されなかったようです.
+%\begin{itemize}
+%\item
+%先頭ページのフッタに,
+%「(社)電子情報通信学会」の copyright 表示を追加した.
+%\end{itemize}
+%
+%\subsection{v1.5(v1.4 からの変更点)}
+%
+%\begin{itemize}
+%\item
+%\verb/\documentclass/ のオプション \texttt{letterpaper} を
+%\texttt{electronicsletter} に変更した.
+%\item
+%D--I,D--II 分冊が統合されたことに伴う修正.
+%\end{itemize}
+%
+%\subsection{v1.6(v1.5 からの変更点)}
+%
+%\begin{itemize}
+%\item
+%会員種別に「正員:シニア会員(Senior)」を追加.
+%\end{itemize}
+%
+%\subsection{v2.0(v1.6 からの変更点)}
+%
+%\begin{itemize}
+%\item
+%会員番号を投稿原稿の最終ページに出力するため,
+%\verb/\MembershipNumber/ を定義.
+%
+%\item
+%\verb/\affiliate/ の記述を,所属/部署/住所に分けて記述するようにした.
+%\end{itemize}
+%
+%\subsection{v3.0(v2.0 からの変更点)}
+%
+%\texttt{uplatex}によるコンパイルに対応した.
+
+\makeatletter
+\if@letter\else
+\makeatother
+\begin{biography}
+\profile{m}{電子 花子}{%
+1996東北一大学情報工学科卒.
+1999東京第一大学工学部工学部助手.
+某システムの研究に従事.
+}
+\profile{m}{情報 太郎}{%
+1995大阪一大学工学科卒.
+1997同大大学院工学研究科修士課程了.
+1998大阪(株)入社.
+某コンピュータ応用の研究に従事.
+ABC学会会員.
+}
+\profile{n}{通信 次郎}{%
+1980九州一大学理工学部卒.
+1981大阪(株)入社.
+現在ATT日本研究所に所属.
+}
+\end{biography}
+\fi
+
+\end{document}
+
+
+%% <natbib sample>
+雑誌のサンプルとして,
+\citet{田栗},
+\citet{伏木2015}.
+
+英文雑誌のサンプルとして,
+\citet{Mavridis},
+\citet{Fiske}.
+
+書籍のサンプルとして,
+\citet{北川}.
+
+書籍(編)のサンプルとして,
+\citet{林}.
+%% バックナンバーには書籍名に『』がつかないものと『』があるものがある
+%% 仕様からしてこのままでよろしいのだろう.
+
+英文書籍のサンプルとして,
+\citet{Garamszegi}.
+
+英文書籍(編)のサンプルとして,
+\citet{Bachmann}.
+
+叢書(シリーズ本)のサンプルとして,
+\citep{青木}.
+
+\begin{thebibliography}{xxx}
+
+
+\harvarditem[青木\hskip.5zw 他]{青木・横内・加藤}{2012}{青木}
+青木義充, 横内大介, 加藤\hskip.5zw 剛 (2012).
+  値幅制限を考慮した商品先物価格の実証分析:MCMCによる先物商品価格のモデル化を利用して,
+  『市場構造分析と新たな資産運用手法(ジャフィー・ジャーナル:金融工学と市場計量分析)』(日本金融・証券計量・工学学会\hskip.5zw
+  編),  16--55, 朝倉書店, 東京.
+
+\harvarditem[Bachmann and Zaheer]{Bachmann and Zaheer}{2013}{Bachmann}
+Bachmann, R. and Zaheer, A. (eds.)  (2013).  \textit{Handbook of Advances in
+  Trust Research}, Edward Elgar Publishing, Cheltenham.
+
+\harvarditem[Bisk and Hockenmaier]{Bisk and Hockenmaier}{2015}{Bisk}
+Bisk, Y. and Hockenmaier, J. (2015). Probing the linguistic strengths and
+  limitations of unsupervised grammar induction,  \textit{Proceedings of the
+  53rd Annual Meeting of the Association for Computational Linguistics and the
+  7th International Joint Conference on Natural Language Processing}, Long
+  Papers, \textbf{1},  1395--1404, Beijing, China.
+
+\harvarditem[Clark]{Clark}{2001}{Clark}
+Clark, A. (2001). Unsupervised Language Acquisition: Theory and Practice,
+  Ph.D.\ Thesis, School of Cognitive and Computing Sciences, University of
+  Sussex.
+
+\harvarditem[Doornik and Hansen]{Doornik and Hansen}{1994}{T-doornik1994}
+Doornik, J. and Hansen, H. (1994). A practical test for univariate and
+  multivariate normality, Technical Report,  No.87--42, Nuffield College,
+  Oxford.
+
+\harvarditem[Fiske et~al.]{Fiske, Royle and Gross}{2014}{Fiske}
+Fiske, I.~J., Royle, A. and Gross, K. (2014). Inference for finite-sample
+  trajectories in dynamic multi-state site-occupancy models using hidden Markov
+  model smoothing,  \textit{Environmental and Ecological Statistics},
+  \textbf{21},  313--328.
+
+\harvarditem[伏木・前田]{伏木・前田}{2013}{伏木2013}
+伏木忠義, 前田忠彦 (2013). 近年の社会調査における調査不能バイアスの調整,
+  日本行動計量学会大会発表論文抄録集, \textbf{41}, 236--237.
+
+\harvarditem[伏木・前田]{伏木・前田}{2015}{伏木2015}
+伏木忠義, 前田忠彦 (2015).
+  調査不能を伴う社会調査における推定:国民性に関する意識動向調査を題材に,
+  新潟大学教育学部研究紀要\ 自然科学編, \textbf{7} (2), 63--71.
+
+\harvarditem[Garamszegi]{Garamszegi}{2014}{Garamszegi}
+Garamszegi, L.~Z. (2014).  \textit{Modern Phylogenetic Comparative Methods and
+  Their Application in Evolutionary Biology}, Springer, New York.
+
+\harvarditem[Goosens et~al.]{Goosens, Mittelbach and Samarin}{1998}{latexcomp}
+Goosens, M., Mittelbach, F. and Samarin, A. (1998). 『The
+  {\LaTeX}コンパニオン』, アスキー, 東京.
+
+\harvarditem[林・吉野]{林・吉野}{2011}{林}
+林\hskip.5zw 文, 吉野諒三\hskip.5zw 編 (2011).
+  『伝統的価値観と身近な生活意識に関する意識調査報告書---郵送調査と各調査機関によるWEB調査の比較---』,
+  統計数理研究所, http://www.ism.ac.jp\slash\~{}yoshino\slash other\slash
+  dento\slash index.html.
+
+\harvarditem[北川]{北川}{2005}{北川}
+北川源四郎 (2005). 『時系列解析入門』, 岩波書店, 東京.
+
+\harvarditem[Knuth]{Knuth}{1992}{jtexbook}
+Knuth, D.~E. (1992). 『改訂新版 {\TeX}ブック』, アスキー, 東京.
+
+\harvarditem[Kumazawa and Ogata]{Kumazawa and Ogata}{2014}{Kumazawa}
+Kumazawa, T. and Ogata, Y. (2014). Nonstationary ETAS models for nonstandard
+  earthquakes,  \textit{Annals of Applied Statistics}, \textbf{8},  1825--1852,
+  doi:10.1214\slash 14-AOAS759, http://projecteuclid.org\slash
+  euclid.aoas\slash 1414091236.
+
+\harvarditem[Lamport]{Lamport}{1990}{jlatexbook}
+Lamport, L. (1990). 『文書処理システム{\LaTeX}』, アスキー, 東京.
+
+\harvarditem[Lamport]{Lamport}{1999}{jlatex2ebook}
+Lamport, L. (1999). 『文書処理システム{\LaTeXe}』, ピアソン・エディケーション,
+  東京.
+
+\harvarditem[Mavridis and Salanti]{Mavridis and Salanti}{2013}{Mavridis}
+Mavridis, D. and Salanti, G. (2013). A practical introduction to multivariate
+  meta-analysis,  \textit{Statistical Methods in Medical Research}, \textbf{22}
+  (2),  133--158.
+
+\harvarditem[中野]{中野}{1996}{platexbook}
+中野\hskip.5zw 賢 (1996). 『日本語{\LaTeXe}ブック』, アスキー, 東京.
+
+\harvarditem[奥村・黒木]{奥村・黒木}{2017}{okumura:bibunsho7}
+奥村晴彦, 黒木裕介 (2017). 『[改訂第7版]{\LaTeXe}美文書作成入門』,
+  技術評論社, 東京.
+
+\harvarditem[Pearl]{Pearl}{2009}{Pearl}
+Pearl, J. (2009).  \textit{Causality: Models, Reasoning, and Inference}, 2nd
+  ed., Cambridge University Press, Cambridge, Massachusetts(黒木\hskip.5zw
+  学\hskip.5zw 訳(2009). 『統計的因果推論---モデル・推論・推測---』,
+  共立出版, 東京).
+
+\harvarditem[Pearl]{Pearl}{2012}{JP}
+Pearl, J. (2012). Interpretable conditions for identifying direct and indirect
+  effects, Technical Report,  R-389, Department of Computer Science, University
+  of California, Los Angeles.
+
+\harvarditem[Sakurai]{Sakurai}{2010}{Sakurai}
+Sakurai, N. (2010). Time series analysis using wavelet toward molecular
+  dynamics simulation of proteins,  Master's thesis, Graduate School of
+  Humanities and Sciences, Nara Women's University, Japan.
+
+\harvarditem[田栗]{田栗}{2014}{田栗}
+田栗正隆 (2014). 直接効果・間接効果の推定および未測定の交絡に対する感度解析,
+  統計数理, \textbf{62}, 59--75.
+
+\harvarditem[Yoshino]{Yoshino}{2012}{2Yoshino}
+Yoshino, R. (2012). Trust of nations on Cultural Manifold Analysis (CULMAN):
+  Sense of trust in our longitudinal and cross-national surveys of national
+  character, 『信頼感の国際比較研究』(佐々木正道\hskip.5zw 編),
+  中央大学社会科学研究所研究叢書26, 第7章, 143--204, 中央大学出版部, 東京.
+
+\harvarditem[Yoshino]{Yoshino}{2014}{Yoshino}
+Yoshino, R. (2014). Reconstruction of trust on a cultural manifold,
+  \textit{Trust: Comparative Perspectives}  (eds.~M.~Sasaki and R.~M. Marsh),
+  297--346, Brill Academic Publishers, Boston.
+
+\end{thebibliography}
+%% </natbib sample>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sieicej.bst	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2092 @@
+%
+% version 0.30 for JBibTeX versions 0.30 or later, LaTeX version 2.09 or later.
+% Copyright (C) 1990-2006, all rights reserved.
+%
+% This file is derived from btxbst.doc of BibTeX 0.99c
+%
+% Copying of this file is authorized only if either
+% (1) you make absolutely no changes to your copy, including name, or
+% (2) if you do make changes, you name it something other than sieicej.bst
+%
+% This restriction helps ensure that all standard styles are identical.
+% The file jbtxbst.doc has the documentation for this style.
+%
+% Please notify (matuzaki@sanbi.co.jp, hsato@sanbi.co.jp) of any bugs in this file.
+% 松崎修二 佐藤秀幸  三美印刷株式会社
+%
+%%% 更新情報
+%%% 2009/12/24 v1.1
+%%% ・bookとinbook,incollection,inproceedingsのaddressとpublisherの順番を変更
+%%% ・bookでauthorとeditorを両方出現させるように変更
+%%% ・bookのtitleを変換せずにそのまま出現させるように変更
+%%%   今までは先頭の単語とコロンの後の単語のみ頭文字大文字としそれ以外は小文字としていた
+%%% ・book,inbook,proceedingsのeditor表記でed.の前に,を入れるように変更
+
+ENTRY
+  { address
+    author
+    booktitle
+    chapter
+    edition
+    editor
+    howpublished
+    institution
+    journal
+    key
+    month
+    note
+    number
+    organization
+    pages
+    publisher
+    school
+    series
+    title
+    type
+    url
+    volume
+    year
+    yomi
+  }
+  { is.kanji.entry }
+  { label }
+
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block 
+after.author title.true comma.before.date misc.bool}
+
+
+FUNCTION {not}
+{
+    { #0 }
+    { #1 }
+  if$
+}
+
+
+FUNCTION {and}
+{
+    'skip$
+    { pop$ #0 }
+  if$
+}
+
+
+FUNCTION {or}
+{
+    { pop$ #1 }
+    'skip$
+  if$
+}
+
+
+FUNCTION {init.state.consts}
+{
+  #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.sentence :=
+  #3 'after.block :=
+  #4 'after.author :=
+
+  #0 'title.true :=
+  #0 'comma.before.date :=
+  #0 'misc.bool :=
+}
+
+
+STRINGS { s t }
+
+
+FUNCTION {add.kanji.period}
+{
+  add.period$ duplicate$
+  #-1 #1 substring$ "." =
+    { #-2 global.max$ substring$ "." * }
+    'skip$
+  if$
+}
+
+
+FUNCTION {field.or.null}
+{
+  duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+
+FUNCTION {output.nonnull}
+{
+  's :=
+  output.state mid.sentence =
+    {
+      #0 title.true =
+        {
+          title empty$
+            {
+              is.kanji.entry
+                { "," * write$ newline$ }
+                { ", " * write$ newline$ }
+              if$
+            }
+            {
+              title is.kanji.str$
+                { "," * write$ newline$ }
+                { ", " * write$ newline$ }
+              if$
+            }
+          if$
+        }
+        {
+          " " * write$ newline$
+          #0 'title.true :=
+          #1 'comma.before.date :=
+        }
+      if$
+    }
+    {
+      output.state after.block =
+        {
+          title empty$
+            {
+              is.kanji.entry
+                { add.kanji.period write$ }
+                { add.period$ write$ }
+              if$
+            }
+            {
+              title is.kanji.str$
+                { add.kanji.period write$ }
+                { add.period$ write$ }
+              if$
+            }
+          if$
+          newline$
+          "\newblock " write$
+        }
+        {
+          output.state after.author =
+            {
+              author empty$ editor empty$ and organization empty$ and
+                {write$}
+                {
+                  title empty$ misc.bool #0 = and
+                    {
+                      author field.or.null is.kanji.str$
+                      editor field.or.null is.kanji.str$ or
+                      organization field.or.null is.kanji.str$ or
+                        { "" * write$ newline$ }
+                        { " " * write$ newline$ }
+                      if$
+                    }
+                    {
+                      author field.or.null is.kanji.str$
+                      editor field.or.null is.kanji.str$ or
+                      organization field.or.null is.kanji.str$ or
+                        { "," * write$ newline$ }
+                        { ", " * write$ newline$ }
+                      if$
+                    }
+                  if$
+                }
+              if$
+              mid.sentence 'output.state :=
+            }
+            {
+              write$
+              #0 'comma.before.date :=
+            }
+          if$
+        }
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+
+FUNCTION {output}
+{
+  duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+
+FUNCTION {output.check}
+{
+  't :=
+  duplicate$ empty$
+    {
+      pop$ "empty " t * " in " * cite$ * warning$
+      t "title" =
+        {
+          is.kanji.entry
+            {",``\textbullet\textbullet,\<'' " *}
+            {", ``\textbullet\textbullet,'' " *}
+          if$
+          #1 'comma.before.date :=
+        }
+        {
+          t "author" =
+            {
+              title empty$
+                {
+                  "\textbullet\textbullet" *
+                }
+                {
+                  title is.kanji.str$
+                    {"\textbullet\textbullet," *}
+                    {"\textbullet\textbullet, " *}
+                  if$
+                }
+              if$
+            }
+            {
+              title is.kanji.str$
+                {" \textbullet\textbullet," *}
+                {" \textbullet\textbullet, " *}
+              if$
+            }
+          if$
+        }
+      if$       
+    }
+    'output.nonnull
+  if$
+}
+
+
+FUNCTION {output.bibitem}
+{
+  newline$
+  "\bibitem{" write$
+  cite$ write$
+  "}" write$
+  newline$
+  ""
+  before.all 'output.state :=
+}
+
+
+FUNCTION {format.series}
+{
+  series empty$ not
+    {
+      series
+    }
+    {
+      ""
+    }
+  if$
+}
+
+
+FUNCTION {format.url}
+{
+  url empty$
+    {
+      "" *
+    }
+    {
+      " " * url *
+    }
+  if$
+}
+
+
+FUNCTION {fin.entry}
+{
+  title empty$
+    {
+      is.kanji.entry
+        { add.kanji.period }
+        { add.period$ }
+      if$
+    }
+    {
+      title is.kanji.str$
+        { add.kanji.period }
+        { add.period$ }
+      if$
+    }
+  if$
+  format.url
+  write$
+  newline$
+}
+
+
+FUNCTION {new.block}
+{
+  output.state before.all =
+    { after.author 'output.state := }
+    'skip$
+  if$
+}
+
+
+FUNCTION {new.sentence}
+{
+  output.state after.block =
+    'skip$
+    {
+      output.state before.all =
+        'skip$
+        { after.sentence 'output.state := }
+      if$
+    }
+  if$
+}
+
+
+FUNCTION {new.block.checka}
+{
+  empty$
+    'skip$
+    'new.block
+  if$
+}
+
+
+FUNCTION {new.block.checkb}
+{
+  empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.block
+  if$
+}
+
+
+FUNCTION {new.sentence.checka}
+{
+  empty$
+    'skip$
+    'new.sentence
+  if$
+}
+
+
+FUNCTION {new.sentence.checkb}
+{
+  empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.sentence
+  if$
+}
+
+
+FUNCTION {emphasize}
+{
+  duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+
+INTEGERS { nameptr namesleft numnames hyphen string.count period zenkaku kuhaku}
+
+
+STRINGS { u n }
+
+
+FUNCTION {format.names}
+{
+  's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+  #0 'zenkaku :=
+
+  { namesleft #0 > }
+  {
+    s nameptr "{ff}{ll}" format.name$ is.kanji.str$
+      {
+        #0 'string.count :=
+        s nameptr "{ff}" format.name$ 't :=
+        t empty$
+          {
+            s nameptr "{ll}" format.name$ 't :=
+          }
+          {
+            s nameptr "{ff}{ll}" format.name$ 'u :=
+            { u empty$ not }
+            {
+              u #3 global.max$ substring$ 'u :=
+              string.count #1 + 'string.count :=
+            }
+            while$
+
+            string.count  #3 >
+              {
+                s nameptr "{ff}{ll}" format.name$ 't :=
+              }
+              {
+                s nameptr "{ff}" format.name$
+                "\hskip1zw" *
+                s nameptr "{ll}" format.name$ *
+                't :=
+              }
+            if$
+          }
+        if$
+      }
+      {
+        "" 'u :=
+        s nameptr "{ff}{vv}{ll}{,jj}" format.name$ 'n :=
+        
+        { n empty$ not }
+        {
+          n #1 #1 substring$ is.kanji.str$
+            {
+              u n #1 #2 substring$ * 'u :=
+              n #3 global.max$ substring$ 'n :=
+              
+              zenkaku #0 =
+                {
+                  "欧文著者名に全角文字が使われています in " cite$ * warning$
+                  #1 'zenkaku :=
+                }
+                {}
+              if$
+            }
+            {
+              n #1 #2 substring$ " -" =
+                {
+                  u n #2 #1 substring$ * 'u :=
+                  n #3 global.max$ substring$ 'n :=
+                }
+                {
+                  u n #1 #1 substring$ * 'u :=
+                  n #2 global.max$ substring$ 'n :=
+                }
+              if$
+            }
+        if$
+        }
+        while$
+        
+        #0 'hyphen :=
+        #0 'period :=
+        #0 'kuhaku :=
+        "" 't :=
+        
+        { u empty$ not }
+        {
+          u #1 #1 substring$ "." =
+            {
+              #1 'period :=
+            }
+            {
+              u #1 #1 substring$ "-" =
+                {
+                  #1 'hyphen :=
+                }
+                {
+                  u #1 #1 substring$ " " =
+                  u #1 #1 substring$ "~" = or
+                    {
+                      #1 'kuhaku :=
+                    }
+                    {
+                      skip$
+                    }
+                  if$
+                }
+              if$
+            }
+          if$
+          u #2 global.max$ substring$ 'u :=
+        }
+        while$
+        
+        hyphen #1 =
+          {
+            s nameptr "{f. }" format.name$ 'u :=
+          }
+          {
+            period #1 =
+            kuhaku #0 = and
+              {
+                s nameptr "{ff}" format.name$ 'u :=
+              }
+              {
+                s nameptr "{f{.}. }" format.name$ 'u :=
+              }
+            if$
+          }
+        if$
+        
+        { u empty$ not}
+        {
+          u #1 #1 substring$ " " =
+          u #1 #1 substring$ "~" = or
+            {
+              skip$
+            }
+            {
+              t u #1 #1 substring$ * 't :=
+            }
+          if$
+          u #2 global.max$ substring$ 'u :=
+        }
+        while$
+
+        t " " * s nameptr "{vv}{ll}{, jj}" format.name$ * 't :=
+      }
+    if$
+    
+    nameptr #1 >
+      {
+        namesleft #1 >
+          {
+            is.kanji.entry
+              { "," * t * }
+              { ", " * t * }
+            if$
+          }
+          {
+            t " others" =
+            {
+              s is.kanji.str$
+                { "他" * }
+                { ", et~al." * }
+              if$
+            }
+            {
+              s is.kanji.str$
+                { "," * t * }
+                {
+                  numnames #2 =
+                    { " and " * t * }
+                    { ", and " * t * }
+                  if$
+                }
+              if$
+            }
+          if$
+        }
+      if$
+      }
+      't
+    if$
+    nameptr #1 + 'nameptr :=
+    namesleft #1 - 'namesleft :=
+  }
+  while$
+}
+
+
+FUNCTION {format.authors}
+{
+  author empty$
+    { "" }
+    { author format.names }
+  if$
+}
+
+
+FUNCTION {format.editors}
+{
+  editor empty$
+    { "" }
+    {
+      editor format.names
+      editor num.names$ #1 >
+        {
+          editor is.kanji.str$
+            { "(編)\<" * }
+%%%            { " eds." * }
+            { ", eds." * }%%%<<< v1.1
+          if$
+        }
+        {
+          editor is.kanji.str$
+            { "(編)\<" * }
+%%%            { " ed." * }
+            { ", ed." * }%%%<<< v1.1
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+
+FUNCTION {format.in.ed.editors}
+{
+  editor empty$
+    { "" }
+    {
+      editor format.names
+      editor num.names$ #1 >
+        {
+          editor is.kanji.str$
+            {"(編)\<" *}
+            {"eds.\ by " swap$ * }
+          if$
+        }
+        {
+          editor is.kanji.str$
+            {"(編)\<" *}
+            {"ed.\ by " swap$ *}
+          if$
+          }
+      if$
+    }
+  if$
+}
+
+
+FUNCTION {format.string}
+{
+  't :=
+  ""
+  { t empty$ not}
+  {
+    t #1 #1 substring$ "." =
+      {
+        t #1 #2 substring$ ". " = not
+          {
+            t #1 #1 substring$ *
+            t #2 global.max$ substring$ 't :=
+          }
+          {
+            ".\ " *
+            t #3 global.max$ substring$ 't :=
+          }
+        if$
+      }
+      {
+        t #1 #1 substring$ is.kanji.str$
+          {
+            t #1 #2 substring$ *
+            t #3 global.max$ substring$ 't :=
+          }
+          {
+            t #1 #1 substring$ *
+            t #2 global.max$ substring$ 't :=
+          }
+        if$
+      }
+    if$
+  }
+  while$
+}
+
+
+FUNCTION {format.journal}
+{
+  journal empty$
+    {
+      ""
+    }
+    {
+      journal format.string
+    }
+  if$
+}
+
+
+FUNCTION {format.title}
+{
+  after.author 'output.state :=
+  #1 'title.true :=
+  title empty$
+    { 
+      ""
+      #0 'title.true :=
+    }
+    {
+      "``" title "t" change.case$ *
+      #0 misc.bool =
+        {
+          title empty$
+            {
+              is.kanji.entry
+                {",\<''" * }
+                {",''" * }
+              if$
+            }
+            {
+              title is.kanji.str$
+                {",\<''" * }
+                {",''" * }
+              if$
+            }
+          if$
+        }
+        {
+          howpublished empty$
+          month empty$ and
+          year empty$ and
+            { "''" *}
+            { ",''" *}
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+
+FUNCTION {n.dashify}
+{
+  't :=
+  ""
+  { t empty$ not }
+  {
+    t #1 #1 substring$ "-" =
+      {
+        t #1 #2 substring$ "--" = not
+          {
+            "--" *
+            t #2 global.max$ substring$ 't :=
+          }
+          {
+            { t #1 #1 substring$ "-" = }
+            {
+              "-" *
+              t #2 global.max$ substring$ 't :=
+            }
+            while$
+          }
+        if$
+      }
+      {
+        t #1 #1 substring$ " " =
+          {
+            "" *
+            t #2 global.max$ substring$ 't :=
+          }
+          {
+            t #1 #1 substring$ is.kanji.str$
+              {
+                t #1 #2 substring$ *
+                t #3 global.max$ substring$ 't :=
+              }
+              {
+                t #1 #1 substring$ *
+                t #2 global.max$ substring$ 't :=
+              }
+            if$
+          }
+        if$
+      }
+    if$
+  }
+  while$
+}
+
+
+FUNCTION {format.month}
+{
+    comma.before.date #1 =
+      {
+        title empty$
+          {
+            is.kanji.entry
+              {","}
+              {", "}
+            if$
+          }
+          {
+            title is.kanji.str$
+              {","}
+              {", "}
+            if$
+          }
+        if$
+      }
+      {
+        " "
+      }
+    if$
+
+    month "Jan" =
+    month "January" =
+    month "1" =
+    or or
+      { "Jan.\" * }
+      {
+        month "Feb" =
+        month "February" =
+        month "2" =
+        or or
+          { "Feb.\" * }
+          {
+            month "Mar" =
+            month "March" =
+            month "3" =
+            or or
+              { "March" * }
+              {
+                month "Apr" =
+                month "April" =
+                month "4" =
+                or or
+                  { "April" * }
+                  {
+                    month "May" =
+                    month "5" =
+                    or
+                      { "May" * }
+                      {
+                        month "Jun" =
+                        month "June" =
+                        month "6" =
+                        or or
+                          { "June" * }
+                          {
+                            month "Jul" =
+                            month "July" =
+                            month "7" =
+                            or or
+                              { "July" * }
+                              {
+                                month "Aug" =
+                                month "August" =
+                                month "8" =
+                                or or
+                                  { "Aug.\" * }
+                                  {
+                                     month "Sep" =
+                                     month "Sept" =
+                                     month "September" =
+                                     month "9" =
+                                     or or or
+                                       { "Sept.\" * }
+                                       {
+                                         month "Oct" =
+                                         month "October" =
+                                         month "10" =
+                                         or or
+                                           { "Oct.\" * }
+                                           {
+                                             month "Nov" =
+                                             month "November" =
+                                             month "11" =
+                                             or or
+                                               { "Nov.\" * }
+                                               {
+                                                 month "Dec" =
+                                                 month "December" =
+                                                 month "12" =
+                                                 or or
+                                                   { "Dec.\" * }
+                                                   { month * }
+                                                 if$
+                                               }
+                                             if$
+                                           }
+                                         if$
+                                       }
+                                     if$
+                                   }
+                                 if$
+                               }
+                             if$
+                           }
+                         if$
+                       }
+                    if$
+                  }
+                if$
+              }
+            if$
+          }
+        if$
+      }
+  if$
+}
+
+
+FUNCTION {format.date}
+{
+  before.all 'output.state :=
+  year empty$
+    {
+      #1 misc.bool =
+        { "" #0 'misc.bool :=}
+        {
+          "there's no year in " cite$ * warning$
+          month empty$
+            {
+              comma.before.date #1 =
+                {
+                  title empty$
+                    {
+                      is.kanji.entry
+                        {",\textbullet\textbullet"}
+                        {", \textbullet\textbullet"}
+                      if$
+                    }
+                    {
+                      title is.kanji.str$
+                        {",\textbullet\textbullet"}
+                        {", \textbullet\textbullet"}
+                      if$
+                    }
+                 if$
+                }
+                {"\textbullet\textbullet"}
+              if$
+            }
+            {
+              format.month " \textbullet\textbullet" *
+            }
+          if$
+        }
+      if$
+    }
+    {
+      month empty$
+        {
+          comma.before.date #1 =
+            {
+              title empty$
+                {
+                  is.kanji.entry
+                    {"," year * }
+                    {", " year * }
+                  if$
+                }
+                {
+                  title is.kanji.str$
+                    {"," year * }
+                    {", " year * }
+                  if$
+                }
+              if$
+            }
+            {
+               " " year *
+            }
+          if$
+        }
+        { format.month " " * year * }
+      if$
+    }
+  if$
+}
+
+
+FUNCTION {format.btitle}
+{
+  after.author 'output.state :=
+  #1 'title.true :=
+  "``" title "t" change.case$ *
+  title empty$
+    {
+      is.kanji.entry
+        { ",\<''" * }
+        { ",''" * }
+      if$
+    }
+    {
+      title is.kanji.str$
+        { ",\<''" * }
+        { ",''" * }
+      if$
+    }
+  if$
+}
+
+
+FUNCTION {format.book.title}
+{
+  after.author 'output.state :=
+  #1 'title.true :=
+  title empty$
+    {""}
+    {
+%%%      title "t" change.case$
+      title %%%<<< v1.1
+      title empty$
+        {
+          is.kanji.entry
+            { "," * }
+            { ", " * }
+          if$
+        }
+        {
+          title is.kanji.str$
+            { "," * }
+            { ", " * }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+
+FUNCTION {tie.or.space.connect}
+{
+  duplicate$ text.length$ #3 <
+    { "~" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+
+FUNCTION {either.or.check}
+{
+  empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+
+FUNCTION {format.bvolume}
+{
+  volume empty$
+    { "" }
+    {
+      volume is.kanji.str$
+        { volume }
+        {
+          is.kanji.entry
+            { "第" volume * "巻" * }
+            { "vol." volume * }
+          if$
+        }
+      if$
+      "volume and number" number either.or.check
+    }
+  if$
+}
+
+
+FUNCTION {format.number.series}
+{
+  volume empty$
+    {
+      number empty$
+        { "" }
+        {
+          number is.kanji.str$
+            { number }
+            {"no." number * }
+          if$
+          series empty$
+            { "there's a number but no series in " cite$ * warning$ }
+            {
+              "" *
+            }
+          if$
+        }
+      if$
+    }
+    { "" }
+  if$
+}
+
+
+FUNCTION {format.edition}
+{
+  edition empty$
+    { "" }
+    {
+      edition is.kanji.str$
+        { edition }
+        {
+          is.kanji.entry
+            { "第" edition * "版" *}
+            {
+              output.state mid.sentence =
+                { edition "l" change.case$ " edition" * }
+                { edition "t" change.case$ " edition" * }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+
+INTEGERS { multiresult }
+
+
+FUNCTION {multi.page.check}
+{
+  't :=
+  #0 'multiresult :=
+  {
+    multiresult not
+    t empty$ not
+    and
+  }
+  {
+    t #1 #1 substring$
+    duplicate$ "-" =
+    swap$ duplicate$ "," =
+    swap$ "+" =
+    or or
+      { #1 'multiresult := }
+      { t #2 global.max$ substring$ 't := }
+    if$
+  }
+  while$
+  multiresult
+}
+
+
+FUNCTION {format.pages}
+{
+  pages empty$
+    { "pp.\textbullet\textbullet--\textbullet\textbullet" }
+%    {""}
+    {
+      pages multi.page.check
+        { "pp." pages n.dashify * }
+        { "p." pages * }
+      if$
+    }
+  if$
+}
+
+
+FUNCTION {format.vol.num.pages}
+{
+  volume empty$
+    {""}
+    {
+      volume is.kanji.str$
+        {
+          volume
+        }
+        {
+          "vol." volume *
+        }
+      if$
+      
+      number empty$
+        { 
+          pages empty$
+            {
+              "" * 
+            }
+            {
+              is.kanji.entry
+                { "," * }
+                { ", " * }
+              if$
+            }
+          if$
+        }
+        {
+          title empty$
+            {
+              is.kanji.entry
+                { "," * }
+                { ", " * }
+              if$
+            }
+            {
+              title is.kanji.str$
+                { "," * }
+                { ", " * }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+  
+  number empty$
+    'skip$
+    {
+      volume empty$
+        { "there's a number but no volume in " cite$ * warning$ 
+          "vol.\textbullet\textbullet, " *
+        }
+        'skip$
+      if$
+      
+      number is.kanji.str$
+        { number * }
+        { "no." number * * }
+      if$
+%      volume empty$
+%        { "there's a number but no volume in " cite$ * warning$ }
+%        'skip$
+%      if$
+    }
+  if$
+  pages empty$
+    %'skip$
+    {
+      volume empty$
+      number empty$ and
+        {
+          "pp.\textbullet\textbullet--\textbullet\textbullet" *
+        }
+        {
+          is.kanji.entry
+            { "," * }
+            { ", " * }
+          if$
+          "pp.\textbullet\textbullet--\textbullet\textbullet" *
+        }
+     if$
+    }
+    {
+      duplicate$ empty$
+        { pop$ format.pages }
+        {
+          number empty$
+            { format.pages * }
+            {
+              title empty$
+                {
+                  is.kanji.entry
+                    { "," * format.pages * }
+                    { ", " * format.pages * }
+                  if$
+                }
+                {
+                  title is.kanji.str$
+                    { "," * format.pages * }
+                    { ", " * format.pages * }
+                  if$
+                }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+
+FUNCTION {format.chapter.pages}
+{
+  chapter empty$
+    'format.pages
+    {
+      type empty$
+        {
+          chapter is.kanji.str$
+            { "" }
+            {
+              is.kanji.entry
+                { "章" }
+                { "chapter" }
+              if$
+            }
+          if$
+        }
+        { type "l" change.case$ }
+      if$
+      chapter is.kanji.str$ not is.kanji.entry and
+        { "第" chapter * swap$ * }
+        {
+          chapter is.kanji.str$
+            { chapter * }
+            { chapter tie.or.space.connect }
+          if$
+        }
+      if$
+      pages empty$
+        'skip$
+        {
+          title empty$
+            {
+              is.kanji.entry
+                { "," * format.pages * }
+                { ", " * format.pages * }
+              if$
+            }
+            {
+              is.kanji.entry
+                { "," * format.pages * }
+                { ", " * format.pages * }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+
+FUNCTION {format.in.ed.booktitle}
+{
+  booktitle empty$
+    { "" }
+    {
+      editor empty$
+        { booktitle format.string }
+        { booktitle format.string
+          title empty$
+            {
+              is.kanji.entry
+                { "," * format.in.ed.editors * }
+                { ", " * format.in.ed.editors * }
+              if$
+            }
+            {
+              title is.kanji.str$
+                { "," * format.in.ed.editors * }
+                { ", " * format.in.ed.editors * }
+              if$
+            }
+          if$
+        }
+      if$
+    }
+  if$
+}
+
+
+FUNCTION {empty.misc.check}
+{
+  author empty$ title empty$ howpublished empty$
+  month empty$ year empty$ note empty$ url empty$
+  and and and and and and
+    { "all relevant fields are empty in " cite$ * warning$ }
+    'skip$
+  if$
+}
+
+
+FUNCTION {format.thesis.type}
+{
+  type empty$
+    'skip$
+    {
+      pop$
+      type "t" change.case$
+    }
+  if$
+}
+
+
+FUNCTION {format.tr.number}
+{
+  type empty$
+    { "Technical Report" }
+    'type
+  if$
+  number empty$
+    { "t" change.case$ }
+    { number tie.or.space.connect }
+  if$
+}
+
+
+FUNCTION {format.article.crossref}
+{
+  key empty$
+    {
+      journal empty$
+        {
+          "need key or journal for " cite$ * " to crossref " * crossref * warning$
+          ""
+        }
+        {
+          is.kanji.entry
+            { " " journal * }
+            { " " journal * }
+          if$
+        }
+      if$
+    }
+    {
+      title is.kanji.str$
+        { " " key * }
+        { "in " key * }
+      if$
+    }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+
+FUNCTION {format.crossref.editor}
+{
+  editor is.kanji.str$
+    {
+      editor #1 "{ff}{ll}" format.name$ duplicate$ empty$
+        { pop$ editor #1 "{ll}" format.name$ }
+        'skip$
+      if$
+    }
+    { editor #1 "{f. }{vv~}{ll}{ , jj}" format.name$ }
+  if$
+  editor num.names$ duplicate$ #2 >
+    {
+      editor is.kanji.str$
+        { pop$ "他" * }
+        { pop$ ", et~al." * }
+      if$
+    }
+    {
+      #2 <
+        'skip$
+        {
+          editor #2 "{f. }{vv }{ll}{, jj}" format.name$ "others" =
+          {
+            editor is.kanji.str$
+              { "他" * }
+              { ", et~al." * }
+            if$
+          }
+          {
+          editor is.kanji.str$
+              {
+                ", " *
+                editor #2 "{ff}" format.name$ duplicate$ empty$
+                  { pop$ editor #2 "{ll}" format.name$ }
+                  'skip$
+                if$
+                *
+              }
+              { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+            if$
+          }
+        if$
+       }
+     if$
+    }
+  if$
+}
+
+
+FUNCTION {format.book.crossref}
+{
+  volume empty$
+    {
+      "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+      title is.kanji.str$
+        {" "}
+        {"in "}
+      if$
+    }
+    {
+      volume is.kanji.str$
+        { volume }
+        {
+          is.kanji.entry
+            { "第" volume * "巻" * }
+            { "vol." volume tie.or.space.connect " of " * }
+          if$
+        }
+      if$
+    }
+  if$
+  editor empty$
+  editor field.or.null author field.or.null =
+  or
+    {
+      key empty$
+        {
+          series empty$
+            {
+              "need editor, key, or series for " cite$ * " to crossref " * crossref * warning$
+              "" *
+            }
+            {
+              series is.kanji.str$
+                { series ", " * swap$ * }
+                { series * }
+              if$
+            }
+          if$
+        }
+        { key * }
+      if$
+    }
+    { format.crossref.editor * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+
+FUNCTION {format.incoll.inproc.crossref}
+{
+  editor empty$
+  editor field.or.null author field.or.null =
+  or
+    {
+      key empty$
+        {
+          booktitle empty$
+            {
+              "need editor, key, or booktitle for " cite$ * " to crossref " * crossref * warning$
+              ""
+            }
+            {
+              booktitle is.kanji.str$
+                { booktitle format.string }
+                { booktitle format.string }
+              if$
+            }
+          if$
+        }
+        { "in " key * }
+      if$
+    }
+    {
+      title is.kanji.str$
+        { " " format.crossref.editor * }
+        { "in " format.crossref.editor * }
+      if$
+    }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+
+FUNCTION {article}
+{
+  output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    {
+      format.journal "journal" output.check
+      format.vol.num.pages output
+      format.date "year" output.check
+    }
+    {
+      format.article.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  after.block 'output.state :=
+  new.block
+  note output
+  fin.entry
+}
+
+
+FUNCTION {book}
+{
+  output.bibitem
+%%%>>> v1.1
+%%%  author empty$
+%%%    { format.editors "author and editor" output.check }
+%%%    {
+%%%      format.authors output.nonnull
+%%%      crossref missing$
+%%%        { "author and editor" editor either.or.check }
+%%%        'skip$
+%%%      if$
+%%%    }
+%%%  if$
+  author empty$
+    {
+      editor empty$
+        {
+          "\textbullet\textbullet, " *
+          "" "empty author and editor in " * cite$ * warning$
+        }
+        { format.editors output}
+      if$
+    }
+    { format.authors output }
+  if$
+%%%<<< v1.1
+  format.book.title "title" output.check
+%%%>>> v1.1
+  editor empty$
+    'skip$
+    {
+      author empty$
+        'skip$
+        { format.editors output }
+      if$
+    }
+  if$
+%%%<<< v1.1
+  crossref missing$
+    {
+      format.bvolume output
+      new.block
+      format.number.series output
+      new.block
+      format.edition output
+      format.series output
+      publisher "publisher" output.check%%%<<< v1.1
+      address output%%%<<< v1.1
+    }
+    {
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  crossref missing$
+    { "" * }
+    { format.edition output }
+  if$
+  format.date "year" output.check
+  after.block 'output.state :=
+  new.block
+  note output
+  fin.entry
+}
+
+
+FUNCTION {booklet}
+{
+  output.bibitem
+  format.authors output
+  new.block
+  format.title "title" output.check
+  howpublished address new.block.checkb
+  howpublished output
+  address output
+  format.date output
+  after.block 'output.state :=
+  new.block
+  note output
+  fin.entry
+}
+
+
+FUNCTION {inbook}
+{
+  output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check }
+    {
+      format.authors output.nonnull
+      crossref missing$
+        { "author and editor" editor either.or.check }
+        'skip$
+      if$
+    }
+  if$
+  new.block
+  format.btitle "title" output.check
+  crossref missing$
+    {
+      format.bvolume output
+      format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.number.series output
+      new.block
+      format.series output
+      publisher "publisher" output.check%%%<<< v1.1
+      address output%%%<<< v1.1
+    }
+    {
+      format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  after.block 'output.state :=
+  new.block
+  note output
+  fin.entry
+}
+
+
+FUNCTION {incollection}
+{
+  output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    {
+      format.in.ed.booktitle "booktitle" output.check
+      format.bvolume output
+      format.number.series output
+      new.block
+      format.chapter.pages output
+      format.series output
+      publisher "publisher" output.check%%%<<< v1.1
+      address output%%%<<< v1.1
+      format.edition output
+      format.date "year" output.check
+    }
+    {
+      format.incoll.inproc.crossref output.nonnull
+      format.chapter.pages output
+    }
+  if$
+  after.block 'output.state :=
+  new.block
+  note output
+  fin.entry
+}
+
+
+FUNCTION {inproceedings}
+{
+  output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    {
+      format.in.ed.booktitle "booktitle" output.check
+      format.bvolume output
+      format.number.series output
+      new.block
+      address empty$
+        {
+          organization publisher new.sentence.checkb
+          new.block
+          organization output
+          mid.sentence 'output.state :=
+          new.block
+          format.pages output
+          format.series output
+          publisher output
+          format.date "year" output.check
+        }
+        {
+          new.block
+          organization output
+          mid.sentence 'output.state :=
+          new.block
+          format.pages output
+          format.series output
+          publisher output%%%<<< v1.1
+          address output.nonnull%%%<<< v1.1
+          format.date "year" output.check
+        }
+      if$
+    }
+    {
+       format.incoll.inproc.crossref output.nonnull
+       format.pages output
+    }
+  if$
+  after.block 'output.state :=
+  new.block
+  note output
+  fin.entry
+}
+
+
+FUNCTION {conference} { inproceedings }
+
+
+FUNCTION {manual}
+{
+  output.bibitem
+  author empty$
+    {
+      organization empty$
+        'skip$
+        {
+          organization output.nonnull
+          address output
+        }
+      if$
+    }
+    { format.authors output.nonnull }
+  if$
+  new.block
+  format.btitle "title" output.check
+  author empty$
+    {
+      organization empty$
+        {
+          address new.block.checka
+          address output
+        }
+        'skip$
+      if$
+    }
+    {
+      organization address new.block.checkb
+      organization output
+      address output
+    }
+  if$
+  format.edition output
+  format.date output
+  after.block 'output.state :=
+  new.block
+  note output
+  fin.entry
+}
+
+
+FUNCTION {mastersthesis}
+{
+  output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  "Master's thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  after.block 'output.state :=
+  new.block
+  note output
+  fin.entry
+}
+
+
+FUNCTION {misc}
+{
+  #1 'misc.bool :=
+  output.bibitem
+  format.authors output
+  title howpublished new.block.checkb
+  format.title output
+  howpublished new.block.checka
+  howpublished output
+  format.date output
+  after.block 'output.state :=
+  new.block
+  note output
+  fin.entry
+  empty.misc.check
+}
+
+
+FUNCTION {phdthesis}
+{
+  output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.btitle "title" output.check
+  new.block
+  "PhD thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  after.block 'output.state :=
+  new.block
+  note output
+  fin.entry
+}
+
+
+FUNCTION {proceedings}
+{
+  output.bibitem
+  editor empty$
+    { organization output }
+    { format.editors output.nonnull }
+  if$
+  new.block
+  format.btitle "title" output.check
+  format.bvolume output
+  format.number.series output
+  format.series output
+  address empty$
+    {
+      editor empty$
+        { publisher new.sentence.checka }
+        {
+          organization publisher new.sentence.checkb
+          organization output
+        }
+      if$
+      publisher output
+      format.date "year" output.check
+      after.block 'output.state :=
+    }
+    {
+      address output.nonnull
+      new.block
+      editor empty$
+        'skip$
+        { organization output }
+      if$
+      publisher output
+      format.date "year" output.check
+      after.block 'output.state :=
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+}
+
+
+FUNCTION {techreport}
+{
+  output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  format.tr.number output.nonnull
+  institution "institution" output.check
+  address output
+  format.date "year" output.check
+  after.block 'output.state :=
+  new.block
+  note output
+  fin.entry
+}
+
+
+FUNCTION {unpublished}
+{
+  output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  note "note" output.check
+  format.date output
+  fin.entry
+}
+
+
+FUNCTION {default.type} { misc }
+
+
+MACRO {jan} {"Jan.\"}
+MACRO {january} {"Jan.\"}
+MACRO {feb} {"Feb.\"}
+MACRO {febrary} {"Feb.\"}
+MACRO {mar} {"March"}
+MACRO {march} {"March"}
+MACRO {apr} {"April"}
+MACRO {april} {"April"}
+MACRO {may} {"May"}
+MACRO {jun} {"June"}
+MACRO {june} {"June"}
+MACRO {jul} {"July"}
+MACRO {july} {"July"}
+MACRO {aug} {"Aug.\"}
+MACRO {august} {"Aug.\"}
+MACRO {sep} {"Sept.\"}
+MACRO {september} {"Sept.\"}
+MACRO {oct} {"Oct.\"}
+MACRO {october} {"Oct.\"}
+MACRO {nov} {"Nov.\"}
+MACRO {november} {"Nov.\"}
+MACRO {dec} {"Dec.\"}
+MACRO {december} {"Dec.\"}
+MACRO {acmcs} {"ACM Comput. Surv."}
+MACRO {acta} {"Acta Inf."}
+MACRO {cacm} {"Commun. ACM"}
+MACRO {ibmjrd} {"IBM J. Res. Dev."}
+MACRO {ibmsj} {"IBM Syst.~J."}
+MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
+MACRO {ieeetc} {"IEEE Trans. Comput."}
+MACRO {ieeetcad}
+{"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
+MACRO {ipl} {"Inf. Process. Lett."}
+MACRO {jacm} {"J.~ACM"}
+MACRO {jcss} {"J.~Comput. Syst. Sci."}
+MACRO {scp} {"Sci. Comput. Programming"}
+MACRO {sicomp} {"SIAM J. Comput."}
+MACRO {tocs} {"ACM Trans. Comput. Syst."}
+MACRO {tods} {"ACM Trans. Database Syst."}
+MACRO {tog} {"ACM Trans. Gr."}
+MACRO {toms} {"ACM Trans. Math. Softw."}
+MACRO {toois} {"ACM Trans. Office Inf. Syst."}
+MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
+MACRO {tcs} {"Theoretical Comput. Sci."}
+MACRO {tieice} {"信学論"}
+MACRO {tipsj} {"情報処理学会論文誌"}
+MACRO {jipsj} {"J.~Info. Proc. Soc. of Japan"}
+MACRO {jorsj} {"Journal of the O. R. Society of Japan"}
+
+
+READ
+
+
+FUNCTION {set.is.kanji.entry}
+{
+  author field.or.null is.kanji.str$
+  title field.or.null is.kanji.str$ or
+  editor field.or.null is.kanji.str$ or
+  journal field.or.null is.kanji.str$ or
+  booktitle field.or.null is.kanji.str$ or
+  series field.or.null is.kanji.str$ or
+  'is.kanji.entry :=
+}
+
+
+ITERATE {set.is.kanji.entry}
+
+STRINGS { longest.label }
+
+INTEGERS { number.label longest.label.width }
+
+
+FUNCTION {initialize.longest.label}
+{
+  "" 'longest.label :=
+  #1 'number.label :=
+  #0 'longest.label.width :=
+}
+
+FUNCTION {longest.label.pass}
+{
+  number.label int.to.str$ 'label :=
+  number.label #1 + 'number.label :=
+  label width$ longest.label.width >
+    {
+      label 'longest.label :=
+      label width$ 'longest.label.width :=
+    }
+    'skip$
+  if$
+}
+
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {longest.label.pass}
+
+
+FUNCTION {begin.bib}
+{
+  preamble$ empty$
+    'skip$
+    { preamble$ write$ newline$ }
+  if$
+  "\begin{thebibliography}{" longest.label * "}" * write$ newline$
+}
+
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+
+FUNCTION {end.bib}
+{
+  newline$
+  "\end{thebibliography}" write$ newline$
+}
+
+
+EXECUTE {end.bib}
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaBasics.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,1 @@
+module AgdaBasics where
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaBasics.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,1 @@
+module AgdaBasics where
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaBool.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+data Bool : Set where
+  true  : Bool
+  false : Bool
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaBool.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+data Bool : Set where
+  true  : Bool
+  false : Bool
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaDebug.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,32 @@
+open import Level renaming (suc to succ ; zero to Zero )
+
+module AgdaDebug where
+
+open import stack
+
+open import Relation.Binary.PropositionalEquality
+open import Relation.Binary.Core
+open import Data.Nat
+open import Function
+
+
+open SingleLinkedStack
+open Stack
+
+testStack07 : {m : Level } -> Maybe (Element ℕ)
+testStack07 = pushSingleLinkedStack emptySingleLinkedStack 1 (\s -> pushSingleLinkedStack s 2 (\s -> top s))
+
+testStack08 = pushSingleLinkedStack emptySingleLinkedStack 1
+  $ \s -> pushSingleLinkedStack s 2
+  $ \s -> pushSingleLinkedStack s 3
+  $ \s -> pushSingleLinkedStack s 4
+  $ \s -> pushSingleLinkedStack s 5
+  $ \s -> top s
+
+
+testStack10 = pushStack emptySingleLinkedStack 1
+  $ \s -> pushStack 2
+  $ \s -> pushStack 3
+  $ \s -> pushStack 4
+  $ \s -> pushStack 5
+  $ \s -> top s
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaDebug.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,32 @@
+open import Level renaming (suc to succ ; zero to Zero )
+
+module AgdaDebug where
+
+open import stack
+
+open import Relation.Binary.PropositionalEquality
+open import Relation.Binary.Core
+open import Data.Nat
+open import Function
+
+
+open SingleLinkedStack
+open Stack
+
+testStack07 : {m : Level } @$\rightarrow$@ Maybe (Element @$\mathbb{N}$@)
+testStack07 = pushSingleLinkedStack emptySingleLinkedStack 1 (\s @$\rightarrow$@ pushSingleLinkedStack s 2 (\s @$\rightarrow$@ top s))
+
+testStack08 = pushSingleLinkedStack emptySingleLinkedStack 1
+  $ \s @$\rightarrow$@ pushSingleLinkedStack s 2
+  $ \s @$\rightarrow$@ pushSingleLinkedStack s 3
+  $ \s @$\rightarrow$@ pushSingleLinkedStack s 4
+  $ \s @$\rightarrow$@ pushSingleLinkedStack s 5
+  $ \s @$\rightarrow$@ top s
+
+
+testStack10 = pushStack emptySingleLinkedStack 1
+  $ \s @$\rightarrow$@ pushStack 2
+  $ \s @$\rightarrow$@ pushStack 3
+  $ \s @$\rightarrow$@ pushStack 4
+  $ \s @$\rightarrow$@ pushStack 5
+  $ \s @$\rightarrow$@ top s
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaElem.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+elem : {A : Set} {{eqA : Eq A}} → A → List A → Bool
+elem {{eqA}} x (y ∷ xs) = (Eq._==_ eqA x y) || (elem {{eqA}} x xs)
+elem         x []        = false
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaElem.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+elem : {A : Set} {{eqA : Eq A}} @$\rightarrow$@ A @$\rightarrow$@ List A @$\rightarrow$@ Bool
+elem {{eqA}} x (y @$\text{::}$@ xs) = (Eq._==_ eqA x y) || (elem {{eqA}} x xs)
+elem         x []        = false
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaElemApply.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+listHas4 : Bool
+listHas4 = elem 4 (3 ∷ 2 ∷ 5 ∷ 4 ∷ []) -- true
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaElemApply.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+listHas4 : Bool
+listHas4 = elem 4 (3 @$\text{::}$@ 2 @$\text{::}$@ 5 @$\text{::}$@ 4 @$\text{::}$@ []) -- true
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaFunction.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+f : Bool -> Bool
+f x = true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaFunction.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+f : Bool @$\rightarrow$@ Bool
+f x = true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaId.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+identity : (A : Set) -> A -> A
+identity A x = x
+
+identity-zero : Nat
+identity-zero = identity Nat zero
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaId.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+identity : (A : Set) @$\rightarrow$@ A @$\rightarrow$@ A
+identity A x = x
+
+identity-zero : Nat
+identity-zero = identity Nat zero
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaImplicitId.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,11 @@
+id : {A : Set} -> A -> A
+id x = x
+
+id-zero : Nat
+id-zero = id zero
+
+id' : {A : Set} -> A -> A
+id' {A} x = x
+
+id-true : Bool
+id-true = id {Bool} true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaImplicitId.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,11 @@
+id : {A : Set} @$\rightarrow$@ A @$\rightarrow$@ A
+id x = x
+
+id-zero : Nat
+id-zero = id zero
+
+id' : {A : Set} @$\rightarrow$@ A @$\rightarrow$@ A
+id' {A} x = x
+
+id-true : Bool
+id-true = id {Bool} true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaImport.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,6 @@
+import Data.Nat                  -- import module
+import Data.Bool as B            -- renamed module
+import Data.List using (head)    -- import Data.head function
+import Level renaming (suc to S) -- import module with rename suc to S
+import Data.String hiding (_++_) -- import module without _++_
+open import Data.List            -- import and expand Data.List
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaImport.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,6 @@
+import Data.Nat                  -- import module
+import Data.Bool as B            -- renamed module
+import Data.List using (head)    -- import Data.head function
+import Level renaming (suc to S) -- import module with rename suc to S
+import Data.String hiding (_++_) -- import module without _++_
+open import Data.List            -- import and expand Data.List
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaInstance.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,9 @@
+_==Nat_ : Nat -> Nat -> Bool
+zero    ==Nat zero    = true
+(suc n) ==Nat zero    = false
+zero    ==Nat (suc m) = false
+(suc n) ==Nat (suc m) = n ==Nat m
+
+instance
+  natHas== : Eq Nat
+  natHas== = record { _==_ = _==Nat_}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaInstance.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,9 @@
+_==Nat_ : Nat @$\rightarrow$@ Nat @$\rightarrow$@ Bool
+zero    ==Nat zero    = true
+(suc n) ==Nat zero    = false
+zero    ==Nat (suc m) = false
+(suc n) ==Nat (suc m) = n ==Nat m
+
+instance
+  natHas== : Eq Nat
+  natHas== = record { _==_ = _==Nat_}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaInterface.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,15 @@
+record StackMethods {n m : Level } (a : Set n ) {t : Set m }(stackImpl : Set n ) : Set (m Level.⊔ n) where
+  field
+    push : stackImpl -> a -> (stackImpl -> t) -> t
+    pop  : stackImpl -> (stackImpl -> Maybe a -> t) -> t
+open StackMethods
+
+record Stack {n m : Level } (a : Set n ) {t : Set m } (si : Set n ) : Set (m Level.⊔ n) where
+  field
+    stack : si
+    stackMethods : StackMethods {n} {m} a {t} si
+  pushStack :  a -> (Stack a si -> t) -> t
+  pushStack d next = push (stackMethods ) (stack ) d (\s1 -> next (record {stack = s1 ; stackMethods = stackMethods } ))
+  popStack : (Stack a si -> Maybe a  -> t) -> t
+  popStack next = pop (stackMethods ) (stack ) (\s1 d1 -> next (record {stack = s1 ; stackMethods = stackMethods }) d1 )
+open Stack
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaInterface.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,15 @@
+record StackMethods {n m : Level } (a : Set n ) {t : Set m }(stackImpl : Set n ) : Set (m Level.@$\sqcup$@ n) where
+  field
+    push : stackImpl @$\rightarrow$@ a @$\rightarrow$@ (stackImpl @$\rightarrow$@ t) @$\rightarrow$@ t
+    pop  : stackImpl @$\rightarrow$@ (stackImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t
+open StackMethods
+
+record Stack {n m : Level } (a : Set n ) {t : Set m } (si : Set n ) : Set (m Level.@$\sqcup$@ n) where
+  field
+    stack : si
+    stackMethods : StackMethods {n} {m} a {t} si
+  pushStack :  a @$\rightarrow$@ (Stack a si @$\rightarrow$@ t) @$\rightarrow$@ t
+  pushStack d next = push (stackMethods ) (stack ) d (\s1 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods } ))
+  popStack : (Stack a si @$\rightarrow$@ Maybe a  @$\rightarrow$@ t) @$\rightarrow$@ t
+  popStack next = pop (stackMethods ) (stack ) (\s1 d1 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods }) d1 )
+open Stack
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaLambda.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
++1 : ℕ → ℕ
++1 n = suc n -- not use lambda
+
+λ+1 : ℕ → ℕ
+λ+1 = (\n -> suc n)   -- use lambda
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaLambda.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
++1 : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@
++1 n = suc n -- not use lambda
+
+@$\lambda$@+1 : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@
+@$\lambda$@+1 = (\n @$\rightarrow$@ suc n)   -- use lambda
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaModusPonens.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+f : {A B C : Set} -> ((A -> B) × (B -> C)) -> (A -> C)
+f = \p x -> (snd p) ((fst p) x)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaModusPonens.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+f : {A B C : Set} @$\rightarrow$@ ((A @$\rightarrow$@ B) @$\times$@ (B @$\rightarrow$@ C)) @$\rightarrow$@ (A @$\rightarrow$@ C)
+f = \p x @$\rightarrow$@ (snd p) ((fst p) x)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaNPushNPop.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,13 @@
+n-push : {m : Meta} {{_ : M.DataSegment Meta}} (n : ℕ) -> M.CodeSegment Meta Meta
+n-push {{mm}} (zero)      = M.cs {{mm}} {{mm}} id
+n-push {m} {{mm}} (suc n) = M.cs {{mm}} {{mm}} (\m -> M.exec {{mm}} {{mm}} (n-push {m} {{mm}} n) (pushOnce m))
+
+n-pop : {m : Meta} {{_ : M.DataSegment Meta}} (n : ℕ) -> M.CodeSegment Meta Meta
+n-pop {{mm}} (zero)      = M.cs {{mm}} {{mm}} id
+n-pop {m} {{mm}} (suc n) = M.cs {{mm}} {{mm}} (\m -> M.exec {{mm}} {{mm}} (n-pop {m} {{mm}} n) (popOnce m))
+
+pop-n-push-type : ℕ -> ℕ -> ℕ -> SingleLinkedStack ℕ -> Set₁
+pop-n-push-type n cn ce s = M.exec (M.csComp {meta} (M.cs popOnce) (n-push {meta} (suc n))) meta
+                         ≡ M.exec (n-push {meta} n) meta
+  where
+    meta = id-meta cn ce s
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaNPushNPop.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,13 @@
+n-push : {m : Meta} {{_ : M.DataSegment Meta}} (n : @$\mathbb{N}$@) @$\rightarrow$@ M.CodeSegment Meta Meta
+n-push {{mm}} (zero)      = M.cs {{mm}} {{mm}} id
+n-push {m} {{mm}} (suc n) = M.cs {{mm}} {{mm}} (\m @$\rightarrow$@ M.exec {{mm}} {{mm}} (n-push {m} {{mm}} n) (pushOnce m))
+
+n-pop : {m : Meta} {{_ : M.DataSegment Meta}} (n : @$\mathbb{N}$@) @$\rightarrow$@ M.CodeSegment Meta Meta
+n-pop {{mm}} (zero)      = M.cs {{mm}} {{mm}} id
+n-pop {m} {{mm}} (suc n) = M.cs {{mm}} {{mm}} (\m @$\rightarrow$@ M.exec {{mm}} {{mm}} (n-pop {m} {{mm}} n) (popOnce m))
+
+pop-n-push-type : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ SingleLinkedStack @$\mathbb{N}$@ @$\rightarrow$@ Set@$\_{1}$@
+pop-n-push-type n cn ce s = M.exec (M.csComp {meta} (M.cs popOnce) (n-push {meta} (suc n))) meta
+                         @$\equiv$@ M.exec (n-push {meta} n) meta
+  where
+    meta = id-meta cn ce s
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaNPushNPopProof.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,58 @@
+pop-n-push-type : ℕ -> ℕ -> ℕ -> SingleLinkedStack ℕ -> Set₁
+pop-n-push-type n cn ce s = M.exec (M.csComp (M.cs popOnce) (n-push (suc n))) meta
+                         ≡ M.exec (n-push n) meta
+  where
+    meta = id-meta cn ce s
+
+pop-n-push : (n cn ce : ℕ) -> (s : SingleLinkedStack ℕ) -> pop-n-push-type n cn ce s
+pop-n-push zero cn ce s    = refl
+pop-n-push (suc n) cn ce s = begin
+  M.exec (M.csComp  (M.cs popOnce) (n-push  (suc (suc n)))) (id-meta cn ce s)
+  ≡⟨ refl ⟩
+  M.exec (M.csComp (M.cs popOnce) (M.csComp  (n-push  (suc n)) (M.cs pushOnce))) (id-meta cn ce s)
+  ≡⟨ exec-comp (M.cs popOnce) (M.csComp  (n-push  (suc n)) (M.cs pushOnce)) (id-meta cn ce s) ⟩
+  M.exec (M.cs popOnce) (M.exec (M.csComp  (n-push  (suc n)) (M.cs pushOnce)) (id-meta cn ce s))
+  ≡⟨ cong (\x -> M.exec (M.cs popOnce) x) (exec-comp (n-push (suc n)) (M.cs pushOnce) (id-meta cn ce s)) ⟩
+  M.exec (M.cs popOnce) (M.exec (n-push  (suc n))(M.exec (M.cs pushOnce) (id-meta cn ce s)))
+  ≡⟨ refl ⟩
+  M.exec (M.cs popOnce) (M.exec (n-push  (suc n)) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})))
+  ≡⟨ sym (exec-comp (M.cs popOnce) (n-push (suc n)) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}))) ⟩
+  M.exec (M.csComp  (M.cs popOnce) (n-push  (suc n))) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}))
+  ≡⟨ pop-n-push n cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}) ⟩
+  M.exec (n-push n) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}))
+  ≡⟨ refl ⟩
+  M.exec (n-push n) (pushOnce (id-meta cn ce s))
+  ≡⟨ refl ⟩
+  M.exec (n-push n) (M.exec (M.cs pushOnce) (id-meta cn ce s))
+  ≡⟨ refl ⟩
+  M.exec (n-push (suc n)) (id-meta cn ce s)
+  ∎
+
+
+
+n-push-pop-type : ℕ ->  ℕ  -> ℕ -> SingleLinkedStack ℕ -> Set₁
+n-push-pop-type n cn ce st = M.exec (M.csComp (n-pop n) (n-push n)) meta ≡ meta
+  where
+    meta = id-meta cn ce st
+
+n-push-pop : (n cn ce : ℕ) -> (s : SingleLinkedStack ℕ) -> n-push-pop-type n cn ce s
+n-push-pop zero    cn ce s = refl
+n-push-pop (suc n) cn ce s = begin
+  M.exec (M.csComp (n-pop (suc n)) (n-push (suc n))) (id-meta cn ce s)
+  ≡⟨ refl ⟩
+  M.exec (M.csComp (M.cs (\m -> M.exec (n-pop n) (popOnce m))) (n-push (suc n))) (id-meta cn ce s)
+  ≡⟨ exec-comp (M.cs (\m -> M.exec (n-pop n) (popOnce m))) (n-push (suc n))  (id-meta cn ce s) ⟩
+  M.exec (M.cs (\m -> M.exec (n-pop  n) (popOnce m))) (M.exec (n-push (suc n)) (id-meta cn ce s))
+  ≡⟨ refl ⟩
+  M.exec (n-pop n) (popOnce (M.exec (n-push (suc n)) (id-meta cn ce s)))
+  ≡⟨ refl ⟩
+  M.exec (n-pop n) (M.exec (M.cs popOnce) (M.exec (n-push (suc n)) (id-meta cn ce s)))
+  ≡⟨ cong (\x -> M.exec (n-pop n) x) (sym (exec-comp (M.cs popOnce) (n-push (suc n)) (id-meta cn ce s))) ⟩
+  M.exec (n-pop n) (M.exec (M.csComp (M.cs popOnce) (n-push (suc n))) (id-meta cn ce s))
+  ≡⟨ cong (\x -> M.exec (n-pop n) x) (pop-n-push n cn ce s) ⟩
+  M.exec (n-pop n) (M.exec (n-push n) (id-meta cn ce s))
+  ≡⟨ sym (exec-comp (n-pop n) (n-push n) (id-meta cn ce s)) ⟩
+  M.exec (M.csComp (n-pop n) (n-push n)) (id-meta cn ce s)
+  ≡⟨ n-push-pop n cn ce s ⟩
+  id-meta cn ce s
+  ∎
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaNPushNPopProof.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,58 @@
+pop-n-push-type : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ SingleLinkedStack @$\mathbb{N}$@ @$\rightarrow$@ Set@$\_{1}$@
+pop-n-push-type n cn ce s = M.exec (M.csComp (M.cs popOnce) (n-push (suc n))) meta
+                         @$\equiv$@ M.exec (n-push n) meta
+  where
+    meta = id-meta cn ce s
+
+pop-n-push : (n cn ce : @$\mathbb{N}$@) @$\rightarrow$@ (s : SingleLinkedStack @$\mathbb{N}$@) @$\rightarrow$@ pop-n-push-type n cn ce s
+pop-n-push zero cn ce s    = refl
+pop-n-push (suc n) cn ce s = begin
+  M.exec (M.csComp  (M.cs popOnce) (n-push  (suc (suc n)))) (id-meta cn ce s)
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (M.csComp (M.cs popOnce) (M.csComp  (n-push  (suc n)) (M.cs pushOnce))) (id-meta cn ce s)
+  @$\equiv$@@$\langle$@ exec-comp (M.cs popOnce) (M.csComp  (n-push  (suc n)) (M.cs pushOnce)) (id-meta cn ce s) @$\rangle$@
+  M.exec (M.cs popOnce) (M.exec (M.csComp  (n-push  (suc n)) (M.cs pushOnce)) (id-meta cn ce s))
+  @$\equiv$@@$\langle$@ cong (\x @$\rightarrow$@ M.exec (M.cs popOnce) x) (exec-comp (n-push (suc n)) (M.cs pushOnce) (id-meta cn ce s)) @$\rangle$@
+  M.exec (M.cs popOnce) (M.exec (n-push  (suc n))(M.exec (M.cs pushOnce) (id-meta cn ce s)))
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (M.cs popOnce) (M.exec (n-push  (suc n)) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})))
+  @$\equiv$@@$\langle$@ sym (exec-comp (M.cs popOnce) (n-push (suc n)) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}))) @$\rangle$@
+  M.exec (M.csComp  (M.cs popOnce) (n-push  (suc n))) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}))
+  @$\equiv$@@$\langle$@ pop-n-push n cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}) @$\rangle$@
+  M.exec (n-push n) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}))
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (n-push n) (pushOnce (id-meta cn ce s))
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (n-push n) (M.exec (M.cs pushOnce) (id-meta cn ce s))
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (n-push (suc n)) (id-meta cn ce s)
+  @$\blacksquare$@
+
+
+
+n-push-pop-type : @$\mathbb{N}$@ @$\rightarrow$@  @$\mathbb{N}$@  @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ SingleLinkedStack @$\mathbb{N}$@ @$\rightarrow$@ Set@$\_{1}$@
+n-push-pop-type n cn ce st = M.exec (M.csComp (n-pop n) (n-push n)) meta @$\equiv$@ meta
+  where
+    meta = id-meta cn ce st
+
+n-push-pop : (n cn ce : @$\mathbb{N}$@) @$\rightarrow$@ (s : SingleLinkedStack @$\mathbb{N}$@) @$\rightarrow$@ n-push-pop-type n cn ce s
+n-push-pop zero    cn ce s = refl
+n-push-pop (suc n) cn ce s = begin
+  M.exec (M.csComp (n-pop (suc n)) (n-push (suc n))) (id-meta cn ce s)
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (M.csComp (M.cs (\m @$\rightarrow$@ M.exec (n-pop n) (popOnce m))) (n-push (suc n))) (id-meta cn ce s)
+  @$\equiv$@@$\langle$@ exec-comp (M.cs (\m @$\rightarrow$@ M.exec (n-pop n) (popOnce m))) (n-push (suc n))  (id-meta cn ce s) @$\rangle$@
+  M.exec (M.cs (\m @$\rightarrow$@ M.exec (n-pop  n) (popOnce m))) (M.exec (n-push (suc n)) (id-meta cn ce s))
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (n-pop n) (popOnce (M.exec (n-push (suc n)) (id-meta cn ce s)))
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (n-pop n) (M.exec (M.cs popOnce) (M.exec (n-push (suc n)) (id-meta cn ce s)))
+  @$\equiv$@@$\langle$@ cong (\x @$\rightarrow$@ M.exec (n-pop n) x) (sym (exec-comp (M.cs popOnce) (n-push (suc n)) (id-meta cn ce s))) @$\rangle$@
+  M.exec (n-pop n) (M.exec (M.csComp (M.cs popOnce) (n-push (suc n))) (id-meta cn ce s))
+  @$\equiv$@@$\langle$@ cong (\x @$\rightarrow$@ M.exec (n-pop n) x) (pop-n-push n cn ce s) @$\rangle$@
+  M.exec (n-pop n) (M.exec (n-push n) (id-meta cn ce s))
+  @$\equiv$@@$\langle$@ sym (exec-comp (n-pop n) (n-push n) (id-meta cn ce s)) @$\rangle$@
+  M.exec (M.csComp (n-pop n) (n-push n)) (id-meta cn ce s)
+  @$\equiv$@@$\langle$@ n-push-pop n cn ce s @$\rangle$@
+  id-meta cn ce s
+  @$\blacksquare$@
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaNat.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+data Nat : Set where
+  zero : Nat
+  suc  : Nat -> Nat
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaNat.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+data Nat : Set where
+  zero : Nat
+  suc  : Nat @$\rightarrow$@ Nat
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaNot.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+not : Bool -> Bool
+not  true = false
+not false = true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaNot.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+not : Bool @$\rightarrow$@ Bool
+not  true = false
+not false = true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaParameterizedModule.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+module Sort (A : Set) (_<_ : A -> A -> Bool) where
+sort : List A -> List A
+sort = -- 実装は省略 ...
+
+-- Parameterized Module により N.sort や B.sort が可能
+open import Sort Nat  Nat._<_  as N
+open import Sort Bool Bool._<_ as B
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaParameterizedModule.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+module Sort (A : Set) (_<_ : A @$\rightarrow$@ A @$\rightarrow$@ Bool) where
+sort : List A @$\rightarrow$@ List A
+sort = -- 実装は省略 ...
+
+-- Parameterized Module により N.sort や B.sort が可能
+open import Sort Nat  Nat._<_  as N
+open import Sort Bool Bool._<_ as B
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaPattern.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+not : Bool -> Bool
+not false = true
+not x     = false
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaPattern.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+not : Bool @$\rightarrow$@ Bool
+not false = true
+not x     = false
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaPlus.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+_+_ : Nat -> Nat -> Nat
+zero  + m = m
+suc n + m = suc (n + m)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaPlus.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+_+_ : Nat @$\rightarrow$@ Nat @$\rightarrow$@ Nat
+zero  + m = m
+suc n + m = suc (n + m)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaProduct.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+data _×_ (A B : Set) : Set where
+  <_,_> : A -> B -> A × B
+
+fst : {A B : Set} -> A × B -> A
+fst < a , _ > = a
+
+snd : {A B : Set} -> A × B -> B
+snd < _ , b > = b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaProduct.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+data _@$\times$@_ (A B : Set) : Set where
+  <_,_> : A @$\rightarrow$@ B @$\rightarrow$@ A @$\times$@ B
+
+fst : {A B : Set} @$\rightarrow$@ A @$\times$@ B @$\rightarrow$@ A
+fst < a , _ > = a
+
+snd : {A B : Set} @$\rightarrow$@ A @$\times$@ B @$\rightarrow$@ B
+snd < _ , b > = b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaProp.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+prop : Bool
+prop = true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaProp.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+prop : Bool
+prop = true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaPushPop.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,28 @@
+pushSingleLinkedStack : Meta -> Meta
+pushSingleLinkedStack m = M.exec (liftMeta n) (record m {stack = (push s e) })
+  where
+    n = Meta.nextCS m
+    s = Meta.stack  m
+    e = Context.element (Meta.context m)
+    push : SingleLinkedStack A -> Maybe A -> SingleLinkedStack A
+    push s nothing  = s
+    push s (just x) = record {top = just (cons x (top s))}
+
+popSingleLinkedStack : Meta -> Meta
+popSingleLinkedStack m = M.exec (liftMeta n) (record m {stack = (st m) ; context = record con {element = (elem m)}})
+  where
+    n = Meta.nextCS m
+    con  = Meta.context m
+    elem : Meta -> Maybe A
+    elem record {stack = record { top = (just (cons x _)) }} = just x
+    elem record {stack = record { top = nothing           }} = nothing
+    st : Meta -> SingleLinkedStack A
+    st record {stack = record { top = (just (cons _ s)) }} = record {top = s}
+    st record {stack = record { top = nothing           }} = record {top = nothing}
+
+
+pushSingleLinkedStackCS : M.CodeSegment Meta Meta
+pushSingleLinkedStackCS = M.cs pushSingleLinkedStack
+
+popSingleLinkedStackCS : M.CodeSegment Meta Meta
+popSingleLinkedStackCS = M.cs popSingleLinkedStack
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaPushPop.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,28 @@
+pushSingleLinkedStack : Meta @$\rightarrow$@ Meta
+pushSingleLinkedStack m = M.exec (liftMeta n) (record m {stack = (push s e) })
+  where
+    n = Meta.nextCS m
+    s = Meta.stack  m
+    e = Context.element (Meta.context m)
+    push : SingleLinkedStack A @$\rightarrow$@ Maybe A @$\rightarrow$@ SingleLinkedStack A
+    push s nothing  = s
+    push s (just x) = record {top = just (cons x (top s))}
+
+popSingleLinkedStack : Meta @$\rightarrow$@ Meta
+popSingleLinkedStack m = M.exec (liftMeta n) (record m {stack = (st m) ; context = record con {element = (elem m)}})
+  where
+    n = Meta.nextCS m
+    con  = Meta.context m
+    elem : Meta @$\rightarrow$@ Maybe A
+    elem record {stack = record { top = (just (cons x _)) }} = just x
+    elem record {stack = record { top = nothing           }} = nothing
+    st : Meta @$\rightarrow$@ SingleLinkedStack A
+    st record {stack = record { top = (just (cons _ s)) }} = record {top = s}
+    st record {stack = record { top = nothing           }} = record {top = nothing}
+
+
+pushSingleLinkedStackCS : M.CodeSegment Meta Meta
+pushSingleLinkedStackCS = M.cs pushSingleLinkedStack
+
+popSingleLinkedStackCS : M.CodeSegment Meta Meta
+popSingleLinkedStackCS = M.cs popSingleLinkedStack
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaPushPopProof.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,11 @@
+id-meta : ℕ -> ℕ -> SingleLinkedStack ℕ -> Meta
+id-meta n e s = record { context = record {n = n ; element = just e}
+                       ; nextCS = (N.cs id) ; stack = s}
+
+push-pop-type : ℕ -> ℕ  -> ℕ -> Element ℕ -> Set₁
+push-pop-type n e x s = M.exec (M.csComp {meta} (M.cs popOnce) (M.cs pushOnce)) meta ≡ meta
+  where
+    meta = id-meta n e record {top = just (cons x (just s))}
+
+push-pop : (n e x : ℕ) -> (s : Element ℕ) ->  push-pop-type n e x s
+push-pop n e x s = refl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaPushPopProof.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,11 @@
+id-meta : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ SingleLinkedStack @$\mathbb{N}$@ @$\rightarrow$@ Meta
+id-meta n e s = record { context = record {n = n ; element = just e}
+                       ; nextCS = (N.cs id) ; stack = s}
+
+push-pop-type : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@  @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ Element @$\mathbb{N}$@ @$\rightarrow$@ Set@$\_{1}$@
+push-pop-type n e x s = M.exec (M.csComp {meta} (M.cs popOnce) (M.cs pushOnce)) meta @$\equiv$@ meta
+  where
+    meta = id-meta n e record {top = just (cons x (just s))}
+
+push-pop : (n e x : @$\mathbb{N}$@) @$\rightarrow$@ (s : Element @$\mathbb{N}$@) @$\rightarrow$@  push-pop-type n e x s
+push-pop n e x s = refl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaRecord.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+record Point : Set where
+  field
+    x : Nat
+    y : Nat
+
+makePoint : Nat -> Nat -> Point
+makePoint a b = record { x = a ; y = b }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaRecord.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+record Point : Set where
+  field
+    x : Nat
+    y : Nat
+
+makePoint : Nat @$\rightarrow$@ Nat @$\rightarrow$@ Point
+makePoint a b = record { x = a ; y = b }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaRecordProj.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+getX : Point -> Nat
+getX p = Point.x p
+
+getY : Point -> Nat
+getY record { x = a ; y = b} = b
+
+xPlus5 : Point -> Point
+xPlus5 p = record p { x = (Point.x p) + 5}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaRecordProj.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+getX : Point @$\rightarrow$@ Nat
+getX p = Point.x p
+
+getY : Point @$\rightarrow$@ Nat
+getY record { x = a ; y = b} = b
+
+xPlus5 : Point @$\rightarrow$@ Point
+xPlus5 p = record p { x = (Point.x p) + 5}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaSingleLinkedStack.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,63 @@
+singleLinkedStackSpec : {n m : Level } {t : Set m } {a : Set n} -> StackMethods {n} {m} a {t} (SingleLinkedStack a)
+singleLinkedStackSpec = record {
+push = pushSingleLinkedStack
+; pop  = popSingleLinkedStack
+; pop2 = pop2SingleLinkedStack
+; get  = getSingleLinkedStack
+; get2 = get2SingleLinkedStack
+; clear = clearSingleLinkedStack
+}
+
+createSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} -> Stack {n} {m} a {t} (SingleLinkedStack a)
+createSingleLinkedStack = record {
+stack = emptySingleLinkedStack ;
+stackMethods = singleLinkedStackSpec
+}
+
+-- Implementation
+
+pushSingleLinkedStack : {n m : Level } {t : Set m } {Data : Set n} -> SingleLinkedStack Data -> Data -> (Code : SingleLinkedStack Data -> t) -> t
+pushSingleLinkedStack stack datum next = next stack1
+  where
+    element = cons datum (top stack)
+    stack1  = record {top = Just element}
+
+
+popSingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} -> SingleLinkedStack a -> (Code : SingleLinkedStack a -> (Maybe a) -> t) -> t
+popSingleLinkedStack stack cs with (top stack)
+...                                | Nothing = cs stack  Nothing
+...                                | Just d  = cs stack1 (Just data1)
+  where
+    data1  = datum d
+    stack1 = record { top = (next d) }
+
+pop2SingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} -> SingleLinkedStack a -> (Code : SingleLinkedStack a -> (Maybe a) -> (Maybe a) -> t) -> t
+pop2SingleLinkedStack {n} {m} {t} {a} stack cs with (top stack)
+...                                | Nothing = cs stack Nothing Nothing
+...                                | Just d = pop2SingleLinkedStack' {n} {m} stack cs
+  where
+    pop2SingleLinkedStack' : {n m : Level } {t : Set m }  -> SingleLinkedStack a -> (Code : SingleLinkedStack a -> (Maybe a) -> (Maybe a) -> t) -> t
+    pop2SingleLinkedStack' stack cs with (next d)
+    ...              | Nothing = cs stack Nothing Nothing
+    ...              | Just d1 = cs (record {top = (next d1)}) (Just (datum d)) (Just (datum d1))
+
+
+getSingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} -> SingleLinkedStack a -> (Code : SingleLinkedStack a -> (Maybe a) -> t) -> t
+getSingleLinkedStack stack cs with (top stack)
+...                                | Nothing = cs stack  Nothing
+...                                | Just d  = cs stack (Just data1)
+  where
+    data1  = datum d
+
+get2SingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} -> SingleLinkedStack a -> (Code : SingleLinkedStack a -> (Maybe a) -> (Maybe a) -> t) -> t
+get2SingleLinkedStack {n} {m} {t} {a} stack cs with (top stack)
+...                                | Nothing = cs stack Nothing Nothing
+...                                | Just d = get2SingleLinkedStack' {n} {m} stack cs
+  where
+    get2SingleLinkedStack' : {n m : Level} {t : Set m } -> SingleLinkedStack a -> (Code : SingleLinkedStack a -> (Maybe a) -> (Maybe a) -> t) -> t
+    get2SingleLinkedStack' stack cs with (next d)
+    ...              | Nothing = cs stack Nothing Nothing
+    ...              | Just d1 = cs stack (Just (datum d)) (Just (datum d1))
+
+clearSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} -> SingleLinkedStack a -> (SingleLinkedStack a -> t) -> t
+clearSingleLinkedStack stack next = next (record {top = Nothing})
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaSingleLinkedStack.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,63 @@
+singleLinkedStackSpec : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ StackMethods {n} {m} a {t} (SingleLinkedStack a)
+singleLinkedStackSpec = record {
+push = pushSingleLinkedStack
+; pop  = popSingleLinkedStack
+; pop2 = pop2SingleLinkedStack
+; get  = getSingleLinkedStack
+; get2 = get2SingleLinkedStack
+; clear = clearSingleLinkedStack
+}
+
+createSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ Stack {n} {m} a {t} (SingleLinkedStack a)
+createSingleLinkedStack = record {
+stack = emptySingleLinkedStack ;
+stackMethods = singleLinkedStackSpec
+}
+
+-- Implementation
+
+pushSingleLinkedStack : {n m : Level } {t : Set m } {Data : Set n} @$\rightarrow$@ SingleLinkedStack Data @$\rightarrow$@ Data @$\rightarrow$@ (Code : SingleLinkedStack Data @$\rightarrow$@ t) @$\rightarrow$@ t
+pushSingleLinkedStack stack datum next = next stack1
+  where
+    element = cons datum (top stack)
+    stack1  = record {top = Just element}
+
+
+popSingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t
+popSingleLinkedStack stack cs with (top stack)
+...                                | Nothing = cs stack  Nothing
+...                                | Just d  = cs stack1 (Just data1)
+  where
+    data1  = datum d
+    stack1 = record { top = (next d) }
+
+pop2SingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t
+pop2SingleLinkedStack {n} {m} {t} {a} stack cs with (top stack)
+...                                | Nothing = cs stack Nothing Nothing
+...                                | Just d = pop2SingleLinkedStack' {n} {m} stack cs
+  where
+    pop2SingleLinkedStack' : {n m : Level } {t : Set m }  @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t
+    pop2SingleLinkedStack' stack cs with (next d)
+    ...              | Nothing = cs stack Nothing Nothing
+    ...              | Just d1 = cs (record {top = (next d1)}) (Just (datum d)) (Just (datum d1))
+
+
+getSingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t
+getSingleLinkedStack stack cs with (top stack)
+...                                | Nothing = cs stack  Nothing
+...                                | Just d  = cs stack (Just data1)
+  where
+    data1  = datum d
+
+get2SingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t
+get2SingleLinkedStack {n} {m} {t} {a} stack cs with (top stack)
+...                                | Nothing = cs stack Nothing Nothing
+...                                | Just d = get2SingleLinkedStack' {n} {m} stack cs
+  where
+    get2SingleLinkedStack' : {n m : Level} {t : Set m } @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t
+    get2SingleLinkedStack' stack cs with (next d)
+    ...              | Nothing = cs stack Nothing Nothing
+    ...              | Just d1 = cs stack (Just (datum d)) (Just (datum d1))
+
+clearSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (SingleLinkedStack a @$\rightarrow$@ t) @$\rightarrow$@ t
+clearSingleLinkedStack stack next = next (record {top = Nothing})
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaStack.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,13 @@
+data Element (a : Set) : Set where
+  cons : a -> Maybe (Element a) -> Element a
+
+datum : {a : Set} -> Element a -> a
+datum (cons a _) = a
+
+next : {a : Set} -> Element a -> Maybe (Element a)
+next (cons _ n) = n
+
+record SingleLinkedStack (a : Set) : Set where
+  field
+    top : Maybe (Element a)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaStack.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,13 @@
+data Element (a : Set) : Set where
+  cons : a @$\rightarrow$@ Maybe (Element a) @$\rightarrow$@ Element a
+
+datum : {a : Set} @$\rightarrow$@ Element a @$\rightarrow$@ a
+datum (cons a _) = a
+
+next : {a : Set} @$\rightarrow$@ Element a @$\rightarrow$@ Maybe (Element a)
+next (cons _ n) = n
+
+record SingleLinkedStack (a : Set) : Set where
+  field
+    top : Maybe (Element a)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaStackDS.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,17 @@
+record Context : Set where
+  field
+    -- fields for stack
+    element : Maybe A
+
+
+open import subtype Context as N
+
+record Meta  : Set₁ where
+  field
+    -- context as set of data segments
+    context : Context
+    stack   : SingleLinkedStack A
+    nextCS  : N.CodeSegment Context Context
+
+open import subtype Meta as M
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaStackDS.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,17 @@
+record Context : Set where
+  field
+    -- fields for stack
+    element : Maybe A
+
+
+open import subtype Context as N
+
+record Meta  : Set@$\_{1}$@ where
+  field
+    -- context as set of data segments
+    context : Context
+    stack   : SingleLinkedStack A
+    nextCS  : N.CodeSegment Context Context
+
+open import subtype Meta as M
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaStackImpl.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,19 @@
+pushSingleLinkedStack : {n m : Level } {t : Set m } {Data : Set n} -> SingleLinkedStack Data -> Data -> (Code : SingleLinkedStack Data -> t) -> t
+pushSingleLinkedStack stack datum next = next stack1
+  where
+    element = cons datum (top stack)
+    stack1  = record {top = Just element}
+
+-- Basic stack implementations are specifications of a Stack
+
+singleLinkedStackSpec : {n m : Level } {t : Set m } {a : Set n} -> StackMethods {n} {m} a {t} (SingleLinkedStack a)
+singleLinkedStackSpec = record {
+                           push = pushSingleLinkedStack
+                         ; pop  = popSingleLinkedStack
+                         }
+
+createSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} -> Stack {n} {m} a {t} (SingleLinkedStack a)
+createSingleLinkedStack = record {
+                        stack = emptySingleLinkedStack ;
+                        tackMethods = singleLinkedStackSpec
+                        }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaStackImpl.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,19 @@
+pushSingleLinkedStack : {n m : Level } {t : Set m } {Data : Set n} @$\rightarrow$@ SingleLinkedStack Data @$\rightarrow$@ Data @$\rightarrow$@ (Code : SingleLinkedStack Data @$\rightarrow$@ t) @$\rightarrow$@ t
+pushSingleLinkedStack stack datum next = next stack1
+  where
+    element = cons datum (top stack)
+    stack1  = record {top = Just element}
+
+-- Basic stack implementations are specifications of a Stack
+
+singleLinkedStackSpec : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ StackMethods {n} {m} a {t} (SingleLinkedStack a)
+singleLinkedStackSpec = record {
+                           push = pushSingleLinkedStack
+                         ; pop  = popSingleLinkedStack
+                         }
+
+createSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ Stack {n} {m} a {t} (SingleLinkedStack a)
+createSingleLinkedStack = record {
+                        stack = emptySingleLinkedStack ;
+                        tackMethods = singleLinkedStackSpec
+                        }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaStackSomeState.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+stackInSomeState : {l m : Level} {D : Set l} {t : Set m} (s : SingleLinkedStack D) -> Stack {l} {m} D {t}  ( SingleLinkedStack  D)
+stackInSomeState s =  record { stack = s ; stackMethods = singleLinkedStackSpec }
+
+push->push->pop2 : {l : Level} {D : Set l} (x y : D) (s : SingleLinkedStack D) -> pushStack (stackInSomeState s) x (\s1 -> pushStack s1 y (\s2 -> pop2Stack s2 (\s3 y1 x1 -> (Just x ≡ x1) ∧ (Just y ≡ y1))))
+push->push->pop2 {l} {D} x y s = record {pi1 = refl ; pi2 = refl}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaStackSomeState.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+stackInSomeState : {l m : Level} {D : Set l} {t : Set m} (s : SingleLinkedStack D) @$\rightarrow$@ Stack {l} {m} D {t}  ( SingleLinkedStack  D)
+stackInSomeState s =  record { stack = s ; stackMethods = singleLinkedStackSpec }
+
+push@$\rightarrow$@push@$\rightarrow$@pop2 : {l : Level} {D : Set l} (x y : D) (s : SingleLinkedStack D) @$\rightarrow$@ pushStack (stackInSomeState s) x (\s1 @$\rightarrow$@ pushStack s1 y (\s2 @$\rightarrow$@ pop2Stack s2 (\s3 y1 x1 @$\rightarrow$@ (Just x @$\equiv$@ x1) @$\wedge$@ (Just y @$\equiv$@ y1))))
+push@$\rightarrow$@push@$\rightarrow$@pop2 {l} {D} x y s = record {pi1 = refl ; pi2 = refl}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaStackTest.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,22 @@
+-- after push 1 and 2, pop2 get 1 and 2
+
+testStack02 : {m : Level } ->  ( Stack  ℕ (SingleLinkedStack ℕ) -> Bool {m} ) -> Bool {m}
+testStack02 cs = pushStack createSingleLinkedStack 1 (\s -> pushStack s 2 cs)
+
+
+testStack031 : (d1 d2 : ℕ ) -> Bool {Zero}
+testStack031 2 1 = True
+testStack031 _ _ = False
+
+testStack032 : (d1 d2 : Maybe ℕ) -> Bool {Zero}
+testStack032  (Just d1) (Just d2) = testStack031 d1 d2
+testStack032  _ _ = False
+
+testStack03 : {m : Level } -> Stack  ℕ (SingleLinkedStack ℕ) -> ((Maybe ℕ) -> (Maybe ℕ) -> Bool {m} ) -> Bool {m}
+testStack03 s cs = pop2Stack s (\s d1 d2 -> cs d1 d2 )
+
+testStack04 : Bool
+testStack04 = testStack02 (\s -> testStack03 s testStack032)
+
+testStack05 : testStack04 ≡ True
+testStack05 = refl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaStackTest.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,22 @@
+-- after push 1 and 2, pop2 get 1 and 2
+
+testStack02 : {m : Level } @$\rightarrow$@  ( Stack  @$\mathbb{N}$@ (SingleLinkedStack @$\mathbb{N}$@) @$\rightarrow$@ Bool {m} ) @$\rightarrow$@ Bool {m}
+testStack02 cs = pushStack createSingleLinkedStack 1 (\s @$\rightarrow$@ pushStack s 2 cs)
+
+
+testStack031 : (d1 d2 : @$\mathbb{N}$@ ) @$\rightarrow$@ Bool {Zero}
+testStack031 2 1 = True
+testStack031 _ _ = False
+
+testStack032 : (d1 d2 : Maybe @$\mathbb{N}$@) @$\rightarrow$@ Bool {Zero}
+testStack032  (Just d1) (Just d2) = testStack031 d1 d2
+testStack032  _ _ = False
+
+testStack03 : {m : Level } @$\rightarrow$@ Stack  @$\mathbb{N}$@ (SingleLinkedStack @$\mathbb{N}$@) @$\rightarrow$@ ((Maybe @$\mathbb{N}$@) @$\rightarrow$@ (Maybe @$\mathbb{N}$@) @$\rightarrow$@ Bool {m} ) @$\rightarrow$@ Bool {m}
+testStack03 s cs = pop2Stack s (\s d1 d2 @$\rightarrow$@ cs d1 d2 )
+
+testStack04 : Bool
+testStack04 = testStack02 (\s @$\rightarrow$@ testStack03 s testStack032)
+
+testStack05 : testStack04 @$\equiv$@ True
+testStack05 = refl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTree.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,22 @@
+record TreeMethods {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.⊔ n) where
+  field
+    putImpl : treeImpl -> a -> (treeImpl -> t) -> t
+    getImpl  : treeImpl -> (treeImpl -> Maybe a -> t) -> t
+open TreeMethods
+
+record Tree  {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.⊔ n) where
+  field
+    tree : treeImpl
+    treeMethods : TreeMethods {n} {m} {a} {t} treeImpl
+  putTree : a -> (Tree treeImpl -> t) -> t
+  putTree d next = putImpl (treeMethods ) tree d (\t1 -> next (record {tree = t1 ; treeMethods = treeMethods} ))
+  getTree : (Tree treeImpl -> Maybe a -> t) -> t
+  getTree next = getImpl (treeMethods ) tree (\t1 d -> next (record {tree = t1 ; treeMethods = treeMethods} ) d )
+open Tree
+
+record RedBlackTree {n m : Level } {t : Set m} (a k : Set n) : Set (m Level.⊔ n) where
+  field
+    root : Maybe (Node a k)
+    nodeStack : SingleLinkedStack  (Node a k)
+    compare : k -> k -> CompareResult {n}
+open RedBlackTree
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTree.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,22 @@
+record TreeMethods {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.@$\sqcup$@ n) where
+  field
+    putImpl : treeImpl @$\rightarrow$@ a @$\rightarrow$@ (treeImpl @$\rightarrow$@ t) @$\rightarrow$@ t
+    getImpl  : treeImpl @$\rightarrow$@ (treeImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t
+open TreeMethods
+
+record Tree  {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.@$\sqcup$@ n) where
+  field
+    tree : treeImpl
+    treeMethods : TreeMethods {n} {m} {a} {t} treeImpl
+  putTree : a @$\rightarrow$@ (Tree treeImpl @$\rightarrow$@ t) @$\rightarrow$@ t
+  putTree d next = putImpl (treeMethods ) tree d (\t1 @$\rightarrow$@ next (record {tree = t1 ; treeMethods = treeMethods} ))
+  getTree : (Tree treeImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t
+  getTree next = getImpl (treeMethods ) tree (\t1 d @$\rightarrow$@ next (record {tree = t1 ; treeMethods = treeMethods} ) d )
+open Tree
+
+record RedBlackTree {n m : Level } {t : Set m} (a k : Set n) : Set (m Level.@$\sqcup$@ n) where
+  field
+    root : Maybe (Node a k)
+    nodeStack : SingleLinkedStack  (Node a k)
+    compare : k @$\rightarrow$@ k @$\rightarrow$@ CompareResult {n}
+open RedBlackTree
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTreeDebug.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,15 @@
+test31 = putTree1 {_} {_} {ℕ} {ℕ} (createEmptyRedBlackTreeℕ ℕ ) 1 1
+  $ \t -> putTree1 t 2 2
+  $ \t -> putTree1 t 3 3
+  $ \t -> putTree1 t 4 4
+  $ \t -> getRedBlackTree t 4
+  $ \t x -> x
+
+-- Just
+-- (record
+-- { key = 4
+-- ; value = 4
+-- ; right = Nothing
+-- ; left = Nothing
+-- ; color = Red
+-- })
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTreeDebug.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,15 @@
+test31 = putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@ ) 1 1
+  $ \t @$\rightarrow$@ putTree1 t 2 2
+  $ \t @$\rightarrow$@ putTree1 t 3 3
+  $ \t @$\rightarrow$@ putTree1 t 4 4
+  $ \t @$\rightarrow$@ getRedBlackTree t 4
+  $ \t x @$\rightarrow$@ x
+
+-- Just
+-- (record
+-- { key = 4
+-- ; value = 4
+-- ; right = Nothing
+-- ; left = Nothing
+-- ; color = Red
+-- })
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTreeDebugReturnNode4.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,16 @@
+test31 = putTree1 {_} {_} {ℕ} {ℕ} (createEmptyRedBlackTreeℕ ℕ ) 1 1
+$ \t -> putTree1 t 2 2
+$ \t -> putTree1 t 3 3
+$ \t -> putTree1 t 4 4
+$ \t -> getRedBlackTree t 4
+$ \t x -> x
+
+-- C-c C-n test31 return
+  -- Just
+  -- (record
+  -- { key = 4
+  -- ; value = 4
+  -- ; right = Nothing
+  -- ; left = Nothing
+  -- ; color = Red
+  -- })
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTreeDebugReturnNode4.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,16 @@
+test31 = putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@ ) 1 1
+$ \t @$\rightarrow$@ putTree1 t 2 2
+$ \t @$\rightarrow$@ putTree1 t 3 3
+$ \t @$\rightarrow$@ putTree1 t 4 4
+$ \t @$\rightarrow$@ getRedBlackTree t 4
+$ \t x @$\rightarrow$@ x
+
+-- C-c C-n test31 return
+  -- Just
+  -- (record
+  -- { key = 4
+  -- ; value = 4
+  -- ; right = Nothing
+  -- ; left = Nothing
+  -- ; color = Red
+  -- })
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTreeImpl.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,14 @@
+record TreeMethods {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.⊔ n) where
+  field
+    putImpl : treeImpl -> a -> (treeImpl -> t) -> t
+  getImpl  : treeImpl -> (treeImpl -> Maybe a -> t) -> t
+
+record Tree  {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.⊔ n) where
+  field
+    tree : treeImpl
+    treeMethods : TreeMethods {n} {m} {a} {t} treeImpl
+  putTree : a -> (Tree treeImpl -> t) -> t
+  putTree d next = putImpl (treeMethods ) tree d (\t1 -> next (record {tree = t1 ; treeMethods = treeMethods} ))
+  getTree : (Tree treeImpl -> Maybe a -> t) -> t
+  getTree next = getImpl (treeMethods ) tree (\t1 d -> next (record {tree = t1 ; treeMethods = treeMethods} ) d )
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTreeImpl.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,14 @@
+record TreeMethods {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.@$\sqcup$@ n) where
+  field
+    putImpl : treeImpl @$\rightarrow$@ a @$\rightarrow$@ (treeImpl @$\rightarrow$@ t) @$\rightarrow$@ t
+  getImpl  : treeImpl @$\rightarrow$@ (treeImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t
+
+record Tree  {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.@$\sqcup$@ n) where
+  field
+    tree : treeImpl
+    treeMethods : TreeMethods {n} {m} {a} {t} treeImpl
+  putTree : a @$\rightarrow$@ (Tree treeImpl @$\rightarrow$@ t) @$\rightarrow$@ t
+  putTree d next = putImpl (treeMethods ) tree d (\t1 @$\rightarrow$@ next (record {tree = t1 ; treeMethods = treeMethods} ))
+  getTree : (Tree treeImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t
+  getTree next = getImpl (treeMethods ) tree (\t1 d @$\rightarrow$@ next (record {tree = t1 ; treeMethods = treeMethods} ) d )
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTreeProof.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,34 @@
+redBlackInSomeState : { m : Level } (a : Set Level.zero) (n : Maybe (Node a ℕ)) {t : Set m} -> RedBlackTree {Level.zero} {m} {t} a ℕ
+redBlackInSomeState {m} a n {t} = record { root = n ; nodeStack = emptySingleLinkedStack ; compare = compare2 }
+
+putTest1 :{ m : Level } (n : Maybe (Node ℕ ℕ))
+         -> (k : ℕ) (x : ℕ)
+         -> putTree1 {_} {_} {ℕ} {ℕ} (redBlackInSomeState {_} ℕ n {Set Level.zero}) k x
+         (\ t -> getRedBlackTree t k (\ t x1 -> check2 x1 x  ≡ True))
+putTest1 n k x with n
+...  | Just n1 = lemma2 ( record { top = Nothing } )
+   where
+     lemma2 : (s : SingleLinkedStack (Node ℕ ℕ) ) -> putTree1 (record { root = Just n1 ; nodeStack = s ; compare = compare2 }) k x (λ t →
+         GetRedBlackTree.checkNode t k (λ t₁ x1 → check2 x1 x ≡ True) (root t))
+     lemma2 s with compare2 k (key n1)
+     ... |  EQ = lemma3 {!!}
+        where
+           lemma3 : compare2 k (key n1) ≡  EQ -> getRedBlackTree {_} {_} {ℕ} {ℕ} {Set Level.zero} ( record {  root = Just ( record {
+               key   = key n1 ; value = x ; right = right n1 ; left  = left n1 ; color = Black
+               } ) ; nodeStack = s ; compare = λ x₁ y → compare2 x₁ y  } ) k ( \ t x1 -> check2 x1 x  ≡ True)
+           lemma3 eq with compare2 x x | putTest1Lemma2 x
+           ... | EQ | refl with compare2 k (key n1)  | eq
+           ...              | EQ | refl with compare2 x x | putTest1Lemma2 x
+           ...                    | EQ | refl = refl
+     ... |  GT = {!!}
+     ... |  LT = {!!}
+
+...  | Nothing =  lemma1
+   where
+     lemma1 : getRedBlackTree {_} {_} {ℕ} {ℕ} {Set Level.zero} ( record {  root = Just ( record {
+               key   = k ; value = x ; right = Nothing ; left  = Nothing ; color = Red
+        } ) ; nodeStack = record { top = Nothing } ; compare = λ x₁ y → compare2 x₁ y  } ) k
+        ( \ t x1 -> check2 x1 x  ≡ True)
+     lemma1 with compare2 k k | putTest1Lemma2 k
+     ... | EQ | refl with compare2 x x | putTest1Lemma2 x
+     ...              | EQ | refl = refl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTreeProof.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,34 @@
+redBlackInSomeState : { m : Level } (a : Set Level.zero) (n : Maybe (Node a @$\mathbb{N}$@)) {t : Set m} @$\rightarrow$@ RedBlackTree {Level.zero} {m} {t} a @$\mathbb{N}$@
+redBlackInSomeState {m} a n {t} = record { root = n ; nodeStack = emptySingleLinkedStack ; compare = compare2 }
+
+putTest1 :{ m : Level } (n : Maybe (Node @$\mathbb{N}$@ @$\mathbb{N}$@))
+         @$\rightarrow$@ (k : @$\mathbb{N}$@) (x : @$\mathbb{N}$@)
+         @$\rightarrow$@ putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (redBlackInSomeState {_} @$\mathbb{N}$@ n {Set Level.zero}) k x
+         (\ t @$\rightarrow$@ getRedBlackTree t k (\ t x1 @$\rightarrow$@ check2 x1 x  @$\equiv$@ True))
+putTest1 n k x with n
+...  | Just n1 = lemma2 ( record { top = Nothing } )
+   where
+     lemma2 : (s : SingleLinkedStack (Node @$\mathbb{N}$@ @$\mathbb{N}$@) ) @$\rightarrow$@ putTree1 (record { root = Just n1 ; nodeStack = s ; compare = compare2 }) k x (@$\lambda$@ t @$\rightarrow$@
+         GetRedBlackTree.checkNode t k (@$\lambda$@ t@$\_{1}$@ x1 @$\rightarrow$@ check2 x1 x @$\equiv$@ True) (root t))
+     lemma2 s with compare2 k (key n1)
+     ... |  EQ = lemma3 {!!}
+        where
+           lemma3 : compare2 k (key n1) @$\equiv$@  EQ @$\rightarrow$@ getRedBlackTree {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} {Set Level.zero} ( record {  root = Just ( record {
+               key   = key n1 ; value = x ; right = right n1 ; left  = left n1 ; color = Black
+               } ) ; nodeStack = s ; compare = @$\lambda$@ x@$\_{1}$@ y @$\rightarrow$@ compare2 x@$\_{1}$@ y  } ) k ( \ t x1 @$\rightarrow$@ check2 x1 x  @$\equiv$@ True)
+           lemma3 eq with compare2 x x | putTest1Lemma2 x
+           ... | EQ | refl with compare2 k (key n1)  | eq
+           ...              | EQ | refl with compare2 x x | putTest1Lemma2 x
+           ...                    | EQ | refl = refl
+     ... |  GT = {!!}
+     ... |  LT = {!!}
+
+...  | Nothing =  lemma1
+   where
+     lemma1 : getRedBlackTree {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} {Set Level.zero} ( record {  root = Just ( record {
+               key   = k ; value = x ; right = Nothing ; left  = Nothing ; color = Red
+        } ) ; nodeStack = record { top = Nothing } ; compare = @$\lambda$@ x@$\_{1}$@ y @$\rightarrow$@ compare2 x@$\_{1}$@ y  } ) k
+        ( \ t x1 @$\rightarrow$@ check2 x1 x  @$\equiv$@ True)
+     lemma1 with compare2 k k | putTest1Lemma2 k
+     ... | EQ | refl with compare2 x x | putTest1Lemma2 x
+     ...              | EQ | refl = refl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTreeTest.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,6 @@
+test31 = putTree1 {_} {_} {ℕ} {ℕ} (createEmptyRedBlackTreeℕ ℕ ) 1 1
+$ \t -> putTree1 t 2 2
+$ \t -> putTree1 t 3 3
+$ \t -> putTree1 t 4 4
+$ \t -> getRedBlackTree t 4
+$ \t x -> x
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTreeTest.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,6 @@
+test31 = putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@ ) 1 1
+$ \t @$\rightarrow$@ putTree1 t 2 2
+$ \t @$\rightarrow$@ putTree1 t 3 3
+$ \t @$\rightarrow$@ putTree1 t 4 4
+$ \t @$\rightarrow$@ getRedBlackTree t 4
+$ \t x @$\rightarrow$@ x
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTypeClass.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+record Eq (A : Set) : Set where
+  field
+    _==_ : A -> A -> Bool
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaTypeClass.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+record Eq (A : Set) : Set where
+  field
+    _==_ : A @$\rightarrow$@ A @$\rightarrow$@ Bool
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaWhere.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+f : Int -> Int -> Int
+f a b c = (t a) + (t b) + (t c)
+  where
+    t x = x + x + x
+
+f' : Int -> Int -> Int
+f' a b c = (a + a + a) + (b + b + b) + (c + c + c)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/AgdaWhere.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+f : Int @$\rightarrow$@ Int @$\rightarrow$@ Int
+f a b c = (t a) + (t b) + (t c)
+  where
+    t x = x + x + x
+
+f' : Int @$\rightarrow$@ Int @$\rightarrow$@ Int
+f' a b c = (a + a + a) + (b + b + b) + (c + c + c)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/CodeSegment.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+data CodeSegment {l1 l2 : Level} (I : Set l1) (O : Set l2) : Set (l ⊔ l1 ⊔ l2) where
+  cs : (I -> O) -> CodeSegment I O
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/CodeSegment.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+data CodeSegment {l1 l2 : Level} (I : Set l1) (O : Set l2) : Set (l @$\sqcup$@ l1 @$\sqcup$@ l2) where
+  cs : (I @$\rightarrow$@ O) @$\rightarrow$@ CodeSegment I O
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/CodeSegments.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,12 @@
+cs2 : CodeSegment ds1 ds1
+cs2 = cs id
+
+cs1 : CodeSegment ds1 ds1
+cs1 = cs (\d -> goto cs2 d)
+
+cs0 : CodeSegment ds0 ds1
+cs0 = cs (\d -> goto cs1 (record {c = (ds0.a d) + (ds0.b d)}))
+
+main : ds1
+main = goto cs0 (record {a = 100 ; b = 50})
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/CodeSegments.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,12 @@
+cs2 : CodeSegment ds1 ds1
+cs2 = cs id
+
+cs1 : CodeSegment ds1 ds1
+cs1 = cs (\d @$\rightarrow$@ goto cs2 d)
+
+cs0 : CodeSegment ds0 ds1
+cs0 = cs (\d @$\rightarrow$@ goto cs1 (record {c = (ds0.a d) + (ds0.b d)}))
+
+main : ds1
+main = goto cs0 (record {a = 100 ; b = 50})
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/DataSegment.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+record ds0 : Set where
+  field
+    a : Int
+    b : Int
+
+record ds1 : Set where
+  field
+    c : Int
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/DataSegment.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+record ds0 : Set where
+  field
+    a : Int
+    b : Int
+
+record ds1 : Set where
+  field
+    c : Int
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Equiv.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,1 @@
+data _≡_ {a} {A : Set a} (x : A) : A → Set a where
  refl : x ≡ x
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Equiv.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,1 @@
+data _@$\equiv$@_ {a} {A : Set a} (x : A) : A @$\rightarrow$@ Set a where
  refl : x @$\equiv$@ x
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Exec.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+exec : {l1 l2 : Level} {I : Set l1} {O : Set l2}
+       {{_ : DataSegment I}} {{_ : DataSegment O}}
+       -> CodeSegment I O -> Context -> Context
+exec {l} {{i}} {{o}}  (cs b) c = set o c (b (get i c))
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Exec.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+exec : {l1 l2 : Level} {I : Set l1} {O : Set l2}
+       {{_ : DataSegment I}} {{_ : DataSegment O}}
+       @$\rightarrow$@ CodeSegment I O @$\rightarrow$@ Context @$\rightarrow$@ Context
+exec {l} {{i}} {{o}}  (cs b) c = set o c (b (get i c))
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Goto.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+goto : {l1 l2 : Level} {I : Set l1} {O : Set l2}
+   -> CodeSegment I O -> I -> O
+goto (cs b) i = b i
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Goto.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+goto : {l1 l2 : Level} {I : Set l1} {O : Set l2}
+   @$\rightarrow$@ CodeSegment I O @$\rightarrow$@ I @$\rightarrow$@ O
+goto (cs b) i = b i
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Maybe.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+data Maybe {a} (A : Set a) : Set a where
+  just    : (x : A) -> Maybe A
+  nothing : Maybe A
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Maybe.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+data Maybe {a} (A : Set a) : Set a where
+  just    : (x : A) @$\rightarrow$@ Maybe A
+  nothing : Maybe A
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/MetaCodeSegment.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+data CodeSegment {l1 l2 : Level} (A : Set l1) (B : Set l2) : Set (l ⊔ l1 ⊔ l2) where
+  cs : {{_ : DataSegment A}} {{_ : DataSegment B}}
+        -> (A -> B) -> CodeSegment A B
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/MetaCodeSegment.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+data CodeSegment {l1 l2 : Level} (A : Set l1) (B : Set l2) : Set (l @$\sqcup$@ l1 @$\sqcup$@ l2) where
+  cs : {{_ : DataSegment A}} {{_ : DataSegment B}}
+        @$\rightarrow$@ (A @$\rightarrow$@ B) @$\rightarrow$@ CodeSegment A B
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/MetaDataSegment.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+module subtype {l : Level} (Context : Set l) where
+
+record DataSegment {ll : Level} (A : Set ll) : Set (l ⊔ ll) where
+  field
+    get : Context -> A
+    set : Context -> A -> Context
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/MetaDataSegment.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+module subtype {l : Level} (Context : Set l) where
+
+record DataSegment {ll : Level} (A : Set ll) : Set (l @$\sqcup$@ ll) where
+  field
+    get : Context @$\rightarrow$@ A
+    set : Context @$\rightarrow$@ A @$\rightarrow$@ Context
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/MetaMetaCodeSegment.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,29 @@
+-- meta level
+liftContext : {X Y : Set} {{_ : N.DataSegment X}} {{_ : N.DataSegment Y}} -> N.CodeSegment X Y -> N.CodeSegment Context Context
+liftContext {{x}} {{y}} (N.cs f) = N.cs (\c -> N.DataSegment.set y c (f (N.DataSegment.get x c)))
+
+liftMeta : {X Y : Set} {{_ : M.DataSegment X}} {{_ : M.DataSegment Y}} -> N.CodeSegment X Y -> M.CodeSegment X Y
+liftMeta (N.cs f) = M.cs f
+
+gotoMeta : {I O : Set} {{_ : N.DataSegment I}} {{_ : N.DataSegment O}} -> M.CodeSegment Meta Meta -> N.CodeSegment I O -> Meta -> Meta
+gotoMeta mCode code m = M.exec mCode (record m {next = (liftContext code)})
+
+push : M.CodeSegment Meta Meta
+push = M.cs (\m -> M.exec (liftMeta (Meta.next m)) (record m {c' = Context.c (Meta.context m)}))
+
+-- normal level
+
+cs2 : N.CodeSegment ds1 ds1
+cs2 = N.cs id
+
+cs1 : N.CodeSegment ds1 ds1
+cs1 = N.cs (\d -> N.goto cs2 d)
+
+cs0 : N.CodeSegment ds0 ds1
+cs0 = N.cs (\d -> N.goto cs1 (record {c = (ds0.a d) + (ds0.b d)}))
+
+-- meta level (with extended normal)
+main : Meta
+main = gotoMeta push cs0 (record {context = (record {a = 100 ; b = 50 ; c = 70}) ; c' = 0 ; next = (N.cs id)})
+-- record {context = record {a = 100 ; b = 50 ; c = 150} ; c' = 70 ; next = (N.cs id)}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/MetaMetaCodeSegment.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,29 @@
+-- meta level
+liftContext : {X Y : Set} {{_ : N.DataSegment X}} {{_ : N.DataSegment Y}} @$\rightarrow$@ N.CodeSegment X Y @$\rightarrow$@ N.CodeSegment Context Context
+liftContext {{x}} {{y}} (N.cs f) = N.cs (\c @$\rightarrow$@ N.DataSegment.set y c (f (N.DataSegment.get x c)))
+
+liftMeta : {X Y : Set} {{_ : M.DataSegment X}} {{_ : M.DataSegment Y}} @$\rightarrow$@ N.CodeSegment X Y @$\rightarrow$@ M.CodeSegment X Y
+liftMeta (N.cs f) = M.cs f
+
+gotoMeta : {I O : Set} {{_ : N.DataSegment I}} {{_ : N.DataSegment O}} @$\rightarrow$@ M.CodeSegment Meta Meta @$\rightarrow$@ N.CodeSegment I O @$\rightarrow$@ Meta @$\rightarrow$@ Meta
+gotoMeta mCode code m = M.exec mCode (record m {next = (liftContext code)})
+
+push : M.CodeSegment Meta Meta
+push = M.cs (\m @$\rightarrow$@ M.exec (liftMeta (Meta.next m)) (record m {c' = Context.c (Meta.context m)}))
+
+-- normal level
+
+cs2 : N.CodeSegment ds1 ds1
+cs2 = N.cs id
+
+cs1 : N.CodeSegment ds1 ds1
+cs1 = N.cs (\d @$\rightarrow$@ N.goto cs2 d)
+
+cs0 : N.CodeSegment ds0 ds1
+cs0 = N.cs (\d @$\rightarrow$@ N.goto cs1 (record {c = (ds0.a d) + (ds0.b d)}))
+
+-- meta level (with extended normal)
+main : Meta
+main = gotoMeta push cs0 (record {context = (record {a = 100 ; b = 50 ; c = 70}) ; c' = 0 ; next = (N.cs id)})
+-- record {context = record {a = 100 ; b = 50 ; c = 150} ; c' = 70 ; next = (N.cs id)}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/MetaMetaDataSegment.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,12 @@
+-- 上で各 DataSegement の定義を行なっているとする
+open import subtype Context as N    -- Meta Datasegment を定義
+
+-- Meta DataSegment を持つ Meta Meta DataSegment を定義できる
+record Meta : Set where
+  field
+    context : Context
+    c'      : Int
+    next    : N.CodeSegment Context Context
+
+open import subtype Meta as M
+-- 以下よりメタメタレベルのプログラムを記述できる
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/MetaMetaDataSegment.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,12 @@
+-- 上で各 DataSegement の定義を行なっているとする
+open import subtype Context as N    -- Meta Datasegment を定義
+
+-- Meta DataSegment を持つ Meta Meta DataSegment を定義できる
+record Meta : Set where
+  field
+    context : Context
+    c'      : Int
+    next    : N.CodeSegment Context Context
+
+open import subtype Meta as M
+-- 以下よりメタメタレベルのプログラムを記述できる
Binary file src/Nat.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/NatAdd.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,6 @@
+open import nat
+module nat_add where
+ 
+_+_ : Nat -> Nat -> Nat
+O + m     = m
+(S n) + m = S (n + m)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/NatAdd.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,6 @@
+open import nat
+module nat_add where
+ 
+_+_ : Nat @$\rightarrow$@ Nat @$\rightarrow$@ Nat
+O + m     = m
+(S n) + m = S (n + m)
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/NatAddSym.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,12 @@
+open import Relation.Binary.PropositionalEquality
+open import nat
+open import nat_add
+open ≡-Reasoning
+
+module nat_add_sym where
+
+addSym : (n m : Nat) -> n + m ≡ m + n
+addSym O       O   = refl
+addSym O    (S m)  = cong S (addSym O m)
+addSym (S n)   O   = cong S (addSym n O) 
+addSym (S n) (S m) = {!!} -- 後述
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/NatAddSym.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,12 @@
+open import Relation.Binary.PropositionalEquality
+open import nat
+open import nat_add
+open @$\equiv$@-Reasoning
+
+module nat_add_sym where
+
+addSym : (n m : Nat) @$\rightarrow$@ n + m @$\equiv$@ m + n
+addSym O       O   = refl
+addSym O    (S m)  = cong S (addSym O m)
+addSym (S n)   O   = cong S (addSym n O) 
+addSym (S n) (S m) = {!!} -- 後述
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/PushPopType.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,9 @@
+pushOnce : Meta -> Meta
+pushOnce m = M.exec pushSingleLinkedStackCS m
+
+popOnce : Meta -> Meta
+popOnce m = M.exec popSingleLinkedStackCS m
+
+push-pop-type : Meta -> Set₁
+push-pop-type meta =
+    M.exec (M.csComp  (M.cs popOnce) (M.cs pushOnce)) meta ≡ meta
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/PushPopType.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,9 @@
+pushOnce : Meta @$\rightarrow$@ Meta
+pushOnce m = M.exec pushSingleLinkedStackCS m
+
+popOnce : Meta @$\rightarrow$@ Meta
+popOnce m = M.exec popSingleLinkedStackCS m
+
+push-pop-type : Meta @$\rightarrow$@ Set@$\_{1}$@
+push-pop-type meta =
+    M.exec (M.csComp  (M.cs popOnce) (M.cs pushOnce)) meta @$\equiv$@ meta
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Reasoning.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,21 @@
+open import Relation.Binary.PropositionalEquality
+open import nat
+open import nat_add
+open ≡-Reasoning
+
+module nat_add_sym_reasoning where
+
+addToRight : (n m : Nat) -> S (n + m) ≡ n + (S m)
+addToRight O m     = refl
+addToRight (S n) m = cong S (addToRight n m)
+
+addSym : (n m : Nat) -> n + m ≡ m + n
+addSym O       O   = refl
+addSym O    (S m)  = cong S (addSym O m)
+addSym (S n)   O   = cong S (addSym n O)
+addSym (S n) (S m) = begin
+  (S n) + (S m)  ≡⟨ refl ⟩
+  S (n + S m)    ≡⟨ cong S (addSym n (S m)) ⟩
+  S ((S m) + n)  ≡⟨ addToRight (S m) n ⟩
+  S (m + S n)    ≡⟨ refl ⟩
+  (S m) + (S n)  ∎
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Reasoning.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,21 @@
+open import Relation.Binary.PropositionalEquality
+open import nat
+open import nat_add
+open @$\equiv$@-Reasoning
+
+module nat_add_sym_reasoning where
+
+addToRight : (n m : Nat) @$\rightarrow$@ S (n + m) @$\equiv$@ n + (S m)
+addToRight O m     = refl
+addToRight (S n) m = cong S (addToRight n m)
+
+addSym : (n m : Nat) @$\rightarrow$@ n + m @$\equiv$@ m + n
+addSym O       O   = refl
+addSym O    (S m)  = cong S (addSym O m)
+addSym (S n)   O   = cong S (addSym n O)
+addSym (S n) (S m) = begin
+  (S n) + (S m)  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  S (n + S m)    @$\equiv$@@$\langle$@ cong S (addSym n (S m)) @$\rangle$@
+  S ((S m) + n)  @$\equiv$@@$\langle$@ addToRight (S m) n @$\rangle$@
+  S (m + S n)    @$\equiv$@@$\langle$@ refl @$\rangle$@
+  (S m) + (S n)  @$\blacksquare$@
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/RedBlackTree.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,231 @@
+module RedBlackTree where
+
+open import stack
+open import Level hiding (zero)
+record TreeMethods {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.⊔ n) where
+  field
+    putImpl : treeImpl -> a -> (treeImpl -> t) -> t
+    getImpl  : treeImpl -> (treeImpl -> Maybe a -> t) -> t
+open TreeMethods
+
+record Tree  {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.⊔ n) where
+  field
+    tree : treeImpl
+    treeMethods : TreeMethods {n} {m} {a} {t} treeImpl
+  putTree : a -> (Tree treeImpl -> t) -> t
+  putTree d next = putImpl (treeMethods ) tree d (\t1 -> next (record {tree = t1 ; treeMethods = treeMethods} ))
+  getTree : (Tree treeImpl -> Maybe a -> t) -> t
+  getTree next = getImpl (treeMethods ) tree (\t1 d -> next (record {tree = t1 ; treeMethods = treeMethods} ) d )
+
+open Tree
+
+data Color {n : Level } : Set n where
+  Red   : Color
+  Black : Color
+
+data CompareResult {n : Level } : Set n where
+  LT : CompareResult
+  GT : CompareResult
+  EQ : CompareResult
+
+record Node {n : Level } (a k : Set n) : Set n where
+  inductive
+  field
+    key   : k
+    value : a
+    right : Maybe (Node a k)
+    left  : Maybe (Node a k)
+    color : Color {n}
+open Node
+
+record RedBlackTree {n m : Level } {t : Set m} (a k : Set n) : Set (m Level.⊔ n) where
+  field
+    root : Maybe (Node a k)
+    nodeStack : SingleLinkedStack  (Node a k)
+    compare : k -> k -> CompareResult {n}
+
+open RedBlackTree
+
+open SingleLinkedStack
+
+--
+-- put new node at parent node, and rebuild tree to the top
+--
+{-# TERMINATING #-}   -- https://agda.readthedocs.io/en/v2.5.3/language/termination-checking.html
+replaceNode : {n m : Level } {t : Set m } {a k : Set n} -> RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node a k) ->  Node a k -> (RedBlackTree {n} {m} {t} a k -> t) -> t
+replaceNode {n} {m} {t} {a} {k} tree s n0 next = popSingleLinkedStack s (
+      \s parent -> replaceNode1 s parent)
+        where
+          replaceNode1 : SingleLinkedStack (Node a k) -> Maybe ( Node a k ) -> t 
+          replaceNode1 s Nothing = next ( record tree { root = Just (record n0 { color = Black}) } )
+          replaceNode1 s (Just n1) with compare tree (key n1) (key n0)
+          ... | EQ =  replaceNode tree s ( record n1 { value = value n0 ; left = left n0 ; right = right n0 } ) next
+          ... | GT =  replaceNode tree s ( record n1 { left = Just n0 } ) next
+          ... | LT =  replaceNode tree s ( record n1 { right = Just n0 } ) next
+
+
+rotateRight : {n m : Level } {t : Set m } {a k : Set n} -> RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node  a k) -> Maybe (Node a k) -> Maybe (Node a k) ->
+  (RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node  a k) -> Maybe (Node a k) -> Maybe (Node a k) -> t) -> t
+rotateRight {n} {m} {t} {a} {k}  tree s n0 parent rotateNext = getSingleLinkedStack s (\ s n0 -> rotateRight1 tree s n0 parent rotateNext)
+  where
+        rotateRight1 : {n m : Level } {t : Set m } {a k : Set n} -> RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node  a k)  -> Maybe (Node a k) -> Maybe (Node a k) -> 
+          (RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node  a k)  -> Maybe (Node a k) -> Maybe (Node a k) -> t) -> t
+        rotateRight1 {n} {m} {t} {a} {k}  tree s n0 parent rotateNext with n0
+        ... | Nothing  = rotateNext tree s Nothing n0 
+        ... | Just n1 with parent
+        ...           | Nothing = rotateNext tree s (Just n1 ) n0
+        ...           | Just parent1 with left parent1
+        ...                | Nothing = rotateNext tree s (Just n1) Nothing 
+        ...                | Just leftParent with compare tree (key n1) (key leftParent)
+        ...                                    | EQ = rotateNext tree s (Just n1) parent 
+        ...                                    | _ = rotateNext tree s (Just n1) parent 
+
+
+rotateLeft : {n m : Level } {t : Set m } {a k : Set n} -> RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node  a k) -> Maybe (Node a k) -> Maybe (Node a k) ->
+  (RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node  a k) -> Maybe (Node a k) -> Maybe (Node a k) ->  t) -> t
+rotateLeft {n} {m} {t} {a} {k}  tree s n0 parent rotateNext = getSingleLinkedStack s (\ s n0 -> rotateLeft1 tree s n0 parent rotateNext)
+  where
+        rotateLeft1 : {n m : Level } {t : Set m } {a k : Set n} -> RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node  a k) -> Maybe (Node a k) -> Maybe (Node a k) -> 
+          (RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node  a k) -> Maybe (Node a k) -> Maybe (Node a k) -> t) -> t
+        rotateLeft1 {n} {m} {t} {a} {k}  tree s n0 parent rotateNext with n0
+        ... | Nothing  = rotateNext tree s Nothing n0 
+        ... | Just n1 with parent
+        ...           | Nothing = rotateNext tree s (Just n1) Nothing 
+        ...           | Just parent1 with right parent1
+        ...                | Nothing = rotateNext tree s (Just n1) Nothing 
+        ...                | Just rightParent with compare tree (key n1) (key rightParent)
+        ...                                    | EQ = rotateNext tree s (Just n1) parent 
+        ...                                    | _ = rotateNext tree s (Just n1) parent 
+
+{-# TERMINATING #-}
+insertCase5 : {n m : Level } {t : Set m } {a k : Set n} -> RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node a k) -> Maybe (Node a k) -> Node a k -> Node a k -> (RedBlackTree {n} {m} {t} a k -> t) -> t
+insertCase5 {n} {m} {t} {a} {k}  tree s n0 parent grandParent next = pop2SingleLinkedStack s (\ s parent grandParent -> insertCase51 tree s n0 parent grandParent next)
+  where
+    insertCase51 : {n m : Level } {t : Set m } {a k : Set n} -> RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node a k) -> Maybe (Node a k) -> Maybe (Node a k) -> Maybe (Node a k) -> (RedBlackTree {n} {m} {t} a k -> t) -> t
+    insertCase51 {n} {m} {t} {a} {k}  tree s n0 parent grandParent next with n0
+    ...     | Nothing = next tree
+    ...     | Just n1  with  parent | grandParent
+    ...                 | Nothing | _  = next tree
+    ...                 | _ | Nothing  = next tree
+    ...                 | Just parent1 | Just grandParent1 with left parent1 | left grandParent1
+    ...                                                     | Nothing | _  = next tree
+    ...                                                     | _ | Nothing  = next tree
+    ...                                                     | Just leftParent1 | Just leftGrandParent1
+      with compare tree (key n1) (key leftParent1) | compare tree (key leftParent1) (key leftGrandParent1)
+    ...     | EQ | EQ = rotateRight tree s n0 parent 
+                 (\ tree s n0 parent -> insertCase5 tree s n0 parent1 grandParent1 next)
+    ...     | _ | _ = rotateLeft tree s n0 parent 
+                 (\ tree s n0 parent -> insertCase5 tree s n0 parent1 grandParent1 next)
+
+insertCase4 : {n m : Level } {t : Set m } {a k : Set n} -> RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node a k) -> Node a k -> Node a k -> Node a k -> (RedBlackTree {n} {m} {t} a k -> t) -> t
+insertCase4 {n} {m} {t} {a} {k}  tree s n0 parent grandParent next
+       with  (right parent) | (left grandParent)
+...    | Nothing | _ = insertCase5 tree s (Just n0) parent grandParent next
+...    | _ | Nothing = insertCase5 tree s (Just n0) parent grandParent next       
+...    | Just rightParent | Just leftGrandParent with compare tree (key n0) (key rightParent) | compare tree (key parent) (key leftGrandParent)
+...                                              | EQ | EQ = popSingleLinkedStack s (\ s n1 -> rotateLeft tree s (left n0) (Just grandParent)
+   (\ tree s n0 parent -> insertCase5 tree s n0 rightParent grandParent next))
+...                                              | _ | _  = insertCase41 tree s n0 parent grandParent next
+  where
+    insertCase41 : {n m : Level } {t : Set m } {a k : Set n} -> RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node a k) -> Node a k -> Node a k -> Node a k -> (RedBlackTree {n} {m} {t} a k -> t) -> t
+    insertCase41 {n} {m} {t} {a} {k}  tree s n0 parent grandParent next
+                 with  (left parent) | (right grandParent)       
+    ...    | Nothing | _ = insertCase5 tree s (Just n0) parent grandParent next
+    ...    | _ | Nothing = insertCase5 tree s (Just n0) parent grandParent next
+    ...    | Just leftParent | Just rightGrandParent with compare tree (key n0) (key leftParent) | compare tree (key parent) (key rightGrandParent)
+    ...                                              | EQ | EQ = popSingleLinkedStack s (\ s n1 -> rotateRight tree s (right n0) (Just grandParent)
+       (\ tree s n0 parent -> insertCase5 tree s n0 leftParent grandParent next))
+    ...                                              | _ | _  = insertCase5 tree s (Just n0) parent grandParent next
+
+colorNode : {n : Level } {a k : Set n}  -> Node a k -> Color  -> Node a k
+colorNode old c = record old { color = c }
+
+{-# TERMINATING #-}
+insertNode : {n m : Level } {t : Set m } {a k : Set n} -> RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node a k) -> Node a k -> (RedBlackTree {n} {m} {t} a k -> t) -> t
+insertNode {n} {m} {t} {a} {k}  tree s n0 next = get2SingleLinkedStack s (insertCase1 n0)
+   where
+    insertCase1 : Node a k -> SingleLinkedStack (Node a k) -> Maybe (Node a k) -> Maybe (Node a k) -> t    -- placed here to allow mutual recursion
+          -- http://agda.readthedocs.io/en/v2.5.2/language/mutual-recursion.html
+    insertCase3 : SingleLinkedStack (Node a k) -> Node a k -> Node a k -> Node a k -> t
+    insertCase3 s n0 parent grandParent with left grandParent | right grandParent
+    ... | Nothing | Nothing = insertCase4 tree s n0 parent grandParent next
+    ... | Nothing | Just uncle  = insertCase4 tree s n0 parent grandParent next
+    ... | Just uncle | _  with compare tree ( key uncle ) ( key parent )
+    ...                   | EQ =  insertCase4 tree s n0 parent grandParent next
+    ...                   | _ with color uncle
+    ...                           | Red = pop2SingleLinkedStack s ( \s p0 p1 -> insertCase1  (
+           record grandParent { color = Red ; left = Just ( record parent { color = Black } )  ; right = Just ( record uncle { color = Black } ) }) s p0 p1 )
+    ...                           | Black = insertCase4 tree s n0 parent grandParent next
+    insertCase2 : SingleLinkedStack (Node a k) -> Node a k -> Node a k -> Node a k -> t
+    insertCase2 s n0 parent grandParent with color parent
+    ... | Black = replaceNode tree s n0 next
+    ... | Red =   insertCase3 s n0 parent grandParent
+    insertCase1 n0 s Nothing Nothing = next tree
+    insertCase1 n0 s Nothing (Just grandParent) = next tree
+    insertCase1 n0 s (Just parent) Nothing = replaceNode tree s (colorNode n0 Black) next
+    insertCase1 n0 s (Just parent) (Just grandParent) = insertCase2 s n0 parent grandParent
+
+----
+-- find node potition to insert or to delete, the path will be in the stack
+-- 
+findNode : {n m : Level } {a k : Set n} {t : Set m} -> RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node a k) -> (Node a k) -> (Node a k) -> (RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node a k) -> Node a k -> t) -> t
+findNode {n} {m} {a} {k}  {t} tree s n0 n1 next = pushSingleLinkedStack s n1 (\ s -> findNode1 s n1)
+  where
+    findNode2 : SingleLinkedStack (Node a k) -> (Maybe (Node a k)) -> t
+    findNode2 s Nothing = next tree s n0
+    findNode2 s (Just n) = findNode tree s n0 n next
+    findNode1 : SingleLinkedStack (Node a k) -> (Node a k)  -> t
+    findNode1 s n1 with (compare tree (key n0) (key n1))
+    ...                                | EQ = popSingleLinkedStack s ( \s _ -> next tree s (record n1 { key = key n1 ; value = value n0 } ) )
+    ...                                | GT = findNode2 s (right n1)
+    ...                                | LT = findNode2 s (left n1)
+
+
+leafNode : {n : Level } {a k : Set n}  -> k -> a -> Node a k
+leafNode k1 value = record {
+    key   = k1 ;
+    value = value ;
+    right = Nothing ;
+    left  = Nothing ;
+    color = Red
+  }
+
+putRedBlackTree : {n m : Level } {a k : Set n} {t : Set m} -> RedBlackTree {n} {m} {t} a k -> k -> a -> (RedBlackTree {n} {m} {t} a k -> t) -> t
+putRedBlackTree {n} {m} {a} {k}  {t} tree k1 value next with (root tree)
+...                                | Nothing = next (record tree {root = Just (leafNode k1 value) })
+...                                | Just n2  = clearSingleLinkedStack (nodeStack tree) (\ s -> findNode tree s (leafNode k1 value) n2 (\ tree1 s n1 -> insertNode tree1 s n1 next))
+
+getRedBlackTree : {n m : Level } {a k : Set n} {t : Set m} -> RedBlackTree {n} {m} {t} a k -> k -> (RedBlackTree {n} {m} {t} a k -> (Maybe (Node a k)) -> t) -> t
+getRedBlackTree {_} {_} {a} {k} {t} tree k1 cs = checkNode (root tree)
+  module GetRedBlackTree where                     -- http://agda.readthedocs.io/en/v2.5.2/language/let-and-where.html
+    search : Node a k -> t
+    checkNode : Maybe (Node a k) -> t
+    checkNode Nothing = cs tree Nothing
+    checkNode (Just n) = search n
+    search n with compare tree k1 (key n) 
+    search n | LT = checkNode (left n)
+    search n | GT = checkNode (right n)
+    search n | EQ = cs tree (Just n)
+
+open import Data.Nat hiding (compare)
+
+compareℕ :  ℕ → ℕ → CompareResult {Level.zero}
+compareℕ x y with Data.Nat.compare x y
+... | less _ _ = LT
+... | equal _ = EQ
+... | greater _ _ = GT
+
+compare2 : (x y : ℕ ) -> CompareResult {Level.zero}
+compare2 zero zero = EQ
+compare2 (suc _) zero = GT
+compare2  zero (suc _) = LT
+compare2  (suc x) (suc y) = compare2 x y
+
+
+createEmptyRedBlackTreeℕ : { m : Level } (a : Set Level.zero) {t : Set m} -> RedBlackTree {Level.zero} {m} {t} a ℕ 
+createEmptyRedBlackTreeℕ  {m} a {t} = record {
+        root = Nothing
+     ;  nodeStack = emptySingleLinkedStack
+     ;  compare = compare2
+   }
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/RedBlackTree.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,231 @@
+module RedBlackTree where
+
+open import stack
+open import Level hiding (zero)
+record TreeMethods {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.@$\sqcup$@ n) where
+  field
+    putImpl : treeImpl @$\rightarrow$@ a @$\rightarrow$@ (treeImpl @$\rightarrow$@ t) @$\rightarrow$@ t
+    getImpl  : treeImpl @$\rightarrow$@ (treeImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t
+open TreeMethods
+
+record Tree  {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.@$\sqcup$@ n) where
+  field
+    tree : treeImpl
+    treeMethods : TreeMethods {n} {m} {a} {t} treeImpl
+  putTree : a @$\rightarrow$@ (Tree treeImpl @$\rightarrow$@ t) @$\rightarrow$@ t
+  putTree d next = putImpl (treeMethods ) tree d (\t1 @$\rightarrow$@ next (record {tree = t1 ; treeMethods = treeMethods} ))
+  getTree : (Tree treeImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t
+  getTree next = getImpl (treeMethods ) tree (\t1 d @$\rightarrow$@ next (record {tree = t1 ; treeMethods = treeMethods} ) d )
+
+open Tree
+
+data Color {n : Level } : Set n where
+  Red   : Color
+  Black : Color
+
+data CompareResult {n : Level } : Set n where
+  LT : CompareResult
+  GT : CompareResult
+  EQ : CompareResult
+
+record Node {n : Level } (a k : Set n) : Set n where
+  inductive
+  field
+    key   : k
+    value : a
+    right : Maybe (Node a k)
+    left  : Maybe (Node a k)
+    color : Color {n}
+open Node
+
+record RedBlackTree {n m : Level } {t : Set m} (a k : Set n) : Set (m Level.@$\sqcup$@ n) where
+  field
+    root : Maybe (Node a k)
+    nodeStack : SingleLinkedStack  (Node a k)
+    compare : k @$\rightarrow$@ k @$\rightarrow$@ CompareResult {n}
+
+open RedBlackTree
+
+open SingleLinkedStack
+
+--
+-- put new node at parent node, and rebuild tree to the top
+--
+{-@$\#$@ TERMINATING @$\#$@-}   -- https://agda.readthedocs.io/en/v2.5.3/language/termination-checking.html
+replaceNode : {n m : Level } {t : Set m } {a k : Set n} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node a k) @$\rightarrow$@  Node a k @$\rightarrow$@ (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ t) @$\rightarrow$@ t
+replaceNode {n} {m} {t} {a} {k} tree s n0 next = popSingleLinkedStack s (
+      \s parent @$\rightarrow$@ replaceNode1 s parent)
+        where
+          replaceNode1 : SingleLinkedStack (Node a k) @$\rightarrow$@ Maybe ( Node a k ) @$\rightarrow$@ t 
+          replaceNode1 s Nothing = next ( record tree { root = Just (record n0 { color = Black}) } )
+          replaceNode1 s (Just n1) with compare tree (key n1) (key n0)
+          ... | EQ =  replaceNode tree s ( record n1 { value = value n0 ; left = left n0 ; right = right n0 } ) next
+          ... | GT =  replaceNode tree s ( record n1 { left = Just n0 } ) next
+          ... | LT =  replaceNode tree s ( record n1 { right = Just n0 } ) next
+
+
+rotateRight : {n m : Level } {t : Set m } {a k : Set n} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node  a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@
+  (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node  a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ t) @$\rightarrow$@ t
+rotateRight {n} {m} {t} {a} {k}  tree s n0 parent rotateNext = getSingleLinkedStack s (\ s n0 @$\rightarrow$@ rotateRight1 tree s n0 parent rotateNext)
+  where
+        rotateRight1 : {n m : Level } {t : Set m } {a k : Set n} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node  a k)  @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ 
+          (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node  a k)  @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ t) @$\rightarrow$@ t
+        rotateRight1 {n} {m} {t} {a} {k}  tree s n0 parent rotateNext with n0
+        ... | Nothing  = rotateNext tree s Nothing n0 
+        ... | Just n1 with parent
+        ...           | Nothing = rotateNext tree s (Just n1 ) n0
+        ...           | Just parent1 with left parent1
+        ...                | Nothing = rotateNext tree s (Just n1) Nothing 
+        ...                | Just leftParent with compare tree (key n1) (key leftParent)
+        ...                                    | EQ = rotateNext tree s (Just n1) parent 
+        ...                                    | _ = rotateNext tree s (Just n1) parent 
+
+
+rotateLeft : {n m : Level } {t : Set m } {a k : Set n} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node  a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@
+  (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node  a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@  t) @$\rightarrow$@ t
+rotateLeft {n} {m} {t} {a} {k}  tree s n0 parent rotateNext = getSingleLinkedStack s (\ s n0 @$\rightarrow$@ rotateLeft1 tree s n0 parent rotateNext)
+  where
+        rotateLeft1 : {n m : Level } {t : Set m } {a k : Set n} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node  a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ 
+          (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node  a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ t) @$\rightarrow$@ t
+        rotateLeft1 {n} {m} {t} {a} {k}  tree s n0 parent rotateNext with n0
+        ... | Nothing  = rotateNext tree s Nothing n0 
+        ... | Just n1 with parent
+        ...           | Nothing = rotateNext tree s (Just n1) Nothing 
+        ...           | Just parent1 with right parent1
+        ...                | Nothing = rotateNext tree s (Just n1) Nothing 
+        ...                | Just rightParent with compare tree (key n1) (key rightParent)
+        ...                                    | EQ = rotateNext tree s (Just n1) parent 
+        ...                                    | _ = rotateNext tree s (Just n1) parent 
+
+{-@$\#$@ TERMINATING @$\#$@-}
+insertCase5 : {n m : Level } {t : Set m } {a k : Set n} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ Node a k @$\rightarrow$@ Node a k @$\rightarrow$@ (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ t) @$\rightarrow$@ t
+insertCase5 {n} {m} {t} {a} {k}  tree s n0 parent grandParent next = pop2SingleLinkedStack s (\ s parent grandParent @$\rightarrow$@ insertCase51 tree s n0 parent grandParent next)
+  where
+    insertCase51 : {n m : Level } {t : Set m } {a k : Set n} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ t) @$\rightarrow$@ t
+    insertCase51 {n} {m} {t} {a} {k}  tree s n0 parent grandParent next with n0
+    ...     | Nothing = next tree
+    ...     | Just n1  with  parent | grandParent
+    ...                 | Nothing | _  = next tree
+    ...                 | _ | Nothing  = next tree
+    ...                 | Just parent1 | Just grandParent1 with left parent1 | left grandParent1
+    ...                                                     | Nothing | _  = next tree
+    ...                                                     | _ | Nothing  = next tree
+    ...                                                     | Just leftParent1 | Just leftGrandParent1
+      with compare tree (key n1) (key leftParent1) | compare tree (key leftParent1) (key leftGrandParent1)
+    ...     | EQ | EQ = rotateRight tree s n0 parent 
+                 (\ tree s n0 parent @$\rightarrow$@ insertCase5 tree s n0 parent1 grandParent1 next)
+    ...     | _ | _ = rotateLeft tree s n0 parent 
+                 (\ tree s n0 parent @$\rightarrow$@ insertCase5 tree s n0 parent1 grandParent1 next)
+
+insertCase4 : {n m : Level } {t : Set m } {a k : Set n} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node a k) @$\rightarrow$@ Node a k @$\rightarrow$@ Node a k @$\rightarrow$@ Node a k @$\rightarrow$@ (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ t) @$\rightarrow$@ t
+insertCase4 {n} {m} {t} {a} {k}  tree s n0 parent grandParent next
+       with  (right parent) | (left grandParent)
+...    | Nothing | _ = insertCase5 tree s (Just n0) parent grandParent next
+...    | _ | Nothing = insertCase5 tree s (Just n0) parent grandParent next       
+...    | Just rightParent | Just leftGrandParent with compare tree (key n0) (key rightParent) | compare tree (key parent) (key leftGrandParent)
+...                                              | EQ | EQ = popSingleLinkedStack s (\ s n1 @$\rightarrow$@ rotateLeft tree s (left n0) (Just grandParent)
+   (\ tree s n0 parent @$\rightarrow$@ insertCase5 tree s n0 rightParent grandParent next))
+...                                              | _ | _  = insertCase41 tree s n0 parent grandParent next
+  where
+    insertCase41 : {n m : Level } {t : Set m } {a k : Set n} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node a k) @$\rightarrow$@ Node a k @$\rightarrow$@ Node a k @$\rightarrow$@ Node a k @$\rightarrow$@ (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ t) @$\rightarrow$@ t
+    insertCase41 {n} {m} {t} {a} {k}  tree s n0 parent grandParent next
+                 with  (left parent) | (right grandParent)       
+    ...    | Nothing | _ = insertCase5 tree s (Just n0) parent grandParent next
+    ...    | _ | Nothing = insertCase5 tree s (Just n0) parent grandParent next
+    ...    | Just leftParent | Just rightGrandParent with compare tree (key n0) (key leftParent) | compare tree (key parent) (key rightGrandParent)
+    ...                                              | EQ | EQ = popSingleLinkedStack s (\ s n1 @$\rightarrow$@ rotateRight tree s (right n0) (Just grandParent)
+       (\ tree s n0 parent @$\rightarrow$@ insertCase5 tree s n0 leftParent grandParent next))
+    ...                                              | _ | _  = insertCase5 tree s (Just n0) parent grandParent next
+
+colorNode : {n : Level } {a k : Set n}  @$\rightarrow$@ Node a k @$\rightarrow$@ Color  @$\rightarrow$@ Node a k
+colorNode old c = record old { color = c }
+
+{-@$\#$@ TERMINATING @$\#$@-}
+insertNode : {n m : Level } {t : Set m } {a k : Set n} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node a k) @$\rightarrow$@ Node a k @$\rightarrow$@ (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ t) @$\rightarrow$@ t
+insertNode {n} {m} {t} {a} {k}  tree s n0 next = get2SingleLinkedStack s (insertCase1 n0)
+   where
+    insertCase1 : Node a k @$\rightarrow$@ SingleLinkedStack (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ Maybe (Node a k) @$\rightarrow$@ t    -- placed here to allow mutual recursion
+          -- http://agda.readthedocs.io/en/v2.5.2/language/mutual-recursion.html
+    insertCase3 : SingleLinkedStack (Node a k) @$\rightarrow$@ Node a k @$\rightarrow$@ Node a k @$\rightarrow$@ Node a k @$\rightarrow$@ t
+    insertCase3 s n0 parent grandParent with left grandParent | right grandParent
+    ... | Nothing | Nothing = insertCase4 tree s n0 parent grandParent next
+    ... | Nothing | Just uncle  = insertCase4 tree s n0 parent grandParent next
+    ... | Just uncle | _  with compare tree ( key uncle ) ( key parent )
+    ...                   | EQ =  insertCase4 tree s n0 parent grandParent next
+    ...                   | _ with color uncle
+    ...                           | Red = pop2SingleLinkedStack s ( \s p0 p1 @$\rightarrow$@ insertCase1  (
+           record grandParent { color = Red ; left = Just ( record parent { color = Black } )  ; right = Just ( record uncle { color = Black } ) }) s p0 p1 )
+    ...                           | Black = insertCase4 tree s n0 parent grandParent next
+    insertCase2 : SingleLinkedStack (Node a k) @$\rightarrow$@ Node a k @$\rightarrow$@ Node a k @$\rightarrow$@ Node a k @$\rightarrow$@ t
+    insertCase2 s n0 parent grandParent with color parent
+    ... | Black = replaceNode tree s n0 next
+    ... | Red =   insertCase3 s n0 parent grandParent
+    insertCase1 n0 s Nothing Nothing = next tree
+    insertCase1 n0 s Nothing (Just grandParent) = next tree
+    insertCase1 n0 s (Just parent) Nothing = replaceNode tree s (colorNode n0 Black) next
+    insertCase1 n0 s (Just parent) (Just grandParent) = insertCase2 s n0 parent grandParent
+
+----
+-- find node potition to insert or to delete, the path will be in the stack
+-- 
+findNode : {n m : Level } {a k : Set n} {t : Set m} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node a k) @$\rightarrow$@ (Node a k) @$\rightarrow$@ (Node a k) @$\rightarrow$@ (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node a k) @$\rightarrow$@ Node a k @$\rightarrow$@ t) @$\rightarrow$@ t
+findNode {n} {m} {a} {k}  {t} tree s n0 n1 next = pushSingleLinkedStack s n1 (\ s @$\rightarrow$@ findNode1 s n1)
+  where
+    findNode2 : SingleLinkedStack (Node a k) @$\rightarrow$@ (Maybe (Node a k)) @$\rightarrow$@ t
+    findNode2 s Nothing = next tree s n0
+    findNode2 s (Just n) = findNode tree s n0 n next
+    findNode1 : SingleLinkedStack (Node a k) @$\rightarrow$@ (Node a k)  @$\rightarrow$@ t
+    findNode1 s n1 with (compare tree (key n0) (key n1))
+    ...                                | EQ = popSingleLinkedStack s ( \s _ @$\rightarrow$@ next tree s (record n1 { key = key n1 ; value = value n0 } ) )
+    ...                                | GT = findNode2 s (right n1)
+    ...                                | LT = findNode2 s (left n1)
+
+
+leafNode : {n : Level } {a k : Set n}  @$\rightarrow$@ k @$\rightarrow$@ a @$\rightarrow$@ Node a k
+leafNode k1 value = record {
+    key   = k1 ;
+    value = value ;
+    right = Nothing ;
+    left  = Nothing ;
+    color = Red
+  }
+
+putRedBlackTree : {n m : Level } {a k : Set n} {t : Set m} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ k @$\rightarrow$@ a @$\rightarrow$@ (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ t) @$\rightarrow$@ t
+putRedBlackTree {n} {m} {a} {k}  {t} tree k1 value next with (root tree)
+...                                | Nothing = next (record tree {root = Just (leafNode k1 value) })
+...                                | Just n2  = clearSingleLinkedStack (nodeStack tree) (\ s @$\rightarrow$@ findNode tree s (leafNode k1 value) n2 (\ tree1 s n1 @$\rightarrow$@ insertNode tree1 s n1 next))
+
+getRedBlackTree : {n m : Level } {a k : Set n} {t : Set m} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ k @$\rightarrow$@ (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ (Maybe (Node a k)) @$\rightarrow$@ t) @$\rightarrow$@ t
+getRedBlackTree {_} {_} {a} {k} {t} tree k1 cs = checkNode (root tree)
+  module GetRedBlackTree where                     -- http://agda.readthedocs.io/en/v2.5.2/language/let-and-where.html
+    search : Node a k @$\rightarrow$@ t
+    checkNode : Maybe (Node a k) @$\rightarrow$@ t
+    checkNode Nothing = cs tree Nothing
+    checkNode (Just n) = search n
+    search n with compare tree k1 (key n) 
+    search n | LT = checkNode (left n)
+    search n | GT = checkNode (right n)
+    search n | EQ = cs tree (Just n)
+
+open import Data.Nat hiding (compare)
+
+compare@$\mathbb{N}$@ :  @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ CompareResult {Level.zero}
+compare@$\mathbb{N}$@ x y with Data.Nat.compare x y
+... | less _ _ = LT
+... | equal _ = EQ
+... | greater _ _ = GT
+
+compare2 : (x y : @$\mathbb{N}$@ ) @$\rightarrow$@ CompareResult {Level.zero}
+compare2 zero zero = EQ
+compare2 (suc _) zero = GT
+compare2  zero (suc _) = LT
+compare2  (suc x) (suc y) = compare2 x y
+
+
+createEmptyRedBlackTree@$\mathbb{N}$@ : { m : Level } (a : Set Level.zero) {t : Set m} @$\rightarrow$@ RedBlackTree {Level.zero} {m} {t} a @$\mathbb{N}$@ 
+createEmptyRedBlackTree@$\mathbb{N}$@  {m} a {t} = record {
+        root = Nothing
+     ;  nodeStack = emptySingleLinkedStack
+     ;  compare = compare2
+   }
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/SingleLinkedStack.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,110 @@
+#include "../context.h"
+#include "../origin_cs.h"
+#include <stdio.h>
+
+// typedef struct SingleLinkedStack {
+//     struct Element* top;
+// } SingleLinkedStack;
+
+Stack* createSingleLinkedStack(struct Context* context) {
+    struct Stack* stack = new Stack();
+    struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack();
+    stack->stack = (union Data*)singleLinkedStack;
+    singleLinkedStack->top = NULL;
+    stack->push = C_pushSingleLinkedStack;
+    stack->pop  = C_popSingleLinkedStack;
+    stack->pop2  = C_pop2SingleLinkedStack;
+    stack->get  = C_getSingleLinkedStack;
+    stack->get2  = C_get2SingleLinkedStack;
+    stack->isEmpty = C_isEmptySingleLinkedStack;
+    stack->clear = C_clearSingleLinkedStack;
+    return stack;
+}
+
+void printStack1(union Data* data) {
+    struct Node* node = &data->Element.data->Node;
+    if (node == NULL) {
+        printf("NULL");
+    } else {
+        printf("key = %d ,", node->key);
+        printStack1((union Data*)data->Element.next);
+    }
+}
+
+void printStack(union Data* data) {
+    printStack1(data);
+    printf("\n");
+}
+
+__code clearSingleLinkedStack(struct SingleLinkedStack* stack,__code next(...)) {
+    stack->top = NULL;
+    goto next(...);
+}
+
+__code pushSingleLinkedStack(struct SingleLinkedStack* stack,union Data* data, __code next(...)) {
+    Element* element = new Element();
+    element->next = stack->top;
+    element->data = data;
+    stack->top = element;
+    goto next(...);
+}
+
+__code popSingleLinkedStack(struct SingleLinkedStack* stack, __code next(union Data* data, ...)) {
+    if (stack->top) {
+        data = stack->top->data;
+        stack->top = stack->top->next;
+    } else {
+        data = NULL;
+    }
+    goto next(data, ...);
+}
+
+__code pop2SingleLinkedStack(struct SingleLinkedStack* stack, __code next(union Data* data, union Data* data1, ...)) {
+    if (stack->top) {
+        data = stack->top->data;
+        stack->top = stack->top->next;
+    } else {
+        data = NULL;
+    }
+    if (stack->top) {
+        data1 = stack->top->data;
+        stack->top = stack->top->next;
+    } else {
+        data1 = NULL;
+    }
+    goto next(data, data1, ...);
+}
+
+
+__code getSingleLinkedStack(struct SingleLinkedStack* stack, __code next(union Data* data, ...)) {
+    if (stack->top)
+        data = stack->top->data;
+    else
+        data = NULL;
+    goto next(data, ...);
+}
+
+__code get2SingleLinkedStack(struct SingleLinkedStack* stack, __code next(union Data* data, union Data* data1, ...)) {
+    if (stack->top) {
+        data = stack->top->data;
+        if (stack->top->next) {
+            data1 = stack->top->next->data;
+        } else {
+            data1 = NULL;
+        }
+    } else {
+        data = NULL;
+        data1 = NULL;
+    }
+    goto next(data, data1, ...);
+}
+
+__code isEmptySingleLinkedStack(struct SingleLinkedStack* stack, __code next(...), __code whenEmpty(...)) {
+    if (stack->top)
+        goto next(...);
+    else
+        goto whenEmpty(...);
+}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Stack.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,14 @@
+typedef struct Stack<Impl>{
+    union Data* stack;
+    union Data* data;
+    union Data* data1;
+    __code whenEmpty(...);
+    __code clear(Impl* stack,__code next(...));
+    __code push(Impl* stack,union Data* data, __code next(...));
+    __code pop(Impl* stack, __code next(union Data*, ...));
+    __code pop2(Impl* stack, union Data** data, union Data** data1, __code next(union Data**, union Data**, ...));
+    __code isEmpty(Impl* stack, __code next(...), __code whenEmpty(...));
+    __code get(Impl* stack, union Data** data, __code next(...));
+    __code get2(Impl* stack,..., __code next(...));
+    __code next(...);
+} Stack;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ThreePlusOne.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+open import Relation.Binary.PropositionalEquality
+open import nat
+open import nat_add
+
+module three_plus_one where
+
+3+1 : (S (S (S O)))  +  (S O) ≡ (S (S (S (S O))))
+3+1 = refl
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ThreePlusOne.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+open import Relation.Binary.PropositionalEquality
+open import nat
+open import nat_add
+
+module three_plus_one where
+
+3+1 : (S (S (S O)))  +  (S O) @$\equiv$@ (S (S (S (S O))))
+3+1 = refl
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-func.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
++1 : ℕ → ℕ
++1 m = suc m
+
+-- eval +1 zero
+-- return suc zero
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-func.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
++1 : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@
++1 m = suc m
+
+-- eval +1 zero
+-- return suc zero
Binary file src/agda-func.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-interpret.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,13 @@
+{-# TERMINATING #-}
+interpret : Env → Comm → Env
+interpret env Skip = env
+interpret env Abort = env
+interpret env (PComm x) = x env
+interpret env (Seq comm comm1) = interpret (interpret env comm) comm1
+interpret env (If x then else) with x env
+... | true = interpret env then
+... | false = interpret env else
+interpret env (While x comm) with x env
+... | true = interpret (interpret env comm) (While x comm)
+... | false = env
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-interpret.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,13 @@
+{-@$\#$@ TERMINATING @$\#$@-}
+interpret : Env @$\rightarrow$@ Comm @$\rightarrow$@ Env
+interpret env Skip = env
+interpret env Abort = env
+interpret env (PComm x) = x env
+interpret env (Seq comm comm1) = interpret (interpret env comm) comm1
+interpret env (If x then else) with x env
+... | true = interpret env then
+... | false = interpret env else
+interpret env (While x comm) with x env
+... | true = interpret (interpret env comm) (While x comm)
+... | false = env
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-prog.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+program : Comm
+program = 
+  Seq ( PComm (λ env → record env {varn = 10}))
+    $ Seq ( PComm (λ env → record env {vari = 0}))
+    $ While (λ env → lt zero (varn env ) )
+      (Seq (PComm (λ env → record env {vari = ((vari env) + 1)} ))
+        $ PComm (λ env → record env {varn = ((varn env) - 1)} ))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-prog.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+program : Comm
+program = 
+  Seq ( PComm (@$\lambda$@ env @$\rightarrow$@ record env {varn = 10}))
+    $ Seq ( PComm (@$\lambda$@ env @$\rightarrow$@ record env {vari = 0}))
+    $ While (@$\lambda$@ env @$\rightarrow$@ lt zero (varn env ) )
+      (Seq (PComm (@$\lambda$@ env @$\rightarrow$@ record env {vari = ((vari env) + 1)} ))
+        $ PComm (@$\lambda$@ env @$\rightarrow$@ record env {varn = ((varn env) - 1)} ))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-rule.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,27 @@
+data HTProof : Cond -> Comm -> Cond -> Set where
+  PrimRule : {bPre : Cond} -> {pcm : PrimComm} -> {bPost : Cond} ->
+             (pr : Axiom bPre pcm bPost) ->
+             HTProof bPre (PComm pcm) bPost
+  SkipRule : (b : Cond) -> HTProof b Skip b
+  AbortRule : (bPre : Cond) -> (bPost : Cond) ->
+              HTProof bPre Abort bPost
+  WeakeningRule : {bPre : Cond} -> {bPre' : Cond} -> {cm : Comm} ->
+                {bPost' : Cond} -> {bPost : Cond} ->
+                Tautology bPre bPre' ->
+                HTProof bPre' cm bPost' ->
+                Tautology bPost' bPost ->
+                HTProof bPre cm bPost
+  SeqRule : {bPre : Cond} -> {cm1 : Comm} -> {bMid : Cond} ->
+            {cm2 : Comm} -> {bPost : Cond} ->
+            HTProof bPre cm1 bMid ->
+            HTProof bMid cm2 bPost ->
+            HTProof bPre (Seq cm1 cm2) bPost
+  IfRule : {cmThen : Comm} -> {cmElse : Comm} ->
+           {bPre : Cond} -> {bPost : Cond} ->
+           {b : Cond} ->
+           HTProof (bPre /\ b) cmThen bPost ->
+           HTProof (bPre /\ neg b) cmElse bPost ->
+           HTProof bPre (If b cmThen cmElse) bPost
+  WhileRule : {cm : Comm} -> {bInv : Cond} -> {b : Cond} ->
+              HTProof (bInv /\ b) cm bInv ->
+              HTProof bInv (While b cm) (bInv /\ neg b)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-rule.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,27 @@
+data HTProof : Cond @$\rightarrow$@ Comm @$\rightarrow$@ Cond @$\rightarrow$@ Set where
+  PrimRule : {bPre : Cond} @$\rightarrow$@ {pcm : PrimComm} @$\rightarrow$@ {bPost : Cond} @$\rightarrow$@
+             (pr : Axiom bPre pcm bPost) @$\rightarrow$@
+             HTProof bPre (PComm pcm) bPost
+  SkipRule : (b : Cond) @$\rightarrow$@ HTProof b Skip b
+  AbortRule : (bPre : Cond) @$\rightarrow$@ (bPost : Cond) @$\rightarrow$@
+              HTProof bPre Abort bPost
+  WeakeningRule : {bPre : Cond} @$\rightarrow$@ {bPre' : Cond} @$\rightarrow$@ {cm : Comm} @$\rightarrow$@
+                {bPost' : Cond} @$\rightarrow$@ {bPost : Cond} @$\rightarrow$@
+                Tautology bPre bPre' @$\rightarrow$@
+                HTProof bPre' cm bPost' @$\rightarrow$@
+                Tautology bPost' bPost @$\rightarrow$@
+                HTProof bPre cm bPost
+  SeqRule : {bPre : Cond} @$\rightarrow$@ {cm1 : Comm} @$\rightarrow$@ {bMid : Cond} @$\rightarrow$@
+            {cm2 : Comm} @$\rightarrow$@ {bPost : Cond} @$\rightarrow$@
+            HTProof bPre cm1 bMid @$\rightarrow$@
+            HTProof bMid cm2 bPost @$\rightarrow$@
+            HTProof bPre (Seq cm1 cm2) bPost
+  IfRule : {cmThen : Comm} @$\rightarrow$@ {cmElse : Comm} @$\rightarrow$@
+           {bPre : Cond} @$\rightarrow$@ {bPost : Cond} @$\rightarrow$@
+           {b : Cond} @$\rightarrow$@
+           HTProof (bPre @$\wedge$@ b) cmThen bPost @$\rightarrow$@
+           HTProof (bPre @$\wedge$@ neg b) cmElse bPost @$\rightarrow$@
+           HTProof bPre (If b cmThen cmElse) bPost
+  WhileRule : {cm : Comm} @$\rightarrow$@ {bInv : Cond} @$\rightarrow$@ {b : Cond} @$\rightarrow$@
+              HTProof (bInv @$\wedge$@ b) cm bInv @$\rightarrow$@
+              HTProof bInv (While b cm) (bInv @$\wedge$@ neg b)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-satisfies.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,25 @@
+SemComm : Comm -> Rel State (Level.zero)
+SemComm Skip = RelOpState.deltaGlob
+SemComm Abort = RelOpState.emptyRel
+SemComm (PComm pc) = PrimSemComm pc
+SemComm (Seq c1 c2) = RelOpState.comp (SemComm c1) (SemComm c2)
+SemComm (If b c1 c2)
+  = RelOpState.union
+    (RelOpState.comp (RelOpState.delta (SemCond b))
+                     (SemComm c1))
+    (RelOpState.comp (RelOpState.delta (NotP (SemCond b)))
+                     (SemComm c2))
+SemComm (While b c)
+  = RelOpState.unionInf
+    (λ (n : $mathbb{N}$) ->
+      RelOpState.comp (RelOpState.repeat
+        n
+        (RelOpState.comp
+          (RelOpState.delta (SemCond b))
+          (SemComm c)))
+      (RelOpState.delta (NotP (SemCond b))))
+
+Satisfies : Cond -> Comm -> Cond -> Set
+Satisfies bPre cm bPost
+  = (s1 : State) -> (s2 : State) ->
+    SemCond bPre s1 -> SemComm cm s1 s2 -> SemCond bPost s2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-satisfies.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,25 @@
+SemComm : Comm @$\rightarrow$@ Rel State (Level.zero)
+SemComm Skip = RelOpState.deltaGlob
+SemComm Abort = RelOpState.emptyRel
+SemComm (PComm pc) = PrimSemComm pc
+SemComm (Seq c1 c2) = RelOpState.comp (SemComm c1) (SemComm c2)
+SemComm (If b c1 c2)
+  = RelOpState.union
+    (RelOpState.comp (RelOpState.delta (SemCond b))
+                     (SemComm c1))
+    (RelOpState.comp (RelOpState.delta (NotP (SemCond b)))
+                     (SemComm c2))
+SemComm (While b c)
+  = RelOpState.unionInf
+    (@$\lambda$@ (n : $mathbb{N}$) @$\rightarrow$@
+      RelOpState.comp (RelOpState.repeat
+        n
+        (RelOpState.comp
+          (RelOpState.delta (SemCond b))
+          (SemComm c)))
+      (RelOpState.delta (NotP (SemCond b))))
+
+Satisfies : Cond @$\rightarrow$@ Comm @$\rightarrow$@ Cond @$\rightarrow$@ Set
+Satisfies bPre cm bPost
+  = (s1 : State) @$\rightarrow$@ (s2 : State) @$\rightarrow$@
+    SemCond bPre s1 @$\rightarrow$@ SemComm cm s1 s2 @$\rightarrow$@ SemCond bPost s2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-soundness.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,66 @@
+Soundness : {bPre : Cond} -> {cm : Comm} -> {bPost : Cond} ->
+            HTProof bPre cm bPost -> Satisfies bPre cm bPost
+Soundness (PrimRule {bPre} {cm} {bPost} pr) s1 s2 q1 q2
+  = axiomValid bPre cm bPost pr s1 s2 q1 q2
+Soundness {.bPost} {.Skip} {bPost} (SkipRule .bPost) s1 s2 q1 q2
+  = substId1 State {Level.zero} {State} {s1} {s2} (proj₂ q2) (SemCond bPost) q1
+Soundness {bPre} {.Abort} {bPost} (AbortRule .bPre .bPost) s1 s2 q1 ()
+Soundness (WeakeningRule {bPre} {bPre'} {cm} {bPost'} {bPost} tautPre pr tautPost)
+          s1 s2 q1 q2
+  = let hyp : Satisfies bPre' cm bPost'
+        hyp = Soundness pr
+    in tautValid bPost' bPost tautPost s2 (hyp s1 s2 (tautValid bPre bPre' tautPre s1 q1) q2)
+Soundness (SeqRule {bPre} {cm1} {bMid} {cm2} {bPost} pr1 pr2)
+           s1 s2 q1 q2
+  = let hyp1 : Satisfies bPre cm1 bMid
+        hyp1 = Soundness pr1
+        hyp2 : Satisfies bMid cm2 bPost
+        hyp2 = Soundness pr2
+    in hyp2 (proj₁ q2) s2 (hyp1 s1 (proj₁ q2) q1 (proj₁ (proj₂ q2))) (proj₂ (proj₂ q2))
+Soundness (IfRule {cmThen} {cmElse} {bPre} {bPost} {b} pThen pElse)
+          s1 s2 q1 q2
+  = let hypThen : Satisfies (bPre /\ b) cmThen bPost
+        hypThen = Soundness pThen
+        hypElse : Satisfies (bPre /\ neg b) cmElse bPost
+        hypElse = Soundness pElse
+        rThen : RelOpState.comp (RelOpState.delta (SemCond b))
+                  (SemComm cmThen) s1 s2 -> SemCond bPost s2
+        rThen = λ h -> hypThen s1 s2 ((proj₂ (respAnd bPre b s1)) (q1 , proj₁ t1))
+          (proj₂ ((proj₂ (RelOpState.deltaRestPre (SemCond b) (SemComm cmThen) s1 s2)) h))
+        rElse : RelOpState.comp (RelOpState.delta (NotP (SemCond b)))
+                  (SemComm cmElse) s1 s2 -> SemCond bPost s2
+        rElse = λ h ->
+                  let t10 : (NotP (SemCond b) s1) × (SemComm cmElse s1 s2)
+                      t10 = proj₂ (RelOpState.deltaRestPre
+                                  (NotP (SemCond b)) (SemComm cmElse) s1 s2) h
+                  in hypElse s1 s2 (proj₂ (respAnd bPre (neg b) s1)
+                             (q1 , (proj₂ (respNeg b s1) (proj₁ t10)))) (proj₂ t10)
+    in when rThen rElse q2
+Soundness (WhileRule {cm'} {bInv} {b} pr) s1 s2 q1 q2
+  = proj₂ (respAnd bInv (neg b) s2)
+          (lem1 (proj₁ q2) s2 (proj₁ t15) , proj₂ (respNeg b s2) (proj₂ t15))
+    where
+      hyp : Satisfies (bInv /\ b) cm' bInv
+      hyp = Soundness pr
+      Rel1 : ℕ -> Rel State (Level.zero)
+      Rel1 = λ m ->
+               RelOpState.repeat
+                 m
+                 (RelOpState.comp (RelOpState.delta (SemCond b))
+                                  (SemComm cm'))
+      t15 : (Rel1 (proj₁ q2) s1 s2) × (NotP (SemCond b) s2)
+      t15 = proj₂ (RelOpState.deltaRestPost
+        (NotP (SemCond b)) (Rel1 (proj₁ q2)) s1 s2) (proj₂ q2)
+      lem1 : (m : ℕ) -> (ss2 : State) -> Rel1 m s1 ss2 -> SemCond bInv ss2
+      lem1 zero ss2 h = substId1 State (proj₂ h) (SemCond bInv) q1
+      lem1 (suc n) ss2 h
+    = let hyp2 : (z : State) -> Rel1 (proj₁ q2) s1 z ->
+                     SemCond bInv z
+              hyp2 = lem1 n
+              t22 : (SemCond b (proj₁ h)) × (SemComm cm' (proj₁ h) ss2)
+              t22 = proj₂ (RelOpState.deltaRestPre (SemCond b) (SemComm cm') (proj₁ h) ss2)
+                    (proj₂ (proj₂ h))
+              t23 : SemCond (bInv /\ b) (proj₁ h)
+              t23 = proj₂ (respAnd bInv b (proj₁ h))
+                (hyp2 (proj₁ h) (proj₁ (proj₂ h)) , proj₁ t22)
+      in hyp (proj₁ h) ss2 t23 (proj₂ t22)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-soundness.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,66 @@
+Soundness : {bPre : Cond} @$\rightarrow$@ {cm : Comm} @$\rightarrow$@ {bPost : Cond} @$\rightarrow$@
+            HTProof bPre cm bPost @$\rightarrow$@ Satisfies bPre cm bPost
+Soundness (PrimRule {bPre} {cm} {bPost} pr) s1 s2 q1 q2
+  = axiomValid bPre cm bPost pr s1 s2 q1 q2
+Soundness {.bPost} {.Skip} {bPost} (SkipRule .bPost) s1 s2 q1 q2
+  = substId1 State {Level.zero} {State} {s1} {s2} (proj@$\_{2}$@ q2) (SemCond bPost) q1
+Soundness {bPre} {.Abort} {bPost} (AbortRule .bPre .bPost) s1 s2 q1 ()
+Soundness (WeakeningRule {bPre} {bPre'} {cm} {bPost'} {bPost} tautPre pr tautPost)
+          s1 s2 q1 q2
+  = let hyp : Satisfies bPre' cm bPost'
+        hyp = Soundness pr
+    in tautValid bPost' bPost tautPost s2 (hyp s1 s2 (tautValid bPre bPre' tautPre s1 q1) q2)
+Soundness (SeqRule {bPre} {cm1} {bMid} {cm2} {bPost} pr1 pr2)
+           s1 s2 q1 q2
+  = let hyp1 : Satisfies bPre cm1 bMid
+        hyp1 = Soundness pr1
+        hyp2 : Satisfies bMid cm2 bPost
+        hyp2 = Soundness pr2
+    in hyp2 (proj@$\_{1}$@ q2) s2 (hyp1 s1 (proj@$\_{1}$@ q2) q1 (proj@$\_{1}$@ (proj@$\_{2}$@ q2))) (proj@$\_{2}$@ (proj@$\_{2}$@ q2))
+Soundness (IfRule {cmThen} {cmElse} {bPre} {bPost} {b} pThen pElse)
+          s1 s2 q1 q2
+  = let hypThen : Satisfies (bPre @$\wedge$@ b) cmThen bPost
+        hypThen = Soundness pThen
+        hypElse : Satisfies (bPre @$\wedge$@ neg b) cmElse bPost
+        hypElse = Soundness pElse
+        rThen : RelOpState.comp (RelOpState.delta (SemCond b))
+                  (SemComm cmThen) s1 s2 @$\rightarrow$@ SemCond bPost s2
+        rThen = @$\lambda$@ h @$\rightarrow$@ hypThen s1 s2 ((proj@$\_{2}$@ (respAnd bPre b s1)) (q1 , proj@$\_{1}$@ t1))
+          (proj@$\_{2}$@ ((proj@$\_{2}$@ (RelOpState.deltaRestPre (SemCond b) (SemComm cmThen) s1 s2)) h))
+        rElse : RelOpState.comp (RelOpState.delta (NotP (SemCond b)))
+                  (SemComm cmElse) s1 s2 @$\rightarrow$@ SemCond bPost s2
+        rElse = @$\lambda$@ h @$\rightarrow$@
+                  let t10 : (NotP (SemCond b) s1) @$\times$@ (SemComm cmElse s1 s2)
+                      t10 = proj@$\_{2}$@ (RelOpState.deltaRestPre
+                                  (NotP (SemCond b)) (SemComm cmElse) s1 s2) h
+                  in hypElse s1 s2 (proj@$\_{2}$@ (respAnd bPre (neg b) s1)
+                             (q1 , (proj@$\_{2}$@ (respNeg b s1) (proj@$\_{1}$@ t10)))) (proj@$\_{2}$@ t10)
+    in when rThen rElse q2
+Soundness (WhileRule {cm'} {bInv} {b} pr) s1 s2 q1 q2
+  = proj@$\_{2}$@ (respAnd bInv (neg b) s2)
+          (lem1 (proj@$\_{1}$@ q2) s2 (proj@$\_{1}$@ t15) , proj@$\_{2}$@ (respNeg b s2) (proj@$\_{2}$@ t15))
+    where
+      hyp : Satisfies (bInv @$\wedge$@ b) cm' bInv
+      hyp = Soundness pr
+      Rel1 : @$\mathbb{N}$@ @$\rightarrow$@ Rel State (Level.zero)
+      Rel1 = @$\lambda$@ m @$\rightarrow$@
+               RelOpState.repeat
+                 m
+                 (RelOpState.comp (RelOpState.delta (SemCond b))
+                                  (SemComm cm'))
+      t15 : (Rel1 (proj@$\_{1}$@ q2) s1 s2) @$\times$@ (NotP (SemCond b) s2)
+      t15 = proj@$\_{2}$@ (RelOpState.deltaRestPost
+        (NotP (SemCond b)) (Rel1 (proj@$\_{1}$@ q2)) s1 s2) (proj@$\_{2}$@ q2)
+      lem1 : (m : @$\mathbb{N}$@) @$\rightarrow$@ (ss2 : State) @$\rightarrow$@ Rel1 m s1 ss2 @$\rightarrow$@ SemCond bInv ss2
+      lem1 zero ss2 h = substId1 State (proj@$\_{2}$@ h) (SemCond bInv) q1
+      lem1 (suc n) ss2 h
+    = let hyp2 : (z : State) @$\rightarrow$@ Rel1 (proj@$\_{1}$@ q2) s1 z @$\rightarrow$@
+                     SemCond bInv z
+              hyp2 = lem1 n
+              t22 : (SemCond b (proj@$\_{1}$@ h)) @$\times$@ (SemComm cm' (proj@$\_{1}$@ h) ss2)
+              t22 = proj@$\_{2}$@ (RelOpState.deltaRestPre (SemCond b) (SemComm cm') (proj@$\_{1}$@ h) ss2)
+                    (proj@$\_{2}$@ (proj@$\_{2}$@ h))
+              t23 : SemCond (bInv @$\wedge$@ b) (proj@$\_{1}$@ h)
+              t23 = proj@$\_{2}$@ (respAnd bInv b (proj@$\_{1}$@ h))
+                (hyp2 (proj@$\_{1}$@ h) (proj@$\_{1}$@ (proj@$\_{2}$@ h)) , proj@$\_{1}$@ t22)
+      in hyp (proj@$\_{1}$@ h) ss2 t23 (proj@$\_{2}$@ t22)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-term.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,12 @@
+loopP' : {l : Level} {t : Set l} → Envc → (exit : Envc → t) → t
+loopP' record { c10 = c10 ; varn = zero ; vari = vari } exit =
+  exit (record { c10 = c10 ; varn = zero ; vari = vari })
+loopP' record { c10 = c10 ; varn = (suc varn₁) ; vari = vari } exit =
+  whileLoopP' (record { c10 = c10 ; varn = (suc varn₁) ; vari = vari })
+  (λ env → loopP' (record { c10 = c10 ; varn = varn₁ ; vari = vari }) exit ) exit
+
+whileTestPCall' : (c10 :  ℕ ) → Envc
+whileTestPCall' c10 = whileTestP' {_} {_} c10 (λ env → loopP' env (λ env →  env))
+
+-- whileTestP' 10
+-- record { c10 = 10 ; varn = 0 ; vari = 10 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-term.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,12 @@
+loopP' : {l : Level} {t : Set l} @$\rightarrow$@ Envc @$\rightarrow$@ (exit : Envc @$\rightarrow$@ t) @$\rightarrow$@ t
+loopP' record { c10 = c10 ; varn = zero ; vari = vari } exit =
+  exit (record { c10 = c10 ; varn = zero ; vari = vari })
+loopP' record { c10 = c10 ; varn = (suc varn@$\_{1}$@) ; vari = vari } exit =
+  whileLoopP' (record { c10 = c10 ; varn = (suc varn@$\_{1}$@) ; vari = vari })
+  (@$\lambda$@ env @$\rightarrow$@ loopP' (record { c10 = c10 ; varn = varn@$\_{1}$@ ; vari = vari }) exit ) exit
+
+whileTestPCall' : (c10 :  @$\mathbb{N}$@ ) @$\rightarrow$@ Envc
+whileTestPCall' c10 = whileTestP' {_} {_} c10 (@$\lambda$@ env @$\rightarrow$@ loopP' env (@$\lambda$@ env @$\rightarrow$@  env))
+
+-- whileTestP' 10
+-- record { c10 = 10 ; varn = 0 ; vari = 10 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-while.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+proof1 : HTProof initCond program termCond
+proof1 =
+  SeqRule {λ e → true} ( PrimRule empty-case )
+    $ SeqRule {λ e →  Equal (varn e) 10} ( PrimRule lemma1   )
+    $ WeakeningRule {λ e → (Equal (varn e) 10) ∧ (Equal (vari e) 0)}  lemma2 (
+      WhileRule {_} {λ e → Equal ((varn e) + (vari e)) 10}
+        $ SeqRule (PrimRule {λ e →  whileInv e  ∧ lt zero (varn e) } lemma3 )
+        $ PrimRule {whileInv'} {_} {whileInv}  lemma4 ) lemma5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-while.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+proof1 : HTProof initCond program termCond
+proof1 =
+  SeqRule {@$\lambda$@ e @$\rightarrow$@ true} ( PrimRule empty-case )
+    $ SeqRule {@$\lambda$@ e @$\rightarrow$@  Equal (varn e) 10} ( PrimRule lemma1   )
+    $ WeakeningRule {@$\lambda$@ e @$\rightarrow$@ (Equal (varn e) 10) @$\wedge$@ (Equal (vari e) 0)}  lemma2 (
+      WhileRule {_} {@$\lambda$@ e @$\rightarrow$@ Equal ((varn e) + (vari e)) 10}
+        $ SeqRule (PrimRule {@$\lambda$@ e @$\rightarrow$@  whileInv e  @$\wedge$@ lt zero (varn e) } lemma3 )
+        $ PrimRule {whileInv'} {_} {whileInv}  lemma4 ) lemma5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-whileprog.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,16 @@
+whileTestP : {l : Level} {t : Set l} → (c10 : ℕ) → (Code : Envc → t) → t
+whileTestP c10 next = next (record {c10 = c10 ; varn = c10 ; vari = 0 })
+
+whileLoopP' : {l : Level} {t : Set l} → Envc → (next : Envc → t) → (exit : Envc → t) → t
+whileLoopP' record { c10 = c10 ; varn = zero ; vari = vari } _ exit = exit record { c10 = c10 ; varn = zero ; vari = vari }
+whileLoopP' record { c10 = c10 ; varn = suc varn1 ; vari = vari } next _ = next (record {c10 = c10 ; varn = varn1 ; vari = suc vari })
+
+{-# TERMINATING #-}
+loopP : {l : Level} {t : Set l} → Envc → (exit : Envc → t) → t
+loopP env exit = whileLoopP' env (λ env → loopP env exit ) exit
+
+whileTestPCall : (c10 :  ℕ ) → Envc
+whileTestPCall c10 = whileTestP {_} {_} c10 (λ env → loopP env (λ env →  env))
+
+-- whileTestPCall 10
+-- record { c10 = 10 ; varn = 0 ; vari = 10 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-whileprog.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,16 @@
+whileTestP : {l : Level} {t : Set l} @$\rightarrow$@ (c10 : @$\mathbb{N}$@) @$\rightarrow$@ (Code : Envc @$\rightarrow$@ t) @$\rightarrow$@ t
+whileTestP c10 next = next (record {c10 = c10 ; varn = c10 ; vari = 0 })
+
+whileLoopP' : {l : Level} {t : Set l} @$\rightarrow$@ Envc @$\rightarrow$@ (next : Envc @$\rightarrow$@ t) @$\rightarrow$@ (exit : Envc @$\rightarrow$@ t) @$\rightarrow$@ t
+whileLoopP' record { c10 = c10 ; varn = zero ; vari = vari } _ exit = exit record { c10 = c10 ; varn = zero ; vari = vari }
+whileLoopP' record { c10 = c10 ; varn = suc varn1 ; vari = vari } next _ = next (record {c10 = c10 ; varn = varn1 ; vari = suc vari })
+
+{-@$\#$@ TERMINATING @$\#$@-}
+loopP : {l : Level} {t : Set l} @$\rightarrow$@ Envc @$\rightarrow$@ (exit : Envc @$\rightarrow$@ t) @$\rightarrow$@ t
+loopP env exit = whileLoopP' env (@$\lambda$@ env @$\rightarrow$@ loopP env exit ) exit
+
+whileTestPCall : (c10 :  @$\mathbb{N}$@ ) @$\rightarrow$@ Envc
+whileTestPCall c10 = whileTestP {_} {_} c10 (@$\lambda$@ env @$\rightarrow$@ loopP env (@$\lambda$@ env @$\rightarrow$@  env))
+
+-- whileTestPCall 10
+-- record { c10 = 10 ; varn = 0 ; vari = 10 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-write.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,15 @@
+-- Nomal CodeGear
+whileLoop' : {l : Level} {t : Set l} → (n : ℕ) → (env : Envc)
+  → (n ≡ varn env)
+  → (next : Envc → t)
+  → (exit : Envc → t) → t
+whileLoop' zero env refl _ exit = exit env
+whileLoop' (suc n) env refl next _ = next (record env {varn = pred (varn env) ; vari = suc (vari env) })
+
+-- Hoare Logic base CodeGear
+whileLoopPwP' : {l : Level} {t : Set l} → (n : ℕ) → (env : Envc )
+  → (n ≡ varn env) → (pre : varn env + vari env ≡ c10 env)
+  → (next : (env : Envc ) → (pred n ≡ varn env) → (post : varn env + vari env ≡ c10 env) → t)
+  → (exit : (env : Envc ) → (fin : vari env ≡ c10 env)  → t) → t
+whileLoopPwP' zero env refl refl next exit = exit env refl
+whileLoopPwP' (suc n) env refl refl next exit = next (record env {varn = pred (varn env) ; vari = suc (vari env) }) refl (+-suc n (vari env))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-hoare-write.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,15 @@
+-- Nomal CodeGear
+whileLoop' : {l : Level} {t : Set l} @$\rightarrow$@ (n : @$\mathbb{N}$@) @$\rightarrow$@ (env : Envc)
+  @$\rightarrow$@ (n @$\equiv$@ varn env)
+  @$\rightarrow$@ (next : Envc @$\rightarrow$@ t)
+  @$\rightarrow$@ (exit : Envc @$\rightarrow$@ t) @$\rightarrow$@ t
+whileLoop' zero env refl _ exit = exit env
+whileLoop' (suc n) env refl next _ = next (record env {varn = pred (varn env) ; vari = suc (vari env) })
+
+-- Hoare Logic base CodeGear
+whileLoopPwP' : {l : Level} {t : Set l} @$\rightarrow$@ (n : @$\mathbb{N}$@) @$\rightarrow$@ (env : Envc )
+  @$\rightarrow$@ (n @$\equiv$@ varn env) @$\rightarrow$@ (pre : varn env + vari env @$\equiv$@ c10 env)
+  @$\rightarrow$@ (next : (env : Envc ) @$\rightarrow$@ (pred n @$\equiv$@ varn env) @$\rightarrow$@ (post : varn env + vari env @$\equiv$@ c10 env) @$\rightarrow$@ t)
+  @$\rightarrow$@ (exit : (env : Envc ) @$\rightarrow$@ (fin : vari env @$\equiv$@ c10 env)  @$\rightarrow$@ t) @$\rightarrow$@ t
+whileLoopPwP' zero env refl refl next exit = exit env refl
+whileLoopPwP' (suc n) env refl refl next exit = next (record env {varn = pred (varn env) ; vari = suc (vari env) }) refl (+-suc n (vari env))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-mcg.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+whileTestPwP : {l : Level} {t : Set l} → (c10 : ℕ) →
+             ((env : Envc ) → (mdg : (vari env ≡ 0) /\ (varn env ≡ c10 env)) → t) → t
+whileTestPwP c10 next = next env record { pi1 = refl ; pi2 = refl } where
+  env : Envc
+  env = whileTestP c10 ( λ env → env )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-mcg.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+whileTestPwP : {l : Level} {t : Set l} @$\rightarrow$@ (c10 : @$\mathbb{N}$@) @$\rightarrow$@
+             ((env : Envc ) @$\rightarrow$@ (mdg : (vari env @$\equiv$@ 0) @$\wedge$@ (varn env @$\equiv$@ c10 env)) @$\rightarrow$@ t) @$\rightarrow$@ t
+whileTestPwP c10 next = next env record { pi1 = refl ; pi2 = refl } where
+  env : Envc
+  env = whileTestP c10 ( @$\lambda$@ env @$\rightarrow$@ env )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-mdg.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,10 @@
+data whileTestState  : Set where
+  s1 : whileTestState
+  s2 : whileTestState
+  sf : whileTestState
+
+
+whileTestStateP : whileTestState → Envc →  Set
+whileTestStateP s1 env = (vari env ≡ 0) /\ (varn env ≡ c10 env)
+whileTestStateP s2 env = (varn env + vari env ≡ c10 env)
+whileTestStateP sf env = (vari env ≡ c10 env)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-mdg.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,10 @@
+data whileTestState  : Set where
+  s1 : whileTestState
+  s2 : whileTestState
+  sf : whileTestState
+
+
+whileTestStateP : whileTestState @$\rightarrow$@ Envc @$\rightarrow$@  Set
+whileTestStateP s1 env = (vari env @$\equiv$@ 0) @$\wedge$@ (varn env @$\equiv$@ c10 env)
+whileTestStateP s2 env = (varn env + vari env @$\equiv$@ c10 env)
+whileTestStateP sf env = (vari env @$\equiv$@ c10 env)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-pattern.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+_-_ : Nat → Nat → Nat
+n     - zero = n
+zero  - suc m = zero
+suc n - suc m = n - m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-pattern.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+_-_ : Nat @$\rightarrow$@ Nat @$\rightarrow$@ Nat
+n     - zero = n
+zero  - suc m = zero
+suc n - suc m = n - m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-plus.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+_+_ : ℕ → ℕ → ℕ
+zero  + m = m
+suc n + m = suc (n + m)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-plus.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+_+_ : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@
+zero  + m = m
+suc n + m = suc (n + m)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-rewrite.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+rewrite-+-comm : (x y : ℕ) → x + y ≡ y + x
+rewrite-+-comm zero y rewrite (+zero {y}) = refl
+rewrite-+-comm (suc x) y = ?
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-rewrite.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+rewrite-+-comm : (x y : @$\mathbb{N}$@) @$\rightarrow$@ x + y @$\equiv$@ y + x
+rewrite-+-comm zero y rewrite (+zero {y}) = refl
+rewrite-+-comm (suc x) y = ?
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-term.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,28 @@
+module agda-term where
+
+open import Data.Nat.Base
+open import Relation.Binary.PropositionalEquality
+
++zero : {y : ℕ} → y + zero ≡ y
++zero {zero} = refl
++zero {suc y} = cong (λ yy → suc yy) (+zero {y})
+
++-suc : {x y : ℕ} → x + suc y ≡ suc (x + y)
++-suc {zero} {y} = refl
++-suc {suc x} {y} = cong suc (+-suc {x} {y})
+
++-comm : (x y : ℕ) → x + y ≡ y + x
++-comm zero y rewrite (+zero {y}) = refl
++-comm (suc x) y = let open ≡-Reasoning in
+  begin
+  suc (x + y) ≡⟨⟩
+  suc (x + y) ≡⟨ cong suc (+-comm x y) ⟩
+  suc (y + x) ≡⟨ sym (+-suc {y} {x}) ⟩
+  y + suc x ∎
+
++-come : (x y : ℕ) → x + y ≡ y + x
++-come zero y rewrite (+zero {y}) = refl
++-come (suc x) y
+  rewrite (cong suc (+-come x y)) | sym (+-suc {y} {x}) = refl
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-term.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,28 @@
+module agda-term where
+
+open import Data.Nat.Base
+open import Relation.Binary.PropositionalEquality
+
++zero : {y : @$\mathbb{N}$@} @$\rightarrow$@ y + zero @$\equiv$@ y
++zero {zero} = refl
++zero {suc y} = cong (@$\lambda$@ yy @$\rightarrow$@ suc yy) (+zero {y})
+
++-suc : {x y : @$\mathbb{N}$@} @$\rightarrow$@ x + suc y @$\equiv$@ suc (x + y)
++-suc {zero} {y} = refl
++-suc {suc x} {y} = cong suc (+-suc {x} {y})
+
++-comm : (x y : @$\mathbb{N}$@) @$\rightarrow$@ x + y @$\equiv$@ y + x
++-comm zero y rewrite (+zero {y}) = refl
++-comm (suc x) y = let open @$\equiv$@-Reasoning in
+  begin
+  suc (x + y) @$\equiv$@@$\langle$@@$\rangle$@
+  suc (x + y) @$\equiv$@@$\langle$@ cong suc (+-comm x y) @$\rangle$@
+  suc (y + x) @$\equiv$@@$\langle$@ sym (+-suc {y} {x}) @$\rangle$@
+  y + suc x @$\blacksquare$@
+
++-come : (x y : @$\mathbb{N}$@) @$\rightarrow$@ x + y @$\equiv$@ y + x
++-come zero y rewrite (+zero {y}) = refl
++-come (suc x) y
+  rewrite (cong suc (+-come x y)) | sym (+-suc {y} {x}) = refl
+
+
Binary file src/agda-term.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-term1.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,10 @@
++-comm : (x y : ℕ) → x + y ≡ y + x
++-comm zero y rewrite (+zero {y}) = refl
++-comm (suc x) y = let open ≡-Reasoning in
+  begin
+  ?0 ≡⟨ ?1 ⟩
+  ?2 ∎
+
+-- ?0 : ℕ {(suc x) + y}
+-- ?1 : suc x + y ≡ y + suc x
+-- ?2 : ℕ
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-term1.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,10 @@
++-comm : (x y : @$\mathbb{N}$@) @$\rightarrow$@ x + y @$\equiv$@ y + x
++-comm zero y rewrite (+zero {y}) = refl
++-comm (suc x) y = let open @$\equiv$@-Reasoning in
+  begin
+  ?0 @$\equiv$@@$\langle$@ ?1 @$\rangle$@
+  ?2 @$\blacksquare$@
+
+-- ?0 : @$\mathbb{N}$@ {(suc x) + y}
+-- ?1 : suc x + y @$\equiv$@ y + suc x
+-- ?2 : @$\mathbb{N}$@
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-term2.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,11 @@
++-comm : (x y : ℕ) → x + y ≡ y + x
++-comm zero y rewrite (+zero {y}) = refl
++-comm (suc x) y = let open ≡-Reasoning in
+  begin
+  (suc x) + y ≡⟨⟩
+  suc (x + y) ≡⟨ cong suc (+-comm x y) ⟩
+  suc (y + x) ≡⟨ ?0 ⟩
+  ?1 ∎
+
+-- ?0 : suc (y + x) ≡ y + suc x
+-- ?1 : y + suc x
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-term2.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,11 @@
++-comm : (x y : @$\mathbb{N}$@) @$\rightarrow$@ x + y @$\equiv$@ y + x
++-comm zero y rewrite (+zero {y}) = refl
++-comm (suc x) y = let open @$\equiv$@-Reasoning in
+  begin
+  (suc x) + y @$\equiv$@@$\langle$@@$\rangle$@
+  suc (x + y) @$\equiv$@@$\langle$@ cong suc (+-comm x y) @$\rangle$@
+  suc (y + x) @$\equiv$@@$\langle$@ ?0 @$\rangle$@
+  ?1 @$\blacksquare$@
+
+-- ?0 : suc (y + x) @$\equiv$@ y + suc x
+-- ?1 : y + suc x
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-term3.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,12 @@
++-comm : (x y : ℕ) → x + y ≡ y + x
++-comm zero y rewrite (+zero {y}) = refl
++-comm (suc x) y = let open ≡-Reasoning in
+  begin
+  suc (x + y) ≡⟨⟩
+  suc (x + y) ≡⟨ cong suc (+-comm x y) ⟩
+  suc (y + x) ≡⟨ sym (+-suc {y} {x}) ⟩
+  y + suc x ∎
+
+-- +-suc : {x y : ℕ} → x + suc y ≡ suc (x + y)
+-- +-suc {zero} {y} = refl
+-- +-suc {suc x} {y} = cong suc (+-suc {x} {y})
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/agda-term3.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,12 @@
++-comm : (x y : @$\mathbb{N}$@) @$\rightarrow$@ x + y @$\equiv$@ y + x
++-comm zero y rewrite (+zero {y}) = refl
++-comm (suc x) y = let open @$\equiv$@-Reasoning in
+  begin
+  suc (x + y) @$\equiv$@@$\langle$@@$\rangle$@
+  suc (x + y) @$\equiv$@@$\langle$@ cong suc (+-comm x y) @$\rangle$@
+  suc (y + x) @$\equiv$@@$\langle$@ sym (+-suc {y} {x}) @$\rangle$@
+  y + suc x @$\blacksquare$@
+
+-- +-suc : {x y : @$\mathbb{N}$@} @$\rightarrow$@ x + suc y @$\equiv$@ suc (x + y)
+-- +-suc {zero} {y} = refl
+-- +-suc {suc x} {y} = cong suc (+-suc {x} {y})
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/atomicImpl.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,6 @@
+__code checkAndSetAtomicReference(struct AtomicReference* atomic, union Data** ptr, union Data* oldData, union Data* newData, __code next(...), __code fail(...)) {
+    if (__sync_bool_compare_and_swap(ptr, oldData, newData)) {
+        goto next(...);
+    }
+    goto fail(...);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/atomicInterface.h	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,9 @@
+typedef struct Atomic<Impl>{
+    union Data* atomic;
+    union Data** ptr;
+    union Data* oldData;
+    union Data* newData;
+    __code checkAndSet(Impl* atomic, union Data** ptr, union Data* oldData, union Data* newData, __code next(...), __code fail(...));
+    __code next(...);
+    __code fail(...);
+} Atomic;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/atton-master-meta-sample.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,77 @@
+module atton-master-meta-sample where
+
+open import Data.Nat
+open import Data.Unit
+open import Function
+Int = ℕ
+
+record Context : Set where
+  field
+    a  : Int
+    b  : Int
+    c  : Int
+
+open import subtype Context as N
+
+record Meta : Set where 
+  field
+    context : Context
+    c'      : Int
+    next    : N.CodeSegment Context Context
+
+open import subtype Meta as M
+
+instance
+  _ : N.DataSegment Context
+  _ = record { get = id ; set = (\_ c -> c) }
+  _ : M.DataSegment Context
+  _ = record { get = (\m -> Meta.context m)  ;
+               set = (\m c -> record m {context = c}) }
+  _ : M.DataSegment Meta
+  _ = record { get = id ; set = (\_ m -> m) }
+
+
+liftContext : {X Y : Set} {{_ : N.DataSegment X}} {{_ : N.DataSegment Y}} -> N.CodeSegment X Y -> N.CodeSegment Context Context
+liftContext {{x}} {{y}} (N.cs f) = N.cs (\c -> N.DataSegment.set y c (f (N.DataSegment.get x c)))
+
+liftMeta : {X Y : Set} {{_ : M.DataSegment X}} {{_ : M.DataSegment Y}} -> N.CodeSegment X Y -> M.CodeSegment X Y
+liftMeta (N.cs f) = M.cs f
+
+
+gotoMeta : {I O : Set} {{_ : N.DataSegment I}} {{_ : N.DataSegment O}} -> M.CodeSegment Meta Meta -> N.CodeSegment I O -> Meta -> Meta
+gotoMeta mCode code m = M.exec mCode (record m {next = (liftContext code)})
+
+push : M.CodeSegment Meta Meta
+push = M.cs (\m -> M.exec (liftMeta (Meta.next m)) (record m {c' = Context.c (Meta.context m)}))
+
+
+record ds0 : Set where
+  field
+    a : Int
+    b : Int
+
+record ds1 : Set where
+  field
+    c : Int
+
+instance
+  _ : N.DataSegment ds0
+  _ = record { set = (\c d -> record c {a = (ds0.a d) ; b = (ds0.b d)})
+             ; get = (\c ->   record { a = (Context.a c) ; b = (Context.b c)})}
+  _ : N.DataSegment ds1
+  _ = record { set = (\c d -> record c {c = (ds1.c d)})
+             ; get = (\c ->   record { c = (Context.c c)})}
+
+cs2 : N.CodeSegment ds1 ds1
+cs2 = N.cs id
+
+cs1 : N.CodeSegment ds1 ds1
+cs1 = N.cs (\d -> N.goto cs2 d)
+
+cs0 : N.CodeSegment ds0 ds1
+cs0 = N.cs (\d -> N.goto cs1 (record {c = (ds0.a d) + (ds0.b d)}))
+
+
+main : Meta
+main = gotoMeta push cs0 (record {context = (record {a = 100 ; b = 50 ; c = 70}) ; c' = 0 ; next = (N.cs id)})
+-- record {context = record {a = 100 ; b = 50 ; c = 150} ; c' = 70 ; next = (N.cs id)}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/atton-master-meta-sample.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,77 @@
+module atton-master-meta-sample where
+
+open import Data.Nat
+open import Data.Unit
+open import Function
+Int = @$\mathbb{N}$@
+
+record Context : Set where
+  field
+    a  : Int
+    b  : Int
+    c  : Int
+
+open import subtype Context as N
+
+record Meta : Set where 
+  field
+    context : Context
+    c'      : Int
+    next    : N.CodeSegment Context Context
+
+open import subtype Meta as M
+
+instance
+  _ : N.DataSegment Context
+  _ = record { get = id ; set = (\_ c @$\rightarrow$@ c) }
+  _ : M.DataSegment Context
+  _ = record { get = (\m @$\rightarrow$@ Meta.context m)  ;
+               set = (\m c @$\rightarrow$@ record m {context = c}) }
+  _ : M.DataSegment Meta
+  _ = record { get = id ; set = (\_ m @$\rightarrow$@ m) }
+
+
+liftContext : {X Y : Set} {{_ : N.DataSegment X}} {{_ : N.DataSegment Y}} @$\rightarrow$@ N.CodeSegment X Y @$\rightarrow$@ N.CodeSegment Context Context
+liftContext {{x}} {{y}} (N.cs f) = N.cs (\c @$\rightarrow$@ N.DataSegment.set y c (f (N.DataSegment.get x c)))
+
+liftMeta : {X Y : Set} {{_ : M.DataSegment X}} {{_ : M.DataSegment Y}} @$\rightarrow$@ N.CodeSegment X Y @$\rightarrow$@ M.CodeSegment X Y
+liftMeta (N.cs f) = M.cs f
+
+
+gotoMeta : {I O : Set} {{_ : N.DataSegment I}} {{_ : N.DataSegment O}} @$\rightarrow$@ M.CodeSegment Meta Meta @$\rightarrow$@ N.CodeSegment I O @$\rightarrow$@ Meta @$\rightarrow$@ Meta
+gotoMeta mCode code m = M.exec mCode (record m {next = (liftContext code)})
+
+push : M.CodeSegment Meta Meta
+push = M.cs (\m @$\rightarrow$@ M.exec (liftMeta (Meta.next m)) (record m {c' = Context.c (Meta.context m)}))
+
+
+record ds0 : Set where
+  field
+    a : Int
+    b : Int
+
+record ds1 : Set where
+  field
+    c : Int
+
+instance
+  _ : N.DataSegment ds0
+  _ = record { set = (\c d @$\rightarrow$@ record c {a = (ds0.a d) ; b = (ds0.b d)})
+             ; get = (\c @$\rightarrow$@   record { a = (Context.a c) ; b = (Context.b c)})}
+  _ : N.DataSegment ds1
+  _ = record { set = (\c d @$\rightarrow$@ record c {c = (ds1.c d)})
+             ; get = (\c @$\rightarrow$@   record { c = (Context.c c)})}
+
+cs2 : N.CodeSegment ds1 ds1
+cs2 = N.cs id
+
+cs1 : N.CodeSegment ds1 ds1
+cs1 = N.cs (\d @$\rightarrow$@ N.goto cs2 d)
+
+cs0 : N.CodeSegment ds0 ds1
+cs0 = N.cs (\d @$\rightarrow$@ N.goto cs1 (record {c = (ds0.a d) + (ds0.b d)}))
+
+
+main : Meta
+main = gotoMeta push cs0 (record {context = (record {a = 100 ; b = 50 ; c = 70}) ; c' = 0 ; next = (N.cs id)})
+-- record {context = record {a = 100 ; b = 50 ; c = 150} ; c' = 70 ; next = (N.cs id)}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/atton-master-sample.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,46 @@
+module atton-master-sample where
+
+open import Data.Nat
+open import Data.Unit
+open import Function
+Int = ℕ
+
+record Context : Set where
+  field
+    a : Int
+    b : Int
+    c : Int
+
+
+open import subtype Context
+
+
+
+record ds0 : Set where
+  field
+    a : Int
+    b : Int
+
+record ds1 : Set where
+  field
+    c : Int
+
+instance
+  _ : DataSegment ds0
+  _ = record { set = (\c d -> record c {a = (ds0.a d) ; b = (ds0.b d)})
+             ; get = (\c ->   record { a = (Context.a c) ; b = (Context.b c)})}
+  _ : DataSegment ds1
+  _ = record { set = (\c d -> record c {c = (ds1.c d)})
+             ; get = (\c ->   record { c = (Context.c c)})}
+
+cs2 : CodeSegment ds1 ds1
+cs2 = cs id
+
+cs1 : CodeSegment ds1 ds1
+cs1 = cs (\d -> goto cs2 d)
+
+cs0 : CodeSegment ds0 ds1
+cs0 = cs (\d -> goto cs1 (record {c = (ds0.a d) + (ds0.b d)}))
+
+main : ds1
+main = goto cs0 (record {a = 100 ; b = 50})
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/atton-master-sample.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,46 @@
+module atton-master-sample where
+
+open import Data.Nat
+open import Data.Unit
+open import Function
+Int = @$\mathbb{N}$@
+
+record Context : Set where
+  field
+    a : Int
+    b : Int
+    c : Int
+
+
+open import subtype Context
+
+
+
+record ds0 : Set where
+  field
+    a : Int
+    b : Int
+
+record ds1 : Set where
+  field
+    c : Int
+
+instance
+  _ : DataSegment ds0
+  _ = record { set = (\c d @$\rightarrow$@ record c {a = (ds0.a d) ; b = (ds0.b d)})
+             ; get = (\c @$\rightarrow$@   record { a = (Context.a c) ; b = (Context.b c)})}
+  _ : DataSegment ds1
+  _ = record { set = (\c d @$\rightarrow$@ record c {c = (ds1.c d)})
+             ; get = (\c @$\rightarrow$@   record { c = (Context.c c)})}
+
+cs2 : CodeSegment ds1 ds1
+cs2 = cs id
+
+cs1 : CodeSegment ds1 ds1
+cs1 = cs (\d @$\rightarrow$@ goto cs2 d)
+
+cs0 : CodeSegment ds0 ds1
+cs0 = cs (\d @$\rightarrow$@ goto cs1 (record {c = (ds0.a d) + (ds0.b d)}))
+
+main : ds1
+main = goto cs0 (record {a = 100 ; b = 50})
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/axiom-taut.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,10 @@
+_⇒_ : Bool → Bool → Bool
+false  ⇒  _ = true
+true  ⇒  true = true
+true  ⇒  false = false
+
+Axiom : Cond -> PrimComm -> Cond -> Set
+Axiom pre comm post = ∀ (env : Env) →  (pre env) ⇒ ( post (comm env)) ≡ true
+
+Tautology : Cond -> Cond -> Set
+Tautology pre post = ∀ (env : Env) →  (pre env)  ⇒ (post env) ≡ true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/axiom-taut.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,10 @@
+_@$\Rightarrow$@_ : Bool @$\rightarrow$@ Bool @$\rightarrow$@ Bool
+false  @$\Rightarrow$@  _ = true
+true  @$\Rightarrow$@  true = true
+true  @$\Rightarrow$@  false = false
+
+Axiom : Cond @$\rightarrow$@ PrimComm @$\rightarrow$@ Cond @$\rightarrow$@ Set
+Axiom pre comm post = @$\forall$@ (env : Env) @$\rightarrow$@  (pre env) @$\Rightarrow$@ ( post (comm env)) @$\equiv$@ true
+
+Tautology : Cond @$\rightarrow$@ Cond @$\rightarrow$@ Set
+Tautology pre post = @$\forall$@ (env : Env) @$\rightarrow$@  (pre env)  @$\Rightarrow$@ (post env) @$\equiv$@ true
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-agda.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+plus : {l : Level} {t : Set l} → (x y : ℕ) → (next : ℕ -> t) -> t
+plus x zero next = next x
+plus x (suc y) next = plus (suc x) y next
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-agda.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+plus : {l : Level} {t : Set l} @$\rightarrow$@ (x y : @$\mathbb{N}$@) @$\rightarrow$@ (next : @$\mathbb{N}$@ @$\rightarrow$@ t) @$\rightarrow$@ t
+plus x zero next = next x
+plus x (suc y) next = plus (suc x) y next
Binary file src/cbc-agda.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-condition.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,9 @@
+data whileTestState  : Set where
+  s1 : whileTestState
+  s2 : whileTestState
+  sf : whileTestState
+
+whileTestStateP : whileTestState → Envc →  Set
+whileTestStateP s1 env = (vari env ≡ 0) /\ (varn env ≡ c10 env)
+whileTestStateP s2 env = (varn env + vari env ≡ c10 env)
+whileTestStateP sf env = (vari env ≡ c10 env)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-condition.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,9 @@
+data whileTestState  : Set where
+  s1 : whileTestState
+  s2 : whileTestState
+  sf : whileTestState
+
+whileTestStateP : whileTestState @$\rightarrow$@ Envc @$\rightarrow$@  Set
+whileTestStateP s1 env = (vari env @$\equiv$@ 0) @$\wedge$@ (varn env @$\equiv$@ c10 env)
+whileTestStateP s2 env = (varn env + vari env @$\equiv$@ c10 env)
+whileTestStateP sf env = (vari env @$\equiv$@ c10 env)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare-SoundnessC.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+whileCallwP : (c : ℕ) → whileTestPCallwP' c
+whileCallwP c = whileTestPwP {_} {_} c
+  (λ env s → loopHelper c (record { c10 = c ; varn = c ; vari = zero }) refl +zero)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare-SoundnessC.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+whileCallwP : (c : @$\mathbb{N}$@) @$\rightarrow$@ whileTestPCallwP' c
+whileCallwP c = whileTestPwP {_} {_} c
+  (@$\lambda$@ env s @$\rightarrow$@ loopHelper c (record { c10 = c ; varn = c ; vari = zero }) refl +zero)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare-loop.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,15 @@
+whileLoopPwP' : {l : Level} {t : Set l} → (n : ℕ) → (env : Envc )
+    → (n ≡ varn env) → whileTestStateP s2 env
+    → (next : (env : Envc ) → (pred n ≡ varn env) → whileTestStateP s2 env  → t)
+    → (exit : (env : Envc ) → whileTestStateP sf env  → t) → t
+whileLoopPwP' zero env refl refl _ exit = exit env refl
+whileLoopPwP' (suc n) env refl refl next _ =
+    next (record env {varn = pred (varn env) ; vari = suc (vari env) }) refl (+-suc n (vari env))
+
+
+loopPwP' : {l : Level} {t : Set l} → (n : ℕ) → (env : Envc )
+    → (n ≡ varn env) → whileTestStateP s2 env
+    → (exit : (env : Envc ) → whileTestStateP sf env → t) → t
+loopPwP' zero env refl refl exit = exit env refl
+loopPwP' (suc n) env refl refl exit
+    = whileLoopPwP' (suc n) env refl refl (λ env x y → loopPwP' n env x y exit) exit
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare-loop.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,15 @@
+whileLoopPwP' : {l : Level} {t : Set l} @$\rightarrow$@ (n : @$\mathbb{N}$@) @$\rightarrow$@ (env : Envc )
+    @$\rightarrow$@ (n @$\equiv$@ varn env) @$\rightarrow$@ whileTestStateP s2 env
+    @$\rightarrow$@ (next : (env : Envc ) @$\rightarrow$@ (pred n @$\equiv$@ varn env) @$\rightarrow$@ whileTestStateP s2 env  @$\rightarrow$@ t)
+    @$\rightarrow$@ (exit : (env : Envc ) @$\rightarrow$@ whileTestStateP sf env  @$\rightarrow$@ t) @$\rightarrow$@ t
+whileLoopPwP' zero env refl refl _ exit = exit env refl
+whileLoopPwP' (suc n) env refl refl next _ =
+    next (record env {varn = pred (varn env) ; vari = suc (vari env) }) refl (+-suc n (vari env))
+
+
+loopPwP' : {l : Level} {t : Set l} @$\rightarrow$@ (n : @$\mathbb{N}$@) @$\rightarrow$@ (env : Envc )
+    @$\rightarrow$@ (n @$\equiv$@ varn env) @$\rightarrow$@ whileTestStateP s2 env
+    @$\rightarrow$@ (exit : (env : Envc ) @$\rightarrow$@ whileTestStateP sf env @$\rightarrow$@ t) @$\rightarrow$@ t
+loopPwP' zero env refl refl exit = exit env refl
+loopPwP' (suc n) env refl refl exit
+    = whileLoopPwP' (suc n) env refl refl (@$\lambda$@ env x y @$\rightarrow$@ loopPwP' n env x y exit) exit
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare-loophelper.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+loopHelper : (n : ℕ) → (env : Envc ) → (eq : varn env ≡ n) → (seq : whileTestStateP s2 env)
+           → loopPwP' n env (sym eq) seq (λ env₁ x → (vari env₁ ≡ c10 env₁))
+loopHelper zero env eq refl rewrite eq = refl
+loopHelper (suc n) env refl refl =
+           loopHelper n (record { c10 = suc (n + vari env) ; varn = n ; vari = suc (vari env) }) refl (+-suc n (vari env))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare-loophelper.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+loopHelper : (n : @$\mathbb{N}$@) @$\rightarrow$@ (env : Envc ) @$\rightarrow$@ (eq : varn env @$\equiv$@ n) @$\rightarrow$@ (seq : whileTestStateP s2 env)
+           @$\rightarrow$@ loopPwP' n env (sym eq) seq (@$\lambda$@ env@$\_{1}$@ x @$\rightarrow$@ (vari env@$\_{1}$@ @$\equiv$@ c10 env@$\_{1}$@))
+loopHelper zero env eq refl rewrite eq = refl
+loopHelper (suc n) env refl refl =
+           loopHelper n (record { c10 = suc (n + vari env) ; varn = n ; vari = suc (vari env) }) refl (+-suc n (vari env))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare-prim.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+whileTestPwP : {l : Level} {t : Set l} → (c10 : ℕ) → ((env : Envc ) → whileTestStateP s1 env → t) → t
+whileTestPwP c10 next = next env record { pi1 = refl ; pi2 = refl } where
+  env : Envc
+  env = whileTestP c10 ( λ env → env )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare-prim.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+whileTestPwP : {l : Level} {t : Set l} @$\rightarrow$@ (c10 : @$\mathbb{N}$@) @$\rightarrow$@ ((env : Envc ) @$\rightarrow$@ whileTestStateP s1 env @$\rightarrow$@ t) @$\rightarrow$@ t
+whileTestPwP c10 next = next env record { pi1 = refl ; pi2 = refl } where
+  env : Envc
+  env = whileTestP c10 ( @$\lambda$@ env @$\rightarrow$@ env )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare-soundness.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,13 @@
+whileCallwP : (c : ℕ) → whileTestPCallwP' c
+whileCallwP c = whileTestPwP {_} {_} c
+  (λ env s → loopPwP' (c10 env) env (sym (pi2 s)) (conv env s) {!!})
+
+
+-- Goal: (env₁ : Envc) →
+--        vari env₁ ≡ c10 env₁ →
+--        loopPwP' c (whileTestP c (λ env₂ → env₂)) refl +zero
+--        (λ env₂ s₁ → vari env₂ ≡ c10 env₂)
+-- ————————————————————————
+-- s   : (vari env ≡ 0) /\ (varn env ≡ c10 env)
+-- env : Envc
+-- c   : ℕ
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare-soundness.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,13 @@
+whileCallwP : (c : @$\mathbb{N}$@) @$\rightarrow$@ whileTestPCallwP' c
+whileCallwP c = whileTestPwP {_} {_} c
+  (@$\lambda$@ env s @$\rightarrow$@ loopPwP' (c10 env) env (sym (pi2 s)) (conv env s) {!!})
+
+
+-- Goal: (env@$\_{1}$@ : Envc) @$\rightarrow$@
+--        vari env@$\_{1}$@ @$\equiv$@ c10 env@$\_{1}$@ @$\rightarrow$@
+--        loopPwP' c (whileTestP c (@$\lambda$@ env@$\_{2}$@ @$\rightarrow$@ env@$\_{2}$@)) refl +zero
+--        (@$\lambda$@ env@$\_{2}$@ s@$\_{1}$@ @$\rightarrow$@ vari env@$\_{2}$@ @$\equiv$@ c10 env@$\_{2}$@)
+-- ————————————————————————
+-- s   : (vari env @$\equiv$@ 0) @$\wedge$@ (varn env @$\equiv$@ c10 env)
+-- env : Envc
+-- c   : @$\mathbb{N}$@
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare-while.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,6 @@
+whileTestPCallwP' : (c :  ℕ ) → Set
+whileTestPCallwP' c = whileTestPwP {_} {_} c (λ env s → loopPwP' (varn env) env refl (conv env s) ( λ env s → vari env ≡ c10 env )  )
+
+
+-- conv : (env : Envc ) → (vari env ≡ 0) /\ (varn env ≡ c10 env) → varn env + vari env ≡ c10 env
+-- conv e record { pi1 = refl ; pi2 = refl } = +zero
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare-while.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,6 @@
+whileTestPCallwP' : (c :  @$\mathbb{N}$@ ) @$\rightarrow$@ Set
+whileTestPCallwP' c = whileTestPwP {_} {_} c (@$\lambda$@ env s @$\rightarrow$@ loopPwP' (varn env) env refl (conv env s) ( @$\lambda$@ env s @$\rightarrow$@ vari env @$\equiv$@ c10 env )  )
+
+
+-- conv : (env : Envc ) @$\rightarrow$@ (vari env @$\equiv$@ 0) @$\wedge$@ (varn env @$\equiv$@ c10 env) @$\rightarrow$@ varn env + vari env @$\equiv$@ c10 env
+-- conv e record { pi1 = refl ; pi2 = refl } = +zero
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,14 @@
+whileTestPwP : {l : Level} {t : Set l} → (c10 : ℕ) → ((env : Envc ) → whileTestStateP s1 env → t) → t
+whileTestPwP c10 next = next env record { pi1 = refl ; pi2 = refl } where
+  env : Envc
+  env = whileTestP c10 ( λ env → env )
+
+loopPwP' : {l : Level} {t : Set l} → (n : ℕ) → (env : Envc ) → (n ≡ varn env) → whileTestStateP s2 env → (exit : (env : Envc ) → whileTestStateP sf env → t) → t
+loopPwP' zero env refl refl exit = exit env refl
+loopPwP' (suc n) env refl refl exit  = whileLoopPwP' (suc n) env refl refl (λ env x y → loopPwP' n env x y exit) exit
+
+
+whileTestPCallwP' : (c :  ℕ ) → Set
+whileTestPCallwP' c = whileTestPwP {_} {_} c (λ env s → loopPwP' (varn env) env refl (conv env s) ( λ env s → vari env ≡ c10 env )  )
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cbc-hoare.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,14 @@
+whileTestPwP : {l : Level} {t : Set l} @$\rightarrow$@ (c10 : @$\mathbb{N}$@) @$\rightarrow$@ ((env : Envc ) @$\rightarrow$@ whileTestStateP s1 env @$\rightarrow$@ t) @$\rightarrow$@ t
+whileTestPwP c10 next = next env record { pi1 = refl ; pi2 = refl } where
+  env : Envc
+  env = whileTestP c10 ( @$\lambda$@ env @$\rightarrow$@ env )
+
+loopPwP' : {l : Level} {t : Set l} @$\rightarrow$@ (n : @$\mathbb{N}$@) @$\rightarrow$@ (env : Envc ) @$\rightarrow$@ (n @$\equiv$@ varn env) @$\rightarrow$@ whileTestStateP s2 env @$\rightarrow$@ (exit : (env : Envc ) @$\rightarrow$@ whileTestStateP sf env @$\rightarrow$@ t) @$\rightarrow$@ t
+loopPwP' zero env refl refl exit = exit env refl
+loopPwP' (suc n) env refl refl exit  = whileLoopPwP' (suc n) env refl refl (@$\lambda$@ env x y @$\rightarrow$@ loopPwP' n env x y exit) exit
+
+
+whileTestPCallwP' : (c :  @$\mathbb{N}$@ ) @$\rightarrow$@ Set
+whileTestPCallwP' c = whileTestPwP {_} {_} c (@$\lambda$@ env s @$\rightarrow$@ loopPwP' (varn env) env refl (conv env s) ( @$\lambda$@ env s @$\rightarrow$@ vari env @$\equiv$@ c10 env )  )
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cg1.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+__code cg0(int a, int b) {
+    goto cg1(a+b);
+}
+
+__code cg1(int c) {
+    goto cg2(c);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/codeGearExample.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+__code add(struct Integer* input1, struct Integer* input2, __code next(struct Integer* output, ...)) {
+    output->value = input1->value + input2->value;
+    goto next(output, ...);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cong.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+cong : ∀ (f : A → B) {x y} → x ≡ y → f x ≡ f y
+cong f refl = refl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cong.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+cong : @$\forall$@ (f : A @$\rightarrow$@ B) {x y} @$\rightarrow$@ x @$\equiv$@ y @$\rightarrow$@ f x @$\equiv$@ f y
+cong f refl = refl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/context.c	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,23 @@
+#include <stdlib.h>
+
+#include "context.h"
+
+extern __code code1_stub(struct Context*);
+extern __code code2_stub(struct Context*);
+extern __code code3_stub(struct Context*);
+
+__code initContext(struct Context* context) {
+    context->heapLimit = sizeof(union Data)*ALLOCATE_SIZE;
+    context->code = (__code(**) (struct Context*)) NEWN(ALLOCATE_SIZE, void*);
+    context->data = NEWN(ALLOCATE_SIZE, union Data*);
+    context->heapStart = NEWN(context->heapLimit, char);
+    context->heap = context->heapStart;
+
+    context->code[Code1]      = code1_stub;
+    context->code[Code2]      = code2_stub;
+    context->code[Code3]      = code3_stub;
+
+#include "dataGearInit.c"
+    context->dataNum = 39;
+    context->tasks = createSingleLinkedQueue(context);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/context.h	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,58 @@
+/* define context */
+
+#define ALLOCATE_SIZE 20000000
+#define NEWN(n, type) (type*)(calloc(n, sizeof(type)))
+#define ALLOC_DATA(context, dseg) ({ context->data[dseg] = context->heap; context->heap += sizeof(struct dseg); (struct dseg *)context->data[dseg]; })
+
+enum Code {
+    Code1,
+    Code2,
+    Code3,
+};
+
+enum UniqueData {
+    Allocate,
+    Tree,
+    Queue,
+    Worker,
+};
+
+struct Context {
+    enum Code next;
+    int codeNum;
+    __code (**code) (struct Context*);
+    void* heapStart;
+    void* heap;
+    long heapLimit;
+    pthread_t thread;
+    int thread_num;
+    int dataNum;
+    union Data **data;
+};
+
+union Data {
+    struct Worker {
+        int num;
+        struct Context* contexts;
+    } worker;
+    struct Tree {
+        struct Node* root;
+    } tree;
+    struct Node {
+        // need to tree
+        enum Code next;
+        int key; // comparable data segment
+        union Data* value;
+        struct Node* left;
+        struct Node* right;
+        // need to balancing
+        enum Color {
+            Red,
+            Black,
+        } color;
+    } node;
+    struct Allocate {
+        enum Code next;
+        long size;
+    } allocate;
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/context1.c	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,43 @@
+enum Code {
+    C_cs1,
+    C_cs2,
+};
+enum DataType {
+    D_Meta,
+    D_TaskManager,
+    ...
+};
+struct Context {
+    enum Code next;
+    struct Worker* worker;
+    struct TaskManager* taskManager;
+    int codeNum;
+    __code (**code) (struct Context*);
+    void* heapStart;
+    void* heap;
+    long heapLimit;
+    int dataNum;
+    int idgCount;
+    int idg;
+    int maxIdg;
+    int odg;
+    int maxOdg;
+    int workerId;
+    int gpu;
+    struct Context* task;
+    struct Queue* tasks;
+    union Data **data;
+};
+union Data {
+    struct Meta {
+        enum DataType type;
+        long size;
+        struct Queue* wait;
+    } meta;
+    struct Task {
+        enum Code code;
+        struct Queue* dataGears;
+        int idsCount;
+    } Task;
+    ...
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/context2.c	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,37 @@
+#include <stdlib.h>
+
+#include "../context.h"
+
+void initContext(struct Context* context) {
+    context->heapLimit = sizeof(union Data)*ALLOCATE_SIZE;
+    context->code = (__code(**) (struct Context*)) NEWN(ALLOCATE_SIZE, void*);
+    context->data = NEWN(ALLOCATE_SIZE, union Data*);
+    context->heapStart = NEWN(context->heapLimit, char);
+    context->heap = context->heapStart;
+
+    context->code[C_cs1]    = cs1_stub;
+    context->code[C_cs2]    = cs2_stub;
+    context->code[C_exit_code]    = exit_code_stub;
+    context->code[C_start_code]    = start_code_stub;
+
+#include "dataGearInit.c"
+}
+__code meta(struct Context* context, enum Code next) {
+    // printf("meta %d\n",next);
+    goto (context->code[next])(context);
+}
+__code start_code(struct Context* context) {
+    goto meta(context, context->next);
+}
+__code start_code_stub(struct Context* context) {
+    goto start_code(context);
+}
+__code exit_code(struct Context* context) {
+    free(context->code);
+    free(context->data);
+    free(context->heapStart);
+    goto exit(0);
+}
+__code exit_code_stub(struct Context* context) {
+    goto exit_code(context);
+}    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/contextContinuation.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,14 @@
+// normal level Code Gear
+__code cg0(struct Context* context, struct Integer integer, struct Queue queue) {
+    ...
+}
+
+// meta level stub Code Gear
+__code cg0_stub(struct Context* context) {
+    // get data index number
+    Integer integer = &context->data[context->dataNum]->Integer
+    // get enum data
+    Queue* queue = &context->data[Queue]->Queue;
+    // continuation Code Gear
+    goto cg0(context, integer, queue);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/createCPUWorker.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,21 @@
+Worker* createCPUWorker(struct Context* context, int id, Queue* queue) {
+    struct Worker* worker = new Worker();
+    struct CPUWorker* cpuWorker = new CPUWorker();
+    worker->worker = (union Data*)cpuWorker;
+    worker->tasks = queue;
+    cpuWorker->id = id;
+    cpuWorker->loopCounter = 0;
+    worker->taskReceive = C_taskReceiveCPUWorker;
+    worker->shutdown = C_shutdownCPUWorker;
+    pthread_create(&worker->thread, NULL, (void*)&startWorker, worker);
+    return worker;
+}
+
+static void startWorker(struct Worker* worker) {
+    struct CPUWorker* cpuWorker = &worker->worker->CPUWorker;
+    cpuWorker->context = NEW(struct Context);
+    initContext(cpuWorker->context);
+    Gearef(cpuWorker->context, Worker)->worker = (union Data*)worker;
+    Gearef(cpuWorker->context, Worker)->tasks = worker->tasks;
+    goto meta(cpuWorker->context, worker->taskReceive);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/createTaskManager.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,46 @@
+TaskManager* createTaskManagerImpl(struct Context* context, int numCPU, int numGPU, int numIO) {
+    struct TaskManager* taskManager = new TaskManager();
+    taskManager->spawnTasks = C_spawnTasksTaskManagerImpl;
+    taskManager->spawn = C_spawnTaskManagerImpl;
+    taskManager->shutdown  = C_shutdownTaskManagerImpl;
+    taskManager->incrementTaskCount = C_incrementTaskCountTaskManagerImpl;
+    taskManager->decrementTaskCount = C_decrementTaskCountTaskManagerImpl;
+    taskManager->setWaitTask = C_setWaitTaskTaskManagerImpl;
+    struct TaskManagerImpl* taskManagerImpl = new TaskManagerImpl();
+    // 0...numIO-1 IOProcessor
+    // numIO...numIO+numGPU-1 GPUProcessor
+    // numIO+numGPU...numIO+numGPU+numCPU-1 CPUProcessor
+    taskManagerImpl->io = 0;
+    taskManagerImpl->gpu = numIO;
+    taskManagerImpl->cpu = numIO+numGPU;
+    taskManagerImpl->maxCPU = numIO+numGPU+numCPU;
+    taskManagerImpl->numWorker = taskManagerImpl->maxCPU;
+    taskManagerImpl->sendGPUWorkerIndex = taskManagerImpl->gpu;
+    taskManagerImpl->sendCPUWorkerIndex = taskManagerImpl->cpu;
+    taskManagerImpl->taskCount = 0;
+    taskManagerImpl->loopCounter = 0;
+    createWorkers(context, taskManagerImpl);
+    taskManager->taskManager = (union Data*)taskManagerImpl;
+    return taskManager;
+}
+
+void createWorkers(struct Context* context, TaskManagerImpl* taskManager) {
+    int i = 0;
+    taskManager->workers = (Worker**)ALLOCATE_PTR_ARRAY(context, Worker, taskManager->maxCPU);
+    for (;i<taskManager->gpu;i++) {
+        Queue* queue = createSynchronizedQueue(context);
+        taskManager->workers[i] = (Worker*)createCPUWorker(context, i, queue);
+    }
+    for (;i<taskManager->cpu;i++) {
+        Queue* queue = createSynchronizedQueue(context);
+#ifdef USE_CUDAWorker
+        taskManager->workers[i] = (Worker*)createCUDAWorker(context, i, queue,0);
+#else
+        taskManager->workers[i] = (Worker*)createCPUWorker(context, i, queue);
+#endif
+    }
+    for (;i<taskManager->maxCPU;i++) {
+        Queue* queue = createSynchronizedQueue(context);
+        taskManager->workers[i] = (Worker*)createCPUWorker(context, i, queue);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cuLaunchKernel.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,21 @@
+int computeblockDim(int count, int maxThreadPerBlock) {
+    return count < maxThreadPerBlock ? count : maxThreadPerBlock;
+}
+
+__code execCUDAExecutor(struct CUDAExecutor* executor, struct Context* task, __code next(...)) {
+    // check data parallelism task
+    if (task->iterate) {
+        struct MultiDimIterator* iterator = &task->iterator->iterator->MultiDimIterator;
+
+        // compute block thread size 
+        int blockDimX = computeblockDim(iterator->x, executor->maxThreadPerBlock);
+        int blockDimY = computeblockDim(iterator->y, executor->maxThreadPerBlock);
+        int blockDimZ = computeblockDim(iterator->z, executor->maxThreadPerBlock);
+
+        checkCudaErrors(cuLaunchKernel(task->function,
+                    iterator->x/blockDimX, iterator->y/blockDimY, iterator->z/blockDimZ,
+                    blockDimX, blockDimY, blockDimZ,
+                    0, NULL, (void**)executor->kernelParams, NULL));
+    }
+    ...
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/cudaTwice.cu	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+extern "C" {
+    __global__ void twice(int* array) {
+        array[i+(blockIdx.x*blockDim.x+threadIdx.x)*prefix] = array[i+(blockIdx.x*blockDim.x+threadIdx.x)*prefix]*2;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/env.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+record Envc : Set where
+  field
+    vari : ℕ
+    varn : ℕ
+    c10  : ℕ
+
+makeEnv : ℕ → ℕ → ℕ → Envc
+makeEnv i n c = record { vari = i ; varn = n ; c10 = c }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/env.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+record Envc : Set where
+  field
+    vari : @$\mathbb{N}$@
+    varn : @$\mathbb{N}$@
+    c10  : @$\mathbb{N}$@
+
+makeEnv : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ Envc
+makeEnv i n c = record { vari = i ; varn = n ; c10 = c }
Binary file src/env.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/escape_agda.rb	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,33 @@
+#!/usr/bin/env ruby
+
+Suffix     = '.agda.replaced'
+EscapeChar = '@'
+FileName   = ARGV.first
+
+ReplaceTable = {
+  '->' => 'rightarrow',
+  '⊔'  => 'sqcup',
+  '∷' => 'text{::}',
+  '∙'  => 'circ',
+  '≡' => 'equiv',
+  '×' => 'times',
+  '⟨'  => 'langle',
+  '⟩'  => 'rangle',
+  '₁' => 'text{1}',
+  'ℕ' => 'mathbb{N}',
+  '∎'  => 'blacksquare',
+  'λ' => 'lambda',
+  '∧' => 'wedge',
+  '⇒' => 'Rightarrow',
+  '¬' => 'neg',
+  '≤' => 'leq',
+  '⊥' => 'bot',
+}
+
+code = File.read(FileName)
+ReplaceTable.each do |k, v|
+  escaped_str = EscapeChar + "$\\#{v}$" + EscapeChar
+  code = code.gsub(k, escaped_str)
+end
+
+File.write(FileName.sub(/.agda$/, Suffix), code)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ex_cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+__code clearSingleLinkedStack(struct SingleLinkedStack* stack,__code next(...)) {
+    stack->top = NULL;
+    goto next(...);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ex_code1	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+__code pushSingleLinkedStack_stub(struct Context* context) {
+    SingleLinkedStack* stack = (SingleLinkedStack*)context->data[D_Stack]->Stack.stack->Stack.stack;
+    Data* data = context->data[D_Stack]->Stack.data;
+    enum Code next = context->data[D_Stack]->Stack.next;
+    goto pushSingleLinkedStack(context, stack, data, next);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ex_code2	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+__code pushSingleLinkedStack_stub(struct Context* context) {
+    SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack);
+    Data* data = Gearef(context, Stack)->data;
+    enum Code next = Gearef(context, Stack)->next;
+    goto pushSingleLinkedStack(context, stack, data, next);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ex_stack.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,12 @@
+__code clearSingleLinkedStack(struct SingleLinkedStack* stack,__code next(...)) {
+    stack->top = NULL;
+    goto next(...);
+}
+
+__code pushSingleLinkedStack(struct SingleLinkedStack* stack,union Data* data, __code next(...)) {
+    Element* element = new Element();
+    element->next = stack->top;
+    element->data = data;
+    stack->top = element;
+    goto next(...);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ex_stub	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,11 @@
+__code clearSingleLinkedStack(struct Context *context,struct SingleLinkedStack* stack,enum Code next) {
+    stack->top = NULL;
+    goto meta(context, next);
+}
+
+__code clearSingleLinkedStack_stub(struct Context* context) {
+    SingleLinkedStack* stack = (SingleLinkedStack*)GearImpl(context, Stack, stack);
+    enum Code next = Gearef(context, Stack)->next;
+    goto clearSingleLinkedStack(context, stack, next);
+} 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/excbc.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+__code cs0(int a, int b) {
+    goto cs1(a+b);
+}
+
+__code cs1(int c) {
+    goto cs2(c);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/executorInterface.h	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,9 @@
+typedef struct Executor<Impl>{
+    union Data* Executor;
+    struct Context* task;
+    __code next(...);
+    // method
+    __code read(Impl* executor, struct Context* task, __code next(...));
+    __code exec(Impl* executor, struct Context* task, __code next(...));
+    __code write(Impl* executor, struct Context* task, __code next(...));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/factrial.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,29 @@
+__code print_factorial(int prod)
+{
+  printf("factorial = %d\n", prod);
+  exit(0);
+}
+
+__code factorial0(int prod, int x)
+{
+  if (x >= 1) {
+    goto factorial0(prod*x, x-1);
+  } else {
+    goto print_factorial(prod);
+  }
+
+}
+
+__code factorial(int x)
+{
+  goto factorial0(1, x);
+}
+
+int main(int argc, char **argv)
+{
+  int i;
+  i = atoi(argv[1]);
+
+  goto factorial(i);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/function.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+_-_ :ℕ →ℕ →ℕ
+x - zero  = x
+zero - _  = zero
+(suc x) - (suc y)  = x - y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/function.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+_-_ :@$\mathbb{N}$@ @$\rightarrow$@@$\mathbb{N}$@ @$\rightarrow$@@$\mathbb{N}$@
+x - zero  = x
+zero - _  = zero
+(suc x) - (suc y)  = x - y
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gears-while.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,51 @@
+whileTest : {l : Level} {t : Set l}  -> {c10 : ℕ } → (Code : (env : Env)  ->
+            ((vari env) ≡ 0) /\ ((varn env) ≡ c10) -> t) -> t
+whileTest {_} {_} {c10} next = next env proof2
+  where
+    env : Env
+    env = record {vari = 0 ; varn = c10}
+    proof2 : ((vari env) ≡ 0) /\ ((varn env) ≡ c10)
+    proof2 = record {pi1 = refl ; pi2 = refl}    
+
+conversion1 : {l : Level} {t : Set l } → (env : Env) -> {c10 : ℕ } → ((vari env) ≡ 0) /\ ((varn env) ≡ c10)
+               -> (Code : (env1 : Env) -> (varn env1 + vari env1 ≡ c10) -> t) -> t
+conversion1 env {c10} p1 next = next env proof4
+   where
+      proof4 : varn env + vari env ≡ c10
+      proof4 = let open ≡-Reasoning  in
+          begin
+            varn env + vari env
+          ≡⟨ cong ( λ n → n + vari env ) (pi2 p1 ) ⟩
+            c10 + vari env
+          ≡⟨ cong ( λ n → c10 + n ) (pi1 p1 ) ⟩
+            c10 + 0
+          ≡⟨ +-sym {c10} {0} ⟩
+            c10
+          ∎
+
+{-# TERMINATING #-}
+whileLoop : {l : Level} {t : Set l} -> (env : Env) -> {c10 : ℕ } → ((varn env) + (vari env) ≡ c10) -> (Code : Env -> t) -> t
+whileLoop env proof next with  ( suc zero  ≤? (varn  env) )
+whileLoop env proof next | no p = next env
+whileLoop env {c10} proof next | yes p = whileLoop env1 (proof3 p ) next
+    where
+      env1 = record {varn = (varn  env) - 1 ; vari = (vari env) + 1}
+      1<0 : 1 ≤ zero → ⊥
+      1<0 ()
+      proof3 : (suc zero  ≤ (varn  env))  → varn env1 + vari env1 ≡ c10
+      proof3 (s≤s lt) with varn  env
+      proof3 (s≤s z≤n) | zero = ⊥-elim (1<0 p)
+      proof3 (s≤s (z≤n {n'}) ) | suc n =  let open ≡-Reasoning  in
+          begin
+             n' + (vari env + 1)
+          ≡⟨ cong ( λ z → n' + z ) ( +-sym  {vari env} {1} )  ⟩
+             n' + (1 + vari env )
+          ≡⟨ sym ( +-assoc (n')  1 (vari env) ) ⟩
+             (n' + 1) + vari env
+          ≡⟨ cong ( λ z → z + vari env )  +1≡suc  ⟩
+             (suc n' ) + vari env
+          ≡⟨⟩
+             varn env + vari env
+          ≡⟨ proof  ⟩
+             c10
+          ∎    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gears-while.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,51 @@
+whileTest : {l : Level} {t : Set l}  @$\rightarrow$@ {c10 : @$\mathbb{N}$@ } @$\rightarrow$@ (Code : (env : Env)  @$\rightarrow$@
+            ((vari env) @$\equiv$@ 0) @$\wedge$@ ((varn env) @$\equiv$@ c10) @$\rightarrow$@ t) @$\rightarrow$@ t
+whileTest {_} {_} {c10} next = next env proof2
+  where
+    env : Env
+    env = record {vari = 0 ; varn = c10}
+    proof2 : ((vari env) @$\equiv$@ 0) @$\wedge$@ ((varn env) @$\equiv$@ c10)
+    proof2 = record {pi1 = refl ; pi2 = refl}    
+
+conversion1 : {l : Level} {t : Set l } @$\rightarrow$@ (env : Env) @$\rightarrow$@ {c10 : @$\mathbb{N}$@ } @$\rightarrow$@ ((vari env) @$\equiv$@ 0) @$\wedge$@ ((varn env) @$\equiv$@ c10)
+               @$\rightarrow$@ (Code : (env1 : Env) @$\rightarrow$@ (varn env1 + vari env1 @$\equiv$@ c10) @$\rightarrow$@ t) @$\rightarrow$@ t
+conversion1 env {c10} p1 next = next env proof4
+   where
+      proof4 : varn env + vari env @$\equiv$@ c10
+      proof4 = let open @$\equiv$@-Reasoning  in
+          begin
+            varn env + vari env
+          @$\equiv$@@$\langle$@ cong ( @$\lambda$@ n @$\rightarrow$@ n + vari env ) (pi2 p1 ) @$\rangle$@
+            c10 + vari env
+          @$\equiv$@@$\langle$@ cong ( @$\lambda$@ n @$\rightarrow$@ c10 + n ) (pi1 p1 ) @$\rangle$@
+            c10 + 0
+          @$\equiv$@@$\langle$@ +-sym {c10} {0} @$\rangle$@
+            c10
+          @$\blacksquare$@
+
+{-@$\#$@ TERMINATING @$\#$@-}
+whileLoop : {l : Level} {t : Set l} @$\rightarrow$@ (env : Env) @$\rightarrow$@ {c10 : @$\mathbb{N}$@ } @$\rightarrow$@ ((varn env) + (vari env) @$\equiv$@ c10) @$\rightarrow$@ (Code : Env @$\rightarrow$@ t) @$\rightarrow$@ t
+whileLoop env proof next with  ( suc zero  @$\leq$@? (varn  env) )
+whileLoop env proof next | no p = next env
+whileLoop env {c10} proof next | yes p = whileLoop env1 (proof3 p ) next
+    where
+      env1 = record {varn = (varn  env) - 1 ; vari = (vari env) + 1}
+      1<0 : 1 @$\leq$@ zero @$\rightarrow$@ @$\bot$@
+      1<0 ()
+      proof3 : (suc zero  @$\leq$@ (varn  env))  @$\rightarrow$@ varn env1 + vari env1 @$\equiv$@ c10
+      proof3 (s@$\leq$@s lt) with varn  env
+      proof3 (s@$\leq$@s z@$\leq$@n) | zero = @$\bot$@-elim (1<0 p)
+      proof3 (s@$\leq$@s (z@$\leq$@n {n'}) ) | suc n =  let open @$\equiv$@-Reasoning  in
+          begin
+             n' + (vari env + 1)
+          @$\equiv$@@$\langle$@ cong ( @$\lambda$@ z @$\rightarrow$@ n' + z ) ( +-sym  {vari env} {1} )  @$\rangle$@
+             n' + (1 + vari env )
+          @$\equiv$@@$\langle$@ sym ( +-assoc (n')  1 (vari env) ) @$\rangle$@
+             (n' + 1) + vari env
+          @$\equiv$@@$\langle$@ cong ( @$\lambda$@ z @$\rightarrow$@ z + vari env )  +1@$\equiv$@suc  @$\rangle$@
+             (suc n' ) + vari env
+          @$\equiv$@@$\langle$@@$\rangle$@
+             varn env + vari env
+          @$\equiv$@@$\langle$@ proof  @$\rangle$@
+             c10
+          @$\blacksquare$@    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gears.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+proofGears : {c10 : ℕ } → Set
+proofGears {c10} = whileTest {_} {_} {c10} (λ n p1 →  conversion1 n p1 (λ n1 p2 → whileLoop' n1 p2 (λ n2 →  ( vari n2 ≡ c10 ))))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gears.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+proofGears : {c10 : @$\mathbb{N}$@ } @$\rightarrow$@ Set
+proofGears {c10} = whileTest {_} {_} {c10} (@$\lambda$@ n p1 @$\rightarrow$@  conversion1 n p1 (@$\lambda$@ n1 p2 @$\rightarrow$@ whileLoop' n1 p2 (@$\lambda$@ n2 @$\rightarrow$@  ( vari n2 @$\equiv$@ c10 ))))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/gencontext.c	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,34 @@
+#include <stdlib.h>
+#include "../context.h"
+void initContext(struct Context* context) {
+    context->heapLimit = sizeof(union Data)* ALLOCATE_SIZE;
+    context->code = (__code(**) (struct Context*)) NEWN(ALLOCATE_SIZE, void*);
+    context->data = NEWN(ALLOCATE_SIZE, union Data*);
+    context->heapStart = NEWN(context->heapLimit, char);
+    context->heap = context->heapStart;
+    context->code[C_cs1] = cs1_stub;
+    context->code[C_cs2] = cs2_stub;
+    context->code[C_exit_code] = exit_code_stub;
+    context->code[C_start_code] = start_code_stub;
+#include "dataGearInit.c"
+}
+__code meta(struct Context* context, enum Code next) {
+    // printf("meta %d\n",next);
+    goto (context->code[next])(context);
+}
+__code start_code(struct Context* context) {
+    goto meta(context, context->next);
+}
+__code start_code_stub(struct Context*
+     context) {
+    goto start_code(context);
+}
+__code exit_code(struct Context* context) {
+    free(context->code);
+    free(context->data);
+    free(context->heapStart);
+    goto exit(0);
+}
+__code exit_code_stub(struct Context* context ){
+    goto exit_code(context);
+}
Binary file src/go has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/go.go	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,55 @@
+package main
+
+import (
+    "flag" //コマンドライン引数
+    "fmt"
+    "runtime"
+    "time"
+)
+
+
+func twice(list []int, prefix int, index int, c chan []int) {
+    for i := 0; i < prefix; i++ {
+        list[prefix*index+i] = list[prefix*index+i] * 2; //listを掛け算
+    }
+    c <- list
+}
+
+
+func main() {
+    length := flag.Int("l", 1024, "length") //オプション,デフォルト値,ヘルプ
+    split := flag.Int("s", 8, "task size")
+    cpu := flag.Int("cpu", 1, "cpu")
+    flag.Parse() //コマンドラインを解析し、定義したオプションにセット
+
+    fmt.Println("length: ", *length); //list の長さ
+    prefix := *length / *split //length / task size
+    fmt.Println("length/task: ", prefix);
+    fmt.Println("cpu :", *cpu);
+
+    //list の作成
+    list := []int{};
+    for i :=0; i < *length; i++ {
+        list = append(list, i);
+    }
+
+    runtime.GOMAXPROCS(*cpu) //並列処理するために値を代入
+
+    c := make(chan []int) //channel 作成
+    start := time.Now()
+    for i :=0; i < *split; i++ {
+        go twice(list, prefix, i, c);
+    }
+
+    for i :=0; i < *split; i++ {
+        <- c
+    }
+    t := time.Now()
+    elapsed := t.Sub(start)
+    fmt.Println(elapsed)
+    for i :=0; i < *length; i++ {
+        if (i*2 != list[i]) {
+            fmt.Println("wrong result")
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/goto.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+__code cs0(int a, int b){
+  goto cs1(a+b);
+}
+
+__code cs1(int c){
+  goto cs2(c);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/initContext.c	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,15 @@
+void initContext(struct Context* context) {
+    context->heapLimit = sizeof(union Data)*ALLOCATE_SIZE;
+    context->code = (__code(**) (struct Context*)) NEWN(ALLOCATE_SIZE, void*);
+    context->data = NEWN(ALLOCATE_SIZE, union Data*);
+    context->heapStart = NEWN(context->heapLimit, char);
+    context->heap = context->heapStart;
+
+    context->code[C_cs1]    = cs1_stub;
+    context->code[C_cs2]    = cs2_stub;
+    context->code[C_exit_code]    = exit_code_stub;
+    context->code[C_start_code]    = start_code_stub;
+
+    ALLOC_DATA(context, Context);
+    ...
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/interface.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,12 @@
+typedef struct Stack<Type, Impl>{
+        union Data* stack;
+        union Data* data;
+        union Data* data1;
+
+        __code whenEmpty(...);
+        __code clear(Impl* stack,__code next(...));
+        __code push(Impl* stack,Type* data, __code next(...));
+        __code pop(Impl* stack, __code next(Type* data, ...));
+        __code get(Impl* stack, __code next(Type* data, ...));
+        __code next(...);
+} Stack;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iterateCall.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,96 @@
+#include "../context.h"
+#interface "Iterator.h"
+#interface "TaskManager.h"
+#include <stdio.h>
+
+Iterator* createMultiDimIterator(struct Context* context, int x, int y, int z) {
+    struct Iterator* iterator = new Iterator();
+    struct MultiDimIterator* multiDimIterator = new MultiDimIterator();
+    iterator->iterator = (union Data*)multiDimIterator;
+    iterator->exec = C_execMultiDimIterator;
+    iterator->barrier = C_barrierMultiDimIterator;
+    multiDimIterator->x = x;
+    multiDimIterator->y = y;
+    multiDimIterator->z = z;
+    multiDimIterator->count = x * y * z;
+    multiDimIterator->counterX = 0;
+    multiDimIterator->counterY = 0;
+    multiDimIterator->counterZ = 0;
+    return iterator;
+}
+
+/**
+ * create iterateTask with index, that copy from task argument
+ * @return created iterateTask
+ * @param task      task of the copy source
+ * @x     index
+ */
+struct Context* createMultiDimIterateTask(struct Context* task, int x, int y, int z) {
+    struct Context* task1 = NEW(struct Context);
+    initContext(task1);
+    task1->taskManager = task->taskManager;
+    task1->next     = task->next;
+    task1->iterate  = 1;
+    task1->iterator = task->iterator;
+    task1->idgCount = task->idgCount;
+    task1->idg      = task->idg;
+    task1->maxIdg   = task->maxIdg;
+    for(int i = task1->idg; i < task1->maxIdg; i++) {
+        task1->data[i] = task->data[i];
+    }
+
+    // create index data gear and register input data to iterate task
+    struct MultiDim* multiDim = &ALLOCATE_DATA_GEAR(task1, MultiDim)->MultiDim;
+    multiDim->x = x;
+    multiDim->y = y;
+    multiDim->z = z;
+    task1->data[task1->maxIdg++] = (union Data*)multiDim;
+    task1->odg      = task->odg + 1;
+    task1->maxOdg   = task->maxOdg + 1;
+    for (int i = task1->odg; i < task1->maxOdg; i++) {
+        task1->data[i] = task->data[i-1];
+    }
+
+    return task1;
+}
+
+__code execMultiDimIterator(struct MultiDimIterator* iterator, struct Context* task, int numGPU, __code next(...)) {
+    // No GPU device
+    if (numGPU == 0) {
+        goto execMultiDimIterator1();
+    }
+    task->iterate = 1;
+    task->gpu = 1;
+    struct TaskManager* taskManager = task->taskManager;
+    goto taskManager->spawn(task, next(...));
+}
+
+__code execMultiDimIterator1(struct MultiDimIterator* iterator, struct Context* task, __code next(...)) {
+    int x = iterator->counterX;
+    int y = iterator->counterY;
+    int z = iterator->counterZ;
+    struct Context* iterateTask = createMultiDimIterateTask(task, x, y, z);
+    struct TaskManager* taskManager = task->taskManager;
+    goto taskManager->spawn(iterateTask, execMultiDimIterator2);
+}
+
+__code execMultiDimIterator2(struct MultiDimIterator* iterator, struct Context* task, __code next(...)) {
+    if (++iterator->counterX >= iterator->x) {
+        iterator->counterX = 0;
+        if (++iterator->counterY >= iterator->y) {
+            iterator->counterY = 0;
+            if (++iterator->counterZ >= iterator->z) {
+                iterator->counterZ = 0;
+                goto next(...);
+            }
+        }
+    }
+    goto execMultiDimIterator1();
+}
+
+__code barrierMultiDimIterator(struct MultiDimIterator* iterator, struct Context* task, __code next(...), __code whenWait(...)) {
+    if (task->gpu || __sync_fetch_and_sub(&iterator->count, 1) == 1) {
+        goto next(...);
+    }
+    goto whenWait(...);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iteratePargoto.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+__code code1() {
+    par goto printIterator(input, output, iterate(2), __exit);
+    goto code2();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/iteratorInterface.h	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,11 @@
+typedef struct Iterator<Impl>{
+        union Data* iterator;
+        struct Context* task;
+        int numGPU;
+        __code next(...);
+        __code whenWait(...);
+
+        // method
+        __code exec(Impl* iterator, struct Context* task, int numGPU, __code next(...));
+        __code barrier(Impl* iterator, struct Context* task, __code next(...), __code whenWait(...));
+} Iterator;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/metaCodeGearExample.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,13 @@
+__code add_stub(struct Context* context) {
+    // Input Data Gear
+	Integer* input1 = &context->data[context->idg + 0]->Integer;
+	Integer* input2 = &context->data[context->idg + 1]->Integer;
+
+    // set Continuation
+	enum Code next = context->next;
+
+    // Output Data Gear
+	Integer** O_output = (Integer **)&context->data[context->odg + 0];
+	goto add(context, input1, input2, next, O_output);
+} 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/metaCreateTask.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,42 @@
+__code code1(struct Context *context, Integer *integer1, Integer *integer2, Integer *output) {
+    // create context
+    context->task = NEW(struct Context);
+    initContext(context->task);
+
+    // set task parameter
+    context->task->next = C_add;
+    context->task->idgCount = 2;
+    context->task->idg = context->task->dataNum;
+    context->task->maxIdg = context->task->idg + 2;
+    context->task->odg = context->task->maxIdg;
+    context->task->maxOdg = context->task->odg + 1;
+
+    // create Data Gear Queue
+    GET_META(integer1)->wait = createSynchronizedQueue(context);
+    GET_META(integer2)->wait = createSynchronizedQueue(context);
+    GET_META(integer3)->wait = createSynchronizedQueue(context);
+
+    // set Input Data Gear
+    context->task->data[context->task->idg+0] = (union Data*)integer1;
+    context->task->data[context->task->idg+1] = (union Data*)integer2;
+
+    // set Output Data Gear
+    context->task->data[context->task->odg+0] = (union Data*)integer3;
+
+    // add taskList Element
+    struct Element* element;
+    element = &ALLOCATE(context, Element)->Element;
+    element->data = (union Data*)context->task;
+    element->next = context->taskList;
+    context->taskList = element;
+    
+    // set TaskManager->spawns parameter
+    Gearef(context, TaskManager)->taskList = context->taskList;
+    Gearef(context, TaskManager)->next1 = C_code2;
+    goto meta(context, C_code2);
+}
+
+// code gear
+__code add(Integer *integer1, Integer *integer2, next(Integer *output, ...)) {
+	....
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/nat.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+data ℕ : Set where
+  zero : ℕ
+  suc  : ℕ → ℕ
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/nat.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+data @$\mathbb{N}$@ : Set where
+  zero : @$\mathbb{N}$@
+  suc  : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/openMP.c	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+#pragma omp parallel for
+for(int i=0;i<N;i++) {
+    // Processing
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/parGotoCreateTask.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+__code code1(Integer *integer1, Integer * integer2, Integer *output) {
+    par goto add(integer1, integer2, output, __exit);
+    goto code2();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/putSynchronizedQueue.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,17 @@
+__code putSynchronizedQueue(struct SynchronizedQueue* queue, union Data* data, __code next(...)) {
+    Element* element = new Element();
+    element->data = data;
+    element->next = NULL;
+    Element* last = queue->last;
+    Element* nextElement = last->next;
+    if (last != queue->last) {
+        goto putSynchronizedQueue();
+    }
+    if (nextElement == NULL) {
+        struct Atomic* atomic = queue->atomic;
+        goto atomic->checkAndSet(&last->next, nextElement, element, next(...), putSynchronizedQueue);
+    } else { // wrong last element
+        struct Atomic* atomic = queue->atomic;
+        goto atomic->checkAndSet(&queue->last, last, nextElement, putSynchronizedQueue, putSynchronizedQueue);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/queueInterface.h	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,13 @@
+typedef struct Queue<Impl>{
+        // Data Gear parameter
+        union Data* queue;
+        union Data* data;
+        __code next(...);
+        __code whenEmpty(...);
+
+        // Code Gear
+        __code clear(Impl* queue, __code next(...));
+        __code put(Impl* queue, union Data* data, __code next(...));
+        __code take(Impl* queue, __code next(union Data*, ...));
+        __code isEmpty(Impl* queue, __code next(...), __code whenEmpty(...));
+} Queue;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/record.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+record Env : Set where
+  field
+    varn : ℕ
+    vari : ℕ
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/record.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+record Env : Set where
+  field
+    varn : @$\mathbb{N}$@
+    vari : @$\mathbb{N}$@
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/redBlackTreeTest.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,196 @@
+module redBlackTreeTest where
+
+open import RedBlackTree
+open import stack
+open import Level hiding (zero)
+
+open import Data.Nat
+
+open Tree
+open Node
+open RedBlackTree.RedBlackTree
+open Stack
+
+-- tests
+
+putTree1 : {n m : Level } {a k : Set n} {t : Set m} -> RedBlackTree {n} {m} {t} a k -> k -> a -> (RedBlackTree {n} {m} {t} a k -> t) -> t
+putTree1 {n} {m} {a} {k} {t} tree k1 value next with (root tree)
+...                                | Nothing = next (record tree {root = Just (leafNode k1 value) })
+...                                | Just n2  = clearSingleLinkedStack (nodeStack tree) (\ s -> findNode tree s (leafNode k1 value) n2 (\ tree1 s n1 -> replaceNode tree1 s n1 next))
+
+open import Relation.Binary.PropositionalEquality
+open import Relation.Binary.Core
+open import Function
+
+
+check1 : {m : Level } (n : Maybe (Node  ℕ ℕ)) -> ℕ -> Bool {m}
+check1 Nothing _ = False
+check1 (Just n)  x with Data.Nat.compare (value n)  x
+...  | equal _ = True
+...  | _ = False
+
+check2 : {m : Level } (n : Maybe (Node  ℕ ℕ)) -> ℕ -> Bool {m}
+check2 Nothing _ = False
+check2 (Just n)  x with compare2 (value n)  x
+...  | EQ = True
+...  | _ = False
+
+test1 : putTree1 {_} {_} {ℕ} {ℕ} (createEmptyRedBlackTreeℕ ℕ {Set Level.zero} ) 1 1 ( \t -> getRedBlackTree t 1 ( \t x -> check2 x 1 ≡ True   ))
+test1 = refl
+
+test2 : putTree1 {_} {_} {ℕ} {ℕ} (createEmptyRedBlackTreeℕ ℕ {Set Level.zero} ) 1 1 (
+    \t -> putTree1 t 2 2 (
+    \t -> getRedBlackTree t 1 (
+    \t x -> check2 x 1 ≡ True   )))
+test2 = refl
+
+open ≡-Reasoning
+test3 : putTree1 {_} {_} {ℕ} {ℕ} (createEmptyRedBlackTreeℕ ℕ {Set Level.zero}) 1 1
+    $ \t -> putTree1 t 2 2
+    $ \t -> putTree1 t 3 3
+    $ \t -> putTree1 t 4 4
+    $ \t -> getRedBlackTree t 1
+    $ \t x -> check2 x 1 ≡ True
+test3 = begin
+    check2 (Just (record {key = 1 ; value = 1 ; color = Black ; left = Nothing ; right = Just (leafNode 2 2)})) 1
+  ≡⟨ refl ⟩
+    True
+  ∎
+
+test31 = putTree1 {_} {_} {ℕ} {ℕ} (createEmptyRedBlackTreeℕ ℕ ) 1 1
+    $ \t -> putTree1 t 2 2
+    $ \t -> putTree1 t 3 3
+    $ \t -> putTree1 t 4 4
+    $ \t -> getRedBlackTree t 4
+    $ \t x -> x
+
+-- test5 : Maybe (Node ℕ ℕ)
+test5 = putTree1 {_} {_} {ℕ} {ℕ} (createEmptyRedBlackTreeℕ ℕ ) 4 4
+    $ \t -> putTree1 t 6 6
+    $ \t0 ->  clearSingleLinkedStack (nodeStack t0)
+    $ \s -> findNode1 t0 s (leafNode 3 3) ( root t0 )
+    $ \t1 s n1 -> replaceNode t1 s n1
+    $ \t -> getRedBlackTree t 3
+    -- $ \t x -> SingleLinkedStack.top (stack s)
+    -- $ \t x -> n1
+    $ \t x -> root t
+  where
+     findNode1 : {n m : Level } {a k : Set n} {t : Set m} -> RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node a k) -> (Node a k) -> (Maybe (Node a k)) -> (RedBlackTree {n} {m} {t} a k -> SingleLinkedStack (Node a k) -> Node a k -> t) -> t
+     findNode1 t s n1 Nothing next = next t s n1
+     findNode1 t s n1 ( Just n2 ) next = findNode t s n1 n2 next
+
+-- test51 : putTree1 {_} {_} {ℕ} {ℕ} {_} {Maybe (Node ℕ ℕ)} (createEmptyRedBlackTreeℕ ℕ {Set Level.zero} ) 1 1 $ \t ->
+--   putTree1 t 2 2 $ \t -> putTree1 t 3 3 $ \t -> root t ≡ Just (record { key = 1; value = 1; left = Just (record { key = 2 ; value = 2 } ); right = Nothing} )
+-- test51 = refl
+
+test6 : Maybe (Node ℕ ℕ)
+test6 = root (createEmptyRedBlackTreeℕ {_} ℕ {Maybe (Node ℕ ℕ)})
+
+
+test7 : Maybe (Node ℕ ℕ)
+test7 = clearSingleLinkedStack (nodeStack tree2) (\ s -> replaceNode tree2 s n2 (\ t -> root t))
+  where
+    tree2 = createEmptyRedBlackTreeℕ {_} ℕ {Maybe (Node ℕ ℕ)}
+    k1 = 1
+    n2 = leafNode 0 0
+    value1 = 1
+
+test8 : Maybe (Node ℕ ℕ)
+test8 = putTree1 {_} {_} {ℕ} {ℕ} (createEmptyRedBlackTreeℕ ℕ) 1 1
+    $ \t -> putTree1 t 2 2 (\ t -> root t)
+
+
+test9 : putRedBlackTree {_} {_} {ℕ} {ℕ} (createEmptyRedBlackTreeℕ ℕ {Set Level.zero} ) 1 1 ( \t -> getRedBlackTree t 1 ( \t x -> check2 x 1 ≡ True   ))
+test9 = refl
+
+test10 : putRedBlackTree {_} {_} {ℕ} {ℕ} (createEmptyRedBlackTreeℕ ℕ {Set Level.zero} ) 1 1 (
+    \t -> putRedBlackTree t 2 2 (
+    \t -> getRedBlackTree t 1 (
+    \t x -> check2 x 1 ≡ True   )))
+test10 = refl
+
+test11 = putRedBlackTree {_} {_} {ℕ} {ℕ} (createEmptyRedBlackTreeℕ ℕ) 1 1
+    $ \t -> putRedBlackTree t 2 2
+    $ \t -> putRedBlackTree t 3 3
+    $ \t -> getRedBlackTree t 2
+    $ \t x -> root t
+
+
+redBlackInSomeState : { m : Level } (a : Set Level.zero) (n : Maybe (Node a ℕ)) {t : Set m} -> RedBlackTree {Level.zero} {m} {t} a ℕ
+redBlackInSomeState {m} a n {t} = record { root = n ; nodeStack = emptySingleLinkedStack ; compare = compare2 }
+
+-- compare2 : (x y : ℕ ) -> compareresult
+-- compare2 zero zero = eq
+-- compare2 (suc _) zero = gt
+-- compare2  zero (suc _) = lt
+-- compare2  (suc x) (suc y) = compare2 x y
+
+putTest1Lemma2 : (k : ℕ)  -> compare2 k k ≡ EQ
+putTest1Lemma2 zero = refl
+putTest1Lemma2 (suc k) = putTest1Lemma2 k
+
+putTest1Lemma1 : (x y : ℕ)  -> compareℕ x y ≡ compare2 x y
+putTest1Lemma1 zero    zero    = refl
+putTest1Lemma1 (suc m) zero    = refl
+putTest1Lemma1 zero    (suc n) = refl
+putTest1Lemma1 (suc m) (suc n) with Data.Nat.compare m n
+putTest1Lemma1 (suc .m)           (suc .(Data.Nat.suc m + k)) | less    m k = lemma1  m
+ where
+    lemma1 : (m :  ℕ) -> LT  ≡ compare2 m (ℕ.suc (m + k))
+    lemma1  zero = refl
+    lemma1  (suc y) = lemma1 y
+putTest1Lemma1 (suc .m)           (suc .m)           | equal   m   = lemma1 m
+ where
+    lemma1 : (m :  ℕ) -> EQ  ≡ compare2 m m
+    lemma1  zero = refl
+    lemma1  (suc y) = lemma1 y
+putTest1Lemma1 (suc .(Data.Nat.suc m + k)) (suc .m)           | greater m k = lemma1 m
+ where
+    lemma1 : (m :  ℕ) -> GT  ≡ compare2  (ℕ.suc (m + k))  m
+    lemma1  zero = refl
+    lemma1  (suc y) = lemma1 y
+
+putTest1Lemma3 : (k : ℕ)  -> compareℕ k k ≡ EQ
+putTest1Lemma3 k = trans (putTest1Lemma1 k k) ( putTest1Lemma2 k  )
+
+compareLemma1 : {x  y : ℕ}  -> compare2 x y ≡ EQ -> x  ≡ y
+compareLemma1 {zero} {zero} refl = refl
+compareLemma1 {zero} {suc _} ()
+compareLemma1 {suc _} {zero} ()
+compareLemma1 {suc x} {suc y} eq = cong ( \z -> ℕ.suc z ) ( compareLemma1 ( trans lemma2 eq ) )
+   where
+      lemma2 : compare2 (ℕ.suc x) (ℕ.suc y) ≡ compare2 x y
+      lemma2 = refl
+
+
+putTest1 :{ m : Level } (n : Maybe (Node ℕ ℕ))
+         -> (k : ℕ) (x : ℕ)
+         -> putTree1 {_} {_} {ℕ} {ℕ} (redBlackInSomeState {_} ℕ n {Set Level.zero}) k x
+         (\ t -> getRedBlackTree t k (\ t x1 -> check2 x1 x  ≡ True))
+putTest1 n k x with n
+...  | Just n1 = lemma2 ( record { top = Nothing } )
+   where
+     lemma2 : (s : SingleLinkedStack (Node ℕ ℕ) ) -> putTree1 (record { root = Just n1 ; nodeStack = s ; compare = compare2 }) k x (λ t →
+         GetRedBlackTree.checkNode t k (λ t₁ x1 → check2 x1 x ≡ True) (root t))
+     lemma2 s with compare2 k (key n1)
+     ... |  EQ = lemma3 {!!}
+        where
+           lemma3 : compare2 k (key n1) ≡  EQ -> getRedBlackTree {_} {_} {ℕ} {ℕ} {Set Level.zero} ( record {  root = Just ( record {
+               key   = key n1 ; value = x ; right = right n1 ; left  = left n1 ; color = Black
+               } ) ; nodeStack = s ; compare = λ x₁ y → compare2 x₁ y  } ) k ( \ t x1 -> check2 x1 x  ≡ True)
+           lemma3 eq with compare2 x x | putTest1Lemma2 x
+           ... | EQ | refl with compare2 k (key n1)  | eq
+           ...              | EQ | refl with compare2 x x | putTest1Lemma2 x
+           ...                    | EQ | refl = refl
+     ... |  GT = {!!}
+     ... |  LT = {!!}
+
+...  | Nothing =  lemma1
+   where
+     lemma1 : getRedBlackTree {_} {_} {ℕ} {ℕ} {Set Level.zero} ( record {  root = Just ( record {
+               key   = k ; value = x ; right = Nothing ; left  = Nothing ; color = Red
+        } ) ; nodeStack = record { top = Nothing } ; compare = λ x₁ y → compare2 x₁ y  } ) k
+        ( \ t x1 -> check2 x1 x  ≡ True)
+     lemma1 with compare2 k k | putTest1Lemma2 k
+     ... | EQ | refl with compare2 x x | putTest1Lemma2 x
+     ...              | EQ | refl = refl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/redBlackTreeTest.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,196 @@
+module redBlackTreeTest where
+
+open import RedBlackTree
+open import stack
+open import Level hiding (zero)
+
+open import Data.Nat
+
+open Tree
+open Node
+open RedBlackTree.RedBlackTree
+open Stack
+
+-- tests
+
+putTree1 : {n m : Level } {a k : Set n} {t : Set m} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ k @$\rightarrow$@ a @$\rightarrow$@ (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ t) @$\rightarrow$@ t
+putTree1 {n} {m} {a} {k} {t} tree k1 value next with (root tree)
+...                                | Nothing = next (record tree {root = Just (leafNode k1 value) })
+...                                | Just n2  = clearSingleLinkedStack (nodeStack tree) (\ s @$\rightarrow$@ findNode tree s (leafNode k1 value) n2 (\ tree1 s n1 @$\rightarrow$@ replaceNode tree1 s n1 next))
+
+open import Relation.Binary.PropositionalEquality
+open import Relation.Binary.Core
+open import Function
+
+
+check1 : {m : Level } (n : Maybe (Node  @$\mathbb{N}$@ @$\mathbb{N}$@)) @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ Bool {m}
+check1 Nothing _ = False
+check1 (Just n)  x with Data.Nat.compare (value n)  x
+...  | equal _ = True
+...  | _ = False
+
+check2 : {m : Level } (n : Maybe (Node  @$\mathbb{N}$@ @$\mathbb{N}$@)) @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ Bool {m}
+check2 Nothing _ = False
+check2 (Just n)  x with compare2 (value n)  x
+...  | EQ = True
+...  | _ = False
+
+test1 : putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@ {Set Level.zero} ) 1 1 ( \t @$\rightarrow$@ getRedBlackTree t 1 ( \t x @$\rightarrow$@ check2 x 1 @$\equiv$@ True   ))
+test1 = refl
+
+test2 : putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@ {Set Level.zero} ) 1 1 (
+    \t @$\rightarrow$@ putTree1 t 2 2 (
+    \t @$\rightarrow$@ getRedBlackTree t 1 (
+    \t x @$\rightarrow$@ check2 x 1 @$\equiv$@ True   )))
+test2 = refl
+
+open @$\equiv$@-Reasoning
+test3 : putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@ {Set Level.zero}) 1 1
+    $ \t @$\rightarrow$@ putTree1 t 2 2
+    $ \t @$\rightarrow$@ putTree1 t 3 3
+    $ \t @$\rightarrow$@ putTree1 t 4 4
+    $ \t @$\rightarrow$@ getRedBlackTree t 1
+    $ \t x @$\rightarrow$@ check2 x 1 @$\equiv$@ True
+test3 = begin
+    check2 (Just (record {key = 1 ; value = 1 ; color = Black ; left = Nothing ; right = Just (leafNode 2 2)})) 1
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+    True
+  @$\blacksquare$@
+
+test31 = putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@ ) 1 1
+    $ \t @$\rightarrow$@ putTree1 t 2 2
+    $ \t @$\rightarrow$@ putTree1 t 3 3
+    $ \t @$\rightarrow$@ putTree1 t 4 4
+    $ \t @$\rightarrow$@ getRedBlackTree t 4
+    $ \t x @$\rightarrow$@ x
+
+-- test5 : Maybe (Node @$\mathbb{N}$@ @$\mathbb{N}$@)
+test5 = putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@ ) 4 4
+    $ \t @$\rightarrow$@ putTree1 t 6 6
+    $ \t0 @$\rightarrow$@  clearSingleLinkedStack (nodeStack t0)
+    $ \s @$\rightarrow$@ findNode1 t0 s (leafNode 3 3) ( root t0 )
+    $ \t1 s n1 @$\rightarrow$@ replaceNode t1 s n1
+    $ \t @$\rightarrow$@ getRedBlackTree t 3
+    -- $ \t x @$\rightarrow$@ SingleLinkedStack.top (stack s)
+    -- $ \t x @$\rightarrow$@ n1
+    $ \t x @$\rightarrow$@ root t
+  where
+     findNode1 : {n m : Level } {a k : Set n} {t : Set m} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node a k) @$\rightarrow$@ (Node a k) @$\rightarrow$@ (Maybe (Node a k)) @$\rightarrow$@ (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ SingleLinkedStack (Node a k) @$\rightarrow$@ Node a k @$\rightarrow$@ t) @$\rightarrow$@ t
+     findNode1 t s n1 Nothing next = next t s n1
+     findNode1 t s n1 ( Just n2 ) next = findNode t s n1 n2 next
+
+-- test51 : putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} {_} {Maybe (Node @$\mathbb{N}$@ @$\mathbb{N}$@)} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@ {Set Level.zero} ) 1 1 $ \t @$\rightarrow$@
+--   putTree1 t 2 2 $ \t @$\rightarrow$@ putTree1 t 3 3 $ \t @$\rightarrow$@ root t @$\equiv$@ Just (record { key = 1; value = 1; left = Just (record { key = 2 ; value = 2 } ); right = Nothing} )
+-- test51 = refl
+
+test6 : Maybe (Node @$\mathbb{N}$@ @$\mathbb{N}$@)
+test6 = root (createEmptyRedBlackTree@$\mathbb{N}$@ {_} @$\mathbb{N}$@ {Maybe (Node @$\mathbb{N}$@ @$\mathbb{N}$@)})
+
+
+test7 : Maybe (Node @$\mathbb{N}$@ @$\mathbb{N}$@)
+test7 = clearSingleLinkedStack (nodeStack tree2) (\ s @$\rightarrow$@ replaceNode tree2 s n2 (\ t @$\rightarrow$@ root t))
+  where
+    tree2 = createEmptyRedBlackTree@$\mathbb{N}$@ {_} @$\mathbb{N}$@ {Maybe (Node @$\mathbb{N}$@ @$\mathbb{N}$@)}
+    k1 = 1
+    n2 = leafNode 0 0
+    value1 = 1
+
+test8 : Maybe (Node @$\mathbb{N}$@ @$\mathbb{N}$@)
+test8 = putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@) 1 1
+    $ \t @$\rightarrow$@ putTree1 t 2 2 (\ t @$\rightarrow$@ root t)
+
+
+test9 : putRedBlackTree {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@ {Set Level.zero} ) 1 1 ( \t @$\rightarrow$@ getRedBlackTree t 1 ( \t x @$\rightarrow$@ check2 x 1 @$\equiv$@ True   ))
+test9 = refl
+
+test10 : putRedBlackTree {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@ {Set Level.zero} ) 1 1 (
+    \t @$\rightarrow$@ putRedBlackTree t 2 2 (
+    \t @$\rightarrow$@ getRedBlackTree t 1 (
+    \t x @$\rightarrow$@ check2 x 1 @$\equiv$@ True   )))
+test10 = refl
+
+test11 = putRedBlackTree {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@) 1 1
+    $ \t @$\rightarrow$@ putRedBlackTree t 2 2
+    $ \t @$\rightarrow$@ putRedBlackTree t 3 3
+    $ \t @$\rightarrow$@ getRedBlackTree t 2
+    $ \t x @$\rightarrow$@ root t
+
+
+redBlackInSomeState : { m : Level } (a : Set Level.zero) (n : Maybe (Node a @$\mathbb{N}$@)) {t : Set m} @$\rightarrow$@ RedBlackTree {Level.zero} {m} {t} a @$\mathbb{N}$@
+redBlackInSomeState {m} a n {t} = record { root = n ; nodeStack = emptySingleLinkedStack ; compare = compare2 }
+
+-- compare2 : (x y : @$\mathbb{N}$@ ) @$\rightarrow$@ compareresult
+-- compare2 zero zero = eq
+-- compare2 (suc _) zero = gt
+-- compare2  zero (suc _) = lt
+-- compare2  (suc x) (suc y) = compare2 x y
+
+putTest1Lemma2 : (k : @$\mathbb{N}$@)  @$\rightarrow$@ compare2 k k @$\equiv$@ EQ
+putTest1Lemma2 zero = refl
+putTest1Lemma2 (suc k) = putTest1Lemma2 k
+
+putTest1Lemma1 : (x y : @$\mathbb{N}$@)  @$\rightarrow$@ compare@$\mathbb{N}$@ x y @$\equiv$@ compare2 x y
+putTest1Lemma1 zero    zero    = refl
+putTest1Lemma1 (suc m) zero    = refl
+putTest1Lemma1 zero    (suc n) = refl
+putTest1Lemma1 (suc m) (suc n) with Data.Nat.compare m n
+putTest1Lemma1 (suc .m)           (suc .(Data.Nat.suc m + k)) | less    m k = lemma1  m
+ where
+    lemma1 : (m :  @$\mathbb{N}$@) @$\rightarrow$@ LT  @$\equiv$@ compare2 m (@$\mathbb{N}$@.suc (m + k))
+    lemma1  zero = refl
+    lemma1  (suc y) = lemma1 y
+putTest1Lemma1 (suc .m)           (suc .m)           | equal   m   = lemma1 m
+ where
+    lemma1 : (m :  @$\mathbb{N}$@) @$\rightarrow$@ EQ  @$\equiv$@ compare2 m m
+    lemma1  zero = refl
+    lemma1  (suc y) = lemma1 y
+putTest1Lemma1 (suc .(Data.Nat.suc m + k)) (suc .m)           | greater m k = lemma1 m
+ where
+    lemma1 : (m :  @$\mathbb{N}$@) @$\rightarrow$@ GT  @$\equiv$@ compare2  (@$\mathbb{N}$@.suc (m + k))  m
+    lemma1  zero = refl
+    lemma1  (suc y) = lemma1 y
+
+putTest1Lemma3 : (k : @$\mathbb{N}$@)  @$\rightarrow$@ compare@$\mathbb{N}$@ k k @$\equiv$@ EQ
+putTest1Lemma3 k = trans (putTest1Lemma1 k k) ( putTest1Lemma2 k  )
+
+compareLemma1 : {x  y : @$\mathbb{N}$@}  @$\rightarrow$@ compare2 x y @$\equiv$@ EQ @$\rightarrow$@ x  @$\equiv$@ y
+compareLemma1 {zero} {zero} refl = refl
+compareLemma1 {zero} {suc _} ()
+compareLemma1 {suc _} {zero} ()
+compareLemma1 {suc x} {suc y} eq = cong ( \z @$\rightarrow$@ @$\mathbb{N}$@.suc z ) ( compareLemma1 ( trans lemma2 eq ) )
+   where
+      lemma2 : compare2 (@$\mathbb{N}$@.suc x) (@$\mathbb{N}$@.suc y) @$\equiv$@ compare2 x y
+      lemma2 = refl
+
+
+putTest1 :{ m : Level } (n : Maybe (Node @$\mathbb{N}$@ @$\mathbb{N}$@))
+         @$\rightarrow$@ (k : @$\mathbb{N}$@) (x : @$\mathbb{N}$@)
+         @$\rightarrow$@ putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (redBlackInSomeState {_} @$\mathbb{N}$@ n {Set Level.zero}) k x
+         (\ t @$\rightarrow$@ getRedBlackTree t k (\ t x1 @$\rightarrow$@ check2 x1 x  @$\equiv$@ True))
+putTest1 n k x with n
+...  | Just n1 = lemma2 ( record { top = Nothing } )
+   where
+     lemma2 : (s : SingleLinkedStack (Node @$\mathbb{N}$@ @$\mathbb{N}$@) ) @$\rightarrow$@ putTree1 (record { root = Just n1 ; nodeStack = s ; compare = compare2 }) k x (@$\lambda$@ t @$\rightarrow$@
+         GetRedBlackTree.checkNode t k (@$\lambda$@ t@$\_{1}$@ x1 @$\rightarrow$@ check2 x1 x @$\equiv$@ True) (root t))
+     lemma2 s with compare2 k (key n1)
+     ... |  EQ = lemma3 {!!}
+        where
+           lemma3 : compare2 k (key n1) @$\equiv$@  EQ @$\rightarrow$@ getRedBlackTree {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} {Set Level.zero} ( record {  root = Just ( record {
+               key   = key n1 ; value = x ; right = right n1 ; left  = left n1 ; color = Black
+               } ) ; nodeStack = s ; compare = @$\lambda$@ x@$\_{1}$@ y @$\rightarrow$@ compare2 x@$\_{1}$@ y  } ) k ( \ t x1 @$\rightarrow$@ check2 x1 x  @$\equiv$@ True)
+           lemma3 eq with compare2 x x | putTest1Lemma2 x
+           ... | EQ | refl with compare2 k (key n1)  | eq
+           ...              | EQ | refl with compare2 x x | putTest1Lemma2 x
+           ...                    | EQ | refl = refl
+     ... |  GT = {!!}
+     ... |  LT = {!!}
+
+...  | Nothing =  lemma1
+   where
+     lemma1 : getRedBlackTree {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} {Set Level.zero} ( record {  root = Just ( record {
+               key   = k ; value = x ; right = Nothing ; left  = Nothing ; color = Red
+        } ) ; nodeStack = record { top = Nothing } ; compare = @$\lambda$@ x@$\_{1}$@ y @$\rightarrow$@ compare2 x@$\_{1}$@ y  } ) k
+        ( \ t x1 @$\rightarrow$@ check2 x1 x  @$\equiv$@ True)
+     lemma1 with compare2 k k | putTest1Lemma2 k
+     ... | EQ | refl with compare2 x x | putTest1Lemma2 x
+     ...              | EQ | refl = refl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/semaphoreInterface.h	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,8 @@
+typedef struct Semaphore<Impl>{
+        union Data* semaphore;
+        __code next(...);
+
+        // method
+        __code p(Impl* semaphore, __code next(...)); 
+        __code v(Impl* semaphore, __code next(...)); 
+} Semaphore;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sendTask.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,32 @@
+__code spawnTaskManagerImpl(struct TaskManagerImpl* taskManager, struct Context* task, __code next(...)) {
+    if (task->idgCount == 0) {
+        goto taskSend();
+    }
+    goto next(...);
+}
+
+__code taskSend(struct TaskManagerImpl* taskManager, struct Context* task, __code next(...)) {
+    if (task->gpu) {
+        goto taskSend1();
+    } else {
+        goto taskSend2();
+    }
+}
+
+__code taskSend1(struct TaskManagerImpl* taskManager, struct Context* task, __code next(...)) {
+    int workerId = taskManager->sendGPUWorkerIndex;
+    if(++taskManager->sendGPUWorkerIndex >= taskManager->cpu) {
+        taskManager->sendGPUWorkerIndex = taskManager->gpu;
+    }
+    struct Queue* queue = taskManager->workers[workerId]->tasks;
+    goto queue->put(task, next(...));
+}
+
+__code taskSend2(struct TaskManagerImpl* taskManager, struct Context* task, __code next(...)) {
+    int workerId = taskManager->sendCPUWorkerIndex;
+    if(++taskManager->sendCPUWorkerIndex >= taskManager->maxCPU) {
+        taskManager->sendCPUWorkerIndex = taskManager->cpu;
+    }
+    struct Queue* queue = taskManager->workers[workerId]->tasks;
+    goto queue->put(task, next(...));
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/singleLinkedQueue.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,30 @@
+#interface "Queue.h"
+
+Queue* createSingleLinkedQueue(struct Context* context) {
+    struct Queue* queue = new Queue(); // Allocate Queue interface
+    struct SingleLinkedQueue* singleLinkedQueue = new SingleLinkedQueue(); // Allocate Queue implement
+    queue->queue = (union Data*)singleLinkedQueue;
+    singleLinkedQueue->top  = new Element();
+    singleLinkedQueue->last = singleLinkedQueue->top;
+    queue->clear = C_clearSingleLinkedQueue;
+    queue->put  = C_putSingleLinkedQueue;
+    queue->take  = C_takeSingleLinkedQueue;
+    queue->isEmpty = C_isEmptySingleLinkedQueue;
+    return queue;
+}
+
+__code clearSingleLinkedQueue(struct SingleLinkedQueue* queue, __code next(...)) {
+    queue->top = NULL;
+    goto next(...);
+}
+
+__code putSingleLinkedQueue(struct SingleLinkedQueue* queue, union Data* data, __code next(...)) {
+    Element* element = new Element();
+    element->data = data;
+    element->next = NULL;
+    queue->last->next  = element;
+    queue->last = element;
+    goto next(...);
+}
+
+.....
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/singleLinkedQueueTest.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,6 @@
+__code code1() {
+    Queue* queue = createSingleLinkedQueue(context);
+    Node* node = new Node();
+    node->color = Red;
+    goto queue->put(node, queueTest2);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/singleLinkedQueueTest_script.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,9 @@
+__code code1(struct Context *context) {
+    Queue* queue = createSingleLinkedQueue(context);
+    Node* node = &ALLOCATE(context, Node)->Node;
+    node->color = Red;
+	Gearef(context, Queue)->queue = (union Data*) queue;
+	Gearef(context, Queue)->data = (union Data*) node;
+	Gearef(context, Queue)->next = C_queueTest2;
+    goto meta(context, queue->put);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/singleLinkedStackInterface.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,12 @@
+Stack* createSingleLinkedStack(struct Context* context) {
+    struct Stack* stack = new Stack();
+    struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack();
+    stack->stack = (union Data*)singleLinkedStack;
+    singleLinkedStack->top = NULL;
+    stack->push = C_pushSingleLinkedStack;
+    stack->pop  = C_popSingleLinkedStack;
+    stack->get  = C_getSingleLinkedStack;
+    stack->isEmpty = C_isEmptySingleLinkedStack;
+    stack->clear = C_clearSingleLinkedStack;
+    return stack;
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sound-conv.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+whileConvPSemSound : {l : Level} → (input : Envc) → ((vari input ≡ 0) ∧ (varn input ≡ c)) implies (varn input + vari input ≡ c10 input)
+whileConvPSemSound input = proof λ x → (conversion input x) where
+  conversion : (env : Envc ) → (vari env ≡ 0) /\ (varn env ≡ c10 env) → varn env + vari env ≡ c10 env
+  conversion e record { pi1 = refl ; pi2 = refl } = +zero
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sound-conv.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+whileConvPSemSound : {l : Level} @$\rightarrow$@ (input : Envc) @$\rightarrow$@ ((vari input @$\equiv$@ 0) @$\wedge$@ (varn input @$\equiv$@ c)) implies (varn input + vari input @$\equiv$@ c10 input)
+whileConvPSemSound input = proof @$\lambda$@ x @$\rightarrow$@ (conversion input x) where
+  conversion : (env : Envc ) @$\rightarrow$@ (vari env @$\equiv$@ 0) @$\wedge$@ (varn env @$\equiv$@ c10 env) @$\rightarrow$@ varn env + vari env @$\equiv$@ c10 env
+  conversion e record { pi1 = refl ; pi2 = refl } = +zero
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sound-impl.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+data _implies_  (A B : Set ) : Set (succ Zero) where
+  proof : ( A → B ) → A implies B
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sound-impl.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+data _implies_  (A B : Set ) : Set (succ Zero) where
+  proof : ( A @$\rightarrow$@ B ) @$\rightarrow$@ A implies B
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sound-loop.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+loopPPSem : (input output : Envc ) →  output ≡ loopPP (varn input)  input refl
+  → (varn input + vari input ≡ c10 input ) 
+  → (varn input + vari input ≡ c10 input ) implies (vari output ≡ c10 output)
+loopPPSem input output refl s2p = loopPPSemInduct (varn input) input  refl refl s2p
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sound-loop.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+loopPPSem : (input output : Envc ) @$\rightarrow$@  output @$\equiv$@ loopPP (varn input)  input refl
+  @$\rightarrow$@ (varn input + vari input @$\equiv$@ c10 input ) 
+  @$\rightarrow$@ (varn input + vari input @$\equiv$@ c10 input ) implies (vari output @$\equiv$@ c10 output)
+loopPPSem input output refl s2p = loopPPSemInduct (varn input) input  refl refl s2p
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sound-looppsem.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+whileLoopPSemSound : {l : Level} → (input output : Envc )
+  → (varn input + vari input ≡ c10 input)
+  →  output ≡ loopPP (varn input) input refl
+  → (varn input + vari input ≡ c10 input) implies (vari output ≡ c10 output)
+whileLoopPSemSound {l} input output pre eq = loopPPSem input output eq pre
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sound-looppsem.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,5 @@
+whileLoopPSemSound : {l : Level} @$\rightarrow$@ (input output : Envc )
+  @$\rightarrow$@ (varn input + vari input @$\equiv$@ c10 input)
+  @$\rightarrow$@  output @$\equiv$@ loopPP (varn input) input refl
+  @$\rightarrow$@ (varn input + vari input @$\equiv$@ c10 input) implies (vari output @$\equiv$@ c10 output)
+whileLoopPSemSound {l} input output pre eq = loopPPSem input output eq pre
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sound-pcom.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+whileTestPSem :  (c : ℕ) → whileTestP c
+  ( λ env → ⊤ implies (vari env ≡ 0) ∧ (varn env ≡ c10 env) )
+whileTestPSem c = proof ( λ _ → record { pi1 = refl ; pi2 = refl } )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sound-pcom.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
+whileTestPSem :  (c : @$\mathbb{N}$@) @$\rightarrow$@ whileTestP c
+  ( @$\lambda$@ env @$\rightarrow$@ @$\top$@ implies (vari env @$\equiv$@ 0) @$\wedge$@ (varn env @$\equiv$@ c10 env) )
+whileTestPSem c = proof ( @$\lambda$@ _ @$\rightarrow$@ record { pi1 = refl ; pi2 = refl } )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sound-psemcom.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+whileTestPSemSound : (c : ℕ ) (output : Envc ) → 
+  output ≡ whileTestP c (λ e → e) 
+  → ⊤ implies ((vari output ≡ 0) ∧ (varn output ≡ c))
+whileTestPSemSound c output refl = whileTestPSem c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sound-psemcom.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,4 @@
+whileTestPSemSound : (c : @$\mathbb{N}$@ ) (output : Envc ) @$\rightarrow$@ 
+  output @$\equiv$@ whileTestP c (@$\lambda$@ e @$\rightarrow$@ e) 
+  @$\rightarrow$@ @$\top$@ implies ((vari output @$\equiv$@ 0) @$\wedge$@ (varn output @$\equiv$@ c))
+whileTestPSemSound c output refl = whileTestPSem c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stack-product.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,158 @@
+module stack-product where
+
+open import product
+open import Data.Product
+open import Data.Nat
+open import Function using (id)
+open import Relation.Binary.PropositionalEquality
+
+-- definition based from Gears(209:5708390a9d88) src/parallel_execution
+goto = executeCS
+
+data Bool : Set where
+  True  : Bool
+  False : Bool
+
+data Maybe (a : Set) : Set  where
+  Nothing : Maybe a
+  Just    : a -> Maybe a
+
+
+record Stack {a t : Set} (stackImpl : Set) : Set  where
+  field
+    stack : stackImpl
+    push : CodeSegment (stackImpl × a × (CodeSegment stackImpl t)) t
+    pop  : CodeSegment (stackImpl × (CodeSegment (stackImpl × Maybe a) t)) t
+
+
+data Element (a : Set) : Set where
+  cons : a -> Maybe (Element a) -> Element a
+
+datum : {a : Set} -> Element a -> a
+datum (cons a _) = a
+
+next : {a : Set} -> Element a -> Maybe (Element a)
+next (cons _ n) = n
+
+record SingleLinkedStack (a : Set) : Set where
+  field
+    top : Maybe (Element a)
+open SingleLinkedStack
+
+emptySingleLinkedStack : {a : Set} -> SingleLinkedStack a
+emptySingleLinkedStack = record {top = Nothing}
+
+
+
+
+pushSingleLinkedStack : {a t : Set} -> CodeSegment ((SingleLinkedStack a) × a × (CodeSegment (SingleLinkedStack a) t)) t
+pushSingleLinkedStack = cs push
+  where
+    push : {a t : Set} -> ((SingleLinkedStack a) × a × (CodeSegment (SingleLinkedStack a) t)) -> t
+    push (stack , datum , next) = goto next stack1
+      where
+        element = cons datum (top stack)
+        stack1  = record {top = Just element}
+
+popSingleLinkedStack : {a t : Set} -> CodeSegment (SingleLinkedStack a × (CodeSegment (SingleLinkedStack a × Maybe a) t))  t
+popSingleLinkedStack = cs pop
+  where
+    pop : {a t : Set} -> (SingleLinkedStack a × (CodeSegment (SingleLinkedStack a × Maybe a) t)) -> t
+    pop (record { top = Nothing } , nextCS) = goto nextCS (emptySingleLinkedStack , Nothing) 
+    pop (record { top = Just x } , nextCS)  = goto nextCS (stack1 , (Just datum1))
+      where
+        datum1 = datum x
+        stack1 = record { top = (next x) }
+
+
+
+
+
+createSingleLinkedStack : {a b : Set} -> Stack {a} {b} (SingleLinkedStack a)
+createSingleLinkedStack = record { stack = emptySingleLinkedStack
+                                 ; push = pushSingleLinkedStack
+                                 ; pop  = popSingleLinkedStack
+                                 }
+
+
+
+
+test01 : {a : Set} -> CodeSegment (SingleLinkedStack a × Maybe a) Bool
+test01 = cs test01'
+  where
+    test01' : {a : Set} -> (SingleLinkedStack a × Maybe a) -> Bool
+    test01' (record { top = Nothing } , _) = False
+    test01' (record { top = Just x } ,  _)  = True
+
+
+test02 : {a : Set} -> CodeSegment (SingleLinkedStack a) (SingleLinkedStack a × Maybe a)
+test02 = cs test02'
+  where
+    test02' : {a : Set} -> SingleLinkedStack a -> (SingleLinkedStack a × Maybe a)
+    test02' stack = goto popSingleLinkedStack (stack , (cs id))
+
+
+test03 : {a : Set} -> CodeSegment a (SingleLinkedStack a)
+test03  = cs test03'
+  where
+    test03' : {a : Set} -> a -> SingleLinkedStack a
+    test03' a = goto pushSingleLinkedStack (emptySingleLinkedStack , a , (cs id))
+
+
+lemma : {A : Set} {a : A} -> goto (test03 ◎ test02 ◎ test01) a ≡ False
+lemma = refl
+
+
+n-push : {A : Set} {a : A} -> CodeSegment (ℕ  × SingleLinkedStack A) (ℕ × SingleLinkedStack A)
+n-push {A} {a} = cs (push {A} {a})
+  where
+    push : {A : Set} {a : A} -> (ℕ × SingleLinkedStack A) -> (ℕ × SingleLinkedStack A)
+    push {A} {a} (zero  , s) = (zero , s)
+    push {A} {a} (suc n , s) = goto pushSingleLinkedStack (s , a , {!!} {- n-push -}) -- needs subtype
+
+
+{-
+
+n-push : {A : Set} {a : A} -> Nat -> SingleLinkedStack A -> SingleLinkedStack A
+n-push zero s            = s
+n-push {A} {a} (suc n) s = pushSingleLinkedStack (n-push {A} {a} n s) a (\s -> s)
+
+n-pop : {A : Set} {a : A} -> Nat -> SingleLinkedStack A -> SingleLinkedStack A
+n-pop zero    s         = s
+n-pop {A} {a} (suc n) s = popSingleLinkedStack (n-pop {A} {a} n s) (\s _ -> s)
+
+open ≡-Reasoning
+
+push-pop-equiv : {A : Set} {a : A} (s : SingleLinkedStack A) -> popSingleLinkedStack (pushSingleLinkedStack s a (\s -> s)) (\s _ -> s) ≡ s
+push-pop-equiv s = refl
+
+push-and-n-pop : {A : Set} {a : A} (n : Nat) (s : SingleLinkedStack A) -> n-pop {A} {a} (suc n) (pushSingleLinkedStack s a id) ≡ n-pop {A} {a} n s
+push-and-n-pop zero s            = refl
+push-and-n-pop {A} {a} (suc n) s = begin
+  n-pop (suc (suc n)) (pushSingleLinkedStack s a id)
+  ≡⟨ refl ⟩
+  popSingleLinkedStack (n-pop (suc n) (pushSingleLinkedStack s a id)) (\s _ -> s)
+  ≡⟨ cong (\s -> popSingleLinkedStack s (\s _ -> s)) (push-and-n-pop n s) ⟩
+  popSingleLinkedStack (n-pop n s) (\s _ -> s)
+  ≡⟨ refl ⟩
+  n-pop (suc n) s
+  ∎
+
+
+n-push-pop-equiv : {A : Set} {a : A} (n : Nat) (s : SingleLinkedStack A) -> (n-pop {A} {a} n (n-push {A} {a} n s)) ≡ s
+n-push-pop-equiv zero s            = refl
+n-push-pop-equiv {A} {a} (suc n) s = begin
+  n-pop (suc n) (n-push (suc n) s)
+  ≡⟨ refl ⟩
+  n-pop (suc n) (pushSingleLinkedStack (n-push n s) a (\s -> s))
+  ≡⟨ push-and-n-pop n (n-push n s)  ⟩
+  n-pop n (n-push n s)
+  ≡⟨ n-push-pop-equiv n s ⟩
+  s
+  ∎
+
+
+n-push-pop-equiv-empty : {A : Set} {a : A} -> (n : Nat) -> n-pop {A} {a} n (n-push {A} {a} n emptySingleLinkedStack)  ≡ emptySingleLinkedStack
+n-push-pop-equiv-empty n = n-push-pop-equiv n emptySingleLinkedStack
+-}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stack-product.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,158 @@
+module stack-product where
+
+open import product
+open import Data.Product
+open import Data.Nat
+open import Function using (id)
+open import Relation.Binary.PropositionalEquality
+
+-- definition based from Gears(209:5708390a9d88) src/parallel_execution
+goto = executeCS
+
+data Bool : Set where
+  True  : Bool
+  False : Bool
+
+data Maybe (a : Set) : Set  where
+  Nothing : Maybe a
+  Just    : a @$\rightarrow$@ Maybe a
+
+
+record Stack {a t : Set} (stackImpl : Set) : Set  where
+  field
+    stack : stackImpl
+    push : CodeSegment (stackImpl @$\times$@ a @$\times$@ (CodeSegment stackImpl t)) t
+    pop  : CodeSegment (stackImpl @$\times$@ (CodeSegment (stackImpl @$\times$@ Maybe a) t)) t
+
+
+data Element (a : Set) : Set where
+  cons : a @$\rightarrow$@ Maybe (Element a) @$\rightarrow$@ Element a
+
+datum : {a : Set} @$\rightarrow$@ Element a @$\rightarrow$@ a
+datum (cons a _) = a
+
+next : {a : Set} @$\rightarrow$@ Element a @$\rightarrow$@ Maybe (Element a)
+next (cons _ n) = n
+
+record SingleLinkedStack (a : Set) : Set where
+  field
+    top : Maybe (Element a)
+open SingleLinkedStack
+
+emptySingleLinkedStack : {a : Set} @$\rightarrow$@ SingleLinkedStack a
+emptySingleLinkedStack = record {top = Nothing}
+
+
+
+
+pushSingleLinkedStack : {a t : Set} @$\rightarrow$@ CodeSegment ((SingleLinkedStack a) @$\times$@ a @$\times$@ (CodeSegment (SingleLinkedStack a) t)) t
+pushSingleLinkedStack = cs push
+  where
+    push : {a t : Set} @$\rightarrow$@ ((SingleLinkedStack a) @$\times$@ a @$\times$@ (CodeSegment (SingleLinkedStack a) t)) @$\rightarrow$@ t
+    push (stack , datum , next) = goto next stack1
+      where
+        element = cons datum (top stack)
+        stack1  = record {top = Just element}
+
+popSingleLinkedStack : {a t : Set} @$\rightarrow$@ CodeSegment (SingleLinkedStack a @$\times$@ (CodeSegment (SingleLinkedStack a @$\times$@ Maybe a) t))  t
+popSingleLinkedStack = cs pop
+  where
+    pop : {a t : Set} @$\rightarrow$@ (SingleLinkedStack a @$\times$@ (CodeSegment (SingleLinkedStack a @$\times$@ Maybe a) t)) @$\rightarrow$@ t
+    pop (record { top = Nothing } , nextCS) = goto nextCS (emptySingleLinkedStack , Nothing) 
+    pop (record { top = Just x } , nextCS)  = goto nextCS (stack1 , (Just datum1))
+      where
+        datum1 = datum x
+        stack1 = record { top = (next x) }
+
+
+
+
+
+createSingleLinkedStack : {a b : Set} @$\rightarrow$@ Stack {a} {b} (SingleLinkedStack a)
+createSingleLinkedStack = record { stack = emptySingleLinkedStack
+                                 ; push = pushSingleLinkedStack
+                                 ; pop  = popSingleLinkedStack
+                                 }
+
+
+
+
+test01 : {a : Set} @$\rightarrow$@ CodeSegment (SingleLinkedStack a @$\times$@ Maybe a) Bool
+test01 = cs test01'
+  where
+    test01' : {a : Set} @$\rightarrow$@ (SingleLinkedStack a @$\times$@ Maybe a) @$\rightarrow$@ Bool
+    test01' (record { top = Nothing } , _) = False
+    test01' (record { top = Just x } ,  _)  = True
+
+
+test02 : {a : Set} @$\rightarrow$@ CodeSegment (SingleLinkedStack a) (SingleLinkedStack a @$\times$@ Maybe a)
+test02 = cs test02'
+  where
+    test02' : {a : Set} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (SingleLinkedStack a @$\times$@ Maybe a)
+    test02' stack = goto popSingleLinkedStack (stack , (cs id))
+
+
+test03 : {a : Set} @$\rightarrow$@ CodeSegment a (SingleLinkedStack a)
+test03  = cs test03'
+  where
+    test03' : {a : Set} @$\rightarrow$@ a @$\rightarrow$@ SingleLinkedStack a
+    test03' a = goto pushSingleLinkedStack (emptySingleLinkedStack , a , (cs id))
+
+
+lemma : {A : Set} {a : A} @$\rightarrow$@ goto (test03 ◎ test02 ◎ test01) a @$\equiv$@ False
+lemma = refl
+
+
+n-push : {A : Set} {a : A} @$\rightarrow$@ CodeSegment (@$\mathbb{N}$@  @$\times$@ SingleLinkedStack A) (@$\mathbb{N}$@ @$\times$@ SingleLinkedStack A)
+n-push {A} {a} = cs (push {A} {a})
+  where
+    push : {A : Set} {a : A} @$\rightarrow$@ (@$\mathbb{N}$@ @$\times$@ SingleLinkedStack A) @$\rightarrow$@ (@$\mathbb{N}$@ @$\times$@ SingleLinkedStack A)
+    push {A} {a} (zero  , s) = (zero , s)
+    push {A} {a} (suc n , s) = goto pushSingleLinkedStack (s , a , {!!} {- n-push -}) -- needs subtype
+
+
+{-
+
+n-push : {A : Set} {a : A} @$\rightarrow$@ Nat @$\rightarrow$@ SingleLinkedStack A @$\rightarrow$@ SingleLinkedStack A
+n-push zero s            = s
+n-push {A} {a} (suc n) s = pushSingleLinkedStack (n-push {A} {a} n s) a (\s @$\rightarrow$@ s)
+
+n-pop : {A : Set} {a : A} @$\rightarrow$@ Nat @$\rightarrow$@ SingleLinkedStack A @$\rightarrow$@ SingleLinkedStack A
+n-pop zero    s         = s
+n-pop {A} {a} (suc n) s = popSingleLinkedStack (n-pop {A} {a} n s) (\s _ @$\rightarrow$@ s)
+
+open @$\equiv$@-Reasoning
+
+push-pop-equiv : {A : Set} {a : A} (s : SingleLinkedStack A) @$\rightarrow$@ popSingleLinkedStack (pushSingleLinkedStack s a (\s @$\rightarrow$@ s)) (\s _ @$\rightarrow$@ s) @$\equiv$@ s
+push-pop-equiv s = refl
+
+push-and-n-pop : {A : Set} {a : A} (n : Nat) (s : SingleLinkedStack A) @$\rightarrow$@ n-pop {A} {a} (suc n) (pushSingleLinkedStack s a id) @$\equiv$@ n-pop {A} {a} n s
+push-and-n-pop zero s            = refl
+push-and-n-pop {A} {a} (suc n) s = begin
+  n-pop (suc (suc n)) (pushSingleLinkedStack s a id)
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  popSingleLinkedStack (n-pop (suc n) (pushSingleLinkedStack s a id)) (\s _ @$\rightarrow$@ s)
+  @$\equiv$@@$\langle$@ cong (\s @$\rightarrow$@ popSingleLinkedStack s (\s _ @$\rightarrow$@ s)) (push-and-n-pop n s) @$\rangle$@
+  popSingleLinkedStack (n-pop n s) (\s _ @$\rightarrow$@ s)
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  n-pop (suc n) s
+  @$\blacksquare$@
+
+
+n-push-pop-equiv : {A : Set} {a : A} (n : Nat) (s : SingleLinkedStack A) @$\rightarrow$@ (n-pop {A} {a} n (n-push {A} {a} n s)) @$\equiv$@ s
+n-push-pop-equiv zero s            = refl
+n-push-pop-equiv {A} {a} (suc n) s = begin
+  n-pop (suc n) (n-push (suc n) s)
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  n-pop (suc n) (pushSingleLinkedStack (n-push n s) a (\s @$\rightarrow$@ s))
+  @$\equiv$@@$\langle$@ push-and-n-pop n (n-push n s)  @$\rangle$@
+  n-pop n (n-push n s)
+  @$\equiv$@@$\langle$@ n-push-pop-equiv n s @$\rangle$@
+  s
+  @$\blacksquare$@
+
+
+n-push-pop-equiv-empty : {A : Set} {a : A} @$\rightarrow$@ (n : Nat) @$\rightarrow$@ n-pop {A} {a} n (n-push {A} {a} n emptySingleLinkedStack)  @$\equiv$@ emptySingleLinkedStack
+n-push-pop-equiv-empty n = n-push-pop-equiv n emptySingleLinkedStack
+-}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stack-subtype-sample.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,212 @@
+module stack-subtype-sample where
+
+open import Level renaming (suc to S ; zero to O)
+open import Function
+open import Data.Nat
+open import Data.Maybe
+open import Relation.Binary.PropositionalEquality
+
+open import stack-subtype ℕ
+open import subtype Context  as N
+open import subtype Meta     as M
+
+
+record Num : Set where
+  field
+    num : ℕ
+
+instance
+  NumIsNormalDataSegment : N.DataSegment Num
+  NumIsNormalDataSegment = record { get = (\c -> record { num = Context.n c})
+                                  ; set = (\c n -> record c {n = Num.num n})}
+  NumIsMetaDataSegment : M.DataSegment Num
+  NumIsMetaDataSegment = record { get = (\m -> record {num = Context.n (Meta.context m)})
+                                ; set = (\m n -> record m {context = record (Meta.context m) {n = Num.num n}})}
+
+
+plus3 : Num -> Num
+plus3 record { num = n } = record {num = n + 3}
+
+plus3CS : N.CodeSegment Num Num
+plus3CS = N.cs plus3
+
+
+
+plus5AndPushWithPlus3 : {mc : Meta} {{_ : N.DataSegment Num}}
+               -> M.CodeSegment Num (Meta)
+plus5AndPushWithPlus3 {mc} {{nn}} = M.cs (\n -> record {context = con n ; nextCS = (liftContext {{nn}} {{nn}} plus3CS) ; stack = st} )
+  where
+    co    = Meta.context mc
+    con : Num -> Context
+    con record { num = num } = N.DataSegment.set nn co record {num = num + 5}
+    st    = Meta.stack mc
+
+
+
+
+push-sample : {{_ : N.DataSegment Num}} {{_ : M.DataSegment Num}} ->  Meta
+push-sample {{nd}} {{md}} = M.exec {{md}} (plus5AndPushWithPlus3 {mc} {{nd}}) mc
+  where
+    con  = record { n = 4 ; element = just 0}
+    code = N.cs (\c -> c)
+    mc   = record {context = con ; stack = emptySingleLinkedStack ; nextCS = code}
+
+
+push-sample-equiv : push-sample ≡ record { nextCS  = liftContext plus3CS
+                                          ; stack   = record { top = nothing}
+                                          ; context = record { n = 9} }
+push-sample-equiv = refl
+
+
+pushed-sample : {m : Meta} {{_ : N.DataSegment Num}} {{_ : M.DataSegment Num}} ->  Meta
+pushed-sample {m} {{nd}} {{md}} = M.exec {{md}} (M.csComp {m} {{md}} pushSingleLinkedStackCS (plus5AndPushWithPlus3 {mc} {{nd}})) mc
+  where
+    con  = record { n = 4 ; element = just 0}
+    code = N.cs (\c -> c)
+    mc   = record {context = con ; stack = emptySingleLinkedStack ; nextCS = code}
+
+
+
+pushed-sample-equiv : {m : Meta} ->
+                      pushed-sample {m} ≡ record { nextCS  = liftContext plus3CS
+                                                  ; stack   = record { top = just (cons 0 nothing) }
+                                                  ; context = record { n   = 12} }
+pushed-sample-equiv = refl
+
+
+
+pushNum : N.CodeSegment Context Context
+pushNum = N.cs pn
+  where
+    pn : Context -> Context
+    pn record { n = n } = record { n = pred n  ; element = just n}
+
+
+pushOnce : Meta -> Meta
+pushOnce m = M.exec pushSingleLinkedStackCS m
+
+n-push : {m : Meta} {{_ : M.DataSegment Meta}} (n : ℕ) -> M.CodeSegment Meta Meta
+n-push {{mm}} (zero)      = M.cs {{mm}} {{mm}} id
+n-push {m} {{mm}} (suc n) = M.cs {{mm}} {{mm}} (\m -> M.exec {{mm}} {{mm}} (n-push {m} {{mm}} n) (pushOnce m))
+
+popOnce : Meta -> Meta
+popOnce m = M.exec popSingleLinkedStackCS m
+
+n-pop : {m : Meta} {{_ : M.DataSegment Meta}} (n : ℕ) -> M.CodeSegment Meta Meta
+n-pop {{mm}} (zero)      = M.cs {{mm}} {{mm}} id
+n-pop {m} {{mm}} (suc n) = M.cs {{mm}} {{mm}} (\m -> M.exec {{mm}} {{mm}} (n-pop {m} {{mm}} n) (popOnce m))
+
+
+
+initMeta : ℕ  -> Maybe ℕ -> N.CodeSegment Context Context -> Meta
+initMeta n mn code = record { context = record { n = n ; element = mn}
+                         ; stack   = emptySingleLinkedStack
+                         ; nextCS  = code
+                         }
+
+n-push-cs-exec = M.exec (n-push {meta} 3) meta
+  where
+    meta = (initMeta 5 (just 9) pushNum)
+
+
+n-push-cs-exec-equiv : n-push-cs-exec ≡ record { nextCS  = pushNum
+                                                ; context = record {n = 2 ; element = just 3}
+                                                ; stack   = record {top = just (cons 4 (just (cons 5 (just (cons 9 nothing)))))}}
+n-push-cs-exec-equiv = refl
+
+
+n-pop-cs-exec = M.exec (n-pop {meta} 4) meta
+  where
+    meta = record { nextCS  = N.cs id
+                  ; context = record { n = 0 ; element = nothing}
+                  ; stack   = record {top = just (cons 9 (just (cons 8 (just (cons 7 (just (cons 6 (just (cons 5 nothing)))))))))}
+                  }
+
+n-pop-cs-exec-equiv : n-pop-cs-exec ≡ record { nextCS  = N.cs id
+                                              ; context = record { n = 0 ; element = just 6}
+                                              ; stack   = record { top = just (cons 5 nothing)}
+                                              }
+
+n-pop-cs-exec-equiv = refl
+
+
+open ≡-Reasoning
+
+id-meta : ℕ -> ℕ -> SingleLinkedStack ℕ -> Meta
+id-meta n e s = record { context = record {n = n ; element = just e}
+                       ; nextCS = (N.cs id) ; stack = s}
+
+exec-comp : (f g : M.CodeSegment Meta Meta) (m : Meta) -> M.exec (M.csComp {m} f g) m ≡ M.exec f (M.exec g m)
+exec-comp (M.cs x) (M.cs _) m = refl
+
+
+push-pop-type : ℕ -> ℕ  -> ℕ -> Element ℕ -> Set₁
+push-pop-type n e x s = M.exec (M.csComp {meta} (M.cs popOnce) (M.cs pushOnce)) meta ≡ meta
+  where
+    meta = id-meta n e record {top = just (cons x (just s))}
+
+push-pop : (n e x : ℕ) -> (s : Element ℕ) ->  push-pop-type n e x s
+push-pop n e x s = refl
+
+
+
+pop-n-push-type : ℕ -> ℕ -> ℕ -> SingleLinkedStack ℕ -> Set₁
+pop-n-push-type n cn ce s = M.exec (M.csComp {meta} (M.cs popOnce) (n-push {meta} (suc n))) meta
+                         ≡ M.exec (n-push {meta} n) meta
+  where
+    meta = id-meta cn ce s
+
+pop-n-push : (n cn ce : ℕ) -> (s : SingleLinkedStack ℕ) -> pop-n-push-type n cn ce s
+
+pop-n-push zero cn ce s    = refl
+pop-n-push (suc n) cn ce s = begin
+  M.exec (M.csComp {id-meta cn ce s} (M.cs popOnce) (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc (suc n)))) (id-meta cn ce s)
+  ≡⟨ refl ⟩
+  M.exec (M.csComp {id-meta cn ce s} (M.cs popOnce) (M.csComp {id-meta cn ce s} (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n)) (M.cs pushOnce))) (id-meta cn ce s)
+  ≡⟨ exec-comp (M.cs popOnce) (M.csComp {id-meta cn ce s} (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n)) (M.cs pushOnce)) (id-meta cn ce s) ⟩                        
+  M.exec (M.cs popOnce) (M.exec (M.csComp {id-meta cn ce s} (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n)) (M.cs pushOnce)) (id-meta cn ce s))
+  ≡⟨ cong (\x -> M.exec (M.cs popOnce) x) (exec-comp (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n)) (M.cs pushOnce) (id-meta cn ce s)) ⟩
+  M.exec (M.cs popOnce) (M.exec (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n))(M.exec (M.cs pushOnce) (id-meta cn ce s)))
+  ≡⟨ refl ⟩                                                                                                          
+  M.exec (M.cs popOnce) (M.exec (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n)) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})))
+  ≡⟨ sym (exec-comp (M.cs popOnce) (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n)) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}))) ⟩
+  M.exec (M.csComp {id-meta cn ce s} (M.cs popOnce) (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n))) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}))
+  ≡⟨ pop-n-push n cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}) ⟩
+  M.exec (n-push n) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}))
+  ≡⟨ refl ⟩
+  M.exec (n-push n) (pushOnce (id-meta cn ce s))
+  ≡⟨ refl ⟩
+  M.exec (n-push n) (M.exec (M.cs pushOnce) (id-meta cn ce s))
+  ≡⟨ refl ⟩
+  M.exec (n-push {id-meta cn ce s} (suc n)) (id-meta cn ce s)
+  ∎
+
+
+
+n-push-pop-type : ℕ ->  ℕ  -> ℕ -> SingleLinkedStack ℕ -> Set₁
+n-push-pop-type n cn ce st = M.exec (M.csComp {meta} (n-pop {meta} n) (n-push {meta} n)) meta ≡ meta
+  where
+    meta = id-meta cn ce st
+
+n-push-pop : (n cn ce : ℕ) -> (s : SingleLinkedStack ℕ) -> n-push-pop-type n cn ce s
+n-push-pop zero    cn ce s = refl
+n-push-pop (suc n) cn ce s = begin
+  M.exec (M.csComp {id-meta cn ce s} (n-pop {id-meta cn ce s}  (suc n)) (n-push {id-meta cn ce s} (suc n))) (id-meta cn ce s)
+  ≡⟨ refl ⟩
+  M.exec (M.csComp  {id-meta cn ce s}  (M.cs (\m -> M.exec (n-pop {id-meta cn ce s} n) (popOnce m))) (n-push {id-meta cn ce s} (suc n))) (id-meta cn ce s)
+  ≡⟨ exec-comp (M.cs (\m -> M.exec (n-pop n) (popOnce m))) (n-push {id-meta cn ce s}  (suc n))  (id-meta cn ce s) ⟩
+  M.exec (M.cs (\m -> M.exec (n-pop  {id-meta cn ce s}  n) (popOnce m))) (M.exec (n-push {id-meta cn ce s} (suc n)) (id-meta cn ce s))
+  ≡⟨ refl ⟩
+  M.exec (n-pop n) (popOnce (M.exec (n-push {id-meta cn ce s} (suc n)) (id-meta cn ce s)))
+  ≡⟨ refl ⟩
+  M.exec (n-pop n) (M.exec (M.cs popOnce) (M.exec (n-push {id-meta cn ce s} (suc n)) (id-meta cn ce s)))
+  ≡⟨ cong (\x -> M.exec (n-pop  {id-meta cn ce s}  n) x) (sym (exec-comp (M.cs popOnce) (n-push {id-meta cn ce s}  (suc n)) (id-meta cn ce s))) ⟩
+  M.exec (n-pop n) (M.exec (M.csComp {id-meta cn ce s} (M.cs popOnce) (n-push {id-meta cn ce s} (suc n))) (id-meta cn ce s))
+  ≡⟨ cong (\x -> M.exec (n-pop {id-meta cn ce s}  n) x) (pop-n-push n cn ce s) ⟩
+  M.exec (n-pop n) (M.exec (n-push n) (id-meta cn ce s))
+  ≡⟨ sym (exec-comp (n-pop n) (n-push n) (id-meta cn ce s)) ⟩
+  M.exec (M.csComp (n-pop n) (n-push n)) (id-meta cn ce s)
+  ≡⟨ n-push-pop n cn ce s ⟩
+  id-meta cn ce s
+  ∎
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stack-subtype-sample.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,212 @@
+module stack-subtype-sample where
+
+open import Level renaming (suc to S ; zero to O)
+open import Function
+open import Data.Nat
+open import Data.Maybe
+open import Relation.Binary.PropositionalEquality
+
+open import stack-subtype @$\mathbb{N}$@
+open import subtype Context  as N
+open import subtype Meta     as M
+
+
+record Num : Set where
+  field
+    num : @$\mathbb{N}$@
+
+instance
+  NumIsNormalDataSegment : N.DataSegment Num
+  NumIsNormalDataSegment = record { get = (\c @$\rightarrow$@ record { num = Context.n c})
+                                  ; set = (\c n @$\rightarrow$@ record c {n = Num.num n})}
+  NumIsMetaDataSegment : M.DataSegment Num
+  NumIsMetaDataSegment = record { get = (\m @$\rightarrow$@ record {num = Context.n (Meta.context m)})
+                                ; set = (\m n @$\rightarrow$@ record m {context = record (Meta.context m) {n = Num.num n}})}
+
+
+plus3 : Num @$\rightarrow$@ Num
+plus3 record { num = n } = record {num = n + 3}
+
+plus3CS : N.CodeSegment Num Num
+plus3CS = N.cs plus3
+
+
+
+plus5AndPushWithPlus3 : {mc : Meta} {{_ : N.DataSegment Num}}
+               @$\rightarrow$@ M.CodeSegment Num (Meta)
+plus5AndPushWithPlus3 {mc} {{nn}} = M.cs (\n @$\rightarrow$@ record {context = con n ; nextCS = (liftContext {{nn}} {{nn}} plus3CS) ; stack = st} )
+  where
+    co    = Meta.context mc
+    con : Num @$\rightarrow$@ Context
+    con record { num = num } = N.DataSegment.set nn co record {num = num + 5}
+    st    = Meta.stack mc
+
+
+
+
+push-sample : {{_ : N.DataSegment Num}} {{_ : M.DataSegment Num}} @$\rightarrow$@  Meta
+push-sample {{nd}} {{md}} = M.exec {{md}} (plus5AndPushWithPlus3 {mc} {{nd}}) mc
+  where
+    con  = record { n = 4 ; element = just 0}
+    code = N.cs (\c @$\rightarrow$@ c)
+    mc   = record {context = con ; stack = emptySingleLinkedStack ; nextCS = code}
+
+
+push-sample-equiv : push-sample @$\equiv$@ record { nextCS  = liftContext plus3CS
+                                          ; stack   = record { top = nothing}
+                                          ; context = record { n = 9} }
+push-sample-equiv = refl
+
+
+pushed-sample : {m : Meta} {{_ : N.DataSegment Num}} {{_ : M.DataSegment Num}} @$\rightarrow$@  Meta
+pushed-sample {m} {{nd}} {{md}} = M.exec {{md}} (M.csComp {m} {{md}} pushSingleLinkedStackCS (plus5AndPushWithPlus3 {mc} {{nd}})) mc
+  where
+    con  = record { n = 4 ; element = just 0}
+    code = N.cs (\c @$\rightarrow$@ c)
+    mc   = record {context = con ; stack = emptySingleLinkedStack ; nextCS = code}
+
+
+
+pushed-sample-equiv : {m : Meta} @$\rightarrow$@
+                      pushed-sample {m} @$\equiv$@ record { nextCS  = liftContext plus3CS
+                                                  ; stack   = record { top = just (cons 0 nothing) }
+                                                  ; context = record { n   = 12} }
+pushed-sample-equiv = refl
+
+
+
+pushNum : N.CodeSegment Context Context
+pushNum = N.cs pn
+  where
+    pn : Context @$\rightarrow$@ Context
+    pn record { n = n } = record { n = pred n  ; element = just n}
+
+
+pushOnce : Meta @$\rightarrow$@ Meta
+pushOnce m = M.exec pushSingleLinkedStackCS m
+
+n-push : {m : Meta} {{_ : M.DataSegment Meta}} (n : @$\mathbb{N}$@) @$\rightarrow$@ M.CodeSegment Meta Meta
+n-push {{mm}} (zero)      = M.cs {{mm}} {{mm}} id
+n-push {m} {{mm}} (suc n) = M.cs {{mm}} {{mm}} (\m @$\rightarrow$@ M.exec {{mm}} {{mm}} (n-push {m} {{mm}} n) (pushOnce m))
+
+popOnce : Meta @$\rightarrow$@ Meta
+popOnce m = M.exec popSingleLinkedStackCS m
+
+n-pop : {m : Meta} {{_ : M.DataSegment Meta}} (n : @$\mathbb{N}$@) @$\rightarrow$@ M.CodeSegment Meta Meta
+n-pop {{mm}} (zero)      = M.cs {{mm}} {{mm}} id
+n-pop {m} {{mm}} (suc n) = M.cs {{mm}} {{mm}} (\m @$\rightarrow$@ M.exec {{mm}} {{mm}} (n-pop {m} {{mm}} n) (popOnce m))
+
+
+
+initMeta : @$\mathbb{N}$@  @$\rightarrow$@ Maybe @$\mathbb{N}$@ @$\rightarrow$@ N.CodeSegment Context Context @$\rightarrow$@ Meta
+initMeta n mn code = record { context = record { n = n ; element = mn}
+                         ; stack   = emptySingleLinkedStack
+                         ; nextCS  = code
+                         }
+
+n-push-cs-exec = M.exec (n-push {meta} 3) meta
+  where
+    meta = (initMeta 5 (just 9) pushNum)
+
+
+n-push-cs-exec-equiv : n-push-cs-exec @$\equiv$@ record { nextCS  = pushNum
+                                                ; context = record {n = 2 ; element = just 3}
+                                                ; stack   = record {top = just (cons 4 (just (cons 5 (just (cons 9 nothing)))))}}
+n-push-cs-exec-equiv = refl
+
+
+n-pop-cs-exec = M.exec (n-pop {meta} 4) meta
+  where
+    meta = record { nextCS  = N.cs id
+                  ; context = record { n = 0 ; element = nothing}
+                  ; stack   = record {top = just (cons 9 (just (cons 8 (just (cons 7 (just (cons 6 (just (cons 5 nothing)))))))))}
+                  }
+
+n-pop-cs-exec-equiv : n-pop-cs-exec @$\equiv$@ record { nextCS  = N.cs id
+                                              ; context = record { n = 0 ; element = just 6}
+                                              ; stack   = record { top = just (cons 5 nothing)}
+                                              }
+
+n-pop-cs-exec-equiv = refl
+
+
+open @$\equiv$@-Reasoning
+
+id-meta : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ SingleLinkedStack @$\mathbb{N}$@ @$\rightarrow$@ Meta
+id-meta n e s = record { context = record {n = n ; element = just e}
+                       ; nextCS = (N.cs id) ; stack = s}
+
+exec-comp : (f g : M.CodeSegment Meta Meta) (m : Meta) @$\rightarrow$@ M.exec (M.csComp {m} f g) m @$\equiv$@ M.exec f (M.exec g m)
+exec-comp (M.cs x) (M.cs _) m = refl
+
+
+push-pop-type : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@  @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ Element @$\mathbb{N}$@ @$\rightarrow$@ Set@$\_{1}$@
+push-pop-type n e x s = M.exec (M.csComp {meta} (M.cs popOnce) (M.cs pushOnce)) meta @$\equiv$@ meta
+  where
+    meta = id-meta n e record {top = just (cons x (just s))}
+
+push-pop : (n e x : @$\mathbb{N}$@) @$\rightarrow$@ (s : Element @$\mathbb{N}$@) @$\rightarrow$@  push-pop-type n e x s
+push-pop n e x s = refl
+
+
+
+pop-n-push-type : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ SingleLinkedStack @$\mathbb{N}$@ @$\rightarrow$@ Set@$\_{1}$@
+pop-n-push-type n cn ce s = M.exec (M.csComp {meta} (M.cs popOnce) (n-push {meta} (suc n))) meta
+                         @$\equiv$@ M.exec (n-push {meta} n) meta
+  where
+    meta = id-meta cn ce s
+
+pop-n-push : (n cn ce : @$\mathbb{N}$@) @$\rightarrow$@ (s : SingleLinkedStack @$\mathbb{N}$@) @$\rightarrow$@ pop-n-push-type n cn ce s
+
+pop-n-push zero cn ce s    = refl
+pop-n-push (suc n) cn ce s = begin
+  M.exec (M.csComp {id-meta cn ce s} (M.cs popOnce) (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc (suc n)))) (id-meta cn ce s)
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (M.csComp {id-meta cn ce s} (M.cs popOnce) (M.csComp {id-meta cn ce s} (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n)) (M.cs pushOnce))) (id-meta cn ce s)
+  @$\equiv$@@$\langle$@ exec-comp (M.cs popOnce) (M.csComp {id-meta cn ce s} (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n)) (M.cs pushOnce)) (id-meta cn ce s) @$\rangle$@                        
+  M.exec (M.cs popOnce) (M.exec (M.csComp {id-meta cn ce s} (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n)) (M.cs pushOnce)) (id-meta cn ce s))
+  @$\equiv$@@$\langle$@ cong (\x @$\rightarrow$@ M.exec (M.cs popOnce) x) (exec-comp (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n)) (M.cs pushOnce) (id-meta cn ce s)) @$\rangle$@
+  M.exec (M.cs popOnce) (M.exec (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n))(M.exec (M.cs pushOnce) (id-meta cn ce s)))
+  @$\equiv$@@$\langle$@ refl @$\rangle$@                                                                                                          
+  M.exec (M.cs popOnce) (M.exec (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n)) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})))
+  @$\equiv$@@$\langle$@ sym (exec-comp (M.cs popOnce) (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n)) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}))) @$\rangle$@
+  M.exec (M.csComp {id-meta cn ce s} (M.cs popOnce) (n-push {id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))})} (suc n))) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}))
+  @$\equiv$@@$\langle$@ pop-n-push n cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}) @$\rangle$@
+  M.exec (n-push n) (id-meta cn ce (record {top = just (cons ce (SingleLinkedStack.top s))}))
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (n-push n) (pushOnce (id-meta cn ce s))
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (n-push n) (M.exec (M.cs pushOnce) (id-meta cn ce s))
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (n-push {id-meta cn ce s} (suc n)) (id-meta cn ce s)
+  @$\blacksquare$@
+
+
+
+n-push-pop-type : @$\mathbb{N}$@ @$\rightarrow$@  @$\mathbb{N}$@  @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ SingleLinkedStack @$\mathbb{N}$@ @$\rightarrow$@ Set@$\_{1}$@
+n-push-pop-type n cn ce st = M.exec (M.csComp {meta} (n-pop {meta} n) (n-push {meta} n)) meta @$\equiv$@ meta
+  where
+    meta = id-meta cn ce st
+
+n-push-pop : (n cn ce : @$\mathbb{N}$@) @$\rightarrow$@ (s : SingleLinkedStack @$\mathbb{N}$@) @$\rightarrow$@ n-push-pop-type n cn ce s
+n-push-pop zero    cn ce s = refl
+n-push-pop (suc n) cn ce s = begin
+  M.exec (M.csComp {id-meta cn ce s} (n-pop {id-meta cn ce s}  (suc n)) (n-push {id-meta cn ce s} (suc n))) (id-meta cn ce s)
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (M.csComp  {id-meta cn ce s}  (M.cs (\m @$\rightarrow$@ M.exec (n-pop {id-meta cn ce s} n) (popOnce m))) (n-push {id-meta cn ce s} (suc n))) (id-meta cn ce s)
+  @$\equiv$@@$\langle$@ exec-comp (M.cs (\m @$\rightarrow$@ M.exec (n-pop n) (popOnce m))) (n-push {id-meta cn ce s}  (suc n))  (id-meta cn ce s) @$\rangle$@
+  M.exec (M.cs (\m @$\rightarrow$@ M.exec (n-pop  {id-meta cn ce s}  n) (popOnce m))) (M.exec (n-push {id-meta cn ce s} (suc n)) (id-meta cn ce s))
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (n-pop n) (popOnce (M.exec (n-push {id-meta cn ce s} (suc n)) (id-meta cn ce s)))
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+  M.exec (n-pop n) (M.exec (M.cs popOnce) (M.exec (n-push {id-meta cn ce s} (suc n)) (id-meta cn ce s)))
+  @$\equiv$@@$\langle$@ cong (\x @$\rightarrow$@ M.exec (n-pop  {id-meta cn ce s}  n) x) (sym (exec-comp (M.cs popOnce) (n-push {id-meta cn ce s}  (suc n)) (id-meta cn ce s))) @$\rangle$@
+  M.exec (n-pop n) (M.exec (M.csComp {id-meta cn ce s} (M.cs popOnce) (n-push {id-meta cn ce s} (suc n))) (id-meta cn ce s))
+  @$\equiv$@@$\langle$@ cong (\x @$\rightarrow$@ M.exec (n-pop {id-meta cn ce s}  n) x) (pop-n-push n cn ce s) @$\rangle$@
+  M.exec (n-pop n) (M.exec (n-push n) (id-meta cn ce s))
+  @$\equiv$@@$\langle$@ sym (exec-comp (n-pop n) (n-push n) (id-meta cn ce s)) @$\rangle$@
+  M.exec (M.csComp (n-pop n) (n-push n)) (id-meta cn ce s)
+  @$\equiv$@@$\langle$@ n-push-pop n cn ce s @$\rangle$@
+  id-meta cn ce s
+  @$\blacksquare$@
+ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stack-subtype.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,123 @@
+open import Level hiding (lift)
+open import Data.Maybe
+open import Data.Product
+open import Data.Nat hiding (suc)
+open import Function
+
+module stack-subtype (A : Set) where
+
+-- data definitions
+
+data Element (a : Set) : Set where
+  cons : a -> Maybe (Element a) -> Element a
+
+datum : {a : Set} -> Element a -> a
+datum (cons a _) = a
+
+next : {a : Set} -> Element a -> Maybe (Element a)
+next (cons _ n) = n
+
+record SingleLinkedStack (a : Set) : Set where
+  field
+    top : Maybe (Element a)
+open SingleLinkedStack
+
+record Context : Set where
+  field
+    -- fields for concrete data segments
+    n       : ℕ 
+    -- fields for stack
+    element : Maybe A
+
+
+
+
+
+open import subtype Context as N
+
+instance
+  ContextIsDataSegment : N.DataSegment Context
+  ContextIsDataSegment = record {get = (\c -> c) ; set = (\_ c -> c)}
+
+
+record Meta  : Set₁ where
+  field
+    -- context as set of data segments
+    context : Context
+    stack   : SingleLinkedStack A  
+    nextCS  : N.CodeSegment Context Context
+    
+
+    
+
+open import subtype Meta as M
+
+instance
+  MetaIncludeContext : M.DataSegment Context
+  MetaIncludeContext = record { get = Meta.context
+                              ; set = (\m c -> record m {context = c}) }
+
+  MetaIsMetaDataSegment : M.DataSegment Meta
+  MetaIsMetaDataSegment  = record { get = (\m -> m) ; set = (\_ m -> m) }
+
+
+liftMeta : {X Y : Set} {{_ : M.DataSegment X}} {{_ : M.DataSegment Y}} -> N.CodeSegment X Y -> M.CodeSegment X Y
+liftMeta (N.cs f) = M.cs f
+
+liftContext : {X Y : Set} {{_ : N.DataSegment X}} {{_ : N.DataSegment Y}} -> N.CodeSegment X Y -> N.CodeSegment Context Context
+liftContext {{x}} {{y}} (N.cs f) = N.cs (\c -> N.DataSegment.set y c (f (N.DataSegment.get x c)))
+ 
+-- definition based from Gears(209:5708390a9d88) src/parallel_execution
+
+emptySingleLinkedStack : SingleLinkedStack A
+emptySingleLinkedStack = record {top = nothing}
+
+
+pushSingleLinkedStack : Meta -> Meta
+pushSingleLinkedStack m = M.exec (liftMeta n) (record m {stack = (push s e) })
+  where
+    n = Meta.nextCS m
+    s = Meta.stack  m
+    e = Context.element (Meta.context m)
+    push : SingleLinkedStack A -> Maybe A -> SingleLinkedStack A
+    push s nothing  = s
+    push s (just x) = record {top = just (cons x (top s))}
+
+
+
+popSingleLinkedStack : Meta -> Meta
+popSingleLinkedStack m = M.exec (liftMeta n) (record m {stack = (st m) ; context = record con {element = (elem m)}})
+  where
+    n = Meta.nextCS m
+    con  = Meta.context m
+    elem : Meta -> Maybe A
+    elem record {stack = record { top = (just (cons x _)) }} = just x
+    elem record {stack = record { top = nothing           }} = nothing
+    st : Meta -> SingleLinkedStack A
+    st record {stack = record { top = (just (cons _ s)) }} = record {top = s}
+    st record {stack = record { top = nothing           }} = record {top = nothing}
+   
+
+
+
+pushSingleLinkedStackCS : M.CodeSegment Meta Meta
+pushSingleLinkedStackCS = M.cs pushSingleLinkedStack
+
+popSingleLinkedStackCS : M.CodeSegment Meta Meta
+popSingleLinkedStackCS = M.cs popSingleLinkedStack
+
+
+-- for sample
+
+firstContext : Context
+firstContext = record {element = nothing ; n = 0}
+
+
+firstMeta : Meta 
+firstMeta = record { context = firstContext
+                   ; stack = emptySingleLinkedStack
+                   ; nextCS = (N.cs (\m -> m))
+                   }
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stack-subtype.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,123 @@
+open import Level hiding (lift)
+open import Data.Maybe
+open import Data.Product
+open import Data.Nat hiding (suc)
+open import Function
+
+module stack-subtype (A : Set) where
+
+-- data definitions
+
+data Element (a : Set) : Set where
+  cons : a @$\rightarrow$@ Maybe (Element a) @$\rightarrow$@ Element a
+
+datum : {a : Set} @$\rightarrow$@ Element a @$\rightarrow$@ a
+datum (cons a _) = a
+
+next : {a : Set} @$\rightarrow$@ Element a @$\rightarrow$@ Maybe (Element a)
+next (cons _ n) = n
+
+record SingleLinkedStack (a : Set) : Set where
+  field
+    top : Maybe (Element a)
+open SingleLinkedStack
+
+record Context : Set where
+  field
+    -- fields for concrete data segments
+    n       : @$\mathbb{N}$@ 
+    -- fields for stack
+    element : Maybe A
+
+
+
+
+
+open import subtype Context as N
+
+instance
+  ContextIsDataSegment : N.DataSegment Context
+  ContextIsDataSegment = record {get = (\c @$\rightarrow$@ c) ; set = (\_ c @$\rightarrow$@ c)}
+
+
+record Meta  : Set@$\_{1}$@ where
+  field
+    -- context as set of data segments
+    context : Context
+    stack   : SingleLinkedStack A  
+    nextCS  : N.CodeSegment Context Context
+    
+
+    
+
+open import subtype Meta as M
+
+instance
+  MetaIncludeContext : M.DataSegment Context
+  MetaIncludeContext = record { get = Meta.context
+                              ; set = (\m c @$\rightarrow$@ record m {context = c}) }
+
+  MetaIsMetaDataSegment : M.DataSegment Meta
+  MetaIsMetaDataSegment  = record { get = (\m @$\rightarrow$@ m) ; set = (\_ m @$\rightarrow$@ m) }
+
+
+liftMeta : {X Y : Set} {{_ : M.DataSegment X}} {{_ : M.DataSegment Y}} @$\rightarrow$@ N.CodeSegment X Y @$\rightarrow$@ M.CodeSegment X Y
+liftMeta (N.cs f) = M.cs f
+
+liftContext : {X Y : Set} {{_ : N.DataSegment X}} {{_ : N.DataSegment Y}} @$\rightarrow$@ N.CodeSegment X Y @$\rightarrow$@ N.CodeSegment Context Context
+liftContext {{x}} {{y}} (N.cs f) = N.cs (\c @$\rightarrow$@ N.DataSegment.set y c (f (N.DataSegment.get x c)))
+ 
+-- definition based from Gears(209:5708390a9d88) src/parallel_execution
+
+emptySingleLinkedStack : SingleLinkedStack A
+emptySingleLinkedStack = record {top = nothing}
+
+
+pushSingleLinkedStack : Meta @$\rightarrow$@ Meta
+pushSingleLinkedStack m = M.exec (liftMeta n) (record m {stack = (push s e) })
+  where
+    n = Meta.nextCS m
+    s = Meta.stack  m
+    e = Context.element (Meta.context m)
+    push : SingleLinkedStack A @$\rightarrow$@ Maybe A @$\rightarrow$@ SingleLinkedStack A
+    push s nothing  = s
+    push s (just x) = record {top = just (cons x (top s))}
+
+
+
+popSingleLinkedStack : Meta @$\rightarrow$@ Meta
+popSingleLinkedStack m = M.exec (liftMeta n) (record m {stack = (st m) ; context = record con {element = (elem m)}})
+  where
+    n = Meta.nextCS m
+    con  = Meta.context m
+    elem : Meta @$\rightarrow$@ Maybe A
+    elem record {stack = record { top = (just (cons x _)) }} = just x
+    elem record {stack = record { top = nothing           }} = nothing
+    st : Meta @$\rightarrow$@ SingleLinkedStack A
+    st record {stack = record { top = (just (cons _ s)) }} = record {top = s}
+    st record {stack = record { top = nothing           }} = record {top = nothing}
+   
+
+
+
+pushSingleLinkedStackCS : M.CodeSegment Meta Meta
+pushSingleLinkedStackCS = M.cs pushSingleLinkedStack
+
+popSingleLinkedStackCS : M.CodeSegment Meta Meta
+popSingleLinkedStackCS = M.cs popSingleLinkedStack
+
+
+-- for sample
+
+firstContext : Context
+firstContext = record {element = nothing ; n = 0}
+
+
+firstMeta : Meta 
+firstMeta = record { context = firstContext
+                   ; stack = emptySingleLinkedStack
+                   ; nextCS = (N.cs (\m @$\rightarrow$@ m))
+                   }
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stack.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,149 @@
+open import Level renaming (suc to succ ; zero to Zero )
+module stack  where
+
+open import Relation.Binary.PropositionalEquality
+open import Relation.Binary.Core
+open import Data.Nat
+
+ex : 1 + 2 ≡ 3
+ex = refl
+
+data Bool {n : Level } : Set n where
+  True  : Bool
+  False : Bool
+
+record _∧_ {n : Level } (a : Set n) (b : Set n): Set n where
+  field
+    pi1 : a
+    pi2 : b
+
+data Maybe {n : Level } (a : Set n) : Set n where
+  Nothing : Maybe a
+  Just    : a -> Maybe a
+
+record StackMethods {n m : Level } (a : Set n ) {t : Set m }(stackImpl : Set n ) : Set (m Level.⊔ n) where
+  field
+    push : stackImpl -> a -> (stackImpl -> t) -> t
+    pop  : stackImpl -> (stackImpl -> Maybe a -> t) -> t
+    pop2 : stackImpl -> (stackImpl -> Maybe a -> Maybe a -> t) -> t
+    get  : stackImpl -> (stackImpl -> Maybe a -> t) -> t
+    get2 : stackImpl -> (stackImpl -> Maybe a -> Maybe a -> t) -> t
+    clear : stackImpl -> (stackImpl -> t) -> t
+open StackMethods
+
+record Stack {n m : Level } (a : Set n ) {t : Set m } (si : Set n ) : Set (m Level.⊔ n) where
+  field
+    stack : si
+    stackMethods : StackMethods {n} {m} a {t} si
+  pushStack :  a -> (Stack a si -> t) -> t
+  pushStack d next = push (stackMethods ) (stack ) d (\s1 -> next (record {stack = s1 ; stackMethods = stackMethods } ))
+  popStack : (Stack a si -> Maybe a  -> t) -> t
+  popStack next = pop (stackMethods ) (stack ) (\s1 d1 -> next (record {stack = s1 ; stackMethods = stackMethods }) d1 )
+  pop2Stack :  (Stack a si -> Maybe a -> Maybe a -> t) -> t
+  pop2Stack next = pop2 (stackMethods ) (stack ) (\s1 d1 d2 -> next (record {stack = s1 ; stackMethods = stackMethods }) d1 d2)
+  getStack :  (Stack a si -> Maybe a  -> t) -> t
+  getStack next = get (stackMethods ) (stack ) (\s1 d1 -> next (record {stack = s1 ; stackMethods = stackMethods }) d1 )
+  get2Stack :  (Stack a si -> Maybe a -> Maybe a -> t) -> t
+  get2Stack next = get2 (stackMethods ) (stack ) (\s1 d1 d2 -> next (record {stack = s1 ; stackMethods = stackMethods }) d1 d2)
+  clearStack : (Stack a si -> t) -> t
+  clearStack next = clear (stackMethods ) (stack ) (\s1 -> next (record {stack = s1 ; stackMethods = stackMethods } ))
+
+open Stack
+
+{--
+data Element {n : Level } (a : Set n) : Set n where
+  cons : a -> Maybe (Element a) -> Element a
+
+
+datum : {n : Level } {a : Set n} -> Element a -> a
+datum (cons a _) = a
+
+next : {n : Level } {a : Set n} -> Element a -> Maybe (Element a)
+next (cons _ n) = n
+--}
+
+
+-- cannot define recrusive record definition. so use linked list with maybe.
+record Element {l : Level} (a : Set l) : Set l where
+  inductive
+  constructor cons
+  field
+    datum : a  -- `data` is reserved by Agda.
+    next : Maybe (Element a)
+
+open Element
+
+
+record SingleLinkedStack {n : Level } (a : Set n) : Set n where
+  field
+    top : Maybe (Element a)
+open SingleLinkedStack
+
+pushSingleLinkedStack : {n m : Level } {t : Set m } {Data : Set n} -> SingleLinkedStack Data -> Data -> (Code : SingleLinkedStack Data -> t) -> t
+pushSingleLinkedStack stack datum next = next stack1
+  where
+    element = cons datum (top stack)
+    stack1  = record {top = Just element}
+
+
+popSingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} -> SingleLinkedStack a -> (Code : SingleLinkedStack a -> (Maybe a) -> t) -> t
+popSingleLinkedStack stack cs with (top stack)
+...                                | Nothing = cs stack  Nothing
+...                                | Just d  = cs stack1 (Just data1)
+  where
+    data1  = datum d
+    stack1 = record { top = (next d) }
+
+pop2SingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} -> SingleLinkedStack a -> (Code : SingleLinkedStack a -> (Maybe a) -> (Maybe a) -> t) -> t
+pop2SingleLinkedStack {n} {m} {t} {a} stack cs with (top stack)
+...                                | Nothing = cs stack Nothing Nothing
+...                                | Just d = pop2SingleLinkedStack' {n} {m} stack cs
+  where
+    pop2SingleLinkedStack' : {n m : Level } {t : Set m }  -> SingleLinkedStack a -> (Code : SingleLinkedStack a -> (Maybe a) -> (Maybe a) -> t) -> t
+    pop2SingleLinkedStack' stack cs with (next d)
+    ...              | Nothing = cs stack Nothing Nothing
+    ...              | Just d1 = cs (record {top = (next d1)}) (Just (datum d)) (Just (datum d1))
+
+
+getSingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} -> SingleLinkedStack a -> (Code : SingleLinkedStack a -> (Maybe a) -> t) -> t
+getSingleLinkedStack stack cs with (top stack)
+...                                | Nothing = cs stack  Nothing
+...                                | Just d  = cs stack (Just data1)
+  where
+    data1  = datum d
+
+get2SingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} -> SingleLinkedStack a -> (Code : SingleLinkedStack a -> (Maybe a) -> (Maybe a) -> t) -> t
+get2SingleLinkedStack {n} {m} {t} {a} stack cs with (top stack)
+...                                | Nothing = cs stack Nothing Nothing
+...                                | Just d = get2SingleLinkedStack' {n} {m} stack cs
+  where
+    get2SingleLinkedStack' : {n m : Level} {t : Set m } -> SingleLinkedStack a -> (Code : SingleLinkedStack a -> (Maybe a) -> (Maybe a) -> t) -> t
+    get2SingleLinkedStack' stack cs with (next d)
+    ...              | Nothing = cs stack Nothing Nothing
+    ...              | Just d1 = cs stack (Just (datum d)) (Just (datum d1))
+
+clearSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} -> SingleLinkedStack a -> (SingleLinkedStack a -> t) -> t
+clearSingleLinkedStack stack next = next (record {top = Nothing})
+
+
+emptySingleLinkedStack : {n : Level } {a : Set n} -> SingleLinkedStack a
+emptySingleLinkedStack = record {top = Nothing}
+
+-----
+-- Basic stack implementations are specifications of a Stack
+--
+singleLinkedStackSpec : {n m : Level } {t : Set m } {a : Set n} -> StackMethods {n} {m} a {t} (SingleLinkedStack a)
+singleLinkedStackSpec = record {
+                                   push = pushSingleLinkedStack
+                                 ; pop  = popSingleLinkedStack
+                                 ; pop2 = pop2SingleLinkedStack
+                                 ; get  = getSingleLinkedStack
+                                 ; get2 = get2SingleLinkedStack
+                                 ; clear = clearSingleLinkedStack
+                           }
+
+createSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} -> Stack {n} {m} a {t} (SingleLinkedStack a)
+createSingleLinkedStack = record {
+                             stack = emptySingleLinkedStack ;
+                             stackMethods = singleLinkedStackSpec
+                           }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stack.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,149 @@
+open import Level renaming (suc to succ ; zero to Zero )
+module stack  where
+
+open import Relation.Binary.PropositionalEquality
+open import Relation.Binary.Core
+open import Data.Nat
+
+ex : 1 + 2 @$\equiv$@ 3
+ex = refl
+
+data Bool {n : Level } : Set n where
+  True  : Bool
+  False : Bool
+
+record _@$\wedge$@_ {n : Level } (a : Set n) (b : Set n): Set n where
+  field
+    pi1 : a
+    pi2 : b
+
+data Maybe {n : Level } (a : Set n) : Set n where
+  Nothing : Maybe a
+  Just    : a @$\rightarrow$@ Maybe a
+
+record StackMethods {n m : Level } (a : Set n ) {t : Set m }(stackImpl : Set n ) : Set (m Level.@$\sqcup$@ n) where
+  field
+    push : stackImpl @$\rightarrow$@ a @$\rightarrow$@ (stackImpl @$\rightarrow$@ t) @$\rightarrow$@ t
+    pop  : stackImpl @$\rightarrow$@ (stackImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t
+    pop2 : stackImpl @$\rightarrow$@ (stackImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t
+    get  : stackImpl @$\rightarrow$@ (stackImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t
+    get2 : stackImpl @$\rightarrow$@ (stackImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t
+    clear : stackImpl @$\rightarrow$@ (stackImpl @$\rightarrow$@ t) @$\rightarrow$@ t
+open StackMethods
+
+record Stack {n m : Level } (a : Set n ) {t : Set m } (si : Set n ) : Set (m Level.@$\sqcup$@ n) where
+  field
+    stack : si
+    stackMethods : StackMethods {n} {m} a {t} si
+  pushStack :  a @$\rightarrow$@ (Stack a si @$\rightarrow$@ t) @$\rightarrow$@ t
+  pushStack d next = push (stackMethods ) (stack ) d (\s1 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods } ))
+  popStack : (Stack a si @$\rightarrow$@ Maybe a  @$\rightarrow$@ t) @$\rightarrow$@ t
+  popStack next = pop (stackMethods ) (stack ) (\s1 d1 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods }) d1 )
+  pop2Stack :  (Stack a si @$\rightarrow$@ Maybe a @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t
+  pop2Stack next = pop2 (stackMethods ) (stack ) (\s1 d1 d2 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods }) d1 d2)
+  getStack :  (Stack a si @$\rightarrow$@ Maybe a  @$\rightarrow$@ t) @$\rightarrow$@ t
+  getStack next = get (stackMethods ) (stack ) (\s1 d1 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods }) d1 )
+  get2Stack :  (Stack a si @$\rightarrow$@ Maybe a @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t
+  get2Stack next = get2 (stackMethods ) (stack ) (\s1 d1 d2 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods }) d1 d2)
+  clearStack : (Stack a si @$\rightarrow$@ t) @$\rightarrow$@ t
+  clearStack next = clear (stackMethods ) (stack ) (\s1 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods } ))
+
+open Stack
+
+{--
+data Element {n : Level } (a : Set n) : Set n where
+  cons : a @$\rightarrow$@ Maybe (Element a) @$\rightarrow$@ Element a
+
+
+datum : {n : Level } {a : Set n} @$\rightarrow$@ Element a @$\rightarrow$@ a
+datum (cons a _) = a
+
+next : {n : Level } {a : Set n} @$\rightarrow$@ Element a @$\rightarrow$@ Maybe (Element a)
+next (cons _ n) = n
+--}
+
+
+-- cannot define recrusive record definition. so use linked list with maybe.
+record Element {l : Level} (a : Set l) : Set l where
+  inductive
+  constructor cons
+  field
+    datum : a  -- `data` is reserved by Agda.
+    next : Maybe (Element a)
+
+open Element
+
+
+record SingleLinkedStack {n : Level } (a : Set n) : Set n where
+  field
+    top : Maybe (Element a)
+open SingleLinkedStack
+
+pushSingleLinkedStack : {n m : Level } {t : Set m } {Data : Set n} @$\rightarrow$@ SingleLinkedStack Data @$\rightarrow$@ Data @$\rightarrow$@ (Code : SingleLinkedStack Data @$\rightarrow$@ t) @$\rightarrow$@ t
+pushSingleLinkedStack stack datum next = next stack1
+  where
+    element = cons datum (top stack)
+    stack1  = record {top = Just element}
+
+
+popSingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t
+popSingleLinkedStack stack cs with (top stack)
+...                                | Nothing = cs stack  Nothing
+...                                | Just d  = cs stack1 (Just data1)
+  where
+    data1  = datum d
+    stack1 = record { top = (next d) }
+
+pop2SingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t
+pop2SingleLinkedStack {n} {m} {t} {a} stack cs with (top stack)
+...                                | Nothing = cs stack Nothing Nothing
+...                                | Just d = pop2SingleLinkedStack' {n} {m} stack cs
+  where
+    pop2SingleLinkedStack' : {n m : Level } {t : Set m }  @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t
+    pop2SingleLinkedStack' stack cs with (next d)
+    ...              | Nothing = cs stack Nothing Nothing
+    ...              | Just d1 = cs (record {top = (next d1)}) (Just (datum d)) (Just (datum d1))
+
+
+getSingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t
+getSingleLinkedStack stack cs with (top stack)
+...                                | Nothing = cs stack  Nothing
+...                                | Just d  = cs stack (Just data1)
+  where
+    data1  = datum d
+
+get2SingleLinkedStack : {n m : Level } {t : Set m } {a  : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t
+get2SingleLinkedStack {n} {m} {t} {a} stack cs with (top stack)
+...                                | Nothing = cs stack Nothing Nothing
+...                                | Just d = get2SingleLinkedStack' {n} {m} stack cs
+  where
+    get2SingleLinkedStack' : {n m : Level} {t : Set m } @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t
+    get2SingleLinkedStack' stack cs with (next d)
+    ...              | Nothing = cs stack Nothing Nothing
+    ...              | Just d1 = cs stack (Just (datum d)) (Just (datum d1))
+
+clearSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (SingleLinkedStack a @$\rightarrow$@ t) @$\rightarrow$@ t
+clearSingleLinkedStack stack next = next (record {top = Nothing})
+
+
+emptySingleLinkedStack : {n : Level } {a : Set n} @$\rightarrow$@ SingleLinkedStack a
+emptySingleLinkedStack = record {top = Nothing}
+
+-----
+-- Basic stack implementations are specifications of a Stack
+--
+singleLinkedStackSpec : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ StackMethods {n} {m} a {t} (SingleLinkedStack a)
+singleLinkedStackSpec = record {
+                                   push = pushSingleLinkedStack
+                                 ; pop  = popSingleLinkedStack
+                                 ; pop2 = pop2SingleLinkedStack
+                                 ; get  = getSingleLinkedStack
+                                 ; get2 = get2SingleLinkedStack
+                                 ; clear = clearSingleLinkedStack
+                           }
+
+createSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ Stack {n} {m} a {t} (SingleLinkedStack a)
+createSingleLinkedStack = record {
+                             stack = emptySingleLinkedStack ;
+                             stackMethods = singleLinkedStackSpec
+                           }
Binary file src/stack.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stackImpl.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,38 @@
+record Element {l : Level} (a : Set l) : Set l where
+  inductive
+  constructor cons
+  field
+    datum : a  -- `data` is reserved by Agda.
+    next : Maybe (Element a)
+open Element
+
+record SingleLinkedStack {n : Level } (a : Set n) : Set n where
+  field
+  top : Maybe (Element a)
+open SingleLinkedStack
+
+pushSingleLinkedStack : {n m : Level } {t : Set m } {Data : Set n} -> SingleLinkedStack Data -> Data -> (Code : SingleLinkedStack Data -> t) -> t
+pushSingleLinkedStack stack datum next = next stack1
+  where
+    element = cons datum (top stack)
+    stack1  = record {top = Just element}
+
+-- push 以下は省略
+
+-- Basic stack implementations are specifications of a Stack
+
+singleLinkedStackSpec : {n m : Level } {t : Set m } {a : Set n} -> StackMethods {n} {m} a {t} (SingleLinkedStack a)
+singleLinkedStackSpec = record {
+                                   push = pushSingleLinkedStack
+                                 ; pop  = popSingleLinkedStack
+                                 ; pop2 = pop2SingleLinkedStack
+                                 ; get  = getSingleLinkedStack
+                                 ; get2 = get2SingleLinkedStack
+                                 ; clear = clearSingleLinkedStack
+                               }
+
+createSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} -> Stack {n} {m} a {t} (SingleLinkedStack a)
+createSingleLinkedStack = record {
+                            stack = emptySingleLinkedStack ;
+                            stackMethods = singleLinkedStackSpec
+                          }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stackImpl.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,38 @@
+record Element {l : Level} (a : Set l) : Set l where
+  inductive
+  constructor cons
+  field
+    datum : a  -- `data` is reserved by Agda.
+    next : Maybe (Element a)
+open Element
+
+record SingleLinkedStack {n : Level } (a : Set n) : Set n where
+  field
+  top : Maybe (Element a)
+open SingleLinkedStack
+
+pushSingleLinkedStack : {n m : Level } {t : Set m } {Data : Set n} @$\rightarrow$@ SingleLinkedStack Data @$\rightarrow$@ Data @$\rightarrow$@ (Code : SingleLinkedStack Data @$\rightarrow$@ t) @$\rightarrow$@ t
+pushSingleLinkedStack stack datum next = next stack1
+  where
+    element = cons datum (top stack)
+    stack1  = record {top = Just element}
+
+-- push 以下は省略
+
+-- Basic stack implementations are specifications of a Stack
+
+singleLinkedStackSpec : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ StackMethods {n} {m} a {t} (SingleLinkedStack a)
+singleLinkedStackSpec = record {
+                                   push = pushSingleLinkedStack
+                                 ; pop  = popSingleLinkedStack
+                                 ; pop2 = pop2SingleLinkedStack
+                                 ; get  = getSingleLinkedStack
+                                 ; get2 = get2SingleLinkedStack
+                                 ; clear = clearSingleLinkedStack
+                               }
+
+createSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ Stack {n} {m} a {t} (SingleLinkedStack a)
+createSingleLinkedStack = record {
+                            stack = emptySingleLinkedStack ;
+                            stackMethods = singleLinkedStackSpec
+                          }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stackTest.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,144 @@
+open import Level renaming (suc to succ ; zero to Zero )
+module stackTest where
+
+open import stack
+
+open import Relation.Binary.PropositionalEquality
+open import Relation.Binary.Core
+open import Data.Nat
+open import Function
+
+
+open SingleLinkedStack
+open Stack
+
+----
+--
+-- proof of properties ( concrete cases )
+--
+
+test01 : {n : Level } {a : Set n} -> SingleLinkedStack a -> Maybe a -> Bool {n}
+test01 stack _ with (top stack)
+...                  | (Just _) = True
+...                  | Nothing  = False
+
+
+test02 : {n : Level } {a : Set n} -> SingleLinkedStack a -> Bool
+test02 stack = popSingleLinkedStack stack test01
+
+test03 : {n : Level } {a : Set n} -> a ->  Bool
+test03 v = pushSingleLinkedStack emptySingleLinkedStack v test02
+
+-- after a push and a pop, the stack is empty
+lemma : {n : Level} {A : Set n} {a : A} -> test03 a ≡ False
+lemma = refl
+
+testStack01 : {n m : Level } {a : Set n} -> a -> Bool {m}
+testStack01 v = pushStack createSingleLinkedStack v (
+   \s -> popStack s (\s1 d1 -> True))
+
+-- after push 1 and 2, pop2 get 1 and 2
+
+testStack02 : {m : Level } ->  ( Stack  ℕ (SingleLinkedStack ℕ) -> Bool {m} ) -> Bool {m}
+testStack02 cs = pushStack createSingleLinkedStack 1 (
+   \s -> pushStack s 2 cs)
+
+
+testStack031 : (d1 d2 : ℕ ) -> Bool {Zero}
+testStack031 2 1 = True
+testStack031 _ _ = False
+
+testStack032 : (d1 d2 : Maybe ℕ) -> Bool {Zero}
+testStack032  (Just d1) (Just d2) = testStack031 d1 d2
+testStack032  _ _ = False
+
+testStack03 : {m : Level } -> Stack  ℕ (SingleLinkedStack ℕ) -> ((Maybe ℕ) -> (Maybe ℕ) -> Bool {m} ) -> Bool {m}
+testStack03 s cs = pop2Stack s (
+   \s d1 d2 -> cs d1 d2 )
+
+testStack04 : Bool
+testStack04 = testStack02 (\s -> testStack03 s testStack032)
+
+testStack05 : testStack04 ≡ True
+testStack05 = refl
+
+testStack06 : {m : Level } -> Maybe (Element ℕ)
+testStack06 = pushStack createSingleLinkedStack 1 (
+   \s -> pushStack s 2 (\s -> top (stack s)))
+
+testStack07 : {m : Level } -> Maybe (Element ℕ)
+testStack07 = pushSingleLinkedStack emptySingleLinkedStack 1 (
+   \s -> pushSingleLinkedStack s 2 (\s -> top s))
+
+testStack08 = pushSingleLinkedStack emptySingleLinkedStack 1 
+   $ \s -> pushSingleLinkedStack s 2 
+   $ \s -> pushSingleLinkedStack s 3 
+   $ \s -> pushSingleLinkedStack s 4 
+   $ \s -> pushSingleLinkedStack s 5 
+   $ \s -> top s
+
+------
+--
+-- proof of properties with indefinite state of stack
+--
+-- this should be proved by properties of the stack inteface, not only by the implementation,
+--    and the implementation have to provides the properties.
+--
+--    we cannot write "s ≡ s3", since level of the Set does not fit , but use stack s ≡ stack s3 is ok.
+--    anyway some implementations may result s != s3
+--  
+
+stackInSomeState : {l m : Level } {D : Set l} {t : Set m } (s : SingleLinkedStack D ) -> Stack {l} {m} D {t}  ( SingleLinkedStack  D )
+stackInSomeState s =  record { stack = s ; stackMethods = singleLinkedStackSpec }
+
+push->push->pop2 : {l : Level } {D : Set l} (x y : D ) (s : SingleLinkedStack D ) ->
+    pushStack ( stackInSomeState s )  x ( \s1 -> pushStack s1 y ( \s2 -> pop2Stack s2 ( \s3 y1 x1 -> (Just x ≡ x1 ) ∧ (Just y ≡ y1 ) ) ))
+push->push->pop2 {l} {D} x y s = record { pi1 = refl ; pi2 = refl }
+
+
+-- id : {n : Level} {A : Set n} -> A -> A
+-- id a = a
+
+-- push a, n times
+
+n-push : {n : Level} {A : Set n} {a : A} -> ℕ -> SingleLinkedStack A -> SingleLinkedStack A
+n-push zero s            = s
+n-push {l} {A} {a} (suc n) s = pushSingleLinkedStack (n-push {l} {A} {a} n s) a (\s -> s ) 
+
+n-pop :  {n : Level}{A : Set n} {a : A} -> ℕ -> SingleLinkedStack A -> SingleLinkedStack A
+n-pop zero    s         = s
+n-pop  {_} {A} {a} (suc n) s = popSingleLinkedStack (n-pop {_} {A} {a} n s) (\s _ -> s )
+
+open ≡-Reasoning
+
+push-pop-equiv : {n : Level} {A : Set n} {a : A} (s : SingleLinkedStack A) -> (popSingleLinkedStack (pushSingleLinkedStack s a (\s -> s)) (\s _ -> s) ) ≡ s
+push-pop-equiv s = refl
+
+push-and-n-pop : {n : Level} {A : Set n} {a : A} (n : ℕ) (s : SingleLinkedStack A) -> n-pop {_} {A} {a} (suc n) (pushSingleLinkedStack s a id) ≡ n-pop {_} {A} {a} n s
+push-and-n-pop zero s            = refl
+push-and-n-pop {_} {A} {a} (suc n) s = begin
+   n-pop {_} {A} {a} (suc (suc n)) (pushSingleLinkedStack s a id)
+  ≡⟨ refl ⟩
+   popSingleLinkedStack (n-pop {_} {A} {a} (suc n) (pushSingleLinkedStack s a id)) (\s _ -> s)
+  ≡⟨ cong (\s -> popSingleLinkedStack s (\s _ -> s )) (push-and-n-pop n s) ⟩ 
+   popSingleLinkedStack (n-pop {_} {A} {a} n s) (\s _ -> s)
+  ≡⟨ refl ⟩
+    n-pop {_} {A} {a} (suc n) s
+  ∎
+  
+
+n-push-pop-equiv : {n : Level} {A : Set n} {a : A} (n : ℕ) (s : SingleLinkedStack A) -> (n-pop {_} {A} {a} n (n-push {_} {A} {a} n s)) ≡ s
+n-push-pop-equiv zero s            = refl
+n-push-pop-equiv {_} {A} {a} (suc n) s = begin
+    n-pop {_} {A} {a} (suc n) (n-push (suc n) s)
+  ≡⟨ refl ⟩
+    n-pop {_} {A} {a} (suc n) (pushSingleLinkedStack (n-push n s) a (\s -> s))
+  ≡⟨ push-and-n-pop n (n-push n s)  ⟩
+    n-pop {_} {A} {a} n (n-push n s)
+  ≡⟨ n-push-pop-equiv n s ⟩
+    s
+  ∎
+
+
+n-push-pop-equiv-empty : {n : Level} {A : Set n} {a : A} -> (n : ℕ) -> n-pop {_} {A} {a} n (n-push {_} {A} {a} n emptySingleLinkedStack)  ≡ emptySingleLinkedStack
+n-push-pop-equiv-empty n = n-push-pop-equiv n emptySingleLinkedStack
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stackTest.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,144 @@
+open import Level renaming (suc to succ ; zero to Zero )
+module stackTest where
+
+open import stack
+
+open import Relation.Binary.PropositionalEquality
+open import Relation.Binary.Core
+open import Data.Nat
+open import Function
+
+
+open SingleLinkedStack
+open Stack
+
+----
+--
+-- proof of properties ( concrete cases )
+--
+
+test01 : {n : Level } {a : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ Maybe a @$\rightarrow$@ Bool {n}
+test01 stack _ with (top stack)
+...                  | (Just _) = True
+...                  | Nothing  = False
+
+
+test02 : {n : Level } {a : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ Bool
+test02 stack = popSingleLinkedStack stack test01
+
+test03 : {n : Level } {a : Set n} @$\rightarrow$@ a @$\rightarrow$@  Bool
+test03 v = pushSingleLinkedStack emptySingleLinkedStack v test02
+
+-- after a push and a pop, the stack is empty
+lemma : {n : Level} {A : Set n} {a : A} @$\rightarrow$@ test03 a @$\equiv$@ False
+lemma = refl
+
+testStack01 : {n m : Level } {a : Set n} @$\rightarrow$@ a @$\rightarrow$@ Bool {m}
+testStack01 v = pushStack createSingleLinkedStack v (
+   \s @$\rightarrow$@ popStack s (\s1 d1 @$\rightarrow$@ True))
+
+-- after push 1 and 2, pop2 get 1 and 2
+
+testStack02 : {m : Level } @$\rightarrow$@  ( Stack  @$\mathbb{N}$@ (SingleLinkedStack @$\mathbb{N}$@) @$\rightarrow$@ Bool {m} ) @$\rightarrow$@ Bool {m}
+testStack02 cs = pushStack createSingleLinkedStack 1 (
+   \s @$\rightarrow$@ pushStack s 2 cs)
+
+
+testStack031 : (d1 d2 : @$\mathbb{N}$@ ) @$\rightarrow$@ Bool {Zero}
+testStack031 2 1 = True
+testStack031 _ _ = False
+
+testStack032 : (d1 d2 : Maybe @$\mathbb{N}$@) @$\rightarrow$@ Bool {Zero}
+testStack032  (Just d1) (Just d2) = testStack031 d1 d2
+testStack032  _ _ = False
+
+testStack03 : {m : Level } @$\rightarrow$@ Stack  @$\mathbb{N}$@ (SingleLinkedStack @$\mathbb{N}$@) @$\rightarrow$@ ((Maybe @$\mathbb{N}$@) @$\rightarrow$@ (Maybe @$\mathbb{N}$@) @$\rightarrow$@ Bool {m} ) @$\rightarrow$@ Bool {m}
+testStack03 s cs = pop2Stack s (
+   \s d1 d2 @$\rightarrow$@ cs d1 d2 )
+
+testStack04 : Bool
+testStack04 = testStack02 (\s @$\rightarrow$@ testStack03 s testStack032)
+
+testStack05 : testStack04 @$\equiv$@ True
+testStack05 = refl
+
+testStack06 : {m : Level } @$\rightarrow$@ Maybe (Element @$\mathbb{N}$@)
+testStack06 = pushStack createSingleLinkedStack 1 (
+   \s @$\rightarrow$@ pushStack s 2 (\s @$\rightarrow$@ top (stack s)))
+
+testStack07 : {m : Level } @$\rightarrow$@ Maybe (Element @$\mathbb{N}$@)
+testStack07 = pushSingleLinkedStack emptySingleLinkedStack 1 (
+   \s @$\rightarrow$@ pushSingleLinkedStack s 2 (\s @$\rightarrow$@ top s))
+
+testStack08 = pushSingleLinkedStack emptySingleLinkedStack 1 
+   $ \s @$\rightarrow$@ pushSingleLinkedStack s 2 
+   $ \s @$\rightarrow$@ pushSingleLinkedStack s 3 
+   $ \s @$\rightarrow$@ pushSingleLinkedStack s 4 
+   $ \s @$\rightarrow$@ pushSingleLinkedStack s 5 
+   $ \s @$\rightarrow$@ top s
+
+------
+--
+-- proof of properties with indefinite state of stack
+--
+-- this should be proved by properties of the stack inteface, not only by the implementation,
+--    and the implementation have to provides the properties.
+--
+--    we cannot write "s @$\equiv$@ s3", since level of the Set does not fit , but use stack s @$\equiv$@ stack s3 is ok.
+--    anyway some implementations may result s != s3
+--  
+
+stackInSomeState : {l m : Level } {D : Set l} {t : Set m } (s : SingleLinkedStack D ) @$\rightarrow$@ Stack {l} {m} D {t}  ( SingleLinkedStack  D )
+stackInSomeState s =  record { stack = s ; stackMethods = singleLinkedStackSpec }
+
+push@$\rightarrow$@push@$\rightarrow$@pop2 : {l : Level } {D : Set l} (x y : D ) (s : SingleLinkedStack D ) @$\rightarrow$@
+    pushStack ( stackInSomeState s )  x ( \s1 @$\rightarrow$@ pushStack s1 y ( \s2 @$\rightarrow$@ pop2Stack s2 ( \s3 y1 x1 @$\rightarrow$@ (Just x @$\equiv$@ x1 ) @$\wedge$@ (Just y @$\equiv$@ y1 ) ) ))
+push@$\rightarrow$@push@$\rightarrow$@pop2 {l} {D} x y s = record { pi1 = refl ; pi2 = refl }
+
+
+-- id : {n : Level} {A : Set n} @$\rightarrow$@ A @$\rightarrow$@ A
+-- id a = a
+
+-- push a, n times
+
+n-push : {n : Level} {A : Set n} {a : A} @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ SingleLinkedStack A @$\rightarrow$@ SingleLinkedStack A
+n-push zero s            = s
+n-push {l} {A} {a} (suc n) s = pushSingleLinkedStack (n-push {l} {A} {a} n s) a (\s @$\rightarrow$@ s ) 
+
+n-pop :  {n : Level}{A : Set n} {a : A} @$\rightarrow$@ @$\mathbb{N}$@ @$\rightarrow$@ SingleLinkedStack A @$\rightarrow$@ SingleLinkedStack A
+n-pop zero    s         = s
+n-pop  {_} {A} {a} (suc n) s = popSingleLinkedStack (n-pop {_} {A} {a} n s) (\s _ @$\rightarrow$@ s )
+
+open @$\equiv$@-Reasoning
+
+push-pop-equiv : {n : Level} {A : Set n} {a : A} (s : SingleLinkedStack A) @$\rightarrow$@ (popSingleLinkedStack (pushSingleLinkedStack s a (\s @$\rightarrow$@ s)) (\s _ @$\rightarrow$@ s) ) @$\equiv$@ s
+push-pop-equiv s = refl
+
+push-and-n-pop : {n : Level} {A : Set n} {a : A} (n : @$\mathbb{N}$@) (s : SingleLinkedStack A) @$\rightarrow$@ n-pop {_} {A} {a} (suc n) (pushSingleLinkedStack s a id) @$\equiv$@ n-pop {_} {A} {a} n s
+push-and-n-pop zero s            = refl
+push-and-n-pop {_} {A} {a} (suc n) s = begin
+   n-pop {_} {A} {a} (suc (suc n)) (pushSingleLinkedStack s a id)
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+   popSingleLinkedStack (n-pop {_} {A} {a} (suc n) (pushSingleLinkedStack s a id)) (\s _ @$\rightarrow$@ s)
+  @$\equiv$@@$\langle$@ cong (\s @$\rightarrow$@ popSingleLinkedStack s (\s _ @$\rightarrow$@ s )) (push-and-n-pop n s) @$\rangle$@ 
+   popSingleLinkedStack (n-pop {_} {A} {a} n s) (\s _ @$\rightarrow$@ s)
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+    n-pop {_} {A} {a} (suc n) s
+  @$\blacksquare$@
+  
+
+n-push-pop-equiv : {n : Level} {A : Set n} {a : A} (n : @$\mathbb{N}$@) (s : SingleLinkedStack A) @$\rightarrow$@ (n-pop {_} {A} {a} n (n-push {_} {A} {a} n s)) @$\equiv$@ s
+n-push-pop-equiv zero s            = refl
+n-push-pop-equiv {_} {A} {a} (suc n) s = begin
+    n-pop {_} {A} {a} (suc n) (n-push (suc n) s)
+  @$\equiv$@@$\langle$@ refl @$\rangle$@
+    n-pop {_} {A} {a} (suc n) (pushSingleLinkedStack (n-push n s) a (\s @$\rightarrow$@ s))
+  @$\equiv$@@$\langle$@ push-and-n-pop n (n-push n s)  @$\rangle$@
+    n-pop {_} {A} {a} n (n-push n s)
+  @$\equiv$@@$\langle$@ n-push-pop-equiv n s @$\rangle$@
+    s
+  @$\blacksquare$@
+
+
+n-push-pop-equiv-empty : {n : Level} {A : Set n} {a : A} @$\rightarrow$@ (n : @$\mathbb{N}$@) @$\rightarrow$@ n-pop {_} {A} {a} n (n-push {_} {A} {a} n emptySingleLinkedStack)  @$\equiv$@ emptySingleLinkedStack
+n-push-pop-equiv-empty n = n-push-pop-equiv n emptySingleLinkedStack
Binary file src/stackTest.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stackimpl.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,27 @@
+Stack* createSingleLinkedStack(struct Context* context) {
+    struct Stack* stack = new Stack();
+    struct SingleLinkedStack* singleLinkedStack = new SingleLinkedStack();
+    stack->stack = (union Data*)singleLinkedStack;
+    singleLinkedStack->top = NULL;
+    stack->push = C_pushSingleLinkedStack;
+    stack->pop  = C_popSingleLinkedStack;
+    stack->pop2  = C_pop2SingleLinkedStack;
+    stack->get  = C_getSingleLinkedStack;
+    stack->get2  = C_get2SingleLinkedStack;
+    stack->isEmpty = C_isEmptySingleLinkedStack;
+    stack->clear = C_clearSingleLinkedStack;
+    return stack;
+}
+
+__code clearSingleLinkedStack(struct SingleLinkedStack* stack,__code next(...)) {
+    stack->top = NULL;
+    goto next(...);
+}
+
+__code pushSingleLinkedStack(struct SingleLinkedStack* stack,union Data* data, __code next(...)) {
+    Element* element = new Element();
+    element->next = stack->top;
+    element->data = data;
+    stack->top = element;
+    goto next(...);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stub.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,17 @@
+__code put(struct Context* context,
+           struct Tree* tree,
+           struct Node* root,
+           struct Allocate* allocate)
+{
+    /* 実装コードは省略 */
+}
+
+__code put_stub(struct Context* context)
+{
+    goto put(context,
+             &context->data[Tree]->tree,
+             context->data[Tree]->tree.root,
+             &context->data[Allocate]->allocate);
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/stubCodeGear.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,16 @@
+__code putSingleLinkedQueue(struct Context *context,struct SingleLinkedQueue* queue, union Data* data, enum Code next) {
+    Element* element = &ALLOCATE(context, Element)->Element;
+    element->data = data;
+    element->next = NULL;
+    queue->last->next  = element;
+    queue->last = element;
+    goto meta(context, next);
+}
+
+// generated by script
+__code putSingleLinkedQueue_stub(struct Context* context) {
+	SingleLinkedQueue* queue = (SingleLinkedQueue*)GearImpl(context, Queue, queue);
+	Data* data = Gearef(context, Queue)->data;
+	enum Code next = Gearef(context, Queue)->next;
+	goto putSingleLinkedQueue(context, queue, data, next);
+} 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/subtype.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,44 @@
+open import Level
+open import Relation.Binary.PropositionalEquality
+
+module subtype {l : Level} (Context : Set l) where
+
+
+record DataSegment {ll : Level} (A : Set ll) : Set (l ⊔ ll) where
+  field
+    get : Context -> A
+    set : Context -> A -> Context
+open DataSegment
+
+data CodeSegment {l1 l2 : Level} (A : Set l1) (B : Set l2) : Set (l ⊔ l1 ⊔ l2) where
+  cs : {{_ : DataSegment A}} {{_ : DataSegment B}} -> (A -> B) -> CodeSegment A B
+
+goto : {l1 l2 : Level} {I : Set l1} {O : Set l2} -> CodeSegment I O -> I -> O
+goto (cs b) i = b i
+
+exec : {l1 l2 : Level} {I : Set l1} {O : Set l2} {{_ : DataSegment I}} {{_ : DataSegment O}}
+     -> CodeSegment I O -> Context -> Context
+exec {l} {{i}} {{o}}  (cs b) c = set o c (b (get i c))
+
+
+comp : {con : Context} -> {l1 l2 l3 l4 : Level}
+       {A : Set l1} {B : Set l2} {C : Set l3} {D : Set l4}
+       {{_ : DataSegment A}} {{_ : DataSegment B}} {{_ : DataSegment C}} {{_ : DataSegment D}}
+       -> (C -> D) -> (A -> B) -> A -> D
+comp {con} {{i}} {{io}} {{oi}} {{o}} g f x = g (get oi (set io con (f x)))
+
+csComp : {con : Context} -> {l1 l2 l3 l4 : Level}
+        {A : Set l1} {B : Set l2} {C : Set l3} {D : Set l4}
+         {{_ : DataSegment A}} {{_ : DataSegment B}} {{_ : DataSegment C}} {{_ : DataSegment D}}
+       -> CodeSegment C D -> CodeSegment A B -> CodeSegment A D
+csComp {con} {A} {B} {C} {D} {{da}} {{db}} {{dc}} {{dd}} (cs g) (cs f)
+      = cs {{da}} {{dd}} (comp {con} {{da}} {{db}} {{dc}} {{dd}} g f)
+
+
+
+comp-associative : {A B C D E F : Set l} {con : Context}
+                   {{da : DataSegment A}} {{db : DataSegment B}} {{dc : DataSegment C}}
+                   {{dd : DataSegment D}} {{de : DataSegment E}} {{df : DataSegment F}}
+                   -> (a : CodeSegment A B) (b : CodeSegment C D) (c : CodeSegment E F)
+                   -> csComp {con} c (csComp {con} b a)  ≡ csComp {con} (csComp {con} c b) a
+comp-associative (cs _) (cs _) (cs _) = refl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/subtype.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,44 @@
+open import Level
+open import Relation.Binary.PropositionalEquality
+
+module subtype {l : Level} (Context : Set l) where
+
+
+record DataSegment {ll : Level} (A : Set ll) : Set (l @$\sqcup$@ ll) where
+  field
+    get : Context @$\rightarrow$@ A
+    set : Context @$\rightarrow$@ A @$\rightarrow$@ Context
+open DataSegment
+
+data CodeSegment {l1 l2 : Level} (A : Set l1) (B : Set l2) : Set (l @$\sqcup$@ l1 @$\sqcup$@ l2) where
+  cs : {{_ : DataSegment A}} {{_ : DataSegment B}} @$\rightarrow$@ (A @$\rightarrow$@ B) @$\rightarrow$@ CodeSegment A B
+
+goto : {l1 l2 : Level} {I : Set l1} {O : Set l2} @$\rightarrow$@ CodeSegment I O @$\rightarrow$@ I @$\rightarrow$@ O
+goto (cs b) i = b i
+
+exec : {l1 l2 : Level} {I : Set l1} {O : Set l2} {{_ : DataSegment I}} {{_ : DataSegment O}}
+     @$\rightarrow$@ CodeSegment I O @$\rightarrow$@ Context @$\rightarrow$@ Context
+exec {l} {{i}} {{o}}  (cs b) c = set o c (b (get i c))
+
+
+comp : {con : Context} @$\rightarrow$@ {l1 l2 l3 l4 : Level}
+       {A : Set l1} {B : Set l2} {C : Set l3} {D : Set l4}
+       {{_ : DataSegment A}} {{_ : DataSegment B}} {{_ : DataSegment C}} {{_ : DataSegment D}}
+       @$\rightarrow$@ (C @$\rightarrow$@ D) @$\rightarrow$@ (A @$\rightarrow$@ B) @$\rightarrow$@ A @$\rightarrow$@ D
+comp {con} {{i}} {{io}} {{oi}} {{o}} g f x = g (get oi (set io con (f x)))
+
+csComp : {con : Context} @$\rightarrow$@ {l1 l2 l3 l4 : Level}
+        {A : Set l1} {B : Set l2} {C : Set l3} {D : Set l4}
+         {{_ : DataSegment A}} {{_ : DataSegment B}} {{_ : DataSegment C}} {{_ : DataSegment D}}
+       @$\rightarrow$@ CodeSegment C D @$\rightarrow$@ CodeSegment A B @$\rightarrow$@ CodeSegment A D
+csComp {con} {A} {B} {C} {D} {{da}} {{db}} {{dc}} {{dd}} (cs g) (cs f)
+      = cs {{da}} {{dd}} (comp {con} {{da}} {{db}} {{dc}} {{dd}} g f)
+
+
+
+comp-associative : {A B C D E F : Set l} {con : Context}
+                   {{da : DataSegment A}} {{db : DataSegment B}} {{dc : DataSegment C}}
+                   {{dd : DataSegment D}} {{de : DataSegment E}} {{df : DataSegment F}}
+                   @$\rightarrow$@ (a : CodeSegment A B) (b : CodeSegment C D) (c : CodeSegment E F)
+                   @$\rightarrow$@ csComp {con} c (csComp {con} b a)  @$\equiv$@ csComp {con} (csComp {con} c b) a
+comp-associative (cs _) (cs _) (cs _) = refl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sync_dequeue.c	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,20 @@
+// Dequeue
+__code getQueue(struct Context* context, struct Queue* queue, struct Node* node) {
+    if (queue->first == 0)
+        return;
+
+    struct Element* first = queue->first;
+    if (__sync_bool_compare_and_swap(&queue->first, first, first->next)) {
+        queue->count--;
+
+        context->next = GetQueue;
+        stack_push(context->code_stack, &context->next);
+
+        context->next = first->task->code;
+        node->key = first->task->key;
+
+        goto meta(context, Get);
+    } else {
+        goto meta(context, GetQueue);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/sync_enqueue.c	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,25 @@
+// Enqueue(normal)
+__code putQueue3(struct Context* context, struct Queue* queue, struct Element* new_element) {
+    struct Element* last = queue->last;
+
+    if (__sync_bool_compare_and_swap(&queue->last, last, new_element)) {
+        last->next = new_element;
+        queue->count++;
+        
+        goto meta(context, context->next);
+    } else {
+        goto meta(context, PutQueue3);
+    }
+}
+
+// Enqueue(nothing element)
+__code putQueue4(struct Context* context, struct Queue* queue, struct Element* new_element) {
+    if (__sync_bool_compare_and_swap(&queue->first, 0, new_element)) {
+        queue->last = new_element;
+        queue->count++;
+        
+        goto meta(context, context->next);
+    } else {
+        goto meta(context, PutQueue3);
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/synchronizedQueue.h	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,11 @@
+struct SynchronizedQueue {
+    struct Element* top;
+    struct Element* last;
+    struct Atomic* atomic;
+};
+
+// Singly Linked List element
+struct Element {
+    union Data* top;
+    struct Element* next;
+};
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/taskManagerInterface.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,13 @@
+typedef struct TaskManager<Impl>{
+    union Data* taskManager;
+    struct Context* task;
+    struct Element* taskList;
+    __code spawn(Impl* taskManager, struct Context* task, __code next(...));
+    __code spawnTasks(Impl* taskManagerImpl, struct Element* taskList, __code next1(...));
+    __code setWaitTask(Impl* taskManagerImpl, struct Context* task, __code next(...));
+    __code shutdown(Impl* taskManagerImpl, __code next(...));
+    __code incrementTaskCount(Impl* taskManagerImpl, __code next(...));
+    __code decrementTaskCount(Impl* taskManagerImpl, __code next(...));
+    __code next(...);
+    __code next1(...);
+} TaskManager;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/term1.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,15 @@
+stmt2Cond : {c10 :ℕ} → Cond
+stmt2Cond {c10} env = (Equal (varn env) c10) ∧ (Equal (vari env) 0)
+
+lemma1 : {c10 :ℕ} → Axiom (stmt1Cond {c10})
+       (λ env → record { varn = varn env ; vari = 0 }) (stmt2Cond {c10})
+lemma1 {c10} env = impl⇒ ( λ cond → let open ≡-Reasoning  in
+  begin
+    ?      -- ?0
+  ≡⟨ ? ⟩    -- ?1
+    ?      -- ?2
+  ∎ )
+
+-- ?0 : Bool
+-- ?1 : stmt2Cond (record { varn = varn env ; vari = 0 }) ≡ true
+-- ?2 : Bool
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/term1.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,15 @@
+stmt2Cond : {c10 :@$\mathbb{N}$@} @$\rightarrow$@ Cond
+stmt2Cond {c10} env = (Equal (varn env) c10) @$\wedge$@ (Equal (vari env) 0)
+
+lemma1 : {c10 :@$\mathbb{N}$@} @$\rightarrow$@ Axiom (stmt1Cond {c10})
+       (@$\lambda$@ env @$\rightarrow$@ record { varn = varn env ; vari = 0 }) (stmt2Cond {c10})
+lemma1 {c10} env = impl@$\Rightarrow$@ ( @$\lambda$@ cond @$\rightarrow$@ let open @$\equiv$@-Reasoning  in
+  begin
+    ?      -- ?0
+  @$\equiv$@@$\langle$@ ? @$\rangle$@    -- ?1
+    ?      -- ?2
+  @$\blacksquare$@ )
+
+-- ?0 : Bool
+-- ?1 : stmt2Cond (record { varn = varn env ; vari = 0 }) @$\equiv$@ true
+-- ?2 : Bool
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/term2.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+∧true : { x : Bool } →  x  ∧  true  ≡ x
+∧true {x} with x
+∧true {x} | false = refl
+∧true {x} | true = refl
+
+stmt1Cond : {c10 :ℕ} → Cond
+stmt1Cond {c10} env = Equal (varn env) c10
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/term2.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,7 @@
+@$\wedge$@true : { x : Bool } @$\rightarrow$@  x  @$\wedge$@  true  @$\equiv$@ x
+@$\wedge$@true {x} with x
+@$\wedge$@true {x} | false = refl
+@$\wedge$@true {x} | true = refl
+
+stmt1Cond : {c10 :@$\mathbb{N}$@} @$\rightarrow$@ Cond
+stmt1Cond {c10} env = Equal (varn env) c10
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/term3.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,10 @@
+lemma1 : {c10 :ℕ} → Axiom (stmt1Cond {c10}) (λ env → record { varn = varn env ; vari = 0 }) (stmt2Cond {c\
+10})
+lemma1 {c10} env = impl⇒ ( λ cond → let open ≡-Reasoning  in
+begin
+(Equal (varn env) c10 ) ∧ true
+≡⟨ ∧true ⟩
+Equal (varn env) c10
+≡⟨ cond ⟩
+true
+∎ )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/term3.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,10 @@
+lemma1 : {c10 :@$\mathbb{N}$@} @$\rightarrow$@ Axiom (stmt1Cond {c10}) (@$\lambda$@ env @$\rightarrow$@ record { varn = varn env ; vari = 0 }) (stmt2Cond {c\
+10})
+lemma1 {c10} env = impl@$\Rightarrow$@ ( @$\lambda$@ cond @$\rightarrow$@ let open @$\equiv$@-Reasoning  in
+begin
+(Equal (varn env) c10 ) @$\wedge$@ true
+@$\equiv$@@$\langle$@ @$\wedge$@true @$\rangle$@
+Equal (varn env) c10
+@$\equiv$@@$\langle$@ cond @$\rangle$@
+true
+@$\blacksquare$@ )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/termination.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,11 @@
+{-# TERMINATING #-}
+loop : ℕ → ℕ
+loop n = loop (pred n)
+
+-- pred : ℕ → ℕ
+-- pred zero    = zero
+-- pred (suc n) = n
+
+stop : ℕ → ℕ
+stop zero = zero
+stop (suc n) = (stop n)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/termination.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,11 @@
+{-@$\#$@ TERMINATING @$\#$@-}
+loop : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@
+loop n = loop (pred n)
+
+-- pred : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@
+-- pred zero    = zero
+-- pred (suc n) = n
+
+stop : @$\mathbb{N}$@ @$\rightarrow$@ @$\mathbb{N}$@
+stop zero = zero
+stop (suc n) = (stop n)
Binary file src/termination.agdai has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tree.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,10 @@
+data nomal-tree (A : Set) : Set where
+  nleaf : (key : ℕ) → tree A
+  nnode : (key : ℕ) → (lnode : nomal-tree A) → (rnode : nomal-tree A) → nomal-tree A
+
+data meta-tree (A : Set) : (key : ℕ) → Set where
+  mleaf : (key : ℕ) → meta-tree A key
+  mnode : { l r : ℕ } → (key : ℕ) → (value : A)
+    → (lnode : meta-tree A l)  → (rnode : meta-tree A r)
+    → l ≤ key → key ≤ r → metatree A key
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/tree.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,10 @@
+data nomal-tree (A : Set) : Set where
+  nleaf : (key : @$\mathbb{N}$@) @$\rightarrow$@ tree A
+  nnode : (key : @$\mathbb{N}$@) @$\rightarrow$@ (lnode : nomal-tree A) @$\rightarrow$@ (rnode : nomal-tree A) @$\rightarrow$@ nomal-tree A
+
+data meta-tree (A : Set) : (key : @$\mathbb{N}$@) @$\rightarrow$@ Set where
+  mleaf : (key : @$\mathbb{N}$@) @$\rightarrow$@ meta-tree A key
+  mnode : { l r : @$\mathbb{N}$@ } @$\rightarrow$@ (key : @$\mathbb{N}$@) @$\rightarrow$@ (value : A)
+    @$\rightarrow$@ (lnode : meta-tree A l)  @$\rightarrow$@ (rnode : meta-tree A r)
+    @$\rightarrow$@ l @$\leq$@ key @$\rightarrow$@ key @$\leq$@ r @$\rightarrow$@ metatree A key
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/twice.c	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,16 @@
+// Twice
+__code twice(struct Context* context, struct LoopCounter* loopCounter, int index, int alignment, int* array) {
+    int i = loopCounter->i;
+
+    if (i < alignment) {
+        array[i+index*alignment] = array[i+index*alignment]*2;
+        loopCounter->i++;
+
+        goto meta(context, Twice);
+    }
+
+    loopCounter->i = 0;
+
+    stack_pop(context->code_stack, &context->next);
+    goto meta(context, context->next);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/while-test.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+whileTest : {l : Level} {t : Set l} -> (c10 : ℕ) → (Code : Env -> t) -> t
+whileTest c10 next = next (record {varn = c10 ; vari = 0} )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/while-test.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,2 @@
+whileTest : {l : Level} {t : Set l} @$\rightarrow$@ (c10 : @$\mathbb{N}$@) @$\rightarrow$@ (Code : Env @$\rightarrow$@ t) @$\rightarrow$@ t
+whileTest c10 next = next (record {varn = c10 ; vari = 0} )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/workerRun.cbc	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,9 @@
+__code getTaskCPUWorker(struct CPUWorker* cpuWorker, struct Context* task, struct Worker* worker) {
+    if (!task) {
+        goto worker->shutdown(); // end thread
+    }
+    task->worker = worker;
+    enum Code taskCg = task->next;
+    task->next = C_odgCommitCPUWorker; // commit outputDG after task exec
+    goto meta(task, taskCg); // switch task context
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/zero.agda	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
++zero : { y : ℕ } → y + zero  ≡ y
++zero {zero} = refl
++zero {suc y} = cong suc ( +zero {y} )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/zero.agda.replaced	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,3 @@
++zero : { y : @$\mathbb{N}$@ } @$\rightarrow$@ y + zero  @$\equiv$@ y
++zero {zero} = refl
++zero {suc y} = cong suc ( +zero {y} )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tecrep.bib	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,270 @@
+@inproceedings{agda,
+ author = {Norell, Ulf},
+ title = {Dependently Typed Programming in Agda},
+ booktitle = {Proceedings of the 4th International Workshop on Types in Language Design and Implementation},
+ series = {TLDI '09},
+ year = {2009},
+ isbn = {978-1-60558-420-1},
+ location = {Savannah, GA, USA},
+ pages = {1--2},
+ numpages = {2},
+ url = {http://doi.acm.org/10.1145/1481861.1481862},
+ doi = {10.1145/1481861.1481862},
+ acmid = {1481862},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+ keywords = {dependent types, programming},
+}
+                 
+
+@article{atton-ipsj,
+author="比嘉 健太 and 河野 真治",
+title="Verification Method of Programs Using Continuation based C",
+journal="情報処理学会論文誌プログラミング(PRO)",
+ISSN="1882-7802",
+publisher="",
+year="2017",
+month="feb",
+volume="10",
+number="2",
+pages="5-5",
+URL="https://ci.nii.ac.jp/naid/170000148438/en/",
+DOI="",
+}
+
+@article{moggi-monad,
+    author     = {Moggi, Eugenio},
+    title      = {Notions of Computation and Monads},
+    journal    = {Inf. Comput.},
+    issue_date = {July 1991},
+    volume     = {93},
+    number     = {1},
+    month      = jul,
+    year       = {1991},
+    issn       = {0890-5401},
+    pages      = {55--92},
+    numpages   = {38},
+    url        = {http://dx.doi.org/10.1016/0890-5401(91)90052-4},
+    doi        = {10.1016/0890-5401(91)90052-4},
+    acmid      = {116984},
+    publisher  = {Academic Press, Inc.},
+    address    = {Duluth, MN, USA},
+}
+
+@inproceedings{mitsuki-prosym,
+    author = "宮城光希 and 河野真治",
+    title = "Code Gear と Data Gear を持つ Gears OS の設計",
+    booktitle = "第59回プログラミング・シンポジウム予稿集",
+    year  = "2018",
+    volume = "2018",
+    pages = "197--206",
+    month = "jan"
+}
+
+
+@techreport{ryokka-sigos,
+   author	 = "外間,政尊 and 河野,真治",
+   title	 = "GearsOSのAgdaによる記述と検証",
+   year 	 = "2018",
+   institution	 = "琉球大学大学院理工学研究科情報工学専攻, 琉球大学工学部情報工学科",
+   number	 = "5",
+   month	 = "may"
+}
+
+@misc{agda-wiki,
+    title = {The Agda wiki},
+    howpublished = {\url{http://wiki.portal.chalmers.se/agda/pmwiki.php}},
+    note = {Accessed: 2018/12/17(Mon)},
+}
+
+
+@misc{agda-documentation,
+    title = {Welcome to Agda’s documentation! — Agda latest documentation},
+    howpublished = {\url{http://agda.readthedocs.io/en/latest/}},
+    note = {Accessed: 2018/12/17(Mon)},
+}
+
+@book{Stump:2016:VFP:2841316,
+ author = {Stump, Aaron},
+ title = {Verified Functional Programming in Agda},
+ year = {2016},
+ isbn = {978-1-97000-127-3},
+ publisher = {Association for Computing Machinery and Morgan \&\#38; Claypool},
+ address = {New York, NY, USA},
+} 
+
+@article{10.1145/363235.363259,
+author = {Hoare, C. A. R.},
+title = {An Axiomatic Basis for Computer Programming},
+year = {1969},
+issue_date = {October 1969},
+publisher = {Association for Computing Machinery},
+address = {New York, NY, USA},
+volume = {12},
+number = {10},
+issn = {0001-0782},
+url = {https://doi.org/10.1145/363235.363259},
+doi = {10.1145/363235.363259},
+journal = {Commun. ACM},
+month = oct,
+pages = {576–580},
+numpages = {5},
+keywords = {programming language design, theory of programming’ proofs of programs, machine-independent programming, program documentation, axiomatic method, formal language definition}
+}
+  
+
+@misc{agda-alpa-old,
+    title = {Example - Hoare Logic},
+    howpublished = {\url{http://ocvs.cfv.jp/Agda/readmehoare.html}},
+    note = {Accessed: 2019/1/16(Wed)},
+}
+
+@misc{agda-alpa,
+    title = {Agda1},
+    howpublished = {\url{https://sourceforge.net/projects/agda/}},
+    note = {Accessed: 2020/2/9(Sun)},
+}
+
+@misc{agda2-hoare,
+    title = {Hoare Logic in Agda2},
+    howpublished = {\url{https://github.com/IKEGAMIDaisuke/HoareLogic}},
+    note = {Accessed: 2020/2/9(Sun)},
+}
+
+@misc{coq-old,
+    title = {Welcome! | The Coq Proof Assistant},
+    howpublished = {\url{https://coq.inria.fr/}},
+    note = {Accessed: 2020/2/9(Sun)},
+}
+
+                  
+@misc{coq,
+    title = {Coq Source},
+    howpublished = {\url{https://github.com/coq/coq}},
+    note = {Accessed: 2020/2/9(Sun)},
+}
+                  
+
+@misc{ats2,
+    title = {ATS-PL-SYS},
+    howpublished = {\url{http://www.ats-lang.org/}},
+    note = {Accessed: 2020/2/9(Sun)},
+}
+
+@misc{rust,
+    title = {Rust programming language},
+    howpublished = {\url{https://www.rust-lang.org/}},
+    note = {Accessed: 2020/2/9(Sun)},
+}
+
+
+@article{Klein:2010:SFV:1743546.1743574,
+ author = {Klein, Gerwin and Andronick, June and Elphinstone, Kevin and Heiser, Gernot and Cock, David and Derrin, Philip and Elkaduwe, Dhammika and Engelhardt, Kai and Kolanski, Rafal and Norrish, Michael and Sewell, Thomas and Tuch, Harvey and Winwood, Simon},
+ title = {seL4: Formal Verification of an Operating-system Kernel},
+ journal = {Commun. ACM},
+ issue_date = {June 2010},
+ volume = {53},
+ number = {6},
+ month = jun,
+ year = {2010},
+ issn = {0001-0782},
+ pages = {107--115},
+ numpages = {9},
+ url = {http://doi.acm.org/10.1145/1743546.1743574},
+ doi = {10.1145/1743546.1743574},
+ acmid = {1743574},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+} 
+
+@inproceedings{Nelson:2017:HPV:3132747.3132748,
+ author = {Nelson, Luke and Sigurbjarnarson, Helgi and Zhang, Kaiyuan and Johnson, Dylan and Bornholt, James and Torlak, Emina and Wang, Xi},
+ title = {Hyperkernel: Push-Button Verification of an OS Kernel},
+ booktitle = {Proceedings of the 26th Symposium on Operating Systems Principles},
+ series = {SOSP '17},
+ year = {2017},
+ isbn = {978-1-4503-5085-3},
+ location = {Shanghai, China},
+ pages = {252--269},
+ numpages = {18},
+ url = {http://doi.acm.org/10.1145/3132747.3132748},
+ doi = {10.1145/3132747.3132748},
+ acmid = {3132748},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+} 
+
+@misc{cr-ryukyu,
+    title = {whileTestPrim.agda - 並列信頼研 mercurial repository},
+    howpublished = {\url{http://www.cr.ie.u-ryukyu.ac.jp/hg/Members/ryokka/HoareLogic/file/tip/whileTestPrim.agda}},
+    note = {Accessed: 2020/2/9(Sun)}
+}
+
+@mastersthesis{utah-master,
+    author = "徳森海斗",
+    title  = "LLVM Clang 上の Continuation based C コンパイラ の改良",
+    school = "琉球大学 大学院理工学研究科 情報工学専攻",
+    year   = "2016"
+}
+
+@mastersthesis{atton-master,
+    author = "比嘉健太",
+    title  = "メタ計算を用いた Continuation based C の検証手法",
+    school = "琉球大学 大学院理工学研究科 情報工学専攻",
+    year   = "2017"
+}
+
+@mastersthesis{parusu-master,
+    author = "伊波立樹",
+    title  = "Gears OS の並列処理",
+    school = "琉球大学 大学院理工学研究科 情報工学専攻",
+    year   = "2018"
+}
+
+@mastersthesis{mitsuki-master,
+    author = "宮城光希",
+    title  = "継続を基本とした言語による OS のモジュール化",
+    school = "琉球大学 大学院理工学研究科 情報工学専攻",
+    year   = "2019"
+}
+
+@inproceedings{weko_82695_1,
+   author = "大城,信康 and 河野,真治",
+   title = "Continuation based C の GCC4.6 上の実装について",
+   booktitle = "第53回プログラミング・シンポジウム予稿集",
+   year  = "2012",
+   volume = "2012",
+   number = "",
+   pages = "69--78",
+   month = "jan"
+}
+
+@article{kaito-lola,
+    author  = "Kaito, Tokumori and Shinji, Kono",
+    title   = "Implementing Continuation based language in LLVM and Clang",
+    journal = "LOLA 2015, Kyoto",
+    month   = "July",
+    year    =  2015
+
+}
+
+
+@misc{cbc-llvm,
+    title = {cbc-llvm - 並列信頼研 mercurial repository},
+    howpublished = {\url{http://www.cr.ie.u-ryukyu.ac.jp/hg/CbC/CbC_llvm/}},
+    note = {Accessed: 2020/2/9(Sun)}
+}
+
+@misc{cbc-gcc,
+    title = {cbc-gcc - 並列信頼研 mercurial repository},
+    howpublished = {\url{http://www.cr.ie.u-ryukyu.ac.jp/hg/CbC/CbC_gcc/}},
+    note = {Accessed: 2020/2/9(Sun)}
+}
+
+
+@misc{loop-proof,
+    title = {loopSemInduct - 並列信頼研 mercurial repository},
+    howpublished = {\url{http://www.cr.ie.u-ryukyu.ac.jp/hg/Members/ryokka/HoareLogic/file/tip/whileTestGears.agda}},
+    note = {Accessed: 2020/2/9(Sun)}
+}
+
Binary file tecrep.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tecrep.tex	Wed Feb 12 17:55:00 2020 +0900
@@ -0,0 +1,516 @@
+%% v3.2 [2019/03/19]
+%\documentclass[Proof,technicalreport]{ieicej}
+\documentclass[technicalreport]{ieicej}
+%\usepackage{graphicx}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage{textcomp}
+\usepackage{latexsym}
+%\usepackage[fleqn]{amsmath}
+%\usepackage{amssymb}
+\usepackage{listings}
+\usepackage[dvipdfmx]{graphicx}
+\usepackage{graphicx}
+\usepackage{lmodern}
+\usepackage{textcomp}
+\usepackage{latexsym}
+\usepackage{ascmac}
+\usepackage[fleqn]{amsmath}
+\usepackage{amssymb}
+\usepackage[deluxe, multi]{otf}
+\usepackage{url}
+\usepackage{cite}
+
+
+
+
+\lstset{
+  frame=single,
+  keepspaces=true,
+  breaklines=true,
+  xleftmargin=0zw,
+  xrightmargin=0zw,
+  framerule=.2pt,
+  columns=[l]{fullflexible},
+  language={},
+  tabsize=4,
+  lineskip=-0.5zw,
+  inputencoding=utf8,
+  extendedchars=true,
+  stringstyle={\ttfamily},
+  escapechar={@},
+}
+
+% basicstyle={\ttfamily},
+\renewcommand{\lstlistingname}{Code}
+\usepackage{caption}
+\captionsetup[lstlisting]{font={small,tt}}
+
+
+\def\IEICEJcls{\texttt{ieicej.cls}}
+\def\IEICEJver{3.2}
+\newcommand{\AmSLaTeX}{%
+ $\mathcal A$\lower.4ex\hbox{$\!\mathcal M\!$}$\mathcal S$-\LaTeX}
+%\newcommand{\PS}{{\scshape Post\-Script}}
+\def\BibTeX{{\rmfamily B\kern-.05em{\scshape i\kern-.025em b}\kern-.08em
+ T\kern-.1667em\lower.7ex\hbox{E}\kern-.125em X}}
+
+\jtitle{継続を基本とする言語 CbC での Hoare Logic による健全性の考察}
+
+
+\authorlist{
+ \authorentry[masataka@cr.ie.u-ryukyu.ac.jp]{外間 政尊}{Masataka Hokama}{1}% 
+ \authorentry[kono@cr.ie.u-ryukyu.ac.jp]{河野 真治}{Shinji Kono}{2}% 
+}
+\affiliate[1]{琉球大学大学院理工学研究科情報工学専攻}
+  {Interdisciplinary Information Engineering, Graduate School of Engineering and Science, University of the Ryukyus.}
+\affiliate[2]{琉球大学工学部情報工学科}
+          {Information Engineering, University of the Ryukyus.}
+          
+%\MailAddress{$\dagger$hanako@denshi.ac.jp,
+% $\dagger\dagger$\{taro,jiro\}@jouhou.co.jp}
+
+
+
+\begin{document}
+\begin{jabstract}
+CbC は継続を主とする言語上で、HoareLogicをベースとし
+た検証を提案している。
+OSなどの手続き型の記述に対しても有効なものを目指
+している。
+Curry-Howard対応にもとづく証明支援系であるAgdaを用い
+て検証手法の健全性を示す手法について考察する。
+\end{jabstract}
+\begin{jkeyword}
+  プログラミング言語,
+  CbC, Gears OS, Agda, 検証
+\end{jkeyword}
+%% \begin{eabstract}
+%% IEICE (the Institute of Electronics, Information 
+%% and Communication Engineers) provides 
+%% a p\LaTeXe\ class file, named \IEICEJcls\ (ver.\,\IEICEJver), 
+%% for the Technical Report of IEICE. 
+%% This document describes how to use the class file, 
+%% and also makes some remarks about typesetting a document by using p\LaTeXe. 
+%% The design is based on ASCII Japanese p\LaTeXe. 
+%% \end{eabstract}
+%% \begin{ekeyword}
+%% \LaTeXe\ class file, typesetting
+%% \end{ekeyword}
+\maketitle
+
+\section{OSの検証}
+OS やアプリケーションの信頼性は重要である。
+信頼性を上げるにはプログラムが仕様を満たしていることを検証する必要がある。
+プログラムの検証手法として、Floyd–Hoare Logic (以下 Hoare Logic)が知られている。
+Hoare Logic は事前条件が成り立っているときにある関数を実行して、それが停止する際に事後条件を満たすことを確認することで、検証を行う。
+Hoare Logic はシンプルなアプローチであるが限定されたコマンド群や while programにしか適用されないことが多く、
+複雑な通常のプログラミング言語には向いていない。
+
+当研究室では信頼性の高い言語として Continuation based C (CbC)を開発している。
+CbC では CodeGear、DataGear という単位を用いてプログラムを記述する。
+
+CodeGearを Agda で継続渡しの記述を用いた関数として記述する。ここで
+Agda は Curry Howard 対応にもどつく定理証明系であり、それ自身が関数型プログラング言語でもある。
+Agda では条件を命題として記述することができるので、
+継続に事前条件や事後条件をもたせることができる。
+
+既存の言語では条件は assert などで記述することになるが、その証明をそのプログラミング言語内で行うことはできない。
+Agdaでは証明そのもの、つまり命題に対する推論をλ項として記述することができるので、
+Hoare Logicの証明そのものを Meta CodeGearとして記述できる。これは既存の言語では不可能であった。
+ポイントは、プログラムそのものを Agda baseのCodeGearで記述できることである。
+CodeGearは入力と出力のみを持ち関数呼び出しせずにgoto的に継続実行する。この形式がそのまま
+Hoare Logicのコマンドを自然に定義する。
+
+Hoare Logicの証明には3つの条件が必要である。一つは
+事前条件と事後条件がプログラム全体で正しく接続されていることである。
+ループ(ループを含むCodeGearの接続)で、事前条件と事後条件が等しく、不変条件を構成していること。
+さらに、ループが停止することを示す必要がある。停止しないプログラムに対しては停止性を省いた部分正当性を定義できる。
+
+本論文では Agda 上での Hoare Logic の記述を使い、簡単な while Loop のプログラムの作成、証明を行った。
+この証明は停止性と証明全体の健全性を含んでいる。従来はHoare Logicの健全性は制限されたコマンドなどに
+対して一般的に示すのが普通であるが、本手法では複雑なCodeGearに対して、個別の証明をMeta CodeGearとして
+自分で記述するところに特徴がある。これにより健全性自体の証明が可能になった。
+
+\section{Continuation based C}
+Continuation based C\cite{kaito-lola} (以下 CbC) は CodeGear を処理の単位、
+DataGear をデータの単位として記述するプログラミング言語である。
+CbC は C 言語とほぼ同じ構文を持つが、よりアセンブラに近い記述になる。
+
+CbC では検証しやすいプログラムの単位として DataGear と CodeGear という
+単位を用いるプログラミングスタイルを提案している。
+
+DataGear は CodeGear で扱うデータの単位であり、処理に必要なデータである。
+CodeGear の入力となる DataGear を Input DataGear と呼び、
+出力は Output DataGear と呼ぶ。
+
+CodeGear はプログラムの処理そのもので、図 \ref{fig:cgdg}で示しているように任意の数の
+Input DataGear を参照し、処理が完了すると任意の数の Output DataGear に書き込む。
+
+CodeGear 間の移動は継続を用いて行われる。継続は関数呼び出しとは異なり、呼び出し
+た後に元のコードに戻らず、次の CodeGear へ継続を行う。
+これは、関数型プログラミングでは末尾関数呼び出しを行うことに相当する。
+
+\begin{figure}[htpb]
+ \begin{center}
+  \scalebox{0.3}{\includegraphics{fig/cgdg.pdf}}
+ \end{center}
+ \caption{CodeGear と DataGear}
+ \label{fig:cgdg}
+\end{figure}
+
+また、プログラムの記述する際は、ノーマルレベルの計算の他に、メモリ管理、スレッド管理、資源管理等を記述しなければならない処理が存在する。
+これらの計算はノーマルレベルの計算と区別してメタ計算と呼ぶ。
+
+メタ計算は OS の機能を通して処理することが多く、信頼性の高い記述が求められる。
+そのため、 CbC ではメタ計算を分離するために Meta CodeGear、 Meta DataGear を定義している。
+
+Meta CodeGear は CbC 上でのメタ計算で、通常の CodeGear を実行する際に必要なメタ計算を分離するための単位である。
+図 \ref{fig:meta-cgdg} のように CodeGear を実行する前後や DataGear の大枠として Meta Gear が存在している。
+
+\begin{figure}[htpb]
+ \begin{center}
+  \scalebox{0.3}{\includegraphics{fig/meta-cg-dg.pdf}}
+ \end{center}
+ \caption{メタ計算を可視化した CodeGear と DataGear}
+ \label{fig:meta-cgdg}
+\end{figure}
+
+
+\section{関数型言語 としての Agda}
+Agda \cite{agda} は純粋関数型言語である。
+Agda は依存型という型システムを持ち、型を第一級オブジェクトとして扱う。
+
+Agda の記述ではインデントが意味を持ち、スペースの有無もチェックされる。
+コメントは \verb/-- comment/ か \verb/{-- comment --}/ のように記述される。
+また、\verb/_/でそこに入りうるすべての値を示すことができ、
+\verb/?/でそこに入る値や型を不明瞭なままにしておくことができる。
+
+%% データについて
+Agda では型をデータや関数に記述する必要がある。
+Agda における型指定は \verb/:/ を用いて \verb/name : type/ のように記述する。
+このとき \verb/name/ に 空白があってはいけない。
+データ型は、代数的なデータ構造で、その定義には \verb/data/ キーワードを用いる。
+\verb/data/ キーワードの後に \verb/data/ の名前と、型、 \verb/where/ 句を書きインデントを深くし、
+値にコンストラクタとその型を列挙する。
+
+Code \ref{agda-nat}は自然数の型である $\mathbb{N}$ (Natural Number)を例である。
+
+\lstinputlisting[label=agda-nat, caption=自然数を表すデータ型 Nat の定義] {src/nat.agda.replaced}
+
+\verb/Nat/ では \verb/zero/ と \verb/suc/ の2つのコンストラクタを持つデータ型である。
+\verb/suc/ は $\mathbb{N}$ を受け取って $\mathbb{N}$ を表す再帰的なデータになっており、
+\verb/suc/ を連ねることで自然数全体を表現することができる。
+
+$\mathbb{N}$ 自身の型は \verb/Set/ であり、これは Agda が組み込みで持つ「型集合の型」である。
+\verb/Set/ は階層構造を持ち、型集合の集合の型を指定するには \verb/Set1/ と書く。
+%% \verb/Level/ を用いることで異なる \verb/Set/ を表現できる。
+
+Agda には C 言語における構造体に相当するレコード型というデータも存在する、
+例えば \verb/x/ と \verb/y/ の二つの自然数からなるレコード \verb/Point/ を定義する。Code \ref{agda-record}のようになる。
+\lstinputlisting[label=agda-record, caption=Agdaにおけるレコード型の定義] {src/env.agda.replaced}
+レコードを構築する際は \verb/record/ キーワード後の \verb/{}/ の内部に \verb/FieldName = value/ の形で値を列挙する。
+複数の値を列挙するには \verb/;/ で区切る必要がある。
+
+%% 関数について
+Agda での関数は型の定義と、関数の定義をする必要がある。
+関数の型はデータと同様に \verb/:/ を用いて \verb/name : type/ に記述するが、入力を受け取り出力返す型として記述される。$\rightarrow$ 、 または\verb/→/ を用いて \verb/input → output/ のように記述される。
+また、\verb/_+_/のように関数名で\verb/_/を使用すると引数がその位置にあることを意味し、中間記法で関数を定義することもできる。
+関数の定義は型の定義より下の行に、\verb/=/ を使い \verb/name input = output/ のように記述される。
+
+例えば引数が型 \verb/A/ で返り値が型 \verb/B/ の関数は \verb/A → B/ のように書くことができる。
+また、複数の引数を取る関数の型は \verb/A → A → B/ のように書ける。
+例として任意の自然数$\mathbb{N}$を受け取り、\verb/+1/した値を返す関数はCode \ref{agda-function}のように定義できる。
+\lstinputlisting[label=agda-function, caption=Agda における関数定義] {src/agda-func.agda.replaced}
+
+
+引数は変数名で受けることもでき、具体的なコンストラクタを指定することでそのコンストラクタが渡された時の挙動を定義できる。
+これはパターンマッチと呼ばれ、コンストラクタで case 文を行なっているようなものである。
+例として自然数$\mathbb{N}$の加算を関数で書くとCode \ref{agda-plus}のようになる。
+
+\lstinputlisting[label=agda-plus, caption=自然数での加算の定義] {src/agda-plus.agda.replaced}
+%% \lstinputlisting[label=agda-not, caption=Agdaにおける関数 not の定義] {src/AgdaNot.agda.replaced}
+
+パターンマッチでは全てのコンストラクタのパターンを含む必要がある。
+例えば、自然数$\mathbb{N}$を受け取る関数では \verb/zero/ と \verb/suc/ の2つのパターンが存在する必要がある。
+なお、コンストラクタをいくつか指定した後に変数で受けることもでき、その変数では指定されたもの以外を受けることができる。
+例えばCode \ref{agda-pattern}の減算では初めのパターンで2つ目の引数が\verb/zero/のすべてのパターンが入る。
+
+
+\lstinputlisting[label=agda-pattern, caption=自然数の減算によるパターンマッチの例] {src/agda-pattern.agda.replaced}
+
+Agda には$\lambda$計算が存在している。$\lambda$計算とは関数内で生成できる無名の関数であり、
+\verb/\arg1 arg2 → function/ または $\lambda$\verb/arg1 arg2 → function/ のように書くことができる。
+Code \ref{agda-function} で例とした \verb/+1/ をラムダ計算で書くとCode \ref{agda-lambda}の\verb/$\lambda$+1/ように書くことができる。この二つの関数は同一の動作をする。
+
+\lstinputlisting[label=agda-lambda, caption=Agda におけるラムダ計算] {src/AgdaLambda.agda.replaced}
+
+Agda では特定の関数内のみで利用できる関数を \verb/where/ 句で記述できる。
+スコープは \verb/where/句が存在する関数内部のみであるため、名前空間が汚染させることも無い。
+例えば自然数3つを取ってそれぞれ3倍して加算する関数 \verb/f/ を定義するとき、 \verb/where/ を使うとリストCode \ref{agda-where} のように書ける。
+これは \verb/f'/ と同様の動作をする。
+\verb/where/ 句は利用したい関数の末尾にインデント付きで \verb/where/ キーワードを記述し、改行の後インデントをして関数内部で利用する関数を定義する。
+
+\lstinputlisting[label=agda-where, caption=Agda における where 句] {src/AgdaWhere.agda.replaced}
+
+また Agda では停止性の検出機能が存在し、プログラム中に停止しない記述が存在するとコンパイル時にエラーが出る。
+\verb/{-# TERMINATING #-}/のタグを付けると停止しないプログラムをコンパイルすることができるがあまり望ましくない。
+Code \ref{term} で書かれた、\verb/loop/ と \verb/stop/ は任意の自然数を受け取り、0になるまでループして0を返す関数である。
+\verb/loop/ では $\mathbb{N}$ の数を受け取り、 \verb/loop/ 自身を呼び出しながら 数を減らす関数 pred を呼んでいる。しかし、\verb/loop/の記述では関数が停止すると言えないため、定義するには\verb/{-# TERMINATING #-}/のタグが必要である。
+\verb/stop/ では自然数がパターンマッチで分けられ、\verb/zero/のときは \verb/zero/を返し、 \verb/suc n/ のときは \verb/suc/ を外した \verb/n/ で stop を実行するため停止する。
+
+\lstinputlisting[label=term, caption=停止しない関数 loop、停止する関数 stop] {src/termination.agda.replaced}
+
+このように再帰的な定義の関数が停止するときは、何らかの値が減少する必要がある。
+
+
+\section{定理証明支援器としての Agda}
+Agda での証明では関数の記述と同様の形で型部分に証明すべき論理式、 $\lambda$ 項部分にそれを満たす証明を書くことで証明を行うことが可能である。
+証明の例として Code Code \ref{proof} を見る。
+ここでの \verb/+zero/ は右から \verb/zero/ を足しても ≡ の両辺は等しいことを証明している。
+これは、引数として受けている \verb/y/ が \verb/Nat/ なので、 \verb/zero/ の時と \verb/suc y/ の二つの場合を証明する必要がある。
+\lstinputlisting[caption=等式変形の例,label=proof]{src/zero.agda.replaced}
+\verb/y = zero/ の時は $zero \equiv zero$ とできて、左右の項が等しいということを表す \verb/refl/ で証明することができる。
+\verb/y = suc y/ の時は $x \equiv y$ の時 $fx \equiv fy$ が成り立つという
+Code \ref{cong}の \verb/cong/ を使って、y の値を 1 減らしたのち、再帰的に \verb/+zero y/
+を用いて証明している。
+\lstinputlisting[caption=cong,label=cong]{src/cong.agda.replaced}
+
+%% \begin{lstlisting}[caption=等式変形の例,label=proof]
+%% +zero : { y : ℕ } → y + zero  ≡ y
+%% +zero {zero} = refl
+%% +zero {suc y} = cong ( λ x → suc x ) ( +zero {y} )
+%%
+%% -- cong : ∀ (f : A → B) {x y} → x ≡ y → f x ≡ f y
+%% -- cong f refl = refl
+%% \end{lstlisting}
+
+また、他にも $\lambda$ 項部分で等式を変形する構文がいくつか存在している。
+ここでは \verb/rewrite/ と ≡\verb/-Reasoning/ の構文を説明するとともに、等式を変形する構文の例として加算の交換則について示す。
+
+\verb/rewrite/ では 関数の \verb/=/ 前に \verb/rewrite 変形規則/ の形で記述し、複数の規則を使う場合は \verb/rewrite/ 変形規則1 \verb/|/ 変形規則2 のように \verb/|/を用いて記述する。
+Code \ref{agda-rewrite} にある \verb/+-comm/ で \verb/x/ が \verb/zero/ のパターンが良い例である。
+ここでは、\verb/+zero/ を利用し、 \verb/zero + y/ を \verb/y/ に変形することで $y \equiv y$となり、左右の項が等しいことを示す \verb/refl/ になっている。
+
+\lstinputlisting[caption=等式変形の例3/3,label=agda-term-post]{src/agda-term3.agda.replaced}
+Code \ref{agda-term-post} では \verb/suc (y + x)/ $equiv$ \verb/y + (suc x)/ という等式に対して $equiv$ の対称律 \verb/sym/ を使って左右の項を反転させ\verb/y + (suc x)/ $equiv$ \verb/suc (y + x)/の形にし、\verb/y + (suc x)/が\verb/suc (y + x)/ に変形できることを \verb/+-suc/ を用いて示した。
+これにより等式の左右の項が等しくなったため \verb/+-comm/ が示せた。
+
+Agda ではこのような形で等式を変形しながら証明を行う事ができる。
+
+
+
+\section{Hoare Logic}
+Floyd-Hoare Logic \cite{10.1145/363235.363259}(以下 Hoare Logic) とは
+C.A.R Hoare、 R.W Floyd が考案したプログラムの検証の手法である。
+
+Hoare Logic では事前条件が成り立つとき、何らかの計算(以下コマンド)を実行した後に
+事後条件が成り立つことを検証する。
+事前条件を P 、 何らかの計算を C 、 事後条件を Q としたとき、
+\[\{P\}\ C \ \{Q\}\]
+といった形で表される。
+この三組は Hoare Triple と呼ばれる。
+
+Code \ref{c-while} は while program の例である。
+これは変数 \verb/n/ と \verb/i/ を持ち、\verb/n/が 0 より大きいとき、\verb/i/を増やし \verb/n/を減らす、
+疑似プログラムである。
+
+\begin{lstlisting}[label=c-while,captionpos=b]
+n = 10;
+i = 0;
+
+while (n > 0) {
+  i++;
+  n--;
+}
+\end{lstlisting}
+
+
+
+このプログラムでの状態は、初めの $n = 10$、 $i = 0$ を代入する条件、
+while loop 中に成り立っている条件を $n + i = 10$、
+while loop が終了したとき成り立っている条件を $i = 10$
+としている。
+
+CbC 上での Hoare Logic で同様のプログラムを作成し、検証を行う。
+
+\section{DataGear、 CodeGear と Agdaの対応}
+現在 CbC では検証用の上位言語として Agda を利用しており、
+Agda では CbC のプログラムをメタ計算を含む形で記述することができる。
+
+
+Agda での DataGear は Agda で使うことのできるすべてのデータに対応する。
+また、Agda での記述はメタ計算として扱われる。
+
+
+CodeGear は DataGear を受け取って処理を行い DataGear を返す。
+また、CodeGear 間の移動は継続を用いて行われる。
+継続は関数呼び出しとは異なり、呼び出した後に元のコードに戻らず、
+次の CodeGear へ継続を行うものであった。
+
+これは、関数型プログラミングでは末尾関数呼び出しを行うことに相当し、
+継続渡し(Continuation Passing Style) で書かれた Agda の関数と対応する。
+継続は不定の型 (\verb/t/) を返す関数で表される。
+継続先は次に実行する関数の型を引数として受け取り不定の型\verb/t/を返す関数として記述され、
+CodeGear 自体も同じ型 \verb/t/ を返す関数となる。
+
+Code \ref{agda-cg} は Agda で記述した加算を行う CodeGear の例である。
+
+\lstinputlisting[caption= Agdaでの CodeGear の例, label=agda-cg]{src/cbc-agda.agda.replaced}
+
+\verb/plus 10 20/ を評価すると \verb/next/ に 30 が入力されていることがわかる。
+
+\section{CbC での Hoare Logic の記述}
+Hoare Logic の事前条件や事後条件は変数の大小関係や同値関係などで表される。
+Agda 上では関係もデータとして扱うことができるため、関係を引数とした CodeGear を用いてプログラムを記述する。
+
+\begin{figure}[htpb]
+ \begin{center}
+  \scalebox{0.1}{\includegraphics{fig/hoare_cg_dg.pdf}}
+ \end{center}
+ \caption{CodeGear、DataGear での Hoare Logic}
+ \label{fig:hoare-cgdg}
+\end{figure}
+
+
+CbC での Hoare Logic は fig \ref{fig:hoare-cgdg} が示すように、
+事前条件(Pre Condition) が Proof で成立しており、 CodeGear で変更し、事後条件(Post Condition)が成り立つことを Proof で検証している。
+
+
+\ref{cbc-hoare-write} は通常の CodeGear と Hoare Logic ベースの CodeGear を例としている。
+通常の CodeGear である \verb/whileLoop'/ と Hoare Logic ベースの CodeGear である \verb/whileLoopPwP'/ は同じ動作をする。
+
+\lstinputlisting[label=cbc-hoare-write, caption=CbC 上での Hoare Logic, escapechar=@] {src/agda-hoare-write.agda.replaced}
+
+\verb/whileLoopPwP'/ では引数として事前条件 pre と継続先の関数を受け取っており、継続先の関数が受け取る引数 post や fin などの条件がこの関数においての事後条件となる。
+
+\section{CbC 上での Hoare Logic を用いた仕様記述と停止性}
+Hoare Logic では用意されたシンプルなコマンドを用いてプログラムを記述したが、
+CbC 上では CodeGear という単位でプログラムを記述する。
+そのため Hoare Logic のコマンドと同様に CodeGear を使った仕様記述を行う必要がある。
+
+while program には初めの $n = 10$、 $i = 0$ を代入する条件、
+while loop 中に成り立っている条件を $n + i = 10$、
+while loop が終了したとき成り立っている条件を $i = 10$
+の3つの状態があった。
+
+Code \ref{cbc-condition} は while program の3つの状態を記述したものである。
+\lstinputlisting[label=cbc-condition, caption= CbC ベースの Hoare Logic] {src/cbc-condition.agda.replaced}
+
+\verb/whileTestStateP/ では \verb/s1/ が初期状態、 \verb/s2/ がループ内不変条件、 \verb/fs/ が最終状態に対応している。
+\verb/s1/、 \verb/s2/、 \verb/s3/ は それぞれ \verb/whileTestState/ で定義された識別子である。
+
+これらの状態を使って、CbC 上の Hoare Logic を使って while program を作成していく。
+
+Code \ref{cbc-hoare-prim} は代入部分の Meta CodeGear である。
+代入では事前条件がなく、事後条件として \verb/s1/ の \verb/(vari env ≡ 0) ∧ (varn env ≡ c10 env)/ が成り立つ。
+\lstinputlisting[label=cbc-hoare-prim, caption=CbC 上の Hoare Logic での 代入] {src/cbc-hoare-prim.agda.replaced}
+
+Code \ref{cbc-hoare-loop} はループを行うコードである。
+\verb/whileLoopP'/はループを続ける、終えるの判断を行う Meta CodeGear で、ループを続けている間、 \verb/varn/ の値を減らし、 \verb/vari/ の値を増やしている。
+ループは \verb/varn/ が \verb/suc n/の間続き、その間の条件である\verb/s2/、つまり  \verb/(varn env + vari env ≡ c10 env)/ の状態が成り立つ。 \verb/varn/ が \verb/zero/ になると最後の \verb/loopPwP'/ に \verb/fs/ である \verb/(vari env ≡ c10 env)/を渡し、ループを終える。
+
+\verb/loopPwP'/ は実際にループをする Meta CodeGear で、回って来た際に \verb/varn/ が \verb/suc n/の間は \verb/whileLoopPwP'/ を実行し、その継続先の Meta CodeGear に自身である \verb/loopPwP'/を入れてループを行う。
+\verb/varn/ \verb/zero/のケースはその前の \verb/whileLoopPwP'/が \verb/zero/ で \verb/sf/ の最終状態を返してくるため、 \verb/loopPwP'/ でも同様に \verb/sf/ である \verb/(vari env ≡ c10 env)/ を返し、ループが終了する。
+
+\lstinputlisting[label=cbc-hoare-loop, caption=CbC 上の Hoare Logic での while loop] {src/cbc-hoare-loop.agda.replaced}
+
+これらの Meta CodeGear を使い仕様を記述する。
+\lstinputlisting[label=cbc-hoare-while, caption=CbC 上の Hoare Logic] {src/cbc-hoare-while.agda.replaced}
+
+\verb/whileTestPCallwP'/ はCode \ref{cbc-hoare-prim}やCode \ref{cbc-hoare-loop}で解説した Meta CodeGear を組み合わせた仕様である。
+
+また、while program と同様にループ内ではそのままの条件だとループさせることが難しいため \verb/conv/ を使ってループ内不変条件へと変化させている。
+
+この仕様では \verb/whileTestPwP/ と \verb/loopPwP'/ を続けて実行したとき、最後のラムダ式に入っている最終状態 \verb/vari env ≡ c10 env/ が必ず成り立つ。
+
+\verb/loopHelper/ では \verb/loopPwP'/ が必ず停止し、
+\verb/vari env ≡ c10 env/ が成り立つことが分かる。
+
+\lstinputlisting[label=loophelper, caption=loopHelper を使った停止性] {src/cbc-hoare-SoundnessC.agda.replaced}
+
+
+\section{CbC 上での Hoare Logic を用いた Soundness の証明}
+ここでは CbC 上の Hoare Logic でのSoundness(健全性) について確認する。
+
+Code \ref{implies} は A ならば B の命題により証明を行う implies である。
+implies は Set である A と B を受け取る。このとき A → B が存在すれば A implies B を証明することができる。
+
+\lstinputlisting[label=implies, caption=implies] {src/sound-impl.agda.replaced}
+
+代入を行う CodeGear である whileTestP は初期状態を持たないため、
+常に真の命題 $\top$ と代入を終えたときの事後条件である (vari env ≡ 0) ∧ (varn env ≡ c10 env) を implies に入れた型を記述する。
+Code\ref{impl-pcom} は実際に implies を用いて記述した証明である。
+証明では proof に( $\top$ → (vari env ≡ 0) ∧ (varn env ≡ c10 env) )であると記述できればよく、
+
+ここでは λ \_ → record { pi1 = refl ; pi2 = refl } がこれに対応する。
+
+\lstinputlisting[label=impl-pcom, caption=代入の implies による証明] {src/sound-pcom.agda.replaced}
+
+Code\ref{impl-psemcom} の whileTestPSemSound は output ≡ whileTestP c (λ e → e) を受け取ることで whileTestP の実行が終わった結果、つまり停止した CodeGear の実行結果が事後条件を満たしていることを証明している
+
+\lstinputlisting[label=impl-psemcom, caption=停止性を考慮した代入の健全性の証明] {src/sound-psemcom.agda.replaced}
+
+同様に他の CodeGear に対しても健全性の証明が可能である。
+Code \ref{sound-conv} の whileConvPSemSound は制約を緩める conversion の健全性の証明である。
+\lstinputlisting[label=sound-conv, caption=conversionの implies による証明] {src/sound-conv.agda.replaced}
+conversion でも同様に元のプログラムに対して証明を行えている。
+
+Code \ref{sound-loop} は while loop でのループをする CodeGear である。
+ここでは loopPPSemInduct という補助定理を使って証明を記述しているが、この証明は長くなったため、元のソースコード\cite{loop-proof}を参照していただきたい。
+\lstinputlisting[label=sound-loop, caption= loop の implies による証明] {src/sound-loop.agda.replaced}
+
+
+\ref{sound-looppsem} はループの判断をする CodeGear で loopPPSem を使って証明を行っている。
+\lstinputlisting[label=sound-looppsem, caption= loop の implies による停止性を含めた証明] {src/sound-looppsem.agda.replaced}
+
+ここでも同様に元のプログラムに対して証明を行うことができた。
+
+CbC 上での Hoare Logic では implies を用いて健全性に対する証明が行えると考えている。
+
+
+\section{まとめと今後の課題}
+本論文では Continuation based C プログラムに対して
+Hoare Logic をベースにした仕様記述と検証を行った。
+また、CbC での Hoare Logic では仕様を含めた記述のまま、
+実際にコードが実行できることを確認した。
+
+実際に、 Hoare Logic ベースの記述を行うことで、
+検証のメタ計算に使われる Meta DataGear や、
+CodeGear の概念が明確となった。
+また、 CbC 上での Pre Condition、
+Post Conditionの記述方法が明確になった。
+
+元の Hoare Logic ではコマンドのみでのプログラム記述と検証を行っていたが、
+CodeGear をベースにすることでより柔軟な単位でのプログラム記述し、
+実際に検証を行えることが分かった。
+
+以前は検証時に無限ループでなくてもループが存在すると、 Agda が導出時に step での実行を行うため、
+ループ回数分 step を実行する必要があったが、ループに対する簡約を記述することで、
+有限回のループを抜けて証明が記述できることが判明した。
+今後、ループ構造に対する証明は同様に解決できると考えられるため、
+より多くの証明が可能となると期待している。
+
+今後の課題として、他のループが発生するプログラムの検証が挙げられる。
+同様に検証が行えるのであれば、共通で使えるライブラリのような形でまとめることで、
+より容易な検証ができるようになるのではないかと考えている。
+現在、検証が行われていないループが存在するプログラムとして、
+Binary Tree や RedBlack Tree などのデータ構造が存在するため、
+それらのループに対して今回の手法を適用して検証を行いたい。
+
+また、Meta DataGear で DataGear の関係等の制約条件を扱うことで、
+常に制約を満たすデータを作成することができる。
+予めそのようなデータをプログラムを使用することで、検証を行う際の記述減らすことができると考えている。
+これも同様に Binary Tree や RedBlack Tree などのデータ構造に適用し、
+検証の一助になると考えている。
+
+その他の課題としては、
+CbC で開発されている GearsOS に存在する並列構文の検証や、
+検証を行った Agda 上の CbC 記述から
+ノーマルレベルの CbC プログラムの生成などが挙げられる。
+
+
+\nocite{*}
+\bibliography{tecrep}{}
+\bibliographystyle{plain}
+\end{document}